Reformed channel selection, and added location and tag filter to movie list
authorAnders Holst <aholst@users.schwerkraft.elitedvb.net>
Mon, 16 Feb 2009 21:04:48 +0000 (21:04 +0000)
committerAnders Holst <aholst@users.schwerkraft.elitedvb.net>
Mon, 16 Feb 2009 21:04:48 +0000 (21:04 +0000)
19 files changed:
webinterface/src/WebComponents/Sources/LocationsAndTags.py
webinterface/src/WebComponents/Sources/Movie.py
webinterface/src/WebComponents/Sources/Timer.py
webinterface/src/WebComponents/Sources/WAPfunctions.py
webinterface/src/web-data/config.js
webinterface/src/web-data/manifest.json
webinterface/src/web-data/objects.js
webinterface/src/web-data/timer.js
webinterface/src/web-data/tools.js
webinterface/src/web-data/tpl/default/tplMovieList.htm
webinterface/src/web-data/tpl/default/tplNavMovies.htm [new file with mode: 0644]
webinterface/src/web-data/tpl/default/tplTimerEdit.htm
webinterface/src/web/getcurrlocation.xml [new file with mode: 0644]
webinterface/src/web/movielist.html.xml
webinterface/src/web/movielist.m3u.xml
webinterface/src/web/movielist.rss.xml
webinterface/src/web/movielist.xml
webinterface/src/web/wap/timeredit.html.xml
webinterface/src/webif.py

index 58d17bd..23343d6 100644 (file)
@@ -2,8 +2,9 @@ from Components.Sources.Source import Source
 from Components.config import config
 
 class LocationsAndTags(Source):
-    LOCATIONS = 0
-    TAGS = 1
+    CURRLOCATION = 0
+    LOCATIONS = 1
+    TAGS = 2
     
     def __init__(self, session, func):
         self.func = func
@@ -12,15 +13,20 @@ class LocationsAndTags(Source):
         self.result = False,"one two three four unknown command"
 
     def handleCommand(self, cmd):
-        if self.func is self.LOCATIONS:
-            self.result = True,self.getLocations()
+        if self.func is self.CURRLOCATION:
+            self.result = [self.getCurrentLocation()]
+        elif self.func is self.LOCATIONS:
+            self.result = self.getLocations()
         elif self.func is self.TAGS:
-            self.result = True,self.getTags()
+            self.result = self.getTags()
         else:
-            self.result = False,"unknown command"
+            self.result = False
+
+    def getCurrentLocation(self):
+        return config.movielist.last_videodir.value
 
     def getLocations(self):
-        return " ".join(config.movielist.videodirs.value)
+        return config.movielist.videodirs.value
 
     def getTags(self):
         try:
@@ -31,19 +37,17 @@ class LocationsAndTags(Source):
             file.close()
         except IOError, ioe:
             tags = []
-        return " ".join(tags)
+        return tags
 
     def getText(self):
-        self.handleCommand("")
+        self.handleCommand(None)
         print self.result
-        (result,text) = self.result
-        xml  = "<e2simplexmlresult>\n"
-        if result:
-            xml += "<e2state>True</e2state>\n"
-        else:
-            xml += "<e2state>False</e2state>\n"            
-        xml += "<e2statetext>%s</e2statetext>\n" % text
-        xml += "</e2simplexmlresult>\n"
+        lst = self.result
+        xml  = "<e2simplexmllist>\n"
+        if self.result:
+            for ele in self.result:
+               xml += "<e2simplexmlitem>%s</e2simplexmlitem>\n"%ele
+        xml += "</e2simplexmllist>\n"
         return xml
     
     text = property(getText)
index d5507b0..4182da3 100644 (file)
@@ -16,6 +16,7 @@ class Movie( Source):
                Source.__init__(self)
                self.func = func
                self.session = session
+               self.tagfilter = []
                self.root = eServiceReference("2:0:1:0:0:0:0:0:0:0:" + resolveFilename(SCOPE_HDD))
                self.movielist = movielist #MovieList(self.root)
                self.movielist.load(self.root, None)
@@ -27,8 +28,9 @@ class Movie( Source):
                        self.cmd = cmd
                        if self.func is self.DEL:
                                self.result = self.delMovie(cmd)
-        
-
+                       elif self.func is self.LIST:
+                               self.root = eServiceReference("2:0:1:0:0:0:0:0:0:0:" + cmd['dirname'])
+                               self.tagfilter = cmd['tag'] and [cmd['tag']] or []
                   
        def delMovie(self, param):
 #              print "[WebComponents.delMovie] %s" %param
@@ -61,7 +63,7 @@ class Movie( Source):
 
    
        def command(self):
-               #self.movielist.reload(root=self.root)
+               self.movielist.reload(root=self.root,filter_tags = self.tagfilter)
                list=[]
 
                for (serviceref, info, begin, unknown) in self.movielist.list:
@@ -106,8 +108,9 @@ class Movie( Source):
                        filename = "/"+"/".join(serviceref.toString().split("/")[1:])
                        movie.append(filename)
                        movie.append(os_stat(filename)[6])
-                       if info.getInfoString(serviceref, iServiceInformation.sTags).lower().find(self.cmd.lower())>=0:
-                               """ add movie only to list, if a givven tag is applied to the movie """
+                       tag = self.cmd['tag'].lower()
+                       if not tag or info.getInfoString(serviceref, iServiceInformation.sTags).lower().find(tag)>=0:
+                               """ add movie only to list, if a given tag is applied to the movie """
                                list.append(movie)
                return list
 
index 3e2e9c6..95391ba 100644 (file)
@@ -215,22 +215,22 @@ class Timer( Source):
 
         repeated = int(param.get('repeated') or 0)
 
-        if param.has_key('begin'):
-            begin = int(float(param['begin']))
-            if time() <= begin:                
-                pass
-            elif time() > int(begin) and repeated == 0:
-                begin = time()
-            else:
-                return False, "Illegal Parameter value for Parameter begin : '%s'" %begin              
-        else:
+        if not param.has_key('begin'):
             return False, "Missing Parameter: begin"
-        
-        if param.has_key('end'): 
-            end = int(float(param['end']))
-        else:
+        begin = int(float(param['begin']))
+
+        if not param.has_key('end'): 
             return False, "Missing Parameter: end"
+        end = int(float(param['end']))
           
+        tm = time()
+        if tm <= begin:                
+            pass
+        elif tm > begin and tm < end and repeated == 0:
+            begin = time()
+        elif repeated == 0:
+            return False, "Illegal Parameter value for Parameter begin : '%s'" %begin              
+        
         if param.has_key('name'):
             name = param['name']
         else:
@@ -450,7 +450,7 @@ class Timer( Source):
             
             if item.eit is not None:
                 event = self.epgcache.lookupEvent(['EX',("%s" % item.service_ref ,2,item.eit)])
-                if event[0][0] is not None:
+                if event and event[0][0] is not None:
                     timer.append(event[0][0])
                 else:
                     timer.append("N/A")
index 292efe0..8071582 100644 (file)
@@ -74,9 +74,9 @@ class WAPfunctions( Source):
                 timePlusTwo = end
         
         t = {}
-        t["day"]=strftime("%d", localtime(timeNow))
-        t["month"]=strftime("%m", localtime(timeNow))
-        t["year"]=strftime("%Y", localtime(timeNow))
+        t["sday"]=t["day"]=strftime("%d", localtime(timeNow))
+        t["smonth"]=t["month"]=strftime("%m", localtime(timeNow))
+        t["syear"]=t["year"]=strftime("%Y", localtime(timeNow))
         t["smin"]=strftime("%M", localtime(timeNow))
         t["shour"]=strftime("%H", localtime(timeNow))
         t["emin"]=strftime("%M", localtime(timePlusTwo))
@@ -85,7 +85,7 @@ class WAPfunctions( Source):
         key = ""
         for i in param:
             p = str(i)
-            if p != "sRef":
+            if p != "sRef" and param[p] != None:
                 key = p
 
         if key == "smin" or key == "emin" :
@@ -94,10 +94,10 @@ class WAPfunctions( Source):
         elif key == "shour" or key == "ehour":
             start = 1
             end = 24
-        elif key == "day":
+        elif key == "day" or key == "sday":
             start = 1
             end = 31
-        elif key == "month":
+        elif key == "month" or key == "smonth":
             start = 1
             end = 12
         else:
@@ -217,33 +217,54 @@ class WAPfunctions( Source):
 
         return returnList
     
-    def serviceList(self,param):
-        print "serviceList: ",param
-        sRef = str(param["sRef"])
-        bouquet = str(param["bouquet"])
-        returnList = []
-        sRefFound = 0
-        
-        if bouquet == '':
-            bouquet = '1:7:1:0:0:0:0:0:0:0:FROM BOUQUET "userbouquet.favourites.tv" ORDER BY bouquet'
+    def serviceListOne(self, bouquet, selref):
         ref = eServiceReference(bouquet)
         self.servicelist = ServiceList(ref, command_func = self.getServiceList, validate_commands=False)
         self.servicelist.setRoot(ref)
+        returnList = []
         for (ref2, name) in self.servicelist.getServicesAsList():
             print "ref2: (",ref2, ") name: (",name,")"
             returnListPart = []
             returnListPart.append(name)
             returnListPart.append(ref2)
-            if ref2 == str(sRef):
+            if ref2 == str(selref):
                 returnListPart.append("selected")
-                sRefFound = 1
+                self.sRefFound = 1
             else:
                 returnListPart.append("")
             returnList.append(returnListPart)
+        return returnList
 
-        if sRefFound == 0 and sRef != '':
+    def serviceList(self,param):
+        print "serviceList: ",param
+        sRef = str(param["sRef"])
+        bouquet = str(param["bouquet"])
+        self.sRefFound = 0
+        
+        if bouquet == '':
+            returnList = []
+            bouquet = '1:7:1:0:0:0:0:0:0:0:FROM BOUQUET "bouquets.tv" ORDER BY bouquet'
+            ref = eServiceReference(bouquet)
+            self.servicelist = ServiceList(ref, command_func = self.getServiceList, validate_commands=False)
+            self.servicelist.setRoot(ref)
+            for (ref2, name) in self.servicelist.getServicesAsList():
+                part = self.serviceListOne(ref2, sRef)
+                if part:
+                    returnList = returnList + [["-- "+name+" --", "<"+name+">", ""]] + part
+            bouquet = '1:7:1:0:0:0:0:0:0:0:FROM BOUQUET "bouquets.radio" ORDER BY bouquet'
+            ref = eServiceReference(bouquet)
+            self.servicelist = ServiceList(ref, command_func = self.getServiceList, validate_commands=False)
+            self.servicelist.setRoot(ref)
+            for (ref2, name) in self.servicelist.getServicesAsList():
+                part = self.serviceListOne(ref2, sRef)
+                if part:
+                    returnList = returnList + [["-- "+name+" --", "<"+name+">", ""]] + part
+        else:
+            returnList = self.serviceListOne(bouquet, sRef)
+
+        if self.sRefFound == 0 and sRef != '':
             returnListPart = ["Inserted", sRef, "selected"]
-            returnList.append(returnListPart)
+            returnList = [returnListPart] + returnList
         #print returnList
         return returnList
 
index 45947f0..8efaf01 100644 (file)
@@ -23,7 +23,7 @@ var url_subservices = "/web/subservices"; // subservices for current service
 
 var url_updates= "/web/updates.html";
 
-var url_movielist= "/web/movielist"; // plus tag as string
+var url_movielist= "/web/movielist"; // plus dirname,tag
 
 var url_about= "/web/about";
 
@@ -31,7 +31,7 @@ var url_settings= "/web/settings";
 
 var url_parentcontrol= "/web/parentcontrollist";
 
-var url_moviedelete= "/web/moviedelete"; // plus serviceref,eventid
+var url_moviedelete= "/web/moviedelete"; // plus serviceref
 
 var url_mediaplayerlist= "/web/mediaplayerlist?types=audio&path="; // plus full qualified path
 var url_mediaplayerplay= "/web/mediaplayerplay?file="; // plus file-serviceref
@@ -48,8 +48,9 @@ var url_timeraddbyeventid= "/web/timeraddbyeventid"; // plus serviceref,eventid
 var url_timerdelete= "/web/timerdelete"; // plus serviceref,begin,end
 var url_timerlistwrite="/web/timerlistwrite?write=saveWriteNow";
 
-var url_getLocations="/web/getlocations";
-var url_getTags="/web/gettags";
+var url_getcurrlocation="/web/getcurrlocation";
+var url_getlocations="/web/getlocations";
+var url_gettags="/web/gettags";
 
 var url_message = "/web/message"; // plus text,type,timeout
 var url_messageanswer = "/web/messageanswer?getanswer=now"; 
index 6fc147c..3a93318 100644 (file)
@@ -28,6 +28,7 @@
                { "url": "tpl/tplMediaPlayer.htm" },
                { "url": "tpl/tplMovieList.htm" },
                { "url": "tpl/tplNavBoxControl.htm" },
+               { "url": "tpl/tplNavMovies.htm" },
                { "url": "tpl/tplNavRadio.htm" },
                { "url": "tpl/tplNavTimer.htm" },
                { "url": "tpl/tplNavTv.htm" },
index 470e7a1..8af66f2 100644 (file)
@@ -232,7 +232,7 @@ function Movie(xml){
        try{
                this.tags = xml.getElementsByTagName('e2tags').item(0).firstChild.data;
        } catch (e) {
-               this.tags = "no&nbsp;tags"; // no whitespaces... tags will be splittet later
+               this.tags = "&nbsp;"; // no whitespaces... tags will be splittet later
        }
        try{
                this.filename = xml.getElementsByTagName('e2filename').item(0).firstChild.data;
@@ -626,6 +626,26 @@ function SimpleXMLResult(xml){
 }
 // END SimpleXMLResult
 
+// START SimpleXMLList
+function SimpleXMLList(xml){
+       // parsing values from xml-element
+       debug('[SimpleXMLList] init: '+xml);
+       try{
+               this.xmlitems = xml.getElementsByTagName("e2simplexmllist").item(0).getElementsByTagName("e2simplexmlitem");
+               debug("[SimpleXMLList] count: " + xml.getElementsByTagName("e2simplexmllist").length);
+       } catch (e) {
+               debug("[SimpleXMLList] parsing e2simplexmllist"+e);
+       }
+       this.getList = function(){
+               var lst = [];
+               for(var i=0;i<this.xmlitems.length;i++){
+                       lst.push(this.xmlitems.item(i).firstChild.data);                        
+               }
+               return lst;
+       };
+}
+// END SimpleXMLList
+
 //START class Settings
 function Settings(xml){
        // parsing values from xml-element
index 78ee1f0..2429985 100644 (file)
@@ -12,71 +12,170 @@ addTimerEditFormArray.tagsList = [];
 days = ['mo', 'tu', 'we', 'th', 'fr', 'sa', 'su'];
 
 
-function addTimerFormChangeType() {
-       selected = ($('tvradio').checked === true) ? addTimerEditFormArray.TVList: addTimerEditFormArray.RadioList;
-       
-       for (i = $('channel').options.length; i !== 0; i--) {
-               $('channel').options[i - 1] = null;
+// Channel menu consists of:
+//  1. The currently selected channel, unless it is contained in 2.
+//  2. The currently selected bouquet
+//  3. The TV bouquets and the Radio bouquets
+function addTimerFormPrepareChannelMenu() {
+       result = {};
+       tvblist = addTimerEditFormArray.TVList;
+       radioblist = addTimerEditFormArray.RadioList;
+       currbouquet = addTimerEditFormArray.currBouquetName;
+       currblist = addTimerEditFormArray.currBouquetList;
+
+       var found = false;
+       for (element in currblist) {
+               if (addTimerEditFormArray.channel == element) {
+                       found = true;
+                       break;
+               }
        }
-       
-       i = -1;
-       for(element in selected) {
-               if(element != "extend") {
-                       i++;
-                       $('channel').options[i] = new Option(selected[element]);
-                       $('channel').options[i].value = element;
+       if (!found) {
+               result[addTimerEditFormArray.channel] = addTimerEditFormArray.channelName;
+       }
+       if (currbouquet) {
+               result["<Currbouquet>"] = "-- "+currbouquet+" --";
+               for (element in currblist) {
+                       result[element] = currblist[element];
                }
        }
+       result["<Bouquets>"] = "-- Bouquets --";
+       for (element in tvblist) {
+               result[element] = tvblist[element];
+       }
+       for (element in radioblist) {
+               result[element] = radioblist[element];
+       }
+       return result;
 }
 
-function addTimerFormChangeLocation(newloc) {
-        
+function addTimerFormChangeChannel(newchannel) {
+       tvblist = addTimerEditFormArray.TVList;
+       radioblist = addTimerEditFormArray.RadioList;
+       if (newchannel == "<Currbouquet>" || newchannel == "<Bouquets>") {
+               // reset selection to last valid channel
+               for (i=0; i<$('channel').options.length; i++) {
+                       if ($('channel').options[i].value == addTimerEditFormArray.channel) {
+                               $('channel').options[i].selected = true;
+                               break;
+                       }
+               }
+               return;
+       }
+       found = false;
+       for(element in tvblist) {
+               if (element == newchannel) {
+                       found = true;
+                       addTimerEditFormArray.currBouquetName = tvblist[element];
+                       addTimerEditFormArray.currBouquetList = {};
+                       break;
+               }
+       }
+       if (!found) {
+               for(element in radioblist) {
+                       if (element == newchannel) {
+                               found = true;
+                               addTimerEditFormArray.currBouquetName = radioblist[element];
+                               addTimerEditFormArray.currBouquetList = {};
+                               break;
+                       }
+               }
+       }
+       if (found) {
+               // bouquet selected, update menu
+               servicereftoloadepgnow = newchannel;
+               if(typeof(loadedChannellist[servicereftoloadepgnow]) == "undefined") {  
+                       doRequest(url_getServices+servicereftoloadepgnow, incomingAddTimerFormChangeChannel, true);
+               } else {
+                       incomingAddTimerFormChangeChannel();
+               }
+       } else {
+               // real channel selected, update channel and channelName
+               addTimerEditFormArray.channel = newchannel;
+               for (i=0; i<$('channel').options.length; i++) {
+                       if ($('channel').options[i].value == newchannel) {
+                               addTimerEditFormArray.channelName = $('channel').options[i].text;
+                               break;
+                       }
+               }
+       }
+}
+
+function incomingAddTimerFormChangeChannel(request) {
+       var services = null;
+       if(typeof(loadedChannellist[servicereftoloadepgnow]) != "undefined"){
+               services = loadedChannellist[servicereftoloadepgnow];
+       } else if(request.readyState == 4) {
+               services = new ServiceList(getXML(request)).getArray();
+               loadedChannellist[servicereftoloadepgnow] = services;   
+       }
+       if(services !== null) {
+               debug("[incomingAddTimerFormChangeChannel] Got "+services.length+" Services");
+               for(var i = 0; i < services.length ; i++) {
+                       reference = services[i];
+                       addTimerEditFormArray.currBouquetList[reference.getServiceReference()] = reference.getServiceName();
+               }
+       }
+
+       lst = addTimerFormPrepareChannelMenu();
+
+       for (i = $('channel').options.length; i !== 0; i--) {
+               $('channel').options[i - 1] = null;
+       }
+       for(element in lst) {
+               $('channel').options[i] = new Option(lst[element]);
+               $('channel').options[i].value = element;
+                if (element == addTimerEditFormArray.channel) {
+                       $('channel').options[i].selected = true;
+               }
+               i++;
+       }
 }
 
 function addTimerFormPrepareTagsMenu(currtags) {
        result = {};
-        resultsuff = {};
+       resultsuff = {};
        taglist = addTimerEditFormArray.tagsList;
 
-        if (currtags == "") {
-               i = 0;
-                result[""] = "<None>";
-                for (i = 0; i < taglist.length; i++) {
-                       result[taglist[i]] = taglist[i];
-               }
-        } else {
-               result[currtags] = currtags;
-                tags = currtags.split(" ");
-                       for (i = 0; i < taglist.length; i++) {
-                        var res = "";
-                        var found = false;
-                        for (j=0; j<tags.length; j++) {
-                               if (tags[j] != taglist[i]) {
-                                               res += " "+tags[j];
+       if (currtags == "") {
+               i = 0;
+               result[""] = "<None>";
+               for (i = 0; i < taglist.length; i++) {
+                       result[taglist[i]] = taglist[i];
+               }
+       } else {
+               result[currtags] = currtags;
+               tags = currtags.split(" ");
+               for (i = 0; i < taglist.length; i++) {
+                       var res = "";
+                       var found = false;
+                       for (j=0; j<tags.length; j++) {
+                               if (tags[j] != taglist[i]) {
+                                       res += " "+tags[j];
                                } else {
-                                       found = true;
-                                }
-                        }
-                        if (!found) {
-                               res += " "+taglist[i];
-                        }
-                        if (res.length > 0) {
-                                res = res.substring(1,res.length);
-                        }
-                        if (found) {
-                               resultsuff[res] = "- "+taglist[i];
-                        } else {
-                               result[res] = "+ "+taglist[i];
-                        }
-                }
-                if (tags.length > 1) {
-                       for (ele in resultsuff) {
-                               result[ele] = resultsuff[ele];
-                        }
-                }
-                result[""] = "<None>";
-        }
-        return result;
+                                       found = true;
+                               }
+                       }
+                       if (!found) {
+                               res += " "+taglist[i];
+                       }
+                       if (res.length > 0) {
+                               res = res.substring(1,res.length);
+                       }
+                       if (found) {
+                               resultsuff[res] = "- "+taglist[i];
+                       } else {
+                               result[res] = "+ "+taglist[i];
+                       }
+               }
+               if (tags.length > 1) {
+                       for (ele in resultsuff) {
+                               result[ele] = resultsuff[ele];
+                       }
+               }
+               result[""] = "<None>";
+       }
+       return result;
 }
 
 function addTimerFormChangeTags(newtags) {
@@ -86,11 +185,11 @@ function addTimerFormChangeTags(newtags) {
                $('tags').options[i - 1] = null;
        }
        
-        for(element in lst) {
-                       $('tags').options[i] = new Option(lst[element]);
-                       $('tags').options[i].value = element;
-                       i++;
-        }
+       for(element in lst) {
+               $('tags').options[i] = new Option(lst[element]);
+               $('tags').options[i].value = element;
+               i++;
+       }
 }
 
 
@@ -102,7 +201,6 @@ function addTimerByID(sRef,eventID,justplay){
        }
 }
 
-
 function incomingTimerAddResult(request){
        debug("[incomingTimerAddResult] called");
        if(request.readyState == 4){
@@ -114,10 +212,9 @@ function incomingTimerAddResult(request){
                }else{
                        notify(result.getStateText(), result.getState());
                }
-       }               
+       }
 }
 
-
 function loadTimerList(){
        doRequest(url_timerlist, incomingTimerList, false);     
 }
@@ -174,7 +271,6 @@ function incomingTimerList(request){
        }
 }
 
-
 function repeatedReadable(num) {
        num = Number(num);
        if(num === 0) {
@@ -182,7 +278,7 @@ function repeatedReadable(num) {
        }
        
        var retVal = "";
-       var Repeated = [];
+       var Repeated = {};
        Repeated["Mo-Su"] =127;
        Repeated["Mo-Fr"] = 31;
        Repeated["Su"] =    64;
@@ -196,7 +292,7 @@ function repeatedReadable(num) {
        for(rep in Repeated) {
                if(rep.toString() != 'extend') {
                        var check = Number(Repeated[rep]);
-                       if(check <= num) {
+                       if(!(~num & check)) {
                                num -= check;
                                if(retVal === '') {
                                        retVal += rep.toString();
@@ -209,7 +305,6 @@ function repeatedReadable(num) {
        return retVal;
 }
 
-
 function delTimer(sRef, begin, end, servicename, title, description, readyFunction){
        debug("[delTimer] sRef("+sRef+"),begin("+begin+"),end("+end+"),servicename("+servicename+"),title("+title+"),description("+description+")");
        var result = confirm(
@@ -229,7 +324,6 @@ function delTimer(sRef, begin, end, servicename, title, description, readyFuncti
        return false;
 }
 
-
 function incomingTimerDelResult(request){
        debug("[incomingTimerDelResult] called");
        if(request.readyState == 4){
@@ -240,7 +334,6 @@ function incomingTimerDelResult(request){
        }               
 }
 
-
 function loadTimerFormNow() {
        var now = new Date();
        addTimerEditFormArray.year = now.getFullYear();
@@ -256,7 +349,6 @@ function loadTimerFormNow() {
        addTimerEditFormArray.justplay = "0";
        addTimerEditFormArray.channel = "";
        addTimerEditFormArray.channelName = "";
-       addTimerEditFormArray.channelSort = "tv";
        addTimerEditFormArray.name = "";
        addTimerEditFormArray.description = "";
        addTimerEditFormArray.dirname = "";
@@ -267,13 +359,12 @@ function loadTimerFormNow() {
        
        addTimerEditFormArray.beginOld = 0;
        addTimerEditFormArray.endOld = 0;
-       
+       addTimerEditFormArray.eventID = 0;
        
        debug("[loadTimerFormNow] done");
        loadTimerFormTags();
 }
 
-
 function loadTimerEditForm(justplay, begin, end, repeated, channel, channelName, name, description, dirname, tags, afterEvent, deleteOldOnSave, eit) {
        debug('[loadTimerEditForm] justplay: ' + justplay + ',begin: ' + begin + ',end: ' + end + ',repeated: ' + repeated + ',channel: ' + channel + ',name: ' + name +',description: ' + description +',dirname: ' + dirname +',tags: ' + tags + ',afterEvent: ' + afterEvent + ',deleteOldOnSave: ' + deleteOldOnSave);
        var start = new Date(Number(begin)*1000);
@@ -288,9 +379,8 @@ function loadTimerEditForm(justplay, begin, end, repeated, channel, channelName,
        addTimerEditFormArray.emin = stopp.getMinutes();
        
        addTimerEditFormArray.justplay = String(justplay);
-       addTimerEditFormArray.channel = decodeURIComponent(String(channel));
+       addTimerEditFormArray.channel = String(channel);
        addTimerEditFormArray.channelName = String(channelName);
-       addTimerEditFormArray.channelSort = "";
        addTimerEditFormArray.name = String(name);
        addTimerEditFormArray.description = String(description);
        addTimerEditFormArray.dirname = String(dirname);
@@ -310,32 +400,34 @@ function loadTimerEditForm(justplay, begin, end, repeated, channel, channelName,
 }
 
 function loadTimerFormTags() {
-       doRequest(url_getTags, incomingTimerFormTags, false);
+       doRequest(url_gettags, incomingTimerFormTags, false);
 }
 
 function incomingTimerFormTags(request){
        debug("[incomingTimerFormTags] called");
        if(request.readyState == 4){
-               var result = new SimpleXMLResult(getXML(request));
-               addTimerEditFormArray.tagsList = (typeof(result.getStateText()) != 'undefined' ? result.getStateText().split(" ") : []);
+               var result = new SimpleXMLList(getXML(request));
+               addTimerEditFormArray.tagsList = result.getList();
                loadTimerFormLocations();
        }               
 }
 
 function loadTimerFormLocations() {
-       doRequest(url_getLocations, incomingTimerFormLocations, false);
+       doRequest(url_getlocations, incomingTimerFormLocations, false);
 }
 
 function incomingTimerFormLocations(request){
        debug("[incomingTimerFormLocations] called");
        if(request.readyState == 4){
-               var result = new SimpleXMLResult(getXML(request));
-               addTimerEditFormArray.locationsList = (typeof(result.getStateText()) != 'undefined' ? result.getStateText().split(" ") : ["/hdd/movie"]);
+               var result = new SimpleXMLList(getXML(request));
+               addTimerEditFormArray.locationsList = result.getList();
+                if (addTimerEditFormArray.locationsList.length == 0) {
+                       addTimerEditFormArray.locationsList = ["/hdd/movie"];
+               }
                loadTimerFormChannels();
        }               
 }
 
-
 // startin to load for TV
 function loadTimerFormChannels() {
        if(addTimerEditFormArray.TVListFilled === 1 && addTimerEditFormArray.RadioListFilled === 1) {
@@ -343,12 +435,10 @@ function loadTimerFormChannels() {
        } else if(addTimerEditFormArray.TVListFilled === 1 && addTimerEditFormArray.RadioListFilled === 0) {
                addTimerListFormatTV();
        } else {
-               var favorites = '1%3A7%3A1%3A0%3A0%3A0%3A0%3A0%3A0%3A0%3AFROM%20BOUQUET%20%22userbouquet.favourites.tv%22%20ORDER%20BY%20bouquet';
-               doRequest(url_getServices+favorites, addTimerListFormatTV, false);
+               doRequest(url_getServices+encodeURIComponent(bouquetsTv), addTimerListFormatTV, false);
        }
 }
 
-
 function addTimerListFormatTV(request) {
        if(addTimerEditFormArray.RadioListFilled === 0) {
                if(request.readyState == 4){
@@ -356,7 +446,7 @@ function addTimerListFormatTV(request) {
                        var tv = {};
                        for ( var i = 0; i < services.length ; i++){
                                var reference = services[i];
-                               tv[reference.servicereference] = reference.servicename;
+                               tv[reference.getServiceReference()] = reference.getServiceName();
                        }
                        addTimerEditFormArray.TVListFilled = 1;
                        addTimerEditFormArray.TVList = tv;
@@ -365,34 +455,33 @@ function addTimerListFormatTV(request) {
        if(addTimerEditFormArray.RadioListFilled == 1) {
                loadTimerForm();
        } else {
-               var favorites = '1%3A7%3A1%3A0%3A0%3A0%3A0%3A0%3A0%3A0%3AFROM%20BOUQUET%20%22userbouquet.favourites.radio%22%20ORDER%20BY%20bouquet';
-               doRequest(url_getServices+favorites, addTimerListFormatRadio, false);
+               doRequest(url_getServices+encodeURIComponent(bouquetsRadio), addTimerListFormatRadio, false);
        }
 }
 
-
 function addTimerListFormatRadio(request) {
        if(request.readyState == 4){
                var services = new ServiceList(getXML(request)).getArray();
                var radio = {};
                for ( var i = 0; i < services.length ; i++){
                        var reference = services[i];
-                       radio[reference.servicereference] = reference.servicename;
+                       radio[reference.getServiceReference()] = reference.getServiceName();
                }
                addTimerEditFormArray.RadioListFilled = 1;
                addTimerEditFormArray.RadioList = radio;
        }
+       addTimerEditFormArray.currBouquetName = "";
+       addTimerEditFormArray.currBouquetList = {};
        loadTimerForm();
 }
 
-
 function loadTimerForm(){
 
        var Action = {};
        Action["0"] = "Record";
        Action["1"] = "Zap";
        
-       var Repeated = [];
+       var Repeated = {};
        Repeated["1"] =  "mo";
        Repeated["2"] = "tu";
        Repeated["4"] =  "we";
@@ -415,53 +504,13 @@ function loadTimerForm(){
        addTimerEditFormArray.description = (typeof(addTimerEditFormArray.description) != 'undefined') ? addTimerEditFormArray.description : '';
        addTimerEditFormArray.description = (addTimerEditFormArray.description === '') ? ' ' : addTimerEditFormArray.description;
 
-       var channelObject = addTimerEditFormArray.TVList;
-       if(     addTimerEditFormArray.channelSort === 'tv') {
-               // already set
-       } else if( addTimerEditFormArray.channelSort === 'radio') {
-               channelObject = addTimerEditFormArray.RadioList;
-       } else {
-               var found = 0;
-               for( element in addTimerEditFormArray.TVList) {
-                       if( element == addTimerEditFormArray.channel) {
-                               found = 1;
-                               break;
-                       }
-               }
-               if(found === 0) {
-                       for( element in addTimerEditFormArray.RadioList) {
-                               if( element == addTimerEditFormArray.channel) {
-                                       channelObject = addTimerEditFormArray.RadioList;
-                                       found = 1;
-                                       break;
-                               }
-                       }
-               }
-               if(found === 0) {
-                       addTimerEditFormArray.TVList[addTimerEditFormArray.channel] = addTimerEditFormArray.channelName;
-               }
-       }
-       
-       var dashString = "------";
-       
-       channelObject[dashString] = "- Bouquets -";
-       
-       var listeNeu = new ServiceList(getXML(doRequestMemory[url_getServices+encodeURIComponent(bouquetsTv)])).getArray();
-       if(addTimerEditFormArray.channelSort == "radio") {
-               listeNeu = new ServiceList(getXML(doRequestMemory[url_getServices+encodeURIComponent(bouquetsRadio)])).getArray();
-       }
-       
-       for (i = 1; i < listeNeu.length; i++) {
-               element = listeNeu[i];
-               channelObject[String(dashString+i)] = "---";
-               channelObject[element.getServiceReference()] = element.getServiceName();
-       }
+       var channelObject = addTimerFormPrepareChannelMenu(addTimerEditFormArray.TVList, addTimerEditFormArray.RadioList);
 
        var locationsObject = {};
        for (i = 0; i < addTimerEditFormArray.locationsList.length; i++) {
                str = addTimerEditFormArray.locationsList[i];
                locationsObject[str] = str;
-        }
+       }
 
        var tagsObject = addTimerFormPrepareTagsMenu(addTimerEditFormArray.tags);
 
@@ -496,23 +545,8 @@ function loadTimerForm(){
        var listerHtml = RND(tplAddTimerForm, namespace);
        $('BodyContent').innerHTML = listerHtml;
        */
-       
-       // Empty some stuff, but keep others to have the performance
-       var tmp1 = addTimerEditFormArray.RadioList;
-       var tmp2 = addTimerEditFormArray.TVList;
-       var tmp3 = addTimerEditFormArray.locationsList;
-       var tmp4 = addTimerEditFormArray.tagsList;
-       addTimerEditFormArray = [];
-       addTimerEditFormArray.deleteOldOnSave = 0;
-       addTimerEditFormArray.RadioList = tmp1;
-       addTimerEditFormArray.TVList = tmp2;
-       addTimerEditFormArray.locationsList = tmp3;
-       addTimerEditFormArray.tagsList = tmp4;
-       addTimerEditFormArray.TVListFilled = 1;
-       addTimerEditFormArray.RadioListFilled = 1;
 }
 
-
 function createOptions(start, end, number) {
        var namespace =[];
        
@@ -527,12 +561,10 @@ function createOptions(start, end, number) {
        return namespace;
 }
 
-
 function createOptionList(object, selected) {
        var namespace = Array();
        var i = 0;
-       
-       for(var element in object) {            
+       for(var element in object) {
                var txt = String(object[element]);
                var sel = " ";
                
@@ -552,13 +584,20 @@ function createOptionList(object, selected) {
        return namespace;
 }
 
-
 function createOptionListRepeated(Repeated, repeated) {
        num = Number(repeated);
-               
+       
        list = [1, 2, 4, 8, 16, 32, 64, 31, 127];
        namespace = [];
-       
+       checked = [];
+
+       for(var i = 0; i < list.length; i++) {
+               checked[i] = " ";
+               if (!(~num & list[list.length-1-i])) {
+                       num -= list[list.length-1-i];
+                       checked[i] = "checked";
+               }
+       }
        for(var i = 0; i < list.length; i++) {
                txt = String(Repeated[String(list[i])]);
                if( String(Repeated[String(list[i])]) == "mf") {
@@ -568,21 +607,16 @@ function createOptionListRepeated(Repeated, repeated) {
                } else {
                        txt = txt.substr(0,1).toUpperCase() + txt.substr(1,1);
                }
-               checked = " ";
-               if (!(~num & list[i])) {
-                       checked = "checked";
-               }
                namespace[i] = { 'id': Repeated[String(list[i])],
                        'name': Repeated[String(list[i])],
                        'value': list[i],
                        'txt': txt,
-                       'checked': checked
+                       'checked': checked[list.length-1-i]
                };
        }
        return namespace;
 }
 
-
 function sendAddTimer() {
        debug("[sendAddTimer]" + "parentChannel:" +$('channel').value);
        
@@ -596,26 +630,6 @@ function sendAddTimer() {
                        end += 86400;
                }
 
-               repeated = 0;
-               if( $('ms').checked ) {
-                       repeated = 127;
-               } else if($('mf').checked) {
-                       repeated = 31;
-                       if($('sa').checked) {
-                               repeated += ownLazyNumber($('sa').value);
-                       }
-                       if($('su').checked) {
-                               repeated += ownLazyNumber($('su').value);
-                       }
-               } else {
-                       check = ['mo', 'tu', 'we', 'th', 'fr'];
-                       for(i = 0; i < check.length; i++) {
-                               if($(check[i]).checked) {
-                                       repeated += Number($(check[i]).value);
-                               }
-                       }
-               }
-       
                descriptionClean = ($('descr').value == " " || $('descr').value == "N/A") ? "" : $('descr').value;
                nameClean = ($('name').value == " " || $('name').value == "N/A") ? "" : $('name').value;
                
@@ -628,6 +642,7 @@ function sendAddTimer() {
 
                dirname = $('dirname').value;
                tags = $('tags').value;
+
                repeated = 0;
                if($('ms').checked) {
                        repeated = ownLazyNumber($('ms').value);
index ef0021d..4a5fd67 100644 (file)
@@ -28,6 +28,9 @@ var currentBouquet = bouquetsTv;
 var updateBouquetItemsPoller = '';
 var updateCurrentPoller = setInterval(updateItems, 7500);
 
+var currentLocation = "/hdd/movie";
+var locationsList = [];
+var tagsList = [];
 
 var boxtype = "";
 
@@ -880,6 +883,69 @@ function initChannelList(){
 
 
 // Movies
+function initMovieList(){
+       // get videodirs, last_videodir, and all tags
+       doRequest(url_getcurrlocation, initMovieList1, false);
+}
+
+function initMovieList1(request){
+       if(request.readyState == 4){
+               result  = new SimpleXMLList(getXML(request));
+               currentLocation = result.getList()[0];
+               doRequest(url_getlocations, initMovieList2, false);
+       }
+}
+
+function initMovieList2(request){
+       if(request.readyState == 4){
+               result  = new SimpleXMLList(getXML(request));
+               locationsList = result.getList();
+                if (locationsList.length == 0) {
+                       locationsList = ["/hdd/movie"];
+               }
+               doRequest(url_gettags, initMovieList3, false);
+       }
+}
+
+function initMovieList3(request){
+       if(request.readyState == 4){
+               result  = new SimpleXMLList(getXML(request));
+               tagsList = result.getList();
+       }
+}
+
+function createOptionList2(lst, selected) {
+       var namespace = Array();
+       var i = 0;
+        found = false;
+        for (i=0; i<lst.length; i++) {
+                if (lst[i] == selected) {
+                        found = true;
+                }
+        }
+        if (!found) {
+                lst = [selected].concat(lst);
+       }
+       for (i=0; i<lst.length; i++) {
+                namespace[i] = {
+                       'value': lst[i],
+                       'txt': lst[i],
+                       'selected': (lst[i] == selected ? "selected" : " ")};
+       }
+
+       return namespace;
+}
+
+function loadMovieNav(){
+       // fill in menus
+       var namespace = {
+                       dirname: createOptionList2(locationsList, currentLocation),
+                       tags: createOptionList2(tagsList, "")
+                       };
+       data = namespace;
+       processTpl('tplNavMovies', data, 'navContent');
+}
+
 function incomingMovieList(request){
        if(request.readyState == 4){
                
@@ -913,13 +979,15 @@ function incomingMovieList(request){
        }               
 }
 
-
-function loadMovieList(tag){
+function loadMovieList(loc, tag){
+       if(typeof(loc) == 'undefined'){
+               loc = currentLocation;
+       }
        if(typeof(tag) == 'undefined'){
                tag = '';
        }
-       debug("[loadMovieList] Loading movies with tag '"+tag+"'");
-       doRequest(url_movielist+tag, incomingMovieList, false);
+       debug("[loadMovieList] Loading movies in location '"+loc+"' with tag '"+tag+"'");
+       doRequest(url_movielist+"?dirname="+loc+"&tag="+tag, incomingMovieList, false);
 }
 
 
@@ -929,7 +997,7 @@ function incomingDelMovieResult(request) {
                var result = new SimpleXMLResult(getXML(request));
                if(result.getState()){
                        notify(result.getStateText(), result.getState());
-                       loadMovieList('');
+                       loadMovieList();
                }else{
                        notify(result.getStateText(), result.getState());
                }
@@ -1493,9 +1561,15 @@ function getBouquets(sRef){
  * @param title - The title to set for the navigation
  */
 function reloadNav(template, title){
-               setAjaxLoad('navContent');
-               processTpl(template, null, 'navContent');
-               setNavHd(title);
+       setAjaxLoad('navContent');
+       processTpl(template, null, 'navContent');
+       setNavHd(title);
+}
+
+function reloadNavDynamic(fnc, title){
+       setAjaxLoad('navContent');
+       setNavHd(title);
+       fnc();
 }
 
 function getBouquetsTv(){
@@ -1601,6 +1675,10 @@ function switchMode(mode){
                        break;
                
                case "Movies":
+                       //The Navigation
+                       reloadNavDynamic(loadMovieNav, 'Movies');
+                       
+                       //The Movie list
                        loadContentDynamic(loadMovieList, 'Movies');
                        break;
                        
@@ -1667,6 +1745,7 @@ function init(){
        
        initChannelList();
        initVolumePanel();
+       initMovieList();
        
        updateItems();
 }
index 749085f..e5f359c 100644 (file)
@@ -5,13 +5,16 @@
                                                                <td class="${movie.cssclass}" >
                                                                        <table class="sListItem">
                                                                                <tr>
-                                                                                       <td style="width: 740px;">                                                                              
+                                                                                       <td style="width: 640px;">                                                                              
                                                                                                <div class="sListSName">
                                                                                                        <a href="#" id="${movie.servicereference}" onclick="{ zap(this.id); }" class="sListSLink" title="Play ${movie.title}">
                                                                                                                ${movie.title} - ${movie.description} (${movie.servicename})
                                                                                                        </a>
                                                                                                </div>
                                                                                        </td>
+                                                                                       <td style="width: 100px;font-size: 12px;text-align: right;padding-right: 15px;">
+                                                                                               ${movie.tags}
+                                                                                       </td>
                                                                                        <td>
                                                                                                <a target="_blank" href="/web/ts.m3u?file=${movie.filelink}">
                                                                                                        <img src="/web-data/img/screen.png" title="Stream ${movie.title}" border="0">
diff --git a/webinterface/src/web-data/tpl/default/tplNavMovies.htm b/webinterface/src/web-data/tpl/default/tplNavMovies.htm
new file mode 100644 (file)
index 0000000..d9926bb
--- /dev/null
@@ -0,0 +1,28 @@
+
+<table id="navTimer" class="navTable">
+       <tr>
+               <td>Movie Location:</td>
+       </tr>
+       <tr>
+               <td>
+                       <select id="dirname" name="dirname" size="1" onchange="javascript:loadMovieList($('dirname').options[$('dirname').selectedIndex].value,$('tags').options[$('tags').selectedIndex].value)">
+                               {for d in dirname}
+                               <option value="${d.value}" ${d.selected}>${d.txt}</option>
+                               {/for}
+                       </select>
+               </td>
+       </tr>
+       <tr>
+               <td>Tag Filter:</td>
+       </tr>
+       <tr>
+               <td>
+                       <select id="tags" name="tags" size="1" onchange="javascript:loadMovieList($('dirname').options[$('dirname').selectedIndex].value,$('tags').options[$('tags').selectedIndex].value)">
+                               {for t in tags}
+                               <option value="${t.value}" ${t.selected}>${t.txt}</option>
+                               {/for}
+                       </select>
+               </td>
+       </tr>
+</table>
+
index 0653dd7..19ff04a 100644 (file)
@@ -15,7 +15,7 @@
                                                                                </tr>
                                                                                <tr>
                                                                                        <td colspan="3">&nbsp;</td>
-                                                                                       <td colspan="3">Note: For recurring events date is not required.</td>
+                                                                                       <td colspan="3" style="font-size: 12px;">Note: For recurring events date is not required.</td>
                                                                                </tr>
                                                                                <tr>
                                                                                        <td colspan="3">Date:</td>
@@ -73,7 +73,7 @@
                                                                                </tr>
                                                                                <tr>
                                                                                        <td colspan="3">&nbsp;</td>
-                                                                                       <td colspan="3">Note: For one-time events the "days" field doesn't have to be specified.</td>
+                                                                                       <td colspan="3" style="font-size: 12px;">Note: For one-time events the "days" field doesn't have to be specified.</td>
                                                                                </tr>
                                                                                <tr>
                                                                                        <td colspan="3">Days:</td>
                                                                                </tr>
                                                                                <tr>
                                                                                        <td colspan="3">Channel:</td>
-                                                                                       <td>
-                                                                                               <p><input type="radio" id="tvradio" name="tvradio" value="tv" checked onchange="javascript:addTimerFormChangeType();">TV</p>
-                                                                                               <p><input type="radio" name="tvradio" value="radio" onchange="javascript:addTimerFormChangeType();">Radio</p>
-                                                                                       <td>
-                                                                                               <p>Channel:</p>
-                                                                                               <select name="channel" id="channel" size="1" onchange="javascript:timerFormExtendChannellist($('channel').options[$('channel').selectedIndex].value)">
+                                                                                       <td colspan="3">
+                                                                                               <select name="channel" id="channel" size="1" onchange="javascript:addTimerFormChangeChannel($('channel').options[$('channel').selectedIndex].value)">
                                                                                                        {for c in channel}
                                                                                                        <option value="${c.value}" ${c.selected}>${c.txt}</option>
                                                                                                        {/for}  
                                                                                <tr>
                                                                                        <td colspan="3">Location:</td>
                                                                                        <td colspan="3">
-                                                                                               <select id="dirname" name="dirname" size="1" onchange="javascript:addTimerFormChangeLocation($('dirname').options[$('dirname').selectedIndex].value)">
+                                                                                               <select id="dirname" name="dirname" size="1">
                                                                                                        {for d in dirname}
                                                                                                        <option value="${d.value}" ${d.selected}>${d.txt}</option>
                                                                                                        {/for}
diff --git a/webinterface/src/web/getcurrlocation.xml b/webinterface/src/web/getcurrlocation.xml
new file mode 100644 (file)
index 0000000..04fad54
--- /dev/null
@@ -0,0 +1,5 @@
+<e2:screen name="LocationsAndTagsWebScreen">&lt;?xml version="1.0" encoding="UTF-8"?>
+       <e2:element source="CurrentLocation">
+               <e2:convert type="web:TextToHTML" />
+       </e2:element>
+</e2:screen>
\ No newline at end of file
index 1856442..fc15a5b 100644 (file)
@@ -9,7 +9,7 @@
 &lt;body>
 
 &lt;table width='100%'>
-               <e2:element source="MovieList" id="tag"><e2:convert type="web:ListFiller" >
+               <e2:element source="MovieList" id="dirname,tag"><e2:convert type="web:ListFiller" >
                &lt;tr>
                        &lt;td class="pageHeader"><e2:item name="Title" filter="xml"/>&lt;/td>
                &lt;/tr>
index 7da0663..1e5286d 100644 (file)
@@ -1,6 +1,6 @@
 <e2:screen name="MovieWebScreen"><e2:element source="localip" macro="ipadress" />#EXTM3U
 #EXTVLCOPT--http-reconnect=true
-<e2:element source="MovieList" id="tag">
+<e2:element source="MovieList" id="dirname,tag">
 <e2:convert type="web:ListFiller" >#EXTINF:-1,<e2:item name="ServiceName"/>: <e2:item name="Title" filter="xml"/>
 http://<e2:item macro="ipadress" filter="xml" /><e2:item name="Filename" filter="urlencode"/>
 </e2:convert><e2:convert type="web:TextToHTML" /></e2:element>
index be68a1f..4511844 100644 (file)
@@ -5,7 +5,7 @@
                &lt;link>http://<e2:element source="localip" filter="xml" />&lt;/link>
                &lt;description>Eine automatische Liste aller Enigma2 Aufnahmen&lt;/description>
                &lt;generator>Enigma2 WebInterface &lt;/generator>
-               <e2:element source="MovieList" id="tag"><e2:convert type="web:ListFiller" >
+               <e2:element source="MovieList" id="dirname,tag"><e2:convert type="web:ListFiller" >
                &lt;item>
                        &lt;title><e2:item name="Title" filter="xml"/>&lt;/title>
                        &lt;description>Kanal: <e2:item name="ServiceName" filter="xml"/>\n
index b3fdf37..0969ec4 100644 (file)
@@ -1,5 +1,5 @@
 <e2:screen name="MovieWebScreen">&lt;?xml version="1.0" encoding="UTF-8"?>
-&lt;e2movielist><e2:element source="MovieList" id="tag"><e2:convert type="web:ListFiller" >
+&lt;e2movielist><e2:element source="MovieList" id="dirname,tag"><e2:convert type="web:ListFiller" >
        &lt;e2movie>
                &lt;e2servicereference><e2:item name="ServiceReference"  filter="xml"/>&lt;/e2servicereference>
                &lt;e2title><e2:item name="Title"  filter="xml"/>&lt;/e2title>
index e838897..80b24ad 100644 (file)
 </tr><tr>
        <td colspan="3">Date:</td><td colspan="3">
        <select name="year" size="1">
-               <e2:element source="WAPFillOptionListYear" id="year,sRef,begin"><e2:convert type="web:ListFiller" >
+               <e2:element source="WAPFillOptionListYear" id="year,sRef,begin,syear"><e2:convert type="web:ListFiller" >
                &lt;option value=&quot;<e2:item name="Value"/>&quot; <e2:item name="Selected"/>><e2:item name="Name"/>&lt;/option>
                </e2:convert>
        <e2:convert type="web:TextToHTML"/></e2:element>
        </select>.
        <select name="month">
-               <e2:element source="WAPFillOptionListMonth" id="month,sRef,begin"><e2:convert type="web:ListFiller" >
+               <e2:element source="WAPFillOptionListMonth" id="month,sRef,begin,smonth"><e2:convert type="web:ListFiller" >
                &lt;option value=&quot;<e2:item name="Value"/>&quot; <e2:item name="Selected"/>><e2:item name="Name"/>&lt;/option>
                </e2:convert>
        <e2:convert type="web:TextToHTML"/></e2:element>
        </select>.
        <select name="day">
-               <e2:element source="WAPFillOptionListDay" id="day,sRef,begin"><e2:convert type="web:ListFiller" >
+               <e2:element source="WAPFillOptionListDay" id="day,sRef,begin,sday"><e2:convert type="web:ListFiller" >
                &lt;option value=&quot;<e2:item name="Value"/>&quot; <e2:item name="Selected"/>><e2:item name="Name"/>&lt;/option>
                </e2:convert>
        <e2:convert type="web:TextToHTML"/></e2:element>
                <e2:convert type="web:TextToHTML"/></e2:element>
        </td>
 </tr><tr>
-       <td colspan="3">Channel:</td>
-       <td><p><input type="radio" name="tvradio" value="tv"/>TV</p>
-       <p><input type="radio" name="tvradio" value="radio"/>Radio</p></td>
-       <td><p>Channel:</p>
+       <td colspan="3">Channel:</td><td colspan="3">
        <select name="sRef">
        <e2:element source="WAPServiceList" id="sRef,bouquet"><e2:convert type="web:ListFiller" >
                &lt;option value=&quot;<e2:item name="Value"/>&quot; <e2:item name="Selected"/>><e2:item name="Name"/>&lt;/option>
index 6e7677e..2a0c5ca 100644 (file)
@@ -139,6 +139,7 @@ class ServiceWebScreen(WebScreen):
 class LocationsAndTagsWebScreen(WebScreen):
        def __init__(self, session, request):
                WebScreen.__init__(self, session, request)
+               self["CurrentLocation"] = LocationsAndTags(session,LocationsAndTags.CURRLOCATION)
                self["Locations"] = LocationsAndTags(session,LocationsAndTags.LOCATIONS)
                self["Tags"] = LocationsAndTags(session,LocationsAndTags.TAGS)