headfootLogout.js 10 KB
Newer Older
Rosanny Sihombing's avatar
Rosanny Sihombing committed
1
const menu = [{ name: 'Informationen', combos: [{ name: 'Projekte', link: '/project' }, { name: 'Über das M4_LAB', link: '/projectoverview?projectID=1' }], type: 'dropdown', link: '#' }, { name: 'Zusammenarbeit', combos: [{ name: 'Mailinglisten', link: '/mailinglists' }, { name: 'Videokonferenzen', link: '/videoconference.html' }/* {'name':'...', 'link':'#'} */], type: 'dropdown', link: '#' }, { name: 'Events', combos: [{ name: 'Veranstaltungen der HfT', link: 'http://www.hft-stuttgart.de/Aktuell/Veranstaltungen/' }/*, {'name':'...', 'link':'#'} */], type: 'dropdown', link: '#' }, /* {'name':'Bürgerbeteiligung', 'combos':[{'name':'...', 'link':'#'}, {'name':'...', 'link':'#'}], 'type':'dropdown', 'link':'#'}, */{ name: 'Logout', combos: [], type: 'logoutbutton', link: '/logout' }]
2

Rosanny Sihombing's avatar
Rosanny Sihombing committed
3
const hft_links = [{ url: 'http://www.hft-stuttgart.de/Forschung/M4-Lab/Team/index.html/de', name: 'Kontakt' }, { url: 'http://www.hft-stuttgart.de/Hochschule/Impressum.html/de', name: 'Impressum' }, { url: 'http://www.hft-stuttgart.de/Einrichtungen/Datenschutz/Datenschutz-Homepage', name: 'Datenschutz' }]
4

Rosanny Sihombing's avatar
Rosanny Sihombing committed
5
const socialmedias = [{ url: 'https://twitter.com/InnolabM4', name: 'fa-twitter' }, { url: 'https://www.facebook.com/HfTStuttgart/', name: 'fa-facebook-square' }, { url: 'https://www.instagram.com/m4_lab/', name: 'fa-instagram' }, { url: 'https://de.linkedin.com/school/hochschule-f%C3%BCr-technik-stuttgart-%E2%80%93-university-of-applied-sciences/', name: 'fa-linkedin' }, { url: 'https://www.youtube.com/channel/UCi0_JfF2qMZbOhOnNH5PyHA', name: 'fa-youtube' }]
6

Rosanny Sihombing's avatar
Rosanny Sihombing committed
7
const footer_images = [{ src: '/images/demo/Innovative_Hochschule_Initiative_BMBF_GWK_RGB.jpg', alt: 'Innovative Hochschule' }]
8

Rosanny Sihombing's avatar
Rosanny Sihombing committed
9
10
function prependChild (parent, child) {
  parent.insertBefore(child, parent.childNodes[0])
11
12
}

Rosanny Sihombing's avatar
Rosanny Sihombing committed
13
14
15
16
17
18
19
function userAuthenticated () {
  const params = new URLSearchParams(window.location.search)
  if (params.get('isAuthenticatedUser')) {
    return true
  } else if (document.getElementById('loginswitch')) { // relikt login via OAuth
    if (document.getElementById('loginswitch').getAttribute('authenticated') == '1') {
      return true
20
    }
Rosanny Sihombing's avatar
Rosanny Sihombing committed
21
22
23
  } else {
    return false
  }
24
25
}

Rosanny Sihombing's avatar
Rosanny Sihombing committed
26
27
28
29
30
31
function readCookie (cname) {
  const name = cname + '='
  const decodedCookie = decodeURIComponent(document.cookie)
  const ca = decodedCookie.split(';')
  for (let i = 0; i < ca.length; i++) {
    let c = ca[i]
32
    while (c.charAt(0) == ' ') {
Rosanny Sihombing's avatar
Rosanny Sihombing committed
33
      c = c.substring(1)
34
35
    }
    if (c.indexOf(name) == 0) {
Rosanny Sihombing's avatar
Rosanny Sihombing committed
36
      return c.substring(name.length, c.length)
37
38
    }
  }
Rosanny Sihombing's avatar
Rosanny Sihombing committed
39
  return ''
40
41
}

Rosanny Sihombing's avatar
Rosanny Sihombing committed
42
43
44
45
46
47
48
49
function sendRequest (URL) {
  console.log(document.cookie)
  const xhr = new XMLHttpRequest()
  xhr.open('POST', URL, true)
  const token = readCookie('XSRF-TOKEN')
  // Send the proper header information along with the request
  xhr.setRequestHeader('X-CSRF-TOKEN', token)
  xhr.send()
50
51
52
53
54
55
}

/* function head()
 * creates header and prepends it to the documents body
 */

Rosanny Sihombing's avatar
Rosanny Sihombing committed
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
function head () {
  const headerdiv = document.createElement('div')
  const alertdiv = document.createElement('div')
  headerdiv.classList.add('wrapper', 'row1')
  const navheader = document.createElement('header')
  navheader.id = 'header'
  navheader.classList.add('clear')
  const alertbutton = document.createElement('button')
  alertbutton.type = 'button'
  alertbutton.classList.add('close')
  alertbutton.setAttribute('data-dismiss', 'alert')
  alertbutton.innerHTML = '&times;'
  alertdiv.innerHTML = '<strong>Disclaimer</strong> This website is under construction and in prototype-phase. It is not for public use.'
  prependChild(alertdiv, alertbutton)
  alertdiv.classList.add('alert', 'alert-danger', 'alert-dismissible', 'fade', 'show', 'text-center')
  // alertdiv.style = "text-align:center;";
  navheader.appendChild(alertdiv)
  const navbar = document.createElement('nav')
  navbar.classList.add('navbar', 'navbar-default')
  const fluiddiv = document.createElement('div')
  fluiddiv.classList.add('container-fluid')
  const navbardiv = document.createElement('div')
  navbardiv.classList.add('navbar-header')
  const navelements = document.createElement('ul')
  navelements.id = 'navelemente'
  const logos = document.createElement('li')
  const link_m4lab = document.createElement('a')
  link_m4lab.href = '/'
  link_m4lab.innerHTML = "<img src='/images/demo/m4lab_logo.jpg' alt='Logo Innovationslabor M4_LAB'>"
  logos.appendChild(link_m4lab)
  navelements.appendChild(logos)
  for (let j = 0; j < menu.length; j++) {
    const headitem = document.createElement('li')
    const itemtype = menu[j].type
    headitem.classList.add('nav-item')
    const headlink = document.createElement('a')
    headlink.href = menu[j].link
    headlink.id = 'navbarDropdown' + j
    headlink.classList.add('nav-link')
    headlink.setAttribute('role', 'button')
    if (itemtype == 'dropdown') {
      headitem.classList.add('dropdown')
      headlink.classList.add('dropdown-toggle')
      headlink.setAttribute('data-toggle', 'dropdown')
      headlink.setAttribute('aria-haspopup', 'true')
      headlink.setAttribute('aria-expanded', 'false')
    }
    headlink.innerHTML = menu[j].name
    if (itemtype == 'dropdown') {
      const combodiv = document.createElement('div')
      combodiv.id = headlink.id + '_par'
      combodiv.setAttribute('aria-labelledby', headlink.id)
      combodiv.classList.add('dropdown-menu')
      for (let k = 0; k < menu[j].combos.length; k++) {
        const combolink = document.createElement('a')
        combolink.classList.add('dropdown-item')
        if (userAuthenticated() || typeof user !== 'undefined') { // either logged in the old way or logged in using SAML
          if (menu[j].combos[k].link.includes('?')) {
            combolink.href = menu[j].combos[k].link + '&isAuthenticatedUser=true'
          } else {
            combolink.href = menu[j].combos[k].link + '?isAuthenticatedUser=true'
          }
        } else {
          combolink.href = menu[j].combos[k].link
120
        }
Rosanny Sihombing's avatar
Rosanny Sihombing committed
121
122
123
124
125
126
        combolink.innerHTML = menu[j].combos[k].name
        combodiv.appendChild(combolink)
      }
      headitem.appendChild(combodiv)
    } else if (itemtype == 'logoutbutton') {
      /*    if(userAuthenticated()){
127
128
129
                headlink.innerHTML="Account";
                headlink.href="/account/";
            } */
Rosanny Sihombing's avatar
Rosanny Sihombing committed
130
131
132
133
134
      headlink.innerHTML = 'Logout'
      headlink.href = '/logout'
      headlink.classList.remove('nav-link')
      headlink.classList.add('btn')
      headlink.classList.add('btn-outline-danger')
135
    }
Rosanny Sihombing's avatar
Rosanny Sihombing committed
136
137
138
139
    headitem.appendChild(headlink)
    navelements.appendChild(headitem)
  }
  /*    let searchitem = document.createElement('li');
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
    searchitem.classList.add("nav-item");
    let searchinput = document.createElement('input');
    searchinput.value='Suche...'
    searchinput.type="text";
    searchinput.classList.add("nav-item-suchfeld");
    searchinput.setAttribute('onFocus', "this.value=(this.value=='search...')? '' : this.value");
    searchitem.appendChild(searchinput);
    let magnifier = document.createElement('input');
    magnifier.type="image"
    magnifier.src="/images/Lupe_grau.png";
    magnifier.width="25";
    magnifier.height="25";
    magnifier.alt="";
    magnifier.id="sf_submit";
    magnifier.value="search";
    searchitem.appendChild(magnifier);
Rosanny Sihombing's avatar
Rosanny Sihombing committed
156
157
158
159
160
161
162
    navelements.appendChild(searchitem); */
  navbardiv.appendChild(navelements)
  fluiddiv.appendChild(navbardiv)
  navbar.appendChild(fluiddiv)
  navheader.appendChild(navbar)
  headerdiv.appendChild(navheader)
  prependChild(document.body, headerdiv)
163
164
165
166
167
168
};

/* function foot()
 * creates footer and appends it to the documents body
 */

Rosanny Sihombing's avatar
Rosanny Sihombing committed
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
function foot () {
  const footerdiv = document.createElement('div')
  footerdiv.id = 'homepage'
  footerdiv.classList.add('last', 'clear')
  footerdiv.innerHTML = '<hr>'
  const containerdiv = document.createElement('div')
  containerdiv.classList.add('flex-container')
  const hftlink = document.createElement('a')
  hftlink.classList.add('col-md-3')
  hftlink.setAttribute('style', 'flex-basis: 400px;')
  hftlink.href = 'https://www.hft-stuttgart.de'
  const hftimage = document.createElement('img')
  hftimage.src = '/images/demo/hft_logo.jpg'
  hftimage.alt = 'Logo der Hochschule für Technik Stuttgart'
  hftimage.height = '75'
  hftlink.appendChild(hftimage)
  containerdiv.appendChild(hftlink)
  const contactdiv = document.createElement('div')
  contactdiv.classList.add('col-md-3', 'footer-unten')
  contactdiv.setAttribute('style', 'flex-basis:400px')
  contactdiv.innerHTML = 'Hochschule für Technik Stuttgart'
  const rowdiv = document.createElement('div')
  rowdiv.classList.add('row')
  for (let i = 0; i < hft_links.length; i++) {
    const coldiv = document.createElement('div')
    coldiv.classList.add('contactrow', 'footer-unten')
    const collink = document.createElement('a')
    collink.innerHTML = hft_links[i].name
    collink.classList.add('contact-lower')
    collink.href = hft_links[i].url
    coldiv.appendChild(collink)
    rowdiv.appendChild(coldiv)
  }
  contactdiv.appendChild(rowdiv)
  containerdiv.appendChild(contactdiv)
  const socialdiv = document.createElement('div')
  socialdiv.classList.add('col-md-3')
  socialdiv.setAttribute('style', 'flex-basis: 400px;')
  const socialrow = document.createElement('div')
  socialrow.id = 'socialmediabuttons'
  for (let j = 0; j < socialmedias.length; j++) {
    const sociallink = document.createElement('a')
    sociallink.href = socialmedias[j].url
    const socialcontent = document.createElement('i')
    socialcontent.classList.add('fab', socialmedias[j].name)
    sociallink.appendChild(socialcontent)
    socialrow.appendChild(sociallink)
    socialrow.innerHTML += '&nbsp;'
  }
  socialdiv.appendChild(socialrow)
  containerdiv.appendChild(socialdiv)
  const imagediv = document.createElement('div')
  imagediv.classList.add('col-md-3')
  imagediv.setAttribute('style', 'flex-basis:400px;')
  for (let k = 0; k < footer_images.length; k++) {
    const image = document.createElement('img')
    image.src = footer_images[k].src
    image.width = '300'
    image.height = '73'
    image.alt = footer_images[k].alt
    imagediv.appendChild(image)
  }
  containerdiv.appendChild(imagediv)
  footerdiv.appendChild(containerdiv)
  document.body.appendChild(footerdiv)
234
235
};

Rosanny Sihombing's avatar
Rosanny Sihombing committed
236
237
head()
foot()