From: Anders Holst Date: Mon, 16 Feb 2009 21:04:48 +0000 (+0000) Subject: Reformed channel selection, and added location and tag filter to movie list X-Git-Url: http://code.vuplus.com/gitweb/?a=commitdiff_plain;h=89ed9f0762064a8ddc7b9fe90276b862c9fa7842;p=vuplus_dvbapp-plugin Reformed channel selection, and added location and tag filter to movie list --- diff --git a/webinterface/src/WebComponents/Sources/LocationsAndTags.py b/webinterface/src/WebComponents/Sources/LocationsAndTags.py index 58d17bd..23343d6 100644 --- a/webinterface/src/WebComponents/Sources/LocationsAndTags.py +++ b/webinterface/src/WebComponents/Sources/LocationsAndTags.py @@ -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 = "\n" - if result: - xml += "True\n" - else: - xml += "False\n" - xml += "%s\n" % text - xml += "\n" + lst = self.result + xml = "\n" + if self.result: + for ele in self.result: + xml += "%s\n"%ele + xml += "\n" return xml text = property(getText) diff --git a/webinterface/src/WebComponents/Sources/Movie.py b/webinterface/src/WebComponents/Sources/Movie.py index d5507b0..4182da3 100644 --- a/webinterface/src/WebComponents/Sources/Movie.py +++ b/webinterface/src/WebComponents/Sources/Movie.py @@ -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 diff --git a/webinterface/src/WebComponents/Sources/Timer.py b/webinterface/src/WebComponents/Sources/Timer.py index 3e2e9c6..95391ba 100644 --- a/webinterface/src/WebComponents/Sources/Timer.py +++ b/webinterface/src/WebComponents/Sources/Timer.py @@ -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") diff --git a/webinterface/src/WebComponents/Sources/WAPfunctions.py b/webinterface/src/WebComponents/Sources/WAPfunctions.py index 292efe0..8071582 100644 --- a/webinterface/src/WebComponents/Sources/WAPfunctions.py +++ b/webinterface/src/WebComponents/Sources/WAPfunctions.py @@ -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 diff --git a/webinterface/src/web-data/config.js b/webinterface/src/web-data/config.js index 45947f0..8efaf01 100644 --- a/webinterface/src/web-data/config.js +++ b/webinterface/src/web-data/config.js @@ -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"; diff --git a/webinterface/src/web-data/manifest.json b/webinterface/src/web-data/manifest.json index 6fc147c..3a93318 100644 --- a/webinterface/src/web-data/manifest.json +++ b/webinterface/src/web-data/manifest.json @@ -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" }, diff --git a/webinterface/src/web-data/objects.js b/webinterface/src/web-data/objects.js index 470e7a1..8af66f2 100644 --- a/webinterface/src/web-data/objects.js +++ b/webinterface/src/web-data/objects.js @@ -232,7 +232,7 @@ function Movie(xml){ try{ this.tags = xml.getElementsByTagName('e2tags').item(0).firstChild.data; } catch (e) { - this.tags = "no tags"; // no whitespaces... tags will be splittet later + this.tags = " "; // 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"] = "-- "+currbouquet+" --"; + for (element in currblist) { + result[element] = currblist[element]; } } + result[""] = "-- 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 == "" || newchannel == "") { + // 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[""] = ""; - 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 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[""] = ""; - } - 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[""] = ""; + } + 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); diff --git a/webinterface/src/web-data/tools.js b/webinterface/src/web-data/tools.js index ef0021d..4a5fd67 100644 --- a/webinterface/src/web-data/tools.js +++ b/webinterface/src/web-data/tools.js @@ -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 - + - + @@ -73,7 +73,7 @@ - + @@ -85,12 +85,8 @@ - - - -
+ + ${movie.tags} + diff --git a/webinterface/src/web-data/tpl/default/tplNavMovies.htm b/webinterface/src/web-data/tpl/default/tplNavMovies.htm new file mode 100644 index 0000000..d9926bb --- /dev/null +++ b/webinterface/src/web-data/tpl/default/tplNavMovies.htm @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + diff --git a/webinterface/src/web-data/tpl/default/tplTimerEdit.htm b/webinterface/src/web-data/tpl/default/tplTimerEdit.htm index 0653dd7..19ff04a 100644 --- a/webinterface/src/web-data/tpl/default/tplTimerEdit.htm +++ b/webinterface/src/web-data/tpl/default/tplTimerEdit.htm @@ -15,7 +15,7 @@
 Note: For recurring events date is not required.Note: For recurring events date is not required.
Date:
 Note: For one-time events the "days" field doesn't have to be specified.Note: For one-time events the "days" field doesn't have to be specified.
Days:
Channel: -

TV

-

Radio

-
-

Channel:

-
+
Location: - {for d in dirname} {/for} diff --git a/webinterface/src/web/getcurrlocation.xml b/webinterface/src/web/getcurrlocation.xml new file mode 100644 index 0000000..04fad54 --- /dev/null +++ b/webinterface/src/web/getcurrlocation.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> + + + + \ No newline at end of file diff --git a/webinterface/src/web/movielist.html.xml b/webinterface/src/web/movielist.html.xml index 1856442..fc15a5b 100644 --- a/webinterface/src/web/movielist.html.xml +++ b/webinterface/src/web/movielist.html.xml @@ -9,7 +9,7 @@ <body> <table width='100%'> - + <tr> <td class="pageHeader"></td> </tr> diff --git a/webinterface/src/web/movielist.m3u.xml b/webinterface/src/web/movielist.m3u.xml index 7da0663..1e5286d 100644 --- a/webinterface/src/web/movielist.m3u.xml +++ b/webinterface/src/web/movielist.m3u.xml @@ -1,6 +1,6 @@ #EXTM3U #EXTVLCOPT--http-reconnect=true - + #EXTINF:-1,: http:// diff --git a/webinterface/src/web/movielist.rss.xml b/webinterface/src/web/movielist.rss.xml index be68a1f..4511844 100644 --- a/webinterface/src/web/movielist.rss.xml +++ b/webinterface/src/web/movielist.rss.xml @@ -5,7 +5,7 @@ <link>http://</link> <description>Eine automatische Liste aller Enigma2 Aufnahmen</description> <generator>Enigma2 WebInterface </generator> - + <item> <title></title> <description>Kanal: \n diff --git a/webinterface/src/web/movielist.xml b/webinterface/src/web/movielist.xml index b3fdf37..0969ec4 100644 --- a/webinterface/src/web/movielist.xml +++ b/webinterface/src/web/movielist.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<e2movielist> +<e2movielist> <e2movie> <e2servicereference></e2servicereference> <e2title></e2title> diff --git a/webinterface/src/web/wap/timeredit.html.xml b/webinterface/src/web/wap/timeredit.html.xml index e838897..80b24ad 100644 --- a/webinterface/src/web/wap/timeredit.html.xml +++ b/webinterface/src/web/wap/timeredit.html.xml @@ -23,19 +23,19 @@
Date: . .
Channel:

TV

-

Radio

Channel:

+
Channel: