1/* 2 @description: 3 Funktionen für den lsfpageobserver definieren. 4 Um eine neue Funktion hinzuzufügen, geben Sie folgenden Eintrag an: 5 lsfPageObserver_parameterList.push({'name':<Funktionsname>,'params':<Parameterliste als HashMap>}) 6 7 AnschlieÃend definieren Sie ihre Funktion, die sie bereits als Funktionsname definiert haben. 8 9 @author: [email protected] 10*/ 11var lsfPageObserver_parameterList = new Array() 12lsfPageObserver_parameterList.push({'name':'markierteTermineVormerken','params':{'state':'wplan','search':'ver','act':'add'}}) 13lsfPageObserver_parameterList.push({'name':'pruefeLoginWerte','params':{'state':'user','type':'0'}}) 14lsfPageObserver_parameterList.push({'name':'pruefeLoginWerte','params':{'state':'user','type':'1'}}) 15lsfPageObserver_parameterList.push({'name':'pruefeLoginWerte','params':{'state':'wlogin'}}) 16 17//Sicherheitslückenproblem, deshalb auskommentiert 18//lsfPageObserver_parameterList.push({'name':'zurueckButtonBelegungsplan','params':{'state':'wplan','act':'Raum','pool':'Raum','P.subc':'plan'}}) 19//lsfPageObserver_parameterList.push({'name':'zurueckButtonEvent','params':{'state':'change','type':'2','isparent':'y'}}) 20lsfPageObserver_parameterList.push({'name':'raumanfrageEmailCheck','params':{'state':'extendedRoomSearchAnfrage','type':'1','next' : 'extendedRoomSearch.vm'}}) 21 22//Sicherheitslückenproblem, deshalb auskommentiert 23//lsfPageObserver_parameterList.push({'name':'semesterSwitchSavePage','params':{}}) 24//lsfPageObserver_parameterList.push({'name':'semesterSwitch','params':{'state':'change','type':'6','moduleParameter' : 'semesterSelect', 'nextdir' : 'change','next' : 'SearchSelect.vm','subdir':'applications','targettype':'7','targetstate':'change','getglobal' : 'semester'}}) 25 26lsfPageObserver_parameterList.push({'name':'veranstaltungenAdditionalinfo','params':{state : 'wscheck', 'wscheck' : 'leistungen'}}) 27 28lsfPageObserver_parameterList.push({'name':'timeoutinfo','params':{}}) 29//Text-Diff nur für Protokollseiten 30//lsfPageObserver_parameterList.push({'name':'textdiff','params':{state: 'verpublish', publishSubDir: 'veranstaltung', moduleCall: 'webProt'}}) 31//In der veransttermin, wird bei Rythmus woch nu Mo-Fr. in der Wochenanzeige angezeigt. 32// deaktiviert 33//lsfPageObserver_parameterList.push({'name':'montagBisFreitag','params':{state: 'change', moduleParameter: 'veransttermin', parentModuleParameter: 'veranstaltung'}}) 34lsfPageObserver_parameterList.push({'name':'sortTableByBeginTime','params':{'state':'pdfplan', 'moduleCall' : 'freePositionHeutigeVeranstaltungen'}}) 35lsfPageObserver_parameterList.push({'name':'semesterDropdown','params':{}}) 36lsfPageObserver_parameterList.push({'name':'checkAllCheckboxes','params':{state : 'change','moduleParameter' : 'veranstaltungen'}}) 37lsfPageObserver_parameterList.push({'name':'checkAllCheckboxes','params':{state : 'change','moduleParameter' : 'veransttermin'}}) 38lsfPageObserver_parameterList.push({'name':'checkAllCheckboxes','params':{state : 'change','moduleParameter' : 'studiengaenge'}}) 39lsfPageObserver_parameterList.push({'name':'setCopyLectures2','params':{state : 'change','moduleParameter' : 'veranstaltung', 'change_mode' : 'copylectures'}}) 40lsfPageObserver_parameterList.push({'name':'printVeranstaltungen','params':{state: 'currentLectures', 'P.Print': ''}}) 41 42 43 44var markierteTermineVormerken = function(lsfpageobserver){ 45 $( document ).ready(function() { 46 if ($('select[name="week"] option:selected').val() != '-2' && $('td[class="plan2"]').size() == 0){ 47 var ok = confirm(lsfpageobserver.lsfObserverLanguage.getLangText('_mtv_')) 48 if (ok){ 49 document.location.href = document.location.href + "&week=-2" 50 } 51 } 52 }) 53} 54/* 55 * Login Werte auf keine Einträge überprüfen 56 */ 57var pruefeLoginWerte = function(lsfpageobserver){ 58 59 var benutzerkennung = $('input[id="asdf"]') 60 var passwort = $('input[id="fdsa"]') 61 var form = $('form[name="loginform"]') 62 63 if (benutzerkennung.size() > 0 && passwort.size() > 0 && form.size() > 0){ 64 form.submit(function( event ) { 65 if (benutzerkennung.val().trim().length == 0 || passwort.val().trim().length == 0){ 66 alert(lsfpageobserver.lsfObserverLanguage.getLangText('_login_')) 67 event.preventDefault(); 68 } 69 }) 70 } 71}
71 72/* 73 * Speichern der Href Position für Zurück Button 74 */ 75var zurueckButtonBelegungsplan = function(lsfpageobserver){ 76 77 //?state=wplan&act=Raum&pool=Raum&P.subc=plan&raum.rgid=10073&idcol=raum.rgid&idval=10073&purge=n&getglobal=n&text=AC-Institutsgebäude+-+10++(Lehrlabor) 78 lsfpageobserver.createCookie('zurueckButtonBelegungsplan',document.location.href); 79} 80/* 81 * Zurück Button in Veranstaltung und bei Klick, Sprung auf den Belegungsplan 82 */ 83var zurueckButtonEvent = function(lsfpageobserver){ 84 //http://localhost:8080/qisserver/rds?state=change&type=2&moduleParameter=event&nextdir=change&next=SingleInput.vm&sqlmode=new&subdir=veranstaltung&isparent=y&raum=10073&day=Mo&begin=7:00&week=&ignorecheckfor=y&headertext=Neue+Veranstaltung+am+Mo+ab+7%3A00+Uhr+in+AC-Institutsgeb%C3%A4ude+-+10++%28Lehrlabor%29&asi=ZtxkoLd5jhqxtQJXgtDT 85 var url = lsfpageobserver.readCookie('zurueckButtonBelegungsplan'); 86 if (url != null){ 87 var bread = $('div.breadcrumb > a').text() 88 if (bread.indexOf("Raumbelegung") > 0 || bread.indexOf("Reservations") > 0){ 89 var html = '<input class="linkAsButton" type="button" onclick="javascript:document.location.href=\''+url+'\'" value="'+lsfpageobserver.lsfObserverLanguage.getLangText("Zurück")+'"/>' 90 var cont = $('form > div:last-child'); 91 cont.prepend(html) 92 } 93 } 94} 95/* 96 * Raumanfrage: Wenn Raumverwalter keine Email haben und oder diese nicht aktiv sind, wird eine Fehlemldung ausgegeben. 97 */ 98var raumanfrageEmailCheck = function(lsfpageobserver){ 99 $('input[type="checkbox"]').click(function() { 100 $('div[id="emailwarning"]').remove(); 101 found = false 102 $('input[type="checkbox"]:checked').each(function() { 103 var raumverwalter = $(this).parent().parent().find('td:eq(4)') 104 if (raumverwalter.html().toLowerCase().indexOf(">email") > -1){ 105 found = true; 106 return true; 107 } 108 }) 109 if (found){ 110 var text = lsfpageobserver.lsfObserverLanguage.getLangText("_raumverwalteremail_") 111 $('input[name="RoomSearch_RoomRequest"]').before("<div class='redcolor' id='emailwarning'>"+text+"</div>"); 112 } 113 }) 114} 115/* 116 * Für den Semesterwechsel(oben rechts) wird jede Seite, die zuvor geöffnet wurde gespeichert. 117 */ 118var semesterSwitchSavePage = function(lsfpageobserver){ 119 var linkToBelegungsplan = lsfpageobserver.readCookie('semesterSwitch'); 120 if (linkToBelegungsplan == null || document.location.href.indexOf('state=change&type=6&moduleParameter=semesterSelect&nextdir=change&next=SearchSelect.vm&subdir=applications&targettype=7&targetstate=change&getglobal=semester') == -1){ 121 lsfpageobserver.createCookie('semesterSwitch',document.location.href); 122 //alert("erstellt") 123 } 124} 125/* 126 * Ãnderung der a Tags mit Javascript Ajax Switch 127 */ 128var semesterSwitch = function(lsfpageobserver){ 129 var linkToBelegungsplan = lsfpageobserver.readCookie('semesterSwitch'); 130 if (linkToBelegungsplan != null){ 131 $('div.content > fieldset > div > a').each(function(){ 132 var href = $(this).attr('href') 133 var link = "javascript:semesterSwitchHandle('"+href+"')"; 134 $(this).attr('href',link) 135 }) 136 } 137} 138/* 139 * Ausführen des Ajax Requests, der durch einen Klick Event, die zuvor geänderten a Tags, ausgelöst wurde. 140 */ 141var semesterSwitchHandle = function(link){ 142 var linkToBelegungsplan = readCookie('semesterSwitch'); 143 if (linkToBelegungsplan != null){ 144 var request = $.ajax( link ) 145 .done(function() { 146 document.location.href = linkToBelegungsplan 147 }) 148 .fail(function() { 149 alert( "Ein Javascript Fehler ist aufgetreten." ); 150 }) 151 } 152} 153 154var readCookie = function(name) { 155 var nameEQ = name + "="; 156 var ca = document.cookie.split(';'); 157 for(var i=0;i < ca.length;i++) { 158 var c = ca[i]; 159 while (c.charAt(0)==' ') c = c.substring(1,c.length); 160 if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); 161 } 162 return null; 163} 164 165var eraseCookie = function(name) { 166 createCookie(name,"",-1); 167} 168 169 170var veranstaltungenAdditionalinfo = function(lsfpageobserver){ 171 $('div.Container_CaptionVeranstAus').each(function(){ 172 $(this).before('<div class="evt_more_infos" style="cursor:pointer">Klick für mehr oder weniger Informationen</div>'); 173 }) 174 // Elemente verstecken 175 $('div.Container_VeranstAus').each(function(){ 176 $(this).hide() 177 }) 178 // Klick Event für 'Klick für mehr Informationen' 179 $('div.evt_more_infos').click(function(){ 180 var el = $(this).parent().find('div.Container_VeranstAus')
181 el.toggle() 182 }) 183 184 var sem = $('a#choosesemester').text().replace(/[a-zA-Z ]/g,'').trim(); 185 $('div.functionnavi > h2').each(function(){ 186 var curSem = $(this).text().replace(/[a-zA-Z :]/g,'').trim(); 187 if (curSem == sem){ 188 var el = $(this).parent().find('div.Container_VeranstAus') 189 el.show() 190 } 191 }); 192} 193var timeout = 30 194var origTimeoutText = null 195var timeoutinfo = function(lsfpageobserver){ 196 var logoutDiv = $('logout').first() 197 timeout = parseInt(logoutDiv.attr('maxtime')) 198 var divloginstatus = $('div.divloginstatus a:eq(1)').text() 199 if (divloginstatus) divloginstatus = divloginstatus.trim().toLowerCase() 200 if ((divloginstatus && divloginstatus == 'anmelden') || logoutDiv.length == 0 || $('a.links3[accesskey="l"]').length == 0 || timeout <= 0 || logoutDiv.attr('active') != 'y'){ 201 logoutDiv.hide() 202 return null 203 } 204 settimeout(logoutDiv, lsfpageobserver) 205} 206 207var tclass = '' 208var tclass_before = '' 209var settimeout = function(div, lsfpageobserver){ 210 if (timeout <= 0){ 211 alert(div.attr('timeoutmessage')) 212 document.location.href=$('a.links3[accesskey="l"]').attr('href') 213 return; 214 } 215 216 var classStyle=div.attr('class') 217 var style=div.attr('style') 218 var class5min = div.attr('class5min') 219 var class10min = div.attr('class10min') 220 var minutetext_plural = div.attr('minutetext_plural') 221 var minutetext_singular = div.attr('minutetext_singular') 222 var showOnMin = div.attr('showOnMin') 223 224 if (timeout <= 5){ 225 tclass = class5min//'color:#d94747;background-color:white' 226 }else if (timeout <= 10){ 227 tclass = class10min//'color:#ffcc00' 228 } 229 if (origTimeoutText == null){ 230 origTimeoutText = div.html() 231 } 232 233 var rep = origTimeoutText.replace(/\[min\]/,(timeout<10?'0'+timeout:timeout)) 234 rep = rep.replace(/\[minutetext\]/,(timeout<=1 ? minutetext_singular : minutetext_plural)) 235 var ttext = "<span id='timeouttext'>"+rep+"</span>" 236 div.html(ttext) 237 $('#timeouttext').attr('class',classStyle) 238 $('#timeouttext').attr('style',style) 239 if (showOnMin != undefined && showOnMin.length > 0){ 240 showOnMin = parseInt(showOnMin) 241 if (timeout > showOnMin){ 242 div.children().hide() 243 }else{ 244 div.children().show() 245 } 246 }else{ 247 div.children().show() 248 } 249 div.find('logouttext > #min').removeClass(tclass_before) 250 div.find('logouttext > #min').addClass(tclass) 251 252 tclass_before = tclass 253 timeout -= 1 254 setTimeout(function(){settimeout(div, lsfpageobserver)}, 60000); 255} 256 257var textdiff = function(lsfpageobserver){ 258 $( document ).ready(function() { 259 260 var hasTextName = $('tbody#diff_tbody > tr:last > td:eq(1)').text().trim() == 'Text' 261 var hasBeforeText = $('#diff_tbody > tr:last > td:eq(2)').text().trim().length == 0 ? false : true 262 if (!hasTextName || !hasBeforeText) return 263 264 $('tr#headertext').append('<td class="td_p" colspan="4"> </td><td class="th">Differenz</td>') 265 $('table.summary_table > tbody > tr:gt(0)').append('<td class="td_p" colspan="4"> </td><td class="td" valign="top"></td>') 266 var diffObj = $('table.summary_table > tbody > tr:gt(0) > td').last() 267 var origObj = $('#diff_tbody > tr:eq(1) > td:eq(2)') 268 var changedObj = $('tbody#diff_tbody > tr:eq(1) > td:eq(4)') 269 $(origObj).prettyTextDiff({ 270 cleanup: true, 271 originalContainer: origObj, 272 changedContainer: changedObj, 273 diffContainer: $(diffObj) 274 275 }) 276 }) 277} 278 279var montagBisFreitag = function(lsfpageobserver, montagBisFreitagBind){ 280 $( document ).ready(function() { 281 $('select[id$="_7"]').each(function(){ 282 var parent = $(this).parent().parent() 283 _montagBisFreitag(parent) 284 $(this).change(function(){ 285 _montagBisFreitag(parent) 286 }) 287 }) 288 }) 289} 290var _montagBisFreitag = function(parent){ 291 292 var val = $(parent).find('select[id$="_7"] option:selected').attr('value') 293 if (val && val == 8){ 294 var val2 = $(parent).find('select[id$="_3"] option:selected').attr('value') 295 if (val2 == 1){ 296 $(parent).find('select[id$="_3"] option').removeAttr("selected"); 297 $(parent).find('select[id$="_3"] option[value="6"]').attr('selected',true); 298 } 299 $(parent).find('select[id$="_3"] option[value="1"]').hide() 300 }else{ 301 $(parent).find('select[id$="_3"] option[value="1"]').show() 302 } 303 304} 305var semesterDropdown = function(lsfpageobserver){ 306 var is_semester_dropdown = $('semester_dropdown[active="y"]').length > 0 ? true : false 307 var aktuellessemester = $('semester_dropdown').attr('aktsem') 308 if (!is_semester_dropdown || !aktuellessemester){ 309 return true 310 } 311 var semesterAjaxUrl = "rds?state=change&type=6&moduleParameter=semesterSelect&nextdir=change&next=SearchSelect.vm&subdir=applications&targettype=7&targetstate=change&getglobal=semester" 312 var cookiename = 'semester_dropdown_data' 313 var data = localStorage ? localStorage.getItem(cookiename) : null 314 var isStartpage = lsfpageobserver.getUrlParam('state') == 'user' ? true : false 315 var cssclass = $('semester_dropdown').attr('class') 316 $( document ).ready(function() { 317 318 if (isStartpage || !data){ 319 //console.log("1"+isStartpage) 320 $.ajax({ 321 url: semesterAjaxUrl, 322 }).done(function( mydata ) { 323 var html = '<select id="semester_dropdown" class="'+cssclass+'">'
324 $(mydata).find('div.content > fieldset > div > a').each(function(){ 325 var href = $(this).attr('href') 326 var sem = $(this).text().trim() 327 var ar = href.split("&") 328 var sel = '' 329 for(var item in ar){ 330 item = ar[item] 331 var ar2 = item.split("=") 332 if (ar2.length == 2 && ar2[0].trim() == "k_semester.semid" && ar2[1].trim() == aktuellessemester){ 333 sel = 'selected="true"' 334 break 335 } 336 } 337 //href += "&redirect="+redirect 338 html += '<option value="'+href+'" '+sel+'>'+sem+'</option>' 339 }) 340 html += '</select>' 341 if (localStorage) localStorage.setItem(cookiename, html); 342 $('semester_dropdown').first().prepend(html) 343 $('select#semester_dropdown').change(function(){ 344 document.location.href = $(this).val() 345 }) 346 }) 347 }else{ 348 //console.log("2") 349 $('semester_dropdown').first().prepend(data) 350 $('select#semester_dropdown').change(function(){ 351 document.location.href = $(this).val() 352 }) 353 } 354 }) 355} 356 357var checkAllCheckboxes = function(lsfpageobserver){ 358 if ($('div.table_1 > table > tbody > tr:eq(0) > th:eq(0)').length > 0){ 359 _checkAllCheckboxes($('div.table_1 > table > tbody > tr:eq(0) > th:eq(0)'), $('div.table_1 > table > tbody > tr:gt(0) input[type="checkbox"]')) 360 } 361} 362 363var _checkAllCheckboxes = function(allCheckboxParent, targetCheckboxes){ 364 var allCheckbox = '<input type="checkbox" id="observer_allCheckboxes" />' 365 $(allCheckboxParent).append(allCheckbox) 366 $('#observer_allCheckboxes').click(function(){ 367 var status = $(this).prop("checked") 368 $(targetCheckboxes).each(function(){ 369 $(this).prop('checked',status) 370 }) 371 }) 372} 373 374 375var sortTableByBeginTime = function(lsfpageobserver){ 376 $( document ).ready(function() { 377 var checkPos = 0 378 var tr_data = [] 379 var tbody = 'div.content > table[0] > tbody' 380 var tr_items = $(tbody+' > tr') 381 tr_items.each(function(){ 382 var item1 = $(this) 383 var item1_val = item1.find('td[0]').text().trim() 384 console.log(item1_val) 385 tr_items.each(function(){ 386 var item2 = $(this) 387 var item2_val = item2.find('td[0]').text().trim() 388 if (item1 != item2 ){ 389 var comp = _compareTableStrings(item1_val, item2_val) 390 if (comp >= 0){ 391 tr_data.push(item1) 392 }else{ 393 tr_data.push(item2) 394 } 395 396 } 397 }) 398 }) 399 400 // clear table 401 $(tbody).remove() 402 var str = '' 403 tr_data.each(function(){ 404 str+=$(this).html() 405 }) 406 $(tbody).html(str) 407 }) 408} 409 410var _compareTableStrings = function(a,b){ 411 return (a<b?-1:(a>b?1:0)) 412} 413 414var setCopyLectures2 = function(lsfpageobserver){ 415 $( document ).ready(function() { 416 if ($('semcopy2').length > 0){ 417 var action = $('form').first().attr('action').replace("semcopy",$('semcopy2').text().trim()) 418 $('form').first().attr('action',action) 419 } 420 }) 421} 422var printVeranstaltungen = function(lsfpageobserver){ 423 $('#printVeranst').click(function(){ 424 window.print() 425 }) 426} 427
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.