Package: enigma2-plugin-extensions-webinterface
-Version: 1.5beta2
+Version: 1.5rc1
Description: Control enigma2 with your Browser
Section: extra
Priority: optional
* Remove all os.system calls
-* Fix potential security issues in all shell operations (deleting unwanted files etc)
-** done for IPKG.py, Screengrab.py
-* Decide whether the MediaPlayer Menu should stay and if how.
-* Fix some smaller IE Bugs
-** Exception on Movielist
-* Move Timer Cleaning to Python Side
\ No newline at end of file
+* Fix Timer Pre-/Posttime
+* Unixtimestamps in EPG Requests
+* Implement Timer Sanity Check with proper Handling on Webinterface side
\ No newline at end of file
if hdd is not None:
if self.type == self.MODEL:
- return "%s" %hdd.model()
+ return "%s" % hdd.model()
elif self.type == self.CAPACITY:
- return "%s" %hdd.capacity()
+ return "%s" % hdd.capacity()
elif self.type == self.FREE:
if hdd.free() > 1024:
free = float(hdd.free()) / float(1024)
- return "%.3f GB" %free
+ return "%.3f GB" % free
else:
- return "%i MB" %hdd.free()
+ return "%i MB" % hdd.free()
return _("N/A")
def __init__(self, type):
Converter.__init__(self, type)
self.type = {
- "Name" : self.NAME,
+ "Name" : self.NAME,
"Mac" : self.MAC,
"Dhcp" : self.DHCP,
"Ip" : self.IP,
"Gateway" : self.GATEWAY,
- "Netmask" : self.NETMASK,
+ "Netmask" : self.NETMASK,
}[type]
@cached
return _("N/A")
text = property(getText)
-
\ No newline at end of file
+
RESULTTEXT = 1
def __init__(self, type):
- Convert.__init__(self, type)
- self.type = { "result" : self.RESULT,
- "resulttext" : self.RESULTTEXT
+ Converter.__init__(self, type)
+ self.type = { "Result" : self.RESULT,
+ "ResultText" : self.RESULTTEXT
}[type]
@cached
result = self.source.result
if self.type is self.RESULT:
- return result.result
+ return str(result[0])
elif self.type is self.RESULTTEXT:
- return result.resulttext
+ return str(result[1])
else:
- return _("N/A")
+ return "N/A"
- text = property(getText)
\ No newline at end of file
+ text = property(getText)
--- /dev/null
+from Components.Converter.Converter import Converter
+from Components.Element import cached
+
+class VolumeInfo(Converter, object):
+ RESULT = 0
+ RESULTTEXT = 1
+ VOLUME = 2
+ ISMUTED = 3
+
+ def __init__(self, type):
+ Converter.__init__(self, type)
+ self.type = { "Result" : self.RESULT,
+ "ResultText" : self.RESULTTEXT,
+ "Volume" : self.VOLUME,
+ "IsMuted" : self.ISMUTED
+ }[type]
+
+ @cached
+ def getText(self):
+ volume = self.source.volume
+
+ if self.type is self.RESULT:
+ return str(volume[0])
+ elif self.type is self.RESULTTEXT:
+ return str(volume[1])
+ elif self.type is self.VOLUME:
+ return str(volume[2])
+ elif self.type is self.ISMUTED:
+ return str(volume[3])
+ else:
+ return "N/A"
+
+ text = property(getText)
# Code for the AutoTimerPlugin
from Components.Sources.Source import Source
-class AT( Source ):
+class AT(Source):
LIST = 0
WRITE = 1
- def __init__(self, session, func = LIST):
+ def __init__(self, session, func=LIST):
print "AutoTimer: init: ", func
Source.__init__(self)
self.func = func
timer.getExcludedShort(),
timer.getExcludedDescription(),
timer.getExcludedDays(),
- ))
+ ))
#includes
innerList.extend((
timer.getIncludedShort(),
timer.getIncludedDescription(),
timer.getIncludedDays(),
- ))
+ ))
# services
innerList.extend((
timer.getServices(), # 11
timer.getBouquets() # 12
- ))
+ ))
if timer.hasTimespan():
innerList.extend((
timer.getTimespanBegin(), # 13
timer.getTimespanEnd() # 14
- ))
+ ))
else:
innerList.extend(("", "")) # 13, 14
innerList.extend((
timer.getCounter(), # 16
timer.getCounterLeft() # 17
- ))
+ ))
else:
innerList.extend((0, 0)) # 16, 17
timer.getLastBegin(), # 21
timer.getJustplay(), # 22
timer.getAvoidDuplicateDescription() # 23
- ))
+ ))
if timer.hasTags():
innerList.append(timer.getTags()) # 24
return returnList
- def writeTimer(self,param):
- print "writeTimer: ",param
+ def writeTimer(self, param):
+ print "writeTimer: ", param
# TODO: fix error handling
return
- def command(self,param):
- print "command: ",param
+ def command(self, param):
+ print "command: ", param
return
param = int(param)
list = property(timerList)
lut = {"Name": 0
- ,"Match": 1
- ,"AfterEvent": 2
- ,"ExcludedTitle": 3
- ,"ExcludedShort": 4
- ,"ExcludedDescription": 5
- ,"ExcludedDays": 6
- ,"IncludedTitle": 7
- ,"IncludedShort": 8
- ,"IncludedDescription": 9
- ,"IncludedDays": 10
- ,"Services": 11
- ,"Bouquets": 12
- ,"TimespanBegin": 13
- ,"TimespanEnd": 14
- ,"Duration": 15
- ,"Counter": 16
- ,"CounterLeft": 17
- ,"CounterLimit": 18
- ,"Destination": 19
- ,"CounterFormatString": 20
- ,"LastBegin": 21
- ,"Justplay": 22
- ,"AvoidDuplicateDescription": 23
- ,"Tags": 24
- ,"Enabled": 25
- ,"toggleDisabledIMG": 26
+ , "Match": 1
+ , "AfterEvent": 2
+ , "ExcludedTitle": 3
+ , "ExcludedShort": 4
+ , "ExcludedDescription": 5
+ , "ExcludedDays": 6
+ , "IncludedTitle": 7
+ , "IncludedShort": 8
+ , "IncludedDescription": 9
+ , "IncludedDays": 10
+ , "Services": 11
+ , "Bouquets": 12
+ , "TimespanBegin": 13
+ , "TimespanEnd": 14
+ , "Duration": 15
+ , "Counter": 16
+ , "CounterLeft": 17
+ , "CounterLimit": 18
+ , "Destination": 19
+ , "CounterFormatString": 20
+ , "LastBegin": 21
+ , "Justplay": 22
+ , "AvoidDuplicateDescription": 23
+ , "Tags": 24
+ , "Enabled": 25
+ , "toggleDisabledIMG": 26
}
from Components.config import config
-class About( Source):
+class About(Source):
def __init__(self, session):
Source.__init__(self)
self.session = session
- def handleCommand(self,cmd):
- self.result = False,"unknown command"
+ def handleCommand(self, cmd):
+ self.result = False, "unknown command"
def command(self):
- list = []
- list.append(about.getVersionString())
-
- #Get Network Info
def ConvertIP(list):
if(len(list) == 4):
- retstr = "%s.%s.%s.%s" %(list[0], list[1], list[2], list[3])
+ retstr = "%s.%s.%s.%s" % (list[0], list[1], list[2], list[3])
else:
retstr = "0.0.0.0"
return retstr
+
+ list = []
if iNetwork.getNumberOfAdapters > 0:
iface = iNetwork.getAdapterList()[0]
- print "[WebComponents.About] iface: %s" %iface
+ print "[WebComponents.About] iface: %s" % iface
list.append(iNetwork.getAdapterAttribute(iface, "mac"))
list.append(iNetwork.getAdapterAttribute(iface, "dhcp"))
list.append(ConvertIP(iNetwork.getAdapterAttribute(iface, "ip")))
list.append("N/A")
list.append("N/A")
- #Get FrontProcessor Version
- fp_version = getFPVersion()
- if fp_version is None:
- fp_version = "?"
- else:
- fp_version = str(fp_version)
- list.append(fp_version)
-
- #Get Tuner Info
- niminfo = ""
- for nim in nimmanager.nimList():
- info = nim.split(":")
-
- niminfo += "\n\t\t\t<e2nim>\n"
- niminfo += "\t\t\t\t<name>%s</name>\n" %(info[0])
- niminfo += "\t\t\t\t<type>%s</type>\n" %(info[1])
- niminfo += "\t\t\t</e2nim>"
-
- list.append(niminfo)
-
- #Get HDD Info
- if len(harddiskmanager.hdd):
- hdddata = harddiskmanager.hdd[0] # TODO, list more than the first harddisc if there are more than one. but this requires many changes in the way the webif generates the responses
- hddinfo = "\n\t\t\t<model>"+hdddata.model()+"</model>\n"
- hddinfo += "\t\t\t<capacity>"+hdddata.capacity()+"</capacity>\n"
- hddinfo += "\t\t\t<free>"+str(hdddata.free())+" MB</free>"
- list.append(hddinfo)
- else:
- hddinfo = "\n\t\t\t<model>N/A</model>\n"
- hddinfo += "\t\t\t<capacity>-</capacity>\n"
- hddinfo += "\t\t\t<free>-</free>"
- list.append(hddinfo)
-
- #Get Service Info
- service = self.session.nav.getCurrentService()
-
- if self.session.nav.getCurrentlyPlayingServiceReference() is not None:
- Name = ServiceReference(self.session.nav.getCurrentlyPlayingServiceReference()).getServiceName()
- else:
- Name = "N/A"
- list.append(Name)
-
- if service is not None:
- svinfo = service.info()
- svfeinfo = service.frontendInfo()
- else:
- svinfo = None
- svfeinfo = None
-
- # Get Service Info
- if self.session.nav.getCurrentlyPlayingServiceReference() is not None:
- list.append(svinfo.getInfoString(iServiceInformation.sProvider))
-
- aspect = svinfo.getInfo(iServiceInformation.sAspect)
- if aspect in ( 1, 2, 5, 6, 9, 0xA, 0xD, 0xE ):
- aspect = "4:3"
- else:
- aspect = "16:9"
- list.append(aspect)
-
- width = svinfo and svinfo.getInfo(iServiceInformation.sVideoWidth) or -1
- height = svinfo and svinfo.getInfo(iServiceInformation.sVideoHeight) or -1
- videosize = "%dx%d" %(width, height)
- list.append(videosize)
-
- list.append(hex(svinfo.getInfo(iServiceInformation.sNamespace)))
-
- # Get PIDs
- list.append(svinfo.getInfo(iServiceInformation.sVideoPID))
- list.append(svinfo.getInfo(iServiceInformation.sAudioPID))
- list.append(svinfo.getInfo(iServiceInformation.sPCRPID))
- list.append(svinfo.getInfo(iServiceInformation.sPMTPID))
- list.append(svinfo.getInfo(iServiceInformation.sTXTPID))
- list.append(svinfo.getInfo(iServiceInformation.sTSID))
- list.append(svinfo.getInfo(iServiceInformation.sONID))
- list.append(svinfo.getInfo(iServiceInformation.sSID))
- else:
- list.append("N/A")
- list.append("N/A")
- list.append("N/A")
- list.append("N/A")
- list.append("N/A")
- list.append("N/A")
- list.append("N/A")
- list.append("N/A")
- list.append("N/A")
- list.append("N/A")
- list.append("N/A")
- list.append("N/A")
-
- ## webifversion
- list.append(config.plugins.Webinterface.version.value)
-
- #box model
- fp = open("/proc/stb/info/model")
- model = fp.read().lstrip().rstrip()
- fp.close()
- list.append(model)
- #please remove unneeded debugoutpu while commiting #print list
-
- listR = []
- listR.append(list)
-
- return listR
-
- text = property(command)
+ return [list]
+
list = property(command)
- lut = {"enigmaVersion": 0
- ,"lanMac": 1
- ,"lanDHCP": 2
- ,"lanIP": 3
- ,"lanMask": 4
- ,"lanGW": 5
- ,"fpVersion": 6
- ,"tunerInfo": 7
- ,"hddInfo": 8
- ,"serviceName": 9
- ,"serviceProvider": 10
- ,"serviceAspect": 11
- ,"serviceVideosize": 12
- ,"serviceNamespace": 13
- ,"vPID": 14
- ,"aPID": 15
- ,"pcrID": 16
- ,"pmtPID": 17
- ,"txtPID": 18
- ,"tsID": 19
- ,"onID": 20
- ,"sid": 21
- ,"WebIfVersion": 22
- ,"model": 23
- }
+ lut = { "lanMac": 0
+ , "lanDHCP": 1
+ , "lanIP": 2
+ , "lanMask": 3
+ , "lanGW": 4
+ }
from Components.Sources.Source import Source
from Tools.ISO639 import LanguageCodes
-class AudioTracks( Source ):
+class AudioTracks(Source):
GET = 0
SET = 1
- text="False"
+ text = "False"
def __init__(self, session, func=GET):
self.cmd = None
except ValueError:
cmd = -1
- print "COMMAND is %s" %self.cmd
+ print "COMMAND is %s" % self.cmd
if self.session.nav.getCurrentService().audioTracks().getNumberOfTracks() > cmd and cmd >= 0:
audio.selectTrack(cmd)
return "Success"
currentTrack = audio.getCurrentTrack()
if n > 0:
- print "[AudioTracks.py] got %s Audiotracks!" %(n)
+ print "[AudioTracks.py] got %s Audiotracks!" % (n)
for x in range(n):
i = audio.getTrackInfo(x)
from ServiceReference import ServiceReference
from enigma import eServiceCenter, eServiceReference, eEPGCache
-class EPG( Source):
- BOUQUETNOW=0
- BOUQUETNEXT=1
- SERVICENOW=2
- SERVICENEXT=3
- SERVICE=4
- TITLE=5
- BOUQUET=6
-
- def __init__(self, navcore, func=BOUQUETNOW):
+class EPG(Source):
+ BOUQUETNOW = 0
+ BOUQUETNEXT = 1
+ SERVICENOW = 2
+ SERVICENEXT = 3
+ SERVICE = 4
+ TITLE = 5
+ BOUQUET = 6
+
+ def __init__(self, navcore, func=BOUQUETNOW, endtm=False):
self.func = func
Source.__init__(self)
self.navcore = navcore
self.epgcache = eEPGCache.getInstance()
- self.command = None
-
+ self.command = None
+ self.endtime = endtm
+
def handleCommand(self, cmd):
self.command = cmd
def getServiceEPGNext(self, ref):
return self.getEPGNowNext(ref, 1, True)
- def getEPGNowNext(self, ref, type, service = False):
+ def getEPGNowNext(self, ref, type, service=False):
print "[WebComponents.EPG] getting EPG NOW/NEXT", ref
if service:
return events
return []
- def getEPGofService(self, ref, options = 'IBDTSERN'):
+ def getEPGofService(self, ref, options='IBDTSERN'):
print "getting EPG of Service", ref
- events = self.epgcache.lookupEvent([options ,(ref,0,-1,-1)]);
+ events = self.epgcache.lookupEvent([options , (ref, 0, -1, -1)]);
if events:
+ if self.endtime:
+ list = self.insertEndTime(events)
+ return list
+
return events
return []
+ def insertEndTime(self, events):
+ list = []
+ for event in events:
+ i = 0
+ evt = []
+ end = event[1] + event[2]
+ for item in event:
+ if i == 3:
+ evt.append(end)
+ i += 1
+
+ evt.append(item)
+ i += 1
+
+ list.append(evt)
+
+ return list
+
def getEPGofBouquet(self, param):
print "[WebComponents.EPG] getting EPG for Bouquet", param
def searchEvent(self, needle):
print "[WebComponents.EPG] searching EPG: ", needle
- events = self.epgcache.search(('IBDTSERN',256,eEPGCache.PARTIAL_TITLE_SEARCH,needle,1));
+ events = self.epgcache.search(('IBDTSERN', 256, eEPGCache.PARTIAL_TITLE_SEARCH, needle, 1));
if events:
return events
return []
-
+
+ def getLut(self):
+ if self.endtime:
+ lut = {
+ "EventID": 0,
+ "TimeStart": 1,
+ "Duration": 2,
+ "TimeEnd": 3,
+ "Title": 4,
+ "Description": 5,
+ "DescriptionExtended": 6,
+ "ServiceReference": 7,
+ "ServiceName": 8
+ }
+ return lut
+ else:
+ lut = {
+ "EventID": 0,
+ "TimeStart": 1,
+ "Duration": 2,
+ "Title": 3,
+ "Description": 4,
+ "DescriptionExtended": 5,
+ "ServiceReference": 6,
+ "ServiceName": 7
+ }
+
+ return lut
+
list = property(do_func)
- lut = {"EventID": 0, "TimeStart": 1,"Duration": 2, "Title": 3, "Description": 4, "DescriptionExtended": 5, "ServiceReference": 6, "ServiceName": 7 }
-
+
+ lut = property(getLut)
+
\ No newline at end of file
from Components.Sources.Source import Source
from Components.NimManager import nimmanager
-
class Frontend(Source, object):
def __init__(self):
Source.__init__(self)
return nims
- list = property(getList)
-
+ list = property(getList)
lut = {
"Name" : 0,
"Type" : 1
- }
\ No newline at end of file
+ }
from Components.Harddisk import harddiskmanager
class Hdd(Source):
- def __init__(self, devicecount = 0):
+ def __init__(self, devicecount=0):
Source.__init__(self)
self.devicecount = devicecount
def getList(self):
disks = []
for hdd in harddiskmanager.hdd:
- model = "%s" %( hdd.model() )
- capacity = "%s" %( hdd.capacity() )
+ model = "%s" % (hdd.model())
+ capacity = "%s" % (hdd.capacity())
if hdd.free() <= 1024:
- free = "%i MB" %( hdd.free() )
+ free = "%i MB" % (hdd.free())
else:
free = float(hdd.free()) / float(1024)
- free = "%.3f GB" %free
+ free = "%.3f GB" % free
disk = [model, capacity, free]
disks.append(disk)
return disks
- list = property(getList)
-
+ list = property(getList)
lut = { "Model" : 0,
"Capacity" : 1,
"Free" : 2
}
-
def destroy(self):
Source.destroy(self)
self.func = func
Source.__init__(self)
self.session = session
- self.result = False,"one two three four unknown command"
+ self.result = [ False, "one two three four unknown command" ]
def handleCommand(self, cmd):
if self.func is self.CURRLOCATION:
- self.result = [self.getCurrentLocation()]
+ self.result = self.getCurrentLocation()
elif self.func is self.LOCATIONS:
self.result = self.getLocations()
elif self.func is self.TAGS:
return tags
def getText(self):
- self.handleCommand(None)
- lst = self.result
- xml = "<e2simplexmllist>\n"
+ self.handleCommand(None)
+
if self.result:
- for ele in self.result:
- xml += "<e2simplexmlitem>%s</e2simplexmlitem>\n"%ele
- xml += "</e2simplexmllist>\n"
- return xml
+ return str(self.result)
+ else:
+ return ""
def getList(self):
self.handleCommand(None)
return list
text = property(getText)
- list = property(getList)
\ No newline at end of file
+ simplelist = property(getList)
from Components.FileList import FileList
from os import path as os_path
-class MP( Source):
+class MP(Source):
LIST = 0
PLAY = 1
COMMAND = 3
WRITEPLAYLIST = 4
- def __init__(self, session,func = LIST):
+ def __init__(self, session, func=LIST):
Source.__init__(self)
self.func = func
self.session = session
error = "unknown command (%s)" % func
- self.result = [[error,error,error]]
+ self.result = [[error, error, error]]
- def handleCommand(self,cmd):
+ def handleCommand(self, cmd):
self.cmd = cmd
if self.func is self.LIST:
self.result = self.getFileList(cmd)
except ImportError, ie:
return False
- def getFileList(self,param):
- print "getFileList:",param
+ def getFileList(self, param):
+ print "getFileList:", param
returnList = []
if param["path"] == "playlist":
# TODO: Fix dummy return if unable to load mp
if not self.tryOpenMP():
- returnList.append(["empty","True","playlist"])
+ returnList.append(["empty", "True", "playlist"])
return returnList
mp = self.session.mediaplayer
if len(mp.playlist) != 0:
serviceRefList = mp.playlist.getServiceRefList()
for count in range(len(serviceRefList)):
- returnList.append([serviceRefList[count].toString(),"True","playlist"])
+ returnList.append([serviceRefList[count].toString(), "True", "playlist"])
else:
- returnList.append(["empty","True","playlist"])
+ returnList.append(["empty", "True", "playlist"])
return returnList
else:
matchingPattern = param["types"]
- filelist = FileList(param["path"], showDirectories = True, showFiles = True, matchingPattern = matchingPattern, useServiceRef = useServiceRef, isTop = False)
+ filelist = FileList(param["path"], showDirectories=True, showFiles=True, matchingPattern=matchingPattern, useServiceRef=useServiceRef, isTop=False)
list = filelist.getFileList()
for x in list:
if useServiceRef == True:
if x[0][1] == False: #isDir
- returnList.append([x[0][0].toString(),x[0][1],param["path"]])
+ returnList.append([x[0][0].toString(), x[0][1], param["path"]])
else:
- returnList.append([x[0][0],x[0][1],param["path"]])
+ returnList.append([x[0][0], x[0][1], param["path"]])
else:
if x[0][1] == False: #isDir
- returnList.append([param["path"]+x[0][0],x[0][1],param["path"]])
+ returnList.append([param["path"] + x[0][0], x[0][1], param["path"]])
else:
- returnList.append([x[0][0],x[0][1],param["path"]])
+ returnList.append([x[0][0], x[0][1], param["path"]])
return returnList
- def playFile(self,param):
- print "playFile: ",param
+ def playFile(self, param):
+ print "playFile: ", param
# TODO: fix error handling
if not self.tryOpenMP():
return
mp.playlist.addFile(ref)
#mp.playServiceRefEntry(ref)
- print "len len(mp.playlist.getServiceRefList()): ",len(mp.playlist.getServiceRefList())
+ print "len len(mp.playlist.getServiceRefList()): ", len(mp.playlist.getServiceRefList())
if len(mp.playlist.getServiceRefList()):
- lastEntry = len(mp.playlist.getServiceRefList()) -1
+ lastEntry = len(mp.playlist.getServiceRefList()) - 1
currref = mp.playlist.getServiceRefList()[lastEntry]
if self.session.nav.getCurrentlyPlayingServiceReference() is None or currref != self.session.nav.getCurrentlyPlayingServiceReference():
self.session.nav.playService(mp.playlist.getServiceRefList()[lastEntry])
mp.infoTimerFire()
return
- def writePlaylist(self,param):
- print "writePlaylist: ",param
+ def writePlaylist(self, param):
+ print "writePlaylist: ", param
filename = "playlist/%s.e2pls" % param
from Tools.Directories import resolveFilename, SCOPE_CONFIG
mp = self.session.mediaplayer
mp.playlistIOInternal.save(resolveFilename(SCOPE_CONFIG, filename))
- def command(self,param):
- print "command: ",param
+ def command(self, param):
+ print "command: ", param
# TODO: fix error handling
if not self.tryOpenMP():
list = property(getList)
lut = {"ServiceReference": 0
- ,"IsDirectory": 1
- ,"Root": 2
+ , "IsDirectory": 1
+ , "Root": 2
}
from Screens.MessageBox import MessageBox
from os import system, path
-class Message( Source):
+class Message(Source):
PRINT = 0
ANSWER = 1
yesnoFile = "/tmp/yesno"
- def __init__(self,session, func = PRINT):
+ def __init__(self, session, func=PRINT):
self.cmd = []
self.session = session
self.func = func
Source.__init__(self)
error = "unknown command (%s)" % func
- self.result = [[False,error]]
+ self.res = [False, error]
- def handleCommand(self,cmd):
+ def handleCommand(self, cmd):
self.cmd = cmd
if self.func is self.PRINT:
- self.result = self.printMessage(cmd)
+ self.res = self.printMessage(cmd)
elif self.func is self.ANSWER:
- self.result = self.getYesNoAnswer(cmd)
+ self.res = self.getYesNoAnswer(cmd)
- def printMessage(self,param):
+ def printMessage(self, param):
print "printMessage"
if self.cmd['text'] == "" or self.cmd['text'] is None:
- return [[False, "No Messagetext given"]]
+ return [ False, "No Messagetext given" ]
else:
mtext = self.cmd['text']
try:
typeint = int(self.cmd['type'])
- except ValueError,e:
- return [[False,"type %s is not a number"%self.cmd['type']]]
+ except ValueError, e:
+ return [ False, "type %s is not a number" % self.cmd['type'] ]
if typeint == MessageBox.TYPE_YESNO:
#dont know how to give the result to the webif back
- mtype= MessageBox.TYPE_YESNO
+ mtype = MessageBox.TYPE_YESNO
elif typeint == MessageBox.TYPE_INFO:
- mtype= MessageBox.TYPE_INFO
+ mtype = MessageBox.TYPE_INFO
elif typeint == MessageBox.TYPE_WARNING:
- mtype= MessageBox.TYPE_WARNING
+ mtype = MessageBox.TYPE_WARNING
elif typeint == MessageBox.TYPE_ERROR:
- mtype= MessageBox.TYPE_ERROR
+ mtype = MessageBox.TYPE_ERROR
else:
- return [[ False, "Unsupported Messagetype %s" %self.cmd['type'] ]]
+ return [ False, "Unsupported Messagetype %s" % self.cmd['type'] ]
try:
mtimeout = int(self.cmd['timeout'])
- except ValueError,e:
+ except ValueError, e:
mtimeout = -1
if typeint == MessageBox.TYPE_YESNO:
- self.session.openWithCallback(self.yesNoAnswer, MessageBox, mtext, type = mtype, timeout = mtimeout)
+ self.session.openWithCallback(self.yesNoAnswer, MessageBox, mtext, type=mtype, timeout=mtimeout)
else:
- self.session.open(MessageBox, mtext, type = mtype ,timeout = mtimeout)
+ self.session.open(MessageBox, mtext, type=mtype , timeout=mtimeout)
- return [[True, "Message sent successfully!"]]
+ return [ True, "Message sent successfully!" ]
def yesNoAnswer(self, confirmed):
- print "yesNoAnswer",confirmed
+ print "yesNoAnswer", confirmed
#self.session.messageboxanswer = confirmed
yesnoFile = self.yesnoFile
system(cmdstr)
- def getYesNoAnswer(self,param):
+ def getYesNoAnswer(self, param):
print "getYesNoAnswer"#,self.session.messageboxanswer
yesnoFile = self.yesnoFile
if path.exists(yesnoFile) == True:
file.close()
cmdstr = "rm %s" % yesnoFile
system(cmdstr)
- print "Answer: (%s)"%lines[0]
+ print "Answer: (%s)" % lines[0]
if lines[0] == "yes":
- return [[True,"Answer is YES!"]]
+ return [ True, "Answer is YES!" ]
else:
- return [[True,"Answer is NO!"]]
+ return [ True, "Answer is NO!" ]
else:
- return [[False,"No answer in time"]]
-
- def getResults(self):
- return self.result
-
- list = property(getResults)
- lut = {"Result": 0
- ,"ResultText": 1
- }
-
+ return [ False, "No answer in time" ]
+
+ def getResult(self):
+ return self.res
+
+ result = property(getResult)
from os import stat as os_stat
-class Movie( Source):
+class Movie(Source):
LIST = 0
DEL = 1
TAGS = 2
- def __init__(self, session, movielist, func = LIST):
+ def __init__(self, session, movielist, func=LIST):
Source.__init__(self)
self.func = func
self.session = session
self.movielist = movielist #MovieList(self.root)
self.movielist.load(self.root, None)
self.cmd = ""
- self.result = False, "Missing or Wrong Argument"
+ self.res = [ False, "Missing or Wrong Argument" ]
def handleCommand(self, cmd):
if cmd is not None:
self.cmd = cmd
if self.func is self.DEL:
- self.result = self.delMovie(cmd)
+ self.res = self.delMovie(cmd)
elif self.func is self.LIST:
if cmd['dirname']:
self.root = eServiceReference("2:0:1:0:0:0:0:0:0:0:" + cmd['dirname'])
result = True
if result == False:
- return result, "Could not delete Movie '%s'" %name
+ return [ result, "Could not delete Movie '%s'" % name ]
else:
- return result, "Movie '%s' deleted" %name
+ return [ result, "Movie '%s' deleted" % name ]
- return result, "Illegal Parameter Value: sRef - '%s'" %param
+ return [ result, "Illegal Parameter Value: sRef - '%s'" % param ]
- def command(self):
- self.movielist.reload(root=self.root,filter_tags = self.tagfilter)
- list=[]
+ def getMovieList(self):
+ self.movielist.reload(root=self.root, filter_tags=self.tagfilter)
+ list = []
tag = self.cmd['tag']
tag = tag and tag.lower()
else:
len = "?:??"
else:
- len="disabled"
+ len = "disabled"
- sourceERef =info.getInfoString(serviceref, iServiceInformation.sServiceref)
- sourceRef= ServiceReference(sourceERef)
+ sourceERef = info.getInfoString(serviceref, iServiceInformation.sServiceref)
+ sourceRef = ServiceReference(sourceERef)
event = info.getEvent(serviceref)
ext = event and event.getExtendedDescription() or ""
- filename = "/"+"/".join(serviceref.toString().split("/")[1:])
+ filename = "/" + "/".join(serviceref.toString().split("/")[1:])
if not tag or tag in info.getInfoString(serviceref, iServiceInformation.sTags).lower():
""" add movie only to list, if a given tag is applied to the movie """
])
return list
- def getText(self):
+ def getResult(self):
if self.func is self.DEL:
- (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"
- return xml
- elif self.func is self.TAGS:
- xml = "<e2movietags>\n"
- for tag in self.movielist.tags:
- xml += "<e2movietag>%s</e2movietag>\n"%tag
- xml += "</e2movietags>\n"
- return xml
-
- text = property(getText)
-
- list = property(command)
+ return self.res
+
+ return [ False, "illegal call" ]
+
+
+ result = property(getResult)
+
+ list = property(getMovieList)
lut = {"ServiceReference": 0
- ,"Title": 1
- ,"Description": 2
- ,"Time": 3
- ,"TimeString": 4
- ,"Length": 5
- ,"ServiceName": 6
- ,"Tags": 7
- ,"DescriptionExtended": 8
- ,"Filename": 9
- ,"Filesize": 10
+ , "Title": 1
+ , "Description": 2
+ , "Time": 3
+ , "TimeString": 4
+ , "Length": 5
+ , "ServiceName": 6
+ , "Tags": 7
+ , "DescriptionExtended": 8
+ , "Filename": 9
+ , "Filesize": 10
}
LAN = 0
WLAN = 1
- def __init__(self, device = LAN):
+ def __init__(self, device=LAN):
Source.__init__(self)
if device is self.LAN:
self.iface = "eth0"
def ConvertIP(self, list):
if(len(list) == 4):
- retstr = "%s.%s.%s.%s" %(list[0], list[1], list[2], list[3])
+ retstr = "%s.%s.%s.%s" % (list[0], list[1], list[2], list[3])
else:
retstr = "0.0.0.0"
return retstr
def getInterface(self):
iface = Interface(self.iface)
- iface.mac = iNetwork.getAdapterAttribute(self.iface, "mac")
+ iface.mac = iNetwork.getAdapterAttribute(self.iface, "mac")
iface.dhcp = iNetwork.getAdapterAttribute(self.iface, "dhcp")
iface.ip = self.ConvertIP(iNetwork.getAdapterAttribute(self.iface, "ip"))
iface.netmask = self.ConvertIP(iNetwork.getAdapterAttribute(self.iface, "netmask"))
def destroy(self):
- Source.destroy(self)
\ No newline at end of file
+ Source.destroy(self)
from Components.config import config
from ServiceReference import ServiceReference
-class ParentControl( Source):
+class ParentControl(Source):
def __init__(self, session):
Source.__init__(self)
self.session = session
servicelist = parentalControl.blacklist
for service_ref in servicelist:
- list.append( [str(service_ref),ServiceReference(service_ref).getServiceName()] )
+ list.append([str(service_ref), ServiceReference(service_ref).getServiceName()])
- print "list",list
+ print "list", list
return list
list = property(command)
lut = {"ServiceReference": 0
- ,"ServiceName":1
+ , "ServiceName":1
}
from Components.Sources.Source import Source
class PowerState(Source):
- def __init__(self,session):
+ def __init__(self, session):
self.cmd = None
self.session = session
Source.__init__(self)
def handleCommand(self, cmd):
self.cmd = cmd
- def do_func(self):
+ def getStandby(self):
+ from Screens.Standby import inStandby
+ if inStandby == None:
+ return "false"
+ else:
+ return "true"
+
+ def getText(self):
if self.cmd == "" or self.cmd is None:
- print "[PowerState.py] cmd was empty or None"
- return "error"
+ return self.getStandby()
#-1: get current state
# 0: toggle standby
try:
type = int(self.cmd)
if type == -1:
- from Screens.Standby import inStandby
- if inStandby == None:
- return "false"
- else:
- return "true"
+ return self.getStandby()
elif type == 0:
print "[PowerState.py] Standby 0"
except ValueError:
return "error"
- text = property(do_func)
+ text = property(getText)
from struct import pack
from Components.Sources.Source import Source
-class RemoteControl( Source):
- def __init__(self,session):
+class RemoteControl(Source):
+ def __init__(self, session):
self.cmd = None
self.session = session
Source.__init__(self)
-
+ self.res = [ False, "Missing or wrong argument" ]
+
def handleCommand(self, cmd):
self.cmd = cmd
+ self.res = self.sendEvent()
- def do_func(self):
- list = []
-
+ def sendEvent(self):
if self.cmd == "" or self.cmd is None:
print "[RemoteControl.py] cmd is empty or None"
- return [[False,"Missing or wrong argument"]]
+ return self.res
type = int(self.cmd)
if type <= 0:
print "[RemoteControl.py] command <= 0 (%s)" % type
- return [[False,"the command was not greater 0"]]
+ return [ False, "the command was not > 0" ]
- dataon = pack('iiHHi',0,0,1,type,1)
- dataoff = pack('iiHHi',0,0,1,type,0)
+ dataon = pack('iiHHi', 0, 0, 1, type, 1)
+ dataoff = pack('iiHHi', 0, 0, 1, type, 0)
- fp=open("/dev/input/event1", 'wb')
+ fp = open("/dev/input/event1", 'wb')
fp.write(dataon)
fp.write(dataoff)
fp.close()
print "[RemoteControl.py] command was was sent (%s)" % type
- return [[True, "command was was sent"]]
-
- list = property(do_func)
- lut = {"Result": 0
- ,"ResultText": 1
- }
+ return [ True, "command was was sent" ]
+
+ def getResult(self):
+ return self.res
+
+
+ result = property(getResult)
REMOTETYPE = 6
URI = 7
- def __init__(self, request, what = None):
+ def __init__(self, request, what=None):
Source.__init__(self)
self.request = request
self.what = what
from Screens.ChannelSelection import service_types_tv
from enigma import eServiceReference
-class ServiceListRecursive( Source ):
+class ServiceListRecursive(Source):
FETCH = 0
- def __init__(self, session, func = FETCH):
+ def __init__(self, session, func=FETCH):
Source.__init__(self)
self.session = session
self.xml = ""
self.command = eServiceReference(service_types_tv + ' FROM BOUQUET "bouquets.tv" ORDER BY bouquet')
- def handleCommand(self,cmd):
+ def handleCommand(self, cmd):
self.command = eServiceReference(cmd)
def do_func(self):
return func(self.command)
def buildList(self, ref):
- self.servicelist = ServiceList(ref, command_func = self.getServiceList, validate_commands=False)
+ self.servicelist = ServiceList(ref, command_func=self.getServiceList, validate_commands=False)
list = self.servicelist.getServicesAsList()
for index in range(len(list)):
item = list[index]
subxml = ""
for (ref, name) in sub:
subxml += "\t\t\t<e2service>\n"
- subxml += "\t\t\t\t<e2servicereference>%s</e2servicereference>\n\t\t\t\t<e2servicename>%s</e2servicename>\n" %(self.filterXML(ref), self.filterXML(name))
+ subxml += "\t\t\t\t<e2servicereference>%s</e2servicereference>\n\t\t\t\t<e2servicename>%s</e2servicename>\n" % (self.filterXML(ref), self.filterXML(name))
subxml += "\t\t\t</e2service>\n"
else:
self.xml += "\t\t<e2service>\n"
bouquet = False
- self.xml += "\t\t<e2servicereference>%s</e2servicereference>\n\t\t<e2servicename>%s</e2servicename>\n" %(self.filterXML(item[0]), self.filterXML(item[1]))
+ self.xml += "\t\t<e2servicereference>%s</e2servicereference>\n\t\t<e2servicename>%s</e2servicename>\n" % (self.filterXML(item[0]), self.filterXML(item[1]))
if bouquet:
self.xml += "\t\t<e2servicelist>\n"
from enigma import eDVBDB
from Components.Sources.Source import Source
-class ServiceListReload( Source):
+class ServiceListReload(Source):
BOTH = 0
LAMEDB = 1
USERBOUQUETS = 2
Source.__init__(self)
self.session = session
self.eDVBDB = eDVBDB.getInstance()
+ self.res = False
- def handleCommand(self,cmd):
+ def handleCommand(self, cmd):
try:
self.cmd = int(cmd)
if self.cmd is self.BOTH:
self.reloadLameDB()
self.reloadUserBouquets()
- self.result = [['true','reloaded both']]
+ self.res = [ True, 'reloaded both' ]
elif self.cmd is self.LAMEDB:
- self.result = self.reloadLameDB()
- self.result = [['true','reloaded lamedb']]
+ self.res = self.reloadLameDB()
+ self.res = [ True, 'reloaded lamedb' ]
elif self.cmd is self.USERBOUQUETS:
- self.result = self.reloadUserBouquets()
- self.result = [['true','reloaded bouquets']]
- else:
- self.result = False # results in message generated in getList
- except Exception,e:
- self.result = False # results in message generated in getList
+ self.res = self.reloadUserBouquets()
+ self.res = [ True, 'reloaded bouquets' ]
+ except Exception, e:
+ pass
def reloadLameDB(self):
- print "[WebInterface] reloading lamedb"
+ print "[ServiceListReload] reloading lamedb"
self.eDVBDB.reloadServicelist()
def reloadUserBouquets(self):
- print "[WebInterface] reloading userbouquets"
+ print "[ServiceListReload] reloading userbouquets"
self.eDVBDB.reloadBouquets()
- def getList(self):
- try:
- if self.result:
- return self.result
- else:
- raise AttributeError
- except AttributeError:
- return [['false',"missing or wrong parameter mode [%i=both, %i=lamedb only, %i=userbouqets only]"%(self.BOTH,self.LAMEDB,self.USERBOUQUETS) ]]
+ def getResult(self):
+ if self.res:
+ return self.res
+ else:
+ return [ False, "missing or wrong parameter mode [%i=both, %i=lamedb only, %i=userbouqets only]" % (self.BOTH, self.LAMEDB, self.USERBOUQUETS) ]
- list = property(getList)
- lut = {"result": 0
- ,"mode": 1
- }
+ result = property(getResult)
from Components.Sources.Source import Source
class Settings(Source):
- def __init__(self,session):
+ def __init__(self, session):
self.cmd = []
self.session = session
Source.__init__(self)
self.cmd = cmd
def do_func(self):
- result=[]
+ result = []
self.pickle_this("config", config.saved_value, result)
return result
if isinstance(val, dict):
self.pickle_this(name, val, result)
elif isinstance(val, tuple):
- result.append([name,val[0]])
+ result.append([name, val[0]])
else:
- result.append([name,val])
+ result.append([name, val])
list = property(do_func)
lut = {"Name": 0
- ,"Value": 1
+ , "Value": 1
}
def __init__(self, session):
Source.__init__(self)
self.session = session
-
+
+ def handleCommand(self, cmd):
+ if cmd is not None:
+ #TODO some logic here
+ pass
+
def command(self):
print "SubServices was called"
list = []
list0 = []
currentServiceRef = self.session.nav.getCurrentlyPlayingServiceReference()
if currentServiceRef is not None:
- list.append( [currentServiceRef.toString(),
+ list.append([currentServiceRef.toString(),
ServiceReference(currentServiceRef).getServiceName()]
- )
+ )
currentService = self.session.nav.getCurrentService()
subservices = currentService and currentService.subServices()
else:
list.append(["N/A", "N/A"])
- print "SubServices is returning list ",list
+ print "SubServices is returning list ", list
return list
list = property(command)
- lut = {"ServiceReference": 0
- ,"Name": 1
+ lut = {"ServiceReference": 0,
+ "Name": 1
}
from xml.sax.saxutils import unescape
from time import time, strftime, localtime, mktime
-class Timer( Source):
+class Timer(Source):
LIST = 0
ADDBYID = 1
ADD = 2
RECNOW = 7
CLEANUP = 8
- def __init__(self, session, func = LIST):
+ def __init__(self, session, func=LIST):
self.func = func
Source.__init__(self)
self.session = session
self.recordtimer = session.nav.RecordTimer
self.epgcache = eEPGCache.getInstance()
- self.result = False, "unknown command"
+ self.res = [ False, "unknown command" ]
def handleCommand(self, cmd):
if self.func is self.ADDBYID:
- self.result = self.addTimerByEventID(cmd)
+ self.res = self.addTimerByEventID(cmd)
self.writeTimerList()
elif self.func is self.ADD:
- self.result = self.editTimer(cmd)
+ self.res = self.editTimer(cmd)
self.writeTimerList()
elif self.func is self.TVBROWSER:
- self.result = self.tvBrowser(cmd)
+ self.res = self.tvBrowser(cmd)
self.writeTimerList()
elif self.func is self.DEL:
- self.result = self.delTimer(cmd)
+ self.res = self.delTimer(cmd)
self.writeTimerList()
elif self.func is self.CHANGE:
- self.result = self.editTimer(cmd)
+ self.res = self.editTimer(cmd)
self.writeTimerList()
elif self.func is self.WRITE:
- self.result = self.writeTimerList(force=True)
+ self.res = self.writeTimerList(force=True)
elif self.func is self.RECNOW:
- self.result = self.recordNow(cmd)
+ self.res = self.recordNow(cmd)
elif self.func is self.CLEANUP:
- self.result = self.cleanupTimer()
+ self.res = self.cleanupTimer()
else:
- self.result = False, "Unknown function: '%s'" %(self.func)
+ self.res = [ False, "Unknown function: '%s'" % (self.func) ]
def cleanupTimer(self):
print "[WebComponents.Timer] cleanupTimer"
self.session.nav.RecordTimer.cleanup()
- return True, "List of Timers has been cleaned"
+ return [ True, "List of Timers has been cleaned" ]
def delTimer(self, param):
if param.has_key('sRef'):
service_ref = ServiceReference(param['sRef'])
else:
- return False, "Missing Parameter: sRef"
+ return [ False, "Missing Parameter: sRef" ]
if param.has_key('begin'):
begin = int(float(param['begin']))
else:
- return False, "Missing Parameter: begin"
+ return [ False, "Missing Parameter: begin" ]
if param.has_key('end'):
end = int(float(param['end']))
else:
- return False, "Missing Parameter: end"
+ return [ False, "Missing Parameter: end" ]
try:
for timer in self.recordtimer.timer_list + self.recordtimer.processed_timers:
if str(timer.service_ref) == str(service_ref) and int(timer.begin) == begin and int(timer.end) == end:
self.recordtimer.removeEntry(timer)
- return True, "The timer '%s' has been deleted successfully" %(timer.name)
+ return True, "The timer '%s' has been deleted successfully" % (timer.name)
except:
- return False, "The timer has NOT been deleted"
+ return [ False, "The timer has NOT been deleted" ]
return False, "No matching Timer found"
"""
print "[WebComponents.Timer] tvbrowser"
- listDate = ['year','month','day','shour','smin','ehour','emin']
+ listDate = ['year', 'month', 'day', 'shour', 'smin', 'ehour', 'emin']
for element in listDate:
if param[element] is None:
- if param['s'+element] is None:
- return False,"%s missing"%element
+ if param['s' + element] is None:
+ return [ False, "%s missing" % element ]
else:
- param[element] = int(param['s'+element])
+ param[element] = int(param['s' + element])
else:
param[element] = int(param[element])
- param['begin'] = int(mktime( (param['year'], param['month'], param['day'], param['shour'], param['smin'], 0, 0, 0, -1) ) )
- param['end'] = int(mktime( (param['year'], param['month'], param['day'], param['ehour'], param['emin'], 0, 0, 0, -1) ) )
+ param['begin'] = int(mktime((param['year'], param['month'], param['day'], param['shour'], param['smin'], 0, 0, 0, -1)))
+ param['end'] = int(mktime((param['year'], param['month'], param['day'], param['ehour'], param['emin'], 0, 0, 0, -1)))
if param['end'] < param['begin']:
param['end'] += 86400
for element in listDate:
del param[element]
if param['sRef'] is None:
- return False, "Missing Parameter: sRef"
+ return [ False, "Missing Parameter: sRef" ]
else:
takeApart = param['sRef'].split('|')
if len(takeApart) > 1:
repeated = int(param.get('repeated') or 0)
if repeated == 0:
- list = ["mo","tu","we","th","fr","sa","su","ms","mf"]
+ list = ["mo", "tu", "we", "th", "fr", "sa", "su", "ms", "mf"]
for element in list:
if param.has_key(element):
number = param[element] or 0
del param['command']
return self.editTimer(param)
else:
- return False, "Unknown command: '%s'" %param['command']
+ return [ False, "Unknown command: '%s'" % param['command'] ]
def recordNow(self, param):
- ret = (True, "Instant record for current Event started")
+ ret = [ True, "Instant record for current Event started" ]
limitEvent = True
if param == "undefinitely" or param == "infinite":
else:
if limitEvent:
- ret = (False, "No event found! Not recording!")
+ ret = [ False, "No event found! Not recording!" ]
if ret[0]:
location = config.movielist.last_videodir.value
- timer = RecordTimerEntry(serviceref, begin, end, name, description, eventid, False, False, 0, dirname = location)
+ timer = RecordTimerEntry(serviceref, begin, end, name, description, eventid, False, False, 0, dirname=location)
timer.dontSave = True
self.recordtimer.record(timer)
if param.has_key('sRef'):
service_ref = ServiceReference(param['sRef'])
else:
- return False, "Missing Parameter: sRef"
+ return [ False, "Missing Parameter: sRef" ]
repeated = int(param.get('repeated') or 0)
if not param.has_key('begin'):
- return False, "Missing Parameter: begin"
+ return [ False, "Missing Parameter: begin" ]
begin = int(float(param['begin']))
if not param.has_key('end'):
- return False, "Missing Parameter: end"
+ return [ False, "Missing Parameter: end" ]
end = int(float(param['end']))
tm = time()
elif tm > begin and tm < end and repeated == 0:
begin = time()
elif repeated == 0:
- return False, "Illegal Parameter value for Parameter begin : '%s'" %begin
+ return [ False, "Illegal Parameter value for Parameter begin : '%s'" % begin ]
if param.has_key('name'):
name = param['name']
else:
- return False, "Missing Parameter: name"
+ return [ False, "Missing Parameter: name" ]
if param.has_key('description'):
description = param['description'].replace("\n", " ")
else:
- return False, "Missing Parameter: description"
+ return [ False, "Missing Parameter: description" ]
disabled = False #Default to: Enabled
if param.has_key('disabled'):
justplay = False #Default to: Record
if param.has_key('justplay'):
if param['justplay'] == "1":
- justplay = True
+ justplay = True
afterEvent = 3 #Default to Afterevent: Auto
if param.has_key('afterevent'):
- if ( param['afterevent'] == "0") or (param['afterevent'] == "1") or (param['afterevent'] == "2"):
+ if (param['afterevent'] == "0") or (param['afterevent'] == "1") or (param['afterevent'] == "2"):
afterEvent = int(param['afterevent'])
dirname = config.movielist.last_timer_videodir.value
if param.has_key('channelOld') and param['channelOld'] != '':
channelOld = ServiceReference(param['channelOld'])
else:
- return False, "Missing Parameter: channelOld"
+ return [ False, "Missing Parameter: channelOld" ]
# We do need all of the following Parameters, too, for being able of finding the Timer.
# Therefore so we can neither use default values in this part nor can we
# continue if a parameter is missing
if param.has_key('beginOld'):
beginOld = int(param['beginOld'])
else:
- return False, "Missing Parameter: beginOld"
+ return [ False, "Missing Parameter: beginOld" ]
if param.has_key('endOld'):
endOld = int(param['endOld'])
else:
- return False, "Missing Parameter: endOld"
+ return [ False, "Missing Parameter: endOld" ]
#let's try to find the timer
try:
#send the changed timer back to enigma2 and hope it's good
self.session.nav.RecordTimer.timeChanged(timer)
print "[WebComponents.Timer] editTimer: Timer changed!"
- return True, "Timer %s has been changed!" %(timer.name)
+ return [ True, "Timer %s has been changed!" % (timer.name) ]
except:
#obviously some value was not good, return an error
- return False, "Changing the timer for '%s' failed!" %name
+ return [ False, "Changing the timer for '%s' failed!" % name ]
- return False, "Could not find timer '%s' with given start and end time!" %name
+ return [ False, "Could not find timer '%s' with given start and end time!" % name ]
#Try adding a new Timer
try:
#Create a new instance of recordtimerentry
- timer = RecordTimerEntry(service_ref, begin, end, name, description, 0, disabled, justplay, afterEvent, dirname = dirname, tags = tags)
+ timer = RecordTimerEntry(service_ref, begin, end, name, description, 0, disabled, justplay, afterEvent, dirname=dirname, tags=tags)
timer.repeated = repeated
#add the new timer
self.recordtimer.record(timer)
- return True, "Timer added successfully!"
+ return [ True, "Timer added successfully!" ]
except:
#something went wrong, most possibly one of the given paramater-values was wrong
- return False, "Could not add timer '%s'!" %name
+ return [ False, "Could not add timer '%s'!" % name ]
- return False, "Unexpected Error"
+ return [ False, "Unexpected Error" ]
def addTimerByEventID(self, param):
print "[WebComponents.Timer] addTimerByEventID", param
if param['sRef'] is None:
- return False, "Missing Parameter: sRef"
+ return [ False, "Missing Parameter: sRef" ]
if param['eventid'] is None:
- return False, "Missing Parameter: eventid"
+ return [ False, "Missing Parameter: eventid" ]
justplay = False
if param['justplay'] is not None:
tags = unescape(param['tags']).split(' ')
epgcache = eEPGCache.getInstance()
- event = epgcache.lookupEventId(eServiceReference(param['sRef']),int(param['eventid']))
+ event = epgcache.lookupEventId(eServiceReference(param['sRef']), int(param['eventid']))
if event is None:
- return False, "EventId not found"
+ return [ False, "EventId not found" ]
(begin, end, name, description, eit) = parseEvent(event)
timer = RecordTimerEntry(ServiceReference(param['sRef']), begin , end, name, description, eit, False, justplay, AFTEREVENT.NONE, dirname=location, tags=tags)
self.recordtimer.record(timer)
- return True, "Timer '%s' added" %(timer.name)
+ return [ True, "Timer '%s' added" % (timer.name) ]
def writeTimerList(self, force=False):
# is there an easier and better way? :\
if config.plugins.Webinterface.autowritetimer.value or force:
print "Timer.py writing timer to flash"
self.session.nav.RecordTimer.saveTimer()
- return True, "TimerList was saved "
+ return [ True, "TimerList has been saved " ]
else:
- return False, "TimerList was not saved "
+ return [ False, "TimerList has not been saved " ]
- def getText(self):
- print "[WebComponents.Timer] result: ", 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"
- return xml
+ def getResult(self):
+ return self.res
- text = property(getText)
+ result = property(getResult)
## part for listfiller requests
- def command(self):
+ def getList(self):
timerlist = []
for item in self.recordtimer.timer_list + self.recordtimer.processed_timers:
timer.append(item.cancelled)
if item.eit is not None:
- event = self.epgcache.lookupEvent(['EX',("%s" % item.service_ref ,2,item.eit)])
+ event = self.epgcache.lookupEvent(['EX', ("%s" % item.service_ref , 2, item.eit)])
if event and event[0][0] is not None:
timer.append(event[0][0])
else:
return timerlist
- list = property(command)
+ list = property(getList)
lut = {
"ServiceReference":0,
"ServiceName": 1,
from Components.VolumeControl import VolumeControl
class Volume(Source):
- def __init__(self,session, command_default="state"):
+ def __init__(self, session, command_default="state"):
self.cmd = command_default
Source.__init__(self)
global globalActionMap # hackalert :)
self.actionmap = globalActionMap
self.volctrl = eDVBVolumecontrol.getInstance() # this is not nice
- #self.volcontrol = VolumeControl(session)
+ self.vol = [ True, "State", self.volctrl.getVolume(), self.volctrl.isMuted() ]
def handleCommand(self, cmd):
self.cmd = cmd
+ self.vol = self.handleVolume()
- def do_func(self):
+ def handleVolume(self):
list = []
if self.cmd == "state":
list.append(True)
elif self.cmd.startswith("set"):
try:
targetvol = int(self.cmd[3:])
- if targetvol>100:
+ if targetvol > 100:
targetvol = 100
- if targetvol<0:
+ if targetvol < 0:
targetvol = 0
self.volctrl.setVolume(targetvol, targetvol)
list.append("Volume set to %i" % targetvol)
except ValueError: # if cmd was set12NotInt
list.append(False)
- list.append("Wrong parameter format 'set=%s'. Use set=set15 "%self.cmd)
+ list.append("Wrong parameter format 'set=%s'. Use set=set15 " % self.cmd)
else:
list.append(False)
- list.append("Unknown Volume command %s" %self.cmd)
+ list.append("Unknown Volume command %s" % self.cmd)
+
list.append(self.volctrl.getVolume())
list.append(self.volctrl.isMuted())
- return [list]
-
- list = property(do_func)
- lut = {"Result": 0
- ,"ResultText": 1
- ,"Volume": 2
- ,"isMuted": 3
- }
+ return list
+
+ def getVolume(self):
+ return self.vol
+
+ volume = property(getVolume)
from re import sub
from time import strftime, localtime, time
-class WAPfunctions( Source):
+class WAPfunctions(Source):
LISTTIME = 0
REPEATED = 1
SERVICELIST = 2
TAGLIST = 6
DELETEOLD = 7
- lut = {"Name":0
- ,"Value":1
- ,"Selected":2
+ lut = { "Name":0,
+ "Value":1,
+ "Selected":2
}
- def __init__(self, session,func = LISTTIME):
+ def __init__(self, session, func=LISTTIME):
self.func = func
Source.__init__(self)
self.session = session
self.result = ["unknown command (%s)" % self.func]
- def handleCommand(self,cmd):
+ def handleCommand(self, cmd):
print "WAPfunctions: handleCommand", cmd
if self.func is self.LISTTIME:
self.result = self.fillListTime(cmd)
else:
self.result = ["unknown command cmd(%s) self.func(%s)" % (cmd, self.func)]
- def fillListTime(self,param):
- print "fillListTime",param
+ def fillListTime(self, param):
+ print "fillListTime", param
input = 0
start = 1
timePlusTwo = end
t = {}
- 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))
- t["ehour"]=strftime("%H", localtime(timePlusTwo))
+ 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))
+ t["ehour"] = strftime("%H", localtime(timePlusTwo))
key = ""
for i in param:
end = 12
else:
start = int(t[key])
- end = int(t[key])+2
+ end = int(t[key]) + 2
if param[key] == "now" or param[key] == "end" or param[key] == "begin":
input = int(t[key])
input = param[key] or 0
input = int(input)
- self.result = self.fillOptionListAny(input,start,end)
+ self.result = self.fillOptionListAny(input, start, end)
return self.result
- def fillOptionListAny(self,input,start,end):
+ def fillOptionListAny(self, input, start, end):
returnList = []
- for i in range(start,end+1,1):
+ for i in range(start, end + 1, 1):
returnList1 = []
j = str(i)
if len(j) == 1:
j = "0%s" % j
returnList1.append(j)
returnList1.append(i)
- if i==input:
+ if i == input:
returnList1.append("selected")
else:
returnList1.append("")
returnList.append(returnList1)
return returnList
- def fillRepeated(self,param):
- print "fillRepeated",param
+ def fillRepeated(self, param):
+ print "fillRepeated", param
repeated = param or 0
repeated = int(repeated)
self.lut = {"Name":0
- ,"Value":1
- ,"Description":2
- ,"Selected":3
+ , "Value":1
+ , "Description":2
+ , "Selected":3
}
- mo = ["mo", 1, "Mo "]#"Monday"]
- tu = ["tu", 2, "Tu "]#"Tuesday"]
- we = ["we", 4, "We "]#"Wednesday"]
- th = ["th", 8, "Th "]#"Thursday"]
+ mo = ["mo", 1, "Mo "]#"Monday"]
+ tu = ["tu", 2, "Tu "]#"Tuesday"]
+ we = ["we", 4, "We "]#"Wednesday"]
+ th = ["th", 8, "Th "]#"Thursday"]
fr = ["fr", 16, "Fr "]#"Friday"]
sa = ["sa", 32, "Sa "]#"Saturday"]
su = ["su", 64, "Su "]#"Sunday"]
def serviceListOne(self, bouquet, selref):
ref = eServiceReference(bouquet)
- self.servicelist = ServiceList(ref, command_func = self.getServiceList, validate_commands=False)
+ 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,")"
+ print "ref2: (", ref2, ") name: (", name, ")"
returnListPart = []
returnListPart.append(name)
returnListPart.append(ref2)
returnList.append(returnListPart)
return returnList
- def serviceList(self,param):
- print "serviceList: ",param
+ def serviceList(self, param):
+ print "serviceList: ", param
sRef = str(param["sRef"])
bouquet = str(param["bouquet"])
self.sRefFound = 0
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 = 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
+ 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 = 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
+ returnList = returnList + [["-- " + name + " --", "<" + name + ">", ""]] + part
else:
returnList = self.serviceListOne(bouquet, sRef)
def getServiceList(self, ref):
self.servicelist.root = ref
- def locationList(self,param):
- print "locationList",param
+ def locationList(self, param):
+ print "locationList", param
dirname = param
lst = config.movielist.videodirs.value
if not dirname:
returnList = [[lst[i], i, dirname == lst[i] and "selected" or ""] for i in range(len(lst))]
return returnList
- def tagList(self,param):
- print "tagList",param
+ def tagList(self, param):
+ print "tagList", param
tag = param
try:
file = open("/etc/enigma2/movietags")
except IOError, ioe:
taglist = []
if not tag in taglist:
- taglist = [tag]+taglist
+ taglist = [tag] + taglist
if not "" in taglist:
taglist.append("")
returnList = [[taglist[i], i, tag == taglist[i] and "selected" or ""] for i in range(len(taglist))]
return returnList
- def fillOptionList(self,param):
- print "fillOptionList",param
+ def fillOptionList(self, param):
+ print "fillOptionList", param
returnList = []
if param.has_key("justplay"):
number = param["justplay"] or 0
number = int(number)
- returnList.append(["Record",0,number==0 and "selected" or ""])
- returnList.append(["Zap",1,number==1 and "selected" or ""])
+ returnList.append(["Record", 0, number == 0 and "selected" or ""])
+ returnList.append(["Zap", 1, number == 1 and "selected" or ""])
elif param.has_key("afterevent"):
number = param["afterevent"] or 0
number = int(number)
- returnList.append(["Nothing",0,number==0 and "selected" or ""])
- returnList.append(["Standby",1,number==1 and "selected" or ""])
- returnList.append(["Deepstandby/Shutdown",2,number==2 and "selected" or ""])
- returnList.append(["Auto",3,number==3 and "selected" or ""])
+ returnList.append(["Nothing", 0, number == 0 and "selected" or ""])
+ returnList.append(["Standby", 1, number == 1 and "selected" or ""])
+ returnList.append(["Deepstandby/Shutdown", 2, number == 2 and "selected" or ""])
+ returnList.append(["Auto", 3, number == 3 and "selected" or ""])
return returnList
- def deleteOldSaved(self,param):
- print "deleteOldSaved",param
+ def deleteOldSaved(self, param):
+ print "deleteOldSaved", param
returnList = []
- returnList.append(["deleteOldOnSave",param["deleteOldOnSave"],""])
- returnList.append(["command",param["command"],""])
+ returnList.append(["deleteOldOnSave", param["deleteOldOnSave"], ""])
+ returnList.append(["command", param["command"], ""])
if int(param["deleteOldOnSave"]) == 1:
- returnList.append(["channelOld",param["sRef"],""])
- returnList.append(["beginOld",param["begin"],""])
- returnList.append(["endOld",param["end"],""])
+ returnList.append(["channelOld", param["sRef"], ""])
+ returnList.append(["beginOld", param["begin"], ""])
+ returnList.append(["endOld", param["end"], ""])
return returnList
- def fillValue(self,param):
- print "fillValue: ",param
- return [["",param,""]]
+ def fillValue(self, param):
+ print "fillValue: ", param
+ return [["", param, ""]]
def getText(self):
- (result,text) = self.result
+ (result, text) = self.result
return text
def filterXML(self, item):
from Screens.Screen import Screen
from Screens.MessageBox import MessageBox
-from Components.config import config, getConfigListEntry, ConfigSubsection, ConfigInteger,ConfigYesNo,ConfigText,ConfigSelection
+from Components.config import config, getConfigListEntry, ConfigSubsection, ConfigInteger, ConfigYesNo, ConfigText, ConfigSelection
from Components.ConfigList import ConfigListScreen
from Components.Label import Label
from Components.Button import Button
from Components.ActionMap import ActionMap
from Components.Network import iNetwork
-def initInterfaceConfig(i = None, new = False):
+
+def initInterfaceConfig(i=None, new=False):
choices = getConfiguredIPs()
if i is None and new is True:
elif i is None:
i = config.plugins.Webinterface.interfacecount.value - 1
- print "[WebIfConfig.initInterfaceConfig] i is %s" %i
+ print "[WebIfConfig.initInterfaceConfig] i is %s" % i
config.plugins.Webinterface.interfaces.append(ConfigSubsection())
- config.plugins.Webinterface.interfaces[i].disabled = ConfigYesNo(default = False)
+ config.plugins.Webinterface.interfaces[i].disabled = ConfigYesNo(default=False)
config.plugins.Webinterface.interfaces[i].address = ConfigSelection(choices, default=choices[0])
config.plugins.Webinterface.interfaces[i].port = ConfigInteger(80, (0, 65535))
- config.plugins.Webinterface.interfaces[i].useauth = ConfigYesNo(default = False)
- config.plugins.Webinterface.interfaces[i].usessl = ConfigYesNo(default = False)
+ config.plugins.Webinterface.interfaces[i].useauth = ConfigYesNo(default=False)
+ config.plugins.Webinterface.interfaces[i].usessl = ConfigYesNo(default=False)
- config.plugins.Webinterface.interfacecount.value = i+1
+ config.plugins.Webinterface.interfacecount.value = i + 1
return i
choices = getConfiguredIPs()
default = choices[0]
for c in config.plugins.Webinterface.interfaces:
- c.address.setChoices(choices, default = default)
+ c.address.setChoices(choices, default=default)
c.address.load()
def getConfiguredIPs():
for adaptername in iNetwork.ifaces:
extip = iNetwork.ifaces[adaptername]['ip']
if iNetwork.ifaces[adaptername]['up'] is True:
- extip = "%i.%i.%i.%i"%(extip[0],extip[1],extip[2],extip[3])
+ extip = "%i.%i.%i.%i" % (extip[0], extip[1], extip[2], extip[3])
choices.append(extip)
return choices
# setting default interface
# 0.0.0.0:80 auth=False
config.plugins.Webinterface.interfaces.append(ConfigSubsection())
- config.plugins.Webinterface.interfaces[0].disabled = ConfigYesNo(default = False)
+ config.plugins.Webinterface.interfaces[0].disabled = ConfigYesNo(default=False)
#needs to be refreshed before each call, because ifaces can be changed since e2 boot
- config.plugins.Webinterface.interfaces[0].address = ConfigSelection(getConfiguredIPs(),default='0.0.0.0')
+ config.plugins.Webinterface.interfaces[0].address = ConfigSelection(getConfiguredIPs(), default='0.0.0.0')
- config.plugins.Webinterface.interfaces[0].port = ConfigInteger(80, (0,65535))
- config.plugins.Webinterface.interfaces[0].useauth = ConfigYesNo(default = False)
- config.plugins.Webinterface.interfaces[0].usessl = ConfigYesNo(default = False)
+ config.plugins.Webinterface.interfaces[0].port = ConfigInteger(80, (0, 65535))
+ config.plugins.Webinterface.interfaces[0].useauth = ConfigYesNo(default=False)
+ config.plugins.Webinterface.interfaces[0].usessl = ConfigYesNo(default=False)
config.plugins.Webinterface.interfaces[0].save()
config.plugins.Webinterface.interfacecount.value = 1
else:
i = 0
while i < interfacecount:
- print "[WebIfConfig.initConfig] i is %s" %i
+ print "[WebIfConfig.initConfig] i is %s" % i
initInterfaceConfig(i)
i += 1
-class WebIfConfigScreen(ConfigListScreen,Screen):
+class WebIfConfigScreen(ConfigListScreen, Screen):
skin = """
<screen position="100,100" size="550,400" title="%s">
<widget name="config" position="5,5" size="540,360" scrollbarMode="showOnDemand" zPosition="1"/>
<ePixmap name="yellow" pixmap="skin_default/buttons/yellow.png" position="280,360" size="140,40" zPosition="4" transparent="1" alphatest="on"/>
</screen>""" % _("Webinterface: Main Setup")
- def __init__(self, session, args = 0):
+ def __init__(self, session, args=0):
Screen.__init__(self, session)
l = [
getConfigListEntry(_("Start Webinterface"), config.plugins.Webinterface.enable),
print "saving"
for x in self["config"].list:
x[1].save()
- self.close(True,self.session)
+ self.close(True, self.session)
def cancel(self):
print "cancel"
for x in self["config"].list:
x[1].cancel()
- self.close(False,self.session)
+ self.close(False, self.session)
class WebIfInterfaceListConfigScreen(Screen):
skin = """
self["key_red"] = Button(_("Add"))
self["key_yellow"] = Button(_("Change"))
self["ifacelist"] = WebIfInterfaceList([])
- self["actions"] = ActionMap(["WizardActions","MenuActions","ShortcutActions"],
+ self["actions"] = ActionMap(["WizardActions", "MenuActions", "ShortcutActions"],
{
"ok" : self.keyGreen,
"back" : self.close,
res = [
i, #550,400
MultiContentEntryText(pos=(5, 0), size=(150, 25), font=0, text=c.address.value),
- MultiContentEntryText(pos=(120, 0),size=(50, 25), font=0,text=str(c.port.value))
+ MultiContentEntryText(pos=(120, 0), size=(50, 25), font=0, text=str(c.port.value))
]
if c.usessl.value:
- res.append(MultiContentEntryText(pos=(170, 0),size=(200, 25), font=0,text=_("yes"),color=0x0000FF00))
+ res.append(MultiContentEntryText(pos=(170, 0), size=(200, 25), font=0, text=_("yes"), color=0x0000FF00))
else:
- res.append(MultiContentEntryText(pos=(170, 0),size=(200, 25), font=0,text=_("no"),color=0x00FF0000))
+ res.append(MultiContentEntryText(pos=(170, 0), size=(200, 25), font=0, text=_("no"), color=0x00FF0000))
if c.useauth.value:
- res.append(MultiContentEntryText(pos=(230, 0),size=(170, 25), font=0,text=_("yes"),color=0x0000FF00))
+ res.append(MultiContentEntryText(pos=(230, 0), size=(170, 25), font=0, text=_("yes"), color=0x0000FF00))
else:
- res.append(MultiContentEntryText(pos=(230, 0),size=(170, 25), font=0,text=_("no"),color=0x00FF0000))
+ res.append(MultiContentEntryText(pos=(230, 0), size=(170, 25), font=0, text=_("no"), color=0x00FF0000))
if c.disabled.value:
- res.append(MultiContentEntryText(pos=(400, 0),size=(160, 25), font=0,text=_("yes"),color=0x0000FF00))
+ res.append(MultiContentEntryText(pos=(400, 0), size=(160, 25), font=0, text=_("yes"), color=0x0000FF00))
else:
- res.append(MultiContentEntryText(pos=(400, 0),size=(160, 25), font=0,text=_("no"),color=0x00FF0000))
+ res.append(MultiContentEntryText(pos=(400, 0), size=(160, 25), font=0, text=_("no"), color=0x00FF0000))
ifaceguilist.append(res)
i += 1
def keyRed(self):
print "KEYRED"
- self.session.openWithCallback(self.updateList,WebIfInterfaceConfigScreen,None)
+ self.session.openWithCallback(self.updateList, WebIfInterfaceConfigScreen, None)
def keyGreen(self):
print "KEYGREEN"
def keyYellow(self):
x = self["ifacelist"].getCurrent()[0]
- print "current list index",x
- self.session.openWithCallback(self.updateList,WebIfInterfaceConfigScreen,int(x))
+ print "current list index", x
+ self.session.openWithCallback(self.updateList, WebIfInterfaceConfigScreen, int(x))
def up(self):
self["ifacelist"].up()
self["ifacelist"].pageDown()
class WebIfInterfaceList(MenuList):
- def __init__(self, list, enableWrapAround = False):
+ def __init__(self, list, enableWrapAround=False):
MenuList.__init__(self, list, enableWrapAround, eListboxPythonMultiContent)
self.l.setFont(0, gFont("Regular", 20))
#self.l.setFont(1, gFont("Regular", 25))
try:
current = config.plugins.Webinterface.interfaces[i]
- except IndexError,e:
- print "[WebIf] iface config %i not found, adding it and setting default values"%i
+ except IndexError, e:
+ print "[WebIf] iface config %i not found, adding it and setting default values" % i
initInterfaceConfig()
current = config.plugins.Webinterface.interfaces[ifacenum]
from Tools.Directories import resolveFilename, SCOPE_PLUGINS, SCOPE_LANGUAGE
import os,gettext
-__version__ = "1.5beta4"
+__version__ = "1.5rc1"
PluginLanguageDomain = "WebInterface"
PluginLanguagePath = "Extensions/WebInterface/locale"
from __init__ import _, __version__
-DEBUG_TO_FILE=False # PLEASE DONT ENABLE LOGGING BY DEFAULT (OR COMMIT TO PLUGIN CVS)
+DEBUG_TO_FILE = False # PLEASE DONT ENABLE LOGGING BY DEFAULT (OR COMMIT TO PLUGIN CVS)
-DEBUGFILE= "/tmp/twisted.log"
+DEBUGFILE = "/tmp/twisted.log"
#CONFIG INIT
#init the config
config.plugins.Webinterface = ConfigSubsection()
-config.plugins.Webinterface.enable = ConfigYesNo(default = True)
-config.plugins.Webinterface.allowzapping = ConfigYesNo(default = True)
-config.plugins.Webinterface.includemedia = ConfigYesNo(default = False)
-config.plugins.Webinterface.autowritetimer = ConfigYesNo(default = False)
-config.plugins.Webinterface.loadmovielength = ConfigYesNo(default = False)
+config.plugins.Webinterface.enable = ConfigYesNo(default=True)
+config.plugins.Webinterface.allowzapping = ConfigYesNo(default=True)
+config.plugins.Webinterface.includemedia = ConfigYesNo(default=False)
+config.plugins.Webinterface.autowritetimer = ConfigYesNo(default=False)
+config.plugins.Webinterface.loadmovielength = ConfigYesNo(default=False)
config.plugins.Webinterface.version = ConfigText(__version__) # used to make the versioninfo accessible enigma2-wide, not confgurable in GUI.
config.plugins.Webinterface.interfacecount = ConfigInteger(0)
config.plugins.Webinterface.interfaces = ConfigSubList()
initConfig()
-config.plugins.Webinterface.warningsslsend = ConfigYesNo(default = False)
+config.plugins.Webinterface.warningsslsend = ConfigYesNo(default=False)
-global running_defered,waiting_shutdown
+global running_defered, waiting_shutdown
running_defered = []
waiting_shutdown = 0
-server.VERSION = "Enigma2 WebInterface Server $Revision$".replace("$Revi","").replace("sion: ","").replace("$","")
+server.VERSION = "Enigma2 WebInterface Server $Revision$".replace("$Revi", "").replace("sion: ", "").replace("$", "")
class Closer:
counter = 0
- def __init__(self,session, callback = None):
+ def __init__(self, session, callback=None):
self.callback = callback
self.session = session
x = d.stopListening()
try:
x.addCallback(self.isDown)
- self.counter +=1
+ self.counter += 1
except AttributeError:
pass
running_defered = []
- if self.counter <1:
+ if self.counter < 1:
if self.callback is not None:
self.callback(self.session)
- def isDown(self,s):
- self.counter-=1
- if self.counter <1:
+ def isDown(self, s):
+ self.counter -= 1
+ if self.counter < 1:
if self.callback is not None:
self.callback(self.session)
pass
global running_defered
- if len(running_defered) >0:
- Closer(session,startWebserver).stop()
+ if len(running_defered) > 0:
+ Closer(session, startWebserver).stop()
else:
startWebserver(session)
return False
if DEBUG_TO_FILE:
print "start twisted logfile, writing to %s" % DEBUGFILE
- startLogging(open(DEBUGFILE,'w'))
+ startLogging(open(DEBUGFILE, 'w'))
for c in config.plugins.Webinterface.interfaces:
if c.disabled.value is False:
- startServerInstance(session,c.address.value,c.port.value,c.useauth.value,c.usessl.value)
+ startServerInstance(session, c.address.value, c.port.value, c.useauth.value, c.usessl.value)
else:
- print "[Webinterface] not starting disabled interface on %s:%i"%(c.address.value,c.port.value)
+ print "[Webinterface] not starting disabled interface on %s:%i" % (c.address.value, c.port.value)
def stopWebserver(session):
try:
if len(running_defered) > 0:
Closer(session).stop()
-def startServerInstance(session,ipaddress,port,useauth=False,usessl=False):
+def startServerInstance(session, ipaddress, port, useauth=False, usessl=False):
try:
toplevel = Toplevel(session)
if useauth:
portal = Portal(HTTPAuthRealm())
portal.registerChecker(PasswordDatabase())
- root = wrapper.HTTPAuthResource(toplevel,(basic.BasicCredentialFactory(socket_gethostname()),),portal, (IHTTPUser,))
+ root = wrapper.HTTPAuthResource(toplevel, (basic.BasicCredentialFactory(socket_gethostname()),), portal, (IHTTPUser,))
site = server.Site(root)
else:
site = server.Site(toplevel)
try:
if usessl:
- ctx = ssl.DefaultOpenSSLContextFactory('/etc/enigma2/server.pem','/etc/enigma2/cacert.pem',sslmethod=SSL.SSLv23_METHOD)
- d = reactor.listenSSL(port, channel.HTTPFactory(site),ctx,interface=ipaddress)
+ ctx = ssl.DefaultOpenSSLContextFactory('/etc/enigma2/server.pem', '/etc/enigma2/cacert.pem', sslmethod=SSL.SSLv23_METHOD)
+ d = reactor.listenSSL(port, channel.HTTPFactory(site), ctx, interface=ipaddress)
else:
- d = reactor.listenTCP(port, channel.HTTPFactory(site),interface=ipaddress)
+ d = reactor.listenTCP(port, channel.HTTPFactory(site), interface=ipaddress)
running_defered.append(d)
- print "[Webinterface] started on %s:%i"%(ipaddress,port),"auth=",useauth,"ssl=",usessl
+ print "[Webinterface] started on %s:%i" % (ipaddress, port), "auth=", useauth, "ssl=", usessl
except CannotListenError, e:
- print "[Webinterface] Could not Listen on %s:%i!"%(ipaddress,port)
- session.open(MessageBox,'Could not Listen on %s:%i!\n\n%s'%(ipaddress,port,str(e)), MessageBox.TYPE_ERROR)
- except Exception,e:
- print "[Webinterface] starting FAILED on %s:%i!"%(ipaddress,port),e
- session.open(MessageBox,'starting FAILED on %s:%i!\n\n%s'%(ipaddress,port,str(e)), MessageBox.TYPE_ERROR)
+ print "[Webinterface] Could not Listen on %s:%i!" % (ipaddress, port)
+ session.open(MessageBox, 'Could not Listen on %s:%i!\n\n%s' % (ipaddress, port, str(e)), MessageBox.TYPE_ERROR)
+ except Exception, e:
+ print "[Webinterface] starting FAILED on %s:%i!" % (ipaddress, port), e
+ session.open(MessageBox, 'starting FAILED on %s:%i!\n\n%s' % (ipaddress, port, str(e)), MessageBox.TYPE_ERROR)
class PasswordDatabase:
"""
"""
passwordfile = "/etc/passwd"
implements(checkers.ICredentialsChecker)
- credentialInterfaces = (credentials.IUsernamePassword,credentials.IUsernameHashedPassword)
+ credentialInterfaces = (credentials.IUsernamePassword, credentials.IUsernameHashedPassword)
def _cbPasswordMatch(self, matched, username):
if matched:
return failure.Failure(error.UnauthorizedLogin())
def requestAvatarId(self, credentials):
- if check_passwd(credentials.username,credentials.password,self.passwordfile) is True:
- return defer.maybeDeferred(credentials.checkPassword,credentials.password).addCallback(self._cbPasswordMatch, str(credentials.username))
+ if check_passwd(credentials.username, credentials.password, self.passwordfile) is True:
+ return defer.maybeDeferred(credentials.checkPassword, credentials.password).addCallback(self._cbPasswordMatch, str(credentials.username))
else:
return defer.fail(error.UnauthorizedLogin())
class HTTPUser(object):
implements(IHTTPUser)
username = None
- def __init__(self,username):
+ def __init__(self, username):
self.username = username
class HTTPAuthRealm(object):
"""Validate given user, passwd pair against password database."""
if not pwfile or type(pwfile) == type(''):
- getuser = lambda x,pwfile=pwfile: getpwnam(x,pwfile)[1]
+ getuser = lambda x, pwfile = pwfile: getpwnam(x, pwfile)[1]
else:
getuser = pwfile.get_passwd
def _to64(v, n):
r = ''
- while (n-1 >= 0):
+ while (n - 1 >= 0):
r = r + DES_SALT[v & 0x3F]
v = v >> 6
n = n - 1
return rv
#### stuff for SSL Support
-def makeSSLContext(myKey,trustedCA):
+def makeSSLContext(myKey, trustedCA):
'''Returns an ssl Context Object
@param myKey a pem formated key and certifcate with for my current host
the other end of this connection must have the cert from the CA
# or listenSSL
# Why these functioins... Not sure...
- fd = open(myKey,'r')
+ fd = open(myKey, 'r')
ss = fd.read()
theCert = ssl.PrivateCertificate.loadPEM(ss)
fd.close()
- fd = open(trustedCA,'r')
+ fd = open(trustedCA, 'r')
theCA = ssl.Certificate.loadPEM(fd.read())
fd.close()
#ctx = theCert.options(theCA)
try:
updateConfig()
startWebserver(global_session)
- except ImportError,e:
+ except ImportError, e:
print "[Webinterface] twisted not available, not starting web services", e
elif reason is False:
stopWebserver(global_session)
print "[WebIf] config not changed"
def Plugins(**kwargs):
- return [PluginDescriptor(where = [PluginDescriptor.WHERE_SESSIONSTART], fnc = sessionstart),
- PluginDescriptor(where = [PluginDescriptor.WHERE_NETWORKCONFIG_READ], fnc = autostart),
+ return [PluginDescriptor(where=[PluginDescriptor.WHERE_SESSIONSTART], fnc=sessionstart),
+ PluginDescriptor(where=[PluginDescriptor.WHERE_NETWORKCONFIG_READ], fnc=autostart),
PluginDescriptor(name=_("Webinterface"), description=_("Configuration for the Webinterface"),
- where = [PluginDescriptor.WHERE_PLUGINMENU], icon="plugin.png",fnc = openconfig)]
+ where=[PluginDescriptor.WHERE_PLUGINMENU], icon="plugin.png", fnc=openconfig)]
installdir = /usr/lib/enigma2/python/Plugins/Extensions/WebInterface/web-data/
-install_DATA = *.js *.html
+install_DATA = *.js *.html *.json
SUBDIRS = lib gfx img tpl
// $Header$
var DBG = true;
-DBG = false;
+//DBG = false;
var url_tpl = '/web-data/tpl/default/';
var url_powerstate = "/web/powerstate"; // plus new powerstate
var url_remotecontrol = "/web/remotecontrol"; // plus command
var url_signal = "/web/signal";
+var url_deviceinfo = "/web/deviceinfo";
var bouquetsTv = '1:7:1:0:0:0:0:0:0:0:(type == 1) || (type == 17) || (type == 195) || (type == 25)FROM BOUQUET "bouquets.tv" ORDER BY bouquet';
var bouquetsRadio = '1:7:2:0:0:0:0:0:0:0:(type == 2)FROM BOUQUET "bouquets.radio" ORDER BY bouquet';
-var MANIFEST_FILENAME = "/webdata/manifest.json";
-
+var MANIFEST_FILENAME = "/web-data/manifest.json";
+var STORE_NAME = "enigma2_web";
+
var localServer;
var store;
-var STORE_NAME = "enigma2_web"
+function gearsEnabled(){
+ var useGears = userprefs.data.useGears || false;
+ return useGears;
+}
// Called onload to initialize local server and store variables
-function initgears() {
- if (!window.google || !google.gears) {
- debug("NOTE: You must install Gears first.");
- } else {
- localServer = google.gears.factory.create("beta.localserver");
- store = localServer.createManagedStore(STORE_NAME);
- debug("Gears initialized.");
+function initGears() {
+ if(gearsEnabled()){
+ if (!window.google || !google.gears) {
+ notify("[GEARS] NOTE: You must install Gears first.", false);
+ } else {
+ localServer = google.gears.factory.create("beta.localserver");
+ store = localServer.createManagedStore(STORE_NAME);
+ createStore();
+ }
}
}
//Create the managed resource store
function createStore() {
- if (!window.google || !google.gears) {
-// alert("You must install Gears first.");
- return;
- }
-
- store.manifestUrl = MANIFEST_FILENAME;
- store.checkForUpdate();
-
- var timerId = window.setInterval(function() {
- // When the currentVersion property has a value, all of the resources
- // listed in the manifest file for that version are captured. There is
- // an open bug to surface this state change as an event.
- if (store.currentVersion) {
- window.clearInterval(timerId);
- debug("Finished caputring version: " +
- store.currentVersion);
- } else if (store.updateStatus == 3) {
- debug("Error: " + store.lastErrorMessage);
+ if (gearsEnabled()) {
+ if (!window.google || !google.gears) {
+ notify("[GEARS] NOTE: You must install Gears first.", false);
+ return;
}
- }, 500);
+
+ store.manifestUrl = MANIFEST_FILENAME;
+ store.checkForUpdate();
+ store.onprogress = function(e){
+ set('gearsProcess', 'Files loaded: ' + e.filesComplete + ' / ' + e.filesTotal);
+ };
+
+ var timerId = window.setInterval( function() {
+ // When the currentVersion property has a value, all of the resources
+ // listed in the manifest file for that version are captured.
+ // There is an open bug to surface this state change as an event.
+ if (store.currentVersion) {
+ window.clearInterval(timerId);
+ if (typeof (debug) == "function") {
+ notify("[GEARS] Finished capturing version: "
+ + store.currentVersion);
+ }
+ } else if (store.updateStatus == 3) {
+ if (typeof (debug) == "function") {
+ notify("[GEARS] Error: " + store.lastErrorMessage, false);
+ }
+ }
+ }, 500);
+
+ }
}
//Remove the managed resource store.
function removeStore() {
if (!window.google || !google.gears) {
- debug("You must install Gears first.");
+ if(typeof(debug) == "function"){
+ notify("[GEARS] NOTE: You must install Gears first.", false);
+ }
return;
}
localServer.removeManagedStore(STORE_NAME);
- debug("Done. The local store has been removed.");
+ if(typeof(debug) == "function"){
+ notify("[GEARS] Done. The local GEARS-Store for enigma2 WebControl has been removed.");
+ }
+}
+
+function enableGears(callback) {
+ if(!gearsEnabled()){
+ userprefs.data.useGears = true;
+ userprefs.save();
+ initGears();
+ }
+ if(typeof(callback) == 'function'){
+ callback();
+ }
}
+
+function disableGears(callback) {
+ if(gearsEnabled()){
+ userprefs.data.useGears = false;
+ userprefs.save();
+ removeStore();
+ }
+ if(typeof(callback) == 'function'){
+ callback();
+ }
+}
+
+initGears();
\ No newline at end of file
{
"betaManifestVersion": 1,
- "version": "v1",
+ "version": "v21",
"entries": [
+ { "url": "IEFixes.htc" },
{ "url": "img/arrow_down.png" },
{ "url": "img/arrow_up.png" },
{ "url": "img/delete.png" },
{ "url": "img/dreamboxweb.png" },
{ "url": "img/edit.png" },
+ { "url": "img/epg.png" },
+ { "url": "img/favicon.ico" },
+ { "url": "img/feed.png" },
{ "url": "img/led_off.png" },
{ "url": "img/led_on.png" },
{ "url": "img/nok.png" },
{ "url": "img/off.png" },
{ "url": "img/on.png" },
+ { "url": "img/rc.png" },
+ { "url": "img/rcold.png" },
+ { "url": "img/record.png" },
+ { "url": "img/save.png" },
+ { "url": "img/screen.png" },
+ { "url": "img/search.png" },
{ "url": "img/signal.png" },
{ "url": "img/speak_off.png" },
{ "url": "img/speak_on.png" },
{ "url": "img/stream.png" },
- { "url": "lib/gears_init.js" },
- { "url": "lib/prototype-1.6.0.3.js" },
- { "url": "lib/shadedborder.js" },
- { "url": "lib/trimpath-template-1.0.38.js" },
- { "url": "tpl/tplAbout.htm" },
- { "url": "tpl/tplBouquetList.htm" },
- { "url": "tpl/tplDebug.htm" },
- { "url": "tpl/tplEpgList.htm" },
- { "url": "tpl/tplGrab.htm" },
- { "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" },
- { "url": "tpl/tplPower.htm" },
- { "url": "tpl/tplSendMessage.htm" },
- { "url": "tpl/tplServiceList.htm" },
- { "url": "tpl/tplServiceListEPGItem.htm" },
- { "url": "tpl/tplSignalPanel.htm" },
- { "url": "tpl/tplSubServices.htm" },
- { "url": "tpl/tplTimerEdit.htm" },
- { "url": "tpl/tplTimerList.htm" },
- { "url": "tpl/tplWebRemote.htm" },
- { "url": "config.js" },
- { "url": "gears_handler.js" },
- { "url": "objects.js" },
- { "url": "timer.js" },
- { "url": "tools.js" },
- { "url": "style.css" }
+ { "url": "img/timer.png" },
+ { "url": "img/world.png" },
+ { "url": "img/zap.png" },
+ { "url": "gfx/ajaxload.gif" },
+ { "url": "tpl/default/index.html" },
+ { "url": "tpl/default/style.css" } ,
+ { "url": "tpl/default/tplAbout.htm" },
+ { "url": "tpl/default/tplBouquetList.htm" },
+ { "url": "tpl/default/tplCurrent.htm" },
+ { "url": "tpl/default/tplDebug.htm" },
+ { "url": "tpl/default/tplEpgList.htm" },
+ { "url": "tpl/default/tplGrab.htm" },
+ { "url": "tpl/default/tplMediaPlayer.htm" },
+ { "url": "tpl/default/tplMovieList.htm" },
+ { "url": "tpl/default/tplNavBoxControl.htm" },
+ { "url": "tpl/default/tplNavMovies.htm" },
+ { "url": "tpl/default/tplNavRadio.htm" },
+ { "url": "tpl/default/tplNavTimer.htm" },
+ { "url": "tpl/default/tplNavTv.htm" },
+ { "url": "tpl/default/tplPower.htm" },
+ { "url": "tpl/default/tplSendMessage.htm" },
+ { "url": "tpl/default/tplServiceList.htm" },
+ { "url": "tpl/default/tplServiceListEPGItem.htm" },
+ { "url": "tpl/default/tplSignalPanel.htm" },
+ { "url": "tpl/default/tplSubServices.htm" },
+ { "url": "tpl/default/tplTimerEdit.htm" },
+ { "url": "tpl/default/tplTimerList.htm" },
+ { "url": "tpl/default/tplWebRemote.htm" },
+ { "url": "tpl/default/tplWebRemoteOld.htm" }
]
}
\ No newline at end of file
// $Header$
// store all objects here
-//START class EPGList
-function EPGList(xml){
- // parsing values from xml-element
- //debug('init EPGList'+xml);
- try{
- this.xmlitems = xml.getElementsByTagName("e2eventlist").item(0).getElementsByTagName("e2event");
- } catch (e) { debug("[EPGList] parsing Error");}
-
- this.getArray = function(sortbytime){
- debug("[EPGList] Sort by time "+sortbytime);
- if (sortbytime === true){
- var sort1 = [];
- for(var i=0;i<this.xmlitems.length;i++){
- var xv = new EPGEvent(this.xmlitems.item(i));
- sort1.push( [xv.startTime, xv] );
- }
- sort1.sort(this.sortFunction);
- var sort2 = [];
- for(i=0;i<sort1.length;i++){
- sort2.push(sort1[i][1]);
- }
- return sort2;
- }else{
- var listxy = [];
- for (i=0;i<this.xmlitems.length;i++){
- xv = new EPGEvent(this.xmlitems.item(i));
- listxy.push(xv);
- }
- return listxy;
+//START class EPGList
+
+function getNodeContent(xml, nodename, defaultString){
+ var node = xml.getElementsByTagName(nodename);
+ try{
+ return node.item(0).firstChild.data;
+ } catch(e){
+// debug('[getNodeContent] Error getting content of node "'+ nodename +'" :: ' + e);
+ if(defaultString !== null) {
+ return defaultString;
}
- };
- this.sortFunction = function(a,b){
- return a[0] - b[0];
- };
+ return 'N/A';
+ }
+}
+
+function getNamedChildren(xml, parentname, childname){
+ try {
+ var ret = xml.getElementsByTagName(parentname).item(0).getElementsByTagName(childname);
+ return ret;
+ } catch (e) {
+ return {};
+ }
}
-//END class EPGList
//START class EPGEvent
function EPGEvent(xml){
- // parsing values from xml-element
- try{
- this.eventID = xml.getElementsByTagName('e2eventid').item(0).firstChild.data;
- this.startTime = xml.getElementsByTagName('e2eventstart').item(0).firstChild.data;
- this.duration = xml.getElementsByTagName('e2eventduration').item(0).firstChild.data;
- this.title = xml.getElementsByTagName('e2eventtitle').item(0).firstChild.data;
- this.serviceRef = xml.getElementsByTagName('e2eventservicereference').item(0).firstChild.data;
- this.serviceName = xml.getElementsByTagName('e2eventservicename').item(0).firstChild.data;
- this.fileName = xml.getElementsByTagName('e2filename').item(0).firstChild.data;
- } catch (e) {
- }
- try{
- this.description = xml.getElementsByTagName('e2eventdescription').item(0).firstChild.data;
- } catch (e) { this.description= 'N/A'; }
-
- try{
- this.descriptionE = xml.getElementsByTagName('e2eventdescriptionextended').item(0).firstChild.data;
- } catch (e) { this.descriptionE = 'N/A'; }
+ this.eventID = getNodeContent(xml, 'e2eventid', '');
+ this.startTime = getNodeContent(xml, 'e2eventstart', '');
+ this.duration = getNodeContent(xml, 'e2eventduration', '');
+ this.title = getNodeContent(xml, 'e2eventtitle', '');
+ this.serviceRef = getNodeContent(xml, 'e2eventservicereference', '');
+ this.serviceName = getNodeContent(xml, 'e2eventservicename', '');
+ this.fileName = getNodeContent(xml, 'e2filename', '');
+ this.description = getNodeContent(xml, 'e2eventdescription');
+ this.descriptionE = getNodeContent(xml, 'e2eventdescriptionextended');
this.getFilename = function (){
return this.fileName;
return h+":"+m;
};
this.getTimeDay = function (){
- var Wochentag = ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"];
- var wday = Wochentag[this.getTimeStart().getDay()];
+ var weekday = ["So", "Mo", "Tu", "We", "Th", "Fr", "Sa"];
+ var wday = weekday[this.getTimeStart().getDay()];
var day = this.getTimeStart().getDate();
var month = this.getTimeStart().getMonth()+1;
var year = this.getTimeStart().getFullYear();
return h+":"+m;
};
this.getDuration = function (){
- return new Date(parseInt(this.duration, 10)*1000);
+ var date = new Date(parseInt(this.duration, 10)*1000);
+ return date;
};
this.getTitle = function (){
return this.title;
}
//END class EPGEvent
-//START class Service
-function ServiceReference(xml){
+
+function EPGList(xml){
// parsing values from xml-element
- //debug('init ServiceReference'+xml);
try{
- this.servicereference = xml.getElementsByTagName('e2servicereference').item(0).firstChild.data;
- this.servicename = xml.getElementsByTagName('e2servicename').item(0).firstChild.data;
- } catch (e) {
- //debug("Service parsing Error "+e);
- }
+ this.xmlitems = xml.getElementsByTagName("e2eventlist").item(0).getElementsByTagName("e2event");
+ } catch (e) { debug("[EPGList] parsing Error");}
+
+ this.getArray = function(sortbytime){
+ debug("[EPGList] Sort by time "+sortbytime);
+ var list = [];
+
+ if (sortbytime === true){
+ var sortList = [];
+ for(var i=0;i<this.xmlitems.length;i++){
+ var event = new EPGEvent(this.xmlitems.item(i));
+ sortList.push( [event.startTime, event] );
+ }
+ sortList.sort(this.sortFunction);
+
+ list = [];
+ for(i=0;i<sortList.length;i++){
+ list.push(sortList[i][1]);
+ }
+
+ return list;
+
+ }else{
+ list = [];
+ for (i=0;i<this.xmlitems.length;i++){
+ xv = new EPGEvent(this.xmlitems.item(i));
+ list.push(xv);
+ }
+ return list;
+ }
+ };
+
+ this.sortFunction = function(a, b){
+ return a[0] - b[0];
+ };
+}
+//END class EPGList
+
+// START class Service
+function Service(xml){
+ this.servicereference = getNodeContent(xml, 'e2servicereference', '');
+ this.servicename = getNodeContent(xml, 'e2servicename');
this.getServiceReference = function(){
return encodeURIComponent(this.servicereference);
return this.servicename.replace('"', '"');
};
- this.setServiceReference = function(toInsert){
- this.servicereference = toInsert;
+ this.setServiceReference = function(sref){
+ this.servicereference = sref;
};
- this.setServiceName = function(toInsert){
- this.servicename = toInsert.replace('"', '"');
+ this.setServiceName = function(sname){
+ this.servicename = sname.replace('"', '"');
};
}
//END class Service
-//START class ServiceList
+// START class ServiceList
function ServiceList(xml){
- // parsing values from xml-element
- //debug('init ServiceList'+xml);
- try{
- this.xmlitems = xml.getElementsByTagName("e2servicelist").item(0).getElementsByTagName("e2service");
- } catch (e) {
- //debug("Service parsing Error");
- }
+ this.xmlitems = getNamedChildren(xml, "e2servicelist", "e2service");
+ this.servicelist = [];
this.getArray = function(){
- var listxy = [];
- try{
+ if(this.servicelist.length === 0){
for (var i=0;i<this.xmlitems.length;i++){
- var xv = new ServiceReference(this.xmlitems.item(i));
- listxy.push(xv);
- }
- }catch (e){}
+ var service = new Service(this.xmlitems.item(i));
+ this.servicelist.push(service);
+ }
+ }
- return listxy;
+ return this.servicelist;
};
}
//END class ServiceList
-//START class MovieList
-function MovieList(xml){
- // parsing values from xml-element
- debug('[MovieList] init: ' + xml);
- try{
- this.xmlitems = xml.getElementsByTagName("e2movielist").item(0).getElementsByTagName("e2movie");
- } catch (e) {
- debug("[MovieList] parsing Error");
- }
- this.getArray = function(){
- var listxy = [];
- for(var i=0;i<this.xmlitems.length;i++){
- //debug("parsing movie "+i+" of "+this.xmlitems.length);
- var xv = new Movie(this.xmlitems.item(i));
- listxy.push(xv);
- }
- return listxy;
- };
-}
-//END class MovieList
-//START class Movie
+// START class Movie
function Movie(xml){
- // parsing values from xml-element
- //debug('init Movie');
- try{
- this.servicereference = xml.getElementsByTagName('e2servicereference').item(0).firstChild.data;
- } catch (e) {
- this.servicereference = "N/A";
- }
- try{
- this.servicename = xml.getElementsByTagName('e2servicename').item(0).firstChild.data;
- } catch (e) {
- this.servicename = "N/A";
- }
- try{
- this.title = xml.getElementsByTagName('e2title').item(0).firstChild.data;
- } catch (e) {
- this.title = "N/A";
- }
- try{
- this.descriptionextended = xml.getElementsByTagName('e2descriptionextended').item(0).firstChild.data;
- } catch (e) {
- this.descriptionextended = "N/A";
- }
- try{
- this.description = xml.getElementsByTagName('e2description').item(0).firstChild.data;
- } catch (e) {
- this.description = "N/A";
- }
- try{
- this.tags = xml.getElementsByTagName('e2tags').item(0).firstChild.data;
- } catch (e) {
- this.tags = " "; // no whitespaces... tags will be splittet later
- }
- try{
- this.filename = xml.getElementsByTagName('e2filename').item(0).firstChild.data;
- } catch (e) {
- this.filename = "n/a";
- }
- try{
- this.filesize = xml.getElementsByTagName('e2filesize').item(0).firstChild.data;
- } catch (e) {
- this.filesize = 0;
- }
- try{
- this.startTime = xml.getElementsByTagName('e2time').item(0).firstChild.data;
- } catch (e) {
- this.startTime = "0";
- }
- try{
- this.length = xml.getElementsByTagName('e2length').item(0).firstChild.data;
- } catch (e) {
- this.length = "0";
- }
-
-
-
+ this.servicereference = getNodeContent(xml, 'e2servicereference');
+ this.servicename = getNodeContent(xml, 'e2servicename');
+ this.title = getNodeContent(xml, 'e2title');
+ this.descriptionextended = getNodeContent(xml, 'e2descriptionextended');
+ this.description = getNodeContent(xml, 'e2description');
+ this.tags = getNodeContent(xml, 'e2tags', ' ');
+ this.filename = getNodeContent(xml, 'e2filename');
+ this.filesize = getNodeContent(xml, 'e2filesize', 0);
+ this.startTime = getNodeContent(xml, 'e2time', 0);
+ this.length = getNodeContent(xml, 'e2length', 0);
this.getLength = function (){
return this.length;
}
//END class Movie
-//START class TimerList
-function TimerList(xml){
- // parsing values from xml-element
- try{
- this.xmlitems = xml.getElementsByTagName("e2timerlist").item(0).getElementsByTagName("e2timer");
- } catch (e) {
- debug("[TimerList] parsing Error");
- }
+
+// START class MovieList
+function MovieList(xml){
+ this.xmlitems = getNamedChildren(xml, "e2movielist", "e2movie");
+ this.movielist = [];
+
this.getArray = function(){
- var listxy = [];
- for(var i=0;i<this.xmlitems.length;i++){
- //debug("parsing timer "+i+" of "+this.xmlitems.length);
- var xv = new Timer(this.xmlitems.item(i));
- listxy.push(xv);
+ if(this.movielist.length === 0){
+ for(var i=0;i<this.xmlitems.length;i++){
+ //debug("parsing movie "+i+" of "+this.xmlitems.length);
+ var movie = new Movie(this.xmlitems.item(i));
+ this.movielist.push(movie);
+ }
}
- return listxy;
+
+ return this.movielist;
};
}
-//END class TimerList
+//END class MovieList
+
-//START class Timer
+
+// START class Timer
function Timer(xml){
- // parsing values from xml-element
- //debug('init Timer');
- try{
- this.servicereference = xml.getElementsByTagName('e2servicereference').item(0).firstChild.data;
- } catch (e) {
- this.servicereference = "N/A";
- }
- try{
- this.servicename = xml.getElementsByTagName('e2servicename').item(0).firstChild.data;
- } catch (e) {
- this.servicename = "N/A";
- }
- try{
- this.eventid = xml.getElementsByTagName('e2eit').item(0).firstChild.data;
- } catch (e) {
- this.eventid = "N/A";
- }
- try{
- this.name = xml.getElementsByTagName('e2name').item(0).firstChild.data;
- } catch (e) {
- this.name = "N/A";
- }
- try{
- this.description = xml.getElementsByTagName('e2description').item(0).firstChild.data;
- } catch (e) {
- this.description = "N/A";
- }
- try{
- this.descriptionextended = xml.getElementsByTagName('e2descriptionextended').item(0).firstChild.data;
- } catch (e) {
- this.descriptionextended = "N/A";
- }
- try{
- this.disabled = xml.getElementsByTagName('e2disabled').item(0).firstChild.data;
- } catch (e) {
- this.disabled = "0";
- }
- try{
- this.timebegin = xml.getElementsByTagName('e2timebegin').item(0).firstChild.data;
- } catch (e) {
- this.timebegin = "N/A";
- }
- try{
- this.timeend = xml.getElementsByTagName('e2timeend').item(0).firstChild.data;
- } catch (e) {
- this.timeend = "N/A";
- }
- try{
- this.duration = xml.getElementsByTagName('e2duration').item(0).firstChild.data;
- } catch (e) {
- this.duration = "0";
- }
- try{
- this.startprepare = xml.getElementsByTagName('e2startprepare').item(0).firstChild.data;
- } catch (e) {
- this.startprepare = "N/A";
- }
- try{
- this.justplay = xml.getElementsByTagName('e2justplay').item(0).firstChild.data;
- } catch (e) {
- this.justplay = "";
- }
- try{
- this.afterevent = xml.getElementsByTagName('e2afterevent').item(0).firstChild.data;
- } catch (e) {
- this.afterevent = "0";
- }
- try{
- this.dirname = xml.getElementsByTagName('e2dirname').item(0).firstChild.data;
- } catch (e) {
- this.dirname = "/hdd/movie/";
- }
- try{
- this.tags = xml.getElementsByTagName('e2tags').item(0).firstChild.data;
- } catch (e) {
- this.tags = "";
- }
- try{
- this.logentries = xml.getElementsByTagName('e2logentries').item(0).firstChild.data;
- } catch (e) {
- this.logentries = "N/A";
- }
- try{
- this.tfilename = xml.getElementsByTagName('e2filename').item(0).firstChild.data;
- } catch (e) {
- this.tfilename = "N/A";
- }
- try{
- this.backoff = xml.getElementsByTagName('e2backoff').item(0).firstChild.data;
- } catch (e) {
- this.backoff = "N/A";
- }
- try{
- this.nextactivation = xml.getElementsByTagName('e2nextactivation').item(0).firstChild.data;
- } catch (e) {
- this.nextactivation = "N/A";
- }
- try{
- this.firsttryprepare = xml.getElementsByTagName('e2firsttryprepare').item(0).firstChild.data;
- } catch (e) {
- this.firsttryprepare = "N/A";
- }
- try{
- this.state = xml.getElementsByTagName('e2state').item(0).firstChild.data;
- } catch (e) {
- this.state = "N/A";
- }
- try{
- this.repeated = xml.getElementsByTagName('e2repeated').item(0).firstChild.data;
- } catch (e) {
- this.repeated = "0";
- }
- try{
- this.dontsave = xml.getElementsByTagName('e2dontsave').item(0).firstChild.data;
- } catch (e) {
- this.dontsave = "N/A";
- }
- try{
- this.cancled = xml.getElementsByTagName('e2cancled').item(0).firstChild.data;
- } catch (e) {
- this.cancled = "N/A";
- }
- try{
- this.color = xml.getElementsByTagName('e2color').item(0).firstChild.data;
- } catch (e) {
- this.color = "N/A";
- }
- try{
- this.toggledisabled = xml.getElementsByTagName('e2toggledisabled').item(0).firstChild.data;
- } catch (e) {
- this.toggledisabled = "N/A";
- }
- try{
- this.toggledisabledimg = xml.getElementsByTagName('e2toggledisabledimg').item(0).firstChild.data;
- } catch (e) {
- this.toggledisabledimg = "N/A";
- }
+ this.servicereference = getNodeContent(xml, 'e2servicereference');
+ this.servicename = getNodeContent(xml, 'e2servicename');
+ this.eventid = getNodeContent(xml, 'e2eit');
+ this.name = getNodeContent(xml, 'e2name');
+ this.description = getNodeContent(xml, 'e2description');
+ this.descriptionextended = getNodeContent(xml, 'e2descriptionextended');
+ this.disabled = getNodeContent(xml, 'e2disabled', '0');
+ this.timebegin = getNodeContent(xml, 'e2timebegin');
+ this.timeend = getNodeContent(xml, 'e2timeend');
+ this.duration = getNodeContent(xml, 'e2duration', '0');
+ this.startprepare = getNodeContent(xml, 'e2startprepare');
+ this.justplay = getNodeContent(xml, 'e2justplay', '');
+ this.afterevent = getNodeContent(xml, 'e2afterevent', '0');
+ this.dirname = getNodeContent(xml, 'e2dirname', '/hdd/movie/');
+ this.tags = getNodeContent(xml, 'e2tags', '');
+ this.logentries = getNodeContent(xml, 'e2logentries');
+ this.tfilename = getNodeContent(xml, 'e2filename');
+ this.backoff = getNodeContent(xml, 'e2backoff');
+ this.nextactivation = getNodeContent(xml, 'e2nextactivation');
+ this.firsttryprepare = getNodeContent(xml, 'e2firsttryprepare');
+ this.state = getNodeContent(xml, 'e2state');
+ this.repeated = getNodeContent(xml, 'e2repeated', '0');
+ this.dontsave = getNodeContent(xml, 'e2dontsave');
+ this.cancled = getNodeContent(xml, 'e2cancled');
+ this.color = getNodeContent(xml, 'e2color');
+ this.toggledisabled = getNodeContent(xml, 'e2toggledisabled');
+ this.toggledisabledimg = getNodeContent(xml, 'e2toggledisabledimg');
this.getColor = function(){
return this.color;
return this.cancled;
};
}
-// START SimpleXMLResult ehemals TimerAddResult
-function SimpleXMLResult(xml){
- // parsing values from xml-element
- debug('[SimpleXMLResult] init: '+xml);
+
+
+// START class TimerList
+function TimerList(xml){
+ this.xmlitems = getNamedChildren(xml, "e2timerlist", "e2timer");
+ this.timerlist = [];
+
+ this.getArray = function(){
+ if(this.timerlist.length === 0){
+ for(var i=0;i<this.xmlitems.length;i++){
+ var timer = new Timer(this.xmlitems.item(i));
+ this.timerlist.push(timer);
+ }
+ }
+
+ return this.timerlist;
+ };
+}
+//END class TimerList
+
+
+function SimpleXMLResult(xml){
try{
this.xmlitems = xml.getElementsByTagName("e2simplexmlresult").item(0);
- debug("[SimpleXMLResult] count: " + xml.getElementsByTagName("e2simplexmlresult").length);
} catch (e) {
- debug("[SimpleXMLResult] parsing e2simplexmlresult"+e);
+ debug("[SimpleXMLResult] parsing e2simplexmlresult" + e);
}
- try{
- this.state = this.xmlitems.getElementsByTagName("e2state").item(0).firstChild.data;
- } catch (e) {
- debug("[SimpleXMLResult] parsing e2state"+e);
- }
- try{
- this.statetext = this.xmlitems.getElementsByTagName("e2statetext").item(0).firstChild.data;
- } catch (e) {
- debug("[SimpleXMLResult] parsing e2statetext"+e);
- }
-
+
+ this.state = getNodeContent(this.xmlitems, 'e2state', 'False');
+ this.statetext = getNodeContent(this.xmlitems, 'e2statetext', 'Error Parsing XML');
+
this.getState = function(){
if(this.state == 'True'){
return true;
return false;
}
};
+
this.getStateText = function(){
return this.statetext;
};
// END SimpleXMLResult
// START SimpleXMLList
-function SimpleXMLList(xml){
+function SimpleXMLList(xml, tagname){
// 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);
+ this.xmlitems = xml.getElementsByTagName(tagname);
} catch (e) {
debug("[SimpleXMLList] parsing e2simplexmllist"+e);
}
+ this.xmllist = [];
+
this.getList = function(){
- var lst = [];
- for(var i=0;i<this.xmlitems.length;i++){
- lst.push(this.xmlitems.item(i).firstChild.data);
+ if(this.xmllist.length === 0){
+ for(var i=0;i<this.xmlitems.length;i++){
+ this.xmllist.push(this.xmlitems.item(i).firstChild.data);
+ }
}
- return lst;
+
+ return this.xmllist;
};
}
// END SimpleXMLList
-//START class Settings
-function Settings(xml){
- // parsing values from xml-element
- //debug('init ServiceList'+xml);
- try{
- this.xmlitems = xml.getElementsByTagName("e2settings").item(0).getElementsByTagName("e2setting");
- debug("[Settings] Number of items: " + this.xmlitems);
- } catch (e) {
- //debug("Service parsing Error");
- }
- this.getArray = function(){
- var listxy = [];
- for (var i=0;i<this.xmlitems.length;i++){
- var xv = new Setting(this.xmlitems.item(i));
- listxy.push(xv);
- }
- return listxy;
- };
-}
-//END class Settings
-//START class Setting
+// START class Setting
function Setting(xml){
- // parsing values from xml-element
- //debug('init ServiceReference'+xml);
- try{
- this.settingvalue = xml.getElementsByTagName('e2settingvalue').item(0).firstChild.data;
- this.settingname = xml.getElementsByTagName('e2settingname').item(0).firstChild.data;
-
- } catch (e) {
- //debug("Service parsing Error "+e);
- }
+ this.settingvalue = getNodeContent(xml, 'e2settingvalue');
+ this.settingname = getNodeContent(xml, 'e2settingname');
this.getSettingValue = function(){
return this.settingvalue;
};
}
-//START class FileList
-function FileList(xml){
- // parsing values from xml-element
- debug('[FileList] init: ' + xml);
- try{
- this.xmlitems = xml.getElementsByTagName("e2filelist").item(0).getElementsByTagName("e2file");
- } catch (e) {
- debug("[FileList] parsing Error");
- }
- this.getArray = function(){
- var listxy = [];
- for(var i=0;i<this.xmlitems.length;i++){
- //debug("parsing File "+i+" of "+this.xmlitems.length);
- var xv = new File(this.xmlitems.item(i));
- listxy.push(xv);
- }
- return listxy;
- };
-}
-//END class FileList
-
-//START class File
-function File(xml){
- // parsing values from xml-element
- //debug('init Movie');
- try{
- this.servicereference = xml.getElementsByTagName('e2servicereference').item(0).firstChild.data;
- } catch (e) {
- this.servicereference = "N/A";
- }
- this.getServiceReference = function(){
- return this.servicereference;
- };
-
- this.getNameOnly = function(){
- if(this.root == '/') {
- return this.servicereference;
- } else {
- return this.servicereference.replace(new RegExp('.*'+this.root, "i"), '');
- }
- };
-
- try{
- this.isdirectory = xml.getElementsByTagName('e2isdirectory').item(0).firstChild.data;
- } catch (e) {
- this.isdirectory = "N/A";
- }
-
- this.getIsDirectory = function(){
- return this.isdirectory;
- };
-
- try{
- this.root = xml.getElementsByTagName('e2root').item(0).firstChild.data;
- } catch (e) {
- this.root = "N/A";
- }
-
- this.getRoot = function(){
- return this.root;
- };
-}
-//END class File
-
-//START class NoteList
-function NoteList(xml){
+// START class Settings
+function Settings(xml){
// parsing values from xml-element
try{
- this.xmlitems = xml.getElementsByTagName("e2noteslist").item(0).getElementsByTagName("e2note");
+ this.xmlitems = xml.getElementsByTagName("e2settings").item(0).getElementsByTagName("e2setting");
+ debug("[Settings] Number of items: " + this.xmlitems);
} catch (e) {
- debug("[NoteList] parsing Error");
- }
+ debug("[Settings] parsing Error");
+ }
+ this.settings = [];
+
this.getArray = function(){
- var listxy = [];
- for(var i=0;i<this.xmlitems.length;i++){
- var xv = new Note(this.xmlitems.item(i));
- listxy.push(xv);
+ if(this.settings.length === 0){
+ for (var i=0;i<this.xmlitems.length;i++){
+ var setting = new Setting(this.xmlitems.item(i));
+ this.settings.push(setting);
+ }
}
- return listxy;
- };
-}
-//END class NoteList
-
-//START class Note
-function Note(xml){
- try{
- this.filename = xml.getElementsByTagName('e2notename').item(0).firstChild.data;
- } catch (e) {
- this.filename = "N/A";
- }
- try{
- this.saved = xml.getElementsByTagName('e2notesaved').item(0).firstChild.data;
- } catch (e) {
- this.saved = "N/A";
- }
- try{
- this.nameold = xml.getElementsByTagName('e2notenameold').item(0).firstChild.data;
- } catch (e) {
- this.nameold = "False";
- }
- try{
- this.content = xml.getElementsByTagName('e2notecontent').item(0).firstChild.data;
- } catch (e) {
- this.content = " ";
- }
- try{
- this.size = xml.getElementsByTagName('e2notesize').item(0).firstChild.data;
- } catch (e) {
- this.size = "N/A";
- }
- try{
- this.mtime = new Date(parseInt(xml.getElementsByTagName('e2notemtime').item(0).firstChild.data, 10)*1000);
- } catch (e) {
- this.mtime = "N/A";
- }
- try{
- this.ctime = new Date(parseInt(xml.getElementsByTagName('e2notectime').item(0).firstChild.data, 10)*1000);
- } catch (e) {
- this.ctime = "N/A";
- }
-
- this.getMTime = function(){
- var Wochentag = ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"];
- var wday = Wochentag[this.mtime.getDay()];
- var day = this.mtime.getDate();
- var month = this.mtime.getMonth()+1;
- var year = this.mtime.getFullYear();
- return wday+". "+day+"."+month+"."+year+" "+this.mtime.getHours()+":"+this.mtime.getMinutes();
- };
-
- this.getCTime = function(){
- var Wochentag = ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"];
- var wday = Wochentag[this.ctime.getDay()];
- var day = this.ctime.getDate();
- var month = this.ctime.getMonth()+1;
- var year = this.ctime.getFullYear();
- return wday+". "+day+"."+month+"."+year+" "+this.ctime.getHours()+":"+this.ctime.getMinutes();
+
+ return this.settings;
};
}
-//END class NoteList
+//END class Settings
<button onClick="vlcNext()" title="Next Service">
<img src="/web-data/tpl/default/streaminterface/img/control_end_blue.png" alt="<<" />
</button>
-<!-- <button onClick="vlcPause()" title="Pause">-->
-<!-- <img src="/web-data/tpl/default/streaminterface/img/control_pause_blue.png" alt="||" />-->
-<!-- </button>-->
<button onClick="vlcStop()" title="Stop">
<img src="/web-data/tpl/default/streaminterface/img/control_stop_blue.png" alt="Stop" />
</button>
<button onClick="vlcVolumeUp()" title="Volume Up">
<img src="/web-data/tpl/default/streaminterface/img/sound_add.png" alt="Vol+" />
</button>
-
+ <input type="checkbox" id="vlcZap" title="Also zap on TV (for Subservices)">Zap</input>
<br>
<span id="bouquetList"></span>
<span id="channelList"></span>
addTimerEditFormArray.locationsList = [];
addTimerEditFormArray.tagsList = [];
-days = ['mo', 'tu', 'we', 'th', 'fr', 'sa', 'su'];
-
+var days = [ 'mo', 'tu', 'we', 'th', 'fr', 'sa', 'su' ];
+var servicereftoloadepgnow = '';
// 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
+// 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 result = {};
+ var tvblist = addTimerEditFormArray.TVList;
+ var radioblist = addTimerEditFormArray.RadioList;
+ var currbouquet = addTimerEditFormArray.currBouquetName;
+ var currblist = addTimerEditFormArray.currBouquetList;
var found = false;
- for (element in currblist) {
+ for (var element in currblist) {
if (addTimerEditFormArray.channel == element) {
found = true;
break;
result[addTimerEditFormArray.channel] = addTimerEditFormArray.channelName;
}
if (currbouquet) {
- result["<Currbouquet>"] = "-- "+currbouquet+" --";
- for (element in currblist) {
+ result["<Currbouquet>"] = "-- " + currbouquet + " --";
+ for (var element in currblist) {
result[element] = currblist[element];
}
}
result["<Bouquets>"] = "-- Bouquets --";
- for (element in tvblist) {
+ for (var element in tvblist) {
result[element] = tvblist[element];
}
- for (element in radioblist) {
+ for (var element in radioblist) {
result[element] = radioblist[element];
}
return result;
}
function addTimerFormChangeChannel(newchannel) {
- tvblist = addTimerEditFormArray.TVList;
- radioblist = addTimerEditFormArray.RadioList;
+ var tvblist = addTimerEditFormArray.TVList;
+ var radioblist = addTimerEditFormArray.RadioList;
if (newchannel == "<Currbouquet>" || newchannel == "<Bouquets>") {
// reset selection to last valid channel
- for (i=0; i<$('channel').options.length; i++) {
+ for ( var 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) {
+ var found = false;
+ for (var element in tvblist) {
if (element == newchannel) {
found = true;
addTimerEditFormArray.currBouquetName = tvblist[element];
}
}
if (!found) {
- for(element in radioblist) {
+ for (var element in radioblist) {
if (element == newchannel) {
found = true;
addTimerEditFormArray.currBouquetName = radioblist[element];
if (found) {
// bouquet selected, update menu
servicereftoloadepgnow = newchannel;
- if(typeof(loadedChannellist[servicereftoloadepgnow]) == "undefined") {
- doRequest(url_getServices+servicereftoloadepgnow, incomingAddTimerFormChangeChannel, true);
+ 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++) {
+ 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"){
+ if (typeof (loadedChannellist[servicereftoloadepgnow]) != "undefined") {
services = loadedChannellist[servicereftoloadepgnow];
- } else if(request.readyState == 4) {
+ } else if (request.readyState == 4) {
services = new ServiceList(getXML(request)).getArray();
- loadedChannellist[servicereftoloadepgnow] = services;
+ 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();
+ if (services !== null) {
+ debug("[incomingAddTimerFormChangeChannel] Got " + services.length + " Services");
+ for ( var i = 0; i < services.length; i++) {
+ var reference = services[i];
+ addTimerEditFormArray.currBouquetList[reference
+ .getServiceReference()] = reference.getServiceName();
}
}
- lst = addTimerFormPrepareChannelMenu();
+ var 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) {
+ for (var 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++;
+ i++;
}
}
function addTimerFormPrepareTagsMenu(currtags) {
- result = {};
- resultsuff = {};
- taglist = addTimerEditFormArray.tagsList;
+ var result = {};
+ var resultsuff = {};
+ var taglist = addTimerEditFormArray.tagsList;
- if (currtags == "") {
+ if (currtags === "") {
i = 0;
result[""] = "<None>";
- for (i = 0; i < taglist.length; i++) {
+ for ( var 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 tags = currtags.split(" ");
+ for ( var 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];
+ for ( var j = 0; j < tags.length; j++) {
+ if (tags[j] != taglist[i]) {
+ res += " " + tags[j];
} else {
found = true;
}
}
if (!found) {
- res += " "+taglist[i];
+ res += " " + taglist[i];
}
if (res.length > 0) {
- res = res.substring(1,res.length);
+ res = res.substring(1, res.length);
}
if (found) {
- resultsuff[res] = "- "+taglist[i];
+ resultsuff[res] = "- " + taglist[i];
} else {
- result[res] = "+ "+taglist[i];
+ result[res] = "+ " + taglist[i];
}
}
if (tags.length > 1) {
- for (ele in resultsuff) {
+ for (var ele in resultsuff) {
result[ele] = resultsuff[ele];
}
}
}
function addTimerFormChangeTags(newtags) {
- lst = addTimerFormPrepareTagsMenu(newtags);
+ var lst = addTimerFormPrepareTagsMenu(newtags);
- for (i = $('tags').options.length; i !== 0; i--) {
+ for ( var i = $('tags').options.length; i !== 0; i--) {
$('tags').options[i - 1] = null;
}
-
- for(element in lst) {
- $('tags').options[i] = new Option(lst[element]);
- $('tags').options[i].value = element;
- i++;
+
+ for (var element in lst) {
+ $('tags').options[i] = new Option(lst[element]);
+ $('tags').options[i].value = element;
+ i++;
}
}
-
// Timer
-function addTimerByID(sRef,eventID,justplay){
- if(parentPin(sRef)) {
- debug("[addTimerByID] eventID: "+eventID);
- doRequest(url_timeraddbyeventid+"?sRef="+sRef+"&eventid="+eventID+"&justplay="+justplay, incomingTimerAddResult, false);
+function addTimerByID(sRef, eventID, justplay) {
+ if (parentPin(sRef)) {
+ debug("[addTimerByID] eventID: " + eventID);
+ doRequest(url_timeraddbyeventid + "?sRef=" + sRef + "&eventid=" +
+ eventID + "&justplay=" + justplay, incomingTimerAddResult, false);
}
}
-function incomingTimerAddResult(request){
+function incomingTimerAddResult(request) {
debug("[incomingTimerAddResult] called");
- if(request.readyState == 4){
+ if (request.readyState == 4) {
var result = new SimpleXMLResult(getXML(request));
- if(result.getState()){
+ if (result.getState()) {
//timer has been added
notify(result.getStateText(), result.getState());
loadTimerList();
- }else{
+ } else {
notify(result.getStateText(), result.getState());
}
}
}
-function loadTimerList(){
- doRequest(url_timerlist, incomingTimerList, false);
+function loadTimerList() {
+ doRequest(url_timerlist, incomingTimerList, false);
}
-
-function incomingTimerList(request){
- if(request.readyState == 4){
+function incomingTimerList(request) {
+ if (request.readyState == 4) {
var timers = new TimerList(getXML(request)).getArray();
debug("[incomingTimerList] Got " + timers.length + " timers");
- var aftereventReadable = ['Nothing', 'Standby', 'Deepstandby/Shutdown', 'Auto'];
- var justplayReadable = ['record', 'zap'];
-
+ var aftereventReadable = [ 'Nothing', 'Standby',
+ 'Deepstandby/Shutdown', 'Auto' ];
+ var justplayReadable = [ 'record', 'zap' ];
+
var namespace = [];
var cssclass = "even";
-
- for ( var i = 0; i < timers.length; i++){
+
+ for ( var i = 0; i < timers.length; i++) {
var timer = timers[i];
- var beginDate = new Date(Number(timer.getTimeBegin())*1000);
- var endDate = new Date(Number(timer.getTimeEnd())*1000);
-
- var enDis = timer.getToggleDisabledIMG() == "on" ? "Disable Timer" : "Enable Timer";
-
+ var beginDate = new Date(Number(timer.getTimeBegin()) * 1000);
+ var endDate = new Date(Number(timer.getTimeEnd()) * 1000);
+
cssclass = cssclass == 'even' ? 'odd' : 'even';
-
- namespace[i] = {
- 'servicereference': timer.getServiceReference(),
- 'servicename': quotes2html(timer.getServiceName()),
- 'title': quotes2html(timer.getName()),
- 'description': quotes2html(timer.getDescription()),
- 'descriptionextended': quotes2html(timer.getDescriptionExtended()),
- 'begin': timer.getTimeBegin(),
- 'beginDate': dateToString(beginDate),
- 'end': timer.getTimeEnd(),
- 'endDate': dateToString(endDate),
- 'state': timer.getState(),
- 'duration': Math.ceil((timer.getDuration()/60)),
- 'repeated': timer.getRepeated(),
- 'repeatedReadable': repeatedReadable(timer.getRepeated()),
- 'justplay': timer.getJustplay(),
- 'justplayReadable': justplayReadable[Number(timer.getJustplay())],
- 'afterevent': timer.getAfterevent(),
- 'aftereventReadable': aftereventReadable[Number(timer.getAfterevent())],
+
+ namespace[i] = {
+ 'servicereference' : timer.getServiceReference(),
+ 'servicename' : quotes2html(timer.getServiceName()),
+ 'title' : quotes2html(timer.getName()),
+ 'description' : quotes2html(timer.getDescription()),
+ 'descriptionextended' : quotes2html(timer
+ .getDescriptionExtended()),
+ 'begin' : timer.getTimeBegin(),
+ 'beginDate' : dateToString(beginDate),
+ 'end' : timer.getTimeEnd(),
+ 'endDate' : dateToString(endDate),
+ 'state' : timer.getState(),
+ 'duration' : Math.ceil((timer.getDuration() / 60)),
+ 'repeated' : timer.getRepeated(),
+ 'repeatedReadable' : repeatedReadable(timer.getRepeated()),
+ 'justplay' : timer.getJustplay(),
+ 'justplayReadable' : justplayReadable[Number(timer
+ .getJustplay())],
+ 'afterevent' : timer.getAfterevent(),
+ 'aftereventReadable' : aftereventReadable[Number(timer
+ .getAfterevent())],
'dirname' : timer.getDirname(),
'tags' : timer.getTags(),
- 'disabled': timer.getDisabled(),
- 'onOff': timer.getToggleDisabledIMG(),
- 'enDis': timer.getToggleDisabledText(),
- 'cssclass': cssclass
- };
+ 'disabled' : timer.getDisabled(),
+ 'onOff' : timer.getToggleDisabledIMG(),
+ 'enDis' : timer.getToggleDisabledText(),
+ 'cssclass' : cssclass
+ };
}
- data = { timer : namespace };
+ var data = {
+ timer : namespace
+ };
processTpl('tplTimerList', data, 'contentMain');
}
}
function repeatedReadable(num) {
num = Number(num);
- if(num === 0) {
+ if (num === 0) {
return "One Time";
}
-
+
var retVal = "";
var Repeated = {};
- Repeated["Mo-Su"] =127;
+ Repeated["Mo-Su"] = 127;
Repeated["Mo-Fr"] = 31;
- Repeated["Su"] = 64;
- Repeated["Sa"] = 32;
- Repeated["Fr"] = 16;
- Repeated["Th"] = 8;
- Repeated["We"] = 4;
- Repeated["Tu"] = 2;
- Repeated["Mo"] = 1;
-
- for(rep in Repeated) {
- if(rep.toString() != 'extend') {
+ Repeated["Su"] = 64;
+ Repeated["Sa"] = 32;
+ Repeated["Fr"] = 16;
+ Repeated["Th"] = 8;
+ Repeated["We"] = 4;
+ Repeated["Tu"] = 2;
+ Repeated["Mo"] = 1;
+
+ for (var rep in Repeated) {
+ if (rep.toString() != 'extend') {
var check = Number(Repeated[rep]);
- if(!(~num & check)) {
+ if (!(~num & check)) {
num -= check;
- if(retVal === '') {
+ if (retVal === '') {
retVal += rep.toString();
} else {
- retVal = rep.toString()+','+retVal;
+ retVal = rep.toString() + ',' + retVal;
}
}
}
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(
- "Selected timer:\n" +
- "Channel: "+servicename+"\n" +
- "Title: "+title+"\n" +
- "Description: "+description+"\n" +
- "Are you sure that you want to delete the Timer?");
- if(result){
- debug("[delTimer] ok confirm panel");
- doRequest(url_timerdelete+"?sRef="+sRef+"&begin="+begin+"&end="+end, readyFunction, false);
+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("Selected timer:\n" + "Channel: " + servicename + "\n" +
+ "Title: " + title + "\n" + "Description: " + description + "\n" +
+ "Are you sure that you want to delete the Timer?");
+ if (result) {
+ debug("[delTimer] ok confirm panel");
+ doRequest(url_timerdelete + "?sRef=" + sRef + "&begin=" + begin +
+ "&end=" + end, readyFunction, false);
return true;
-
+
} else {
debug("[delTimer] cancel confirm panel");
}
return false;
}
-function incomingTimerDelResult(request){
+function incomingTimerDelResult(request) {
debug("[incomingTimerDelResult] called");
- if(request.readyState == 4){
+ if (request.readyState == 4) {
var result = new SimpleXMLResult(getXML(request));
notify(result.getStateText(), result.getState());
debug("[incomingTimerDelResult] Loading List");
loadTimerList();
- }
+ }
}
function loadTimerFormNow() {
addTimerEditFormArray.shour = now.getHours();
addTimerEditFormArray.smin = now.getMinutes();
- var plusTwoHours = new Date(now.getTime() + ((120 *60)*1000) );
+ var plusTwoHours = new Date(now.getTime() + ((120 * 60) * 1000));
addTimerEditFormArray.ehour = plusTwoHours.getHours();
addTimerEditFormArray.emin = plusTwoHours.getMinutes();
-
+
addTimerEditFormArray.justplay = "0";
addTimerEditFormArray.channel = "";
addTimerEditFormArray.channelName = "";
addTimerEditFormArray.repeated = 0;
addTimerEditFormArray.afterEvent = "3";
addTimerEditFormArray.deleteOldOnSave = 0;
-
+
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);
+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);
addTimerEditFormArray.year = start.getFullYear();
addTimerEditFormArray.month = start.getMonth() + 1;
addTimerEditFormArray.day = start.getDate();
addTimerEditFormArray.shour = start.getHours();
addTimerEditFormArray.smin = start.getMinutes();
-
- var stopp = new Date(Number(end)*1000);
+
+ var stopp = new Date(Number(end) * 1000);
addTimerEditFormArray.ehour = stopp.getHours();
addTimerEditFormArray.emin = stopp.getMinutes();
-
+
addTimerEditFormArray.justplay = String(justplay);
addTimerEditFormArray.channel = String(channel);
addTimerEditFormArray.channelName = String(channelName);
addTimerEditFormArray.tags = String(tags);
addTimerEditFormArray.repeated = Number(repeated);
addTimerEditFormArray.afterEvent = afterEvent;
-
- debug("[loadTimerEditForm]" + justplay + "|" + begin + "|" + end + "|" + repeated + "|"+channel+"|"+name+"|"+description+"|"+dirname+"|"+tags+"|"+afterEvent);
+
+ debug("[loadTimerEditForm]" + justplay + "|" + begin + "|" + end + "|" +
+ repeated + "|" + channel + "|" + name + "|" + description + "|" +
+ dirname + "|" + tags + "|" + afterEvent);
addTimerEditFormArray.deleteOldOnSave = Number(deleteOldOnSave);
addTimerEditFormArray.beginOld = Number(begin);
addTimerEditFormArray.endOld = Number(end);
-
+
addTimerEditFormArray.eventID = Number(eit);
-
+
loadTimerFormTags();
}
doRequest(url_gettags, incomingTimerFormTags, false);
}
-function incomingTimerFormTags(request){
+function incomingTimerFormTags(request) {
debug("[incomingTimerFormTags] called");
- if(request.readyState == 4){
- var result = new SimpleXMLList(getXML(request));
+ if (request.readyState == 4) {
+ var result = new SimpleXMLList(getXML(request), "e2tag");
addTimerEditFormArray.tagsList = result.getList();
loadTimerFormLocations();
- }
+ }
}
function loadTimerFormLocations() {
doRequest(url_getlocations, incomingTimerFormLocations, false);
}
-function incomingTimerFormLocations(request){
+function incomingTimerFormLocations(request) {
debug("[incomingTimerFormLocations] called");
- if(request.readyState == 4){
- var result = new SimpleXMLList(getXML(request));
+ if (request.readyState == 4) {
+ var result = new SimpleXMLList(getXML(request), "e2location");
addTimerEditFormArray.locationsList = result.getList();
- if (addTimerEditFormArray.locationsList.length == 0) {
- addTimerEditFormArray.locationsList = ["/hdd/movie"];
+ if (addTimerEditFormArray.locationsList.length === 0) {
+ addTimerEditFormArray.locationsList = [ "/hdd/movie" ];
}
loadTimerFormChannels();
- }
+ }
}
// starting to load for TV
function loadTimerFormChannels() {
- if(addTimerEditFormArray.TVListFilled === 1 && addTimerEditFormArray.RadioListFilled === 1) {
+ if (addTimerEditFormArray.TVListFilled === 1 &&
+ addTimerEditFormArray.RadioListFilled === 1) {
loadTimerForm();
- } else if(addTimerEditFormArray.TVListFilled === 1 && addTimerEditFormArray.RadioListFilled === 0) {
+ } else if (addTimerEditFormArray.TVListFilled === 1 &&
+ addTimerEditFormArray.RadioListFilled === 0) {
addTimerListFormatTV();
} else {
- doRequest(url_getServices+encodeURIComponent(bouquetsTv), addTimerListFormatTV, false);
+ doRequest(url_getServices + encodeURIComponent(bouquetsTv),
+ addTimerListFormatTV, false);
}
}
function addTimerListFormatTV(request) {
- if(addTimerEditFormArray.RadioListFilled === 0) {
- if(request.readyState == 4){
+ if (addTimerEditFormArray.RadioListFilled === 0) {
+ if (request.readyState == 4) {
var services = new ServiceList(getXML(request)).getArray();
var tv = {};
- for ( var i = 0; i < services.length ; i++){
+ for ( var i = 0; i < services.length; i++) {
var reference = services[i];
- tv[reference.getServiceReference()] = reference.getServiceName();
+ tv[reference.getServiceReference()] = reference
+ .getServiceName();
}
addTimerEditFormArray.TVListFilled = 1;
addTimerEditFormArray.TVList = tv;
}
}
- if(addTimerEditFormArray.RadioListFilled == 1) {
+ if (addTimerEditFormArray.RadioListFilled == 1) {
loadTimerForm();
} else {
- doRequest(url_getServices+encodeURIComponent(bouquetsRadio), addTimerListFormatRadio, false);
+ doRequest(url_getServices + encodeURIComponent(bouquetsRadio),
+ addTimerListFormatRadio, false);
}
}
function addTimerListFormatRadio(request) {
- if(request.readyState == 4){
+ if (request.readyState == 4) {
var services = new ServiceList(getXML(request)).getArray();
var radio = {};
- for ( var i = 0; i < services.length ; i++){
+ for ( var i = 0; i < services.length; i++) {
var reference = services[i];
radio[reference.getServiceReference()] = reference.getServiceName();
}
loadTimerForm();
}
-function loadTimerForm(){
+function loadTimerForm() {
var Action = {};
Action["0"] = "Record";
Action["1"] = "Zap";
-
+
var Repeated = {};
- Repeated["1"] = "mo";
+ Repeated["1"] = "mo";
Repeated["2"] = "tu";
- Repeated["4"] = "we";
- Repeated["8"] = "th";
+ Repeated["4"] = "we";
+ Repeated["8"] = "th";
Repeated["16"] = "fr";
Repeated["32"] = "sa";
Repeated["64"] = "su";
Repeated["31"] = "mf";
Repeated["127"] = "ms";
-
+
var AfterEvent = {};
AfterEvent["0"] = "Nothing";
AfterEvent["1"] = "Standby";
AfterEvent["2"] = "Deepstandby/Shutdown";
AfterEvent["3"] = "Auto";
-
- addTimerEditFormArray.name = (typeof(addTimerEditFormArray.name) != 'undefined') ? addTimerEditFormArray.name : '';
- addTimerEditFormArray.name = (addTimerEditFormArray.name === '') ? ' ' : addTimerEditFormArray.name;
- addTimerEditFormArray.description = (typeof(addTimerEditFormArray.description) != 'undefined') ? addTimerEditFormArray.description : '';
- addTimerEditFormArray.description = (addTimerEditFormArray.description === '') ? ' ' : addTimerEditFormArray.description;
+ addTimerEditFormArray.name = (typeof (addTimerEditFormArray.name) != 'undefined') ? addTimerEditFormArray.name
+ : '';
+ addTimerEditFormArray.name = (addTimerEditFormArray.name === '') ? ' '
+ : addTimerEditFormArray.name;
+
+ addTimerEditFormArray.description = (typeof (addTimerEditFormArray.description) != 'undefined') ? addTimerEditFormArray.description
+ : '';
+ addTimerEditFormArray.description = (addTimerEditFormArray.description === '') ? ' '
+ : addTimerEditFormArray.description;
- var channelObject = addTimerFormPrepareChannelMenu(addTimerEditFormArray.TVList, addTimerEditFormArray.RadioList);
+ var channelObject = addTimerFormPrepareChannelMenu(
+ addTimerEditFormArray.TVList, addTimerEditFormArray.RadioList);
var locationsObject = {};
- for (i = 0; i < addTimerEditFormArray.locationsList.length; i++) {
+ for ( var i = 0; i < addTimerEditFormArray.locationsList.length; i++) {
str = addTimerEditFormArray.locationsList[i];
locationsObject[str] = str;
}
var tagsObject = addTimerFormPrepareTagsMenu(addTimerEditFormArray.tags);
- var namespace = {
- year: createOptions(2008,2015,addTimerEditFormArray.year),
- month: createOptions(1,12,addTimerEditFormArray.month),
- day: createOptions(1,31,addTimerEditFormArray.day),
- shour: createOptions(0,23,addTimerEditFormArray.shour),
- smin: createOptions(0,59,addTimerEditFormArray.smin),
- ehour: createOptions(0,23,addTimerEditFormArray.ehour),
- emin: createOptions(0,59,addTimerEditFormArray.emin),
- action: createOptionList(Action, addTimerEditFormArray.justplay),
- channel: createOptionList(channelObject, addTimerEditFormArray.channel),
- afterEvent: createOptionList(AfterEvent, addTimerEditFormArray.afterEvent),
- repeated: createOptionListRepeated(Repeated, addTimerEditFormArray.repeated),
- dirname: createOptionList(locationsObject, addTimerEditFormArray.dirname),
- tags: createOptionList(tagsObject, addTimerEditFormArray.tags),
-
- timer: {
- name: addTimerEditFormArray.name,
- description: addTimerEditFormArray.description,
- deleteOldOnSave: addTimerEditFormArray.deleteOldOnSave,
- channelOld: addTimerEditFormArray.channel,
- beginOld: addTimerEditFormArray.beginOld,
- endOld: addTimerEditFormArray.endOld,
- eventID: addTimerEditFormArray.eventID
- }
- };
- data = namespace;
+ var namespace = {
+ 'year' : createOptions(2008, 2015, addTimerEditFormArray.year),
+ 'month' : createOptions(1, 12, addTimerEditFormArray.month),
+ 'day' : createOptions(1, 31, addTimerEditFormArray.day),
+ 'shour' : createOptions(0, 23, addTimerEditFormArray.shour),
+ 'smin' : createOptions(0, 59, addTimerEditFormArray.smin),
+ 'ehour' : createOptions(0, 23, addTimerEditFormArray.ehour),
+ 'emin' : createOptions(0, 59, addTimerEditFormArray.emin),
+ 'action' : createOptionList(Action, addTimerEditFormArray.justplay),
+ 'channel' : createOptionList(channelObject,
+ addTimerEditFormArray.channel),
+ 'afterEvent' : createOptionList(AfterEvent,
+ addTimerEditFormArray.afterEvent),
+ 'repeated' : createOptionListRepeated(Repeated,
+ addTimerEditFormArray.repeated),
+ 'dirname' : createOptionList(locationsObject,
+ addTimerEditFormArray.dirname),
+ 'tags' : createOptionList(tagsObject, addTimerEditFormArray.tags),
+
+ 'timer' : {
+ 'name' : addTimerEditFormArray.name,
+ 'description' : addTimerEditFormArray.description,
+ 'deleteOldOnSave' : addTimerEditFormArray.deleteOldOnSave,
+ 'channelOld' : addTimerEditFormArray.channel,
+ 'beginOld' : addTimerEditFormArray.beginOld,
+ 'endOld' : addTimerEditFormArray.endOld,
+ 'eventID' : addTimerEditFormArray.eventID
+ }
+ };
+ var data = namespace;
processTpl('tplTimerEdit', data, 'contentMain');
- /*
- var listerHtml = RND(tplAddTimerForm, namespace);
- $('BodyContent').innerHTML = listerHtml;
- */
}
function createOptions(start, end, number) {
- var namespace =[];
-
- for(i = start; i <= end; i++) {
+ var namespace = [];
+
+ for ( var i = start; i <= end; i++) {
var txt = (String(i).length == 1) ? "0" + String(i) : String(i);
- var selected = (i == Number(number)) ? "selected" : " ";
+ var selected = (i == Number(number)) ? "selected" : " ";
namespace[i] = {
- 'value': i,
- 'txt': txt,
- 'selected': selected };
+ 'value' : i,
+ 'txt' : txt,
+ 'selected' : selected
+ };
}
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 = " ";
-
- if(element == selected) {
+
+ if (element == selected) {
sel = "selected";
}
-
- if(element != "extend") {
+
+ if (element != "extend") {
namespace[i] = {
- 'value': element,
- 'txt': txt,
- 'selected': sel };
+ 'value' : element,
+ 'txt' : txt,
+ 'selected' : sel
+ };
i++;
}
}
}
function createOptionListRepeated(Repeated, repeated) {
- num = Number(repeated);
-
- list = [1, 2, 4, 8, 16, 32, 64, 31, 127];
- namespace = [];
- checked = [];
+ var num = Number(repeated);
+
+ var list = [ 1, 2, 4, 8, 16, 32, 64, 31, 127 ];
+ var namespace = [];
+ var checked = [];
- for(var i = 0; i < list.length; i++) {
+ for ( var i = 0; i < list.length; i++) {
checked[i] = " ";
- if (!(~num & list[list.length-1-i])) {
- num -= list[list.length-1-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") {
+ for ( var i = 0; i < list.length; i++) {
+ var txt = String(Repeated[String(list[i])]);
+ if (String(Repeated[String(list[i])]) == "mf") {
txt = "Mo-Fr";
- } else if( String(Repeated[String(list[i])]) == "ms") {
+ } else if (String(Repeated[String(list[i])]) == "ms") {
txt = "Mo-Su";
} else {
- txt = txt.substr(0,1).toUpperCase() + txt.substr(1,1);
+ txt = txt.substr(0, 1).toUpperCase() + txt.substr(1, 1);
}
- namespace[i] = { 'id': Repeated[String(list[i])],
- 'name': Repeated[String(list[i])],
- 'value': list[i],
- 'txt': txt,
- 'checked': checked[list.length-1-i]
+ namespace[i] = {
+ 'id' : Repeated[String(list[i])],
+ 'name' : Repeated[String(list[i])],
+ 'value' : list[i],
+ 'txt' : txt,
+ 'checked' : checked[list.length - 1 - i]
};
}
return namespace;
}
function sendAddTimer() {
- debug("[sendAddTimer]" + "parentChannel:" +$('channel').value);
-
- if(parentPin($('channel').value)) {
- beginD = new Date(ownLazyNumber($('year').value), (ownLazyNumber($('month').value) - 1), ownLazyNumber($('day').value), ownLazyNumber($('shour').value), ownLazyNumber($('smin').value));
- begin = beginD.getTime()/1000;
-
- endD = new Date(ownLazyNumber($('year').value), (ownLazyNumber($('month').value) - 1), ownLazyNumber($('day').value), ownLazyNumber($('ehour').value), ownLazyNumber($('emin').value));
- end = endD.getTime()/1000;
- if(end<begin) {
+ debug("[sendAddTimer]" + "parentChannel:" + $('channel').value);
+
+ if (parentPin($('channel').value)) {
+ var beginD = new Date(parseNr($('year').value),
+ (parseNr($('month').value) - 1), parseNr($('day').value),
+ parseNr($('shour').value), parseNr($('smin').value));
+ var begin = beginD.getTime() / 1000;
+
+ var endD = new Date(parseNr($('year').value),
+ (parseNr($('month').value) - 1), parseNr($('day').value),
+ parseNr($('ehour').value), parseNr($('emin').value));
+ var end = endD.getTime() / 1000;
+ if (end < begin) {
end += 86400;
}
- descriptionClean = ($('descr').value == " " || $('descr').value == "N/A") ? "" : $('descr').value;
- nameClean = ($('name').value == " " || $('name').value == "N/A") ? "" : $('name').value;
-
+ var descriptionClean = ($('descr').value == " " || $('descr').value == "N/A") ? ""
+ : $('descr').value;
+ var nameClean = ($('name').value == " " || $('name').value == "N/A") ? ""
+ : $('name').value;
+
descriptionClean = encodeURIComponent(descriptionClean);
nameClean = encodeURIComponent(nameClean);
-
- dirname = encodeURIComponent($F($('timerDir').dirname));
- tags = encodeURIComponent($F($('timerTags').tags));
-
- repeated = 0;
- if($('ms').checked) {
- repeated = ownLazyNumber($('ms').value);
- } else if($('mf').checked) {
- repeated = ownLazyNumber($('mf').value);
- if($('su').checked) {
- repeated += ownLazyNumber($('su').value);
+
+ var dirname = encodeURIComponent($F($('timerDir').dirname));
+ var tags = encodeURIComponent($F($('timerTags').tags));
+
+ var repeated = 0;
+ if ($('ms').checked) {
+ repeated = parseNr($('ms').value);
+ } else if ($('mf').checked) {
+ repeated = parseNr($('mf').value);
+ if ($('su').checked) {
+ repeated += parseNr($('su').value);
}
- if($('sa').checked) {
- repeated += ownLazyNumber($('sa').value);
+ if ($('sa').checked) {
+ repeated += parseNr($('sa').value);
}
} else {
- for(i = 0; i < days.length; i++){
- if($(days[i]).checked) {
- repeated += ownLazyNumber($(days[i]).value);
+ for ( var i = 0; i < days.length; i++) {
+ if ($(days[i]).checked) {
+ repeated += parseNr($(days[i]).value);
}
}
}
//addTimerByID(\'%(servicereference)\',\'%(eventid)\',\'False\');
- doRequest(url_timerchange+"?"+"sRef="+($('channel').value).replace(""", '"')+"&begin="+ begin +
- "&end="+end+"&name="+nameClean+"&description="+descriptionClean+
- "&dirname="+dirname+"&tags="+tags +
- "&afterevent="+$('after_event').value+"&eit=0&disabled=0" +
- "&justplay="+ownLazyNumber($('justplay').value)+"&repeated="+repeated +
- "&channelOld="+$('channelOld').value +
- "&beginOld="+$('beginOld').value+"&endOld="+$('endOld').value +
- "&eventID"+$('eventID').value +
- "&deleteOldOnSave="+ownLazyNumber($('deleteOldOnSave').value), incomingTimerAddResult, false);
+ doRequest(url_timerchange + "?" + "sRef=" +
+ ($('channel').value).replace(""", '"') + "&begin=" +
+ begin + "&end=" + end + "&name=" + nameClean +
+ "&description=" + descriptionClean + "&dirname=" + dirname+
+ "&tags=" + tags + "&afterevent=" + $('after_event').value +
+ "&eit=0&disabled=0" + "&justplay=" + parseNr($('justplay').value) +
+ "&repeated=" + repeated + "&channelOld=" + $('channelOld').value +
+ "&beginOld=" + $('beginOld').value + "&endOld=" + $('endOld').value +
+ "&eventID" + $('eventID').value + "&deleteOldOnSave=" +
+ parseNr($('deleteOldOnSave').value), incomingTimerAddResult, false
+ );
}
}
-
-function cleanTimerListNow(){
+function cleanTimerListNow() {
debug("[cleanTimerListNow] called");
- result = confirm ("Do you really want to cleanup the List of Timers?");
- if(result){
+ var result = confirm("Do you really want to cleanup the List of Timers?");
+ if (result) {
doRequest(url_timercleanup, incomingCleanTimerListNow, false);
}
}
-
function incomingCleanTimerListNow(request) {
- if(request.readyState == 4){
+ if (request.readyState == 4) {
var result = new SimpleXMLResult(getXML(request));
notify(result.getStateText(), result.getState());
loadTimerList();
}
}
-
-function incomingJustDoNothing(request){
+function incomingJustDoNothing(request) {
debug("[incomingJustDoNothing] called");
}
+function sendToggleTimerDisable(justplay, begin, end, repeated, channel, name,
+ description, dirname, tags, afterEvent, disabled) {
+ disabled = (parseNr(disabled) === 0) ? 1 : 0;
-function sendToggleTimerDisable(justplay,begin,end,repeated,channel,name,description,dirname,tags,afterEvent,disabled){
- disabled = (ownLazyNumber(disabled) === 0) ? 1 : 0;
-
- var descriptionClean = (description == " " || description == "N/A") ? "" : description;
+ var descriptionClean = (description == " " || description == "N/A") ? ""
+ : description;
var nameClean = (name == " " || name == "N/A") ? "" : name;
-
+
nameClean = encodeURIComponent(nameClean);
descriptionClean = encodeURIComponent(descriptionClean);
tags = encodeURIComponent(tags);
-
- doRequest(url_timerchange+"?"+"sRef="+channel.replace(""", '"')+"&begin="+begin +
- "&end="+end+"&name="+nameClean+"&description="+descriptionClean+
- "&dirname="+dirname+"&tags="+tags +
- "&afterevent="+afterEvent+"&eit=0&disabled="+disabled +
- "&justplay="+justplay+"&repeated="+repeated +
- "&channelOld="+channel +
- "&beginOld="+begin+"&endOld="+end +
- "&deleteOldOnSave=1", incomingTimerAddResult, false);
+
+ doRequest(url_timerchange + "?" + "sRef=" + channel.replace(""", '"') +
+ "&begin=" + begin + "&end=" + end + "&name=" + nameClean+
+ "&description=" + descriptionClean + "&dirname=" + dirname +
+ "&tags=" + tags + "&afterevent=" + afterEvent + "&eit=0&disabled=" +
+ disabled + "&justplay=" + justplay + "&repeated=" + repeated +
+ "&channelOld=" + channel + "&beginOld=" + begin + "&endOld=" + end +
+ "&deleteOldOnSave=1", incomingTimerAddResult, false
+ );
}
function recordNowDecision(recordNowCurrent) {
var recordNow = "infinite";
- if(recordNowCurrent == true){
- recordNow = "current"
+ if (recordNowCurrent === true) {
+ recordNow = "current";
}
- doRequest(url_recordnow+"?recordnow="+recordNow, incomingTimerAddResult, false);
+ doRequest(url_recordnow + "?recordnow=" + recordNow,
+ incomingTimerAddResult, false);
}
-function incomingWriteTimerListNow(request){
+function incomingWriteTimerListNow(request) {
var result = new SimpleXMLResult(getXML(request));
notify(result.getStateText(), result.getState());
}
function writeTimerListNow() {
- var request = doRequest(url_timerlistwrite, incomingWriteTimerListNow);
+ doRequest(url_timerlistwrite, incomingWriteTimerListNow);
}
-// $Header$
+//$Header$
-var doRequestMemory = {};
-var doRequestMemorySave = {};
-var signalPanelData = {};
-var epgListData = {};
-var bouquetsMemory = {};
-var loadedChannellist = {};
var templates = {};
+var loadedChannellist = {};
-var mediaPlayerStarted = false;
+var epgListData = {};
+var signalPanelData = {};
+
+var mediaPlayerStarted = false;
var popUpBlockerHinted = false;
var settings = null;
var parentControlList = null;
-
var requestcounter = 0;
var debugWin = '';
var signalWin = '';
var webRemoteWin = '';
-var signalPanelUpdatePoller = '';
-var EPGListWindow = '';
+var EPGListWin = '';
var currentBouquet = bouquetsTv;
var updateBouquetItemsPoller = '';
var updateCurrentPoller = '';
+var signalPanelUpdatePoller = '';
+
+var hideNotifierTimeout = '';
+
+var isActive = {};
+isActive.getCurrent = false;
var currentLocation = "/hdd/movie";
var locationsList = [];
var boxtype = "";
-function pollCurrent(){
- updateCurrentPoller = setInterval(updateItems, 7500);
+function startUpdateCurrentPoller(){
+ updateCurrentPoller = setInterval(updateItems, 10000);
+}
+
+function stopUpdateCurrentPoller(){
+ clearInterval(updateCurrentPoller);
+}
+
+function getXML(request){
+ var xmlDoc = "";
+
+ if(window.ActiveXObject){ // we're on IE
+ xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
+ xmlDoc.async="false";
+ xmlDoc.loadXML(request.responseText);
+ } else { //we're not on IE
+ if (!window.google || !google.gears){
+ xmlDoc = request.responseXML;
+ } else { //no responseXML on gears
+ xmlDoc = (new DOMParser()).parseFromString(request.responseText, "text/xml");
+ }
+ }
+
+ return xmlDoc;
}
/*
- * Set boxtype Variable for being able of determining model specific stuff correctly (like WebRemote)
- */
-function incomingAboutBoxtype(request){
+* Set boxtype Variable for being able of determining model specific stuff correctly (like WebRemote)
+*/
+function incomingDeviceInfoBoxtype(request){
debug("[incomingAboutBoxtype] returned");
- var xml = getXML(request).getElementsByTagName("e2abouts").item(0).getElementsByTagName("e2about");
- xml = xml.item(0);
-
- boxtype = xml.getElementsByTagName('e2model').item(0).firstChild.data;
+ var boxtype = getXML(request).getElementsByTagName("e2devicename").item(0).firstChild.data;
+
debug("[incomingAboutBoxtype] Boxtype: " + boxtype);
}
function getBoxtype(){
- doRequest(url_about, incomingAboutBoxtype, false);
+ doRequest(url_deviceinfo, incomingDeviceInfoBoxtype, false);
}
-function notify(text, state){
- switch(state){
- case false:
- $('notification').style.background = "#C00";
- break;
- default:
- $('notification').style.background = "#85C247";
+function set(element, value){
+ element = parent.$(element);
+ if (element){
+ element.innerHTML = value;
}
-
- set('notification', "<div>"+text+"</div>");
- $('notification').appear({duration : 0.5, to: 0.9 });
- setTimeout(hideNotifier, 3000);
}
function hideNotifier(){
- $('notification').fade({duration : 0.5 })
+ $('notification').fade({duration : 0.5 });
+}
+
+function notify(text, state){
+ notif = $('notification');
+
+ if(notif !== null){
+ //clear possibly existing hideNotifier Timeout from previous notfication
+ clearTimeout(hideNotifierTimeout);
+ if(state === false){
+ notif.style.background = "#C00";
+ } else {
+ notif.style.background = "#85C247";
+ }
+
+ set('notification', "<div>"+text+"</div>");
+ notif.appear({duration : 0.5, to: 0.9 });
+ hideNotifierTimeout = setTimeout(hideNotifier, 7500);
+ }
}
+
function simpleResultHandler(simpleResult){
notify(simpleResult.statetext, simpleResult.state);
}
-
function startUpdateBouquetItemsPoller(){
debug("[startUpdateBouquetItemsPoller] called");
updateBouquetItemsPoller = setInterval(updateItemsLazy, 60000);
}
//General Helpers
-function ownLazyNumber(num) {
+function parseNr(num) {
if(isNaN(num)){
return 0;
} else {
hex = "0"+hex;
}
}
- catch(e){}
+ catch(e){
+ //something went wrong, return -1
+ hex = -1;
+ }
}
return hex;
}
function quotes2html(txt) {
- return txt.replace(/'/g, "\\'").replace(/"/g, '"');
+ if(typeof(txt) != "undefined"){
+ return txt.replace(/'/g, "\\'").replace(/"/g, '"');
+ } else {
+ return "";
+ }
}
function addLeadingZero(nr){
function dateToString(date){
var dateString = "";
-
+
dateString += date.getFullYear();
dateString += "-" + addLeadingZero(date.getMonth()+1);
dateString += "-" + addLeadingZero(date.getDate());
dateString += " " + addLeadingZero(date.getHours());
dateString += ":" + addLeadingZero(date.getMinutes());
-
+
return dateString;
}
function showhide(id){
- var o = $(id).style;
- o.display = (o.display!="none")? "none":"";
+ var s = $(id).style;
+ s.display = (s.display!="none")? "none":"";
}
function show(id){
try{
$(id).style.display = "";
- } catch(e) {}
+ } catch(e) {
+// debug("[show] Could not show element with id: " + id);
+ }
}
function hide(id){
try{
$(id).style.display = "none";
- } catch(e) {}
-}
-
-
-function set(element, value){
- if(element == "CurrentService") {
- if(value.search(/^MP3 File:/) != -1) {
- value = value.replace(/.*\//, '');
- }
- }
- element = parent.$(element);
- if(value.length > 550) {
- value = value.substr(0,550) + "[...]";
- }
- if (element){
- element.innerHTML = value;
- }
- if(navigator.userAgent.indexOf("MSIE") >=0) {
- try{
- var elementscript = $('UpdateStreamReaderIEFixIFrame').$('scriptzone');
- if(elementscript){
- elementscript.innerHTML = ""; // deleting set() from page, to keep the page short and to save memory
- }
- }
- catch(e){}
- }
-}
-
-
-function setComplete(element, value){
- //debug(element+"-"+value);
- element = parent.$(element);
- if (element){
- element.innerHTML = value;
- }
- if(navigator.userAgent.indexOf("MSIE") >= 0) {
- elementscript= $('UpdateStreamReaderIEFixIFrame').$('scriptzone');
- if(elementscript){
- elementscript.innerHTML = ""; // deleting set() from page, to keep the page short and to save memory
- }
+ } catch(e) {
+// debug("[hide] Could not hide element with id: " + id);
}
}
/*
- * Sets the Loading Notification to the given HTML Element
- * @param targetElement - The element the Ajax-Loader should be set in
- */
+* Sets the Loading Notification to the given HTML Element
+* @param targetElement - The element the Ajax-Loader should be set in
+*/
function setAjaxLoad(targetElement){
$(targetElement).innerHTML = getAjaxLoad();
}
function popUpBlockerHint(){
if(!popUpBlockerHinted){
- messageBox("Please disable your Popup-Blocker for enigma2 WebControl to work flawlessly!");
popUpBlockerHinted = true;
+ messageBox("Please disable your Popup-Blocker for enigma2 WebControl to work flawlessly!");
+
}
}
function openPopup(title, html, width, height, x, y){
try {
- var popup = window.open('about:blank',title,'scrollbars=yes, width='+width+',height='+height);
+ var popup = window.open('about:blank',title,'scrollbars=yes, width='+width+',height='+height);
setWindowContent(popup, html);
return popup;
} catch(e){
}
}
+function openPopupPage(title, uri, width, height, x, y){
+ try {
+ var popup = window.open(uri,title,'scrollbars=yes, width='+width+',height='+height);
+ return popup;
+ } catch(e){
+ popUpBlockerHint();
+ return "";
+ }
+}
+
+function debug(text){
+ if(DBG){
+ try{
+ if(!debugWin.closed && debugWin.location){
+ var inner = debugWin.document.getElementById('debugContent').innerHTML;
+ debugWin.document.getElementById('debugContent').innerHTML = new Date().toLocaleString() + ": "+text+"<br>" + inner;
+ }
+ } catch (Exception) {
+ popUpBlockerHint();
+ }
+
+ }
+}
+
+
//Template Helpers
function saveTpl(request, tplName){
debug("[saveTpl] saving template: " + tplName);
try{
$(domElement).innerHTML = result;
}catch(ex){
-// debug("[renderTpl] exception: " + ex);
+ // debug("[renderTpl] exception: " + ex);
}
}
function fetchTpl(tplName, callback){
if(typeof(templates[tplName]) == "undefined") {
var url = url_tpl+tplName+".htm";
- var options = {
- asynchronous: true,
- method: 'GET',
- requestHeaders: ['Pragma', 'no-cache', 'Cache-Control', 'must-revalidate', 'If-Modified-Since', 'Sat, 1 Jan 2000 00:00:00 GMT'],
- onException: function(o, e){
- debug("[fetchTpl] exception "+ e);
- throw(e);
- },
- onSuccess: function(transport){
- saveTpl(transport, tplName);
- if(typeof(callback) == 'function'){
- callback();
- }
- },
- onComplete: requestFinished
- };
-
- var request = new Ajax.Request(url, options);
+
+ doRequest(
+ url,
+ function(transport){
+ saveTpl(transport, tplName);
+ if(typeof(callback) == 'function'){
+ callback();
+ }
+ }
+ );
} else {
- if(typeof(callback) != 'undefined'){
+ if(typeof(callback) == 'function'){
callback();
}
}
function processTpl(tplName, data, domElement, callback){
var url = url_tpl+tplName+".htm";
- var request = new Ajax.Request(url,
- {
- asynchronous: true,
- method: 'GET',
- requestHeaders: ['Pragma', 'no-cache', 'Cache-Control', 'must-revalidate', 'If-Modified-Since', 'Sat, 1 Jan 2000 00:00:00 GMT'],
- onException: function(o, e){
- debug("[processTpl] exception " + e);
- debug("[processTpl] exception " + typeof(o));
- throw(e);
- },
- onSuccess: function(transport){
- incomingProcessTpl(transport, data, domElement, callback);
- },
- onComplete: requestFinished
- });
+
+ doRequest(url,
+ function(transport){
+ incomingProcessTpl(transport, data, domElement, callback);
+ }
+ );
}
//Debugging Window
function openDebug(){
- debugWin = openPopup("Debug", templates.tplDebug, 500, 300);
-}
-
-
-function loadAndOpenDebug(){
- fetchTpl('tplDebug', openDebug);
-}
-
-
-function debug(text){
- if(DBG){
- try{
- if(!debugWin.closed && debugWin.location){
- var inner = debugWin.document.getElementById('debugContent').innerHTML;
- debugWin.document.getElementById('debugContent').innerHTML = new Date().toLocaleString() + ": "+text+"<br>" + inner;
- }
- } catch (Exception) {
- popUpBlockerHint();
- }
-
- }
+ var uri = url_tpl+'tplDebug.htm';
+ debugWin = openPopupPage("Debug", uri, 500, 300);
}
-
-
-// end requestindikator
-function doRequest(url, readyFunction, save){
+function doRequest(url, readyFunction){
requestStarted();
- doRequestMemorySave[url] = save;
-// debug("[doRequest] Requesting: "+url);
-/*
- if(save == true && typeof(doRequestMemory[url]) != "undefined") {
- readyFunction(doRequestMemory[url]);
- } else {
-*/
+ // gears or not that's the question here
+ if (!window.google || !google.gears){ //no gears, how sad
+// debug("NO GEARS!!");
+ var request = '';
try{
- var request = new Ajax.Request(url,
- {
- asynchronous: true,
- method: 'GET',
- requestHeaders: ['Pragma', 'no-cache', 'Cache-Control', 'must-revalidate', 'If-Modified-Since', 'Sat, 1 Jan 2000 00:00:00 GMT'],
- onException: function(o,e){ throw(e); },
- onSuccess: function (transport, json) {
- if(typeof(doRequestMemorySave[url]) != "undefined") {
- if(doRequestMemorySave[url]) {
-// debug("[doRequest] saving request");
- doRequestMemory[url] = transport;
- }
- }
- if(typeof(readyFunction) != "undefined"){
- readyFunction(transport);
- }
- },
- onComplete: requestFinished
- });
+ request = new Ajax.Request(url,
+ {
+ asynchronous: true,
+ method: 'GET',
+ requestHeaders: ['Pragma', 'no-cache', 'Cache-Control', 'must-revalidate', 'If-Modified-Since', 'Sat, 1 Jan 2000 00:00:00 GMT'],
+ onException: function(o,e){ throw(e); },
+ onSuccess: function (transport, json) {
+ if(typeof(readyFunction) != "undefined"){
+ readyFunction(transport);
+ }
+ },
+ onComplete: requestFinished
+ });
} catch(e) {}
-// }
-}
-
-function getXML(request){
- var xmlDoc = "";
-
- if(window.ActiveXObject){ // we're on IE
- xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
- xmlDoc.async="false";
- xmlDoc.loadXML(request.responseText);
- } else { //we're not on IE
- xmlDoc = request.responseXML;
+ } else { //we're on gears!
+ try{
+ request = google.gears.factory.create('beta.httprequest');
+ request.open('GET', url);
+
+// request.setRequestHeader('Pragma', 'no-cache');
+// request.setRequestHeader('Cache-Control', 'must-revalidate');
+// request.setRequestHeader('If-Modified-Since', 'Sat, 1 Jan 2000 00:00:00
+// GMT');
+
+ if( typeof(readyFunction) != "undefined" ){
+ request.onreadystatechange = function(){
+ if(request.readyState == 4){
+ if(request.status == 200){
+ readyFunction(request);
+ } else {
+ //we COULD do some error handling here
+ }
+ }
+ };
+ }
+ request.send();
+ } catch(e) {}
}
-
- return xmlDoc;
}
-
//Parental Control
function incomingParentControl(request) {
if(request.readyState == 4){
}
+//Settings
+function getSettingByName(txt) {
+ debug("[getSettingByName] (" + txt + ")");
+ for(var i = 0; i < settings.length; i++) {
+ debug("("+settings[i].getSettingName()+") (" +settings[i].getSettingValue()+")");
+ if(String(settings[i].getSettingName()) == String(txt)) {
+ return settings[i].getSettingValue().toLowerCase();
+ }
+ }
+ return "";
+}
+
function parentPin(servicereference) {
- debug ("parentPin: parentControlList");
+ debug("[parentPin] parentControlList");
servicereference = decodeURIComponent(servicereference);
if(parentControlList === null || String(getSettingByName("config.ParentalControl.configured")) != "true") {
return true;
}
-//Settings
-function getSettingByName(txt) {
- debug("[getSettingByName] (" + txt + ")");
- for(var i = 0; i < settings.length; i++) {
- debug("("+settings[i].getSettingName()+") (" +settings[i].getSettingValue()+")");
- if(String(settings[i].getSettingName()) == String(txt)) {
- return settings[i].getSettingValue().toLowerCase();
- }
- }
- return "";
-}
-
-
function incomingGetDreamboxSettings(request){
if(request.readyState == 4){
- var settings = new Settings(getXML(request)).getArray();
- }
- debug ("starte getParentControl " + getSettingByName("config.ParentalControl.configured"));
- if(String(getSettingByName("config.ParentalControl.configured")) == "true") {
- getParentControl();
+ settings = new Settings(getXML(request)).getArray();
+
+ debug("[incomingGetDreamboxSettings] config.ParentalControl.configured="+ getSettingByName("config.ParentalControl.configured"));
+
+ if(String(getSettingByName("config.ParentalControl.configured")) == "true") {
+ getParentControl();
+ }
}
+
+
+
}
if(request.readyState == 4){
var services = new ServiceList(getXML(request)).getArray();
debug("[incomingSubServiceRequest] Got " + services.length + " SubServices");
-
+
if(services.length > 1) {
-
- var first = services[0];
- var last = false;
+ var first = services[0];
var namespace = [];
-
- //we already have the main service in our servicelist so we'll start with the second element
+
+ // we already have the main service in our servicelist so we'll
+ // start with the second element
for ( var i = 1; i < services.length ; i++){
var reference = services[i];
namespace[i] = {
- 'servicereference': reference.getServiceReference(),
- 'servicename': reference.getServiceName()
+ 'servicereference': reference.getServiceReference(),
+ 'servicename': reference.getServiceName()
};
}
var data = { subservices : namespace };
-
-
+
+
var id = 'SUB'+first.getServiceReference();
show('tr' + id);
processTpl('tplSubServices', data, id);
//zap zap
function zap(servicereference){
- var request = new Ajax.Request( "/web/zap?sRef=" + servicereference,
- {
- asynchronous: true,
- method: 'get'
- }
- );
+ doRequest("/web/zap?sRef=" + servicereference);
delayedGetSubservices();
+ updateItems();
}
//SignalPanel
function updateSignalPanel(){
var html = templates.tplSignalPanel.process(signalPanelData);
-
+
if (!signalWin.closed && signalWin.location) {
setWindowContent(signalWin, html);
} else {
function incomingSignalPanel(request){
var namespace = {};
-
+
if (request.readyState == 4){
var xml = getXML(request).getElementsByTagName("e2frontendstatus").item(0);
namespace = {
- snrdb : xml.getElementsByTagName('e2snrdb').item(0).firstChild.data,
- snr : xml.getElementsByTagName('e2snr').item(0).firstChild.data,
- ber : xml.getElementsByTagName('e2ber').item(0).firstChild.data,
- acg : xml.getElementsByTagName('e2acg').item(0).firstChild.data
+ snrdb : xml.getElementsByTagName('e2snrdb').item(0).firstChild.data,
+ snr : xml.getElementsByTagName('e2snr').item(0).firstChild.data,
+ ber : xml.getElementsByTagName('e2ber').item(0).firstChild.data,
+ acg : xml.getElementsByTagName('e2acg').item(0).firstChild.data
};
}
-
+
signalPanelData = { signal : namespace };
fetchTpl('tplSignalPanel', updateSignalPanel);
}
function showEpgList(){
var html = templates.tplEpgList.process(epgListData);
-
- if (!EPGListWindow.closed && EPGListWindow.location) {
- setWindowContent(EPGListWindow, html);
+
+ if (!EPGListWin.closed && EPGListWin.location) {
+ setWindowContent(EPGListWin, html);
} else {
- EPGListWindow = openPopup("EPG", html, 900, 500);
+ EPGListWin = openPopup("EPG", html, 900, 500);
}
}
try{
var item = EPGItems[i];
namespace[i] = {
- 'date': item.getTimeDay(),
- 'eventid': item.getEventId(),
- 'servicereference': item.getServiceReference(),
- 'servicename': quotes2html(item.getServiceName()),
- 'title': quotes2html(item.getTitle()),
- 'titleESC': escape(item.getTitle()),
- 'starttime': item.getTimeStartString(),
- 'duration': Math.ceil(item.getDuration()/60000),
- 'description': quotes2html(item.getDescription()),
- 'endtime': item.getTimeEndString(),
- 'extdescription': quotes2html(item.getDescriptionExtended()),
- 'number': String(i),
- 'start': item.getTimeBegin(),
- 'end': item.getTimeEnd()
+ 'date': item.getTimeDay(),
+ 'eventid': item.getEventId(),
+ 'servicereference': item.getServiceReference(),
+ 'servicename': quotes2html(item.getServiceName()),
+ 'title': quotes2html(item.getTitle()),
+ 'titleESC': escape(item.getTitle()),
+ 'starttime': item.getTimeStartString(),
+ 'duration': Math.ceil(item.getDuration()/60000),
+ 'description': quotes2html(item.getDescription()),
+ 'endtime': item.getTimeEndString(),
+ 'extdescription': quotes2html(item.getDescriptionExtended()),
+ 'number': String(i),
+ 'start': item.getTimeBegin(),
+ 'end': item.getTimeEnd()
};
-
+
} catch (Exception) {
debug("[incomingEPGrequest] Error rendering: " + Exception);
}
}
-
+
epgListData = {epg : namespace};
fetchTpl('tplEpgList', showEpgList);
} else {
}
//function extdescriptionSmall(txt,num) {
-// if(txt.length > 410) {
-// var shortTxt = txt.substr(0,410);
-// txt = txt.replace(/\'\'/g, '"');
-// txt = txt.replace(/\\/g, '\\\\');
-// txt = txt.replace(/\'/g, '\\\'');
-// txt = txt.replace(/\"/g, '"');
-// var smallNamespace = { 'txt':txt,'number':num, 'shortTxt':shortTxt};
-// return RND(tplEPGListItemExtend, smallNamespace);
-// } else {
-// return txt;
-// }
-//}
+//if(txt.length > 410) {
+//var shortTxt = txt.substr(0,410);
+//txt = txt.replace(/\'\'/g, '"');
+//txt = txt.replace(/\\/g, '\\\\');
+//txt = txt.replace(/\'/g, '\\\'');
+//txt = txt.replace(/\"/g, '"');
+//var smallNamespace = { 'txt':txt,'number':num, 'shortTxt':shortTxt};
+//return RND(tplEPGListItemExtend, smallNamespace);
+//} else {
+//return txt;
+//}
+//}
function buildServiceListEPGItem(epgevent, type){
var namespace = {
- 'starttime': epgevent.getTimeStartString(),
- 'title': epgevent.getTitle(),
- 'length': Math.ceil(epgevent.duration/60)
+ 'starttime': epgevent.getTimeStartString(),
+ 'title': epgevent.getTitle(),
+ 'length': Math.ceil(epgevent.duration/60)
};
var data = {epg : namespace};
- //e.innerHTML = RND(tplServiceListEPGItem, namespace);
-
+ // e.innerHTML = RND(tplServiceListEPGItem, namespace);
+
var id = type + epgevent.getServiceReference();
-
+
show('tr' + id);
-
- if(typeof(templates.tplServiceListEPGItem) != "undefined"){
- renderTpl(templates.tplServiceListEPGItem, data, id, true);
- } else {
- debug("[buildServiceListEPGItem] tplServiceListEPGItem N/A");
- }
+
+ if(typeof(templates.tplServiceListEPGItem) != "undefined"){
+ renderTpl(templates.tplServiceListEPGItem, data, id, true);
+ } else {
+ debug("[buildServiceListEPGItem] tplServiceListEPGItem N/A");
+ }
}
function incomingServiceEPGNowNext(request, type){
} catch (e){
debug("[incomingServiceEPGNowNext]" + e);
}
-
+
if (epgEvt.getEventId() != 'None'){
buildServiceListEPGItem(epgEvt, type);
}
function loadServiceEPGNowNext(servicereference, next){
var url = url_epgnow+servicereference;
-
+
if(typeof(next) == 'undefined'){
doRequest(url, incomingServiceEPGNow, false);
} else {
function recordNowPopup(){
- var result = confirm( "OK: Record current event\n" +
- "Cancel: Start infinite recording"
- )
-
+ var result = confirm(
+ "OK: Record current event\n" +
+ "Cancel: Start infinite recording"
+ );
+
if( result === true || result === false){
recordNowDecision(result);
}
//+++++++++++++++++++++++++++++++++++++++++++++++++++++
//+++++++++++++++++++++++++++++++++++++++++++++++++++++
-//++++ volume functions ++++
+//++++ volume functions ++++
//+++++++++++++++++++++++++++++++++++++++++++++++++++++
//+++++++++++++++++++++++++++++++++++++++++++++++++++++
function handleVolumeRequest(request){
var newvalue = b.item(0).getElementsByTagName('e2current').item(0).firstChild.data;
var mute = b.item(0).getElementsByTagName('e2ismuted').item(0).firstChild.data;
debug("[handleVolumeRequest] Volume " + newvalue + " | Mute: " + mute);
-
+
for (var i = 1; i <= 10; i++) {
if ( (newvalue/10)>=i){
$("volume"+i).src = "/web-data/img/led_on.png";
getVolume();
}
-//Channels and Bouquets
+//Channels and Bouquets
+
function incomingChannellist(request){
var services = null;
if(typeof(loadedChannellist[currentBouquet]) != "undefined"){
if(services !== null) {
var namespace = {};
var cssclass = "even";
-
+
for ( var i = 0; i < services.length ; i++){
-
+
cssclass = cssclass == 'even' ? 'odd' : 'even';
-
+
var service = services[i];
namespace[i] = {
- 'servicereference' : service.getServiceReference(),
- 'servicename' : service.getServiceName(),
- 'cssclass' : cssclass
+ 'servicereference' : service.getServiceReference(),
+ 'servicename' : service.getServiceName(),
+ 'cssclass' : cssclass
};
}
var data = {
- services : namespace
+ services : namespace
};
-
+
processTpl('tplServiceList', data, 'contentMain', getBouquetEpg);
delayedGetSubservices();
} else {
debug("[loadBouquet] called");
currentBouquet = servicereference;
-
+
setContentHd(name);
setAjaxLoad('contentMain');
-
+
startUpdateBouquetItemsPoller();
-
+
doRequest(url_getServices+servicereference, incomingChannellist, true);
}
var bouquetList = new ServiceList(getXML(request)).getArray();
debug("[incomingBouquetListInitial] Got " + bouquetList.length + " TV Bouquets!");
- //loading first entry of TV Favorites as default for ServiceList
+ // loading first entry of TV Favorites as default for ServiceList
loadBouquet(bouquetList[0].getServiceReference(), bouquetList[0].getServiceName());
}
}
function renderBouquetTable(list, target){
debug("[renderBouquetTable] Rendering " + list.length + " Bouquets");
-
+
var namespace = [];
if (list.length < 1){
debug("[renderBouquetTable] NO BOUQUETS!");
try{
var bouquet = list[i];
namespace[i] = {
- 'servicereference': bouquet.getServiceReference(),
- 'bouquetname': bouquet.getServiceName()
+ 'servicereference': bouquet.getServiceReference(),
+ 'bouquetname': bouquet.getServiceName()
};
} catch (e) { }
}
var data = {
- services : namespace
+ services : namespace
};
-
+
processTpl('tplBouquetList', data, 'contentMain');
}
function initChannelList(){
var url = url_getServices+encodeURIComponent(bouquetsTv);
currentBouquet = bouquetsTv;
-
+
doRequest(url, incomingBouquetListInitial, true);
}
-// Movies
+//Movies
function initMovieList(){
// get videodirs, last_videodir, and all tags
- doRequest(url_getcurrlocation, initMovieList1, false);
+ doRequest(url_getcurrlocation, incomingMovieListCurrentLocation, false);
}
-function initMovieList1(request){
+function incomingMovieListCurrentLocation(request){
if(request.readyState == 4){
- result = new SimpleXMLList(getXML(request));
+ result = new SimpleXMLList(getXML(request), "e2location");
currentLocation = result.getList()[0];
- doRequest(url_getlocations, initMovieList2, false);
+ debug("[incomingMovieListCurrentLocation].currentLocation" + currentLocation);
+ doRequest(url_getlocations, incomingMovieListLocations, false);
}
}
-function initMovieList2(request){
+function incomingMovieListLocations(request){
if(request.readyState == 4){
- result = new SimpleXMLList(getXML(request));
+ result = new SimpleXMLList(getXML(request), "e2location");
locationsList = result.getList();
- if (locationsList.length == 0) {
+
+ if (locationsList.length === 0) {
locationsList = ["/hdd/movie"];
}
- doRequest(url_gettags, initMovieList3, false);
+ doRequest(url_gettags, incomingMovieListTags, false);
}
}
-function initMovieList3(request){
+function incomingMovieListTags(request){
if(request.readyState == 4){
- result = new SimpleXMLList(getXML(request));
+ result = new SimpleXMLList(getXML(request), "e2tag");
tagsList = result.getList();
}
}
-function createOptionList2(lst, selected) {
+function createOptionListSimple(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" : " ")};
+ var i = 0;
+ var 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;
+ var data = {
+ dirname: createOptionListSimple(locationsList, currentLocation),
+ tags: createOptionListSimple(tagsList, "")
+ };
+
processTpl('tplNavMovies', data, 'navContent');
}
function incomingMovieList(request){
if(request.readyState == 4){
-
+
var movies = new MovieList(getXML(request)).getArray();
debug("[incomingMovieList] Got "+movies.length+" movies");
namespace = [];
-
+
var cssclass = "even";
-
+
for ( var i = 0; i < movies.length; i++){
cssclass = cssclass == 'even' ? 'odd' : 'even';
-
+
var movie = movies[i];
namespace[i] = {
- 'servicereference': movie.getServiceReference(),
- 'servicename': movie.getServiceName() ,
- 'title': movie.getTitle(),
- 'description': movie.getDescription(),
- 'descriptionextended': movie.getDescriptionExtended(),
- 'filelink': String(movie.getFilename()).substr(17,movie.getFilename().length),
- 'filename': String(movie.getFilename()),
- 'filesize': movie.getFilesizeMB(),
- 'tags': movie.getTags().join(', ') ,
- 'length': movie.getLength() ,
- 'time': movie.getTimeDay()+" "+ movie.getTimeStartString(),
- 'cssclass' : cssclass
+ 'servicereference': escape(movie.getServiceReference()),
+ 'servicename': movie.getServiceName(),
+ 'title': movie.getTitle(),
+ 'escapedTitle': escape(movie.getTitle()),
+ 'description': movie.getDescription(),
+ 'descriptionextended': movie.getDescriptionExtended(),
+ 'filelink': String(movie.getFilename()).substr(17,movie.getFilename().length),
+ 'filename': String(movie.getFilename()),
+ 'filesize': movie.getFilesizeMB(),
+ 'tags': movie.getTags().join(', ') ,
+ 'length': movie.getLength() ,
+ 'time': movie.getTimeDay()+" "+ movie.getTimeStartString(),
+ 'cssclass' : cssclass
};
}
var data = { movies : namespace };
function delMovie(sref ,servicename, title, description) {
- debug("[delMovie] File(" + sref + "), servicename(" + servicename + ")," +
- "title(" + title + "), description(" + description + ")");
-
+ debug("[delMovie] File(" + unescape(sref) + "), servicename(" + servicename + ")," +
+ "title(" + unescape(title) + "), description(" + description + ")");
+
result = confirm( "Are you sure want to delete the Movie?\n" +
- "Servicename: "+servicename+"\n" +
- "Title: "+title+"\n" +
- "Description: "+description+"\n");
+ "Servicename: " + servicename + "\n" +
+ "Title: " + unescape(title) + "\n" +
+ "Description: " + description + "\n");
if(result){
debug("[delMovie] ok confirm panel");
- doRequest(url_moviedelete+"?sRef="+sref, incomingDelMovieResult, false);
+ doRequest(url_moviedelete+"?sRef="+unescape(sref), incomingDelMovieResult, false);
return true;
}
else{
var index = $('MessageSendFormType').selectedIndex;
messagetype = $('MessageSendFormType').options[index].value;
}
- if(ownLazyNumber(messagetype) === 0){
- var request = doRequest(url_message+'?text='+messagetext+'&type='+messagetype+'&timeout='+messagetimeout);
-
- setTimeout(getMessageAnswer, ownLazyNumber(messagetimeout)*1000);
+ if(parseNr(messagetype) === 0){
+ doRequest(url_message+'?text='+messagetext+'&type='+messagetype+'&timeout='+messagetimeout);
+ setTimeout(getMessageAnswer, parseNr(messagetimeout)*1000);
} else {
doRequest(url_message+'?text='+messagetext+'&type='+messagetype+'&timeout='+messagetimeout, incomingMessageResult, false);
}
//Screenshots
function getScreenShot(what) {
debug("[getScreenShot] called");
-
+
var buffer = new Image();
var downloadStart;
var data = {};
-
+
buffer.onload = function () {
debug("[getScreenShot] image assigned");
-
+
data = { img : { src : buffer.src } };
processTpl('tplGrab', data, 'contentMain');
return true;
};
-
+
buffer.onerror = function (meldung) {
debug("[getScreenShot] Loading image failed");
return true;
};
-
+
switch(what){
- case "o":
- what = "&o&n";
- break;
- case "v":
- what = "&v";
- break;
- default:
- what = "";
- break;
- }
-
+ case "o":
+ what = "&o&n";
+ break;
+ case "v":
+ what = "&v";
+ break;
+ default:
+ what = "";
+ break;
+ }
+
downloadStart = new Date().getTime();
buffer.src = '/grab?format=jpg&r=720&' + what + '&filename=/tmp/' + downloadStart;
}
getScreenShot("o");
}
-// RemoteControl Code
+//RemoteControl Code
function incomingRemoteControlResult(request){
- if(request.readyState == 4){
- var b = getXML(request).getElementsByTagName("e2remotecontrol");
- var result = b.item(0).getElementsByTagName('e2result').item(0).firstChild.data;
- var resulttext = b.item(0).getElementsByTagName('e2resulttext').item(0).firstChild.data;
- } //else {
- //TODO Some Error Handling
+// if(request.readyState == 4){
+// var b = getXML(request).getElementsByTagName("e2remotecontrol");
+// var result = b.item(0).getElementsByTagName('e2result').item(0).firstChild.data;
+// var resulttext = b.item(0).getElementsByTagName('e2resulttext').item(0).firstChild.data;
// }
}
function openWebRemote(){
var template = templates.tplWebRemoteOld;
-
+
if(boxtype == "dm8000"){
template = templates.tplWebRemote;
}
-
-
+
+
if (!webRemoteWin.closed && webRemoteWin.location) {
setWindowContent(webRemoteWin, template);
} else {
webRemoteWin = openPopup('WebRemote', template, 250, 600);
}
-
+
}
}
-
-
// Array.insert( index, value ) - Insert value at index, without overwriting existing keys
Array.prototype.insert = function( j, v ) {
if( j>=0 ) {
}
};
-// Array.splice() - Remove or replace several elements and return any deleted elements
+//Array.splice() - Remove or replace several elements and return any deleted
+//elements
if( typeof Array.prototype.splice==='undefined' ) {
Array.prototype.splice = function( a, c ) {
var e = arguments, d = this.copy(), f = a, l = this.length;
-
+
if( !c ) {
c = l - a;
}
-
+
for( var i = 0; i < e.length - 2; i++ ) {
this[a + i] = e[i + 2];
}
-
-
+
+
for( var j = a; j < l - c; j++ ) {
this[j + e.length - 2] = d[j - c];
}
this.length -= c - e.length + 2;
-
+
return d.slice( f, f + c );
};
}
////Recording
//function incomingRecordingPushed(request) {
-// if(request.readyState == 4){
-// var timers = new TimerList(getXML(request)).getArray();
-// debug("[incomingRecordingPushed] Got " + timers.length + " timers");
-//
-// var aftereventReadable = ['Nothing', 'Standby', 'Deepstandby/Shutdown', 'Auto'];
-// var justplayReadable = ['record', 'zap'];
-// var OnOff = ['on', 'off'];
-//
-// var namespace = [];
-//
-// for ( var i = 0; i <timers.length; i++){
-// var timer = timers[i];
-//
-// if(ownLazyNumber(timer.getDontSave()) == 1) {
-// var beginDate = new Date(Number(timer.getTimeBegin())*1000);
-// var endDate = new Date(Number(timer.getTimeEnd())*1000);
-// namespace[i] = {
-// 'servicereference': timer.getServiceReference(),
-// 'servicename': timer.getServiceName() ,
-// 'title': timer.getName(),
-// 'description': timer.getDescription(),
-// 'descriptionextended': timer.getDescriptionExtended(),
-// 'begin': timer.getTimeBegin(),
-// 'beginDate': beginDate.toLocaleString(),
-// 'end': timer.getTimeEnd(),
-// 'endDate': endDate.toLocaleString(),
-// 'state': timer.getState(),
-// 'duration': Math.ceil((timer.getDuration()/60)),
-// 'dirname': timer.getDirname(),
-// 'tags': timer.getTags(),
-// 'repeated': timer.getRepeated(),
-// 'repeatedReadable': repeatedReadable(timer.getRepeated()),
-// 'justplay': timer.getJustplay(),
-// 'justplayReadable': justplayReadable[Number(timer.getJustplay())],
-// 'afterevent': timer.getAfterevent(),
-// 'aftereventReadable': aftereventReadable[Number(timer.getAfterevent())],
-// 'disabled': timer.getDisabled(),
-// 'onOff': OnOff[Number(timer.getDisabled())]
-// };
-// }
-// }
-// var data = { recordings : namespace };
-// openPopup("Record Now", 'tplTimerListItem', data, 900, 500, "Record now window");
-// }
+//if(request.readyState == 4){
+//var timers = new TimerList(getXML(request)).getArray();
+//debug("[incomingRecordingPushed] Got " + timers.length + " timers");
+
+//var aftereventReadable = ['Nothing', 'Standby', 'Deepstandby/Shutdown',
+//'Auto'];
+//var justplayReadable = ['record', 'zap'];
+//var OnOff = ['on', 'off'];
+
+//var namespace = [];
+
+//for ( var i = 0; i <timers.length; i++){
+//var timer = timers[i];
+
+//if(parseNr(timer.getDontSave()) == 1) {
+//var beginDate = new Date(Number(timer.getTimeBegin())*1000);
+//var endDate = new Date(Number(timer.getTimeEnd())*1000);
+//namespace[i] = {
+//'servicereference': timer.getServiceReference(),
+//'servicename': timer.getServiceName() ,
+//'title': timer.getName(),
+//'description': timer.getDescription(),
+//'descriptionextended': timer.getDescriptionExtended(),
+//'begin': timer.getTimeBegin(),
+//'beginDate': beginDate.toLocaleString(),
+//'end': timer.getTimeEnd(),
+//'endDate': endDate.toLocaleString(),
+//'state': timer.getState(),
+//'duration': Math.ceil((timer.getDuration()/60)),
+//'dirname': timer.getDirname(),
+//'tags': timer.getTags(),
+//'repeated': timer.getRepeated(),
+//'repeatedReadable': repeatedReadable(timer.getRepeated()),
+//'justplay': timer.getJustplay(),
+//'justplayReadable': justplayReadable[Number(timer.getJustplay())],
+//'afterevent': timer.getAfterevent(),
+//'aftereventReadable': aftereventReadable[Number(timer.getAfterevent())],
+//'disabled': timer.getDisabled(),
+//'onOff': OnOff[Number(timer.getDisabled())]
+//};
+//}
+//}
+//var data = { recordings : namespace };
+//openPopup("Record Now", 'tplTimerListItem', data, 900, 500, "Record now
+//window");
//}
-//
-//
+//}
+
+
//function recordingPushed() {
-// doRequest(url_timerlist, incomingRecordingPushed, false);
+//doRequest(url_timerlist, incomingRecordingPushed, false);
//}
//About
/*
- * Handles an incoming request for /web/about
- * Parses the Data, and calls everything needed to render the
- * Template using the parsed data and set the result into contentMain
- * @param request - the XHR
+ * Handles an incoming request for /web/deviceinfo Parses the Data, and calls
+ * everything needed to render the Template using the parsed data and set the
+ * result into contentMain @param request - the XHR
*/
function incomingAbout(request) {
if(request.readyState == 4){
- debug("[incomingAbout] returned");
- var xml = getXML(request).getElementsByTagName("e2abouts").item(0).getElementsByTagName("e2about");
+ debug("[incomingAbout] called");
+ var xml = getXML(request).getElementsByTagName("e2deviceinfo").item(0);
+
+ var info = {};
+
+ var nims = [];
+ var hdds = [];
+ var nics = [];
+
+ var fpversion = "V"+xml.getElementsByTagName('e2fpversion').item(0).firstChild.data;
+
+ var nimnodes = xml.getElementsByTagName('e2frontends').item(0).getElementsByTagName("e2frontend");
+ for(var i = 0; i < nimnodes.length; i++){
+ try {
+ var name = nimnodes.item(i).getElementsByTagName("e2name").item(0).firstChild.data;
+ var model = nimnodes.item(i).getElementsByTagName("e2model").item(0).firstChild.data;
+ nims[i] = {
+ 'name' : name,
+ 'model' : model
+ };
+ } catch (e) {
+ debug("[incomingAbout] error parsing NIM data: " + e);
+ }
+ }
- xml = xml.item(0);
-
- var namespace = {};
- var ns = [];
-
- try{
- var fptext = "V"+xml.getElementsByTagName('e2fpversion').item(0).firstChild.data;
-
-
- var nims = xml.getElementsByTagName('e2tunerinfo').item(0).getElementsByTagName("e2nim");
- debug("[incomingAbout] nims: "+nims.length);
- for(var i = 0; i < nims.length; i++){
-
- var name = nims.item(i).getElementsByTagName("name").item(0).firstChild.data;
- var type = nims.item(i).getElementsByTagName("type").item(0).firstChild.data;
- debug("[incomingAbout]" + name);
- debug("[incomingAbout]" + type);
- ns[i] = { 'name' : name, 'type' : type};
-
+
+ var hddnodes = xml.getElementsByTagName('e2hdd');
+ for( var i = 0; i < hddnodes.length; i++){
+ try{
+ var hdd = hddnodes.item(i);
+
+ var model = hdd.getElementsByTagName("e2model").item(0).firstChild.data;
+ var capacity = hdd.getElementsByTagName("e2capacity").item(0).firstChild.data;
+ var free = hdd.getElementsByTagName("e2free").item(0).firstChild.data;
+
+ hdds[i] = {
+ 'model' : model,
+ 'capacity' : capacity,
+ 'free' : free
+ };
+ } catch(e){
+ debug("[incomingAbout] error parsing HDD data: " + e);
}
-
-
- var hdddata = xml.getElementsByTagName('e2hddinfo').item(0);
-
- var hddmodel = hdddata.getElementsByTagName("model").item(0).firstChild.data;
- var hddcapacity = hdddata.getElementsByTagName("capacity").item(0).firstChild.data;
- var hddfree = hdddata.getElementsByTagName("free").item(0).firstChild.data;
+ }
- namespace = {
- 'model' : xml.getElementsByTagName('e2model').item(0).firstChild.data,
- 'enigmaVersion': xml.getElementsByTagName('e2enigmaversion').item(0).firstChild.data,
- 'fpVersion': fptext,
- 'webifversion': xml.getElementsByTagName('e2webifversion').item(0).firstChild.data,
- 'lanMac' : xml.getElementsByTagName('e2lanmac').item(0).firstChild.data,
- 'lanDHCP': xml.getElementsByTagName('e2landhcp').item(0).firstChild.data,
- 'lanIP': xml.getElementsByTagName('e2lanip').item(0).firstChild.data,
- 'lanNetmask': xml.getElementsByTagName('e2lanmask').item(0).firstChild.data,
- 'lanGateway': xml.getElementsByTagName('e2langw').item(0).firstChild.data,
-
- 'hddmodel': hddmodel,
- 'hddcapacity': hddcapacity,
- 'hddfree': hddfree,
-
- 'serviceName': xml.getElementsByTagName('e2servicename').item(0).firstChild.data,
- 'serviceProvider': xml.getElementsByTagName('e2serviceprovider').item(0).firstChild.data,
- 'serviceAspect': xml.getElementsByTagName('e2serviceaspect').item(0).firstChild.data,
- 'serviceVideosize': xml.getElementsByTagName('e2servicevideosize').item(0).firstChild.data,
- 'serviceNamespace': xml.getElementsByTagName('e2servicenamespace').item(0).firstChild.data,
-
- 'vPidh': '0x'+dec2hex(xml.getElementsByTagName('e2vpid').item(0).firstChild.data, 4),
- 'vPid': ownLazyNumber(xml.getElementsByTagName('e2vpid').item(0).firstChild.data),
- 'aPidh': '0x'+dec2hex(xml.getElementsByTagName('e2apid').item(0).firstChild.data, 4),
- 'aPid': ownLazyNumber(xml.getElementsByTagName('e2apid').item(0).firstChild.data),
- 'pcrPidh': '0x'+dec2hex(xml.getElementsByTagName('e2pcrid').item(0).firstChild.data, 4),
- 'pcrPid': ownLazyNumber(xml.getElementsByTagName('e2pcrid').item(0).firstChild.data),
- 'pmtPidh': '0x'+dec2hex(xml.getElementsByTagName('e2pmtpid').item(0).firstChild.data, 4),
- 'pmtPid': ownLazyNumber(xml.getElementsByTagName('e2pmtpid').item(0).firstChild.data),
- 'txtPidh': '0x'+dec2hex(xml.getElementsByTagName('e2txtpid').item(0).firstChild.data, 4),
- 'txtPid': ownLazyNumber(xml.getElementsByTagName('e2txtpid').item(0).firstChild.data),
- 'tsidh': '0x'+dec2hex(xml.getElementsByTagName('e2tsid').item(0).firstChild.data, 4),
- 'tsid': ownLazyNumber(xml.getElementsByTagName('e2tsid').item(0).firstChild.data),
- 'onidh': '0x'+dec2hex(xml.getElementsByTagName('e2onid').item(0).firstChild.data, 4),
- 'onid': ownLazyNumber(xml.getElementsByTagName('e2onid').item(0).firstChild.data),
- 'sidh': '0x'+dec2hex(xml.getElementsByTagName('e2sid').item(0).firstChild.data, 4),
- 'sid': ownLazyNumber(xml.getElementsByTagName('e2sid').item(0).firstChild.data)
- };
+ var nicnodes = xml.getElementsByTagName('e2interface');
+ for( var i = 0; i < nicnodes.length; i++){
+ try {
+ var nic = nicnodes.item(i);
+ var name = nic.getElementsByTagName("e2name").item(0).firstChild.data;
+ var mac = nic.getElementsByTagName("e2mac").item(0).firstChild.data;
+ var dhcp = nic.getElementsByTagName("e2dhcp").item(0).firstChild.data;
+ var ip = nic.getElementsByTagName("e2ip").item(0).firstChild.data;
+ var gateway = nic.getElementsByTagName("e2gateway").item(0).firstChild.data;
+ var netmask = nic.getElementsByTagName("e2netmask").item(0).firstChild.data;
+
+ nics[i] = {
+ 'name' : name,
+ 'mac' : mac,
+ 'dhcp' : dhcp,
+ 'ip' : ip,
+ 'gateway' : gateway,
+ 'netmask' : netmask
+ };
+ } catch (e) {
+ debug("[incomingAbout] error parsing NIC data: " + e);
+ }
+ }
+
+ try{
+ info = {
+ 'useGears' : gearsEnabled(),
+ 'devicename' : xml.getElementsByTagName('e2devicename').item(0).firstChild.data,
+ 'enigmaVersion': xml.getElementsByTagName('e2enigmaversion').item(0).firstChild.data,
+ 'imageVersion': xml.getElementsByTagName('e2imageversion').item(0).firstChild.data,
+ 'fpVersion': fpversion,
+ 'webifversion': xml.getElementsByTagName('e2webifversion').item(0).firstChild.data
+ };
} catch (e) {
debug("[incomingAbout] About parsing Error" + e);
}
- var data = { about : namespace,
- tuner : ns};
+ var data = {
+ "info" : info,
+ "hdds" : hdds,
+ "nics" : nics,
+ "nims" : nims
+ };
processTpl('tplAbout', data, 'contentMain');
}
}
* Show About Information in contentMain
*/
function showAbout() {
- doRequest(url_about, incomingAbout, false);
+ doRequest(url_deviceinfo, incomingAbout, false);
}
function restartTwisted() {
- var request = new Ajax.Request( "/web/restarttwisted", { asynchronous: true, method: "get" });
+ doRequest( "/web/restarttwisted" );
}
//MediaPlayer
function sendMediaPlayer(command) {
debug("[playFile] loading sendMediaPlayer");
- var request = new Ajax.Request( url_mediaplayercmd+command, { asynchronous: true, method: 'get' });
+ doRequest( url_mediaplayercmd+command );
}
function incomingMediaPlayer(request){
if(request.readyState == 4){
var files = new FileList(getXML(request)).getArray();
-
+
debug("[loadMediaPlayer] Got "+files.length+" entries in mediaplayer filelist");
- //listerHtml = tplMediaPlayerHeader;
-
+ // listerHtml = tplMediaPlayerHeader;
+
var namespace = {};
var root = files[0].getRoot();
};
}
}
-
+
var itemnamespace = Array();
for ( var i = 0; i <files.length; i++){
var file = files[i];
var exec_description = 'Change to directory' + file.getServiceReference();
var color = '000000';
var isdir = 'true';
-
+
if (file.getIsDirectory() == "False") {
exec = 'playFile';
exec_description = 'play file';
color = '00BCBC';
isdir = 'false';
}
-
+
itemnamespace[i] = {
- 'isdir' : isdir,
- 'servicereference': file.getServiceReference(),
- 'exec': exec,
- 'exec_description': exec_description,
- 'color': color,
- 'root': file.getRoot(),
- 'name': file.getNameOnly()
+ 'isdir' : isdir,
+ 'servicereference': file.getServiceReference(),
+ 'exec': exec,
+ 'exec_description': exec_description,
+ 'color': color,
+ 'root': file.getRoot(),
+ 'name': file.getNameOnly()
};
-
+
}
/*
if (root == "playlist") {
listerHtml += tplMediaPlayerFooterPlaylist;
}
- */
-
+ */
+
var data = { mp : namespace,
- items: itemnamespace
+ items: itemnamespace
};
-
+
processTpl('tplMediaPlayer', data, 'contentMain');
var sendMediaPlayerTMP = sendMediaPlayer;
sendMediaPlayer = false;
- //setBodyMainContent('BodyContent');
+ // setBodyMainContent('BodyContent');
sendMediaPlayer = sendMediaPlayerTMP;
}
}
function playFile(file,root) {
debug("[playFile] called");
mediaPlayerStarted = true;
- var request = new Ajax.Request( url_mediaplayerplay+file+"&root="+root, { asynchronous: true, method: 'get' });
+ doRequest( url_mediaplayerplay+file+"&root="+root );
}
function writePlaylist() {
debug("[playFile] loading writePlaylist");
- var filename = prompt("Please enter a name for the playlist", "");
+ var filename = '';
+ filename = prompt("Please enter a name for the playlist", "");
+
if(filename !== "") {
- var request = new Ajax.Request( url_mediaplayerwrite+filename, { asynchronous: true, method: 'get' });
+ doRequest( url_mediaplayerwrite+filename );
}
}
//Powerstate
/*
- * Sets the Powerstate
- * @param newState - the new Powerstate
- * Possible Values (also see WebComponents/Sources/PowerState.py)
- * #-1: get current state
- * # 0: toggle standby
- * # 1: poweroff/deepstandby
- * # 2: rebootdreambox
- * # 3: rebootenigma
+ * Sets the Powerstate @param newState - the new Powerstate Possible Values
+ * (also see WebComponents/Sources/PowerState.py) #-1: get current state # 0:
+ * toggle standby # 1: poweroff/deepstandby # 2: rebootdreambox # 3:
+ * rebootenigma
*/
function sendPowerState(newState){
- var request = new Ajax.Request( url_powerstate+'?newstate='+newState, { asynchronous: true, method: 'get' });
-}
-
-
-
-function delFile(file,root) {
- debug("[delFile] called");
- doRequest(url_delfile+root+file, incomingDelFileResult, false);
+ doRequest( url_powerstate+'?newstate='+newState);
}
//Currently Running Service
function incomingCurrent(request){
-// debug("[incomingCurrent called]");
+ // debug("[incomingCurrent called]");
if(request.readyState == 4){
try{
var xml = getXML(request).getElementsByTagName("e2currentserviceinformation").item(0);
-
-
+
+ var duration = '+' + parseInt( (xml.getElementsByTagName('e2eventduration').item(0).firstChild.data / 60), 10 ) + " min";
+
namespace = {
- "servicereference" : encodeURIComponent(xml.getElementsByTagName('e2servicereference').item(0).firstChild.data),
- "servicename" : xml.getElementsByTagName('e2servicename').item(0).firstChild.data,
- "eventname" : xml.getElementsByTagName('e2eventname').item(0).firstChild.data,
- "duration" : xml.getElementsByTagName('e2eventduration').item(0).firstChild.data
+ "servicereference" : encodeURIComponent(xml.getElementsByTagName('e2servicereference').item(0).firstChild.data),
+ "servicename" : xml.getElementsByTagName('e2servicename').item(0).firstChild.data,
+ "eventname" : xml.getElementsByTagName('e2eventname').item(0).firstChild.data,
+ "duration" : duration
};
-
- data = { current : namespace };
-
+
+ var data = { current : namespace };
+
if(typeof(templates.tplCurrent) != "undefined"){
renderTpl(templates.tplCurrent, data, "currentContent");
} else {
}
} catch (e){}
-
+ isActive.getCurrent = false;
}
}
function getCurrent(){
- doRequest(url_getcurrent, incomingCurrent, false);
+ if(!isActive.getCurrent){
+ isActive.getCurrent = true;
+ doRequest(url_getcurrent, incomingCurrent, false);
+ }
}
//Navigation and Content Helper Functions
+
/*
- * Loads all Bouquets for the given enigma2 servicereference and sets the according contentHeader
- * @param sRef - the Servicereference for the bouquet to load
+ * Loads all Bouquets for the given enigma2 servicereference and sets the
+ * according contentHeader @param sRef - the Servicereference for the bouquet to
+ * load
*/
function getBouquets(sRef){
var url = url_getServices+encodeURIComponent(sRef);
loadBouquet(allRadio, "All (Radio)");
}
+
+
/*
* Loads dynamic content to $(contentMain) by calling a execution function
* @param fnc - The function used to load the content
setAjaxLoad('contentMain');
setContentHd(title);
stopUpdateBouquetItemsPoller();
-
+
+ fnc();
+}
+
+/*
+ * like loadContentDynamic but without the AjaxLoaderAnimation being shown
+ */
+function reloadContentDynamic(fnc, title){
+ setContentHd(title);
fnc();
}
*/
function loadControl(control){
switch(control){
- case "power":
- loadContentStatic('tplPower', 'PowerControl');
- break;
-
- case "message":
- loadContentStatic('tplSendMessage', 'Send a Message');
- break;
-
- case "remote":
- loadAndOpenWebRemote();
- break;
-
- case "screenshot":
- loadContentDynamic(getScreenShot, 'Screenshot');
- break;
-
- case "videoshot":
- loadContentDynamic(getVideoShot, 'Videoshot');
- break;
-
- case "osdshot":
- loadContentDynamic(getOsdShot, 'OSDshot');
- break;
-
- default:
- break;
+ case "power":
+ loadContentStatic('tplPower', 'PowerControl');
+ break;
+
+ case "message":
+ loadContentStatic('tplSendMessage', 'Send a Message');
+ break;
+
+ case "remote":
+ loadAndOpenWebRemote();
+ break;
+
+ case "screenshot":
+ loadContentDynamic(getScreenShot, 'Screenshot');
+ break;
+
+ case "videoshot":
+ loadContentDynamic(getVideoShot, 'Videoshot');
+ break;
+
+ case "osdshot":
+ loadContentDynamic(getOsdShot, 'OSDshot');
+ break;
+
+ default:
+ break;
}
}
+function reloadAbout(){
+ reloadContentDynamic(showAbout, 'About');
+}
+
/*
* Switches Navigation Modes
* @param mode - The Navigation Mode you want to switch to
*/
function switchMode(mode){
switch(mode){
- case "TV":
- reloadNav('tplNavTv', 'TeleVision');
- break;
-
- case "Radio":
- reloadNav('tplNavRadio', 'Radio');
- break;
-
- case "Movies":
- //The Navigation
- reloadNavDynamic(loadMovieNav, 'Movies');
-
- //The Movie list
- loadContentDynamic(loadMovieList, 'Movies');
- break;
-
- case "Timer":
- //The Navigation
- reloadNav('tplNavTimer', 'Timer');
-
- //The Timerlist
- loadContentDynamic(loadTimerList, 'Timer');
- break;
-
- case "MediaPlayer":
- loadContentDynamic(loadMediaPlayer, 'MediaPlayer');
- break;
-
- case "BoxControl":
- reloadNav('tplNavBoxControl', 'BoxControl');
- break;
-
- case "About":
- loadContentDynamic(showAbout, 'About');
- break;
-
- default:
- break;
+ case "TV":
+ reloadNav('tplNavTv', 'TeleVision');
+ break;
+
+ case "Radio":
+ reloadNav('tplNavRadio', 'Radio');
+ break;
+
+ case "Movies":
+ //The Navigation
+ reloadNavDynamic(loadMovieNav, 'Movies');
+
+ // The Movie list
+ loadContentDynamic(loadMovieList, 'Movies');
+ break;
+
+ case "Timer":
+ //The Navigation
+ reloadNav('tplNavTimer', 'Timer');
+
+ // The Timerlist
+ loadContentDynamic(loadTimerList, 'Timer');
+ break;
+
+ case "MediaPlayer":
+ loadContentDynamic(loadMediaPlayer, 'MediaPlayer');
+ break;
+
+ case "BoxControl":
+ reloadNav('tplNavBoxControl', 'BoxControl');
+ break;
+
+ case "About":
+ loadContentDynamic(showAbout, 'About');
+ break;
+
+ default:
+ break;
}
}
function init(){
if(DBG){
- loadAndOpenDebug();
+ openDebug();
}
-
+
if (typeof document.body.style.maxHeight == "undefined") {
alert("Due to the tremendous amount of work needed to get everthing to " +
- "work properly, there is (for now) no support for Internet Explorer Versions below 7");
+ "work properly, there is (for now) no support for Internet Explorer Versions below 7");
}
-
+
getBoxtype();
-
+
setAjaxLoad('navContent');
setAjaxLoad('contentMain');
-
+
fetchTpl('tplServiceListEPGItem');
fetchTpl('tplCurrent');
reloadNav('tplNavTv', 'TeleVision');
-
+
initChannelList();
initVolumePanel();
initMovieList();
-
+
updateItems();
- pollCurrent();
+ startUpdateCurrentPoller();
}
<meta content="text/html; charset=UTF-8" http-equiv="content-type">
<title>Dreambox WebControl</title>
+ <!-- External libs -->
<script type="text/javascript" src="/web-data/lib/prototype-1.6.0.3.js"></script>
<script type="text/javascript" src="/web-data/lib/scriptaculous.js"></script>
<script type="text/javascript" src="/web-data/lib/shadedborder.js"></script>
<script type="text/javascript" src="/web-data/lib/trimpath-template-1.0.38.js"></script>
+
+ <!-- userprefs Object -->
+ <script type="text/javascript" src="/web-data/userprefs.js"></script>
<!-- our stuff //-->
<script type="text/javascript" src="/web-data/objects.js" ></script>
<script type="text/javascript" src="/web-data/config.js" ></script>
<script type="text/javascript" src="/web-data/tools.js" ></script>
<script type="text/javascript" src="/web-data/timer.js" ></script>
+
+ <!-- Gears-->
+ <script type="text/javascript" src="/web-data/lib/gears_init.js"></script>
+ <script type="text/javascript" src="/web-data/gears_handler.js" ></script>
+
<link href="/web-data/tpl/default/style.css" type="text/css" rel="stylesheet">
<link rel="shortcut icon" type="/web-data/image/x-icon" href="/web-data/img/favicon.ico">
-<select id="bouquetSelect" onChange="onBouquetSelected()" width="100px">
- {for b in bouquets}
- <option id="${b.servicereference}" >${b.servicename}</option>
- {/for}
-</select>
\ No newline at end of file
+
+<!-- tplBouquetList -->
+ <select id="bouquetSelect" onChange="onBouquetSelected()" width="100px">
+ {for b in bouquets}
+ <option id="${b.servicereference}" >${b.servicename}</option>
+ {/for}
+ </select>
+<!-- tplBouquetList -->
+<!-- tplCurrent -->
<table id="currentTable">
<tr>
<td id="currentName">${current.servicename} - ${current.eventname} (+${current.duration} min)</td>
</tr>
- </table>
\ No newline at end of file
+ </table>
+<!-- /tplCurrent -->
+
+<!-- tplServiceList -->
<select id="channelSelect" onChange="onServiceSelected()" width="100px">
+ <option id="vlcemptyservice"></option>
{for s in services}
<option id="${s.servicereference}" >
${s.servicename}
{/if}
</option>
{/for}
-</select>
\ No newline at end of file
+</select>
+<!-- /tplServiceList -->
vertical-align: bottom;
z-index: 2;
}
+/***********************
+ WAP
+ ***********************/
+
+ .wap a, .wap a:visited, .wap a:active{
+ color: #fff;
+ }
/***********************
GENERAL
+<!-- tplAbout -->
<table id="contentTable">
<tr>
<td>
<td class="fullwidth">
<table cellspacing="0" class="about">
<tr>
- <th colspan="2" class="aboutHeader">Hard- & Software</th>
+ <th colspan="2" class="aboutHeader">Device- & Versioninformation</th>
</tr>
<tr>
- <td class="aboutElementLeft">Box Model:</td>
- <td class="aboutElementRight">${about.model}</td>
+ <td class="aboutElementLeft">Devicename:</td>
+ <td class="aboutElementRight">${info.devicename}</td>
</tr>
<tr>
<td class="aboutElementLeft">Enigma Version:</td>
- <td class="aboutElementRight">${about.enigmaVersion}</td>
+ <td class="aboutElementRight">${info.enigmaVersion}</td>
</tr>
<tr>
+ <td class="aboutElementLeft">Image Version:</td>
+ <td class="aboutElementRight">${info.imageVersion}</td>
+ </tr>
+
+ <tr>
<td class="aboutElementLeft">Frontprozessor Version:</td>
- <td class="aboutElementRight">${about.fpVersion}</td>
+ <td class="aboutElementRight">${info.fpVersion}</td>
</tr>
<tr>
<td class="aboutElementLeft">Webinterface Version:</td>
- <td class="aboutElementRight">${about.webifversion}</td>
+ <td class="aboutElementRight">${info.webifversion}</td>
</tr>
</table>
</td>
<td class="fullwidth">
<table cellspacing="0" class="about">
<tr>
- <th colspan="2" class="aboutHeader">Detected Tuners</th>
+ <th colspan="2" class="aboutHeader">Tuners</th>
</tr>
- {for t in tuner}
+ {for nim in nims}
<tr>
- <td class="aboutElementLeft">${t.name}:</td>
- <td class="aboutElementRight">${t.type}</td>
+ <td class="aboutElementLeft">${nim.name}:</td>
+ <td class="aboutElementRight">${nim.model}</td>
</tr>
{/for}
</table>
</td>
</tr>
+ {for hdd in hdds}
<tr>
<td class="fullwidth">
- <table cellspacing="0" class="about">
- <tr>
- <th colspan="2" class="aboutHeader">Harddisk</th>
- </tr>
+ <table cellspacing="0" class="about">
<tr>
- <td class="aboutElementLeft">Model:</td>
- <td class="aboutElementRight">${about.hddmodel}</td>
+ <th colspan="2" class="aboutHeader">Harddisk (${hdd.model})</th>
</tr>
<tr>
<td class="aboutElementLeft">Capacity:</td>
- <td class="aboutElementRight">${about.hddcapacity}</td>
+ <td class="aboutElementRight">${hdd.capacity}</td>
</tr>
<tr>
<td class="aboutElementLeft">Free:</td>
- <td class="aboutElementRight">${about.hddfree}</td>
+ <td class="aboutElementRight">${hdd.free}</td>
</tr>
</table>
</td>
</tr>
+ {/for}
+ {for nic in nics}
<tr>
<td class="fullwidth">
<table cellspacing="0" class="about">
<tr>
- <th colspan="2" class="aboutHeader">Internal Network</th>
- </tr> <tr>
+ <th colspan="2" class="aboutHeader">Network Interface (${nic.name})</th>
+ </tr>
+ <tr>
<td class="aboutElementLeft">Mac Address:</td>
- <td class="aboutElementRight">${about.lanMac}</td>
+ <td class="aboutElementRight">${nic.mac}</td>
</tr>
<tr>
<td class="aboutElementLeft">DHCP enabled:</td>
- <td class="aboutElementRight">${about.lanDHCP}</td>
+ <td class="aboutElementRight">${nic.dhcp}</td>
</tr>
<tr>
<td class="aboutElementLeft">IP:</td>
- <td class="aboutElementRight">${about.lanIP}</td>
+ <td class="aboutElementRight">${nic.ip}</td>
</tr>
<tr>
<td class="aboutElementLeft">Netmask:</td>
- <td class="aboutElementRight">${about.lanNetmask}</td>
+ <td class="aboutElementRight">${nic.netmask}</td>
</tr>
<tr>
<td class="aboutElementLeft">Gateway:</td>
- <td class="aboutElementRight">${about.lanGateway}</td>
+ <td class="aboutElementRight">${nic.gateway}</td>
</tr>
</table>
</td>
</tr>
+ {/for}
</table>
</td>
<td class="aboutSectionRight">
<td class="fullwidth">
<table cellspacing="0" class="about">
<tr>
- <th colspan="2" class="aboutHeader">Serviceinfo</th>
- </tr>
- <tr>
- <td class="aboutElementLeft">Name:</td>
- <td class="aboutElementRight">${about.serviceName}</td>
- </tr>
- <tr>
- <td class="aboutElementLeft">Provider:</td>
- <td class="aboutElementRight">${about.serviceProvider}</td>
- </tr>
- <tr>
- <td class="aboutElementLeft">Videoformat:</td>
- <td class="aboutElementRight">${about.serviceAspect}</td>
- </tr>
- <tr>
- <td class="aboutElementLeft">Videosize:</td>
- <td class="aboutElementRight">${about.serviceVideosize}</td>
+ <th colspan="2" class="aboutHeader">Gears Support</th>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <p>
+ Enigma2 WebControl supports (Google) Gears to minimize the load caused on your Dreambox.
+ </p>
+ <p>
+ It uses the LocalServer of Gears to store all static content on your Computer instead of loading it from your Dreambox all the time.
+ Enabling Gears can speed up enigma2 WebControl quite a lot (the less power your Box has the more you will profit).
+ </p>
+ <p>
+ To install Gears please go to <a style="text-decoration: underline" href="http://gears.google.com/" target="_blank">gears.google.com</a>.
+ </p>
+ <p>
+ For technical information about Gears please read the API Doc at <a style="text-decoration: underline" href="http://code.google.com/intl/de-DE/apis/gears/" target="_blank">code.google.com/intl/de-DE/apis/gears/</a>
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td class="aboutElementLeft">
+ {if info.useGears}
+ <button onClick="disableGears(reloadAbout)">Disable Gears</button>
+ {else}
+ <button onClick="enableGears(reloadAbout)">Enable Gears</button>
+ {/if}
+ </td>
+ <td class="aboutElementRight">
+ <div id="gearsProcess"></div>
+ </td>
</tr>
</table>
</td>
- </tr>
- <tr>
- <td class="fullwidth">
- <table cellspacing="0" class="about">
- <tr>
- <th colspan="2" class="aboutHeader">Pids</th>
- </tr>
- <tr>
- <td class="aboutElementLeft">VideoPid:</td>
- <td class="aboutElementRight">${about.vPidh} (${about.vPid}d)</td>
- </tr>
- <tr>
- <td class="aboutElementLeft">AudioPid:</td>
- <td class="aboutElementRight">${about.aPidh} (${about.aPid}d)</td>
- </tr>
- <tr>
- <td class="aboutElementLeft">PCRPid:</td>
- <td class="aboutElementRight">${about.pcrPidh} (${about.pcrPid}d)</td>
- </tr>
- <tr>
- <td class="aboutElementLeft">PMTPid:</td>
- <td class="aboutElementRight">${about.pmtPidh} (${about.pmtPid}d)</td>
- </tr>
- <tr>
- <td class="aboutElementLeft">TXTPid:</td>
- <td class="aboutElementRight">${about.txtPidh} (${about.txtPid}d)</td>
- </tr>
- <tr>
- <td class="aboutElementLeft">TSID:</td>
- <td class="aboutElementRight">${about.tsidh} (${about.tsid}d)</td>
- </tr>
- <tr>
- <td class="aboutElementLeft">ONID:</td>
- <td class="aboutElementRight">${about.onidh} (${about.onid}d)</td>
- </tr>
- <tr>
- <td class="aboutElementLeft">SID:</td>
- <td class="aboutElementRight">${about.sidh} (${about.sid}d)</td>
- </tr>
- </table>
- </td>
- </tr>
+ </tr>
</table>
</td>
</tr>
</table>
</tr>
</td>
- </table>
\ No newline at end of file
+ </table>
+<!-- /tplAbout -->
+<!-- tplBouquetList -->
<table id="contentTable">
{for service in services}
<tr><td>
<table><tr><td>No Bouquets to Display</td></tr></table>
</td></tr>
{/for}
- </table>
\ No newline at end of file
+ </table>
+<!-- /tplBouquetList -->
-
+<!-- tplCurrent -->
<table id="currentTable">
<tr>
<td id="currentName">${current.servicename} - ${current.eventname}</td>
${current.duration}
</td>
</tr>
- </table>
\ No newline at end of file
+ </table>
+<!-- /tplCurrent -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
+<!-- tplDebug -->
<head>
<meta content="text/html; charset=UTF-8" http-equiv="content-type">
<title>Enigma2 WebControl - DEBUG</title>
<body style="color:#000; scrollbar: auto;">
<div id="debugContent" style="font-size: 10px"></div>
</body>
-</html>
\ No newline at end of file
+<!-- /tplDebug -->
+</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional"
- "http://www.w3.org/TR/html4/loose.dtd">
+ "http://www.w3.org/TR/html4/loose.dtd">
<html>
+<!-- tplEpgList -->
<head>
<meta content="text/html; charset=UTF-8" http-equiv="content-type">
<title>Enigma2 WebControl - EPG</title>
</tr>
</table>
</body>
-</html>
\ No newline at end of file
+<!-- /tplEpgList -->
+</html>
+<!-- tplGrab -->
<table id="contentTable">
<tr>
<td>
<img id="grabPageImg" src="${img.src}" alt="loading image">
</td>
</tr>
- </table>
\ No newline at end of file
+ </table>
+<!-- /tplGrab -->
+
+<!-- tplMediaplayer -->
<table id="contentTable">
<tr>
<td>
</table>
</td>
</tr>
-</table>
\ No newline at end of file
+</table>
+<!-- /tplMediaplayer -->
+<!-- tplMovieList -->
<table id="contentTable">
{for movie in movies}
<tr>
</a>
</td>
<td>
- <a href="#" onclick="delMovie('${movie.servicereference}','${movie.servicename}','${movie.title}','${movie.description}');">
+ <a href="#" onclick="delMovie('${movie.servicereference}','${movie.servicename}','${movie.escapedTitle}','${movie.description}');">
<img src="/web-data/img/delete.png" title="Delete ${movie.title}" border="0">
</a>
</td>
</tr>
{/for}
</table>
+<!-- /tplMovieList -->
+<!-- tplNavBoxControl -->
<table id="navExtras" class="navTable">
<tr>
<td><a href="#" onclick="loadControl('power');">PowerControl</a><td>
<tr>
<td><a href="#" onclick="loadControl('osdshot')">Screenshot (OSD)</a><td>
</tr>
-</table>
\ No newline at end of file
+</table>
+<!-- /tplNavBoxControl -->
+<!-- tplNavMovies -->
<table id="navTimer" class="navTable">
<tr>
<td>Movie Location:</td>
</td>
</tr>
</table>
-
+<!-- /tplNavMovies -->
+<!-- tplNavRadio -->
<table id="navRadio" class="navTable">
<tr>
<td><a href="#" onclick="loadContentDynamic(getBouquetsRadio, 'Bouquets (Radio)');">Bouquets</a><td>
<tr>
<td><a href="#" onclick="loadContentDynamic(getAllRadio, 'All (Radio)');">All</a><td>
</tr>
-</table>
\ No newline at end of file
+</table>
+<!-- /tplNavRadio -->
+<!-- tplNavTimer -->
<table id="navTimer" class="navTable">
<tr>
<td><a href="#" onclick="loadTimerList();">Show/Edit Timers</a><td>
<tr>
<td><a href="#" onclick="loadTimerFormNow();">Add new Timer</a><td>
</tr>
-</table>
\ No newline at end of file
+</table>
+<!-- /tplNavTimer -->
+<!-- tplNavTv -->
<table id="navTv" class="navTable">
<tr>
<td><a href="#" onclick="loadContentDynamic(getBouquetsTv, 'Bouquets (TV)');">Bouquets</a><td>
<tr>
<td><a href="#" onclick="loadContentDynamic(getAllTv, 'All (Tv)');">All</a><td>
</tr>
-</table>
\ No newline at end of file
+</table>
+<!-- /tplNavTv -->
+<!-- tplPower -->
<table id="contentTable">
<tr>
<td>
</table>
</tr>
</td>
- </table>
\ No newline at end of file
+ </table>
+<!-- /tplPower -->
+<!-- tplSendMessage -->
<table id="contentTable">
<tr>
<td>
</table>
</td>
</tr>
- </table>
\ No newline at end of file
+ </table>
+<!-- /tplSendMessage -->
+<!-- tplServiceList -->
<table id="contentTable">
{for service in services}
<tr>
</td>
</tr>
{/for}
- </table>
\ No newline at end of file
+ </table>
+<!-- /tplServiceList -->
-
+
+<!-- tplServiceListEPGItem -->
{if epg.title != 'None'}
<table cellspacing="0">
<tr>
</tr>
</table>
{/if}
+<!-- /tplServiceListEPGItem -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
+<!-- tplSignalPanel -->
<head>
<meta content="text/html; charset=UTF-8" http-equiv="content-type">
<title>Enigma2 WebControl - EPG</title>
</tr>
</table>
</body>
-</html>
-
+<!-- /tplSignalPanel -->
+</html>
\ No newline at end of file
-
+
+<!-- tplSubServices -->
{for s in subservices}
<table style="width: 776px;">
<tr>
</td>
</tr>
</table>
- {/for}
\ No newline at end of file
+ {/for}
+<!-- /tplSubServices -->
+<!-- tplTimerEdit -->
<table id="contentTable">
<tr>
<td>
</td>
</tr>
</table>
-
+<!-- /tplTimerEdit -->
+<!-- tplTimerList -->
<table id="contentTable" style="width: 100%;">
{for t in timer}
<tr style="width:100%;">
<tr style="width:100%;">
<td colspan="7"><button onclick="cleanTimerListNow()">Cleanup</button></td>
</tr>
- </table>
\ No newline at end of file
+ </table>
+<!-- /tplTimerList -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
+<!-- tplWebRemote -->
<head>
<meta content="text/html; charset=UTF-8" http-equiv="content-type">
<title>Enigma2 Webremote</title>
</center>
</body>
+<!-- /tplWebRemote -->
</html>
\ No newline at end of file
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
+<!-- tplWebRemoteOld -->
<head>
<meta content="text/html; charset=UTF-8" http-equiv="content-type">
<title>Enigma2 Webremote</title>
</center>
</body>
+<!-- /tplWebRemoteOld -->
</html>
\ No newline at end of file
--- /dev/null
+/*
+ * This code is inspired by http://www.phpied.com/json-javascript-cookies/
+ * and modified for use with prototype
+ * It's a pretty straight forward way to store and load settings in a nice to use JSON-Object
+ */
+
+var userprefs = {
+ data : {},
+
+ load : function() {
+ var the_cookie = document.cookie.split(';');
+ if (the_cookie[0]) {
+ this.data = unescape(the_cookie[0]).evalJSON();
+ }
+ return this.data;
+ },
+
+ save : function(expires, path) {
+ var d = expires || new Date(2222, 01, 01);
+ var p = path || '/';
+ document.cookie = escape( Object.toJSON(this.data) ) + ';path=' + p
+ + ';expires=' + d.toUTCString();
+ }
+};
+
+userprefs.load();
\ No newline at end of file
/*
* incoming request-data for Current Service Epg
*/
-function incomingVLCServiceEPG(request){
+function incomingVLCServiceEPG(request) {
if (request.readyState == 4) {
- var events = getXML(request).getElementsByTagName("e2eventlist").item(0).getElementsByTagName("e2event");
-
- var event =new EPGEvent(events.item(0));
+ var events = getXML(request).getElementsByTagName("e2eventlist")
+ .item(0).getElementsByTagName("e2event");
+
+ var event = new EPGEvent(events.item(0));
var namespace = {
- 'servicename' : event.getServiceName(),
- 'eventname': event.getTitle(),
- 'duration': ( parseInt( (event.duration/60) , 10) )
- };
-
- var data = { 'current' : namespace };
- processTpl('streaminterface/tplCurrent', data, 'current');
+ 'servicename' : event.getServiceName(),
+ 'eventname' : event.getTitle(),
+ 'duration' : (parseInt((event.duration / 60), 10))
+ };
+
+ var data = {
+ 'current' : namespace
+ };
+ processTpl('streaminterface/tplCurrent', data, 'current');
}
}
-
/*
-* Load Now information for Service
-*/
-function loadVLCEPGServiceNow(servicereference){
+ * Load Now information for Service
+ */
+function loadVLCEPGServiceNow(servicereference) {
doRequest(url_epgservicenow + servicereference, incomingVLCServiceEPG);
}
-function onServiceSelected(){
- sref =$('channelSelect').options[$('channelSelect').selectedIndex].id;
-
- //load epgNow
- loadVLCEPGServiceNow(sref);
+function onServiceSelected() {
+ var sref = $('channelSelect').options[$('channelSelect').selectedIndex].id;
- setStreamTarget(sref);
+ if(sref !== "vlcemptyservice"){
+ loadVLCEPGServiceNow(sref);
+ setStreamTarget(sref);
+
+ if($('vlcZap').checked){
+ doRequest("/web/zap?sRef=" + sref);
+ }
+ delayedLoadVlcSubservices();
+ } else {
+ vlcStop();
+ }
}
-function incomingVLCBouquetList(request){
+function incomingVLCBouquetList(request) {
if (request.readyState == 4) {
var bouquets = new ServiceList(getXML(request)).getArray();
-
+
var namespace = [];
- for(var i = 0; i < bouquets.length; i++){
+ for ( var i = 0; i < bouquets.length; i++) {
var bouquet = bouquets[i];
-
+
namespace[i] = {
- "servicereference" : bouquet.getServiceReference(),
- "servicename" : bouquet.getServiceName()
+ "servicereference" : bouquet.getServiceReference(),
+ "servicename" : bouquet.getServiceName()
};
}
- data = { bouquets : namespace };
-
+ data = {
+ bouquets : namespace
+ };
+
processTpl('streaminterface/tplBouquetList', data, 'bouquetList');
loadVLCBouquet(bouquets[0].getServiceReference());
}
}
+function loadVLCBouquet(servicereference) {
+ loadVLCChannelList(servicereference);
+}
+
+function incomingVLCSubservices(request){
+ if (request.readyState == 4) {
+ var services = new ServiceList(getXML(request)).getArray();
+ debug("[incomincVLCSubservices] Got " + services.length + " SubServices");
+
+ if(services.length > 1) {
+
+ var first = services[0];
+
+ var lastoption = $(services[0].getServiceReference());
+
+ if(lastoption !== null){
+ // we already have the main service in our servicelist so we'll
+ // start with the second element
+ for ( var i = 1; i < services.length ; i++){
+ var service = services[i];
+
+ //TODO: FIX THIS UGLY CODE
+ var option = $(service.getServiceReference());
+ if(option !== null){
+ option.remove();
+ }
+ option = new Option(' |- ' + service.getServiceName());
+ option.id = service.getServiceReference();
+
+ lastoption.insert( { after : option } );
+
+ lastoption = option;
+ }
+ }
+ }
+ }
+}
+
+function loadVlcSubservices(){
+ doRequest(url_subservices, incomingVLCSubservices);
+}
-function loadVLCBouquet(servicereference){
- loadVLCChannelList(servicereference);
+function delayedLoadVlcSubservices(){
+ setTimeout(loadVlcSubservices, 7500);
}
/*
-* Incoming request-data for EPG Now information
-* Builds the Channellist
-*/
-function incomingVLCChannelList(request){
+ * Incoming request-data for EPG Now information
+ * Builds the Channellist
+ */
+function incomingVLCChannelList(request) {
if (request.readyState == 4) {
- var events = getXML(request).getElementsByTagName("e2eventlist").item(0).getElementsByTagName("e2event");
+ var events = getXML(request).getElementsByTagName("e2eventlist")
+ .item(0).getElementsByTagName("e2event");
var namespace = [];
- for(var i = 0; i < events.length; i++){
+ for ( var i = 0; i < events.length; i++) {
var event = new EPGEvent(events.item(i));
var eventname = event.getTitle();
-
- if(eventname.length > 40){
+
+ if (eventname.length > 40) {
eventname = eventname.substring(0, 40) + '...';
}
-
+
namespace[i] = {
- 'servicereference' : event.getServiceReference(),
- 'servicename' : event.getServiceName(),
- 'eventname' : eventname,
- 'duration' : ( parseInt( (event.duration/60) , 10) )
+ 'servicereference' : event.getServiceReference(),
+ 'servicename' : event.getServiceName(),
+ 'eventname' : eventname,
+ 'duration' : (parseInt((event.duration / 60), 10))
};
}
-
- var data = { 'services' : namespace };
+
+ var data = {
+ 'services' : namespace
+ };
processTpl('streaminterface/tplServiceList', data, 'channelList');
- }
+ }
}
/*
-* Load List of all Channels with epg now where available
-*/
-function loadVLCChannelList(bouquetreference){
+ * Load List of all Channels with epg now where available
+ */
+function loadVLCChannelList(bouquetreference) {
doRequest(url_epgnow + bouquetreference, incomingVLCChannelList);
}
-function vlcPlay(){
- try{
+function vlcPlay() {
+ try {
onServiceSelected();
- } catch(e){
+ } catch (e) {
notify("Nothing to play", false);
}
}
-function vlcPrev(){
- if( $('channelSelect').selectedIndex > 0 ){
+function vlcPrev() {
+ if ($('channelSelect').selectedIndex > 0) {
$('channelSelect').selectedIndex -= 1;
onServiceSelected();
}
}
-function vlcNext(){
- if($('channelSelect').selectedIndex < $('channelSelect').length - 1 ){
+function vlcNext() {
+ if ($('channelSelect').selectedIndex < $('channelSelect').length - 1) {
$('channelSelect').selectedIndex += 1;
onServiceSelected();
}
}
-function vlcPause(){
+function vlcPause() {
vlc.playlist.togglePause();
}
-function vlcStop(){
- try{
+function vlcStop() {
+ try {
vlc.playlist.stop();
- } catch(e) {
+ } catch (e) {
notify("Nothing to stop", false);
}
}
-function vlcVolumeUp(){
- if(vlc.audio.volume < 200){
- if(vlc.audio.volume + 10 > 200){
+function vlcVolumeUp() {
+ if (vlc.audio.volume < 200) {
+ if (vlc.audio.volume + 10 > 200) {
vlc.audio.volume = 200;
} else {
vlc.audio.volume += 10;
}
}
-
+
set('vlcVolume', vlc.audio.volume);
}
-function vlcVolumeDown(){
- if(vlc.audio.volume > 0){
- if(vlc.audio.volume < 10){
+function vlcVolumeDown() {
+ if (vlc.audio.volume > 0) {
+ if (vlc.audio.volume < 10) {
vlc.audio.volume = 0;
} else {
vlc.audio.volume -= 10;
}
}
-
+
set('vlcVolume', vlc.audio.volume);
}
-function vlcToogleMute(){
+function vlcToogleMute() {
vlc.audio.mute = !vlc.audio.mute;
- if(vlc.audio.mute){
+ if (vlc.audio.mute) {
set('vlcVolume', 'Muted');
} else {
set('vlcVolume', vlc.audio.volume);
}
}
-function vlcFullscreen(){
- if(vlc.playlist.isPlaying){
- if(vlc.input.hasVout){
+function vlcFullscreen() {
+ if (vlc.playlist.isPlaying) {
+ if (vlc.input.hasVout) {
vlc.video.fullscreen = true;
return;
- }
+ }
}
- notify("Cannot enable fullscreen mode when no Video is being played!", false);
+ notify("Cannot enable fullscreen mode when no Video is being played!",
+ false);
}
-function vlcTeletext(){
- try{
+function vlcTeletext() {
+ try {
vlc.video.teletext = 100;
- } catch(e) {
+ } catch (e) {
debug("Error - Could not set teletext");
}
debug("Current Teletext Page:" + vlc.video.teletext);
}
-function playUrl(url){
- current = vlc.playlist.add(url);
- vlc.playlist.playItem(current);
+function playUrl(url) {
+ current = vlc.playlist.add(url);
+ vlc.playlist.playItem(current);
}
-function setStreamTarget(servicereference){
- host = top.location.host;
- url = 'http://'+host+':8001/'+decodeURIComponent(servicereference);
-
+function setStreamTarget(servicereference) {
+ host = top.location.host;
+ url = 'http://' + host + ':8001/' + decodeURIComponent(servicereference);
+
debug("setStreamTarget " + url);
- vlc.playlist.clear();
+ vlc.playlist.clear();
playUrl(url);
}
-
-
-function loadVLCBouquets(){
+function loadVLCBouquets() {
url = url_getServices + bouquetsTv;
doRequest(url, incomingVLCBouquetList);
}
/*
-* Event when the user selected a Bouquet in the bouquets <select>
-*/
-function onBouquetSelected(){
- var servicereference =$('bouquetSelect').options[$('bouquetSelect').selectedIndex].id;
+ * Event when the user selected a Bouquet in the bouquets <select>
+ */
+function onBouquetSelected() {
+ var servicereference = $('bouquetSelect').options[$('bouquetSelect').selectedIndex].id;
loadVLCBouquet(servicereference);
}
-
-
-function initWebTv(){
- if(DBG){
- loadAndOpenDebug();
+function initWebTv() {
+ if (DBG) {
+ openDebug();
}
-
+
vlc = $("vlc");
-
- try{
+
+ try {
set('vlcVolume', vlc.audio.volume);
- } catch (e){}
+ } catch (e) {
+ debug('[initWebTv] Error on initializing WebTv');
+ }
loadVLCBouquets();
}
-
-
<e2:screen name="AboutWebScreen"><?xml version="1.0" encoding="UTF-8"?>
-<e2abouts><e2:element source="About" ><e2:convert type="web:ListFiller" >
- <e2about>
- <e2enigmaversion><e2:item name="enigmaVersion" filter="xml"/></e2enigmaversion>
-
+<e2abouts>
+ <e2about>
+ <e2enigmaversion><e2:element source="EnigmaVersion"><e2:convert type="web:TextToHTML" /></e2:element></e2enigmaversion>
+ <e2imageversion><e2:element source="ImageVersion"><e2:convert type="web:TextToHTML" /></e2:element></e2imageversion>
+ <e2webifversion><e2:element source="WebIfVersion"><e2:convert type="web:TextToHTML" /></e2:element></e2webifversion>
+ <e2fpversion><e2:element source="FpVersion"><e2:convert type="web:TextToHTML" /></e2:element></e2fpversion>
+ <e2model><e2:element source="DeviceName"><e2:convert type="web:TextToHTML" /></e2:element></e2model>
+
+ <e2:element source="About" ><e2:convert type="web:ListFiller" >
<e2lanmac><e2:item name="lanMac" filter="xml"/></e2lanmac>
<e2landhcp><e2:item name="lanDHCP" filter="xml"/></e2landhcp>
<e2lanip><e2:item name="lanIP" filter="xml"/></e2lanip>
<e2lanmask><e2:item name="lanMask" filter="xml"/></e2lanmask>
- <e2langw><e2:item name="lanGW" filter="xml"/></e2langw>
-<!-- <e2landns><e2:item name="lanDNS" filter="xml"/></e2landns> -->
-
- <e2model><e2:item name="model" filter="xml"/></e2model>
- <e2fpversion><e2:item name="fpVersion" filter="xml"/></e2fpversion>
- <e2webifversion><e2:item name="WebIfVersion" /></e2webifversion>
- <e2tunerinfo><e2:item name="tunerInfo" /></e2tunerinfo>
- <e2hddinfo><e2:item name="hddInfo" /></e2hddinfo>
-
- <e2servicename><e2:item name="serviceName" filter="xml"/></e2servicename>
- <e2serviceprovider><e2:item name="serviceProvider" filter="xml"/> </e2serviceprovider>
- <e2serviceaspect><e2:item name="serviceAspect" filter="xml"/></e2serviceaspect>
- <e2servicevideosize><e2:item name="serviceVideosize" filter="xml"/></e2servicevideosize>
- <e2servicenamespace><e2:item name="serviceNamespace" filter="xml"/></e2servicenamespace>
+ <e2langw><e2:item name="lanGW" filter="xml"/></e2langw>
+ </e2:convert><e2:convert type="web:TextToHTML" />
+ </e2:element>
- <e2vpid><e2:item name="vPID" filter="xml"/></e2vpid>
- <e2apid><e2:item name="aPID" filter="xml"/></e2apid>
- <e2pcrid><e2:item name="pcrID" filter="xml"/></e2pcrid>
- <e2pmtpid><e2:item name="pmtPID" filter="xml"/></e2pmtpid>
- <e2txtpid><e2:item name="txtPID" filter="xml"/></e2txtpid>
- <e2tsid><e2:item name="tsID" filter="xml"/></e2tsid>
- <e2onid><e2:item name="onID" filter="xml"/></e2onid>
- <e2sid><e2:item name="sid" filter="xml"/></e2sid>
- </e2about>
- </e2:convert>
- <e2:convert type="web:TextToHTML" /></e2:element>
-</e2abouts>
+ <e2:element source="Hdd"><e2:convert type="web:ListFiller">
+ <e2hddinfo>
+ <model><e2:item name="Model" filter="xml"/></model>
+ <capacity><e2:item name="Capacity" filter="xml"/></capacity>
+ <free><e2:item name="Free" filter="xml"/></free>
+ </e2hddinfo>
+ </e2:convert><e2:convert type="web:TextToHTML" /></e2:element>
+ <e2tunerinfo><e2:element source="Frontends"><e2:convert type="web:ListFiller" >
+ <e2nim>
+ <name><e2:item name="Name" filter="xml"/></name>
+ <type><e2:item name="Type" filter="xml"/></type>
+ </e2nim></e2:convert><e2:convert type="web:TextToHTML" /></e2:element>
+ </e2tunerinfo>
+ <e2servicename><e2:element source="session.CurrentService"><e2:convert type="ServiceName">Name</e2:convert><e2:convert type="web:TextToXML" /></e2:element></e2servicename>
+ <e2servicenamespace />
+ <e2serviceaspect />
+ <e2serviceprovider><e2:element source="session.CurrentService"><e2:convert type="ServiceName">Provider</e2:convert><e2:convert type="web:TextToXML" /></e2:element></e2serviceprovider>
+ <e2videowidth><e2:element source="session.CurrentService"><e2:convert type="ServiceInfo">VideoWidth</e2:convert><e2:convert type="web:TextToXML" /></e2:element></e2videowidth>
+ <e2videoheight><e2:element source="session.CurrentService"><e2:convert type="ServiceInfo">VideoHeight</e2:convert><e2:convert type="web:TextToXML" /></e2:element></e2videoheight>
+ <e2servicevideosize><e2:element source="session.CurrentService"><e2:convert type="ServiceInfo">VideoWidth</e2:convert><e2:convert type="web:TextToXML" /></e2:element>x<e2:element source="session.CurrentService"><e2:convert type="ServiceInfo">VideoHeight</e2:convert><e2:convert type="web:TextToXML" /></e2:element></e2servicevideosize>
+ <e2apid><e2:element source="session.CurrentService"><e2:convert type="ServiceInfo">AudioPid</e2:convert><e2:convert type="web:TextToXML" /></e2:element></e2apid>
+ <e2vpid><e2:element source="session.CurrentService"><e2:convert type="ServiceInfo">VideoPid</e2:convert><e2:convert type="web:TextToXML" /></e2:element></e2vpid>
+ <e2pcrpid><e2:element source="session.CurrentService"><e2:convert type="ServiceInfo">PcrPid</e2:convert><e2:convert type="web:TextToXML" /></e2:element></e2pcrpid>
+ <e2pmtpid><e2:element source="session.CurrentService"><e2:convert type="ServiceInfo">PmtPid</e2:convert><e2:convert type="web:TextToXML" /></e2:element></e2pmtpid>
+ <e2txtpid><e2:element source="session.CurrentService"><e2:convert type="ServiceInfo">TxtPid</e2:convert><e2:convert type="web:TextToXML" /></e2:element></e2txtpid>
+ <e2tsid><e2:element source="session.CurrentService"><e2:convert type="ServiceInfo">TsId</e2:convert><e2:convert type="web:TextToXML" /></e2:element></e2tsid>
+ <e2onid><e2:element source="session.CurrentService"><e2:convert type="ServiceInfo">OnId</e2:convert><e2:convert type="web:TextToXML" /></e2:element></e2onid>
+ <e2sid><e2:element source="session.CurrentService"><e2:convert type="ServiceInfo">Sid</e2:convert><e2:convert type="web:TextToXML" /></e2:element></e2sid>
+ </e2about>
+</e2abouts>
</e2:screen>
\ No newline at end of file
+++ /dev/null
-<e2:screen name="About2"><?xml version="1.0" encoding="UTF-8"?>
-<e2about>
- <e2frontends><e2:element source="Frontends"><e2:convert type="web:ListFiller" >
- <e2frontend>
- <e2name><e2:item name="Name" filter="xml"/></e2name>
- <e2type><e2:item name="Type" filter="xml"/></e2type>
- </e2frontend></e2:convert><e2:convert type="web:TextToHTML" /></e2:element>
- </e2frontends>
- <e2network><e2:element source="Network"><e2:convert type="web:ListFiller" >
- <e2interface>
- <e2name><e2:item name="Name" filter="xml"/></e2name>
- <e2mac><e2:item name="Mac" filter="xml"/></e2mac>
- <e2dhcp><e2:item name="Dhcp" filter="xml"/></e2dhcp>
- <e2ip><e2:item name="Ip" filter="xml"/></e2ip>
- <e2gateway><e2:item name="Gateway" filter="xml"/></e2gateway>
- <e2netmask><e2:item name="Netmask" filter="xml"/></e2netmask>
- </e2interface></e2:convert><e2:convert type="web:TextToHTML" /></e2:element>
- </e2network>
- <e2hdds><e2:element source="Hdd"><e2:convert type="web:ListFiller">
- <e2hdd>
- <e2model><e2:item name="Model" filter="xml"/></e2model>
- <e2capacity><e2:item name="Capacity" filter="xml"/></e2capacity>
- <e2free><e2:item name="Free" filter="xml"/></e2free>
- </e2hdd></e2:convert><e2:convert type="web:TextToHTML" /></e2:element>
- </e2hdds>
- <e2service>
- <e2servicename><e2:element source="session.CurrentService"><e2:convert type="ServiceName">Name</e2:convert><e2:convert type="web:TextToXML" /></e2:element></e2servicename>
- <e2providername><e2:element source="session.CurrentService"><e2:convert type="ServiceName">Provider</e2:convert><e2:convert type="web:TextToXML" /></e2:element></e2providername>
- <e2videowidth><e2:element source="session.CurrentService"><e2:convert type="ServiceInfo">VideoWidth</e2:convert><e2:convert type="web:TextToXML" /></e2:element></e2videowidth>
- <e2videoheight><e2:element source="session.CurrentService"><e2:convert type="ServiceInfo">VideoHeight</e2:convert><e2:convert type="web:TextToXML" /></e2:element></e2videoheight>
- </e2service>
-</e2about>
-</e2:screen>
<e2:screen name="AutoTimerWebScreen"><?xml version="1.0" encoding="UTF-8"?>
-<e2autotmerlist><e2:element source="AutoTimerList" id="gl"><e2:convert type="web:ListFiller" >
+<e2autotmerlist><e2:element source="AutoTimerList" id="gl"><e2:convert type="web:ListFiller" >
<e2autotimer>
<e2name><e2:item name="Name" filter="xml"/></e2name>
<e2match><e2:item name="Match" filter="xml"/></e2match>
</e2autotimer>
</e2:convert>
<e2:convert type="web:TextToHTML" /></e2:element>
-</e2autotmerlist>
+</e2autotmerlist>
</e2:screen>
\ No newline at end of file
+++ /dev/null
-<e2:screen name="FilesWebScreen"><?xml version="1.0" encoding="UTF-8"?>
- <e2:element source="DelFile" id="file">
- <e2:convert type="web:TextToHTML" />
- </e2:element>
-</e2:screen>
\ No newline at end of file
--- /dev/null
+<e2:screen name="DeviceInfo"><?xml version="1.0" encoding="UTF-8"?>
+<e2deviceinfo>
+ <e2enigmaversion><e2:element source="EnigmaVersion"><e2:convert type="web:TextToHTML" /></e2:element></e2enigmaversion>
+ <e2imageversion><e2:element source="ImageVersion"><e2:convert type="web:TextToHTML" /></e2:element></e2imageversion>
+ <e2webifversion><e2:element source="WebIfVersion"><e2:convert type="web:TextToHTML" /></e2:element></e2webifversion>
+ <e2fpversion><e2:element source="FpVersion"><e2:convert type="web:TextToHTML" /></e2:element></e2fpversion>
+ <e2devicename><e2:element source="DeviceName"><e2:convert type="web:TextToHTML" /></e2:element></e2devicename>
+
+ <e2frontends><e2:element source="Frontends"><e2:convert type="web:ListFiller" >
+ <e2frontend>
+ <e2name><e2:item name="Name" filter="xml"/></e2name>
+ <e2model><e2:item name="Type" filter="xml"/></e2model>
+ </e2frontend></e2:convert><e2:convert type="web:TextToHTML" /></e2:element>
+ </e2frontends>
+
+ <e2network><e2:element source="Network"><e2:convert type="web:ListFiller" >
+ <e2interface>
+ <e2name><e2:item name="Name" filter="xml"/></e2name>
+ <e2mac><e2:item name="Mac" filter="xml"/></e2mac>
+ <e2dhcp><e2:item name="Dhcp" filter="xml"/></e2dhcp>
+ <e2ip><e2:item name="Ip" filter="xml"/></e2ip>
+ <e2gateway><e2:item name="Gateway" filter="xml"/></e2gateway>
+ <e2netmask><e2:item name="Netmask" filter="xml"/></e2netmask>
+ </e2interface></e2:convert><e2:convert type="web:TextToHTML" /></e2:element>
+ </e2network>
+
+ <e2hdds><e2:element source="Hdd"><e2:convert type="web:ListFiller">
+ <e2hdd>
+ <e2model><e2:item name="Model" filter="xml"/></e2model>
+ <e2capacity><e2:item name="Capacity" filter="xml"/></e2capacity>
+ <e2free><e2:item name="Free" filter="xml"/></e2free>
+ </e2hdd></e2:convert><e2:convert type="web:TextToHTML" /></e2:element>
+ </e2hdds>
+</e2deviceinfo>
+</e2:screen>
<e2:screen name="EPGWebScreen"><?xml version="1.0" encoding="UTF-8"?>
-<e2eventlist><e2:element source="EPGBOUQUET" id="bRef,time"><e2:convert type="web:ListFiller" >
+<e2eventlist><e2:element source="EPGBOUQUET" id="bRef,time"><e2:convert type="web:ListFiller" >
<e2event>
<e2eventid><e2:item name="EventID"/></e2eventid>
<e2eventstart><e2:item name="TimeStart"/></e2eventstart>
<e2eventservicereference><e2:item name="ServiceReference" filter="xml"/></e2eventservicereference>
<e2eventservicename><e2:item name="ServiceName" filter="xml"/></e2eventservicename>
</e2event></e2:convert><e2:convert type="web:TextToHTML" /></e2:element>
-</e2eventlist>
+</e2eventlist>
</e2:screen>
\ No newline at end of file
<e2:screen name="EPGWebScreen"><?xml version="1.0" encoding="UTF-8"?>
-<e2eventlist><e2:element source="EPGBOUQUETNEXT" id="bRef">
- <e2:convert type="web:ListFiller" >
+<e2eventlist>
+ <e2:element source="EPGBOUQUETNEXT" id="bRef"><e2:convert type="web:ListFiller" >
<e2event>
<e2eventid><e2:item name="EventID"/></e2eventid>
<e2eventstart><e2:item name="TimeStart"/></e2eventstart>
<e2eventservicereference><e2:item name="ServiceReference" filter="xml"/></e2eventservicereference>
<e2eventservicename><e2:item name="ServiceName" filter="xml"/></e2eventservicename>
</e2event>
- </e2:convert>
- <e2:convert type="web:TextToHTML" /></e2:element>
-</e2eventlist>
+ </e2:convert><e2:convert type="web:TextToHTML" /></e2:element>
+</e2eventlist>
</e2:screen>
\ No newline at end of file
<e2:screen name="EPGWebScreen"><?xml version="1.0" encoding="UTF-8"?>
-<e2eventlist><e2:element source="EPGBOUQUETNOW" id="bRef">
- <e2:convert type="web:ListFiller" >
+<e2eventlist>
+ <e2:element source="EPGBOUQUETNOW" id="bRef"><e2:convert type="web:ListFiller" >
<e2event>
<e2eventid><e2:item name="EventID"/></e2eventid>
<e2eventstart><e2:item name="TimeStart"/></e2eventstart>
<e2eventservicereference><e2:item name="ServiceReference" filter="xml"/></e2eventservicereference>
<e2eventservicename><e2:item name="ServiceName" filter="xml"/></e2eventservicename>
</e2event>
- </e2:convert>
- <e2:convert type="web:TextToHTML" /></e2:element>
-</e2eventlist>
+ </e2:convert><e2:convert type="web:TextToHTML" /></e2:element>
+</e2eventlist>
</e2:screen>
\ No newline at end of file
-<e2:screen name="EPGWebScreen"><?xml version="1.0" encoding="UTF-8"?>
-<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:admin="http://webns.net/mvcb/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:content="http://purl.org/rss/1.0/modules/content/">
- <channel>
- <title>EPG Suche</title>
- <description>Eine automatische Suche nach EPG-Titeln</description>
- <generator>Enigma2 WebInterface</generator>
-
+<e2:screen name="EPGWebScreen"><e2:element source="localip" macro="ipadress" /><?xml version="1.0" encoding="UTF-8"?>
+<rss version="2.0">
+ <channel>
+ <title>EPG Suche</title>
+ <link>http://<e2:element source="localip" filter="xml" /></link>
+ <description>Eine automatische Suche nach EPG-Titeln</description>
+ <generator>Enigma2 WebInterface</generator>
<e2:element source="EPGTITLE" id="search"><e2:convert type="web:ListFiller" >
<item>
<title><e2:item name="Title" filter="xml"/></title>
</e2:convert>
<e2:convert type="web:TextToHTML" />
</e2:element>
- </channel>
-</rss>
+ </channel>
+</rss>
</e2:screen>
\ No newline at end of file
<e2:screen name="EPGWebScreen"><?xml version="1.0" encoding="UTF-8"?>
-<e2eventlist><e2:element source="EPGTITLE" id="search"><e2:convert type="web:ListFiller" >
+<e2eventlist><e2:element source="EPGTITLE" id="search"><e2:convert type="web:ListFiller" >
<e2event>
<e2eventid><e2:item name="EventID"/></e2eventid>
<e2eventstart><e2:item name="TimeStart"/></e2eventstart>
<e2eventservicereference><e2:item name="ServiceReference" filter="xml"/></e2eventservicereference>
<e2eventservicename><e2:item name="ServiceName" filter="xml"/></e2eventservicename>
</e2event></e2:convert><e2:convert type="web:TextToHTML" /></e2:element>
-</e2eventlist>
+</e2eventlist>
</e2:screen>
\ No newline at end of file
<e2:screen name="EPGWebScreen"><?xml version="1.0" encoding="UTF-8"?>
-<e2eventlist><e2:element source="EPGSERVICE" id="sRef"><e2:convert type="web:ListFiller" >
+<e2eventlist><e2:element source="EPGSERVICE" id="sRef"><e2:convert type="web:ListFiller" >
<e2event>
<e2eventid><e2:item name="EventID"/></e2eventid>
<e2eventstart><e2:item name="TimeStart"/></e2eventstart>
<e2eventservicereference><e2:item name="ServiceReference" filter="xml"/></e2eventservicereference>
<e2eventservicename><e2:item name="ServiceName" filter="xml"/></e2eventservicename>
</e2event></e2:convert><e2:convert type="web:TextToHTML" /></e2:element>
-</e2eventlist>
+</e2eventlist>
</e2:screen>
\ No newline at end of file
<e2:screen name="EPGWebScreen"><?xml version="1.0" encoding="UTF-8"?>
-<e2eventlist><e2:element source="EPGSERVICENEXT" id="sRef">
+<e2eventlist><e2:element source="EPGSERVICENEXT" id="sRef">
<e2:convert type="web:ListFiller" >
<e2event>
<e2eventid><e2:item name="EventID"/></e2eventid>
</e2event>
</e2:convert>
<e2:convert type="web:TextToHTML" /></e2:element>
-</e2eventlist>
+</e2eventlist>
</e2:screen>
\ No newline at end of file
<e2:screen name="EPGWebScreen"><?xml version="1.0" encoding="UTF-8"?>
-<e2eventlist><e2:element source="EPGSERVICENOW" id="sRef">
+<e2eventlist><e2:element source="EPGSERVICENOW" id="sRef">
<e2:convert type="web:ListFiller" >
<e2event>
<e2eventid><e2:item name="EventID"/></e2eventid>
</e2event>
</e2:convert>
<e2:convert type="web:TextToHTML" /></e2:element>
-</e2eventlist>
+</e2eventlist>
</e2:screen>
\ No newline at end of file
<e2:screen name="AudioWebScreen"><?xml version="1.0" encoding="UTF-8"?>
-<e2audiotracklist><e2:element source="AudioTracks">
+<e2audiotracklist><e2:element source="AudioTracks">
<e2:convert type="web:ListFiller" >
<e2audiotrack>
<e2audiotrackdescription><e2:item name="Description" filter="xml"/></e2audiotrackdescription>
</e2audiotrack>
</e2:convert>
<e2:convert type="web:TextToHTML" /></e2:element>
-</e2audiotracklist>
+</e2audiotracklist>
</e2:screen>
\ No newline at end of file
<e2:screen name="UpdateWebScreen"><?xml version="1.0" encoding="UTF-8"?>
<e2currentserviceinformation>
-<e2service>
- <e2servicereference><e2:element source="session.CurrentService"><e2:convert type="ServiceName">Reference</e2:convert><e2:convert type="web:TextToXML" /></e2:element></e2servicereference>
- <e2servicename><e2:element source="session.CurrentService"><e2:convert type="ServiceName">Name</e2:convert><e2:convert type="web:TextToXML" /></e2:element></e2servicename>
- <e2providername><e2:element source="session.CurrentService"><e2:convert type="ServiceName">Provider</e2:convert><e2:convert type="web:TextToXML" /></e2:element></e2providername>
-</e2service>
-
-<e2eventlist>
- <e2event>
- <e2eventid><e2:element source="session.Event_Now"><e2:convert type="EventName">ID</e2:convert><e2:convert type="web:TextToXML" /></e2:element></e2eventid>
- <e2eventname><e2:element source="session.Event_Now"><e2:convert type="EventName">Name</e2:convert><e2:convert type="web:TextToXML" /></e2:element></e2eventname>
- <e2eventdescription><e2:element source="session.Event_Now"><e2:convert type="EventName">Description</e2:convert><e2:convert type="web:TextToXML" /></e2:element></e2eventdescription>
- <e2eventdescriptionextended><e2:element source="session.Event_Now"><e2:convert type="EventName">ExtendedDescription</e2:convert><e2:convert type="web:TextToXML" /></e2:element></e2eventdescriptionextended>
- <e2eventstart><e2:element source="session.Event_Now"><e2:convert type="EventTime">StartTime</e2:convert><e2:convert type="ClockToText">Default</e2:convert><e2:convert type="web:TextToXML" /></e2:element></e2eventstart>
- <e2eventduration><e2:element source="session.Event_Now"><e2:convert type="EventTime">Remaining</e2:convert><e2:convert type="RemainingToText">InMinutes</e2:convert><e2:convert type="web:TextToXML" /></e2:element></e2eventduration>
- </e2event>
- <e2event>
- <e2eventid><e2:element source="session.Event_Next"><e2:convert type="EventName">ID</e2:convert><e2:convert type="web:TextToXML" /></e2:element></e2eventid>
- <e2eventname><e2:element source="session.Event_Next"><e2:convert type="EventName">Name</e2:convert><e2:convert type="web:TextToXML" /></e2:element></e2eventname>
- <e2eventdescription><e2:element source="session.Event_Next"><e2:convert type="EventName">Description</e2:convert><e2:convert type="web:TextToXML" /></e2:element></e2eventdescription>
- <e2eventstart><e2:element source="session.Event_Next"><e2:convert type="EventTime">StartTime</e2:convert><e2:convert type="ClockToText">Default</e2:convert><e2:convert type="web:TextToXML" /></e2:element></e2eventstart>
- <e2eventduration><e2:element source="session.Event_Next"><e2:convert type="EventTime">Remaining</e2:convert><e2:convert type="RemainingToText">InMinutes</e2:convert><e2:convert type="web:TextToXML" /></e2:element></e2eventduration>
- <e2eventdescriptionextended><e2:element source="session.Event_Next"><e2:convert type="EventName">ExtendedDescription</e2:convert><e2:convert type="web:TextToXML" /></e2:element></e2eventdescriptionextended>
- </e2event>
-</e2eventlist>
+ <e2service>
+ <e2servicereference><e2:element source="session.CurrentService"><e2:convert type="ServiceName">Reference</e2:convert><e2:convert type="web:TextToXML" /></e2:element></e2servicereference>
+ <e2servicename><e2:element source="session.CurrentService"><e2:convert type="ServiceName">Name</e2:convert><e2:convert type="web:TextToXML" /></e2:element></e2servicename>
+ <e2providername><e2:element source="session.CurrentService"><e2:convert type="ServiceName">Provider</e2:convert><e2:convert type="web:TextToXML" /></e2:element></e2providername>
+ <e2videowidth><e2:element source="session.CurrentService"><e2:convert type="ServiceInfo">VideoWidth</e2:convert><e2:convert type="web:TextToXML" /></e2:element></e2videowidth>
+ <e2videoheight><e2:element source="session.CurrentService"><e2:convert type="ServiceInfo">VideoHeight</e2:convert><e2:convert type="web:TextToXML" /></e2:element></e2videoheight>
+ <e2servicevideosize><e2:element source="session.CurrentService"><e2:convert type="ServiceInfo">VideoWidth</e2:convert><e2:convert type="web:TextToXML" /></e2:element>x<e2:element source="session.CurrentService"><e2:convert type="ServiceInfo">VideoHeight</e2:convert><e2:convert type="web:TextToXML" /></e2:element></e2servicevideosize>
+ <e2iswidescreen><e2:element source="session.CurrentService"><e2:convert type="ServiceInfo">IsWidescreen</e2:convert><e2:convert type="web:TextToXML" /></e2:element></e2iswidescreen>
+ <e2apid><e2:element source="session.CurrentService"><e2:convert type="ServiceInfo">AudioPid</e2:convert><e2:convert type="web:TextToXML" /></e2:element></e2apid>
+ <e2vpid><e2:element source="session.CurrentService"><e2:convert type="ServiceInfo">VideoPid</e2:convert><e2:convert type="web:TextToXML" /></e2:element></e2vpid>
+ <e2pcrpid><e2:element source="session.CurrentService"><e2:convert type="ServiceInfo">PcrPid</e2:convert><e2:convert type="web:TextToXML" /></e2:element></e2pcrpid>
+ <e2pmtpid><e2:element source="session.CurrentService"><e2:convert type="ServiceInfo">PmtPid</e2:convert><e2:convert type="web:TextToXML" /></e2:element></e2pmtpid>
+ <e2txtpid><e2:element source="session.CurrentService"><e2:convert type="ServiceInfo">TxtPid</e2:convert><e2:convert type="web:TextToXML" /></e2:element></e2txtpid>
+ <e2tsid><e2:element source="session.CurrentService"><e2:convert type="ServiceInfo">TsId</e2:convert><e2:convert type="web:TextToXML" /></e2:element></e2tsid>
+ <e2onid><e2:element source="session.CurrentService"><e2:convert type="ServiceInfo">OnId</e2:convert><e2:convert type="web:TextToXML" /></e2:element></e2onid>
+ <e2sid><e2:element source="session.CurrentService"><e2:convert type="ServiceInfo">Sid</e2:convert><e2:convert type="web:TextToXML" /></e2:element></e2sid>
+ </e2service>
+ <e2eventlist>
+ <e2event>
+ <e2eventid><e2:element source="session.Event_Now"><e2:convert type="EventName">ID</e2:convert><e2:convert type="web:TextToXML" /></e2:element></e2eventid>
+ <e2eventname><e2:element source="session.Event_Now"><e2:convert type="EventName">Name</e2:convert><e2:convert type="web:TextToXML" /></e2:element></e2eventname>
+ <e2eventdescription><e2:element source="session.Event_Now"><e2:convert type="EventName">Description</e2:convert><e2:convert type="web:TextToXML" /></e2:element></e2eventdescription>
+ <e2eventdescriptionextended><e2:element source="session.Event_Now"><e2:convert type="EventName">ExtendedDescription</e2:convert><e2:convert type="web:TextToXML" /></e2:element></e2eventdescriptionextended>
+ <e2eventstart><e2:element source="session.Event_Now"><e2:convert type="EventTime">StartTime</e2:convert><e2:convert type="ClockToText">Timestamp</e2:convert><e2:convert type="web:TextToXML" /></e2:element></e2eventstart>
+ <e2eventduration><e2:element source="session.Event_Now"><e2:convert type="EventTime">Remaining</e2:convert><e2:convert type="RemainingToText">InSeconds</e2:convert><e2:convert type="web:TextToXML" /></e2:element></e2eventduration>
+ </e2event>
+ <e2event>
+ <e2eventid><e2:element source="session.Event_Next"><e2:convert type="EventName">ID</e2:convert><e2:convert type="web:TextToXML" /></e2:element></e2eventid>
+ <e2eventname><e2:element source="session.Event_Next"><e2:convert type="EventName">Name</e2:convert><e2:convert type="web:TextToXML" /></e2:element></e2eventname>
+ <e2eventdescription><e2:element source="session.Event_Next"><e2:convert type="EventName">Description</e2:convert><e2:convert type="web:TextToXML" /></e2:element></e2eventdescription>
+ <e2eventstart><e2:element source="session.Event_Next"><e2:convert type="EventTime">StartTime</e2:convert><e2:convert type="ClockToText">Timestamp</e2:convert><e2:convert type="web:TextToXML" /></e2:element></e2eventstart>
+ <e2eventduration><e2:element source="session.Event_Next"><e2:convert type="EventTime">Remaining</e2:convert><e2:convert type="RemainingToText">InSeconds</e2:convert><e2:convert type="web:TextToXML" /></e2:element></e2eventduration>
+ <e2eventdescriptionextended><e2:element source="session.Event_Next"><e2:convert type="EventName">ExtendedDescription</e2:convert><e2:convert type="web:TextToXML" /></e2:element></e2eventdescriptionextended>
+ </e2event>
+ </e2eventlist>
</e2currentserviceinformation>
</e2:screen>
\ No newline at end of file
<e2:screen name="LocationsAndTagsWebScreen"><?xml version="1.0" encoding="UTF-8"?>
- <e2:element source="CurrentLocation">
- <e2:convert type="web:TextToHTML" />
- </e2:element>
+<e2locations>
+ <e2location><e2:element source="CurrentLocation"><e2:convert type="web:TextToHTML" /></e2:element></e2location>
+</e2locations>
</e2:screen>
\ No newline at end of file
<e2:screen name="LocationsAndTagsWebScreen"><?xml version="1.0" encoding="UTF-8"?>
- <e2:element source="Locations">
- <e2:convert type="web:TextToHTML" />
- </e2:element>
+<e2locations>
+<e2:element source="Locations"><e2:convert type="web:SimpleListFiller">
+ <e2location><e2:item name="" filter="xml" /></e2location>
+ </e2:convert><e2:convert type="web:TextToHTML" />
+</e2:element>
+</e2locations>
</e2:screen>
\ No newline at end of file
<e2:screen name="LocationsAndTagsWebScreen"><?xml version="1.0" encoding="UTF-8"?>
- <e2:element source="Tags">
- <e2:convert type="web:TextToHTML" />
- </e2:element>
+<e2tags>
+<e2:element source="Tags"><e2:convert type="web:SimpleListFiller">
+ <e2tag><e2:item name="" filter="xml" /></e2tag>
+</e2:convert><e2:convert type="web:TextToHTML" />
+</e2:element>
+</e2tags>
</e2:screen>
\ No newline at end of file
<e2:screen name="MediaPlayerWebScreen"><?xml version="1.0" encoding="UTF-8"?>
-<e2filelist><e2:element source="FileList" id="path,types"><e2:convert type="web:ListFiller" >
+<e2filelist><e2:element source="FileList" id="path,types"><e2:convert type="web:ListFiller" >
<e2file>
<e2servicereference><e2:item name="ServiceReference" filter="xml"/></e2servicereference>
<e2isdirectory><e2:item name="IsDirectory" filter="xml"/></e2isdirectory>
<e2root><e2:item name="Root" filter="xml"/></e2root>
</e2file>
- </e2:convert>
- <e2:convert type="web:TextToHTML" /></e2:element>
-</e2filelist>
+ </e2:convert><e2:convert type="web:TextToHTML" /></e2:element>
+</e2filelist>
</e2:screen>
\ No newline at end of file
<e2:screen name="MessageWebScreen"><?xml version="1.0" encoding="UTF-8"?>
-<e2simplexmlresult>
- <e2:element source="Message" id="text,type,timeout"><e2:convert type="web:ListFiller" >
- <e2state><e2:item name="Result" filter="xml"/></e2state>
- <e2statetext><e2:item name="ResultText" filter="xml"/></e2statetext>>
- </e2:convert><e2:convert type="web:TextToHTML" /></e2:element>
-</e2simplexmlresult>
+<e2:element source="Message" id="text,type,timeout"><e2:convert type="web:Null" /></e2:element>
+<e2simplexmlresult>
+ <e2state><e2:element source="Message"><e2:convert type="SimpleResult">Result</e2:convert><e2:convert type="web:TextToHTML" /></e2:element></e2state>
+ <e2statetext><e2:element source="Message"><e2:convert type="SimpleResult">ResultText</e2:convert><e2:convert type="web:TextToHTML" /></e2:element></e2statetext>
+</e2simplexmlresult>
</e2:screen>
\ No newline at end of file
<e2:screen name="MessageWebScreen"><?xml version="1.0" encoding="UTF-8"?>
-<e2simplexmlresult>
- <e2:element source="GetAnswer" id="getanswer"><e2:convert type="web:ListFiller" >
- <e2state><e2:item name="Result" filter="xml"/></e2state>
- <e2statetext><e2:item name="ResultText" filter="xml"/></e2statetext>
- </e2:convert><e2:convert type="web:TextToHTML" /></e2:element>
-</e2simplexmlresult>
+<e2:element source="GetAnswer" id="getanswer"><e2:convert type="web:Null" /></e2:element>
+<e2simplexmlresult>
+ <e2state><e2:element source="GetAnswer"><e2:convert type="SimpleResult">Result</e2:convert><e2:convert type="web:TextToHTML" /></e2:element></e2state>
+ <e2statetext><e2:element source="GetAnswer"><e2:convert type="SimpleResult">ResultText</e2:convert><e2:convert type="web:TextToHTML" /></e2:element></e2statetext>
+</e2simplexmlresult>
</e2:screen>
\ No newline at end of file
<e2:screen name="MovieWebScreen"><?xml version="1.0" encoding="UTF-8"?>
- <e2:element source="MovieFileDel" id="sRef">
- <e2:convert type="web:TextToHTML" />
- </e2:element>
+<e2:element source="MovieFileDel" id="sRef"><e2:convert type="web:Null" /></e2:element>
+<e2simplexmlresult>
+ <e2state><e2:element source="MovieFileDel"><e2:convert type="SimpleResult">Result</e2:convert><e2:convert type="web:TextToHTML" /></e2:element></e2state>
+ <e2statetext><e2:element source="MovieFileDel"><e2:convert type="SimpleResult">ResultText</e2:convert><e2:convert type="web:TextToHTML" /></e2:element></e2statetext>
+</e2simplexmlresult>
</e2:screen>
\ No newline at end of file
<e2:screen name="MovieWebScreen">
-<html>
- <head>
- <title>Enigma2 Movielist</title>
- <link href="/webdata/style.css" type="text/css" rel="stylesheet" />
-
- </head>
-
-<body>
-
-<table width='100%'>
+<html>
+ <head>
+ <title>Enigma2 Movielist</title>
+ <link href="/webdata/style.css" type="text/css" rel="stylesheet" />
+ </head>
+<body>
+ <table width="100%">
<e2:element source="MovieList" id="dirname,tag"><e2:convert type="web:ListFiller" >
<tr>
<td class="pageHeader"><e2:item name="Title" filter="xml"/></td>
</tr>
</e2:convert><e2:convert type="web:TextToHTML" /></e2:element>
-</table>
+ </table>
-</body>
-</html>
+</body>
+</html>
</e2:screen>
<e2:screen name="MovieWebScreen"><e2:element source="localip" macro="ipadress" /><?xml version="1.0" encoding="UTF-8"?>
-<rss version="2.0" >
- <channel>
- <title>Enigma2 Movielist</title>
- <link>http://<e2:element source="localip" filter="xml" /></link>
- <description>Eine automatische Liste aller Enigma2 Aufnahmen</description>
- <generator>Enigma2 WebInterface </generator>
+<rss version="2.0" >
+ <channel>
+ <title>Enigma2 Movielist</title>
+ <link>http://<e2:element source="localip" filter="xml" /></link>
+ <description>Eine automatische Liste aller Enigma2 Aufnahmen</description>
+ <generator>Enigma2 WebInterface</generator>
<e2:element source="MovieList" id="dirname,tag"><e2:convert type="web:ListFiller" >
<item>
<title><e2:item name="Title" filter="xml"/></title>
<category><e2:item name="ServiceName" filter="xml" /></category>
<author>Dreambox Enigma2</author>
</item></e2:convert><e2:convert type="web:TextToHTML" /></e2:element>
- </channel>
-</rss>
+ </channel>
+</rss>
</e2:screen>
\ No newline at end of file
<e2:screen name="MovieWebScreen"><?xml version="1.0" encoding="UTF-8"?>
-<e2movielist><e2:element source="MovieList" id="dirname,tag"><e2:convert type="web:ListFiller" >
+<e2movielist><e2:element source="MovieList" id="dirname,tag"><e2:convert type="web:ListFiller" >
<e2movie>
- <e2servicereference><e2:item name="ServiceReference" filter="xml"/></e2servicereference>
- <e2title><e2:item name="Title" filter="xml"/></e2title>
- <e2description><e2:item name="Description" filter="xml"/></e2description>
+ <e2servicereference><e2:item name="ServiceReference" filter="xml"/></e2servicereference>
+ <e2title><e2:item name="Title" filter="xml"/></e2title>
+ <e2description><e2:item name="Description" filter="xml"/></e2description>
<e2descriptionextended><e2:item name="DescriptionExtended" filter="xml"/></e2descriptionextended>
- <e2servicename><e2:item name="ServiceName" filter="xml"/></e2servicename>
- <e2time><e2:item name="Time" filter="xml"/></e2time>
- <e2length><e2:item name="Length" filter="xml"/></e2length>
- <e2tags><e2:item name="Tags" filter="xml"/></e2tags>
- <e2filename><e2:item name="Filename" filter="xml"/></e2filename>
- <e2filesize><e2:item name="Filesize" filter="xml"/></e2filesize>
+ <e2servicename><e2:item name="ServiceName" filter="xml"/></e2servicename>
+ <e2time><e2:item name="Time" filter="xml"/></e2time>
+ <e2length><e2:item name="Length" filter="xml"/></e2length>
+ <e2tags><e2:item name="Tags" filter="xml"/></e2tags>
+ <e2filename><e2:item name="Filename" filter="xml"/></e2filename>
+ <e2filesize><e2:item name="Filesize" filter="xml"/></e2filesize>
</e2movie>
</e2:convert>
<e2:convert type="web:TextToHTML" /></e2:element>
-</e2movielist>
+</e2movielist>
</e2:screen>
\ No newline at end of file
-<e2:screen name="MovieWebScreen">
- <e2:element source="MovieTags" >
- <e2:convert type="web:TextToHTML" />
- </e2:element>
+<e2:screen name="LocationsAndTagsWebScreen"><?xml version="1.0" encoding="UTF-8"?>
+<e2tags>
+<e2:element source="Tags"><e2:convert type="web:SimpleListFiller">
+ <e2tag><e2:item name="" filter="xml" /></e2tag>
+</e2:convert><e2:convert type="web:TextToHTML" />
+</e2:element>
+</e2tags>
</e2:screen>
\ No newline at end of file
<e2:screen name="PowerWebScreen"><?xml version="1.0" encoding="UTF-8"?>
-<e2powerstate>
- <e2instandby><e2:element source="PowerState" id="newstate">
- <e2:convert type="web:TextToHTML" />
- </e2:element></e2instandby>
-</e2powerstate>
+<e2powerstate>
+ <e2instandby><e2:element source="PowerState" id="newstate">
+ <e2:convert type="web:TextToHTML" /></e2:element>
+ </e2instandby>
+</e2powerstate>
</e2:screen>
\ No newline at end of file
<e2:screen name="RemoteWebScreen"><?xml version="1.0" encoding="UTF-8"?>
-<e2remotecontrol>
- <e2:element source="RemoteControl" id="command"><e2:convert type="web:ListFiller" >
- <e2result><e2:item name="Result" filter="xml"/></e2result>
- <e2resulttext><e2:item name="ResultText" filter="xml"/></e2resulttext>
- </e2:convert><e2:convert type="web:TextToHTML" /></e2:element>
-</e2remotecontrol>
+<e2:element source="RemoteControl" id="command"><e2:convert type="web:Null" /></e2:element>
+<e2remotecontrol>
+ <e2result><e2:element source="RemoteControl"><e2:convert type="SimpleResult">Result</e2:convert><e2:convert type="web:TextToHTML" /></e2:element></e2result>
+ <e2resulttext><e2:element source="RemoteControl"><e2:convert type="SimpleResult">ResultText</e2:convert><e2:convert type="web:TextToHTML" /></e2:element></e2resulttext>
+</e2remotecontrol>
</e2:screen>
\ No newline at end of file
<e2:screen name="AudioWebScreen"><?xml version="1.0" encoding="UTF-8"?>
-<e2result><e2:element source="SelectAudioTrack" id="id"><e2:convert type="web:TextToHTML" /></e2:element></e2result>
+<e2result><e2:element source="SelectAudioTrack" id="id"><e2:convert type="web:TextToHTML" /></e2:element></e2result>
</e2:screen>
<e2:screen name="ServiceListReloadWebScreen"><?xml version="1.0" encoding="UTF-8"?>
-<e2message>
- <e2:element source="ServiceListReload" id="mode"><e2:convert type="web:ListFiller" >
- <e2result><e2:item name="result" filter="xml"/></e2result>
- <e2resulttext><e2:item name="mode" filter="xml"/></e2resulttext>
- </e2:convert><e2:convert type="web:TextToHTML" /></e2:element>
-</e2message>
+<e2:element source="ServiceListReload" id="mode"><e2:convert type="web:Null" /></e2:element>
+<e2simplexmlresult>
+ <e2state><e2:element source="ServiceListReload"><e2:convert type="SimpleResult">Result</e2:convert><e2:convert type="web:TextToHTML" /></e2:element></e2state>
+ <e2statetext><e2:element source="ServiceListReload"><e2:convert type="SimpleResult">ResultText</e2:convert><e2:convert type="web:TextToHTML" /></e2:element></e2statetext>
+</e2simplexmlresult>
</e2:screen>
\ No newline at end of file
<e2:element source="Settings">
<e2:convert type="web:ListFiller">
<e2setting>
- <e2settingvalue><e2:item name="Value" filter="xml" /></e2settingvalue>
<e2settingname><e2:item name="Name" filter="xml" /></e2settingname>
+ <e2settingvalue><e2:item name="Value" filter="xml" /></e2settingvalue>
</e2setting>
</e2:convert>
<e2:convert type="web:TextToHTML" />
<e2:screen name="SubServiceWebScreen"><?xml version="1.0" encoding="UTF-8"?>
-<e2servicelist><e2:element source="SubServices" ><e2:convert type="web:ListFiller" >
+<e2servicelist><e2:element source="SubServices" ><e2:convert type="web:ListFiller" >
<e2service>
<e2servicereference><e2:item name="ServiceReference" filter="xml"/></e2servicereference>
<e2servicename><e2:item name="Name" filter="xml"/></e2servicename>
</e2service>
</e2:convert>
<e2:convert type="web:TextToHTML" /></e2:element>
-</e2servicelist>
+</e2servicelist>
</e2:screen>
\ No newline at end of file
<e2:screen name="TimerWebScreen"><?xml version="1.0" encoding="UTF-8"?>
- <e2:element source="TimerAdd" id="sRef,begin,end,name,description,dirname,tags,eit,disabled,justplay,afterevent">
- <e2:convert type="web:TextToHTML" />
- </e2:element>
+<e2:element source="TimerAdd" id="sRef,begin,end,name,description,dirname,tags,eit,disabled,justplay,afterevent">
+ <e2:convert type="web:Null" />
+</e2:element>
+<e2simplexmlresult>
+ <e2state><e2:element source="TimerAdd"><e2:convert type="SimpleResult">Result</e2:convert><e2:convert type="web:TextToHTML" /></e2:element></e2state>
+ <e2statetext><e2:element source="TimerAdd"><e2:convert type="SimpleResult">ResultText</e2:convert><e2:convert type="web:TextToHTML" /></e2:element></e2statetext>
+</e2simplexmlresult>
</e2:screen>
\ No newline at end of file
<e2:screen name="TimerWebScreen"><?xml version="1.0" encoding="UTF-8"?>
- <e2:element source="TimerAddEventID" id="sRef,eventid,justplay,dirname,tags">
- <e2:convert type="web:TextToHTML" />
- </e2:element>
+<e2:element source="TimerAddEventID" id="sRef,eventid,justplay,dirname,tags">
+ <e2:convert type="web:Null" />
+</e2:element>
+<e2simplexmlresult>
+ <e2state><e2:element source="TimerAddEventID"><e2:convert type="SimpleResult">Result</e2:convert><e2:convert type="web:TextToHTML" /></e2:element></e2state>
+ <e2statetext><e2:element source="TimerAddEventID"><e2:convert type="SimpleResult">ResultText</e2:convert><e2:convert type="web:TextToHTML" /></e2:element></e2statetext>
+</e2simplexmlresult>
</e2:screen>
\ No newline at end of file
<e2:screen name="TimerWebScreen"><?xml version="1.0" encoding="UTF-8"?>
- <e2:element source="TimerChange" id="sRef,begin,end,name,description,dirname,tags,eit,disabled,justplay,afterevent,repeated,channelOld,beginOld,endOld,deleteOldOnSave">
- <e2:convert type="web:TextToHTML" />
- </e2:element>
+<e2:element source="TimerChange" id="sRef,begin,end,name,description,dirname,tags,eit,disabled,justplay,afterevent,repeated,channelOld,beginOld,endOld,deleteOldOnSave">
+ <e2:convert type="web:Null" />
+</e2:element>
+<e2simplexmlresult>
+ <e2state><e2:element source="TimerChange"><e2:convert type="SimpleResult">Result</e2:convert><e2:convert type="web:TextToHTML" /></e2:element></e2state>
+ <e2statetext><e2:element source="TimerChange"><e2:convert type="SimpleResult">ResultText</e2:convert><e2:convert type="web:TextToHTML" /></e2:element></e2statetext>
+</e2simplexmlresult>
</e2:screen>
\ No newline at end of file
<e2:screen name="TimerWebScreen"><?xml version="1.0" encoding="UTF-8"?>
- <e2:element source="TimerCleanup" id="cleanup">
- <e2:convert type="web:TextToHTML" />
- </e2:element>
+<e2:element source="TimerCleanup" id="cleanup">
+ <e2:convert type="web:Null" />
+</e2:element>
+<e2simplexmlresult>
+ <e2state><e2:element source="TimerCleanup"><e2:convert type="SimpleResult">Result</e2:convert><e2:convert type="web:TextToHTML" /></e2:element></e2state>
+ <e2statetext><e2:element source="TimerCleanup"><e2:convert type="SimpleResult">ResultText</e2:convert><e2:convert type="web:TextToHTML" /></e2:element></e2statetext>
+</e2simplexmlresult>
</e2:screen>
\ No newline at end of file
<e2:screen name="TimerWebScreen"><?xml version="1.0" encoding="UTF-8"?>
- <e2:element source="TimerDel" id="sRef,begin,end">
- <e2:convert type="web:TextToHTML" />
- </e2:element>
+<e2:element source="TimerDel" id="sRef,begin,end">
+ <e2:convert type="web:Null" />
+</e2:element>
+<e2simplexmlresult>
+ <e2state><e2:element source="TimerDel"><e2:convert type="SimpleResult">Result</e2:convert><e2:convert type="web:TextToHTML" /></e2:element></e2state>
+ <e2statetext><e2:element source="TimerDel"><e2:convert type="SimpleResult">ResultText</e2:convert><e2:convert type="web:TextToHTML" /></e2:element></e2statetext>
+</e2simplexmlresult>
</e2:screen>
\ No newline at end of file
<e2:screen name="TimerWebScreen"><?xml version="1.0" encoding="UTF-8"?>
-<e2timerlist><e2:element source="TimerList" ><e2:convert type="web:ListFiller" >
+<e2timerlist><e2:element source="TimerList" ><e2:convert type="web:ListFiller" >
<e2timer>
<e2servicereference><e2:item name="ServiceReference" /></e2servicereference>
<e2servicename><e2:item name="ServiceName" filter="xml"/></e2servicename>
<e2startprepare><e2:item name="startPrepare" /></e2startprepare>
<e2justplay><e2:item name="justPlay" /></e2justplay>
<e2afterevent><e2:item name="afterEvent" /></e2afterevent>
- <e2dirname><e2:item name="Location" /></e2dirname>
+ <e2location><e2:item name="Location" /></e2location>
<e2tags><e2:item name="Tags" filter="xml"/></e2tags>
<e2logentries><e2:item name="LogEntries" filter="xml"/></e2logentries>
<e2filename><e2:item name="Filename" filter="xml"/></e2filename>
<e2cancled><e2:item name="Cancled" /></e2cancled>
<e2toggledisabled><e2:item name="toggleDisabled" /></e2toggledisabled>
<e2toggledisabledimg><e2:item name="toggleDisabledIMG" /></e2toggledisabledimg>
- </e2timer>
- </e2:convert>
- <e2:convert type="web:TextToHTML" /></e2:element>
-</e2timerlist>
+ </e2timer></e2:convert><e2:convert type="web:TextToHTML" /></e2:element>
+</e2timerlist>
</e2:screen>
\ No newline at end of file
<e2:screen name="TimerWebScreen">
- <e2:element source="TimerListWrite" id="write">
- <e2:convert type="web:TextToHTML" />
- </e2:element>
+<e2:element source="TimerListWrite" id="write">
+ <e2:convert type="web:Null" />
+</e2:element>
+<e2simplexmlresult>
+ <e2state><e2:element source="TimerListWrite"><e2:convert type="SimpleResult">Result</e2:convert><e2:convert type="web:TextToHTML" /></e2:element></e2state>
+ <e2statetext><e2:element source="TimerListWrite"><e2:convert type="SimpleResult">ResultText</e2:convert><e2:convert type="web:TextToHTML" /></e2:element></e2statetext>
+</e2simplexmlresult>
</e2:screen>
\ No newline at end of file
<e2:screen name="VolumeWebScreen"><?xml version="1.0" encoding="UTF-8"?>
-<e2volume><e2:element source="Volume" id="set"><e2:convert type="web:ListFiller" >
- <e2result><e2:item name="Result"/></e2result>
- <e2resulttext><e2:item name="ResultText"/></e2resulttext>
- <e2current><e2:item name="Volume"/></e2current>
- <e2ismuted><e2:item name="isMuted"/></e2ismuted>
- </e2:convert>
- <e2:convert type="web:TextToHTML" /></e2:element>
-</e2volume>
-</e2:screen>
+<e2:element source="Volume" id="set"><e2:convert type="web:Null" /></e2:element>
+<e2volume>
+ <e2result><e2:element source="Volume"><e2:convert type="VolumeInfo">Result</e2:convert><e2:convert type="web:TextToHTML" /></e2:element></e2result>
+ <e2resulttext><e2:element source="Volume"><e2:convert type="VolumeInfo">ResultText</e2:convert><e2:convert type="web:TextToHTML" /></e2:element></e2resulttext>
+ <e2current><e2:element source="Volume"><e2:convert type="VolumeInfo">Volume</e2:convert><e2:convert type="web:TextToHTML" /></e2:element></e2current>
+ <e2ismuted><e2:element source="Volume"><e2:convert type="VolumeInfo">IsMuted</e2:convert><e2:convert type="web:TextToHTML" /></e2:element></e2ismuted>
+</e2volume>
+</e2:screen>
\ No newline at end of file
--- /dev/null
+<e2:screen name="ServiceWebScreen"><html>
+<head>
+ <link href="/web-data/tpl/default/style.css" type="text/css" rel="stylesheet" />
+</head>
+<body>
+
+<p>Enigma2 WAP - Bouquets</p>
+<table border="1" cellspacing="0" cellpadding="0">
+ <tr>
+ <td><b>Bouquet</b></td>
+ <td><b>Channellist</b></td>
+ </tr>
+ <e2:element source="ServiceList" id="sRef"><e2:convert type="web:ListFiller" >
+ <tr>
+ <td><e2:item name="Name" filter="xml"/></td>
+ <td>
+ <a href='/web/wap/services.html?sRef=<e2:item name="Reference" filter="uri"/>'>
+ <img src="/web-data/img/epg.png" title="Channellist" border="0">
+ </a>
+ </td>
+ </tr>
+ </e2:convert><e2:convert type="web:TextToHTML" /></e2:element>
+</table>
+
+
+</body>
+</e2:screen>
+
+
--- /dev/null
+<e2:screen name="EPGWebScreen"><html>
+<head>
+ <link href="/web-data/tpl/default/style.css" type="text/css" rel="stylesheet" />
+</head>
+<body>
+<p>Enigma2 WAP - EPG</p>
+<table border="1" cellspacing="0" cellpadding="0">
+ <tr>
+ <td><b>Channel</b></td>
+ <td><b>Name</b></td>
+ <td><b>Description</b></td>
+ <td><b>Starttime</b></td>
+ <td><b>Endtime</b></td>
+ <td><b>Duration</b></td>
+ <td><b>Timer</b></td>
+ </tr>
+ <e2:element source="EPGSERVICEWAP" id="sRef"><e2:convert type="web:ListFiller" >
+ <tr>
+ <td><e2:item name="ServiceName" filter="xml"/></td>
+ <td><e2:item name="Title" filter="xml"/><p><e2:item name="Description" filter="xml"/></td>
+ <td><e2:item name="DescriptionExtended" filter="xml"/></td>
+ <td><e2:item name="TimeStart" filter="time"/></td>
+ <td><e2:item name="TimeEnd" filter="time"/></td>
+ <td><e2:item name="Duration" filter="minutes"/></td>
+ <td>
+ <a href="/web/wap/timeredit.html?bouquet=&sRef=<e2:item name="ServiceReference"/>&begin=<e2:item name="TimeStart"/>&end=<e2:item name="TimeEnd"/>&name=<e2:item name="Title"/>&description=<e2:item name="Description"/>&afterevent=&justplay=&dirname=&tags=&repeated=&disabled=&deleteOldOnSave=0&command=add&ehour=end&emin=end&day=begin&month=begin&year=begin&shour=begin&smin=begin"><img src=/web-data/img/timer.png title=AddTimer border=0 /></a>
+ </td>
+ </tr>
+ </e2:convert><e2:convert type="web:TextToHTML" /></e2:element>
+</table>
+</body>
+</e2:screen>
<link href="/web-data/tpl/default/style.css" type="text/css" rel="stylesheet" />
<link rel="shortcut icon" type="image/x-icon" href="/web-data/img/favicon.ico"/>
+
</head>
<body>
-<h1 style="text-align: center;"><big>Dreambox 7025</big></h1>
+
+<h1 style="text-align: center;"><big>Enigma 2</big></h1>
<h1 style="text-align: center;">Static/WAP</h1>
<h1 style="text-align: center;"><small>Interface</small></h1>
<br/>
-<div style="text-align: center;">
+<div class="wap" style="text-align: center;">
<a href="/web/wap/wapremote.html?command=0">Remote Control</a><br/>
<a href="/web/wap/timerlist.html">Timerlist</a><br/>
<a href="/web/wap/timeredit.html?name=&description=&dirname=&tags=&justplay=&afterevent=&repeated=&bouquet=&sRef=&ehour=now&shour=now&emin=now&smin=now&day=now&month=now&year=now&end=&begin=&deleteOldOnSave=0&command=add">Add Timer</a><br/>
+<a href="/web/wap/services.html?sRef=1%3A7%3A1%3A0%3A0%3A0%3A0%3A0%3A0%3A0%3AFROM%20BOUQUET%20%22userbouquet.0.tv%22%20ORDER%20BY%20bouquet">Channellist Favorites</a><br/>
+<a href="/web/wap/bouquets.html?sRef=1%3A7%3A1%3A0%3A0%3A0%3A0%3A0%3A0%3A0%3A(type%20%3D%3D%201)%20||%20(type%20%3D%3D%2017)%20||%20(type%20%3D%3D%20195)%20||%20(type%20%3D%3D%2025)FROM%20BOUQUET%20%22bouquets.tv%22%20ORDER%20BY%20bouquet">Bouquetlist</a><br/>
<a href="/web/wap/power.html">PowerState</a><br/>
</div>
</body>
</html>
-</e2:screen>
\ No newline at end of file
+</e2:screen>
<link rel="shortcut icon" type="image/x-icon" href="/web-data/img/favicon.ico"/>
</head>
<body>
-<p><center><a href="/web/powerstate?newstate=1">deepstandby Dreambox</a></center></p>
-<p><center><a href="/web/powerstate?newstate=2">reboot Dreambox</a></center></p>
-<hr/>
-<p><center><a href="/web/powerstate?newstate=3">restart Enigma2</a></center></p>
+<div class="wap">
+ <p><center><a href="/web/powerstate?newstate=1">Deepstandby Dreambox</a></center></p>
+ <p><center><a href="/web/powerstate?newstate=2">Reboot Dreambox</a></center></p>
+ <hr/>
+ <p><center><a href="/web/powerstate?newstate=3">Restart Enigma2</a></center></p>
+</div>
</body>
</html>
</e2:screen>
\ No newline at end of file
--- /dev/null
+<e2:screen name="ServiceWebScreen"><html>
+<head>
+ <link href="/web-data/tpl/default/style.css" type="text/css" rel="stylesheet" />
+</head>
+<body>
+Enigma2 Servicelist - Favorites
+<table border="1" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><b>Channel</b></td>
+ <td><b>ZAP</b></td>
+ <td><b>EPG</b></td>
+ </tr>
+<e2:element source="ServiceList" id="sRef"><e2:convert type="web:ListFiller" >
+ <tr>
+ <td><e2:item name="Name" filter="xml"/></td>
+ <td><a href="/web/zap?sRef=<e2:item name="Reference" filter="uri"/>"><img src=/web-data/img/zap.png title=ZAP border=0></a></td>
+ <td><a href="/web/wap/epg.html?sRef=<e2:item name="Reference" filter="uri"/>"><img src=/web-data/img/epg.png title=EPG border=0></a></td>
+ </tr>
+ </e2:convert><e2:convert type="web:TextToHTML" /></e2:element>
+</table>
+
+
+</body>
+</e2:screen>
<e2:screen name="TimerWebScreen">
<e2:element source="TVBrowser" id="sRef,name,description,dirname,tags,eit,disabled,justplay,afterevent,year,month,day,shour,smin,ehour,emin,mo,tu,we,th,fr,sa,su,mf,ms,command,deleteOldOnSave,beginOld,endOld,channelOld">
- <e2:convert type="web:TextToHTML" />
+ <e2:convert type="web:Null" />
</e2:element>
+
+<e2simplexmlresult>
+ <e2state><e2:element source="TVBrowser"><e2:convert type="SimpleResult">Result</e2:convert><e2:convert type="web:TextToHTML" /></e2:element></e2state>
+ <e2statetext><e2:element source="TVBrowser"><e2:convert type="SimpleResult">ResultText</e2:convert><e2:convert type="web:TextToHTML" /></e2:element></e2statetext>
+</e2simplexmlresult>
</e2:screen>
\ No newline at end of file
-<e2:screen name="TimerWebScreen"><html>
-<head>
- <meta content="text/html; charset=UTF-8" http-equiv="content-type"/>
- <title>Enigma 2 Webinterface (ALPHA)</title>
- <meta http-equiv="refresh" content="1; URL=/web/wap/timerlist.html">
- <link rel="shortcut icon" type="image/x-icon" href="/web-data/img/favicon.ico"/>
-</head>
-<body>
-<p><center>You will be redirected in a second</center></p>
-</body>
-</html>
+<e2:screen name="TimerWebScreen"><html>
+<head>
+ <meta content="text/html; charset=UTF-8" http-equiv="content-type"/>
+ <title>Enigma 2 Webinterface (ALPHA)</title>
+ <meta http-equiv="refresh" content="1; URL=/web/wap/timerlist.html"/>
+ <link rel="shortcut icon" type="image/x-icon" href="/web-data/img/favicon.ico"/>
+</head>
+<body>
+<p><center>You will be redirected in a second</center></p>
+</body>
+</html>
<e2:element source="TimerChange" id="sRef,begin,end,name,description,dirname,tags,eit,disabled,justplay,afterevent,repeated,channelOld,beginOld,endOld,deleteOldOnSave">
<e2:convert type="web:TextToHTML" />
</e2:element>
-<e2:screen name="TimerWebScreen"><html>
-<head>
- <meta content="text/html; charset=UTF-8" http-equiv="content-type"/>
- <title>Enigma 2 Webinterface (ALPHA)</title>
- <meta http-equiv="refresh" content="1; URL=/web/wap/timerlist.html">
- <link rel="shortcut icon" type="image/x-icon" href="/web-data/img/favicon.ico"/>
-</head>
-<body>
-<p><center>You will be redirected in a second</center></p>
-</body>
-</html>
+<e2:screen name="TimerWebScreen"><html>
+<head>
+ <meta content="text/html; charset=UTF-8" http-equiv="content-type"/>
+ <title>Enigma 2 Webinterface (ALPHA)</title>
+ <meta http-equiv="refresh" content="1; URL=/web/wap/timerlist.html"/>
+ <link rel="shortcut icon" type="image/x-icon" href="/web-data/img/favicon.ico"/>
+</head>
+<body>
+<p><center>You will be redirected in a second</center></p>
+</body>
+</html>
<e2:element source="TimerDel" id="sRef,begin,end">
<e2:convert type="web:TextToHTML" />
</e2:element>
-<e2:screen name="TimerWebScreen"><html>
-<head>
+<e2:screen name="TimerWebScreen"><html>
+<head>
<!--
Version = '$Header$';
-->
- <meta content="text/html; charset=UTF-8" http-equiv="content-type">
- <title>Enigma 2 Webinterface (ALPHA)</title>
+ <meta content="text/html; charset=UTF-8" http-equiv="content-type" />
+ <title>Enigma 2 Webinterface (ALPHA)</title>
- <link href="/web-data/tpl/default/style.css" type="text/css" rel="stylesheet" >
- <link rel="shortcut icon" type="image/x-icon" href="/web-data/img/favicon.ico">
-</head>
+ <link href="/web-data/tpl/default/style.css" type="text/css" rel="stylesheet" />
+ <link rel="shortcut icon" type="image/x-icon" href="/web-data/img/favicon.ico" />
+</head>
-<body>
-<div style="text-align: center;">
-<table border="1">
- <tr>
- <td><b>Channel</b></td>
- <td><b>Name</b></td>
- <td><b>Description</b></td>
- <td><b>Action</b></td>
- </tr>
- <tr>
+<body>
+<div class="wap" style="text-align: center;">
+<table border="1">
+ <tr>
+ <td><b>Channel</b></td>
+ <td><b>Name</b></td>
+ <td><b>Description</b></td>
+ <td><b>Action</b></td>
+ </tr>
<e2:element source="TimerList" ><e2:convert type="web:ListFiller" >
+ <tr>
<td><font><e2:item name="ServiceName"/> </font></td>
<td><font><e2:item name="Name"/> </font></td>
<td><font><e2:item name="Description"/> </font></td>
</tr>
</e2:convert>
<e2:convert type="web:TextToHTML" /></e2:element>
-</table>
+</table>
-</div>
-</body>
-</html>
+</div>
+</body>
+</html>
</e2:screen>
\ No newline at end of file
Screen.__init__(self, session)
self.stand_alone = True
self.request = request
- self.instance = None
+ self.instance = None
class DummyWebScreen(WebScreen):
#use it, if you dont need any source, just to can do a static file with an xml-file
class MessageWebScreen(WebScreen):
def __init__(self, session, request):
WebScreen.__init__(self, session, request)
- self["Message"] = Message(session,func = Message.PRINT)
- self["GetAnswer"] = Message(session,func = Message.ANSWER)
+ self["Message"] = Message(session, func=Message.PRINT)
+ self["GetAnswer"] = Message(session, func=Message.ANSWER)
class ServiceListReloadWebScreen(WebScreen):
def __init__(self, session, request):
class AboutWebScreen(WebScreen):
def __init__(self, session, request):
WebScreen.__init__(self, session, request)
- self["About"] = About(session)
+
+ from WebComponents.Sources.Network import Network
+ from WebComponents.Sources.Hdd import Hdd
+ from WebComponents.Sources.Frontend import Frontend
+ from Components.config import config
+ from Components.About import about
+ from Components.Sources.StaticText import StaticText
+ from Tools.DreamboxHardware import getFPVersion
+ from Tools.HardwareInfo import HardwareInfo
+
+ hw = HardwareInfo()
+
+ self["About"] = About(session)
+
+ self["Network"] = Network()
+ self["Hdd"] = Hdd()
+ self["Frontends"] = Frontend()
+ self["EnigmaVersion"] = StaticText(about.getEnigmaVersionString())
+ self["ImageVersion"] = StaticText(about.getVersionString())
+ self["WebIfVersion"] = StaticText(config.plugins.Webinterface.version.value)
+ self["FpVersion"] = StaticText(str(getFPVersion()))
+ self["DeviceName"] = StaticText(hw.get_device_name())
class VolumeWebScreen(WebScreen):
def __init__(self, session, request):
WebScreen.__init__(self, session, request)
fav = eServiceReference(service_types_tv + ' FROM BOUQUET "bouquets.tv" ORDER BY bouquet')
- self["SwitchService"] = ServiceList(fav, command_func = self.zapTo, validate_commands=False)
- self["ServiceList"] = ServiceList(fav, command_func = self.getServiceList, validate_commands=False)
+ self["SwitchService"] = ServiceList(fav, command_func=self.zapTo, validate_commands=False)
+ self["ServiceList"] = ServiceList(fav, command_func=self.getServiceList, validate_commands=False)
self["ServiceListRecursive"] = ServiceListRecursive(session, func=ServiceListRecursive.FETCH)
- self["localip"] = RequestData(request,what=RequestData.HOST)
+ self["localip"] = RequestData(request, what=RequestData.HOST)
def getServiceList(self, sRef):
self["ServiceList"].root = sRef
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)
+ self["CurrentLocation"] = LocationsAndTags(session, LocationsAndTags.CURRLOCATION)
+ self["Locations"] = LocationsAndTags(session, LocationsAndTags.LOCATIONS)
+ self["Tags"] = LocationsAndTags(session, LocationsAndTags.TAGS)
class EPGWebScreen(WebScreen):
def __init__(self, session, request):
WebScreen.__init__(self, session, request)
- self["EPGTITLE"] = EPG(session,func=EPG.TITLE)
- self["EPGSERVICE"] = EPG(session,func=EPG.SERVICE)
- self["EPGBOUQUETNOW"] = EPG(session,func=EPG.BOUQUETNOW)
- self["EPGBOUQUETNEXT"] = EPG(session,func=EPG.BOUQUETNEXT)
- self["EPGSERVICENOW"] = EPG(session,func=EPG.SERVICENOW)
- self["EPGSERVICENEXT"] = EPG(session,func=EPG.SERVICENEXT)
- self["EPGBOUQUET"] = EPG(session,func=EPG.BOUQUET)
+ self["EPGTITLE"] = EPG(session, func=EPG.TITLE)
+ self["EPGSERVICE"] = EPG(session, func=EPG.SERVICE)
+ self["EPGBOUQUETNOW"] = EPG(session, func=EPG.BOUQUETNOW)
+ self["EPGBOUQUETNEXT"] = EPG(session, func=EPG.BOUQUETNEXT)
+ self["EPGSERVICENOW"] = EPG(session, func=EPG.SERVICENOW)
+ self["EPGSERVICENEXT"] = EPG(session, func=EPG.SERVICENEXT)
+ self["EPGBOUQUET"] = EPG(session, func=EPG.BOUQUET)
+ self["localip"] = RequestData(request, what=RequestData.HOST)
+
+ self["EPGSERVICEWAP"] = EPG(session, func=EPG.SERVICE, endtm=True)
def getServiceList(self, sRef):
self["ServiceList"].root = sRef
def __init__(self, session, request):
WebScreen.__init__(self, session, request)
from Components.MovieList import MovieList
- from Tools.Directories import resolveFilename,SCOPE_HDD
+ from Tools.Directories import resolveFilename, SCOPE_HDD
movielist = MovieList(eServiceReference("2:0:1:0:0:0:0:0:0:0:" + resolveFilename(SCOPE_HDD)))
- self["MovieList"] = Movie(session,movielist,func = Movie.LIST)
- self["MovieFileDel"] = Movie(session,movielist,func = Movie.DEL)
- self["MovieTags"] = Movie(session,movielist,func = Movie.TAGS)
- self["localip"] = RequestData(request,what=RequestData.HOST)
+ self["MovieList"] = Movie(session, movielist, func=Movie.LIST)
+ self["MovieFileDel"] = Movie(session, movielist, func=Movie.DEL)
+ self["localip"] = RequestData(request, what=RequestData.HOST)
class MediaPlayerWebScreen(WebScreen):
def __init__(self, session, request):
WebScreen.__init__(self, session, request)
- self["FileList"] = MP(session,func = MP.LIST)
- self["PlayFile"] = MP(session,func = MP.PLAY)
- self["Command"] = MP(session,func = MP.COMMAND)
- self["WritePlaylist"] = MP(session,func = MP.WRITEPLAYLIST)
+ self["FileList"] = MP(session, func=MP.LIST)
+ self["PlayFile"] = MP(session, func=MP.PLAY)
+ self["Command"] = MP(session, func=MP.COMMAND)
+ self["WritePlaylist"] = MP(session, func=MP.WRITEPLAYLIST)
class AutoTimerWebScreen(WebScreen):
def __init__(self, session, request):
WebScreen.__init__(self, session, request)
- self["AutoTimerList"] = AT(session,func = AT.LIST)
- self["AutoTimerWrite"] = AT(session,func = AT.WRITE)
+ self["AutoTimerList"] = AT(session, func=AT.LIST)
+ self["AutoTimerWrite"] = AT(session, func=AT.WRITE)
class TimerWebScreen(WebScreen):
def __init__(self, session, request):
WebScreen.__init__(self, session, request)
- self["TimerList"] = Timer(session, func = Timer.LIST)
- self["TimerAddEventID"] = Timer(session, func = Timer.ADDBYID)
- self["TimerAdd"] = Timer(session, func = Timer.ADD)
- self["TimerDel"] = Timer(session, func = Timer.DEL)
- self["TimerChange"] = Timer(session, func = Timer.CHANGE)
- self["TimerListWrite"] = Timer(session, func = Timer.WRITE)
- self["TVBrowser"] = Timer(session, func = Timer.TVBROWSER)
- self["RecordNow"] = Timer(session, func = Timer.RECNOW)
- self["TimerCleanup"] = Timer(session, func = Timer.CLEANUP)
+ self["TimerList"] = Timer(session, func=Timer.LIST)
+ self["TimerAddEventID"] = Timer(session, func=Timer.ADDBYID)
+ self["TimerAdd"] = Timer(session, func=Timer.ADD)
+ self["TimerDel"] = Timer(session, func=Timer.DEL)
+ self["TimerChange"] = Timer(session, func=Timer.CHANGE)
+ self["TimerListWrite"] = Timer(session, func=Timer.WRITE)
+ self["TVBrowser"] = Timer(session, func=Timer.TVBROWSER)
+ self["RecordNow"] = Timer(session, func=Timer.RECNOW)
+ self["TimerCleanup"] = Timer(session, func=Timer.CLEANUP)
class RemoteWebScreen(WebScreen):
def __init__(self, session, request):
class WAPWebScreen(WebScreen):
def __init__(self, session, request):
WebScreen.__init__(self, session, request)
- self["WAPFillOptionListYear"] = WAPfunctions(session,func = WAPfunctions.LISTTIME)
- self["WAPFillOptionListDay"] = WAPfunctions(session,func = WAPfunctions.LISTTIME)
- self["WAPFillOptionListMonth"] = WAPfunctions(session,func = WAPfunctions.LISTTIME)
- self["WAPFillOptionListShour"] = WAPfunctions(session,func = WAPfunctions.LISTTIME)
- self["WAPFillOptionListSmin"] = WAPfunctions(session,func = WAPfunctions.LISTTIME)
- self["WAPFillOptionListEhour"] = WAPfunctions(session,func = WAPfunctions.LISTTIME)
- self["WAPFillOptionListEmin"] = WAPfunctions(session,func = WAPfunctions.LISTTIME)
+ self["WAPFillOptionListYear"] = WAPfunctions(session, func=WAPfunctions.LISTTIME)
+ self["WAPFillOptionListDay"] = WAPfunctions(session, func=WAPfunctions.LISTTIME)
+ self["WAPFillOptionListMonth"] = WAPfunctions(session, func=WAPfunctions.LISTTIME)
+ self["WAPFillOptionListShour"] = WAPfunctions(session, func=WAPfunctions.LISTTIME)
+ self["WAPFillOptionListSmin"] = WAPfunctions(session, func=WAPfunctions.LISTTIME)
+ self["WAPFillOptionListEhour"] = WAPfunctions(session, func=WAPfunctions.LISTTIME)
+ self["WAPFillOptionListEmin"] = WAPfunctions(session, func=WAPfunctions.LISTTIME)
- self["WAPFillOptionListRecord"] = WAPfunctions(session,func = WAPfunctions.OPTIONLIST)
- self["WAPFillOptionListAfterEvent"] = WAPfunctions(session,func = WAPfunctions.OPTIONLIST)
+ self["WAPFillOptionListRecord"] = WAPfunctions(session, func=WAPfunctions.OPTIONLIST)
+ self["WAPFillOptionListAfterEvent"] = WAPfunctions(session, func=WAPfunctions.OPTIONLIST)
- self["WAPFillValueName"] = WAPfunctions(session,func = WAPfunctions.FILLVALUE)
- self["WAPFillValueDescr"] = WAPfunctions(session,func = WAPfunctions.FILLVALUE)
- self["WAPFillLocation"] = WAPfunctions(session,func = WAPfunctions.LOCATIONLIST)
- self["WAPFillTags"] = WAPfunctions(session,func = WAPfunctions.TAGLIST)
+ self["WAPFillValueName"] = WAPfunctions(session, func=WAPfunctions.FILLVALUE)
+ self["WAPFillValueDescr"] = WAPfunctions(session, func=WAPfunctions.FILLVALUE)
+ self["WAPFillLocation"] = WAPfunctions(session, func=WAPfunctions.LOCATIONLIST)
+ self["WAPFillTags"] = WAPfunctions(session, func=WAPfunctions.TAGLIST)
- self["WAPFillOptionListRepeated"] = WAPfunctions(session,func = WAPfunctions.REPEATED)
- self["WAPServiceList"] = WAPfunctions(session, func = WAPfunctions.SERVICELIST)
+ self["WAPFillOptionListRepeated"] = WAPfunctions(session, func=WAPfunctions.REPEATED)
+ self["WAPServiceList"] = WAPfunctions(session, func=WAPfunctions.SERVICELIST)
- self["WAPdeleteOldOnSave"] = WAPfunctions(session,func = WAPfunctions.DELETEOLD)
+ self["WAPdeleteOldOnSave"] = WAPfunctions(session, func=WAPfunctions.DELETEOLD)
class StreamingWebScreen(WebScreen):
def __init__(self, session, request):
from Components.Sources.Config import Config
from Components.config import config
self["ref"] = StaticText()
- self["localip"] = RequestData(request,what=RequestData.HOST)
+ self["localip"] = RequestData(request, what=RequestData.HOST)
class M3UStreamingCurrentServiceWebScreen(WebScreen):
def __init__(self, session, request):
WebScreen.__init__(self, session, request)
self["CurrentService"] = CurrentService(session)
- self["localip"] = RequestData(request,what=RequestData.HOST)
+ self["localip"] = RequestData(request, what=RequestData.HOST)
class TsM3U(WebScreen):
def __init__(self, session, request):
from Components.Sources.Config import Config
from Components.config import config
self["file"] = StaticText()
- self["localip"] = RequestData(request,what=RequestData.HOST)
+ self["localip"] = RequestData(request, what=RequestData.HOST)
class RestartWebScreen(WebScreen):
def __init__(self, session, request):
VPID = hex(pidinfo.getInfo(iServiceInformation.sVideoPID))
APID = hex(pidinfo.getInfo(iServiceInformation.sAudioPID))
PPID = hex(pidinfo.getInfo(iServiceInformation.sPMTPID))
- self["pids"] = StaticText("%s,%s,%s"%(PPID.lstrip("0x"),VPID.lstrip("0x"),APID.lstrip("0x")))
+ self["pids"] = StaticText("%s,%s,%s" % (PPID.lstrip("0x"), VPID.lstrip("0x"), APID.lstrip("0x")))
else:
self["pids"] = StaticText("0x,0x,0x")
- self["localip"] = RequestData(request,what=RequestData.HOST)
+ self["localip"] = RequestData(request, what=RequestData.HOST)
-class About2(WebScreen):
+class DeviceInfo(WebScreen):
def __init__(self, session, request):
WebScreen.__init__(self, session, request)
from WebComponents.Sources.Network import Network
from WebComponents.Sources.Hdd import Hdd
- from WebComponents.Sources.Frontend import Frontend
+ from WebComponents.Sources.Frontend import Frontend
+ from Components.config import config
+ from Components.About import about
+ from Components.Sources.StaticText import StaticText
+ from Tools.DreamboxHardware import getFPVersion
+ from Tools.HardwareInfo import HardwareInfo
+
+ hw = HardwareInfo()
+
self["Network"] = Network()
self["Hdd"] = Hdd()
- self["Frontends"] = Frontend()
-
+ self["Frontends"] = Frontend()
+ self["EnigmaVersion"] = StaticText(about.getEnigmaVersionString())
+ self["ImageVersion"] = StaticText(about.getVersionString())
+ self["WebIfVersion"] = StaticText(config.plugins.Webinterface.version.value)
+ self["FpVersion"] = StaticText(str(getFPVersion()))
+ self["DeviceName"] = StaticText(hw.get_device_name())
+
# implements the 'render'-call.
# this will act as a downstream_element, like a renderer.
class OneTimeElement(Element):
# CHECKME: is this ok performance-wise?
def handleCommand(self, args):
- if self.source_id.find(",") >=0:
+ if self.source_id.find(",") >= 0:
paramlist = self.source_id.split(",")
- list={}
+ list = {}
for key in paramlist:
arg = args.get(key, [])
if len(arg) == 0:
Converter.__init__(self, arg)
def getHTML(self, id):
- return self.source.text.replace(" ","%20")
+ return self.source.text.replace(" ", "%20")
class ReturnEmptyXML(Converter):
def __init__(self, arg):
def getHTML(self, id):
# 3c5x9, added parent. , this is because the ie loads this in a iframe. an the set is in index.html.xml
# all other will replace this in JS
- return '<script>parent.set("%s", "%s");</script>\n'%(id, self.source.text.replace("\\", "\\\\").replace("\n", "\\n").replace('"', '\\"').replace('\xb0', '°'))
+ return '<script>parent.set("%s", "%s");</script>\n' % (id, self.source.text.replace("\\", "\\\\").replace("\n", "\\n").replace('"', '\\"').replace('\xb0', '°'))
# the performant 'one-dimensonial listfiller' engine (podlfe)
class SimpleListFiller(Converter):
Converter.__init__(self, arg)
def getText(self):
- l = self.source.list
+ l = self.source.simplelist
conv_args = self.converter_arguments
- print "[webif.py] conv_args: " %conv_args
+ print "[webif.py] conv_args: " % conv_args
list = [ ]
for element in conv_args:
append(str(item).replace("%", "%25").replace("+", "%2B").replace('&', '%26').replace('?', '%3f').replace(' ', '+'))
elif filternum == 5:
append(quote(str(item)))
+ elif filternum == 6:
+ time = parseint(item) or 0
+ t = localtime(time)
+ append("%02d:%02d" % (t.tm_hour, t.tm_min))
+ elif filternum == 7:
+ time = parseint(item) or 0
+ t = localtime(time)
+ append("%d min" % (time / 60))
else:
append(str(item))
# (this will be done in c++ later!)
- return ''.join(strlist)
-
+ return ''.join(strlist)
+
text = property(getText)
append(str(item[element]).replace("%", "%25").replace("+", "%2B").replace('&', '%26').replace('?', '%3f').replace(' ', '+'))
elif filternum == 5:
append(quote(str(item[element])))
+ elif filternum == 6:
+ from time import localtime
+ time = int(float(item[element])) or 0
+ t = localtime(time)
+ append("%02d:%02d" % (t.tm_hour, t.tm_min))
+ elif filternum == 7:
+ from time import localtime
+ time = int(float(item[element])) or 0
+ t = localtime(time)
+ append("%d min" % (time / 60))
else:
append(str(item[element]))
# (this will be done in c++ later!)
def parse_item(self, attrs):
if "name" in attrs:
- filter = {"": 1, "javascript_escape": 2, "xml": 3, "uri": 4, "urlencode": 5}[attrs.get("filter", "")]
+ filter = {"": 1, "javascript_escape": 2, "xml": 3, "uri": 4, "urlencode": 5, "time": 6, "minutes": 7}[attrs.get("filter", "")]
self.sub.append(ListItem(attrs["name"], filter))
else:
assert "macro" in attrs, "e2:item must have a name= or macro= attribute!"
def startElement(self, name, attrs):
if name == "e2:screen":
- self.screen = eval(attrs["name"])(self.session,self.request) # fixme
+ self.screen = eval(attrs["name"])(self.session, self.request) # fixme
self.screens.append(self.screen)
return
if name[:3] == "e2:":
self.mode += 1
- tag = [' %s="%s"' %(key,val) for (key, val) in attrs.items()]
+ tag = [' %s="%s"' % (key, val) for (key, val) in attrs.items()]
tag.insert(0, name)
tag.insert(0, '<')
tag.append('>')
# read in the template, create required screens
# we don't have persistense yet.
# if we had, this first part would only be done once.
- handler = webifHandler(session,req)
+ handler = webifHandler(session, req)
parser = make_parser()
parser.setFeature(feature_namespaces, 0)
parser.setContentHandler(handler)