sessions = [ ]
# set DEBUG to True, if twisted should write logoutput to a file.
-DEBUG = False
+DEBUG = True
DEBUGFILE= "/tmp/twisted.log"
def startWebserver():
var url_fetchchannels = "/web/fetchchannels?ServiceListBrowse="; // plus encoded serviceref
-var DBG = true;
+var url_updates= "/web/updates";
+
+var DBG = false;
+
+// UpdateStreamReader
+var UpdateStreamReaderNextReadPos = 0;
+var UpdateStreamReaderPollTimer;
+UpdateStreamReaderRequest = null;
+function UpdateStreamReaderStart(){
+ var ua = navigator.userAgent;
+ if(navigator.userAgent.indexOf("MSIE") >=0) {
+ debug("UpdateStreamReader IE Fix *IE sucks*");
+ $('UpdateStreamReaderIEFixPanel').innerHTML = '<iframe id="UpdateStreamReaderIEFixIFrame" src="'+url_updates+'" height="0" width="0" scrolling="none" frameborder="0">no iframe support!</iframe>';
+ }else {
+ debug("UpdateStreamReader Start");
+ UpdateStreamReaderNextReadPos = 0;
+ allMessages = "";
+ UpdateStreamReaderRequest =new XMLHttpRequest();
+ UpdateStreamReaderRequest.onload = UpdateStreamReaderOnLoad;
+ UpdateStreamReaderRequest.onerror = UpdateStreamReaderOnError;
+ UpdateStreamReaderRequest.open("GET", url_updates, true);
+ //try{
+ UpdateStreamReaderRequest.send(null);
+ //}catch(e){ debug(e); /*strange errors :) */}
+ UpdateStreamReaderPollTimer = setInterval(UpdateStreamReaderLatestResponse, 500);
+ }
+}
+
+function UpdateStreamReaderLatestResponse() {
+ var allMessages = UpdateStreamReaderRequest.responseText;
+ do {
+ var unprocessed = allMessages.substring(UpdateStreamReaderNextReadPos);
+ var messageXMLEndIndex = unprocessed.indexOf("\n");
+ if (messageXMLEndIndex!=-1) {
+ var endOfFirstMessageIndex = messageXMLEndIndex + "\n".length;
+ var anUpdate = unprocessed.substring(0, endOfFirstMessageIndex);
+ //anUpdate = anUpdate.replace(/<div id="scriptzone"\/>/,'');
+ anUpdate = anUpdate.replace(/<script>parent./, '');
+ anUpdate = anUpdate.replace(/<\/script>\n/, '');
+ eval(anUpdate);
+ UpdateStreamReaderNextReadPos += endOfFirstMessageIndex;
+ }
+ } while (messageXMLEndIndex != -1);
+}
+
+function UpdateStreamReaderOnLoad(request){
+ window.clearInterval(UpdateStreamReaderPollTimer);
+ debug("UpdateStreamReaderOnLoad");
+ Dialog.confirm(
+ "Live Update Stream ends!<br><br>You will not receive any Update from Enigma2.<br>Should I reconnect?"
+ , {windowParameters: {width:300, className: "alphacube"}
+ , okLabel: "reconnect"
+ , buttonClass: "myButtonClass"
+ , id: new Date().toUTCString()
+ , cancel:function(win) {debug("cancel confirm panel")}
+ , ok: function(win) {UpdateStreamReaderStart(); return true;}
+ }
+ );
+}
+function UpdateStreamReaderOnError(request){
+ // TODO: change this, because it will be called on 'PageUnload' while the request is still running
+ debug("UpdateStreamReaderOnError");
+ window.clearInterval(UpdateStreamReaderPollTimer);
+ Dialog.confirm(
+ "Live Update Stream has an Error!<br><br>You will not receive any Update from Enigma2.<br>Should I try to reconnect?"
+ , {windowParameters: {width:300, className: "alphacube"}
+ , okLabel: "reconnect"
+ , buttonClass: "myButtonClass"
+ , id: new Date().toUTCString()
+ , cancel:function(win) {debug("cancel confirm panel")}
+ , ok: function(win) {UpdateStreamReaderStart(); return true;}
+ }
+ );
+}
+
+//end UpdateStreamReader
function openWindow(title, inner, width, height, id){
if(id == null) id = new Date().toUTCString();
function set(what, value){
//debug(what+"-"+value);
- element = document.getElementById(what);
+ element = parent.document.getElementById(what);
if (element){
element.innerHTML = value;
}
- //$('scriptzone').innerHTML = ""; // deleting set() from page, to keep the page short and to save memory
+ if(navigator.userAgent.indexOf("MSIE") >=0) {
+ elementscript= $('UpdateStreamReaderIEFixIFrame').document.getElementById('scriptzone');
+ if(elementscript){
+ elementscript.innerHTML = ""; // deleting set() from page, to keep the page short and to save memory
+ }
+ }
}
// requestindikator
var requestcounter = 0;
function requestIndicatorUpdate(){
- debug(requestcounter+" open requests");
+ //debug(requestcounter+" open requests");
if(requestcounter>=1){
$('RequestIndicator').style.display = "inline";
}else{
<meta content="text/html; charset=UTF-8" http-equiv="content-type"/>
<title>Enigma 2 Webinterface (ALPHA)</title>
<!--load everything for prototype and prototype window -->
-
<script type="text/javascript" src="/webdata/lib/prototype.js" />
<script type="text/javascript" src="/webdata/lib/rico.js"/>
<script type="text/javascript" src="/webdata/lib/ptwindow/effects.js" />
<script type="text/javascript" src="/webdata/tools.js" />
<link href="/webdata/style.css" type="text/css" rel="stylesheet" />
+ <link rel="shortcut icon" type="image/x-icon" href="/webdata/gfx/favicon.ico"/>
<!-- Live RSS Feeds //-->
<link rel="alternate" type="application/rss+xml" title="Movie List" href="/web/movielist.rss" />
</div>
</div>
-<!--iframe onload="hide(this)" width="0" id="updates" height="0" src="updates.html" name="updates" scrolling="none" frameborder="0">no iframe support!</iframe-->
+<div>
+<!-- START LIVEUPDATESTREAM is used to enable the liveupdatestream in MS Internet Explorer //-->
+<div id="UpdateStreamReaderIEFixPanel"></div>
+<!-- END LIVEUPDATESTREAM//-->
+</div>
<script type="text/javascript" >
if(DBG) { debugWin = openWindow("DEBUG", "", 300, 300, "debugWindow"); }
new Rico.Accordion( $('accordionMenue'), accordionOptions );
+// do things to do at startup
initVolumePanel();
initSignalPanel();
initChannelList();
setBodyMainContent('BodyContentChannellist');
-function imdb()
-{
- w = window.open("http://www.imdb.com/find?s=all&q=" + escape(document.getElementById("Event_Now_Name").innerHTML));
- w.focus();
- set("BodyContentChannellist", "TEST!!!");
-}
+UpdateStreamReaderStart();
</script>
-
</body>
-<div id="scriptzone">
-<!-- realtime updates follow -->
-<e2:element source="CurrentTime" streaming="yes">
- <e2:convert type="ClockToText">WithSeconds</e2:convert>
- <e2:convert type="web:JavascriptUpdate" />
-</e2:element>
-
-<e2:element source="CurrentService" streaming="yes">
-<e2:convert type="ServiceName">Name</e2:convert>
-<e2:convert type="web:JavascriptUpdate" />
-</e2:element>
-
-<e2:element source="Event_Now" id="Event_Now_Name" streaming="yes">
- <e2:convert type="EventName">Name</e2:convert>
- <e2:convert type="web:JavascriptUpdate" />
-</e2:element>
-
-<e2:element source="Event_Now" id="Event_Now_Extended_Description" streaming="yes">
- <e2:convert type="EventName">ExtendedDescription</e2:convert>
- <e2:convert type="web:JavascriptUpdate" />
-</e2:element>
-
-<e2:element source="Event_Now" id="Event_Now_Begin" streaming="yes">
- <e2:convert type="EventTime">StartTime</e2:convert>
- <e2:convert type="ClockToText">Default</e2:convert>
- <e2:convert type="web:JavascriptUpdate" />
-</e2:element>
-
-<e2:element source="Event_Now" id="Event_Now_Remaining" streaming="yes">
- <e2:convert type="EventTime">Remaining</e2:convert>
- <e2:convert type="RemainingToText">InMinutes</e2:convert>
- <e2:convert type="web:JavascriptUpdate" />
-</e2:element>
-
-<e2:element source="Event_Next" id="Event_Next_Name" streaming="yes">
- <e2:convert type="EventName">Name</e2:convert>
- <e2:convert type="web:JavascriptUpdate" />
-</e2:element>
-
-<e2:element source="Event_Next" id="Event_Next_Begin" streaming="yes">
- <e2:convert type="EventTime">StartTime</e2:convert>
- <e2:convert type="ClockToText">Default</e2:convert>
- <e2:convert type="web:JavascriptUpdate" />
-</e2:element>
-
-<e2:element source="Event_Next" id="Event_Next_Remaining" streaming="yes">
- <e2:convert type="EventTime">Remaining</e2:convert>
- <e2:convert type="RemainingToText">InMinutes</e2:convert>
- <e2:convert type="web:JavascriptUpdate" />
-</e2:element>
-
-<e2:element source="Event_Next" id="Event_Next_Extended_Description" streaming="yes">
- <e2:convert type="EventName">ExtendedDescription</e2:convert>
- <e2:convert type="web:JavascriptUpdate" />
-</e2:element>
-
-<e2:element source="FrontendStatus" id="SNR" streaming="yes">
- <e2:convert type="FrontendInfo">SNR</e2:convert>
- <e2:convert type="web:JavascriptUpdate" />
-</e2:element>
-
-<e2:element source="FrontendStatus" id="BER" streaming="yes">
- <e2:convert type="FrontendInfo">BER</e2:convert>
- <e2:convert type="web:JavascriptUpdate" />
-</e2:element>
-
-<e2:element source="FrontendStatus" id="AGC" streaming="yes">
- <e2:convert type="FrontendInfo">AGC</e2:convert>
- <e2:convert type="web:JavascriptUpdate" />
-</e2:element>
-
+</html>
</e2:screen>
--- /dev/null
+<e2:screen name="TestScreen">
+<div id="scriptzone"/>
+<e2:element source="CurrentTime" streaming="yes">
+ <e2:convert type="ClockToText">WithSeconds</e2:convert>
+ <e2:convert type="web:JavascriptUpdate" />
+</e2:element>
+
+<e2:element source="CurrentService" streaming="yes">
+<e2:convert type="ServiceName">Name</e2:convert>
+<e2:convert type="web:JavascriptUpdate" />
+</e2:element>
+
+<e2:element source="Event_Now" id="Event_Now_Name" streaming="yes">
+ <e2:convert type="EventName">Name</e2:convert>
+ <e2:convert type="web:JavascriptUpdate" />
+</e2:element>
+
+<e2:element source="Event_Now" id="Event_Now_Extended_Description" streaming="yes">
+ <e2:convert type="EventName">ExtendedDescription</e2:convert>
+ <e2:convert type="web:JavascriptUpdate" />
+</e2:element>
+
+<e2:element source="Event_Now" id="Event_Now_Begin" streaming="yes">
+ <e2:convert type="EventTime">StartTime</e2:convert>
+ <e2:convert type="ClockToText">Default</e2:convert>
+ <e2:convert type="web:JavascriptUpdate" />
+</e2:element>
+
+<e2:element source="Event_Now" id="Event_Now_Remaining" streaming="yes">
+ <e2:convert type="EventTime">Remaining</e2:convert>
+ <e2:convert type="RemainingToText">InMinutes</e2:convert>
+ <e2:convert type="web:JavascriptUpdate" />
+</e2:element>
+
+<e2:element source="Event_Next" id="Event_Next_Name" streaming="yes">
+ <e2:convert type="EventName">Name</e2:convert>
+ <e2:convert type="web:JavascriptUpdate" />
+</e2:element>
+
+<e2:element source="Event_Next" id="Event_Next_Begin" streaming="yes">
+ <e2:convert type="EventTime">StartTime</e2:convert>
+ <e2:convert type="ClockToText">Default</e2:convert>
+ <e2:convert type="web:JavascriptUpdate" />
+</e2:element>
+
+<e2:element source="Event_Next" id="Event_Next_Remaining" streaming="yes">
+ <e2:convert type="EventTime">Remaining</e2:convert>
+ <e2:convert type="RemainingToText">InMinutes</e2:convert>
+ <e2:convert type="web:JavascriptUpdate" />
+</e2:element>
+
+<e2:element source="Event_Next" id="Event_Next_Extended_Description" streaming="yes">
+ <e2:convert type="EventName">ExtendedDescription</e2:convert>
+ <e2:convert type="web:JavascriptUpdate" />
+</e2:element>
+
+<e2:element source="FrontendStatus" id="SNR" streaming="yes">
+ <e2:convert type="FrontendInfo">SNR</e2:convert>
+ <e2:convert type="web:JavascriptUpdate" />
+</e2:element>
+
+<e2:element source="FrontendStatus" id="BER" streaming="yes">
+ <e2:convert type="FrontendInfo">BER</e2:convert>
+ <e2:convert type="web:JavascriptUpdate" />
+</e2:element>
+
+<e2:element source="FrontendStatus" id="AGC" streaming="yes">
+ <e2:convert type="FrontendInfo">AGC</e2:convert>
+ <e2:convert type="web:JavascriptUpdate" />
+</e2:element>
+
+</e2:screen>
Converter.__init__(self, arg)
def getHTML(self, id):
- return '<script>set("' + id + '", "' + filter_javascript_escape(self.source.text) + '");</script>\n'
-
+ # 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("' + id + '", "' + filter_javascript_escape(self.source.text) + '");</script>\n'
+
# the performant 'listfiller'-engine (plfe)
class ListFiller(Converter):
def __init__(self, arg):