1// wegen strict mode 2 3(function() { 4 5"use strict"; 6 7var container; 8var displayLimit; 9var mz={}; 10var mzArray=[]; // das ist hier doppelt, eigentlich kann man dann doch auf das Objekt im globalen scope verzichten 11var numDisplayed=0; 12var debug=false; 13 14var letters=/[A-Za-zÃÃÃäüöÃ\-]/; 15var numbers=/[0-9]/; 16 17function displayWaiting() { 18 $("body").css("cursor", "progress"); 19 $("body").append('<div id="overlay-disabled" style="background-color:rgba(0, 0, 0, 0.5);position:absolute;top:0;left:0;height:100%;width:100%;z-index:999"></div>'); 20} 21 22function removeWaiting() { 23 $("body").css("cursor", "default"); 24 $("#overlay-disabled").remove(); 25} 26 27function synchronizeWatchlist() { 28 // daten abgleichen, localstorage neu speichern, 29 // anschlieÃend neu laden der gesamten seite 30 displayWaiting(); 31 alert("Achtung: Ihre Merkliste enthält Datensätze, die auf dem Server gelöscht wurden.\nDiese Datensätze werden nun aus Ihrer Merkliste entfernt."); 32 33 $.post('/kurssuche/getValidWatchlistEntries.php?json_ids='+encodeURIComponent(JSON.stringify(mzArray)), 34 function (data, status) { 35 mzArray=data; 36 mz={}; 37 for(let i=0; i<mzArray.length; i++) { 38 mz[mzArray[i]]="1"; 39 } 40 localStorage.merkzettel = JSON.stringify(mz); 41 removeWaiting(); 42 window.location.replace(window.location.href); 43 44 }).done(function() { removeWaiting(); }).fail(function(jqxhr, settings, ex) { removeWaiting(); }) ; 45} 46 47function handleFetchWatchlistInfo( data, mode=0 ) { 48 // mode=0: prepend 49 // mode=1: append 50 51 52 let entry; 53 for (let i=0; i<data.length; i++) { 54 let entry=data[i]; 55 //console.log(entry); 56 let id=cleanId(entry.id); 57 let dd; 58 59 if (entry.removed) { 60 if (debug) console.log("datensatz "+entry.id+" geloescht"); 61 synchronizeWatchlist(); 62 } 63 64 if (entry.supplier) { 65 // Kursdatensatz 66 dd=$('<dd>',{ 67 'html': '<div>Anbieter: ' + entry.supplier + ' | Ort: ' + entry.city + '</div><div>Quelle: '+ entry.quelleName + '</div><div><strong class="a5-icon-calendar">' + entry.date + '<strong></div>', 68 'class': 'wlRechts', 69 'id': 'wlRechts-dd-'+id 70 }); 71 } 72 else { 73 // Anbieterdatensatz 74 dd=$('<dd>',{ 75 'html': entry.city ? '<div>Ort: ' + entry.city + '</div>' : '' + '<div>Quelle: '+ entry.quelleName + '</div>', 76 'class': 'wlRechts', 77 'id': 'wlRechts-dd-'+id 78 }); 79 } 80 81 let dt=$('<dt>',{ 82 'html': '<a href="' + entry.url + '">' + entry.title + '</a><a data-entryid="'+entry.id+'" class="a5-remove-button" href="#"><span class="ym-hideme">Eintrag löschen</span></a>', 83 'class': 'wlRechts', 84 'id': 'wlRechts-dt-'+id 85 86 }); 87 88 if (mode==0) { 89 dd.prependTo(container); 90 dt.prependTo(container); 91 } 92 else { 93 dt.appendTo(container); 94 dd.appendTo(container); 95 } 96 97 numDisplayed++; 98 if (debug) console.log("numDisplayed: "+numDisplayed); 99 // checkDisplayMehrAnzeigen(); 100 101 } 102} 103 104function jjlog() { 105 if (debug) console.log("keys in merkzettel: "+mzArray); 106} 107 108function cleanId(id) { 109 let ret = id.replace(/(\W|_)/g,'-'); 110 //console.log("ret=="+ret); 111 return ret; 112} 113 114function removeWatchlistEntryFromRightList(sId, autoAdd=true) { 115 if (debug) console.log("remove "+sId+" from list"); 116 $("#wlRechts-dt-"+cleanId(sId)).remove(); 117 $("#wlRechts-dd-"+cleanId(sId)).remove(); 118 numDisplayed--; 119 120 121 if (autoAdd) { 122 let lastKeys=mzArray.slice(-numDisplayed-1); 123 if (lastKeys.length > numDisplayed) { 124 addWatchlistEntryToRightList(lastKeys[0], 1); 125 } 126 } 127 // checkDisplayMehrAnzeigen(); 128} 129 130function removeFromMerkzettel(ent, checkContentStars) { 131 if (ent == "option-all") { 132 // alle entries der aktuellen seite vom merkzettel entfernen 133 if (debug) console.log("alle ausgewaehlt. loesche alle vom merkzettel"); 134 localStorage.removeItem('merkzettel'); 135 $("#merklistegesamt").remove(); 136 // let oldLength=mzArray.length; 137 /* 138 mz=JSON.parse(localStorage.merkzettel); 139 mzArray=Reflect.ownKeys(mz); 140 for (i=0; i<mzArray.length; i++) { 141 console.log(mzArray[i]); 142 delete mz[mzArray[i]]; 143 removeWatchlistEntryFromRightList(ent, false); 144 } 145 */ 146/* 147 if (mzArray.length < oldLength) { 148 let numNew=mzArray.length-oldLength; 149
150 if (debug) console.log("remove "+numNew+" entries from watchlist"); 151 localStorage.merkzettel = JSON.stringify(mz); 152*/ 153 $(".mzAnzahl").html(0); 154 // localStorage.merkzettel= JSON.stringify(mz); 155 // rebuildWatchlistDisplay(); 156// } 157 158 return; 159 } 160 161 if (debug) console.log("remove entry "+ent); 162 delete mz[ent]; 163 mzArray=Reflect.ownKeys(mz); 164 $(".mzAnzahl").html(mzArray.length); 165 localStorage.merkzettel= JSON.stringify(mz); 166 removeWatchlistEntryFromRightList(ent, false); 167 // jjlog(); 168 169} 170 171function setSaveAsPdf() { 172 $('#saveaspdf').click(function(event) { 173 event.preventDefault(); 174 175 let ids=mzArray.slice(0,numDisplayed); 176 let params = { 177 "asPDF": "y", 178 "anzahlTreffer":ids.length, 179 "ids": ids 180 }; 181 182 $.ajax({ 183 type: 'POST', 184 url: '/kurssuche/createPdf.php', 185 dataType: 'native', 186 xhrFields: { 187 responseType: 'blob' 188 }, 189 data: params, 190 success: function(blob){ 191 // console.log("blobsize: "+blob.size); 192 193 var filename = "iwwb_merkliste.pdf"; 194 // console.log(filename); 195 var link=document.createElement('a'); 196 link.href=window.URL.createObjectURL(blob); 197 link.download=filename; 198 document.body.appendChild(link); 199 link.click(); 200 document.body.removeChild(link); 201 202 } 203 }) 204 205 .fail(function(data) { 206 // Make sure that the formMessages div has the 'error' class. 207 if (typeof data.responseText !== 'undefined' && data.responseText !== '') { 208 alert('fail: '+data.responseText); 209 } else { 210 alert("Das PDF konnte nicht erzeugt werden."); 211 } 212 }); 213 //return false; 214}); 215} 216 217function setSubmitSendViaEmail() { 218 // behandlung in iwwb.dev.js (und anderswo) ausschalten - vielleicht doch besser dort entfernen ? JJ marker 219 $('.a5-merkliste').off('submit'); 220 $('.a5-merkliste').submit(function(event) { 221 event.preventDefault(); 222 223 let ids=mzArray.slice(0,numDisplayed); 224 for (let i=0; i<ids.length; i++) { 225 // console.log(i); 226 $('#hiddenFormFieldsSendViaEmail').append('<input type="hidden" name="ids[]" value="'+ids[i]+'" />'); 227 } 228 229 var form = $('#sendviaemail'); 230 var formData = $(form).serialize(); 231 // console.log(formData); 232 $.ajax({ 233 type: 'POST', 234 url: $(form).attr('action'), 235 data: formData 236 }) 237 238 .done(function(response) { 239 alert(response); 240 // Clear the form. 241 $('#your-id').val(''); 242 $('#message').val(''); 243 }) 244 245 .fail(function(data) { 246 // Make sure that the formMessages div has the 'error' class. 247 if (data.responseText !== '') { 248 alert(data.responseText); 249 } else { 250 alert("Die Email konnte nicht gesendet werden."); 251 } 252 253 }); 254 255 return true; // return false to cancel form action 256 }); 257 258} 259 260 261$(function() { 262 container = $('.a5-merkliste dl'); 263 displayLimit=parseInt($('#contentForm').attr('data-limit')); 264 265 if (localStorage.merkzettel) { 266 // aufbauen des merkzettels rechte spalte 267 mz=JSON.parse(localStorage.merkzettel); 268 mzArray=Reflect.ownKeys(mz); 269 $(".mzAnzahl").html(mzArray.length); 270 if (debug) console.log(mzArray); 271 // JJ marker ich nehme keine arrays, da diese (wenn man nicht .includes() verwendet, was nicht mit allen 272 // browsern kompatibel ist) sonst jedesmal durchlaufen werden muessen (kein in_array()) 273 274 // die reihenfolge im assoziativen array ist definiert (seit 2015?) als die reihenfolge 275 // der definition 276 277 // letzten elemente in normaler reihenfolge, wird jetzt umgekehrt angefuegt mit mode=0 parameter in handleFetchWatchlistInfo 278 let arr=mzArray.slice(-displayLimit); 279 // console.log(encodeURIComponent(JSON.stringify(arr))); 280 $.get('/kurssuche/getWatchlistInfo.php?json_ids='+encodeURIComponent(JSON.stringify(arr)), 281 function(data) { 282 handleFetchWatchlistInfo(data, 0); 283 }); 284 } 285 286 setSubmitSendViaEmail(); 287 setSaveAsPdf(); 288 289 // den old-school eventhandler nun ersetzt, da ansonsten die methode ausserhalb des scopes waere 290 $(document).delegate(".a5-remove-button", "click", function(event) { 291 event.preventDefault(); 292 let id=$(this).attr('data-entryid'); 293 // alert("remove clicked: "+id); 294 removeFromMerkzettel(id, false); 295 }); 296 297 $('#merkzettelLoeschen').click(function(event) { 298 event.preventDefault(); 299 removeFromMerkzettel('option-all', false); 300 }); 301 302 }); 303 304 305})();
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.