|  |  | 
 |  |  |   var mediaPfad; | 
 |  |  |   var katUrl; | 
 |  |  |   var selTitel; | 
 |  |  |   var katName; | 
 |  |  |  | 
 |  |  |   this.init = function () { | 
 |  |  |     self.mediaPfad = '/'; | 
 |  |  | 
 |  |  |     self.appMenu.init( | 
 |  |  |             "data/menu/", | 
 |  |  |             "hauptmenue.json", | 
 |  |  |             "data/tpl/app-menu.tpl", | 
 |  |  |             "data/tpl/app-menu.txt", | 
 |  |  |             ".west", | 
 |  |  |             "8em"); | 
 |  |  |  | 
 |  |  | 
 |  |  |   // darunter der Inhalt des aktuellen Pfades | 
 |  |  |   this.media_liste = function() { | 
 |  |  |     self.reset_top_buttons(); | 
 |  |  |     document.querySelector('.bereich-name').textContent = 'Medien-Inhalte';     | 
 |  |  |     console.log("ortPfad: " + self.ortPfad + ", mediaPfad: " + self.mediaPfad); | 
 |  |  |     document.querySelector('.bereich-name').textContent = '';     | 
 |  |  |     if(self.ortPfad === '/') { | 
 |  |  |       var bb = document.querySelector('.breadcrumb-behaelter'); | 
 |  |  |       bb.textContent = "Kataloge"; | 
 |  |  |       // Kataloge listen | 
 |  |  |       self.http_get('../api/store/Ablageort/liste/', function (responseText) { | 
 |  |  |         //document.querySelector('#top-up-btn').removeEventListener('click', self.media_liste_herauf); | 
 |  |  |         self.vorlage_laden_und_fuellen("data/tpl/katalog_root_liste.tpl", JSON.parse(responseText), function (html) { | 
 |  |  |         self.vorlage_laden_und_fuellen("data/tpl/katalog_root_liste.txt", JSON.parse(responseText), function (html) { | 
 |  |  |           document.querySelector(".zentraler-inhalt").innerHTML = html; | 
 |  |  |           self.addEvtListener('.entity-eintrag', 'click', function (event) { | 
 |  |  |             var t = event.target; | 
 |  |  |             self.katName = t.textContent; | 
 |  |  |             self.http_get('../api/store/Ablageort/' + t.textContent, function(responseText) { | 
 |  |  |               var ablageort = JSON.parse(responseText); | 
 |  |  |               self.ortPfad = ablageort.url; | 
 |  |  | 
 |  |  |         }); | 
 |  |  |       }); | 
 |  |  |     } else { | 
 |  |  |       var bb = document.querySelector('.breadcrumb-behaelter'); | 
 |  |  |       var brPfad = self.katName + self.mediaPfad; | 
 |  |  |       var breadcrumbs = brPfad.split('/'); | 
 |  |  |       var brLinks = ""; | 
 |  |  |       var brLinkPfad = ""; | 
 |  |  |       for(var index = 0; index < breadcrumbs.length; index++) { | 
 |  |  |         // <a class="breadcrumb-link" href="#">breadcrumbs[index]</a> | 
 |  |  |         if(index === 0) { | 
 |  |  |           brLinkPfad = '/'; | 
 |  |  |         } else { | 
 |  |  |           brLinkPfad = brLinkPfad + '/' + breadcrumbs[index]; | 
 |  |  |         } | 
 |  |  |         brLinks = brLinks + "<a brlink='" + brLinkPfad + "' class='breadcrumb-link' href='#'>" + breadcrumbs[index] + "</a>"; | 
 |  |  |         //console.log('   breadcrumbs[' + index + ']: ' + breadcrumbs[index]); | 
 |  |  |       } | 
 |  |  |       bb.innerHTML = brLinks; | 
 |  |  |       self.addEvtListener('.breadcrumb-link', 'click', function(event) { | 
 |  |  |         console.log(event.target.attributes.brlink.nodeValue); | 
 |  |  |         var neuerPfad = event.target.attributes.brlink.nodeValue; | 
 |  |  |         self.mediaPfad = neuerPfad; | 
 |  |  |         self.media_liste(); | 
 |  |  |       }); | 
 |  |  |       var url = '..' + self.ortPfad + self.mediaPfad; | 
 |  |  |       if(!url.endsWith('/')) { | 
 |  |  |         url = url + '/'; | 
 |  |  |       } | 
 |  |  |       self.http_get(url, function(responseText) { | 
 |  |  |         self.vorlage_laden_und_fuellen("data/tpl/katalog_inhalt_liste.tpl", JSON.parse(responseText), function (html) { | 
 |  |  |         self.vorlage_laden_und_fuellen("data/tpl/katalog_inhalt_liste.txt", JSON.parse(responseText), function (html) { | 
 |  |  |           document.querySelector(".zentraler-inhalt").innerHTML = html; | 
 |  |  |           self.addEvtListener('.entity-eintrag', 'click', function (event) { | 
 |  |  |             var t = event.target; | 
 |  |  | 
 |  |  |               self.media_liste(); | 
 |  |  |             } else { | 
 |  |  |               if(t.classList.contains('selected')) { | 
 |  |  |                 t.classList.add('added-to-playlist'); | 
 |  |  |                 self.addSelectedTitel(); | 
 |  |  |               } else { | 
 |  |  |                 self.removeClassMulti('selected'); | 
 |  |  | 
 |  |  |   }; | 
 |  |  |    | 
 |  |  |   this.ablageort_liste = function() { | 
 |  |  |     self.entitaet_liste('Ablageort','../api/store/Ablageort/liste/',  | 
 |  |  |       "data/tpl/ablageort_liste.tpl", '../api/store/Ablageort/',  | 
 |  |  |     self.entitaet_liste('Kataloge','../api/store/Ablageort/liste/',  | 
 |  |  |       "data/tpl/ablageort_liste.txt", '../api/store/Ablageort/',  | 
 |  |  |       "self.ablageort_form", function(responseText) { | 
 |  |  |         var ablageort = JSON.parse(responseText); | 
 |  |  |         self.ablageort_form(ablageort); | 
 |  |  | 
 |  |  |  | 
 |  |  |   this.prefs_liste = function() { | 
 |  |  |     self.entitaet_liste('Einstellungen','../api/store/Einstellung/liste/',  | 
 |  |  |       "data/tpl/einstellung_liste.tpl", '../api/store/Einstellung/',  | 
 |  |  |       "data/tpl/einstellung_liste.txt", '../api/store/Einstellung/',  | 
 |  |  |       "self.prefs_form", function(responseText) { | 
 |  |  |         var einstellung = JSON.parse(responseText); | 
 |  |  |         self.prefs_form(einstellung); | 
 |  |  | 
 |  |  |  | 
 |  |  |   this.abspieler_liste = function() { | 
 |  |  |     self.entitaet_liste('Abspieler','../api/store/Abspieler/liste/',  | 
 |  |  |       "data/tpl/abspieler_liste.tpl", '../api/store/Abspieler/',  | 
 |  |  |       "data/tpl/abspieler_liste.txt", '../api/store/Abspieler/',  | 
 |  |  |       "self.abspieler_form", function(responseText) { | 
 |  |  |         var abspieler = JSON.parse(responseText); | 
 |  |  |         self.abspieler_form(abspieler); | 
 |  |  | 
 |  |  |    | 
 |  |  |   this.abspielliste_liste = function() { | 
 |  |  |     self.entitaet_liste('Abspielliste','../api/store/Abspielliste/liste/',  | 
 |  |  |       "data/tpl/abspielliste_liste.tpl", '../api/store/Abspielliste/',  | 
 |  |  |       "data/tpl/abspielliste_liste.txt", '../api/store/Abspielliste/',  | 
 |  |  |       "self.abspielliste_form", function(responseText) { | 
 |  |  |         var abspielliste = JSON.parse(responseText); | 
 |  |  |         self.abspielliste_form(abspielliste); | 
 |  |  | 
 |  |  |    | 
 |  |  |   this.abspielliste_form = function(al) { | 
 |  |  |     self.entitaet_form('Abspielliste', al, al.name, | 
 |  |  |       "data/tpl/form_abspielliste.tpl", '../api/store/Abspielliste/', | 
 |  |  |       "data/tpl/form_abspielliste.txt", '../api/store/Abspielliste/', | 
 |  |  |       '#abspielliste-name', function(event) { | 
 |  |  |           event.preventDefault(); | 
 |  |  |           self.abspielliste_auswahl_fuellen(); | 
 |  |  | 
 |  |  |    | 
 |  |  |   this.abspieler_form = function(pl) { | 
 |  |  |     self.entitaet_form('Abspieler', pl, pl.key, | 
 |  |  |       "data/tpl/form_abspieler.tpl", '../api/store/Abspieler/', | 
 |  |  |       "data/tpl/form_abspieler.txt", '../api/store/Abspieler/', | 
 |  |  |       '#abspieler-name', function() {  | 
 |  |  |           self.abspieler_auswahl_fuellen(); | 
 |  |  |           self.abspieler_liste(); | 
 |  |  | 
 |  |  |   }; | 
 |  |  |  | 
 |  |  |   this.prefs_form = function(k) { | 
 |  |  |     self.entitaet_form('Einstellungen', k, k.key, | 
 |  |  |       "data/tpl/form_einstellung.tpl", '../api/store/Einstellung/', | 
 |  |  |     self.entitaet_form('Einstellung', k, k.key, | 
 |  |  |       "data/tpl/form_einstellung.txt", '../api/store/Einstellung/', | 
 |  |  |       '#einstellung-key', function() {  | 
 |  |  |           self.prefs_liste(); | 
 |  |  |     }); | 
 |  |  | 
 |  |  |    * @returns {undefined} kein Rueckgabewert | 
 |  |  |    */ | 
 |  |  |   this.ablageort_form = function(ort) { | 
 |  |  |     self.entitaet_form('Ablageort', ort, ort.name, | 
 |  |  |       "data/tpl/form_ablageort.tpl", '../api/store/Ablageort/', | 
 |  |  |     self.entitaet_form('Katalog', ort, ort.name, | 
 |  |  |       "data/tpl/form_ablageort.txt", '../api/store/Ablageort/', | 
 |  |  |       '#ablageort-name', function() {  | 
 |  |  |         self.ablageort_liste(); | 
 |  |  |     }); | 
 |  |  | 
 |  |  |   /* ------------------------------- UI-Dynamik ----------------------- */ | 
 |  |  |    | 
 |  |  |   self.reset_top_buttons = function() { | 
 |  |  |     self.vorlage_laden_und_fuellen("data/tpl/top_btns.tpl", '', function (html) { | 
 |  |  |     self.vorlage_laden_und_fuellen("data/tpl/top_btns.txt", '', function (html) { | 
 |  |  |       document.querySelector(".top-btns").innerHTML = html; | 
 |  |  |     }); | 
 |  |  |   }; | 
 |  |  |    | 
 |  |  |   this.abspieler_auswahl_fuellen = function() { | 
 |  |  |     self.http_get('../api/store/Abspieler/liste/', function (responseText) { | 
 |  |  |       self.vorlage_laden_und_fuellen("data/tpl/abs_sel.tpl", JSON.parse(responseText), function (html) { | 
 |  |  |       self.vorlage_laden_und_fuellen("data/tpl/abs_sel.txt", JSON.parse(responseText), function (html) { | 
 |  |  |         document.querySelector(".abs-sel").innerHTML = html; | 
 |  |  |       });     | 
 |  |  |     }); | 
 |  |  | 
 |  |  |  | 
 |  |  |   this.abspielliste_auswahl_fuellen = function() { | 
 |  |  |     self.http_get('../api/store/Abspielliste/', function (responseText) { | 
 |  |  |       self.vorlage_laden_und_fuellen("data/tpl/pl_sel.tpl", JSON.parse(responseText), function (html) { | 
 |  |  |       self.vorlage_laden_und_fuellen("data/tpl/pl_sel.txt", JSON.parse(responseText), function (html) { | 
 |  |  |         document.querySelector(".pl-sel").innerHTML = html; | 
 |  |  |         self.addEvtListener('#playlist', 'change', function() { | 
 |  |  |           self.titel_liste(); | 
 |  |  | 
 |  |  |   /* Unterer Einblendbereich */ | 
 |  |  |    | 
 |  |  |   this.dialog_unten_zeigen = function() { | 
 |  |  |     self.vorlage_laden_und_fuellen("data/tpl/ctrl.tpl", "", function (html) { | 
 |  |  |     self.vorlage_laden_und_fuellen("data/tpl/ctrl.txt", "", function (html) { | 
 |  |  |       var dlg = document.querySelector(".dialog-unten"); | 
 |  |  |       dlg.style.height = '4.5em'; | 
 |  |  |       dlg.innerHTML = html; | 
 |  |  | 
 |  |  |    | 
 |  |  |   this.titel_liste = function() { | 
 |  |  |     self.reset_top_buttons(); | 
 |  |  |     document.querySelector('.bereich-name').textContent = 'Abspielliste'; | 
 |  |  |     var plname = document.querySelector('#playlist').value; | 
 |  |  |     document.querySelector('.bereich-name').textContent = 'Abspielliste ' + plname; | 
 |  |  |     var bb = document.querySelector('.breadcrumb-behaelter'); | 
 |  |  |     bb.textContent = ""; | 
 |  |  |     self.http_get('../api/alist/' + plname, function (responseText) { | 
 |  |  |       self.vorlage_laden_und_fuellen("data/tpl/titel_liste.tpl", JSON.parse(responseText), function (html) { | 
 |  |  |       self.vorlage_laden_und_fuellen("data/tpl/titel_liste.txt", JSON.parse(responseText), function (html) { | 
 |  |  |         document.querySelector(".zentraler-inhalt").innerHTML = html; | 
 |  |  |         self.addEvtListener('.entity-eintrag', 'click', function (event) { | 
 |  |  |           var t = event.target; | 
 |  |  | 
 |  |  |    | 
 |  |  |   /* | 
 |  |  |    * url: '../api/store/Ablageort/liste/' | 
 |  |  |    * tpl: "data/tpl/ablageort_liste.tpl" | 
 |  |  |    * tpl: "data/tpl/ablageort_liste.txt" | 
 |  |  |    * storeUrl: '../api/store/Ablageort/' | 
 |  |  |    * formFunc: "self.ablageort_form" | 
 |  |  |    * cb: etwas wie | 
 |  |  | 
 |  |  |   this.entitaet_liste = function(bname, listUrl, tpl, storeUrl, formFunc, cb) { | 
 |  |  |     self.reset_top_buttons(); | 
 |  |  |     document.querySelector('.bereich-name').textContent = bname; | 
 |  |  |     var bb = document.querySelector('.breadcrumb-behaelter'); | 
 |  |  |     bb.textContent = ""; | 
 |  |  |     self.http_get(listUrl, function (responseText) { | 
 |  |  |       self.vorlage_laden_und_fuellen(tpl, JSON.parse(responseText), function (html) { | 
 |  |  |         document.querySelector(".zentraler-inhalt").innerHTML = html; | 
 |  |  | 
 |  |  |   /* | 
 |  |  |    * dat: gefuelltes Datenobjekt bei Aenderung | 
 |  |  |    * key: der alte schluesselbegriff bei Aenderung (z.B. al.name) | 
 |  |  |    * tpl: "data/tpl/form_abspielliste.tpl" | 
 |  |  |    * tpl: "data/tpl/form_abspielliste.txt" | 
 |  |  |    * url: '../api/store/Abspielliste/' | 
 |  |  |    * selector: '#abspielliste-name' | 
 |  |  |    * cbOk: etwas wie | 
 |  |  | 
 |  |  |   this.handle_del_btn = function(selectorKey, delUrl, cb) { | 
 |  |  |     var pkey = document.querySelector(selectorKey).value; | 
 |  |  |     var dlgdata = {"del-elem": pkey}; | 
 |  |  |     self.dialog_laden_und_zeigen('data/tpl/dlg-loeschen.tpl', dlgdata, function() { | 
 |  |  |     self.dialog_laden_und_zeigen('data/tpl/dlg-loeschen.txt', dlgdata, function() { | 
 |  |  |       self.addEvtListener('#nein-btn', 'click', self.dialog_schliessen); | 
 |  |  |       self.addEvtListener('#ja-btn', 'click', function(event) { | 
 |  |  |         console.log("loeschen geklickt."); | 
 |  |  | 
 |  |  |   }; | 
 |  |  |  | 
 |  |  |   this.info_dialog_zeigen = function () { | 
 |  |  |     self.dialog_laden_und_zeigen('data/tpl/dlg-info.tpl', ''); | 
 |  |  |     self.dialog_laden_und_zeigen('data/tpl/dlg-info.txt', ''); | 
 |  |  |     self.menue_umschalten(); | 
 |  |  |   }; | 
 |  |  |  |