From 6fd53f0b97b06f8bb718bef6da0d90df95f64e03 Mon Sep 17 00:00:00 2001 From: Sascha Volkenandt Date: Mon, 15 Jan 2007 19:35:06 +0000 Subject: - moved ajax script to separate file - moved call of ajax object to page element - introduced page element for replaying recordings - introduced task for replaying recordings - added replay button to recordings page --- javascript/Makefile | 2 +- javascript/ajax.js | 57 +++++++++++++++++++++++++++++++++++++++++++++++ pages/Makefile | 2 +- pages/pageelems.ecpp | 13 +++++++++++ pages/play_recording.ecpp | 26 +++++++++++++++++++++ pages/recordings.ecpp | 5 +++-- pages/remote.ecpp | 44 ++---------------------------------- recordings.h | 8 ++++--- tasks.cpp | 57 ++++++++++++++++++++++++++++++++++++++--------- tasks.h | 28 +++++++++++++++++++++-- 10 files changed, 180 insertions(+), 62 deletions(-) create mode 100644 javascript/ajax.js create mode 100644 pages/play_recording.ecpp diff --git a/javascript/Makefile b/javascript/Makefile index 1e228f1..5419c64 100644 --- a/javascript/Makefile +++ b/javascript/Makefile @@ -16,7 +16,7 @@ VDRDIR ?= ../../../.. ### The object files (add further files here): OBJS = alphaAPI.o domLib.o domTT_drag.o domTT.o fadomatic.o \ - treeview.o + treeview.o ajax.o ### Default rules: diff --git a/javascript/ajax.js b/javascript/ajax.js new file mode 100644 index 0000000..042ebc9 --- /dev/null +++ b/javascript/ajax.js @@ -0,0 +1,57 @@ +function LiveAjaxCall(url) +{ + var xml = null; + if (window.XMLHttpRequest) { + xml = new XMLHttpRequest(); + if (xml.overrideMimeType) + xml.overrideMimeType('text/xml'); + } else if (window.ActiveXObject) { + try { + xml = new ActiveXObject("Msxml2.XMLHTTP"); + } catch (e) { + try { + xml = new ActiveXObject("Microsoft.XMLHTTP"); + } catch (e) {} + } + } + + this.url = url; + this.xml = xml; + + this.onerror = function(message) {}; + this.oncomplete = function(result) {}; + + this.request = function(param, value) + { + var url = this.url+'?'+name+"="+value; + this.xml.onreadystatechange = function() { this.readystatechanged(); } + this.xml.open('GET', url, true); + this.xml.send(null); + }; + + this.readystatechanged = function() + { + try { + if (this.xml.readyState == 4) { + if (this.xml.status == 200) { + var xmldoc = xml.responseXML; + var result = xmldoc.getElementsByTagName('response').item(0).firstChild.data; + this.oncomplete(result); + } else { + this.onerror('Invocation of webservice "'+this.url+'" failed with http status code '+this.xml.status); + } + } + } catch (e) { + this.onerror('Invocation of webservice "'+this.url+'" failed with exception: '+e.description); + } + }; +} + +function LiveSimpleAjaxRequest(url, param, value) +{ + var xml = new LiveAjaxCall(url); + xml.onerror = function(message) { alert(message); } + xml.oncomplete = function(response) { } + xml.request(param, value); +}; + diff --git a/pages/Makefile b/pages/Makefile index 38828ff..3e913a8 100644 --- a/pages/Makefile +++ b/pages/Makefile @@ -18,7 +18,7 @@ VDRDIR ?= ../../../.. OBJS = menu.o channels.o recordings.o schedule.o \ screenshot.o timers.o whats_on.o switch_channel.o \ keypress.o remote.o channels_widget.o edit_timer.o \ - error.o pageelems.o tooltip.o + error.o pageelems.o tooltip.o play_recording.o ### Default rules: diff --git a/pages/pageelems.ecpp b/pages/pageelems.ecpp index 9c170a6..326a8b8 100644 --- a/pages/pageelems.ecpp +++ b/pages/pageelems.ecpp @@ -46,3 +46,16 @@ component; border="0"/> + +<%def ajax_js> + + + +<%def play_recording> +<%args> + string recordingid; + string image; + string alt = ""; + + <$ alt $> + diff --git a/pages/play_recording.ecpp b/pages/play_recording.ecpp new file mode 100644 index 0000000..8356697 --- /dev/null +++ b/pages/play_recording.ecpp @@ -0,0 +1,26 @@ +<%pre> +#include +#include +#include "exception.h" +#include "tasks.h" +#include "tools.h" + +using namespace std; +using namespace vdrlive; + + +<%args> + string recordingid; + +<%cpp> + reply.setContentType( "application/xml" ); + + bool result = LiveTaskManager().ReplayRecording( recordingid ); + + + + +<$ recordingid $> + +<$ result ? "1" : "0" $> + diff --git a/pages/recordings.ecpp b/pages/recordings.ecpp index e07784a..2defee4 100644 --- a/pages/recordings.ecpp +++ b/pages/recordings.ecpp @@ -25,7 +25,8 @@ const std::string sPref("short_"); VDR-Live - <$ pageTitle $> -<& tooltip.javascript var=("domTT_oneOnly") value=("true") var=("domTT_styleClass") value=("domTTrecordings") &> + <& tooltip.javascript var=("domTT_oneOnly") value=("true") var=("domTT_styleClass") value=("domTTrecordings") &> + <& pageelems.ajax_js &> <& pageelems.logo &> @@ -116,7 +117,7 @@ for (iter = recordingsTree.begin(path); iter != end; ++iter) {
<$ FormatDateTime(tr("%I:%M %p"), recItem->StartTime()) $>
<& tooltip.display domId=(lPref + recItem->Id()) &>><$ recItem->Name() $>
- + <& pageelems.play_recording recordingid=(recItem->Recording()->FileName()) image="play.png" alt="" &>
diff --git a/pages/remote.ecpp b/pages/remote.ecpp index 798a759..6f23d9a 100644 --- a/pages/remote.ecpp +++ b/pages/remote.ecpp @@ -12,6 +12,7 @@ using namespace vdrlive; <& pageelems.doc_type &> + <& pageelems.ajax_js &>