diff options
| author | Andreas Brachold <vdr07@deltab.de> | 2007-08-13 18:41:27 +0000 |
|---|---|---|
| committer | Andreas Brachold <vdr07@deltab.de> | 2007-08-13 18:41:27 +0000 |
| commit | a4a9148f3fb207934bcfc45223b5abec78e5ed6b (patch) | |
| tree | 15f6528fb61089629c27ef0cf5052a327c03bb7c /skins/stone_flat | |
| download | xxv-a4a9148f3fb207934bcfc45223b5abec78e5ed6b.tar.gz xxv-a4a9148f3fb207934bcfc45223b5abec78e5ed6b.tar.bz2 | |
* Move files to trunk
Diffstat (limited to 'skins/stone_flat')
51 files changed, 5463 insertions, 0 deletions
diff --git a/skins/stone_flat/COPYRIGHT b/skins/stone_flat/COPYRIGHT new file mode 120000 index 0000000..1ff0d68 --- /dev/null +++ b/skins/stone_flat/COPYRIGHT @@ -0,0 +1 @@ +../stone/COPYRIGHT
\ No newline at end of file diff --git a/skins/stone_flat/HISTORY b/skins/stone_flat/HISTORY new file mode 120000 index 0000000..24733d3 --- /dev/null +++ b/skins/stone_flat/HISTORY @@ -0,0 +1 @@ +../stone/HISTORY
\ No newline at end of file diff --git a/skins/stone_flat/Makefile b/skins/stone_flat/Makefile new file mode 120000 index 0000000..9c8f4a1 --- /dev/null +++ b/skins/stone_flat/Makefile @@ -0,0 +1 @@ +../stone/Makefile
\ No newline at end of file diff --git a/skins/stone_flat/README b/skins/stone_flat/README new file mode 100644 index 0000000..00e9bea --- /dev/null +++ b/skins/stone_flat/README @@ -0,0 +1,50 @@ +Das ist ein Template-basierter Skin für das Projekt xxv. +http://xpix.dieserver.de/content/vdr/xxv/ + +Die Installation erfolgt durch entpacken, +innerhalb des xxv-skin Verzeichnisses. + +dann den Konfigurationsparameter in xxvd.cfg anpassen + +[HTTPD] +HtmlRoot=myskin + +-- + +In der Datei skin.cfg enthalt ein paar globale +Variablen mit der das Aussehen des Skin angepasst +werden kann. + + +-- +HOTKEY/accesskey + +n : Now +p : Programmguide +a : Autotimer +t : Timer +r : Recordings +v : Teletext +f : Remote +m : Music +s : Status +u : User/Personality +c : Preferences +q : Logout +h : Help +x : Close I-Frame (nur stone/snow/blue) + +<Quelle SelfHtml> +Bei den meisten Browsern ist es so geregelt, der dann mit [Alt] und der Taste +für den Buchstaben direkt anwählbar ist. In Opera erreichen Sie die Ziele, +indem sie zuvor die Tastenkombination [Shift][Esc] betätigen. +Safari benutzt statt der [Alt]-Taste die Taste [Ctrl]. +</Quelle SelfHtml> + + +-- +LCARS arbeitet optimal mit Zeichensatz "ds9.ttf" (Trek) von tuxbox (www.tuxbox.org) +der seperat geladen werden muss, und ins lokale Fontinstallationsverzeichnis kopiert werden muss. + +http://cvs.tuxbox.org/cgi-bin/viewcvs.cgi/*checkout*/tuxbox/apps/tuxbox/lcars/data/fonts/ds9.ttf + diff --git a/skins/stone_flat/alist.tmpl b/skins/stone_flat/alist.tmpl new file mode 100644 index 0000000..5846e57 --- /dev/null +++ b/skins/stone_flat/alist.tmpl @@ -0,0 +1,195 @@ +<!--alist--> +<body class="frame"> +<div id="body"> +<?% ######################################################################## %?> +<?% aus = gettext('Off') %?> +<?% an = gettext('On') %?> +<?% ######################################################################## %?> +<?% BLOCK time %?> + <?% tt = t FILTER format('%04d') %?><?% tt.chunk(-2).join(':') %?> +<?% END %?> +<?% ######################################################################## %?> +<?% BLOCK RowButtons %?> + <?% IF allow('tlist') %?> + <?% IF param.timers.$id.allTimer.size %?> +<?% IF debug %?> +<!-- active: <?% param.timers.$id.activeTimer.size %?> --> +<!-- deactive:<?% param.timers.$id.deactiveTimer.size %?> --> +<?% END %?> + <a href="?cmd=tlist&data=<?% param.timers.$id.allTimer.join(',') %?>"> + <img src="images/onoff.<?% global.imagetyp %?>" alt="" title="<?% gettext("Planned recordings") %?>" /> + </a> + <?% END %?> + <?% END %?> + <a href="?cmd=search&data=<?% url( title ) %?>"> + <img src="images/find.<?% global.imagetyp %?>" alt="" title="<?% gettext("Search for repeats") %?>" /> + </a> + <?% IF allow('aedit') %?> + <a href="javascript:popup('aedit','<?% id %?>',620,670,1)"> + <img src="images/edit.<?% global.imagetyp %?>" alt="" title="<?% gettext("Edit autotimer") %?>" /> + </a> + <?% END %?> + <?% IF allow('adelete') %?> + <a href="javascript:sureandreload('<?% gettext("You will delete this autotimer") %?>','<?% escape(title) %?>','adelete','<?% id %?>')"> + <img src="images/delete.<?% global.imagetyp %?>" alt="" title="<?% gettext("Delete autotimer") %?>" /> + </a> + <?% END %?> +<?% END %?> +<?% ######################################################################## %?> +<?% BLOCK SetState %?> + <?% UNLESS aktiv %?> + <?% state = "deactive" %?> + <?% ELSE %?> + <?% state = "" %?> + <?% END %?> +<?% END %?> +<?% ######################################################################## %?> +<?% BLOCK ItemAsFlat %?> + <?% PROCESS SetState %?> + <tr id="item<?% id %?>"<?% ' class="two"' IF loop.count mod 2 == 0 %?>> + <td class="fieldinline"> + <?% IF allow('atoggle') %?> + <a href="javascript:toggle('atoggle','<?% id %?>')"> + <?% END %?> + <img id="toggle<?% id %?>" src="images/<?% aktiv ? 'on' : 'off'%?>.<?% global.imagetyp %?>" alt="" /> + <?% "</a>" IF allow('atoggle') %?> + </td> + <td class="fieldinline"> + <?% IF allow('aedit') %?> + <a title="<?% gettext("Edit autotimer") %?>" href="javascript:popup('aedit','<?% id %?>',620,670,1)" class="fieldinline<?% IF state != "";" ";state;END %?>"> + <?% END %?> + <font class="title<?% IF state != "";" ";state;END %?>"><?% title %?></font> + <?% "</a>" IF allow('aedit') %?> + </td> + <td class="fieldinline"> + <?% IF directory != "" %?> + <font class="description<?% IF state != "";" ";state;END %?>"> + <?% directory %?> + </font> + <?% END %?> + </td> + <td class="fieldinline"> + <font class="description<?% IF state != "";" ";state;END %?>"> + <?% IF channels.length > 0; + chlist = [ ]; + FOREACH chid = channels.split(','); + chid_enc = reentities(chid); + chid_name = param.channels.$chid_enc.Name; + IF ! chid_name; chid_name = gettext('Unknown channel'); END; + chlist.push( chid_name ); + END; + chop(chlist.join(' '),50); + END %?> + </font> + </td> + <td class="fieldinline"> + <?% IF start != stop %?> + <font class="description<?% IF state != "";" ";state;END %?>"> + <?% PROCESS time t = start %?>-<?% PROCESS time t = stop %?> + </font> + <?% END %?> + </td> + <td align="right" class="fieldinline<?% IF state != "";" ";state;END %?>"> + <?% PROCESS RowButtons %?> + </td> + </tr> +<?% END %?> +<?% ######################################################################## %?> +<h1><?% gettext("Wished automated recordings") %?></h1> +<?% IF data.size > 1 %?> +<?% fields = data.shift %?> + <table class="largetable" summary=""> + <tr><td class="largehead"><?% gettext("Autotimer") %?></td></tr> + <tr> + <td class="largetext" align="left"> + <table width="100%"> + <tr height="0"><th width="20"></th><th></th><th width="200"></th><th width="100"></th><th width="80"></th><th width="100" align="right"></th></tr> + <?% FOREACH zeile = data %?> + <?% IF debug;"<!-- Item: ";FOREACH x = zeile;loop.count - 1;":";x.replace("-"," ");"|";END;"-->";END %?> + <?% id=zeile.0;title=zeile.2;channels=zeile.3;directory=zeile.4;start=zeile.5;stop=zeile.6 %?> + <?% IF zeile.1 == 'y' %?><?% aktiv = 1 %?><?% ELSE %?><?% aktiv = 0 %?><?% END %?> + <?% PROCESS ItemAsFlat %?> + <?% END %?> + </table> + </td> + </tr> + <tr><td class="largebottom"></td></tr> + </table> +<?% END %?> +</div> +<!-- ###### Seite ###### --> +<div id="sidebar"> +<?% IF allow('anew') || allow('aupdate') %?> + <table summary=""> + <tr><td class="sidehead"><?% gettext("Autotimer",20) %?></td></tr> + <tr> + <td class="sidetext"> +<?% IF allow('anew') %?> + <a title="<?% gettext("Create a new autotimer") %?>" href="javascript:popupcmd('anew',620,670,1)"><img src="images/new.<?% global.imagetyp %?>" alt="" /></a> + <a title="<?% gettext("Create a new autotimer") %?>" href="javascript:popupcmd('anew',620,670,1)"><?% gettext("Create a new autotimer",20) %?></a><br /> +<?% END %?> +<?% IF allow('aupdate') %?> + <a title="<?% gettext("Start the autotimer process") %?>" href="javascript:popupcmd('aupdate',620,670,0)"><img src="images/refresh.<?% global.imagetyp %?>" alt="" /></a> + <a title="<?% gettext("Start the autotimer process") %?>" href="javascript:popupcmd('aupdate',620,670,0)"><?% gettext("Start the autotimer process",20) %?></a><br /> +<?% END %?> + </td> + </tr> + <tr> + <td class="sidebottom"></td> + </tr> + </table> +<?% END %?> +<?% IF param.sortable.defined %?> +<?% cmd = cgi.param('cmd') %?> +<?% IF cgi.param('data') %?> +<?% datax = cgi.param('data') %?> +<?% datas = "&data=${datax}" %?> +<?% END %?> + <table summary=""> + <tr><td class="sidehead"><?% gettext("Sorting",20) %?></td></tr> + <tr> + <td class="sidetext"> +<?% BLOCK SortItem %?> + <ul> + <li><a href="?cmd=<?% cmd %?><?% datas %?>&__sortby=<?% row %?>&__desc=0" ><img src="images/home.<?% global.imagetyp %?>" alt="" /></a></li> + <li class="label"> + <?% "<strong>" IF cgi.param('__sortby') == row %?> + <a href="?cmd=<?% cmd %?><?% datas %?>&__sortby=<?% row %?>&__desc=<?% IF cgi.param('__sortby') == row && cgi.param('__desc') == 0 %?>1<?% ELSE %?>0<?% END %?>" > + <?% label %?> + </a> + <?% "</strong>" IF cgi.param('__sortby') == row %?> + </li> + <li><a href="?cmd=<?% cmd %?><?% datas %?>&__sortby=<?% row %?>&__desc=1" ><img src="images/down.<?% global.imagetyp %?>" alt="" /></a></li> + </ul> +<?% END %?> + <?% PROCESS SortItem row="Id" label=gettext('Index',20) %?> + <?% PROCESS SortItem row="Search" label=gettext('Search',20) %?> + <?% PROCESS SortItem row="Channels" label=gettext('Channels',20) %?> + <?% PROCESS SortItem row="Dir" label=gettext('Group all recordings on a directory',20) %?> + </td> + </tr> + <tr> + <td class="sidebottom"></td> + </tr> + </table> +<?% END %?> + <table summary=""> + <tr><td class="sidehead"><?% gettext("Search text",20) %?></td></tr> + <tr> + <td class="sidetext"> + <form method="post" action="?cmd=asearch" name="searchform"> + <input type="text" id="timertext" name="data" alt="<?% gettext("Search text") %?>" + onkeyup="suggest('asuggest','timertext','timersuggest');" + <?% IF cgi.param('cmd')=='as' || cgi.param('cmd')=='asearch' %?>value="<?% cgi.param('data')%?>"<?% END %?> + autocomplete="off" /> + <br /><div class="suggestbox" id="timersuggest"></div> + </form> + </td> + </tr> + <tr> + <td class="sidebottom"></td> + </tr> + </table> + <p id="sidefooter"> </p> +</div> +<?% INCLUDE header.inc %?> diff --git a/skins/stone_flat/asearch.tmpl b/skins/stone_flat/asearch.tmpl new file mode 120000 index 0000000..5671c2a --- /dev/null +++ b/skins/stone_flat/asearch.tmpl @@ -0,0 +1 @@ +alist.tmpl
\ No newline at end of file diff --git a/skins/stone_flat/clist.tmpl b/skins/stone_flat/clist.tmpl new file mode 100644 index 0000000..f28eb78 --- /dev/null +++ b/skins/stone_flat/clist.tmpl @@ -0,0 +1,258 @@ +<!-- clist --> +<body class="frame"> +<div id="body"> +<?% ######################################################################## %?> +<?% enableform = allow('cdelete') && data.size > 1 %?> +<?% ######################################################################## %?> +<?% IF param.sortable.defined %?> + <?% IF cgi.param('__sortby') %?> + <?% sortby = cgi.param('__sortby') %?> + <?% orderby = cgi.param('__desc') %?> + <?% END %?> +<?% END %?> +<?% ######################################################################## %?> +<?% BLOCK RowButtons %?> +<?% IF allow('switch') %?> + <a href="javascript:post('switch','<?% POS %?>')"> + <img src="images/watch.<?% global.imagetyp %?>" alt="" title="<?% gettext("Switch") %?>" /> + </a> +<?% END %?> +<?% IF allow('cedit') %?> + <a href="javascript:popup('cedit','<?% id %?>',620,670,1)"> + <img src="images/edit.<?% global.imagetyp %?>" alt="" title="<?% gettext("Edit channel") %?>" /> + </a> +<?% END %?> +<?% IF allow('cdelete') %?> + <a href="javascript:surecmd('<?% gettext("You will delete this channel") %?>','<?% escape(name) %?>','cdelete','<?% POS %?>',620,670)"> + <img src="images/delete.<?% global.imagetyp %?>" alt="" title="<?% gettext("Delete channel") %?>" /> + </a> +<?% END %?> +<?% END %?> +<?% ######################################################################## %?> +<?% BLOCK ItemAsFlat %?> + <tr<?% ' class="two"' IF loop.count mod 2 == 0 %?>> + <td class="fieldinline"> + <?% IF enableform %?> + <input type="checkbox" value="<?% POS %?>" name="<?% name %?>" /> + <?% END %?> + </td> + <td class="fieldinline"> +<?% IF allow('cedit') %?> + <a name="<?% POS %?>" href="javascript:popup('cedit','<?% id %?>',620,670,1)"> +<?% END %?> + <?% POS %?>.<?% name %?> +<?% IF allow('cedit') %?> + </a> +<?% END %?> + </td> + <td class="fieldinline"> + <?% frequency %?> + </td> + <td class="fieldinline"> + <?% parameters %?> + </td> + <td class="fieldinline"> + <?% source %?> + </td> + <!--<td class="fieldinline"> + <?% srate %?> + </td>--> + <td class="fieldinline"> + <?% chop(VPID,10) %?> + </td> + <td class="fieldinline"> + <?% chop(APID,10) %?> + </td> + <td class="fieldinline"> + <?% chop(TPID,10) %?> + </td> + <td class="fieldinline"> + <?% chop(CA,10) %?> + </td> + <td class="fieldinline push"> + <?% PROCESS RowButtons %?> + </td> + </tr> +<?% END %?> +<?% ######################################################################## %?> +<?% IF cgi.param('data') != "" %?> + <?% search = cgi.param('data') %?> +<?% END %?> +<h1> + <?% gettext("Channels") %?> + <?% IF search.defined %?> : "<?% search %?>" + <?% END %?> +</h1> +<?% IF data.size > 1 %?> +<?% fields = data.shift %?> +<form name="clist" action=""> + <?% FOREACH zeile = data %?> + <?% IF debug;"<!-- Item: ";FOREACH x = zeile;loop.count - 1;":";x.replace("-"," ");"|";END;"-->";END %?> + <?%- id=zeile.0;name=zeile.1;frequency=zeile.2;parameters=zeile.3; + source=zeile.4;srate=zeile.5;VPID=zeile.6;APID=zeile.7;TPID=zeile.8; + CA=zeile.9;SID=zeile.10;NID=zeile.11;TID=zeile.12;RID=zeile.13;GRP=zeile.14; + POS=zeile.15;CGRP=zeile.16; -%?> + + <?% IF loop.count == 1 || ( !sortby.defined && ( !OLDCGRP.defined || CGRP != OLDCGRP )) %?> + <?% IF OLDCGRP.defined %?> + </table> + </td> + </tr> + <tr><td class="largebottom"></td></tr> + </table> + <?% IF enableform && not sortby.defined %?> + </fieldset> + <?% END %?> + <?% END %?> + <?% IF !sortby.defined %?> + <?% OLDCGRP = CGRP %?> + <?% END %?> + <?% IF enableform && not sortby.defined %?> + <fieldset id="fieldset_<?% CGRP %?>" style="border: 0px; padding: 0px; margin: 0px;"> + <?% END %?> + <table class="largetable" summary=""> + <tr> + <td class="largehead"> + <?% IF sortby.defined %?> + <?% gettext("Channels") %?> + <?% ELSE %?> + <?% IF enableform %?> + <input type="checkbox" name="__selfield__" onclick="selfield('fieldset_<?% CGRP %?>',this)"/> + <?% END %?> + <?% CGRP %?> + <?% END %?> + </td> + </tr> + <tr> + <td class="largetext" align="left"> + <table summary="" width="100%"> + <tr><th width="20"></th> + <th width="120"><?% gettext('Name') %?></th> + <th><?% gettext('Transponder frequency',6)%?></th> + <th><?% gettext('Various parameters, depends on signal source',8) %?></th> + <th><?% gettext('Signal source',6) %?></th> + <!--<th><?% gettext('Symbol rate',6) %?></th>--> + <th><?% gettext('Video PID (VPID)',10) %?></th> + <th><?% gettext('Audio PID (APID)',10) %?></th> + <th><?% gettext('Teletext PID (TPID)',10) %?></th> + <th><?% gettext('Conditional access (CA)',10)%?></th> + <th width="64" align="right"></th> + </tr> + <?% END %?> + <?% PROCESS ItemAsFlat %?> + <?% END %?> + </table> + </td> + </tr> + <tr><td class="largebottom"></td></tr> + </table> + <?% IF enableform && not sortby.defined %?> + </fieldset> + <?% END %?> +</form> +<?% END %?> +</div> +<!-- ###### Seite ###### --> +<div id="sidebar"> +<?% IF allow('cnew') || allow('cupdate') %?> + <table summary=""> + <tr><td class="sidehead"><?% gettext("Channels",20) %?></td></tr> + <tr> + <td class="sidetext"> +<?% IF allow('cnew') %?> + <a title="<?% gettext("Create a new channel") %?>" href="javascript:popupcmd('cnew',620,670,1)"><img src="images/new.<?% global.imagetyp %?>" alt="" /></a> + <a title="<?% gettext("Create a new channel") %?>" href="javascript:popupcmd('cnew',620,670,1)"><?% gettext("Create a new channel",20) %?></a><br /> +<?% END %?> +<?% IF allow('cupdate') %?> + <a title="<?% gettext("Update channels") %?>" href="javascript:popupcmd('cupdate',620,670,1)"><img src="images/refresh.<?% global.imagetyp %?>" alt="" /></a> + <a title="<?% gettext("Update channels") %?>" href="javascript:popupcmd('cupdate',620,670,1)"><?% gettext("Update channels",20) %?></a> +<?% END %?> + </td> + </tr> + <tr> + <td class="sidebottom"></td> + </tr> + </table> +<?% END %?> +<?% IF param.sortable.defined %?> + <?% cmd = cgi.param('cmd') %?> + <?% IF cgi.param('data') %?> + <?% daten = url( cgi.param('data') ) %?> + <?% daten = "&data=${daten}" %?> + <?% END %?> + <table summary=""> + <tr><td class="sidehead"><?% gettext("Sorting") %?></td></tr> + <tr> + <td class="sidetext"> +<?% BLOCK SortItem %?> + <ul> + <li><a href="?cmd=<?% cmd %?><?% daten %?>&__sortby=<?% row %?>&__desc=0" ><img src="images/home.<?% global.imagetyp %?>" alt="" /></a></li> + <li class="label"> + <?% "<strong>" IF sortby == row %?> + <a href="?cmd=<?% cmd %?><?% daten %?>&__sortby=<?% row %?>&__desc=<?% IF sortby == row && orderby == 0 %?>1<?% ELSE %?>0<?% END %?>" > + <?% label %?> + </a> + <?% "</strong>" IF sortby == row %?> + </li> + <li><a href="?cmd=<?% cmd %?><?% daten %?>&__sortby=<?% row %?>&__desc=1" ><img src="images/down.<?% global.imagetyp %?>" alt="" /></a></li> + </ul> +<?% END %?> + <?% PROCESS SortItem row="POS" label=gettext('Position',20) %?> + <?% PROCESS SortItem row="Name" label=gettext('Name',20) %?> + <?% PROCESS SortItem row="Frequency" label=gettext('Transponder frequency',20) %?> + <?% PROCESS SortItem row="Parameters" label=gettext('Various parameters, depends on signal source',20) %?> + <?% PROCESS SortItem row="Source" label=gettext('Signal source',20) %?> + <!--<?% PROCESS SortItem row="Srate" label=gettext('Symbol rate',20) %?>--> + <?% PROCESS SortItem row="VPID" label=gettext('Video PID (VPID)',20) %?> + <?% PROCESS SortItem row="APID" label=gettext('Audio PID (APID)',20) %?> + <?% PROCESS SortItem row="TPID" label=gettext('Teletext PID (TPID)',20) %?> + <?% PROCESS SortItem row="CA" label=gettext('Conditional access (CA)',20) %?> + </td> + </tr> + <tr> + <td class="sidebottom"></td> + </tr> + </table> +<?% END %?> +<?% IF enableform %?> + <table summary=""> + <tr><td class="sidehead"><?% gettext("Select",20) %?></td></tr> + <tr> + <td class="sidetext"> + <a href="javascript:selAll(document.clist,1)"><img src="images/select.<?% global.imagetyp %?>" alt="" /></a> + <a href="javascript:selAll(document.clist,1)"><?% gettext("Select all",20) %?></a><br /> + <a href="javascript:selAll(document.clist,0)"><img src="images/deselect.<?% global.imagetyp %?>" alt="" /></a> + <a href="javascript:selAll(document.clist,0)"><?% gettext("Unselect all",20) %?></a><br /> + <a href="javascript:reverse(document.clist)"><img src="images/invers.<?% global.imagetyp %?>" alt="" /></a> + <a href="javascript:reverse(document.clist)"><?% gettext("Reverse select",20) %?></a> + </td> + </tr> + <tr> + <td class="sidetext"> +<?% IF allow('cdelete') %?> + <a href="javascript:DeleteSelected('<?% gettext("You would delete follow channels?") %?>','<?% gettext("You have nothing selected!") %?>','cdelete',document.clist,620,670)"><img src="images/delete.<?% global.imagetyp %?>" alt="" /></a> + <a href="javascript:DeleteSelected('<?% gettext("You would delete follow channels?") %?>','<?% gettext("You have nothing selected!") %?>','cdelete',document.clist,620,670)"><?% gettext("Delete channels",20) %?></a><br /> +<?% END %?> + </td> + </tr> + <tr> + <td class="sidebottom"></td> + </tr> + </table> +<?% END %?> + <table summary=""> + <tr><td class="sidehead"><?% gettext("Search for channels",20) %?></td></tr> + <tr> + <td class="sidetext"> + <form method="post" action="?cmd=clist"> + <input type="text" name="data" size="18" <?% IF search.defined %?>value="<?% search %?>"<?% END %?> /> + </form> + </td> + </tr> + <tr> + <td class="sidebottom"></td> + </tr> + </table> + <p id="sidefooter"> </p> +</div> +<?% INCLUDE header.inc %?> diff --git a/skins/stone_flat/display.tmpl b/skins/stone_flat/display.tmpl new file mode 100644 index 0000000..506601b --- /dev/null +++ b/skins/stone_flat/display.tmpl @@ -0,0 +1,128 @@ +<!-- display --> +<?% IF ! global.bodyinc.defined; global.bodyinc = 1 %?> +<body class="hilfsframed"> +<div> +<?% END %?> +<?% IF debug %?> +<!-- First: <?% FOREACH x = data.first %?><?% loop.count - 1 %?>:<?% x %?>|<?% END %?> --> +<!-- Last: <?% FOREACH x = data.last %?><?% loop.count - 1 %?>:<?% x %?>|<?% END %?> --> +<?% END %?> +<?% + USE date; + id = data.last.0; + title = data.last.1; + subtitle = data.last.2; + start = data.last.3; + stopp = data.last.4; + channel = data.last.5; + description = data.last.6; + bild = data.last.7; + d = data.last.8; + video = data.last.9; + audio = data.last.10; + vps = data.last.11; +%?> +<?% ######################################################################## %?> +<?% BLOCK dur %?> + <?% height=12;IF d >= 0 and d < 100;d = d div 1 %?> + <?% IF d >= 1 %?> + <img class="progressleft" src="images/blank.gif" width="<?% 100 - d %?>" height="<?% height %?>" alt="<?% 100 - d %?>%" /><img class="progressright" src="images/blank.gif" width="<?% d %?>" height="<?% height %?>" alt="" /> + <?% ELSE %?> + <img class="progress" src="images/blank.gif" width="100" height="<?% height %?>" alt="" /> + <?% END %?> + <?% END %?> +<?% END %?> +<?% ######################################################################## %?> +<?% BLOCK printduration; + duration = stopp - start; + IF duration > 1; + hours = duration div 3600; + minutes = duration div 60 mod 60; + seconds = duration mod 60; + gettext("Duration") ; " : "; hours div 1 ;":"; minutes | format('%02d'); + END; +END %?> +<?% ######################################################################## %?> +<?% BLOCK RowButtons %?> +<div align="right"> + <a target="_blank" href="http://www.tvmovie.de/MegaFinder_Suchergebnisse.210.0.html?no_cache=1&search=<?% title %?>"> + <img src="images/tvm.<?% global.imagetyp %?>" title="<?% gettext("Search with TVMovie") %?>" alt="TVMovie" /> + </a> + <a target="_blank" href="http://german.imdb.com/find?s=tt&site=aka&q=<?% title %?>"> + <img src="images/imdb.<?% global.imagetyp %?>" title="<?% gettext("Search with IMDb") %?>" alt="IMDb" /> + </a> + <a target="_blank" href="http://www.ofdb.de/view.php?page=suchergebnis&Kat=Titel&SText=<?% title %?>"> + <img src="images/ofdb.<?% global.imagetyp %?>" title="<?% gettext("Search with OFDb") %?>" alt="OFDb" /> + </a> + <a target="_blank" href="?cmd=search&data=<?% url( title ) %?>"> + <img src="images/find.<?% global.imagetyp %?>" alt="" title="<?% gettext("Search for repeats") %?>" /> + </a> + <?% IF param.timers.${id} && allow('tedit') %?> + <a href="?cmd=tedit&data=<?% param.timers.${id}.Id %?>"> + <img src="images/onoff.<?% global.imagetyp %?>" alt="" title="<?% gettext("Edit this timer") %?>" /> + </a> + <?% ELSIF allow('tnew') %?> + <a href="?cmd=tnew&data=<?% id %?>"> + <img src="images/record.<?% global.imagetyp %?>" alt="" title="<?% gettext("To record") %?>" /> + </a> + <?% END %?> +</div> +<?% END %?> +<?% ######################################################################## %?> + <table class="editortable" summary=""> + <tr> + <td class="editorhead"> + <div class="editorhead"> + <font class="title"><?% title %?></font> + <?% IF subtitle.length > 0 %?><font class="subtitle"> ~ <?% subtitle %?></font><?% END %?> + </div><?% INCLUDE shutter.inc %?> + </td> + </tr> + <tr> + <td class="editortext"> + <table width="100%" summary=""> + <tr> + <td> + <div class="description" style="white-space: nowrap"> + <?% IF allow('switch') %?> + <a href="javascript:post('switch','<?% channel %?>')"> + <img src="images/watch.<?% global.imagetyp %?>" alt="" title="<?% gettext("Switch") %?>" /> + <?% END %?> + <?% channel %?> + <?% IF allow('switch') %?> + </a> + <?% END %?> + </div> + </td> + <td> + <div class="description" style="white-space: nowrap"> + + <?% date.format(start,"%A, %x",locale) %?> + <br /> + <?% date.format(start,"%H:%M",locale) %?> - <?% date.format(stopp,"%H:%M",locale) %?> + <?% IF vps && vps != start %?> (<?% gettext("VPS") %?> <?% date.format(vps,"%H:%M",locale) %?>) <?% END %?> + <?% PROCESS printduration %?> + </div> + </td> + <td align="right"> + <?% PROCESS dur %?> + </td> + <td class="push"> + <?% PROCESS RowButtons %?> + </td> + </tr> + </table> + <?% IF description != "" || bild != "" %?> + <p class="description"> + <?% IF bild != "" %?> + <img class="epgimages" src="epgimages/<?% bild %?>" alt="" /> + <?% END %?> +<?% description %?> + </p> + <?% END %?> + </td> + </tr> + <tr> + <td class="editorbottom"></td> + </tr> +</table> diff --git a/skins/stone_flat/favicon.ico b/skins/stone_flat/favicon.ico new file mode 120000 index 0000000..755090f --- /dev/null +++ b/skins/stone_flat/favicon.ico @@ -0,0 +1 @@ +../stone/favicon.ico
\ No newline at end of file diff --git a/skins/stone_flat/filesys.tmpl b/skins/stone_flat/filesys.tmpl new file mode 100644 index 0000000..f84509a --- /dev/null +++ b/skins/stone_flat/filesys.tmpl @@ -0,0 +1,82 @@ +<!-- filesys Template --> +<?% IF ! global.bodyinc.defined;global.bodyinc = 1 %?> +<body class="frame"> +<?% INCLUDE status.inc %?> +<?% INCLUDE header.inc %?> +<div id="body"> +<?% END %?> + +<?% IF param.headingText %?> +<h1><?% param.headingText %?></h1> +<?% END %?> + +<?% +statusfiles = []; +trash = param.usage.shift; + +IF param.graphic; + FILTER null; + FOREACH device = param.usage; + name = reentities(device.first).split('/').last; + free = 100 - device.5; + d = [ + [ device.3, device.4], + [ device.5, free], + ]; + + USE my_graph = GD.Graph.pie(500, 300); + + label = gettext('Total space'); + label = "${device.0} - ${device.6} - ${label} ${device.2}"; + my_graph.set( + pie_height => 20, + axislabelclr => 'black', + shadow => 1, + ); + my_graph.set_title_font(param.font,10); + my_graph.set_value_font(param.font,10); + my_graph.set_label_font(param.font,6); + + file = writefile("status_filesys_${name}.gif", my_graph.plot(d).gif ); + statusfiles.push([label, file]); + END; + END; +%?> + +<?% FOREACH file = statusfiles %?> +<table class="editortable" summary=""> + <tr><td class="editorhead"><?% file.0 %?></td></tr> + <tr> + <td class="editortext" align="center"> + <img src="<?% file.1 %?>" alt="<?% file.0 %?>" /> + </td> + </tr> + <tr><td class="editorbottom"></td></tr> +</table> +<?% END %?> + +<?% ELSE; # not param.graphic; %?> +<table class="editortable" summary=""> + <tr> + <td class="editorhead"> </td> + </tr> + <tr> + <td class="editortext"> + <table summary="" width="100%"> + <?% FOREACH field = trash %?> + <th><?% field %?></th> + <?% END %?> + </tr> + <?% FOREACH zeile = data %?> + <tr <?% ' class="two"' IF loop.count mod 2 == 0 %?>> + <?% FOREACH field = zeile %?> + <td><?% field %?></td> + <?% END %?> + </tr> + <?% END %?> + </table> + </td> + </tr> + <tr><td class="editorbottom"></td></tr> +</table> +<?% END %?> diff --git a/skins/stone_flat/global.js b/skins/stone_flat/global.js new file mode 100644 index 0000000..f101bb7 --- /dev/null +++ b/skins/stone_flat/global.js @@ -0,0 +1,446 @@ + +var parent_url=""; + +function popup(cmd,data,width,height,reloadonclose){ + var url = "?cmd=" + cmd + "&data=" + data; + if(ie5&&!opera) //Avoid use cache + url += "&random=" + (Math.random() * Date.parse(new Date())); + popupwindow(url,width,height,reloadonclose); +} + +function popupcmd(cmd,width,height,reloadonclose){ + var url = "?cmd=" + cmd; + if(ie5&&!opera) //Avoid use cache + url += "&random=" + (Math.random() * Date.parse(new Date())); + popupwindow(url,width,height,reloadonclose); +} + +function popupwindow(url,width,height,reloadonclose){ + + ttp_make_invisable(); + questclose(0); + + if (!ie5&&!ns6) + window.open(url,"","width=width,height=height,scrollbars=1"); + else{ + var scrPos = getScrollingPosition(); + + document.getElementById("hilfsframe").style.width=width+"px"; + document.getElementById("hilfsframe").style.height=height+"px"; + document.getElementById("hilfsframe").style.left="30px"; + document.getElementById("hilfsframe").style.top=scrPos[1]+30+"px"; + document.getElementById("cframe").src=url; + document.getElementById("hilfsframe").style.display = ""; + } + if(reloadonclose) + parent_url = parent.window.location.href; + else + parent_url = ""; +} + +function closeit(){ + parent.document.getElementById("hilfsframe").style.display = "none"; + parent.document.getElementById("cframe").src="about:blank"; + if(parent.parent_url) { + var url = parent.parent_url.replace(/&random=.+/g,''); + if(ie5&&!opera) //Avoid use cache + url += "&random=" + (Math.random() * Date.parse(new Date())); + parent.window.location.href = url; + } +} + + +// Request senden, aber Ergebnis nicht anzeigen, Reload der aktuellen Seite +function toggle(cmd,data) { + + var fnWhenDone = function(oAnswer, sData) { + var values = eval('(' + oAnswer.responseText + ')'); + if(values && values.data && typeof(values.data) == 'object'){ + var className; + var imageExt = ie5&&!opera ? "gif" : "png"; + for (var i = 0; i < values.data.length; i++) { + var x = values.data[i]; + if(x.length == 4 && x[0]) { + var tid = x[0]; + var ton = x[1]; + var trun = x[2]; + var tcon = x[3]; + + var img = document.getElementById('toggle' + tid); + if(img) { + if(ton) { + if(tcon) + className = 'problem'; + else if(trun) + className = 'running'; + else + className = ''; + img.src = 'images/on.' + imageExt; + } else { + className = 'deactive'; + img.src = 'images/off.' + imageExt; + } + + + var elememts = new Array; + var a = document.getElementById('item' + tid); + if(a) { elememts.push(a); } + var b = document.getElementById('desc' + tid); + if(b) { elememts.push(b); } + + for (var n = 0; n < elememts.length; n++) { + var elem = elememts[n].getElementsByTagName('font'); + for (var j = 0; j < elem.length; j++) { + var classList = elem[j].className.split(' '); + + for ( var k = 0; k < classList.length; k++ ) { + if( classList[k] == 'deactive' //remove class + || classList[k] == 'problem' + || classList[k] == 'running') + classList.splice(k, 1); + } + + if(className) //add class + classList[classList.length] = className; + + elem[j].className = classList.join(' '); + } + } + } + } + } + } + }; + + var tt = data.split('_'); + for (var l = 0; l < tt.length; l++) { + var timg = document.getElementById('toggle' + tt[l]); + if(timg) { + timg.src = 'images/wait.gif'; + } + } + + // Hmm, brutal und gemein, das Laden der URL als Bild funktioniert... + var url = "?cmd=" + cmd + "&data=" + data + "&ajax=json"; + if(ie5&&!opera) //Avoid use cache + url += "&random=" + (Math.random() * Date.parse(new Date())); + var aconn = new XHRequest(); + if(!aconn) + return; + aconn.connect(url, fnWhenDone, data); +} + +function selToggle(warnmsg,form) { +// test on checked Boxes + ok = new Array; + x = 0; + for(var i=0;i<form.length;++i) { + var id; + if(form.elements[i].type == 'checkbox' && form.elements[i].checked) { + id = form.elements[i].value; + ok.push(id); + form.elements[i].checked = 0; + x += 1; + } + } + if(x > 0) { + toggle('ttoggle',ok.join('_')); + } else { + alert(warnmsg); + } +} + + +// Request senden, aber Ergebnis nicht anzeigen +function post(cmd,data) { + + var fnWhenDone = function (oAnswer, sData) { + + }; + + var url = "?cmd=" + cmd + "&data=" + data; + if(ie5&&!opera) //Avoid use cache + url += "&random=" + (Math.random() * Date.parse(new Date())); + + var aconn = new XHRequest(); + if(!aconn) + return; + aconn.connect(url, fnWhenDone, data); +} + +// Request senden, aber Ergebnis nicht anzeigen, Reload der aktuellen Seite +function fire(cmd,data) { + + var fnWhenDone = function (oAnswer, sData) { + var url = location.href.replace(/&random=.+/g,''); + if(ie5&&!opera) //Avoid use cache + url += "&random=" + (Math.random() * Date.parse(new Date())); + location.href = url; + }; + + var url = "?cmd=" + cmd + "&data=" + data; + if(ie5&&!opera) //Avoid use cache + url += "&random=" + (Math.random() * Date.parse(new Date())); + + var aconn = new XHRequest(); + if(!aconn) + return; + aconn.connect(url, fnWhenDone, data); +} + +// Redirect +function redirect(url, wait) { + if(! wait) { + wait = 1; + } + window.setTimeout('location.href = "' + url + '"', wait * 1000); +} + +function selAll(form, type) { +// check all Boxes + for(var i=0;i<form.length;++i) { + if(form.elements[i].type == 'checkbox') { + form.elements[i].checked = type; + } + } +} + +function reverse(form) { +// check all Boxes + for(var i=0;i<form.length;++i) { + if(form.elements[i].type == 'checkbox') { + if(form.elements[i].checked) { + form.elements[i].checked = 0; + } else { + form.elements[i].checked = 1; + } + } + } +} + +function selfield(id,checkbox) +{ + var fieldset = document.getElementById(id); + var list = fieldset.getElementsByTagName("input"); + for(var i = 0; i < list.length; i++) + { + if(list[i].type == 'checkbox') { + list[i].checked = checkbox.checked; + } + } +} + +function PlayMusic(ids,proxy) { + /*popupwindow('?cmd=mplay&data=' + ids,620,670,0);*/ + var url = ""; + if(proxy != "") + url = proxy; + url = url + '?cmd=mplaylist&data=' + ids + '&binary=1'; + location.href = url; +} + +function Play(warnmsg,form,proxy) { +// test on checked Boxes + x = 0; + ok = new Array; + for(var i=0;i<form.length;++i) { + var id; + if(form.elements[i].type == 'checkbox' && form.elements[i].checked) { + id = form.elements[i].value; + ok.push(id); + x += 1; + } + } + if(x > 0) { + PlayMusic(ok.join('_'),proxy); + } else { + alert(warnmsg); + } +} + +var suggestsearch = ''; +var suggestinput; +function suggest(cmd,inputbox,suggestbox){ + + var fnWhenDone = function (oAnswer, sData) { + var sb = document.getElementById(suggestbox); + if(sb) { + sb.innerHTML = ''; + + var values = eval('(' + oAnswer.responseText + ')'); + if(values && values.data && typeof(values.data) == 'object'){ + var suggest = ''; + for (var i = 0; i < values.data.length; i++) { + var x = values.data[i]; + if(x.length >= 1 && x[0]) { + suggest += '<div id=\'suggestitem' + i + '\' onmouseover="javascript:suggestmouseover(this);" '; + suggest += 'onmouseout="javascript:suggestmouseout(this);" '; + suggest += 'onclick="javascript:suggestselect(\'' + inputbox + '\',\'' + suggestbox + '\', this.innerHTML);" '; + suggest += 'class="suggestlink">' + x[0] + '</div>'; + } + } + if(suggest != '') { + sb.innerHTML = suggest; + sb.style.visibility = "visible"; + } else { + sb.innerHTML = ''; + sb.style.visibility = "hidden"; + } + } + } + }; + + var search = document.getElementById(inputbox).value; + if(search && (suggestsearch != search || suggestinput != inputbox)) + { + suggestsearch = search.replace('&','&'); + suggestinput = inputbox; + var url = "?cmd=" + cmd + "&data=" + escape(search) + "&ajax=json"; + var aconn = new XHRequest(); + if(aconn) + return aconn.connect(url, fnWhenDone, search); + } + return false; +} + +function suggestmouseover(div_value) { + div_value.className = 'suggestover'; +} + +function suggestmouseout(div_value) { + div_value.className = 'suggestlink'; +} + +function suggestselect(inputbox, suggestbox, value) { + document.getElementById(inputbox).value = unescape(value).replace('&','&'); + var sb = document.getElementById(suggestbox); + if(sb) { + sb.innerHTML = ''; + sb.style.visibility = "hidden"; + } + suggestsearch = ''; + suggestinput = 0; +} + +function suggestitem(i) { + var item = document.getElementById('suggestitem' + i); + if(item) { + item.className = 'suggestover'; + var inp = document.getElementById(suggestinput); + if(inp) { + suggestsearch = item.innerHTML.replace('&','&'); + inp.value = unescape(item.innerHTML).replace('&','&'); + } + } +} + +document.onkeydown = suggestkeydown; +function suggestkeydown(e) { + if (!e) + e = window.event; + if (!e) + return; + if(e.keyCode == 40 && suggestinput) { + var i = 0; + for (; i < 25; i++) { + var itemlast = document.getElementById('suggestitem' + i); + if(itemlast && itemlast.className == 'suggestover') { + itemlast.className = 'suggestlink'; + i += 1; + suggestitem(i); + return; + } + } + if(i == 25) + { + suggestitem(0); + } + return; + } + if(e.keyCode == 38 && suggestinput) { + var i = 25; + for (; i > 0; i--) { + var itemlast = document.getElementById('suggestitem' + i); + if(itemlast && itemlast.className == 'suggestover') { + itemlast.className = 'suggestlink'; + i -= 1; + suggestitem(i); + return; + } + } + return; + } +} + +var slidelist = false;
+var slideminX = 0; +var slidemaxX = 0;
+var slidespeed = 0; +var slideleft = false; +var slideright = false; +
+function start(e) {
+ if(document.all)e = event;
+ if(this.id=='slideright') {
+ var m = Math.floor((e.clientX - this.offsetLeft) / 5);
+ slidespeed = -1*m;
+ slidespeed = Math.max(-10,slidespeed);
+ } else {
+ var m = 10 - Math.floor((e.clientX - this.offsetLeft) / 5);
+ slidespeed = 1*m;
+ slidespeed = Math.min(10,slidespeed);
+ if(slidespeed<0)slidespeed=10;
+ }
+}
+
+function release() {
+ slidespeed=0;
+}
+
+function slide() {
+ if(slidespeed!=0) {
+ var l = slidelist.offsetLeft;
+ l = l/1 + slidespeed;
+ + if(l>=slidemaxX) {
+ l = slidemaxX;
+ slidespeed = 0; + if(slideleft)
+ slideleft.style.visibility = "hidden";
+ } else { + if(slideleft && slideleft.style.visibility == "hidden")
+ slideleft.style.visibility = "visible";
+ } + + if(l<=slideminX) {
+ l = slideminX;
+ slidespeed=0; + if(slideright)
+ slideright.style.visibility = "hidden";
+ } else { + if(slideright && slideright.style.visibility == "hidden")
+ slideright.style.visibility = "visible";
+ }
+ slidelist.style.left = l + 'px';
+ }
+ setTimeout('slide()',20);
+}
+
+function initslide() { + + slideleft = document.getElementById('slideleft');
+ slideleft.onmousemove = start;
+ slideleft.onmouseout = release;
+ slideleft.style.visibility = "hidden"; + + slideright = document.getElementById('slideright');
+ slideright.onmousemove = start;
+ slideright.onmouseout = release;
+
+ slidelist = document.getElementById('slidelist');
+ var w = document.getElementById('slideframe').offsetWidth;
+ slidemaxX = slidelist.offsetLeft;
+ slideminX = w - document.getElementById('slideend').offsetLeft;
+
+ slide();
+} diff --git a/skins/stone_flat/header.inc b/skins/stone_flat/header.inc new file mode 100644 index 0000000..f89a472 --- /dev/null +++ b/skins/stone_flat/header.inc @@ -0,0 +1,44 @@ +<!-- ###### Kopfzeile ###### --> +<?% IF ! global.headerinc.defined;global.headerinc = 1 %?> +<div id="header"> + <div id="logo"> + <?% IF allow( 'help' ) %?> + <a href="?cmd=help" title="<?% gettext("Help") %?>"> + <img src="images/logo.<?% global.imagetyp %?>" alt="" /> + </a> + <?% ELSE %?> + <img src="images/logo.<?% global.imagetyp %?>" alt="" /> + <?% END %?> + </div> + <div id="headerNav"> + · + <?% IF allow( 'n' ) %?> <a accesskey="n" href="?cmd=n"><?% gettext("Running now") %?></a> · <?% END %?> + <?% IF allow( 'p' ) %?> <a accesskey="p" href="?cmd=p"><?% gettext("Program guide") %?></a> · <?% END %?> + <?% IF allow( 'al' ) %?> <a accesskey="a" href="?cmd=al"><?% gettext("AutoTimer") %?></a> · <?% END %?> + <?% IF allow( 'tl' ) %?> <a accesskey="t" href="?cmd=tl"><?% gettext("Timers") %?></a> · <?% END %?> + <?% IF allow( 'rl' ) %?> <a accesskey="r" href="?cmd=rl"><?% gettext("Recordings") %?></a> · <?% END %?> + <?% IF allow( 'vc' ) %?> <a accesskey="v" href="?cmd=vc"><?% gettext("Teletext") %?></a> · <?% END %?> + <?% IF allow( 'ml' ) %?> <a accesskey="m" href="?cmd=ml"><?% gettext("Music") %?></a> · <?% END %?> + <?% IF allow( 'mll' ) %?> <a accesskey="l" href="?cmd=mll"><?% gettext("Media list") %?></a> · <?% END %?> + <?% IF allow( 'r' ) %?> <a accesskey="f" href="javascript:popupcmd('r',640,450,0)"><?% gettext("Remote") %?></a> · <?% END %?> + <?% IF allow( 'sa' ) %?> <a accesskey="s" href="?cmd=sa"><?% gettext("Status") %?></a> · <?% END %?> + <?% IF allow( 'rp' ) %?> <a accesskey="b" href="?cmd=rp"><?% gettext("Report") %?></a> · + <?% ELSIF allow( 'lg' ) %?> <a accesskey="b" href="?cmd=lg&data=main"><?% gettext("Log files") %?></a> ·<?% END %?> + <?% IF allow( 'ce' ) %?> <a accesskey="c" href="?cmd=ce"><?% gettext("Preferences") %?></a> · + <?% ELSIF allow( 'uprefs' ) %?><a accesskey="u" href="javascript:popupcmd('uprefs',620,450,0)"><?% gettext("Personality") %?></a> · + <?% END %?> + <?% IF allow( 'logout' ) %?> <a accesskey="q" href="javascript:popupcmd('logout',620,450,1)"><?% gettext("Logout") %?></a> · <?% END %?> + <?% IF allow( 'help' ) %?> <a accesskey="h" href="?cmd=help">?</a> · <?% END %?> + </div> +</div> +<!-- ###### Hilfsframe ###### --> +<div id="hilfsframe" + style="display:none"> + <div id="hilfsframecontent"> + <iframe<?% IF info.http_useragent.match('.*MSIE.*') %?> allowtransparency="true"<?% END %?> frameborder="0" id="cframe" src="" width="100%" height="100%"> + </iframe> + </div> +</div> +<!-- ###### Tooltips ###### --> +<div id="TOOLTIP"></div> +<?% END %?> diff --git a/skins/stone_flat/help.tmpl b/skins/stone_flat/help.tmpl new file mode 100644 index 0000000..04dc239 --- /dev/null +++ b/skins/stone_flat/help.tmpl @@ -0,0 +1,81 @@ +<!-- help --> +<body class="frame"> +<div id="body"> +<?% ######################################################################## %?> +<?% BLOCK ItemAsFlat %?> + <tr<?% ' class="two"' IF z mod 2 == 0 %?>> + <td> + <a href="javascript:popupcmd('<?% short %?>',620,670,0)"> + <?% long %?> ( <?% short %?> ) + </a> + </td> + <td> + <a title="" href="?cmd=<?% short %?>" class="fieldinline"> + <?% desc %?> + </a> + </td> + <td class="push"> + <a href="javascript:popupcmd('<?% short %?>',620,670,0)"> + <img src="images/watch.<?% global.imagetyp %?>" alt="" /> + </a> + </td> + </tr> +<?% END %?> +<?% ######################################################################## %?> +<h1>XXV - Version <?% version %?></h1> +<p><?% data.shift %?></p> +<?% IF data.size > 1 %?> + <?% FOREACH zeile = data %?> + <?% IF debug;"<!-- Item: ";FOREACH x = zeile;loop.count - 1;":";x.replace("-"," ");"|";END;"-->";END %?> + <?% modul=zeile.0;short=zeile.1;long=zeile.2;desc=zeile.3 %?> + <?% IF allow(long) %?> + <?% IF !old.defined || modul != old %?> + <?% IF old.defined %?> + </table> + </td> + </tr> + <tr><td class="largebottom"></td></tr> + </table> + <?% END %?> + <table class="largetable" summary=""> + <tr><td class="largehead"> + <a href="javascript:popup('doc','<?% modul %?>',620,670,0)"> + <?% modul %?> + </a> + </td></tr> + <tr> + <td class="largetext" align="left"> + <table summary="" width="100%"> + <?% z = 1 %?> + <tr height="0"><th width="200" align="left"></th><th></th><th width="40" align="right"></th></tr> + <?% END %?> + <?% PROCESS ItemAsFlat %?> + <?% z = z + 1 %?> + <?% old = modul %?> + <?% END %?> + <?% END %?> + </table> + </td> + </tr> + <tr><td class="largebottom"></td></tr> + </table> +<?% END %?> +</div> +<!-- ###### Seite ###### --> +<div id="sidebar"> + <table summary=""> + <tr><td class="sidehead"><?% gettext("Search",20) %?></td></tr> + <tr> + <td class="sidetext"> + <form method="post" action="?cmd=search"> + <input type="text" name="data" size='18' /> + </form> + </td> + </tr> + <tr> + <td class="sidebottom"></td> + </tr> + </table> + <p id="sidefooter"> </p> +</div> +<?% INCLUDE header.inc %?> diff --git a/skins/stone_flat/images b/skins/stone_flat/images new file mode 120000 index 0000000..f37d9f2 --- /dev/null +++ b/skins/stone_flat/images @@ -0,0 +1 @@ +../stone/images/
\ No newline at end of file diff --git a/skins/stone_flat/index.tmpl b/skins/stone_flat/index.tmpl new file mode 100644 index 0000000..1c63454 --- /dev/null +++ b/skins/stone_flat/index.tmpl @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head> + <title>XXV</title> + <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" /> + <meta http-equiv="cache-control" content="no-cache" /> + <meta http-equiv="pragma" content="no-cache" /> + <meta name="robots" content="noindex,noarchive,nofollow" /> +<script language="javascript" type="text/javascript"> +<!-- +// Automated reload with right page +location.replace("?cmd=<?% param.start %?>"); +// --> +</script> +</head> +<body onload="setTimeout('location.href=\'?cmd=<?% param.start %?>\'',15)" > + <a href="?cmd=<?% param.start %?>">Follow me...!</a> +</body> +</html> diff --git a/skins/stone_flat/logger.tmpl b/skins/stone_flat/logger.tmpl new file mode 100644 index 0000000..af54a36 --- /dev/null +++ b/skins/stone_flat/logger.tmpl @@ -0,0 +1,84 @@ +<!-- logger --> +<body class="frame"> +<div id="body"> +<h1><?% gettext("Read journal file: ") %?><?% param.logfile %?></h1> +<p><?% gettext("Size: ") %?><?% param.Size %?> + <?% gettext("Last changed: ") %?><?% param.LastChanged %?></p> + <?% trun = param.full ? 1000 : param.maxlet %?> + <table class="largetable" summary=""> + <tr><td class="largehead"></td></tr> + <tr> + <td class="largetext" align="left"> + <table summary="" width="100%"> +<?% fields = data.shift %?> + <tr> + <?% FOREACH field = fields %?> + <?% NEXT IF field.match('^__') %?> + <th> + <?% field %?> + </th> + <?% END %?> + </tr> + <?% FOREACH zeile = data %?> + <tr<?% ' class="two"' IF loop.count mod 2 == 0 %?>> + <?% c = -1 %?> + <?% FOREACH field = zeile %?> + <?% c = c + 1 %?> + <?% NEXT IF fields.$c.match('^__') %?> + <td> + <?% IF field == zeile.last && trun < 100 %?> + <a id="" href="" title="<?% zeile.last.replace("\n","<br />").replace("\"", "").replace("\'", "").replace(" ", " ") %?>"> + <font color='<?% param.color(zeile) %?>'> + <?% chop(field,trun) %?> + </font> + </a> + <?% ELSE %?> + <font color='<?% param.color(zeile) %?>'> + <?% chop(field,trun) %?> + </font> + <?% END %?> + </td> + <?% END %?> + </tr> + <?% END %?> + </table> + </td> + </tr> + <tr><td class="largebottom"></td></tr> + </table> +</div> +<!-- ###### Seite ###### --> +<div id="sidebar"> +<?% IF allow('report') %?> + <table summary=""> + <tr><td class="sidehead"><?% gettext("Report",20) %?></td></tr> + <tr> + <td class="sidetext"> + <a title="<?% gettext("Report") %?>" href="?cmd=report"><img src="images/refresh.<?% global.imagetyp %?>" alt="" /></a> + <a title="<?% gettext("Report") %?>" href="?cmd=report"><?% gettext("Report",20) %?></a> + </td> + </tr> + <tr> + <td class="sidebottom"></td> + </tr> + </table> +<?% END %?> +<?% IF allow('logger') %?> + <table summary=""> + <tr><td class="sidehead"><?% gettext("Log files",20) %?></td></tr> + <tr> + <td class="sidetext"> + <a title="<?% gettext("Standard") %?>" href="?cmd=logger&data=main"><img src="images/refresh.<?% global.imagetyp %?>" alt="" /></a> + <a title="<?% gettext("Standard") %?>" href="?cmd=logger&data=main"><?% gettext("Standard",20) %?></a><br /> + <a title="<?% gettext("Syslog") %?>" href="?cmd=logger&data=syslog"><img src="images/refresh.<?% global.imagetyp %?>" alt="" /></a> + <a title="<?% gettext("Syslog") %?>" href="?cmd=logger&data=syslog"><?% gettext("Syslog",20) %?></a><br /> + </td> + </tr> + <tr> + <td class="sidebottom"></td> + </tr> + </table> +<?% END %?> + <p id="sidefooter"> </p> +</div> +<?% INCLUDE header.inc %?> diff --git a/skins/stone_flat/memory.tmpl b/skins/stone_flat/memory.tmpl new file mode 100644 index 0000000..f0b15e0 --- /dev/null +++ b/skins/stone_flat/memory.tmpl @@ -0,0 +1,110 @@ +<!-- Memory Template --> +<?% IF ! global.bodyinc.defined;global.bodyinc = 1 %?> +<body class="frame"> +<?% INCLUDE status.inc %?> +<?% INCLUDE header.inc %?> +<div id="body"> +<?% END %?> + +<?% + USE date; + statusfiles = []; + + FILTER null; + name = 'memory_stat'; + swapdata = []; + activedata = []; + cacheddata = []; + buffersdata = []; + timestamps = []; + FOREACH item = param.stack; + t = date.format(item.timestamp, '%H:%M:%S'); + timestamps.push(t); + swapdata.push(item.memory.SwapTotal); + activedata.push(item.memory.Active); + cacheddata.push(item.memory.Cached); + buffersdata.push(item.memory.Buffers); + END; + + # Maximum wert + max = param.stack.last.memory.MemTotal; + + # Data ... + d = [ + timestamps , + swapdata , + cacheddata , + activedata , + buffersdata , + ]; + + USE my_graph = GD.Graph.lines(575,300); + + # Xsteps + steps = param.stack.size div 5; + + label = gettext('Memory usage since'); + y_label = gettext('Memory usage in bytes'), + label = "${label} ${d.first.first} (${y_label})"; + my_graph.set( + x_label_skip => steps, + x_long_ticks => 1, + + y_long_ticks => 1, + + line_width => 2, + box_axis => 1, + boxclr => '#FFFFCC', + fgclr => '#BBBBBB' + legend_placement => 'RD', + legend_spacing => 5, + ); + my_graph.set_title_font(param.font,10); + my_graph.set_y_label_font(param.font,10); + my_graph.set_x_label_font(param.font,10); + my_graph.set_x_axis_font(param.font,6); + my_graph.set_y_axis_font(param.font,6); + my_graph.set_legend( 'Swap', 'Active', 'Cached', 'Buffers'); + file = writefile("status_${name}.gif", my_graph.plot(d).gif ); + statusfiles.push([label, file]); + END; + + # ------------------- Piegraph für Speicher + FILTER null; + name = 'memory_now'; + d2 = [ + ["Active ${data.Active}","Cached ${data.Cached}","Inactive ${data.Inactive}","MemFree ${data.MemFree}","Buffers ${data.Buffers}"], + [ data.Active, data.Cached, data.Inactive, data.MemFree, data.Buffers] + ]; + USE my_graph = GD.Graph.pie(500, 300); + label = gettext('Total Memory'); + label = "${label} ${data.MemTotal}"; + my_graph.set( + axislabelclr => 'black', + pie_height => 20, + transparent => 1, + ); + my_graph.set_title_font(param.font,10); + my_graph.set_label_font(param.font,10); + my_graph.set_value_font(param.font,8); + file = writefile("status_${name}.gif", my_graph.plot(d2).gif ); + statusfiles.push([label, file]); + + END; + %?> + +<?% IF param.headingText %?> +<h1><?% param.headingText %?></h1> +<?% END %?> + +<?% FOREACH file = statusfiles %?> +<table class="editortable" summary=""> + <tr><td class="editorhead"><?% file.0 %?></td></tr> + <tr> + <td class="editortext" align="center"> + <img src="<?% file.1 %?>" alt="<?% file.0 %?>" /> + </td> + </tr> + <tr><td class="editorbottom"></td></tr> +</table> +<?% END %?> diff --git a/skins/stone_flat/mlcopy.tmpl b/skins/stone_flat/mlcopy.tmpl new file mode 120000 index 0000000..b15f879 --- /dev/null +++ b/skins/stone_flat/mlcopy.tmpl @@ -0,0 +1 @@ +mledit.tmpl
\ No newline at end of file diff --git a/skins/stone_flat/mldisplay.tmpl b/skins/stone_flat/mldisplay.tmpl new file mode 100644 index 0000000..42aa3ee --- /dev/null +++ b/skins/stone_flat/mldisplay.tmpl @@ -0,0 +1,195 @@ +<!--media display --> +<body class="frame"> +<div id="body"> + + +<?% f = data.shift; +id = f.0; +title = f.2; +subtitle = f.3; +language = f.4; +diskid = f.5 +comment = f.6; +year = f.9; +imgurl = f.10; +director = f.11; +runtime = f.13; +country = f.14; +plot = f.15; +filename = f.16; +filesize = f.17; +filedate = f.18; +audiocodec = f.19; +videocodec = f.20; +video_width = f.21; +video_height = f.22; +tvepisode = f.23; +seen = f.25; +%?> +<?% ######################################################################## %?> +<?% BLOCK item %?> +<?% IF value %?> + <a href="?cmd=mlsearch&__search&__selfields=<?% topic %?>&__searchitem=<?% value %?>"> + <?% value %?> + </a> +<?% END %?> +<?% END %?> +<?% ######################################################################## %?> +<h1><?% gettext("Media details for") %?>: <?% PROCESS item topic="title" value=title %?><?% IF subtitle %?> - <?% PROCESS item topic="subtitle" value=subtitle %?><?% END %?></h1> + <table class="largetable" summary=""> + <tr> + <td class="largehead"> + <font class="title"> + <?% PROCESS item topic="title" value=title %?><?% IF subtitle %?> - <?% PROCESS item topic="subtitle" value=subtitle %?><?% END %?> + </font> + </td> + </tr> + <tr> + <td class="largetext"> + <div class="media" style="float:left; margin:10px"> + <img class="media" src='<?% IF param.usecache == "y" %?>?cmd=mlcache&__source=<?% END %?><?% imgurl %?>'> + </div> + <div> + <table summary="" width="100%"> + <tr><th width="10%"> </th><th width="40%"> </th> + <th width="10%"> </th><th width="40%"> </th></tr> + + <tr><td><?% gettext("Year") %?>:</td><td><?% PROCESS item topic="year" value=year %?></td> + <td><?% gettext("Runtime") %?>:</td><td><?% IF runtime;runtime;END %?></td></tr> + <tr class="two"><td><?% gettext("Director") %?>:</td><td><?% PROCESS item topic="director" value=director %?></td> + <td><?% gettext("Language") %?>:</td><td><?% PROCESS item topic="language" value=language %?></td></tr> + <tr><td><?% gettext("Country") %?>:</td><td><?% PROCESS item topic="country" value=country %?></td> + <td><?% gettext("Mediatype") %?>:</td><td><?% PROCESS item topic="mediatype" value=param.mediatype %?></td></tr> + <tr class="two"><td><?% gettext("DiskID") %?>:</td><td><?% PROCESS item topic="diskid" value=diskid %?></td> + <td></td><td></td></tr> + <tr><td><?% gettext("TV-Episode") %?>:</td><td><input type=checkbox disabled="1" value="<?% tvepisode %?>" /></td> + <td><?% gettext("Seen") %?>:</td><td><input type=checkbox disabled="1" value="<?% seen %?>" /></td></tr> + + <tr class="two"><td><?% gettext("Filename") %?>:</td><td><?% IF filename;filename;END %?></td> + <td><?% gettext("Filesize") %?>:</td><td><?% IF filesize;filesize;END %?></td></tr> + <tr><td><?% gettext("Filedate") %?>:</td><td><?% IF filedate;filedate;END %?></td> + <td><?% gettext("Size") %?>:</td><td><?% IF video_width && video_width;video_width %?> x <?% video_width;END %?></td></tr> + + <tr class="two"><td><?% gettext("Audio Codec") %?>:</td><td><?% IF audiocodec;audiocodec;END %?></td> + <td><?% gettext("Video Codec") %?>:</td><td><?% IF videocodec;videocodec;END %?></td></tr> + +<?% IF param.genres_sel.0 %?> + <tr><td><?% gettext("Genres") %?>:</td><td colspan="3"> + <?% selection = param.genres_sel %?> + <?% genres = param.genres_all %?> + <?% FOREACH x = selection %?> + <?% genres.$x.name %?> + <?% END %?> + </td></tr> +<?% END %?> + + </table> + </div> + + </td> + </tr> +<tr><td class="largebottom"></td></tr> +</table> +<?% IF plot %?> +<table class="largetable" summary=""> + <tr> + <td class="largehead"> + <?% gettext("Plot") %?> + </td> + </tr> + <tr> + <td class="largetext"> + <?% plot %?> + </td> +</tr> +<tr><td class="largebottom"></td></tr> +</table> +<?% END %?> +<?% IF comment %?> +<table class="largetable" summary=""> + <tr> + <td class="largehead"> + <?% gettext("Comment") %?> + </td> + </tr> + <tr> + <td class="largetext"> + <?% comment %?> + </td> + </tr> + <tr><td class="largebottom"></td></tr> +</table> +<?% END %?> + +<?% IF param.actors.0.0 %?> + <table class="largetable" summary=""> + <tr> + <td class="largehead"> + <font class="title"> + <?% gettext("Actors") %?> + </font> + </td> + </tr> + <tr> + <td class="largetext"> + +<?% FOREACH zeile = param.actors %?> + <?% IF debug;"<!-- Item: ";FOREACH x = zeile;loop.count - 1;":";x.replace("-"," ");"|";END;"-->";END %?> + <?% actor = zeile.0;imgurl=zeile.1 %?> + <div style="float:left"> + <div class="actor"> + <img class="actor" src="?cmd=mlcache&__source=<?% imgurl %?>" alt="<?% actor %?>" /> + </div> + <div class="actortext"> + <?% PROCESS item topic="actors" value=actor %?> + </div> + </div> +<?% END %?> + </td> + </tr> + <tr><td class="largebottom"></td></tr> +</table> +<?% END %?> + +</div> +<!-- ###### Seite ###### --> +<div id="sidebar"> + <table summary=""> + <tr><td class="sidehead"><?% gettext("Media list",20) %?></td></tr> + <tr> + <td class="sidetext"> + <?% IF allow('mllist') %?> + <a title="<?% gettext("Back") %?>" href="?cmd=mllist&__range=<?% param.range %?>"><img src="images/back.<?% global.imagetyp %?>" alt="" /></a> + <a title="<?% gettext("Back") %?>" href="?cmd=mllist&__range=<?% param.range %?>"><?% gettext("Back",18) %?></a><br /> + <?% END %?> + + + <?% IF allow('mledit') %?> + <a title="<?% gettext("New") %?>" href="?cmd=mledit&__range=<?% param.range %?>"><img src="images/new.<?% global.imagetyp %?>" alt="" /></a> + <a title="<?% gettext("New") %?>" href="?cmd=mledit&__range=<?% param.range %?>"><?% gettext("New",18) %?></a><br /> + <?% END %?> + + <?% IF allow('mlcopy') %?> + <a title="<?% gettext("Copy") %?>" href="?cmd=mlcopy&data=<?% id %?>"><img src="images/new.<?% global.imagetyp %?>" alt="" /></a> + <a title="<?% gettext("Copy") %?>" href="?cmd=mlcopy&data=<?% id %?>"><?% gettext("Copy",18) %?></a><br /> + <?% END %?> + + <?% IF allow('mledit') %?> + <a title="<?% gettext("Edit") %?>" href="?cmd=mledit&data=<?% id %?>"><img src="images/edit.<?% global.imagetyp %?>" alt="" /></a> + <a title="<?% gettext("Edit") %?>" href="?cmd=mledit&data=<?% id %?>"><?% gettext("Edit",18) %?></a><br /> + <?% END %?> + + <?% IF allow('mldelete') %?> + <a href="javascript:surecmd('<?% gettext("You will delete this media") %?>','<?% escape(title) %?>','mldelete','<?% id %?>',620,670)"><img src="images/delete.<?% global.imagetyp %?>" alt="" /></a> + <a href="javascript:surecmd('<?% gettext("You will delete this media") %?>','<?% escape(title) %?>','mldelete','<?% id %?>',620,670)"><?% gettext("Delete",18) %?></a><br /> + <?% END %?> + + </td> + </tr> + <tr><td class="sidebottom"></td></tr> + </table> + + + <p id="sidefooter"> </p> +</div> +<?% INCLUDE header.inc %?> diff --git a/skins/stone_flat/mledit.tmpl b/skins/stone_flat/mledit.tmpl new file mode 100644 index 0000000..408e22c --- /dev/null +++ b/skins/stone_flat/mledit.tmpl @@ -0,0 +1,217 @@ +<!--media edit--> +<body class="frame"> +<div id="body"> + + +<h1><?% IF data.id %?><?% gettext("Edit media") %?><?% ELSE %?><?% gettext("Create new media") %?><?% END %?></h1>
+
+<form method="post" action="?cmd=mlresearch" name='library'>
+<input type="hidden" name="data" value="<?% IF data.id %?><?% data.id %?><?% ELSE %?><?% param.id %?><?% END %?>" />
+<input type="hidden" name="__range" value="<?% param.range %?>" />
+ <table class="largetable" summary=""> + <tr class="two"> + <td class="largehead"> + <font class="title"> + <?% title %?><?% IF subtitle %?> - <?% subtitle %?><?% END %?> + </font> + </td> + </tr> + <tr class="two"> + <td class="largetext"> + <table width="100%">
+ <tr>
+ <td>
+ <?% gettext('Title') %?>:
+ </td>
+ <td colspan="3">
+ <input type="text" name="__title" id="title" value="<?% data.title || param.title %?>" style="width:50%;" maxlength="255" />
+ <input type="submit" name="__search" value="<?% gettext('Search at') %?>" onfocus="document.library.cmd.value='mlresearch'" onblur="document.library.cmd.value='mlsave'" />
+ <input type="radio" name="__source" value="dvdpalace" checked="checked" />
+ <a href="http://www.dvd-palace.de" target="_blank">DVD-Palace (DE)</a>
+ </td>
+ </tr>
+ <tr class="two">
+ <td>
+ <?% gettext('Subtitle') %?>:
+ </td>
+ <td>
+ <input type="text" name="__subtitle" id="subtitle" value="<?% data.subtitle || param.subtitle %?>" style="width:99%;" maxlength="255" />
+ </td> + <td>
+ <?% gettext('Director') %?>:
+ </td>
+ <td>
+ <input type="text" name="__director" id="director" value="<?% data.director || param.director %?>" style="width:99%;" maxlength="255" />
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <?% gettext('Cover URL') %?>:
+ </td>
+ <td>
+ <input type="text" name="__imgurl" id="imgurl" value="<?% data.imgurl || param.imgurl %?>" style="width:99%;" maxlength="255" />
+ </td> + <td>
+ <?% gettext('DiskID') %?>:
+ </td>
+ <td>
+ <input type="text" name="__diskid" id="diskid" value="<?% data.diskid || param.diskid %?>" style="width:30%" maxlength="255" />
+ <input type="hidden" name="__id" id="id" value="<?% data.id || param.id %?>" style="width:30%" maxlength="255" />
+ <?% gettext('Mediatype') %?>
+ <select name="__mediatype">
+ <option label="" value="0" <?% IF (data.mediatype || param.mediatype) && (data.mediatype == 0 || param.mediatype == 0) %?>selected="selected"<?% END %?>></option>
+ <?% mediatypes = param.mediatypes %?>
+ <?% FOREACH type = mediatypes %?>
+ <option label="<?% type.1 %?>" value="<?% type.0 %?>" <?% IF data.mediatype == type.0 || param.mediatype == type.0 %?>selected="selected"<?% END %?>><?% type.1 %?></option>
+ <?% END %?>
+ </select>
+ </td> + </tr>
+ <tr class="two">
+ <td>
+ <?% gettext('Country') %?>:
+ </td>
+ <td>
+ <input type="text" name="__country" id="country" value="<?% data.country || param.country %?>" style="width:99%;" maxlength="255" />
+ </td>
+ <td>
+ <?% gettext('Language') %?>:
+ </td>
+ <td>
+ <input type="text" style="width:30%" maxlength="255" name="__language" id="language" value="<?% data.language || param.language %?>" />
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <?% gettext('TV-Episode') %?>:
+ </td>
+ <td>
+ <input type="checkbox" name="__istv" id="istv" value="<?% data.istv || param.istv %?>" /> +
+ <?% gettext('Seen') %?>:
+ <input type="checkbox" name="__seen" id="seen" value="<?% data.seen || param.seen %?>" />
+ </td>
+ <td>
+ <?% gettext('Runtime') %?>:
+ </td>
+ <td>
+ <input type="text" name="__runtime" id="runtime" value="<?% data.runtime || param.runtime %?>" style="width:30%" maxlength="5" />min
+
+ <?% gettext('Year') %?>:
+ <input type="text" name="__year" id="year" value="<?% data.year || param.year %?>" style="width:30%" maxlength="4" />
+ </td>
+ </tr>
+ <tr class="two">
+ <td>
+ <?% gettext('Filename') %?>:
+ </td>
+ <td>
+ <input type="text" name="__filename" id="filename" value="<?% data.filename || param.filename %?>" style="width:99%;" maxlength="255" />
+ </td>
+ <td>
+ <?% gettext('Size') %?>:
+ </td>
+ <td>
+ <input type="text" name="__video_width" id="video_width" value="<?% data.video_width || param.video_width %?>" style="width:30%" maxlength="4" /> x
+ <input type="text" name="__video_height" id="video_height" value="<?% data.video_height || param.video_height %?>" style="width:30%" maxlength="4" />
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <?% gettext('Filesize') %?>:
+ </td>
+ <td>
+ <input type="text" name="__filesize" id="filesize" value="<?% data.filesize || param.filesize %?>" style="width:30%" maxlength="15" /> bytes
+ </td>
+ <td>
+ <?% gettext('Filedate') %?>:
+ </td>
+ <td>
+ <input type="text" name="__filedate" id="filedate" value="<?% data.filedate || param.filedate %?>" style="width:30%" maxlength="20" />
+ </td>
+ </tr>
+ <tr class="two">
+ <td>
+ <?% gettext('Audio Codec') %?>:
+ </td>
+ <td>
+ <input type="text" name="__audio_codec" id="audio_codec" value="<?% data.audio_codec || param.audio_codec %?>" style="width:30%" />
+ </td>
+ <td>
+ <?% gettext('Video Codec') %?>:
+ </td>
+ <td>
+ <input type="text" name="__video_codec" id="video_codec" value="<?% data.video_codec || param.video_codec %?>" style="width:30%" />
+ </td>
+ </tr> + <tr>
+ <td>
+ <?% gettext('Plot') %?>:<br />
+ </td> + <td colspan="3">
+ <textarea style="width:99%;" rows="4" name="__plot" id="plot" wrap="virtual"><?% data.plot || param.plot %?></textarea>
+ </td> + </tr>
+ <tr class="two">
+ <td>
+ <?% gettext('Comment') %?>:<br />
+ </td> + <td colspan="3">
+ <textarea style="width:99%;" rows="4" name="__comment" id="comment" wrap="virtual"><?% data.comment || param.comment %?></textarea>
+ </td> + </tr>
+ <tr>
+ <td colspan="2"><?% gettext('Genre') %?>:
+ <br/>
+ <table class="genreselect" width="100%">
+ <?% genres = param.allgenres %?>
+ <?% WHILE genres.size %?>
+ <tr>
+ <?% FOREACH [ 1..5 ] %?>
+ <?% set = genres.shift %?>
+ <td nowrap="nowrap">
+ <?% IF set.first %?>
+ <input type="checkbox" name="__genres" id="<?% set.0 %?>" value="<?% set.0 %?>" <?% IF param.genres.grep("^$set.0\$").size > 0 %?>checked="checked"<?% END %?>/>
+ <label for="<?% set.0 %?>"><?% set.1 %?></label>
+ <?% END %?>
+ </td>
+ <?% END %?>
+ </tr>
+ <?% END %?>
+ </tr>
+ </table>
+ </td>
+ <td colspan="2">
+ <?% gettext('Actors') %?>:<br />
+ <textarea style="width:99%;" rows="6" name="__actors" id="actors" wrap="off"><?% data.actors || param.actors %?></textarea>
+ </td> + </tr> + <tr>
+ <td colspan="4" align="right"> + <input type="reset" value="<?% gettext("Reset") %?>" /> + <input type="submit" name="__save" value="<?% gettext('Apply') %?>" onblur="document.library.cmd.value='mlresearch'" onfocus="document.library.cmd.value='mlsave'" />
+ </td> + </tr>
+</table> + </td> +</tr> +<tr class="two"><td class="largebottom"></td></tr> +</table> +</form>
+ +</div> +<!-- ###### Seite ###### --> +<div id="sidebar"> + <table summary=""> + <tr><td class="sidehead"><?% gettext("Media list",20) %?></td></tr> + <tr> + <td class="sidetext"> + <a href="javascript:back()"><img src="images/back.<?% global.imagetyp %?>" alt="" title="<?% gettext("Back",20) %?>" /></a> + <a href="javascript:back()"><?% gettext("Back",20) %?></a><br /> + </td> + </tr> + <tr><td class="sidebottom"></td></tr> + </table> + <p id="sidefooter"> </p> +</div> +<?% INCLUDE header.inc %?> diff --git a/skins/stone_flat/mlimport.tmpl b/skins/stone_flat/mlimport.tmpl new file mode 120000 index 0000000..b15f879 --- /dev/null +++ b/skins/stone_flat/mlimport.tmpl @@ -0,0 +1 @@ +mledit.tmpl
\ No newline at end of file diff --git a/skins/stone_flat/mlist.tmpl b/skins/stone_flat/mlist.tmpl new file mode 100644 index 0000000..2ec6041 --- /dev/null +++ b/skins/stone_flat/mlist.tmpl @@ -0,0 +1,235 @@ +<!--mlist--> +<body class="frame"> +<div id="body"> +<?% USE date %?> +<?% ######################################################################## %?> +<?% total = 0 %?> +<?% BLOCK summe %?> + <?% + tt = playtime.split(':'); + IF tt.size == 3; + ts = (tt.0 * 3600) + (tt.1 * 60) + ( tt.2 ); + ELSIF tt.size == 2; + ts = (tt.0 * 60) + ( tt.1 ); + END; + total = total + ts; + %?> +<?% END %?> +<?% ######################################################################## %?> +<?% BLOCK printsumme %?> + <?% IF total > 0 %?> + <?% + sec = total mod 60; + min = total div 60 mod 60; + hour = total div 3600; + %?> + <p class="description" style="padding: 0; margin-left: <?% width %?>px;"><?% IF hour > 0 %?><?% hour FILTER format('%02d') %?>:<?% END %?><?% min FILTER format('%02d') %?>:<?% sec FILTER format('%02d')%?></p> + <?% END %?> +<?% END %?> +<?% ######################################################################## %?> +<?% BLOCK ItemAsFlat %?> + <tr valign="bottom" <?% ' class="two"' IF z mod 2 == 0 %?>> + <td class="fieldinline"> + <?% IF allow('mplay') %?> + <input class="push" type="checkbox" value="<?% id %?>" /> + <?% END %?> + </td> + <td class="fieldinline"> + <?% IF artist.length > 0 %?> + <a class="title" title="<?% gettext("Search") %?>" href="?cmd=ml&data=artist:<?% url(artist) %?>"> + <?% artist %?> + </a> + <?% END %?> + <?% IF title.length > 0 %?> + <a class="subtitle" title="<?% gettext("Search") %?>" href="?cmd=ml&data=title:<?% url(title) %?>"> + <?% title %?> + </a> + <?% END %?> + </td> + <td class="fieldinline push"> + <?% playtime %?> + <?% IF track != "" %?> (<?% track %?>)<?% END %?> + <?% IF allow('mgetfile') %?> + <a title="<?% gettext("Store selected song") %?>" href="?cmd=mgetfile&data=<?% id %?>&__binary=1"> + <img src="images/file.<?% global.imagetyp %?>" alt="" title="<?% gettext("Store selected song") %?>" /> + </a> + <?% END %?> + <?% IF allow('mplay') %?> + <a title="<?% gettext("Play selected songs") %?>" href="javascript:PlayMusic('<?% id %?>','<?% param.proxy %?>')"> + <img src="images/play.<?% global.imagetyp %?>" alt="" title="<?% gettext("Play selected songs") %?>" /> + </a> + <?% END %?> + </td> + </tr> +<?% END %?> +<?% ######################################################################## %?> +<?% BLOCK titleline %?> + <?% headlist = []; + smallist = []; + headlist.push(album) IF album.search('\S+'); + c=loop.count; + headlist.push(artist) IF artist.search('\S+') AND artist == data.$c.1; + smallist.push(genre) IF genre.search('\S+'); + smallist.push(year) IF year != 0; + %?> + <?% headlist.join(" - ") %?> + <small> + <?% " - " IF headlist.size > 0 AND smallist > 0; + smallist.join(" - "); + IF comment.search('\S+'); + " "; + cc = []; + cc.push("("); + cc.push(comment); + cc.push(")"); + cc.join(" "); + END; %?> + </small> +<?% END %?> +<?% ######################################################################## %?> +<!-- Musiclist --> +<h1><?% gettext("Music Library") %?></h1> +<?% IF data.size > 1%?> +<?% fields = data.shift %?> +<form name="mlist" action=""> + <?% FOREACH zeile = data %?> + <?% IF debug;"<!-- Item: ";FOREACH x = zeile;loop.count - 1;":";x.replace("-"," ");"|";END;"-->";END %?> + <?% id=zeile.0;artist=zeile.1;album=zeile.2;title=zeile.3;track=zeile.4;year=zeile.5;playtime=zeile.6;genre=zeile.7;comment=zeile.8 %?> + <?% IF !old.defined || album != old %?> + <?% IF old.defined %?> + </table> + </td> + </tr> + <tr><td class="largebottom"></td></tr> + </table> + <?% PROCESS printsumme width=780 %?> + <?% END %?> + <table class="largetable" summary=""> + <tr><td class="largehead"><?% PROCESS titleline %?></td></tr> + <tr> + <td class="largetext" align="left"> + <table summary="" width="100%"> + <?% z = 1 %?> + <tr height="0"><th width="20"></th><th></th><th width="125"></th></tr> + <tr> + <td align="right" colspan="3"> + <a class="title" title="<?% gettext("Search") %?>" href="?cmd=ml&data=album:<?% url(album) %?>"> + <img class="cover" src="?cmd=mcoverimage&data=<?% id %?>&__binary=1" alt="<?% album %?>" /> + </a> + </td> + </tr> + <?% END %?> + <?% PROCESS ItemAsFlat %?> + <?% PROCESS summe %?> + <?% old = album %?> + <?% z = z + 1 %?> + <?% END %?> + </table> + </td> + </tr> + <tr><td class="largebottom"></td></tr> + </table> + <?% PROCESS printsumme width=780 %?> +</form> +<?% END %?> +</div> +<!-- ###### Seite ###### --> +<div id="sidebar"> + <table summary=""> + <tr><td class="sidehead"><?% gettext("Music",20) %?></td></tr> + <tr> + <td class="sidetext"> + <form name="genreform" action=""> + <?% gettext("Genres",20) %?>:<br /> + <select name='genres' onchange="di('?cmd=ml&data=','genre:' + this.form.genres.options[this.form.genres.options.selectedIndex].value)">
+ <?% FOREACH ch = param.genres %?>
+ <option value="<?% url( ch.1 ) %?>"<?% ' selected="selected"' IF cgi.param('data').split(':').first == 'genre' && cgi.param('data').split(':').last == ch.1 %?>><?% ch.0 %?></option>
+ <?% END %?>
+ </select> + </form> +
+ <form name="artistform" action="" onsubmit="location.href = '?cmd=ml&data=' + 'artist:' + escape(document.artistform.data.value); return false"> + <?% gettext("Artists",20) %?>:<br /> + <input type="text" id="artisttext" name="data" alt="<?% gettext("Artists") %?>" + onkeyup="suggest('msuggest&__get=artist','artisttext','artistsuggest');" + <?% IF cgi.param('data').split(':').first == 'artist' %?>value="<?% cgi.param('data').split(':').last %?>"<?% END %?> + autocomplete="off" /> + <br /><div class="suggestbox" id="artistsuggest"></div> + </form> +
+ <form name="albumsform" action="" onsubmit="location.href = '?cmd=ml&data=' + 'album:' + escape(document.albumsform.data.value); return false"> + <?% gettext("Albums",20) %?>:<br /> + <input type="text" id="albumtext" name="data" alt="<?% gettext("Artists") %?>" + onkeyup="suggest('msuggest&__get=album','albumtext','albumsuggest');" + <?% IF cgi.param('data').split(':').first == 'album' %?>value="<?% cgi.param('data').split(':').last %?>"<?% END %?> + autocomplete="off" /> + <br /><div class="suggestbox" id="albumsuggest"></div> + </form> + + <form name="yearsform" action=""> + <?% gettext("Year",20) %?>:<br /> + <select name='years' onchange="di('?cmd=ml&data=','year:' + this.form.years.options[this.form.years.options.selectedIndex].value)">
+ <option value=""> </option> + <?% ch = date.format(date.now, '%Y', 'en_GB'); WHILE ch >= 1970; %?>
+ <option value="<?% url( ch ) %?>"<?% ' selected="selected"' IF cgi.param('data').split(':').first == 'year' && cgi.param('data').split(':').last == ch %?>><?% ch %?></option>
+ <?% ch = ch - 1; END %?>
+ </select> + </form> + <?% IF allow('mrefresh') %?> + <a title="<?% gettext("Update Music Database") %?>" href="javascript:popupcmd('mrefresh',620,120,1)"><img src="images/refresh.<?% global.imagetyp %?>" alt="" /></a> + <a title="<?% gettext("Update Music Database") %?>" href="javascript:popupcmd('mrefresh',620,120,1)"><?% gettext("Update Music Database",20) %?></a><br /> + <?% END %?>
+ <?% IF allow('mcovers') %?> + <a title="<?% gettext("Get new Covers") %?>" href="javascript:popupcmd('mcovers',620,120,1)"><img src="images/refresh.<?% global.imagetyp %?>" alt="" /></a> + <a title="<?% gettext("Get new Covers") %?>" href="javascript:popupcmd('mcovers',620,120,1)"><?% gettext("Get new Covers",18) %?></a><br /> + <?% END %?>
+ <!-- + Search: <input name='search' value='' /><input type='button' onclick="location.href = '/?cmd=ml&data=' + 'search:' + document.forms[0].search.value" value="Go" /> + --> + </td> + </tr> + <tr><td class="sidebottom"></td></tr> + </table> + <?% IF allow('mplay') %?> + <table summary=""> + <tr><td class="sidehead"><?% gettext("Select",20) %?></td></tr> + <tr> + <td class="sidetext"> + <a href="javascript:selAll(document.mlist,1)"><img src="images/select.<?% global.imagetyp %?>" alt="" /></a> + <a href="javascript:selAll(document.mlist,1)"><?% gettext("Select all",20) %?></a><br /> + <a href="javascript:selAll(document.mlist,0)"><img src="images/deselect.<?% global.imagetyp %?>" alt="" /></a> + <a href="javascript:selAll(document.mlist,0)"><?% gettext("Unselect all",20) %?></a><br /> + <a href="javascript:reverse(document.mlist)"><img src="images/invers.<?% global.imagetyp %?>" alt="" /></a> + <a href="javascript:reverse(document.mlist)"><?% gettext("Reverse select",20) %?></a><br /> + <a href="javascript:Play('<?% gettext("You have nothing selected!") %?>',document.mlist,'<?% param.proxy %?>')"> + <img src="images/play.<?% global.imagetyp %?>" alt="" title="<?% gettext("Play selected songs") %?>" /> + </a> + <a href="javascript:Play('<?% gettext("You have nothing selected!") %?>',document.mlist,'<?% param.proxy %?>')"> + <?% gettext("Play selected songs",20) %?> + </a> + </td> + </tr> + <tr><td class="sidebottom"></td></tr> + </table> + <?% END %?>
+ <table summary=""> + <tr><td class="sidehead"><?% gettext("Search",20) %?></td></tr> + <tr> + <td class="sidetext"> + <form method="post" action="?cmd=msearch" name="titleform"> + <input type="text" id="titletext" name="data" alt="<?% gettext("Search") %?>" + onkeyup="suggest('msuggest&__get=title','titletext','titlesuggest');" + <?% IF cgi.param('cmd')=='ms' || cgi.param('cmd')=='msearch' %?>value="<?% cgi.param('data')%?>"<?% END %?> + autocomplete="off" /> + <br /><div class="suggestbox" id="titlesuggest"></div> + </form> + + </td> + </tr> + <tr> + <td class="sidebottom"></td> + </tr> + </table> + <p id="sidefooter"> </p> +</div> +<?% INCLUDE header.inc %?> diff --git a/skins/stone_flat/mllist.tmpl b/skins/stone_flat/mllist.tmpl new file mode 100644 index 0000000..ad777ec --- /dev/null +++ b/skins/stone_flat/mllist.tmpl @@ -0,0 +1,113 @@ +<!--media list--> +<body class="frame"> +<div id="body"> +<?% ######################################################################## %?> +<?% BLOCK RowButtons %?> + <?% IF allow('mledit') %?> + <a href="?cmd=mledit&data=<?% id %?>"> + <img src="images/edit.<?% global.imagetyp %?>" alt="" title="<?% gettext("Edit media") %?>" /> + </a> + <?% END %?> + <?% IF allow('mldelete') %?> + <a href="javascript:surecmd('<?% gettext("You will delete this media") %?>','<?% escape(title) %?>','mldelete','<?% id %?>',620,670)"> + <img src="images/delete.<?% global.imagetyp %?>" alt="" title="<?% gettext("Delete media") %?>" /> + </a> + <?% END %?> +<?% END %?> +<?% ######################################################################## %?> +<?% BLOCK item %?> +<?% IF value %?> + <a href="?cmd=mlsearch&__search&__selfields=<?% topic %?>&__searchitem=<?% value %?>"> + <?% value %?> + </a> +<?% END %?> +<?% END %?> +<?% ######################################################################## %?> +<?% BLOCK ItemAsFlat %?> + <tr<?% ' class="two"' IF loop.count mod 2 == 0 %?>> + <td class="fieldinline"> + <div class="medialist"> + <a href="?cmd=mldisplay&data=<?% id %?>" class="fieldinline"> + <img class="medialist" alt="" src='<?% IF param.usecache == "y" %?>?cmd=mlcache&__source=<?% END %?><?% imgurl %?>' /> + </a> + </div> + </td> + <td class="fieldinline"> + <a href="?cmd=mldisplay&data=<?% id %?>" class="fieldinline"> + <font class="title"> + <?% title %?><br /> + + </font> + <font class="subtitle"> + <?% subtitle %?> ( <?% director %?> )<br /> + </font> + <?% IF global.hideDescription != 1 && description.length > 0 %?> + <font class="description"><?% chop(description,100,5) %?></font> + <?% END %?> + </a> + </td> + <td class="fieldinline push"> + <?% IF year > 0 %?> + <font class="description"><?% PROCESS item topic="year" value=year %?></font> + <?% END %?> + <br /> + <?% PROCESS RowButtons %?> + </td> + </tr> +<?% END %?> +<?% ######################################################################## %?> +<h1><?% gettext("Media list") %?></h1> +<form name="mlist" action=""> + <table class="largetable" summary=""> + <tr><td class="largehead"> </td></tr> + <tr> + <td class="largetext" align="left"> + <table summary="" width="100%"> + <tr height="0"><th width="60"></th><th></th><th width="64"></th></tr> + <?% FOREACH zeile = data %?> + <?% IF debug;"<!-- Item: ";FOREACH x = zeile;loop.count - 1;":";x.replace("-"," ");"|";END;"-->";END %?> + <?% id=zeile.0;imgurl=zeile.1;title=zeile.2;subtitle=zeile.3;year=zeile.4;director=zeile.5;description=zeile.6; %?> + <?% PROCESS ItemAsFlat %?> + <?% END %?> + </table> + </td> + </tr> + <tr><td class="largebottom"></td></tr> + </table> +</form> +</div> +<!-- ###### Seite ###### --> +<div id="sidebar"> + <table summary=""> + <tr><td class="sidehead"><?% gettext("Media list",20) %?></td></tr> + <tr> + <td class="sidetext"> + <?% IF allow('mledit') %?> + <a title="<?% gettext("New") %?>" href="?cmd=mledit&__range=<?% param.range %?>"><img src="images/new.<?% global.imagetyp %?>" alt="" /></a> + <a title="<?% gettext("New") %?>" href="?cmd=mledit&__range=<?% param.range %?>"><?% gettext("New",18) %?></a><br /> + <?% END %?> + </td> + </tr> + <tr><td class="sidebottom"></td></tr> + </table> + + <table summary=""> + <tr><td class="sidehead"><?% gettext("Search",20) %?></td></tr> + <tr> + <td class="sidetext"> + <form name="mediarange" action=""> + <select name='range' onchange="di('?cmd=mllist&__range=',this.form.range.options[this.form.range.options.selectedIndex].value)">
+ <?% FOREACH r = param.ranges %?>
+ <option value="<?% url( r.0 ) %?>"<?% ' selected="selected"' IF param.range == r.0 %?>><?% r.1 %?></option>
+ <?% END %?>
+ </select> + </form> + </td> + </tr> + <tr> + <td class="sidebottom"></td> + </tr> + </table> + <p id="sidefooter"> </p> +</div> +<?% INCLUDE header.inc %?> diff --git a/skins/stone_flat/mlresearch.tmpl b/skins/stone_flat/mlresearch.tmpl new file mode 100644 index 0000000..452b183 --- /dev/null +++ b/skins/stone_flat/mlresearch.tmpl @@ -0,0 +1,110 @@ +<!--media research --> +<body class="frame"> +<div id="body"> + +<h1> +<?% IF param.hitcount < 1 %?> +<?% gettext("Search result : None title found.") %?> +<?% ELSIF param.hitcount == 1 %?> +<?% gettext("Search result : One title found.") %?> +<?% ELSE %?> +<?% topic = gettext("Search results : %s titles found."); topic | replace('%s',param.hitcount) %?> +<?% END %?> +</h1>
+ + <table class="largetable" summary=""> + <tr><td class="largehead"> </td></tr> + <tr> + <td class="largetext" align="left"> + <table summary="" width="100%"> + <tr height="0"><th width="60"></th><th></th></tr> +<?% FOREACH zeile = data %?> + <?% IF debug;"<!-- Item: ";FOREACH x = zeile;loop.count - 1;":";x.replace("-"," ");"|";END;"-->";END %?> + <?% importurl = zeile.0;imgurl=zeile.1;title=zeile.2;description=zeile.3 %?> + <tr<?% ' class="two"' IF loop.count mod 2 == 0 %?>> + <td class="fieldinline"> + <div class="medialist"> + <a href="?cmd=mlimport&__import=<?% importurl %?>&__id=<?% param.id %?>&__range=<?% param.range %?>&__source=<?% param.source %?>">
+ <?% IF imgurl %?> + <img class="medialist" src="<?% imgurl %?>" alt="<?% title %?>" /> + <?% ELSE %?> + <img class="medialist" src="images/nocover.<?% global.imagetyp %?>" alt="<?% title %?>" /> + <?% END %?> + </a> + </div> + </td> + <td class="fieldinline"> + <a href="?cmd=mlimport&__import=<?% importurl %?>&__id=<?% param.id %?>&__range=<?% param.range %?>&__source=<?% param.source %?>">
+ <font class="title"> + <?% title %?> + </font> + </a> + <br /> + <div class="epgdescription"> + <a href="?cmd=mlimport&__import=<?% importurl %?>&__id=<?% param.id %?>&__range=<?% param.range %?>&__source=<?% param.source %?>">
+ <?% chop(description,35,3) %?> + </a> + </div> + </td> + </tr> +<?% END %?> + </table> + </td> + </tr> + <tr><td class="largebottom"></td></tr> + </table> + + + +</div> +<!-- ###### Seite ###### --> +<div id="sidebar"> + <table summary=""> + <tr><td class="sidehead"><?% gettext("Media list",20) %?></td></tr> + <tr> + <td class="sidetext"> + <a href="javascript:back()"><img src="images/back.<?% global.imagetyp %?>" alt="" title="<?% gettext("Back",20) %?>" /></a> + <a href="javascript:back()"><?% gettext("Back",20) %?></a><br /> + </td> + </tr> + <tr><td class="sidebottom"></td></tr> + </table> + +<?% pages = 20 %?> +<?% maximum = param.hitcount %?> +<?% IF maximum > pages %?> +<?% url = "?cmd=mlresearch&__source=${param.source}&__title=${param.title}&__start=" %?> +<?% offset = cgi.param('__start') %?> +<?% backpage = offset - pages %?> +<?% backpageenable = backpage >= 0 ? 1 : 0 %?> +<?% nextpage = offset + pages %?> +<?% nextpageenable = nextpage < maximum ? 1 : 0 %?> + +<?% BLOCK PAGES %?> + <?% IF enable %?><a href="<?% url %?><?% page %?>"><?% END %?> + <img src="images/<?% image %?>.<?% global.imagetyp %?>" alt="" title="<?% label %?>" /> + <?% "</a>" IF enable %?> + + <?% IF enable %?><a href="<?% url %?><?% page %?>"><?% END %?> + <?% IF !enable %?><font class="deactive"><?% END %?> + <?% label %?> + <?% IF !enable %?></font><?% END %?> + <?% "</a>" IF enable %?> + <br /> +<?% END %?> + <table summary=""> + <tr><td class="sidehead"><?% gettext("Page",20) %?> <?% ( offset div pages ) + 1 %?></td></tr> + <tr> + <td class="sidetext"> +<?% PROCESS PAGES page="0" enable=backpageenable image='home' label=gettext('First page',20) %?> +<?% PROCESS PAGES page=backpage enable=backpageenable image='back' label=gettext('Prior page',20) %?> +<?% PROCESS PAGES page=nextpage enable=nextpageenable image='forward' label=gettext('Next page',20) %?> + </td> + </tr> + <tr><td class="sidebottom"></td></tr> + </table> +<?% END %?> + + <p id="sidefooter"> </p> +</div> +<?% INCLUDE header.inc %?> diff --git a/skins/stone_flat/mlsave.tmpl b/skins/stone_flat/mlsave.tmpl new file mode 100644 index 0000000..64d3989 --- /dev/null +++ b/skins/stone_flat/mlsave.tmpl @@ -0,0 +1,43 @@ +<!--media save--> +<body class="frame"> +<div id="body"> +<h1><?% gettext("Media list") %?></h1> +<?% trimmed = data FILTER trim %?> +<?% IF data.size > 1 || trimmed != "" %?> +<table class="editortable" summary=""> + <tr><td class="editorhead"><div class="editorhead"> </div></td></tr> + <tr> + <td class="editortext" align="left"> + <?% IF data.size <= 0 %?> + <?% data %?> + <?% ELSE %?> + <table summary="" width="100%"> + <?% FOREACH zeile = data %?> + <tr<?% " class='two'" IF loop.count mod 2 == 0 %?>> + <td><?% zeile %?></td> + </tr> + <?% END %?> + </table> + <?% END %?> + </td> + </tr> + <tr><td class="editorbottom"></td></tr> +</table> +<?% END %?> + +</div> +<!-- ###### Seite ###### --> +<div id="sidebar"> + <table summary=""> + <tr><td class="sidehead"><?% gettext("Media list",20) %?></td></tr> + <tr> + <td class="sidetext"> + <a title="<?% gettext("Back") %?>" href="?cmd=mldisplay&data=<?% cgi.param('data') %?>"><img src="images/back.<?% global.imagetyp %?>" alt="" /></a> + <a title="<?% gettext("Back") %?>" href="?cmd=mldisplay&data=<?% cgi.param('data') %?>"><?% gettext("Back",18) %?></a><br /> + </td> + </tr> + <tr><td class="sidebottom"></td></tr> + </table> + <p id="sidefooter"> </p> +</div> +<?% INCLUDE header.inc %?> diff --git a/skins/stone_flat/mlsearch.tmpl b/skins/stone_flat/mlsearch.tmpl new file mode 120000 index 0000000..ef4636c --- /dev/null +++ b/skins/stone_flat/mlsearch.tmpl @@ -0,0 +1 @@ +mllist.tmpl
\ No newline at end of file diff --git a/skins/stone_flat/msearch.tmpl b/skins/stone_flat/msearch.tmpl new file mode 120000 index 0000000..86e9342 --- /dev/null +++ b/skins/stone_flat/msearch.tmpl @@ -0,0 +1 @@ +mlist.tmpl
\ No newline at end of file diff --git a/skins/stone_flat/network.tmpl b/skins/stone_flat/network.tmpl new file mode 100644 index 0000000..4683e7f --- /dev/null +++ b/skins/stone_flat/network.tmpl @@ -0,0 +1,132 @@ +<!-- Network Template --> +<?% IF ! global.bodyinc.defined;global.bodyinc = 1 %?> +<body class="frame"> +<?% INCLUDE status.inc %?> +<?% INCLUDE header.inc %?> +<div id="body"> +<?% END %?> +<?% + USE date; + statusfiles = []; + + FILTER null; + name = 'network_stat'; + timestamps = []; + FOREACH entry = param.stack.first.network; + iname = entry.first.split(':').first; + + rxbytes.${iname} = []; + txbytes.${iname} = []; + rxerror.${iname} = []; + txerror.${iname} = []; + + oldentry.${iname} = []; + END; + + FOREACH item = param.stack; + t = date.format(item.timestamp, '%H:%M:%S'); + timestamps.push(t); + + FOREACH entry = item.network; + iname = entry.first.split(':').first; + + UNLESS oldentry.${iname}.size; + oldentry.${iname} = entry; + END; + + bytes = entry.1 - oldentry.${iname}.1; + rxbytes.${iname}.push(bytes); + + bytes = entry.5 - oldentry.${iname}.5; + txbytes.${iname}.push(bytes); + + rxerror.${iname}.push(entry.3); + txerror.${iname}.push(entry.7); + oldentry.${iname} = entry; + END; + END; + + FOREACH iname = rxbytes.keys.sort; + + # Data ... + d = [ + timestamps, + rxbytes.${iname}, + rxerror.${iname}, + txbytes.${iname}, + txerror.${iname}, + ]; + + USE my_graph = GD.Graph.lines(575,300); + + # Xsteps + steps = param.stack.size div 5; + label = gettext('Traffic on Interface'); + y_label = gettext('Transfer in bytes'); + label = "${label} ${iname} (${y_label})"; + my_graph.set( + x_label_skip => steps, + x_long_ticks => 1, + + y_long_ticks => 1, + + line_width => 2, + box_axis => 1, + boxclr => '#FFFFCC', + fgclr => '#BBBBBB' + legend_placement => 'RD', + legend_spacing => 5, + ); + my_graph.set_title_font(param.font,10); + my_graph.set_y_label_font(param.font,10); + my_graph.set_x_label_font(param.font,10); + my_graph.set_x_axis_font(param.font,6); + my_graph.set_y_axis_font(param.font,6); + my_graph.set_legend( 'RxBytes', 'RxErrors', 'TxBytes', 'TxErrors'); + file = writefile("status_network_${iname}.gif", my_graph.plot(d).gif ); + statusfiles.push([label, file]); + + END; + END; + %?> + + +<?% IF param.headingText %?> +<h1><?% param.headingText %?></h1> +<?% END %?> + +<table class="editortable" summary=""> + <tr><td class="editorhead"> </td></tr> + <tr> + <td class="editortext"> + <table summary="" width="100%"> + <?% fields = data.shift %?> + <tr> + <?% FOREACH field = fields %?> + <th><?% field %?></th> + <?% END %?> + </tr> + <?% FOREACH zeile = data %?> + <tr<?% ' class="two"' IF loop.count mod 2 == 1 %?>> + <?% FOREACH field = zeile %?> + <td><?% field.replace('\n', '<br />') %?></td> + <?% END %?> + </tr> + <?% END %?> + </table> + </td> + </tr> + <tr><td class="editorbottom"></td></tr> +</table> + +<?% FOREACH file = statusfiles %?> +<table class="editortable" summary=""> + <tr><td class="editorhead"><?% file.0 %?></td></tr> + <tr> + <td class="editortext" align="center"> + <img src="<?% file.1 %?>" alt="<?% file.0 %?>" /> + </td> + </tr> + <tr><td class="editorbottom"></td></tr> +</table> +<?% END %?> diff --git a/skins/stone_flat/next.tmpl b/skins/stone_flat/next.tmpl new file mode 120000 index 0000000..dc903f9 --- /dev/null +++ b/skins/stone_flat/next.tmpl @@ -0,0 +1 @@ +now.tmpl
\ No newline at end of file diff --git a/skins/stone_flat/now.tmpl b/skins/stone_flat/now.tmpl new file mode 100644 index 0000000..256ad36 --- /dev/null +++ b/skins/stone_flat/now.tmpl @@ -0,0 +1,233 @@ +<!-- now --> +<?% USE date %?> +<body class="frame"> +<div id="body"> +<?% ######################################################################## %?> +<?% BLOCK dur %?> + <?% height=6;IF d >= 0 and d < 100;d = d div 1 %?> + <?% IF d >= 1 %?> + <img class="progressleft" src="images/blank.gif" width="<?% 100 - d %?>" height="<?% height %?>" alt="<?% 100 - d %?>%" /><img class="progressright" src="images/blank.gif" width="<?% d %?>" height="<?% height %?>" alt="" /> + <?% ELSE %?> + <img class="progress" src="images/blank.gif" width="100" height="<?% height %?>" alt="" /> + <?% END %?> + <?% END %?> +<?% END %?> +<?% ######################################################################## %?> +<?% BLOCK RowButtons %?> + <a href="?cmd=search&data=<?% ( title ) %?>"> + <img src="images/find.<?% global.imagetyp %?>" alt="" title="<?% gettext("Search for repeats") %?>" /> + </a> + <?% IF param.timers.${id} && allow('tedit') %?> + <a href="javascript:popup('tedit','<?% param.timers.${id}.Id %?>',620,670,1)"> + <img src="images/onoff.<?% global.imagetyp %?>" alt="" title="<?% gettext("Edit this Timer") %?>" /> + </a> + <?% ELSIF allow('tnew') %?> + <a href="javascript:popup('tnew','<?% id %?>',620,670,1)"> + <img src="images/record.<?% global.imagetyp %?>" alt="" title="<?% gettext("To record") %?>" /> + </a> + <?% END %?> +<?% END %?> +<?% ######################################################################## %?> +<?% BLOCK SetState %?> + <?% state = '' %?> + <?% IF param.runningTimer.exists(id) %?> + <?% state = "running" %?> + <?% ELSIF param.timers.exists(id) %?> + <?% UNLESS param.timers.${id}.Status %?> + <?% state = "deactive" %?> + <?% ELSE %?> + <?% state = "active" %?> + <?% END %?> + <?% END %?> +<?% END %?> +<?% ######################################################################## %?> +<?% BLOCK ItemAsFlat %?> + <?% PROCESS SetState %?> + <tr<?% ' class="two"' IF loop.count mod 2 == 0 %?>> + <td class="fieldinline"> + <?% IF allow('switch') %?> + <a href="javascript:post('switch','<?% channel %?>')"> + <img class="push" src="images/watch.<?% global.imagetyp %?>" alt="" title="<?% gettext("Switch") %?>" /> + </a> + <?% END %?> + <a href="?cmd=program&data=<?% channel %?>" title="<?% gettext("Program guide for") %?> <?% sender %?>"> + <font class="channel<?% IF state != "";" ";state;END %?>"><?% channel %?>. <?% chop(sender,20) %?></font></a> + </td> + <td class="fieldinline"> + <a href="javascript:popup('display','<?% id %?>',620,670,0)" class="fieldinline"> + <font class="title<?% IF state != "";" ";state;END %?>"><?% chop(title,45) %?></font> + <?% IF subtitle.length > 0 %?><font class="subtitle<?% IF state != "";" ";state;END %?>"> - <?% chop(subtitle,55) %?></font><?% END %?> + </a> + </td> + <td class="fieldinline<?% IF state != "";" ";state;END %?>" style="text-align:right"> + <?% IF vps && vps != start %?> (<?% gettext("VPS") %?>:<?% vps %?>) <?% END %?> + <?% start %?> - <?% stop %?> + </td> + <td class="fieldinline" style="white-space: nowrap"><?% PROCESS dur d=duration %?></td> + <td class="fieldinline push"> + <?% INCLUDE widgets/tooltip.inc cmd="display" eventid=id linkid=id ttp_offset=-300 %?> + <?% PROCESS RowButtons %?> + </td> + </tr> + <?% IF global.hideDescription != 1 && description.length > 0 %?> + <tr<?% ' class="two"' IF loop.count mod 2 == 0 %?>> + <td class="fieldinline" > </td> + <td class="fieldinline" colspan="5"> + <a href="javascript:popup('display','<?% id %?>',620,670,0)" class="fieldinline"> + <font class="description<?% IF state != "";" ";state;END %?>"><?% chop(description,100,1) %?></font> + </a> + </td> + </tr> + <?% END %?> +<?% END %?> +<?% ######################################################################## %?> +<?% + IF cgi.param('data') && cgi.param('data') > 100; + day = date.format(cgi.param('data'), '%A, %H:%M', locale); + time = date.format(cgi.param('data'), '%H:%M', locale); + ELSIF cgi.param('data') && param.zeit; + time = day = date.format(param.zeit, '%H:%M', locale); + ELSE; + day = date.format(date.now, '%H:%M', locale); + now = 1; + END; +%?> +<?% ######################################################################## %?> +<h1><?% IF cgi.param('cmd') == 'next' %?> + <?% gettext("What is running at next") %?> + <?% ELSIF now %?> + <?% gettext("What is running now") %?> + <?% ELSE %?> + <?% gettext("What is running at") %?> <?% day %?> + <?% END %?> +</h1> +<?% IF data.size > 1%?> +<?% fields = data.shift %?> + <table class="largetable" summary=""> + <tr> + <td class="largehead"> + <?% IF cgi.param('cmd') == 'next' %?> + <?% gettext("Next") %?> + <?% ELSIF now %?> + <?% gettext("Running now") %?> + <?% ELSE %?> + <?% day %?> + <?% END %?> + </td> + </tr> + <tr> + <td class="largetext" align="left"> + <table summary="" width="100%"> + <tr><th width="150"></th><th></th><th width="140"></th><th width="110"></th><th width="40"></th></tr> + <?% FOREACH zeile = data %?> + <?% IF debug;"<!-- Item: ";FOREACH x = zeile;loop.count - 1;":";x.replace("-"," ");"|";END;"-->";END %?> + <?% id=zeile.0;title=zeile.1;subtitle=zeile.2;sender=zeile.3;channel=zeile.4;group=zeile.5;start=zeile.6;stop=zeile.7;description=zeile.8;duration=zeile.9;vps=zeile.10 %?> + <?% IF old.defined && group != old %?> + </table> + </td> + </tr> + <tr><td class="largebottom"></td></tr> + </table> + <table class="largetable" summary=""> + <tr><td class="largehead"><?% group %?></td></tr> + <tr> + <td class="largetext" align="left"> + <table summary="" width="100%"> + <tr><th width="150"></th><th></th><th width="75"></th><th width="110"></th><th width="40" align="right"></th></tr> + <?% END %?> + <?% PROCESS ItemAsFlat %?> + <?% old = group %?> + <?% END %?> + </table> + </td> + </tr> + <tr><td class="largebottom"></td></tr> + </table> +<?% END %?> +</div> +<!-- ###### Seite ###### --> +<div id="sidebar"> + <table summary=""> + <tr><td class="sidehead"><?% gettext("What is running at",20) %?></td></tr> + <tr> + <td class="sidetext"> + <form action=""> + <select name="cgroups" onchange="di('?cmd=<?% cgi.param('cmd') %?>&data=<?% cgi.param('data') %?>&__cgrp=',this.form.cgroups.options[this.form.cgroups.options.selectedIndex].value)"> + <?% FOREACH cgrp = param.cgroups %?> + <option value="<?% cgrp.last %?>"<?% ' selected="selected"' IF param.channelgroup == cgrp.last %?>><?% cgrp.first %?></option> + <?% END %?> + </select> + </form> + + <a href="?cmd=now&__cgrp=<?% cgi.param('__cgrp') %?>"><img src="images/forward.<?% global.imagetyp %?>" alt="" title="<?% gettext("Running now") %?>" /></a> + <a href="?cmd=now&__cgrp=<?% cgi.param('__cgrp') %?>"><?% gettext("Running now",20) %?></a><br /> + <a href="?cmd=next&__cgrp=<?% cgi.param('__cgrp') %?>"><img src="images/forward.<?% global.imagetyp %?>" alt="" title="<?% gettext("Next") %?>" /></a> + <a href="?cmd=next&__cgrp=<?% cgi.param('__cgrp') %?>"><?% gettext("Next",20) %?></a><br /> + <a href="?cmd=sch<?% IF param.zeit && cgi.param('cmd') != 'next' && now != 1;"&data=";param.zeit;END;%?>&__cgrp=<?% cgi.param('__cgrp') %?>"> + <img alt="" src="images/forward.<?% global.imagetyp %?>" title="<?% gettext("Schema") %?>" /></a> + <a href="?cmd=sch<?% IF param.zeit && cgi.param('cmd') != 'next' && now != 1;"&data=";param.zeit;END;%?>&__cgrp=<?% cgi.param('__cgrp') %?>"> + <?% gettext("Schema",20) %?><?% IF param.zeit && cgi.param('cmd') != 'next' && now != 1;" ";day;END;%?></a><br /><br /> + <form method="post" action="?cmd=now"> + <input type="text" name="data" value="<?% IF time.defined %?><?% time %?><?% ELSE %?>20:15<?% END %?>" size="18" /> + <input type="hidden" name="__cgrp" value="<?% cgi.param('__cgrp') %?>" /> + </form> + <form action=""> + <select size="5" name='data' onchange="di('?cmd=now&__cgrp=<?% cgi.param('__cgrp') %?>&data=',this.form.data.options[this.form.data.options.selectedIndex].value)"> + <?% today = [] %?> + <?% tomor = [] %?> + <?% FOREACH zeit = param.periods.split(','); %?> + <?% tom = 0 %?> + <?% PERL %?> + use Date::Manip; + my $z; + $z = UnixDate(ParseDate($stash->{zeit}),"%s") || 0; + if($z and $z < time) { + $z += 86400; + $stash->set('tom', 1); + } + $stash->set('z', $z); + <?% END %?> + <?% NEXT UNLESS z; + IF tom; + tomor.push(z); + ELSE; + today.push(z); + END %?> + <?% END %?> + <?% FOREACH z = today %?><option value="<?% z %?>"><?% date.format(z, "%H:%M", locale) %?></option><?% END %?> + <?% FOREACH z = tomor %?><option value="<?% z %?>"><?% date.format(z, "%H:%M (%a)", locale) %?></option><?% END %?> + </select> + </form> + </td> + </tr> +<?% IF allow('erestart') %?> + <tr> + <td class="sidetext"> + <a title="<?% gettext("Reload EPG data") %?>" href="javascript:popupcmd('erestart',620,670,1)"><img src="images/refresh.<?% global.imagetyp %?>" alt="" /></a> + <a title="<?% gettext("Reload EPG data") %?>" href="javascript:popupcmd('erestart',620,670,1)"><?% gettext("Reload EPG data",20) %?></a> + </td> + </tr> +<?% END %?> + <tr> + <td class="sidebottom"></td> + </tr> + </table> + <table summary=""> + <tr><td class="sidehead"><?% gettext("Search",20) %?></td></tr> + <tr> + <td class="sidetext"> + <form method="post" action="?cmd=search" name="searchform"> + <input type="text" id="epgtext" name="data" alt="<?% gettext("Search") %?>" + onkeyup="suggest('esuggest','epgtext','epgsuggest');" + autocomplete="off" /> + <br /><div class="suggestbox" id="epgsuggest"></div> + </form> + </td> + </tr> + <tr> + <td class="sidebottom"></td> + </tr> + </table> + <p id="sidefooter"> </p> +</div> +<?% INCLUDE header.inc %?> diff --git a/skins/stone_flat/print.css b/skins/stone_flat/print.css new file mode 100644 index 0000000..b05ec4d --- /dev/null +++ b/skins/stone_flat/print.css @@ -0,0 +1,8 @@ +body.frame { +margin:0; +padding:0; +} + +.push,#logo,#logo a img,#header,#headerNav,a.headerNav:active,a.headerNav:link,a.headerNav:visited,a.headerNav:hover,#sidebar,#sidebar input,#sidebar select,#shutter { +display:none; +} diff --git a/skins/stone_flat/program.tmpl b/skins/stone_flat/program.tmpl new file mode 100644 index 0000000..41e68d6 --- /dev/null +++ b/skins/stone_flat/program.tmpl @@ -0,0 +1,225 @@ +<!-- program --> +<?% USE date %?> +<body class="frame"> +<div id="body"> +<?% ######################################################################## %?> +<?% BLOCK dur %?> + <?% height=6;d = d div 1 ; IF d >= 0 and d <= 100 %?> + <?% IF d >= 1 %?> + <img class="progressleft" src="images/blank.gif" width="<?% 100 - d %?>" height="<?% height %?>" alt="<?% 100 - d %?>%" /><img class="progressright" src="images/blank.gif" width="<?% d %?>" height="<?% height %?>" alt="" /> + <?% ELSE %?> + <img class="progress" src="images/blank.gif" width="100" height="<?% height %?>" alt="" /> + <?% END %?> + <?% END %?> +<?% END %?> +<?% ######################################################################## %?> +<?% BLOCK RowButtons %?> + <a href="?cmd=search&data=<?% url( title ) %?>"> + <img src="images/find.<?% global.imagetyp %?>" alt="" title="<?% gettext("Search for repeats") %?>" /> + </a> + <?% IF param.timers.${id} && allow('tedit') %?> + <a href="javascript:popup('tedit','<?% param.timers.${id}.Id %?>',620,670,1)"> + <img src="images/onoff.<?% global.imagetyp %?>" alt="" title="<?% gettext("Edit this Timer") %?>" /> + </a> + <?% ELSIF allow('tnew') %?> + <a href="javascript:popup('tnew','<?% id %?>',620,670,1)"> + <img src="images/record.<?% global.imagetyp %?>" alt="" title="<?% gettext("To record") %?>" /> + </a> + <?% END %?> +<?% END %?> +<?% ######################################################################## %?> +<?% BLOCK SetState %?> + <?% state = '' %?> + <?% IF param.runningTimer.exists(id) %?> + <?% state = "running" %?> + <?% ELSIF param.timers.exists(id) %?> + <?% UNLESS param.timers.${id}.Status %?> + <?% state = "deactive" %?> + <?% ELSE %?> + <?% state = "active" %?> + <?% END %?> + <?% END %?> +<?% END %?> +<?% ######################################################################## %?> +<?% BLOCK ItemAsFlat %?> + <?% PROCESS SetState %?> + <tr<?% ' class="two"' IF z mod 2 == 0 %?>> + <td class="fieldinline<?% IF state != "";" ";state;END %?>"><?% start %?> - <?% stop %?> + <?% IF vps && vps != start %?> (<?% gettext("VPS") %?>:<?% vps %?>) <?% END %?> + </td> + <td class="fieldinline"> + <a id="E<?% id %?>" href="javascript:popup('display','<?% id %?>',620,670,0)" class="fieldinline"> + <font class="title<?% IF state != "";" ";state;END %?>"><?% chop(title,45) %?></font> + <?% IF subtitle.length > 0 %?><font class="subtitle<?% IF state != "";" ";state;END %?>"> - <?% chop(subtitle,55) %?></font><?% END %?> + </a> + </td> + <td class="fieldinline push"> + <?% INCLUDE widgets/tooltip.inc cmd="display" eventid=id linkid=id ttp_offset=-300 %?> + <?% PROCESS RowButtons %?> + </td> + </tr> + <?% IF global.hideDescription != 1 && description.length > 0 %?> + <tr<?% ' class="two"' IF z mod 2 == 0 %?>> + <td class="fieldinline" > </td> + <td class="fieldinline" colspan="3"> + <a href="javascript:popup('display','<?% id %?>',620,670,0)" class="fieldinline"> + <font class="description<?% IF state != "";" ";state;END %?>"><?% chop(description,100,1) %?></font> + </a> + </td> + </tr> + <?% END %?> +<?% END %?> +<?% ###################################################################################### + channelpos=0;priorchannel=0;nextchannel=0;priortitle="";nexttitle=""; + FOREACH ch = param.channels; + IF cgi.param('data') == ch.1 || cgi.param('data') == ch.0 || param.current == ch.1; + channel = ch.0; + channelpos = ch.1; + ELSE; + IF channelpos==0; + priorchannel=ch.1; + priortitle=ch.0; + END; + END; + IF channelpos!=0 && channelpos != ch.1 && nextchannel==0; + nextchannel=ch.1; + nexttitle=ch.0; + LAST; + END; + END; +%?> +<h1><?% gettext("Program guide for") %?> <?% channel %?></h1> +<?% IF data.size > 1 %?> +<?% fields = data.shift %?> + <?% z = 0 %?> + <?% FOREACH zeile = data %?> + <?% IF debug;"<!-- Item: ";FOREACH x = zeile;loop.count - 1;":";x.replace("-"," ");"|";END;"-->";END %?> + <?% id=zeile.0;title=zeile.1;subtitle=zeile.2;start=zeile.3;stop=zeile.4;description=zeile.6;video=zeile.7;audio=zeile.8;vps=zeile.9 %?> + <?% day = date.format(zeile.5, "%A, %x", locale) %?> + <?% IF !old.defined || day != old %?> + <?% IF old.defined %?> + </table> + </td> + </tr> + <tr><td class="largebottom"></td></tr> +</table> + <?% END %?> +<table class="largetable" summary=""> + <tr><td class="largehead"><?% day %?></td></tr> + <tr> + <td class="largetext" align="left"> + <table summary="" width="100%"> + <?% z = 1 %?> + <tr><th width="140"></th><th></th><th width="40" align="right"></th></tr> + <?% END %?> + <?% old = day %?> + <?% PROCESS ItemAsFlat %?> + <?% z = z + 1 %?> + <?% END %?> + </table> + </td> + </tr> + <tr><td class="largebottom"></td></tr> +</table> +<?% END %?> +</div> +<!-- ###### Seite ###### --> +<div id="sidebar"> +<?% IF allow('switch') || allow('livestream') %?> + <table summary=""> + <tr><td class="sidehead"><?% chop(channel,20) %?></td></tr> + <tr> + <td class="sidetext"> + <?% IF allow('switch') %?> + <a href="javascript:post('switch','<?% channelpos %?>')"><img src="images/watch.<?% global.imagetyp %?>" alt="" title="<?% gettext("Switch") %?>" /></a> + <a href="javascript:post('switch','<?% channelpos %?>')"><?% gettext("Switch") %?></a><br /> + <?% END %?> + <?% IF allow('livestream') %?> + <a href="?cmd=livestream&data=<?% channelpos %?>')"><img src="images/play.<?% global.imagetyp %?>" alt="" title="<?% gettext("Livestream") %?>" /></a> + <a href="?cmd=livestream&data=<?% channelpos %?>"><?% gettext("Livestream") %?></a> + <?% END %?> + </td> + </tr> + <tr> + <td class="sidebottom"></td> + </tr> + </table> +<?% END %?> + <table summary=""> + <tr><td class="sidehead"><?% gettext("Select",20) %?></td></tr> + <tr> + <td class="sidetext"> + <form action=""> + <select size="15" name="data" onchange="di('?cmd=program&data=',this.form.data.options[this.form.data.options.selectedIndex].value)"> + <?% FOREACH ch = param.channels %?> + <option value="<?% ch.1 %?>"<?% ' selected="selected"' IF channelpos == ch.1 %?>><?% ch.0 %?></option> + <?% END %?> + </select> + </form> + <?% ####################################################################### %?> +<?% BLOCK ChannelItem %?> + <?% IF chpos != 0 %?> + <a href="?cmd=program&data=<?% chpos %?>"> + <img src="images/<?% image %?>.<?% global.imagetyp %?>" alt="" title="<?% label %?>" /> + </a> + + <a href="?cmd=program&data=<?% chpos %?>"> + <?% chop(label,20) %?> + </a> + <?% ELSE %?> + <img src="images/<?% image %?>.<?% global.imagetyp %?>" alt="" title="" /> + + <font class="deactive"> + <?% gettext("No channel defined!",20) %?> + </font> + <?% END %?> + <br /> +<?% END %?> + <?% PROCESS ChannelItem chpos=priorchannel image='home' label=priortitle %?> + <?% PROCESS ChannelItem chpos=nextchannel image='down' label=nexttitle %?> + <?% ####################################################################### %?> + </td> + </tr> + <tr> + <td class="sidebottom"></td> + </tr> + </table> +<?% IF allow('cedit') %?> + <table summary=""> + <tr><td class="sidehead"><?% gettext("Channels",20) %?></td></tr> + <tr> + <td class="sidetext"> + <a href="?cmd=clist<?% IF id > 0 %?>#<?% channelpos %?><?% END %?>"> + <img src="images/edit.<?% global.imagetyp %?>" alt="" title="<?% gettext("Edit channels") %?>" /> + </a> + + <a href="?cmd=clist<?% IF id > 0 %?>#<?% channelpos %?><?% END %?>"> + <?% gettext("Edit channels",20) %?> + </a> + </td> + </tr> + <tr> + <td class="sidebottom"></td> + </tr> + </table> +<?% END %?> + <table summary=""> + <tr><td class="sidehead"><?% gettext("Search on Channel",15) %?> (<?% chop(channel,7) %?>)</td></tr> + <tr> + <td class="sidetext"> + <form method="post" action="?cmd=search" name="searchform"> + <input type="hidden" name="__channel" value="<?% channelpos %?>" /> + <input type="text" id="epgtext" name="data" alt="<?% gettext("Search") %?>" + onkeyup="suggest('esuggest&__channel=<?% channelpos %?>','epgtext','epgsuggest');" + autocomplete="off" /> + <br /><div class="suggestbox" id="epgsuggest"></div> + </form> + </td> + </tr> + <tr> + <td class="sidebottom"></td> + </tr> + </table> + <p id="sidefooter"> </p> +</div> +<?% INCLUDE header.inc %?> diff --git a/skins/stone_flat/quest.js b/skins/stone_flat/quest.js new file mode 120000 index 0000000..ab693f2 --- /dev/null +++ b/skins/stone_flat/quest.js @@ -0,0 +1 @@ +../stone/quest.js
\ No newline at end of file diff --git a/skins/stone_flat/rdisplay.tmpl b/skins/stone_flat/rdisplay.tmpl new file mode 100644 index 0000000..17abea2 --- /dev/null +++ b/skins/stone_flat/rdisplay.tmpl @@ -0,0 +1,244 @@ +<!-- rdisplay --> +<?%- IF data.Type == 'RADIO'; + files = "images/audio.${global.imagetyp}"; + ELSIF param.previews.size <= 0; + files = "images/movie.${global.imagetyp}"; + ELSE; + files = param.previews; + END; +-%?> + +<?% IF ! global.bodyinc.defined;global.bodyinc = 1 %?> +<?% IF files.size > 3 %?> +<script language="javascript" type="text/javascript"> +<!-- + window.onload = initslide; +--> +</script> +<?% END %?> +<body class="hilfsframed"> +<div> +<?% END %?> +<?% USE date %?> +<?% title=data.Title;subtitle=data.SubTitle %?> +<?% ######################################################################## %?> +<?% BLOCK dur # d in Sekunden %?> +<?% IF d > 1 %?> + <?% Stunden = d div 3600 %?> + <?% Minuten = d div 60 mod 60 %?> + <?% Sekunden = d mod 60 %?> + <br /><?% gettext("Duration") %?>: <?% Stunden div 1 %?>:<?% Minuten | format('%02d') %?>:<?% Sekunden | format('%02d') %?> +<?% END %?> +<?% END %?> +<?% ######################################################################## %?> +<?% BLOCK image %?> +<?% IF files.size %?> + <div id="slideframe"> + <?% IF files.size > 3 %?>
+ <div id="slideleft"><img src="images/back.<?% global.imagetyp %?>" title="<?% gettext("Back") %?>" alt="" /></div>
+ <div id="slideright"><img src="images/forward.<?% global.imagetyp %?>" title="<?% gettext("Next") %?>" alt="" /></div> + <?% END %?>
+ <div id="slidelist" style="left:<?% IF files.size <= 3 %?><?% 280 - (160 * ( files.size / 2 ) ) %?><?% ELSE %?>0<?% END %?>px; width:<?% files.size * 200 %?>px;" >
+ <?% FOREACH f = files %?> + <img class="recorddetails" src="<?% f %?>" alt="" /> + <?% END %?> + <div id="slideend"></div>
+ </div>
+ </div>
+<?% END %?> +<?% END %?> + +<?% quest=data.Title;IF data.SubTitle.length > 0;quest=data.SubTitle;END %?> +<?% ######################################################################## %?> +<?% BLOCK RowButtons %?> +<div align="right"> + <a target="_blank" href="http://german.imdb.com/find?s=tt&site=aka&q=<?% quest %?>"> + <img src="images/imdb.<?% global.imagetyp %?>" title="<?% gettext("Search with IMDb") %?>" alt="IMDb" /> + </a> + <a target="_blank" href="http://www.ofdb.de/view.php?page=suchergebnis&Kat=Titel&SText=<?% quest %?>"> + <img src="images/ofdb.<?% global.imagetyp %?>" title="<?% gettext("Search with OFDb") %?>" alt="OFDb" /> + </a> + <?% IF global.playbackmode == 0 %?> + <?% IF allow('stream') %?> + <a href="?cmd=stream&data=<?% id %?>"> + <img src="images/play.<?% global.imagetyp %?>" alt="" title="<?% gettext("Watch recording") %?>" /> + </a> + <?% END %?> + <?% ELSIF global.playbackmode == 1 %?> + <?% IF allow('playrecord') %?> + <a href="?cmd=playrecord&data=<?% id %?>"> + <img src="images/play.<?% global.imagetyp %?>" alt="" title="<?% gettext("Watch recording") %?>" /> + </a> + <?% END %?> + <?% ELSIF global.playbackmode == 2 %?> + <?% IF allow('rplay') %?> + <a href="?cmd=rplay&data=<?% id %?>"> + <img src="images/play.<?% global.imagetyp %?>" alt="" title="<?% gettext("Watch recording") %?>" /> + </a> + <?% END %?> + <?% END %?> + <?% IF allow('rcut') %?> + <a href="?cmd=rcut&data=<?% id %?>"> + <img src="images/cut.<?% global.imagetyp %?>" alt="" title="<?% gettext("Cut recording") %?>" /> + </a> + <?% END %?> + <?% IF allow('redit') %?> + <a href="?cmd=redit&data=<?% id %?>"> + <img src="images/edit.<?% global.imagetyp %?>" alt="" title="<?% gettext("Edit recording") %?>" /> + </a> + <?% END %?> + <?% IF allow('rdelete') %?> + <a href="javascript:sure('<?% gettext("You will delete this recording") %?> : \'<?% escape(title) %?>\' ?','?cmd=rdelete&data=<?% id %?>')"> + <img src="images/delete.<?% global.imagetyp %?>" alt="" title="<?% gettext("Delete recording") %?>" /> + </a> + <?% END %?> +</div> +<?% END %?> +<?% ######################################################################## %?> +<?% BLOCK marks # (c) xpix %?> + <?% width = 450 #data.Duration > 7200 ? 600 : 500 %?> + <table width="<?% width %?>" align="center" summary=""> + <tr> + <?%- c = 0; + colspan = 0; + IF data.Duration>(45*60); + abstand = (15 * 60); + ELSIF data.Duration>(30*60); + abstand = (5 * 60); + ELSE; #data.Duration>(10*60); + abstand = (((data.Duration * 10 ) div 10 ) div 5); + END; + IF abstand <= 1; abstand = 1; END; + range = ( data.Duration div abstand ) * abstand ; + IF range < abstand ; abstand = ( ( range div 60 ) + 1) * 60 ; END; + WHILE c < range; + c = c + abstand; + percent = ( data.Duration / abstand ) * width; + colspan = colspan + 1; + Stunden = c div 3600; + Minuten = c div 60 mod 60 -%?> + <td width="<?% offset = (c % 3600 ? 1 : 2);(percent - offset) div 1 %?>" align='right'> + <font size='1'><?% Stunden | format('%02d') %?>:<?% Minuten | format('%02d') %?></font> + </td> + <?% END %?> + </tr> + <tr> + <?% c = 0 %?> + <?% abstand = abstand / 3 %?> + <td colspan="<?% colspan %?>" style="white-space: nowrap"> + <?%- WHILE c < range -%?><?%- c = c + abstand; percent = (abstand / data.Duration) * width -%?><img src="images/blank.gif" width="<?% offset = (c % 3600 ? 1 : 2);(percent - offset) div 1 %?>" height='10' /><img style="background:<?% c % 900 ? "gray" : "black" %?>" src="images/blank.gif" width="<?% c % 3600 ? "1" : "2" %?>" height='<?% (c % 900 ? "5" : "10") %?>' /><?%- END -%?> + </td> + </tr> + <tr> + <td colspan="<?% colspan %?>" style="white-space: nowrap"> + <?%- secold = 0; + c = -1; + ml = d.split(','); + -%?> + <?% IF ml.size > 1 %?> + <?%- + FOREACH marker = ml; + b = c; + c = c + 1; + m = marker.split(':'); + sec = m.0 * 3600; + sec = sec + m.1 * 60; + sec = sec + m.2; + percent = ((sec-secold) / data.Duration) * width; + -%?><?% IF c == 0 %?> + <?% class = "marksleft" %?> + <?% ELSE %?> + <?% class = (class == 'marksright2' ? 'marksright1' : 'marksright2'); %?> + <?% END %?><img class="<?% class %?>" src="images/blank.gif" width="<?% ( percent - 1 ) div 1 %?>" height="12" title="<?% (b < 0 ? "0:00:00.00" : ml.$b) %?> - <?% ml.$c %?>" /> + <?%- secold = sec; + END; + IF data.Duration > secold; + class = (class == 'marksright2' ? 'marksright1' : 'marksright2'); + percent = ((data.Duration - secold) / data.Duration) * width; + -%?><img class="<?% class %?>" src="images/blank.gif" width="<?% ( percent - 1 ) div 1 %?>" height="12" title="<?% (c < 0 ? "0:00:00.00" : ml.$c) %?> - <?% data.Duration div 3600 %?>:<?% data.Duration div 60 mod 60 | format('%02d') %?>:<?% data.Duration mod 60 | format('%02d') %?>" /> + <?% END %?> + <?% ELSE %?> + <img class="marksleft" src="images/blank.gif" width="0" height="12" /><img class="marksright2" src="images/blank.gif" width="<?% width %?>" height="12" /> + <?% END %?> + </td> + </tr> + </table> +<?% END %?> +<?% ######################################################################## %?> +<table class="editortable" summary=""> + <tr> + <td class="editorhead title"> + <div class="editorhead" style="float:left;"> + <?% IF data.New %?><img src="images/new.<?% global.imagetyp %?>" alt="" title="<?% gettext("New recording") %?>" /><?% END %?> + <font class="title"><?% title %?></font> + <?% IF subtitle.length > 0 %?><font class="subtitle"> ~ <?% subtitle %?></font><?% END %?> + </div> + <?% INCLUDE shutter.inc %?> + </td> + </tr> + <tr> + <td class="editortext"> + <table width="100%" summary="" > + <tr> + <td valign="top" align="center"> + <?% PROCESS image %?> + </td> + </tr> + <tr> + <td> + <table width="100%" summary="" > + <tr> + <td> + <?% date.format(data.StartTime,"%A, %x",locale) %?> + <?% date.format(data.StartTime,"%H:%M",locale) %?> - <?% date.format(data.StopTime,"%H:%M",locale) %?> + <?% PROCESS dur d=data.Duration %?> + <?% IF data.Channel %?> + <br /><?% gettext('Channel') %?> : <?% data.Channel %?> + <?% END %?> + </td> + <td class="push"> + <?% IF allow('rconvert') && param.reccmds.size > 0 %?> + <p> + <form action=""> + <select name='data' onchange="di('?cmd=rconvert&data=',this.form.data.options[this.form.data.options.selectedIndex].value)"> + <option value='0'><?% gettext("Choose an action for this recording") %?>...</option> + <?% FOREACH cmd = param.reccmds %?> + <option value='<?% loop.count %?>_<?% data.RecordId %?>'><?% cmd.split(':').first %?></option> + <?% END %?> + </select> + </form> + </p> + <?% END %?> + </td> + </tr> + <tr> + <td colspan="2"> + <p> +<?% data.Description %?> + </p> + </td> + </tr> + <tr> + <td colspan="2"> + <?% PROCESS marks d=data.Marks %?> + </td> + </tr> + <tr> + <td> + <?% gettext('Lifetime') %?> : <?% data.Lifetime %?>, + <?% gettext('Priority') %?> : <?% data.Prio %?> + </td> + <td class="push"> + <?% PROCESS RowButtons id=data.RecordId%?> + </td> + </tr> + </table> + </td> + </tr> + </table> + </td> + </tr> + <tr> + <td class="editorbottom"></td> + </tr> +</table> diff --git a/skins/stone_flat/report.tmpl b/skins/stone_flat/report.tmpl new file mode 100644 index 0000000..90d2279 --- /dev/null +++ b/skins/stone_flat/report.tmpl @@ -0,0 +1,89 @@ +<!-- report --> +<body class="frame"> +<div id="body"> +<h1><?% gettext("Protocol of the activities") %?></h1> + +<?% FOREACH name = data.keys.sort %?> + <h2><?% gettext("Report for Modul");" " %?> + <?% name %?></h2> + <?% IF name == 'RECORDS'; + link = '?cmd=rdisplay&data='; + ELSIF name == 'AUTOTIMER'; + link = '?cmd=tedit&data='; + END; + %?> + + <?% FOREACH typ = data.$name.keys.sort %?> + <?% IF typ == 'message' %?> + <p><?% data.$name.$typ %?> + </p> + <?% ELSIF typ == 'table' and data.$name.$typ.size > 1 %?> + <?% fields = data.$name.$typ.shift %?> + <table class="largetable" summary=""> + <tr><td class="largehead"></td></tr> + <tr> + <td class="largetext" align="left"> + <table summary="" width="100%"> + <!-- <tr> + <?% FOREACH field = fields %?> + <?% NEXT IF field.match('^__') %?> + <th> + <nobr><?% field %?> + </nobr> + </th> + <?% END %?> + </tr> --> + <?% FOREACH zeile = data.$name.$typ %?> + <tr<?% ' class="two"' IF loop.count mod 2 == 0 %?>> + <?% c = -1 %?> + <?% FOREACH field = zeile %?> + <?% c = c + 1 %?> + <?% NEXT IF fields.$c.match('^__') %?> + <td><a href="javascript:popupwindow('<?% link %?><?% zeile.first %?>',620,670,0)"><?% field %?></a></td> + <?% END %?> + </tr> + <?% END %?> + </table> + </td> + </tr> + <tr><td class="largebottom"></td></tr> + </table> + <?% END %?> + <?% END %?> +<?% END %?> +</div> +<!-- ###### Seite ###### --> +<div id="sidebar"> +<?% IF allow('rp') %?> + <table summary=""> + <tr><td class="sidehead"><?% gettext("Report",20) %?></td></tr> + <tr> + <td class="sidetext"> + <a title="<?% gettext("Report") %?>" href="?cmd=rp"><img src="images/refresh.<?% global.imagetyp %?>" alt="" /></a> + <a title="<?% gettext("Report") %?>" href="?cmd=rp"><?% gettext("Report",20) %?></a> + </td> + </tr> + <tr> + <td class="sidebottom"></td> + </tr> + </table> +<?% END %?> +<?% IF allow('lg') %?> + <table summary=""> + <tr><td class="sidehead"><?% gettext("Log files",20) %?></td></tr> + <tr> + <td class="sidetext"> + <a title="<?% gettext("Standard") %?>" href="?cmd=lg&data=main"><img src="images/refresh.<?% global.imagetyp %?>" alt="" /></a> + <a title="<?% gettext("Standard") %?>" href="?cmd=lg&data=main"><?% gettext("Standard",20) %?></a><br /> + <a title="<?% gettext("Syslog") %?>" href="?cmd=lg&data=syslog"><img src="images/refresh.<?% global.imagetyp %?>" alt="" /></a> + <a title="<?% gettext("Syslog") %?>" href="?cmd=lg&data=syslog"><?% gettext("Syslog",20) %?></a><br /> + </td> + </tr> + <tr> + <td class="sidebottom"></td> + </tr> + </table> +<?% END %?> + <p id="sidefooter"> </p> +</div> +<?% INCLUDE header.inc %?> diff --git a/skins/stone_flat/rlist.tmpl b/skins/stone_flat/rlist.tmpl new file mode 100644 index 0000000..740e0a1 --- /dev/null +++ b/skins/stone_flat/rlist.tmpl @@ -0,0 +1,338 @@ +<!-- rlist --> +<body class="frame"> +<?% USE date %?> +<?% ######################################################################## %?> +<div id="body"> +<?% ######################################################################## %?> +<?% enableform = allow('rdelete') && data.size > 1 %?> +<?% IF cgi.param('cmd')=='rl' || cgi.param('cmd')=='rlist' %?> + <?% browse = cgi.param('data') %?> +<?% END %?> +<?% ######################################################################## %?> +<?% IF param.sortable.defined %?> + <?% IF cgi.param('__sortby') %?> + <?% sortby = cgi.param('__sortby') %?> + <?% sortby = "&__sortby=${sortby}" %?> + <?% orderby = cgi.param('__desc') %?> + <?% orderby = "${sortby}&__desc=${orderby}" %?> + <?% END %?> +<?% END %?> +<?% ######################################################################## %?> +<?% BLOCK time %?> +<?% date.format(t,"%x",locale) %?> +<br /> +<?% date.format(t,"%H:%M",locale) %?> +<?% END %?> +<?% ######################################################################## %?> +<?% BLOCK dur # d in Sekunden %?> +<?% IF d > 1 %?> + <?% Stunden = d div 3600 %?> + <?% Minuten = d div 60 mod 60 %?> + <?% Sekunden = d mod 60 %?> + <?% Stunden %?>:<?% Minuten | format('%02d') %?>:<?% Sekunden | format('%02d') %?> +<?% END %?> +<?% END %?> +<?% ######################################################################## %?> +<?% total = 0 %?> +<?% BLOCK printsumme %?> +<p class="description" style="padding: 0; margin-left: <?% width %?>px;"> +<?% IF total > 0; + sec = total mod 60; + min = total div 60 mod 60; + hour = total div 3600; +%?> +<?% gettext("total time") %?> : +<?% IF hour > 0 %?><?% hour FILTER format('%02d') %?>:<?% END %?><?% min FILTER format('%02d') %?>:<?% sec FILTER format('%02d')%?> +<?% END %?> +<?% IF param.free; + secf = param.free mod 60; + minf = param.free div 60 mod 60; + hourf = param.free div 3600; +%?> +<br /><?% gettext("available capacity") %?> : +<?% IF hourf > 0 %?><?% hourf FILTER format('%02d') %?>:<?% END %?><?% minf FILTER format('%02d') %?>:<?% secf FILTER format('%02d')%?> +<?% END %?> +</p> +<?% END %?> +<?% ######################################################################## %?> +<?% BLOCK image %?> + <?%- files = param.getPreview(eventid); + IF type == 'RADIO'; + mylist = [ "images/audio", global.imagetyp ]; + preview = mylist.join('.') ; + ELSIF files.size > 0; +# +# USE date; +# img = date.format(date.now, '%S') mod files.size; +# preview = files.$img; +# + img = (files.size div 2); + preview = files.$img; + END; + IF preview.length <= 0; + mylist = [ "images/movie", global.imagetyp ]; + preview = mylist.join('.') ; + END; + -%?> + <img class="recording" src="<?% preview %?>" alt="" /> +<?% END %?> +<?% ######################################################################## %?> +<?% BLOCK RowButtons %?> + <?% IF global.playbackmode == 0 %?> + <?% IF allow('stream') %?> + <a href="javascript:popup('stream','<?% id %?>',620,670,1)"> + <img src="images/play.<?% global.imagetyp %?>" alt="" title="<?% gettext("Watch recording") %?>" /> + </a> + <?% END %?> + <?% ELSIF global.playbackmode == 1 %?> + <?% IF allow('playrecord') %?> + <a href="?cmd=playrecord&data=<?% id %?>"> + <img src="images/play.<?% global.imagetyp %?>" alt="" title="<?% gettext("Watch recording") %?>" /> + </a> + <?% END %?> + <?% ELSIF global.playbackmode == 2 %?> + <?% IF allow('rplay') %?> + <a href="javascript:popup('rplay','<?% id %?>',620,670,1)"> + <img src="images/play.<?% global.imagetyp %?>" alt="" title="<?% gettext("Watch recording") %?>" /> + </a> + <?% END %?> + <?% END %?> + <?% IF allow('redit') %?> + <a href="javascript:popup('redit','<?% id %?>',620,670,1)"> + <img src="images/edit.<?% global.imagetyp %?>" alt="" title="<?% gettext("Edit recording") %?>" /> + </a> + <?% END %?> + <?% IF allow('rdelete') %?> + <a href="javascript:surecmd('<?% gettext("You will delete this recording") %?>','<?% escape(fulltitle) %?>','rdelete','<?% id %?>',620,670)"> + <img src="images/delete.<?% global.imagetyp %?>" alt="" title="<?% gettext("Delete recording") %?>" /> + </a> + <?% END %?> +<?% END %?> +<?% ######################################################################## %?> +<?% BLOCK ItemAsFlat %?> + <tr<?% ' class="two"' IF loop.count mod 2 == 0 %?>> + <td class="fieldinline"> + <?% IF folder > 1 %?> + <?% IF enableform %?> + <input type="checkbox" value="all:<?% id %?>" name="<?% gettext("All recordings with title") %?> : '<?% foldertitle %?>'" /> + <?% END %?> + <?% ELSE %?> + <?% IF enableform %?> + <input class="push" type="checkbox" value="<?% id %?>" name="<?% fulltitle %?>" /> + <?% END %?> + <?% IF param.previewcommand != 'n' %?> + <a href="javascript:popup('rdisplay','<?% id %?>',620,670,0)" class="fieldinline"> + <?% PROCESS image %?> + </a> + <?% END %?> + <?% END %?> + </td> + <td class="fieldinline"> + <?% IF folder <= 1 %?> + <a href="javascript:popup('rdisplay','<?% id %?>',620,670,0)" class="fieldinline"> + <?% IF new %?><img src="images/new.<?% global.imagetyp %?>" alt="" title="<?% gettext("New recording") %?>" /> <?% END %?> + <font class="title"> + <?% title %?> + </font> + <?% ELSE %?> + <a href="?cmd=rlist&data=<?% url( fulltitle ) %?><?% orderby %?>" class="fieldinline title"> + <?% IF new %?> + <img src="images/newfolder.<?% global.imagetyp %?>" alt="" title="<?% gettext("New recording") %?>" /> + <?% ELSE %?> + <img src="images/folder.<?% global.imagetyp %?>" alt="" /> + <?% END %?> + <font class="title"> + <?% foldertitle %?> + </font> + <?% END %?> + <br /> + <font class="subtitle"> + <?% IF folder <= 1 %?> + <?% subtitle %?> + <?% IF global.hideDescription != 1 && description.length > 0 %?><br /> + </font><font class="description"><?% chop(description,100,5) %?><?% END %?> + <?% ELSE %?> + <?% folder %?><?% IF new %?> (<?% new %?>)<?% END %?> <?% gettext("more recordings") %?> ... + <?% END %?> + </font> + </a> + </td> + <td class="fieldinline push"> + <?% IF folder <= 1 %?> + <a href="javascript:popup('rdisplay','<?% id %?>',620,670,0)" class="fieldinline description"> + <?% PROCESS time t=start %?> + <br /> + <br /> + <?% PROCESS dur d=duration %?> + </a> + <br /> + <?% INCLUDE widgets/tooltip.inc cmd="rdisplay" linkid=id ttp_offset=-300 %?> + <?% PROCESS RowButtons %?> + <?% END %?> + </td> + </tr> +<?% END %?> +<?% ######################################################################## %?> +<?% IF cgi.param('data') != "" %?> + <?% search = cgi.param('data') %?> +<?% END %?> +<h1> + <?% gettext("Stored recordings") %?> + <?% IF search.defined %?> : "<?% search %?>"<?% END %?> + <small>(<?% param.usage %?>)</small> +</h1> +<?% IF data.size > 1 %?> +<?% fields = data.shift %?> +<form name="rlist" action=""> + <table class="largetable" summary=""> + <tr><td class="largehead"><?% IF search.defined %?><?% search %?><?% END %?></td></tr> + <tr> + <td class="largetext" align="left"> + <table summary="" width="100%"> + <tr height="0"><th width="<?% IF param.previewcommand != 'n' %?>200<?% ELSE %?>20<?% END %?>"></th><th></th><th width="64"></th></tr> + <?%- FOREACH zeile = data; + IF debug;"<!-- Item: ";FOREACH x = zeile;loop.count - 1;":";x.replace("-"," ");"|";END;"-->";END; + id=zeile.0; + eventid=zeile.1; + title=zeile.2.split('~').last; + IF title == " "; title=zeile.2.split('~').last(2).join(" "); END; + subtitle=zeile.3; + duration=zeile.4; + start=zeile.5; + new=zeile.6; + type=zeile.7; + folder=zeile.8; + fulltitle=zeile.9; + isrecording=zeile.10; + description=zeile.11; + foldertitle=fulltitle.split('~').last; + IF foldertitle == " "; foldertitle=fulltitle.split('~').last(2).join(" "); END; + PROCESS ItemAsFlat; + total = total + duration; + END; -%?> + </table> + </td> + </tr> + <tr><td class="largebottom"></td></tr> + </table> +<?% PROCESS printsumme width=780 %?> +</form> +<?% END %?> +</div> +<!-- ###### Seite ###### --> +<div id="sidebar"> +<?% IF allow('rupdate') || browse != "" %?> + <table summary=""> + <tr><td class="sidehead"><?% gettext("Recordings",20) %?></td></tr> +<?% IF browse == "" %?> +<?% IF allow('rupdate') %?> + <tr> + <td class="sidetext"> + <a title="<?% gettext("Update recordings") %?>" href="javascript:popupcmd('rupdate',620,670,1)"><img src="images/refresh.<?% global.imagetyp %?>" alt="" /></a> + <a title="<?% gettext("Update recordings") %?>" href="javascript:popupcmd('rupdate',620,670,1)"><?% gettext("Update recordings",20) %?></a> + </td> + </tr> +<?% END %?> +<?% ELSE %?> + <tr> + <td class="sidetext"> + <?% directorys = browse.split('~') %?> + <?% IF directorys.size <= 1 %?> + <a title="<?% gettext("Back") %?>" href="?cmd=rlist<?% orderby %?>"><img src="images/folder.<?% global.imagetyp %?>" alt="" /></a> + <a title="<?% gettext("Back") %?>" href="?cmd=rlist<?% orderby %?>"><?% gettext("Back",20) %?></a> + <?% ELSE %?> + <?% t = directorys.pop %?> + <?% directory = directorys.join('~') %?> + <a title="<?% gettext("Back") %?>" href="?cmd=rlist&data=<?% url( directory ) %?><?% orderby %?>"><img src="images/folder.<?% global.imagetyp %?>" alt="" /></a> + <a title="<?% gettext("Back") %?>" href="?cmd=rlist&data=<?% url( directory ) %?><?% orderby %?>"><?% gettext("Back",20) %?></a> + <?% END %?> + </td> + </tr> +<?% END %?> + <tr> + <td class="sidebottom"></td> + </tr> + </table> +<?% END %?> +<?% IF param.sortable.defined %?> + <?% cmd = cgi.param('cmd') %?> + <?% IF cgi.param('data') %?> + <?% daten = url( cgi.param('data') ) %?> + <?% daten = "&data=${daten}" %?> + <?% END %?> + <table summary=""> + <tr><td class="sidehead"><?% gettext("Sorting",20) %?></td></tr> + <tr> + <td class="sidetext"> +<?% BLOCK SortItem %?> + <ul> + <li><a href="?cmd=<?% cmd %?><?% daten %?>&__sortby=<?% row %?>&__desc=0" ><img src="images/home.<?% global.imagetyp %?>" alt="" /></a></li> + <li class="label"> + <?% "<strong>" IF cgi.param('__sortby') == row %?> + <a href="?cmd=<?% cmd %?><?% daten %?>&__sortby=<?% row %?>&__desc=<?% IF cgi.param('__sortby') == row && cgi.param('__desc') == 0 %?>1<?% ELSE %?>0<?% END %?>" > + <?% label %?> + </a> + <?% "</strong>" IF cgi.param('__sortby') == row %?> + </li> + <li><a href="?cmd=<?% cmd %?><?% daten %?>&__sortby=<?% row %?>&__desc=1" ><img src="images/down.<?% global.imagetyp %?>" alt="" /></a></li> + </ul> +<?% END %?> + <?% PROCESS SortItem row=fields.0 label=gettext('Index',20) %?> + <?% PROCESS SortItem row=fields.2 label=gettext('Title',20) %?> + <?% PROCESS SortItem row=fields.3 label=gettext('Subtitle',20) %?> + <?% PROCESS SortItem row=fields.5 label=gettext('Start',20) %?> + <?% PROCESS SortItem row=fields.4 label=gettext('Duration',20) %?> + </td> + </tr> + <tr> + <td class="sidebottom"></td> + </tr> + </table> +<?% END %?> +<?% IF enableform %?> + <table summary=""> + <tr><td class="sidehead"><?% gettext("Select",20) %?></td></tr> + <tr> + <td class="sidetext"> + <a href="javascript:selAll(document.rlist,1)"><img src="images/select.<?% global.imagetyp %?>" alt="" /></a> + <a href="javascript:selAll(document.rlist,1)"><?% gettext("Select all",20) %?></a><br /> + <a href="javascript:selAll(document.rlist,0)"><img src="images/deselect.<?% global.imagetyp %?>" alt="" /></a> + <a href="javascript:selAll(document.rlist,0)"><?% gettext("Unselect all",20) %?></a><br /> + <a href="javascript:reverse(document.rlist)"><img src="images/invers.<?% global.imagetyp %?>" alt="" /></a> + <a href="javascript:reverse(document.rlist)"><?% gettext("Reverse select",20) %?></a> + </td> + </tr> + <tr> + <td class="sidetext"> +<?% IF allow('rdelete') %?> + <a href="javascript:DeleteSelected('<?% gettext("You would delete follow recordings?") %?>','<?% gettext("You have nothing selected!") %?>','rdelete',document.rlist,620,670)"><img src="images/delete.<?% global.imagetyp %?>" alt="" /></a> + <a href="javascript:DeleteSelected('<?% gettext("You would delete follow recordings?") %?>','<?% gettext("You have nothing selected!") %?>','rdelete',document.rlist,620,670)"><?% gettext("Delete recordings",20) %?></a><br /> +<?% END %?> + </td> + </tr> + <tr> + <td class="sidebottom"></td> + </tr> + </table> +<?% END %?> + <table summary=""> + <tr><td class="sidehead"><?% gettext("Search for recordings",20) %?></td></tr> + <tr> + <td class="sidetext"> + <form name="searchform" action=""> + <input type="hidden" name="cmd" value="rsearch" /> + <input type="text" id="rectext" name="data" alt="<?% gettext("Search") %?>" + onkeyup="suggest('rsuggest','rectext','recsuggest');" + <?% IF search.defined %?>value="<?% search %?>"<?% END %?> + autocomplete="off" /> + <br /><div class="suggestbox" id="recsuggest"></div> + </form> + </td> + </tr> + <tr> + <td class="sidebottom"></td> + </tr> + </table> + <p id="sidefooter"> </p> +</div> +<?% INCLUDE header.inc %?> diff --git a/skins/stone_flat/rsearch.tmpl b/skins/stone_flat/rsearch.tmpl new file mode 120000 index 0000000..2e6f4df --- /dev/null +++ b/skins/stone_flat/rsearch.tmpl @@ -0,0 +1 @@ +rlist.tmpl
\ No newline at end of file diff --git a/skins/stone_flat/schema.tmpl b/skins/stone_flat/schema.tmpl new file mode 100644 index 0000000..7502619 --- /dev/null +++ b/skins/stone_flat/schema.tmpl @@ -0,0 +1,275 @@ +<!-- schema --> +<body class="frame"> +<?% ######################################################################## %?> +<div id="body"> +<?% widthtable = 775 %?> +<?% widthfirst = 100 %?> +<?% IF allow('switch') %?> + <?% widthfirst = widthfirst + 25 %?> +<?% END %?> +<?% width = widthtable - widthfirst %?> +<?% USE date %?> +<h1> +<?% gettext("Schema") %?> + : <?% date.format(param.zeitvon, '%A, %H:%M', locale) %?> + - <?% date.format(param.zeitbis, '%H:%M', locale) %?> +</h1> +<?% ######################################################################## %?> +<?% Duration = param.zeitbis - param.zeitvon %?> +<table class="largetable" summary=""> + <tr><td class="largehead"> + <?% FOREACH cgrp = param.cgroups %?> + <?% IF param.channelgroup == cgrp.last;cgrp.first;LAST;END %?> + <?% END %?> + </td></tr> + <tr> + <td class="largetext"> + <table summary="" width="<?% widthtable %?>"> + <tr> + <td><img alt="" src="images/blank.gif" width="<?% widthfirst %?>" height="1" /></td> + <?% c = 0 %?> + <?% colspan = 0 %?> + <?% abstand = 15 * 60; # 15 Minuten %?> + <?%- WHILE c < Duration -%?> + <?%- + c = c + abstand; + percent = (abstand / Duration) * width + colspan = colspan + 1; + zeit = param.zeitvon + c; + -%?> + <td width="<?% offset = (c % 3600 ? 1 : 2);(percent - offset) div 1 %?>" align="right"> + <?% IF c == abstand && zeit > date.now %?> + <a href="?cmd=schema&data=<?% (param.zeitvon - Duration) %?>&__cgrp=<?% param.channelgroup %?>"> + <img alt="" src="images/back.<?% global.imagetyp %?>" title="" /> + </a> + + <?% END %?> + <?% IF c >= Duration %?> + <a href="?cmd=schema&data=<?% (param.zeitvon + Duration) %?>&__cgrp=<?% param.channelgroup %?>"> + <img alt="" src="images/forward.<?% global.imagetyp %?>" title="" /> + </a> + + <?% END %?> + <?% date.format(zeit, '%H:%M') %?></td> + <?% END %?> + </tr> + <tr> + <td> </td> + <td colspan="<?% colspan %?>" style="white-space: nowrap"> + <?% c = 0 %?> + <?% abstand = abstand div 3 %?> + <?%- WHILE c < Duration; + c = c + abstand; + percent = (abstand / Duration) * width + -%?><img alt="" src="images/blank.gif" width="<?%- + offset = (c % 3600 ? 1 : 2); + (percent - offset) div 1 + -%?>" height="10" /><img alt="" + style="background:<?% c % 900 ? "gray" : "black" %?>" + src="images/blank.gif" + width="<?% c % 3600 ? "1" : "2" %?>" + height="<?% (c % 900 ? "5" : "10") %?>" /> + <?%- END -%?> + <?%- ############################################## -%?> + <?%- IF !info.http_useragent.match('.*MSIE.*') && date.now > param.zeitvon && date.now < param.zeitbis -%?> + <?% a = date.now - param.zeitvon; + p = (a / Duration) * width; + %?> + <div style="position:absolute;"> + <div id="timewindow" style="left:0px; width:<?% p div 1 %?>px;"> + <font size="1"> </font> + </div> + </div> + <div style="position:absolute;"> + <div id="timeline" style="left:<?% p div 1 %?>px;"> + <img alt="" src="images/blank.gif" width="1" height="<?% data.keys.size * 19 %?>" /> + </div> + </div> + <?%- END -%?> + <?%- ############################################## -%?> + </td> + </tr> + <?% FOREACH cpos = data.keys.nsort %?> + <tr<?% IF (loop.count mod 2) == 0 %?> class="two"<?% END %?>> + <td> +<?% IF allow('switch') %?> + <a href="javascript:post('switch','<?% data.$cpos.first.4 %?>')"> + <img src="images/watch.<?% global.imagetyp %?>" alt="" title="<?% gettext("Switch") %?>" /> + </a> +<?% END %?> +<?% IF allow('program') %?> + <a href="?cmd=program&data=<?% data.$cpos.first.4 %?>" title="<?% gettext("Program guide for") %?> <?% data.$cpos.first.3 %?>"> +<?% END %?> + <?% chop(data.$cpos.first.3,15) %?> +<?% IF allow('program') %?> + </a> +<?% END %?> + </td> + <td colspan="<?% colspan %?>" style="white-space: nowrap;"> + <?%- ges = 0; oldend = param.zeitvon -%?> + <?%- FOREACH event = data.$cpos; + id = event.0;
+ title = event.1;
+ subtitle = event.2;
+ sender = event.3;
+ channel = event.4;
+ start = event.5;
+ stop = event.6;
+ percent100 = event.7; + description = event.8;
+ second_start = event.9;
+ second_stop = event.10;
+ video = event.11;
+ audio = event.12;
+ image = event.13; + IF second_start > oldend; + laenge = second_start - oldend; + percent = (laenge / Duration) * width; + ges = ges + percent; -%?> + <img style="float:left" alt="" src="images/blank.gif" width="<?% percent div 1 %?>" height="1" align="left" /> + <?% END; + IF second_start < oldend; + dur = second_stop - oldend; + ELSE; + dur = second_stop - second_start; + END; + IF dur < 0; dur = 1; END; + percent = (dur / Duration) * width; + IF (ges + percent) > (width - 20); + percent = width - ges - 20; + END; + ges = ges + percent; + trun = ( ( percent / 6 ) - 1 ) div 1; + IF dur < 300; + trun = 3; + END; + -%?> + <?% IF trun <= 3 %?> + <!-- <a border="1" href="javascript:popup('display','<?% id %?>',620,670,0)" title="<?% start %?> - <?% stop %?> - <?% dur %?>"> --> + <img style="float:left" alt="" src="images/blank.gif" width="<?% percent div 1 %?>" height="1" align="left" /> + <!-- </a> --> + <?% ELSE %?> + <?% PROCESS SetState t=param.timers r=param.runningTimer %?> + <table summary="" class="schema" style="width:<?% percent div 1 %?>px"> + <tr> + <td> + <a href="javascript:popup('display','<?% id %?>',620,670,0)" + onmouseover="ttpreq(this, '<?% escape(title) %?> + <?% IF subtitle.length > 0 %?>~<?% escape(subtitle) %?> + <?% END %?>',<?% id %?>, -200 );" > + <font class="<?% IF state != "";" ";state;END %?>"><?% chop(title,trun) %?></font> + </a> + </td> + </tr> + </table> + <?% END %?> + <?% oldend = second_stop; END %?> + </td> + </tr> + <?% END %?> + </table> + </td> + </tr> + <tr><td class="largebottom"></td></tr> +</table> +<?% ######################################################################## %?> +<?% BLOCK SetState %?> + <?% state = '' %?> + <?% IF param.runningTimer.exists(id) %?> + <?% state = "running" %?> + <?% ELSIF param.timers.exists(id) %?> + <?% UNLESS param.timers.${id}.Status %?> + <?% state = "deactive" %?> + <?% ELSE %?> + <?% state = "active" %?> + <?% END %?> + <?% END %?> +<?% END %?> +<?% ######################################################################## %?> +</div> +<!-- ###### Seite ###### --> +<div id="sidebar"> + <table summary=""> + <tr><td class="sidehead"><?% gettext("Schema",20) %?></td></tr> + <tr> + <td class="sidetext"> + <form action=""> + <select name="cgroups" onchange="di('?cmd=<?% cgi.param('cmd') %?>&data=<?% param.zeitvon %?>&__cgrp=',this.form.cgroups.options[this.form.cgroups.options.selectedIndex].value)"> + <?% FOREACH cgrp = param.cgroups %?> + <option value="<?% cgrp.last %?>"<?% ' selected="selected"' IF param.channelgroup == cgrp.last %?>><?% cgrp.first %?></option> + <?% END %?> + </select> + </form> + + <a href="?cmd=now&__cgrp=<?% cgi.param('__cgrp') %?>"><img src="images/forward.<?% global.imagetyp %?>" alt="" title="<?% gettext("Running now") %?>" /></a> + <a href="?cmd=now&__cgrp=<?% cgi.param('__cgrp') %?>"><?% gettext("Running now",20) %?></a><br /> + <a href="?cmd=next&__cgrp=<?% cgi.param('__cgrp') %?>"><img src="images/forward.<?% global.imagetyp %?>" alt="" title="<?% gettext("Next") %?>" /></a> + <a href="?cmd=next&__cgrp=<?% cgi.param('__cgrp') %?>"><?% gettext("Next",20) %?></a><br /> + <a href="?cmd=sch<?% IF param.zeit && cgi.param('cmd') != 'next' && now != 1;"&data=";param.zeit;END;%?>&__cgrp=<?% cgi.param('__cgrp') %?>"> + <img alt="" src="images/forward.<?% global.imagetyp %?>" title="<?% gettext("Schema") %?>" /></a> + <a href="?cmd=sch<?% IF param.zeit && cgi.param('cmd') != 'next' && now != 1;"&data=";param.zeit;END;%?>&__cgrp=<?% cgi.param('__cgrp') %?>"> + <?% gettext("Schema",20) %?><?% IF param.zeit && cgi.param('cmd') != 'next' && now != 1;" ";day;END;%?></a><br /><br /> + <form method="post" action="?cmd=sch"> + <input type="text" name="data" value="<?% IF time.defined %?><?% time %?><?% ELSE %?>20:15<?% END %?>" size="18" /> + <input type="hidden" name="__cgrp" value="<?% cgi.param('__cgrp') %?>" /> + </form> + <form action=""> + <select size="5" name='data' onchange="di('?cmd=sch&__cgrp=<?% cgi.param('__cgrp') %?>&data=',this.form.data.options[this.form.data.options.selectedIndex].value)"> + <?% today = [] %?> + <?% tomor = [] %?> + <?% FOREACH zeit = param.periods.split(','); %?> + <?% tom = 0 %?> + <?% PERL %?> + use Date::Manip; + my $z; + $z = UnixDate(ParseDate($stash->{zeit}),"%s") || 0; + if($z and $z < time) { + $z += 86400; + $stash->set('tom', 1); + } + $stash->set('z', $z); + <?% END %?> + <?% NEXT UNLESS z; + IF tom; + tomor.push(z); + ELSE; + today.push(z); + END %?> + <?% END %?> + <?% FOREACH z = today %?><option value="<?% z %?>"><?% date.format(z, "%H:%M", locale) %?></option><?% END %?> + <?% FOREACH z = tomor %?><option value="<?% z %?>"><?% date.format(z, "%H:%M (%a), locale") %?></option><?% END %?> + </select> + </form> + </td> + </tr> +<?% IF allow('erestart') %?> + <tr> + <td class="sidetext"> + <a title="<?% gettext("Reload EPG data") %?>" href="javascript:popupcmd('erestart',620,670,1)"><img src="images/refresh.<?% global.imagetyp %?>" alt="" /></a> + <a title="<?% gettext("Reload EPG data") %?>" href="javascript:popupcmd('erestart',620,670,1)"><?% gettext("Reload EPG data",20) %?></a> + </td> + </tr> +<?% END %?> + <tr> + <td class="sidebottom"></td> + </tr> + </table> + <table summary=""> + <tr><td class="sidehead"><?% gettext("Search",20) %?></td></tr> + <tr> + <td class="sidetext"> + <form method="post" action="?cmd=search" name="searchform"> + <input type="text" id="epgtext" name="data" alt="<?% gettext("Search") %?>" + onkeyup="suggest('esuggest','epgtext','epgsuggest');" + autocomplete="off" /> + <br /><div class="suggestbox" id="epgsuggest"></div> + </form> + </td> + </tr> + <tr> + <td class="sidebottom"></td> + </tr> + </table> + <p id="sidefooter"> </p> +</div> +<?% INCLUDE header.inc %?> diff --git a/skins/stone_flat/search.tmpl b/skins/stone_flat/search.tmpl new file mode 100644 index 0000000..835cdef --- /dev/null +++ b/skins/stone_flat/search.tmpl @@ -0,0 +1,152 @@ +<!-- search --> +<?% USE date %?> +<body class="frame"> +<div id="body"> +<?% ######################################################################## %?> +<?% BLOCK RowButtons %?> + <a href="?cmd=search&data=<?% url( title ) %?>"> + <img src="images/find.<?% global.imagetyp %?>" alt="" title="<?% gettext("Search for repeats") %?>" /> + </a> + <?% IF param.timers.${id} && allow('tedit') %?> + <a href="javascript:popup('tedit','<?% param.timers.${id}.Id %?>',620,670,1)"> + <img src="images/onoff.<?% global.imagetyp %?>" alt="" title="<?% gettext("Edit this Timer") %?>" /> + </a> + <?% ELSIF allow('tnew') %?> + <a href="javascript:popup('tnew','<?% id %?>',620,670,1)"> + <img src="images/record.<?% global.imagetyp %?>" alt="" title="<?% gettext("To record") %?>" /> + </a> + <?% END %?> +<?% END %?> +<?% ######################################################################## %?> +<?% BLOCK SetState %?> + <?% state = '' %?> + <?% IF param.runningTimer.exists(id) %?> + <?% state = "running" %?> + <?% ELSIF param.timers.exists(id) %?> + <?% UNLESS param.timers.${id}.Status %?> + <?% state = "deactive" %?> + <?% ELSE %?> + <?% state = "active" %?> + <?% END %?> + <?% END %?> +<?% END %?> +<?% ######################################################################## %?> +<?% BLOCK ItemAsFlat %?> + <?% PROCESS SetState %?> + <tr<?% ' class="two"' IF z mod 2 == 0 %?>> + <td class="fieldinline"> + <a class="fieldinline" style="vertical-align:bottom;" href="?cmd=program&data=<?% channel %?><?% IF id > 0 %?>#E<?% id %?><?% END %?>" title="<?% gettext("Program guide for") %?> <?% sender %?>"> + <font class="channel<?% IF state != "";" ";state;END %?>"><?% channel %?>. <?% chop(sender,20) %?></font> + </a> + </td> + <td class="fieldinline"> + <a href="javascript:popup('display','<?% id %?>',620,670,0)" class="fieldinline"> + <font class="title<?% IF state != "";" ";state;END %?>"><?% chop(title,45) %?></font> + <?% IF subtitle.length > 0 %?><font class="subtitle<?% IF state != "";" ";state;END %?>"> - <?% chop(subtitle,55) %?></font><?% END %?> + </a> + </td> + <td class="fieldinline<?% IF state != "";" ";state;END %?>" style="white-space: nowrap; text-align: right;"> + <?% IF vps && vps != start %?> (<?% gettext("VPS") %?>:<?% vps %?>) <?% END %?> + <?% start %?> - <?% stop %?> + </td> + <td class="fieldinline push"> + <?% INCLUDE widgets/tooltip.inc cmd="display" eventid=id linkid=id ttp_offset=-300 %?> + <?% PROCESS RowButtons %?> + </td> + </tr> + <?% IF global.hideDescription != 1 && description.length > 0 %?> + <tr<?% ' class="two"' IF z mod 2 == 0 %?>> + <td class="fieldinline" > </td> + <td class="fieldinline" colspan="4"> + <a href="javascript:popup('display','<?% id %?>',620,670,0)" class="fieldinline"> + <font class="description<?% IF state != "";" ";state;END %?>"><?% chop(description,100,1) %?></font> + </a> + </td> + </tr> + <?% END %?> +<?% END %?> +<?% ######################################################################## %?> +<h1><?% gettext("Search text") %?> : <?% cgi.param('data') %?></h1> +<?% IF data.size > 1 %?> +<?% fields = data.shift %?> + <?% FOREACH zeile = data %?> + <?% IF debug;"<!-- Item: ";FOREACH x = zeile;loop.count - 1;":";x.replace("-"," ");"|";END;"-->";END %?> + <?% id=zeile.0;title=zeile.1;subtitle=zeile.2;sender=zeile.3;channel=zeile.4;start=zeile.5;stop=zeile.6;description=zeile.8;vps=zeile.9 %?> + <?% day = date.format(zeile.7, "%A, %x", locale) %?> + <?% IF !old.defined || day != old %?> + <?% IF old.defined %?> + </table> + </td> + </tr> + <tr><td class="largebottom"></td></tr> +</table> + <?% END %?> +<table class="largetable" summary=""> + <tr><td class="largehead"><?% day %?></td></tr> + <tr> + <td class="largetext" align="left"> + <table summary="" width="100%"> + <?% z = 1 %?> + <tr height="0"><th width="120"></th><th></th><th width="60"></th><th width="40" align="right"></th></tr> + <?% END %?> + <?% old = day %?> + <?% PROCESS ItemAsFlat %?> + <?% z = z + 1 %?> + <?% END %?> + </table> + </td> + </tr> + <tr><td class="largebottom"></td></tr> +</table> +<?% END %?> +</div> +<!-- ###### Seite ###### --> +<div id="sidebar"> + <table summary=""> + <tr><td class="sidehead"><?% gettext("Search text",20) %?></td></tr> + <tr> + <td class="sidetext"> + <form action="" name="searchform" > + <input type='hidden' name='cmd' value='search' /> + <input type="text" id="epgtext" name="data" alt="<?% gettext("Search") %?>" + onkeyup="suggest('esuggest&__channel=' + escape(this.form.__channel[this.form.__channel.options.selectedIndex].value),'epgtext','epgsuggest');" + value="<?% cgi.param('data') %?>" + autocomplete="off" /> + <br /><div class="suggestbox" id="epgsuggest"></div> + <br /> + <?% gettext('Search in fields',30) %?><br /> + <input style="width:auto;" type="radio" name="__Where" value="all" <?% IF ! cgi.param('__Where') || cgi.param('__Where') == 'all' %?>checked<?% END %?> /><?% gettext('All') %?><br /> + <input style="width:auto;" type="radio" name="__Where" value="title" <?% IF cgi.param('__Where') == 'title' %?>checked<?% END %?> /><?% gettext('Only in title') %?><br /> + <input style="width:auto;" type="radio" name="__Where" value="titlesubtitle" <?% IF cgi.param('__Where') == 'titlesubtitle' %?>checked<?% END %?> /><?% gettext('Only in title and subtitle') %?><br /> + <br /> + <?% gettext('Video format',30) %?><br /> + <input style="width:auto;" type="radio" name="__VideoFormat" value="all" <?% IF ! cgi.param('__VideoFormat') || cgi.param('__VideoFormat') == 'all' %?>checked<?% END %?> /><?% gettext('All') %?><br /> + <input style="width:auto;" type="radio" name="__VideoFormat" value="widescreen" <?% IF cgi.param('__VideoFormat') == 'widescreen' %?>checked<?% END %?> /><?% gettext('16:9 Wide-screen') %?><br /> + <br /> + <?% gettext('Audio format',30) %?><br /> + <input style="width:auto;" type="radio" name="__AudioFormat" value="all" <?% IF ! cgi.param('__AudioFormat') || cgi.param('__AudioFormat') == 'all' %?>checked<?% END %?> /><?% gettext('All') %?><br /> + <input style="width:auto;" type="radio" name="__AudioFormat" value="dts" <?% IF cgi.param('__AudioFormat') == 'dts' %?>checked<?% END %?> /><?% gettext('Dolby Digital') %?><br /> + <input style="width:auto;" type="radio" name="__AudioFormat" value="stereo" <?% IF cgi.param('__AudioFormat') == 'stereo' %?>checked<?% END %?> /><?% gettext('Stereo') %?><br /> + <br /> + <?% gettext('Minimum length (in minutes)',30) %?><br /> + <input type="text" name="__MinLength" value="<?% cgi.param('__MinLength') %?>" /> + <br /><br /> + <?% gettext('Channel',30) %?><br /> + <select name='__channel'> + <option value="0"><?% gettext('All channels') %?></option> + <?% FOREACH chan = getModule('CHANNELS').ChannelArray('Name') %?> + <option value="<?% chan.last %?>" <?% IF cgi.param('__channel') == chan.last %?>selected<?% END %?>><?% chan.first %?></option> + <?% END %?> + </select> + <br /><br /> + <input type='submit' value='<?% gettext('Search') %?>' /> + </form> + </td> + </tr> + <tr> + <td class="sidebottom"></td> + </tr> + </table> + <p id="sidefooter"> </p> +</div> +<?% INCLUDE header.inc %?> diff --git a/skins/stone_flat/shutter.inc b/skins/stone_flat/shutter.inc new file mode 100644 index 0000000..e8af4ec --- /dev/null +++ b/skins/stone_flat/shutter.inc @@ -0,0 +1,7 @@ +<?% IF global.bodyinc.defined && global.bodyinc == 1 && ! global.shutter.defined; global.shutter = 1 %?> + <div id="shutter"> + <a accesskey="x" href="javascript:closeit()"> + <img align="right" src="images/close.gif" alt="" /> + </a> + </div> +<?% END %?> diff --git a/skins/stone_flat/skin.cfg b/skins/stone_flat/skin.cfg new file mode 100644 index 0000000..d6bf351 --- /dev/null +++ b/skins/stone_flat/skin.cfg @@ -0,0 +1,9 @@ +<?% ######################################################################## %?> +<?% # 0 = Show/1 = Hide Description on program,now,search %?> +<?% SET global.hideDescription = 0 %?> +<?% ######################################################################## %?> +<?% # 0 = Stream recording with ffmpeg %?> +<?% # 1 = Stream recording with Samba/NFS %?> +<?% # 2 = Start playback with SVDRP %?> +<?% SET global.playbackmode = 2 %?> + diff --git a/skins/stone_flat/skin.cfg.default b/skins/stone_flat/skin.cfg.default new file mode 100644 index 0000000..32e24b9 --- /dev/null +++ b/skins/stone_flat/skin.cfg.default @@ -0,0 +1,9 @@ +<?% ######################################################################## %?> +<?% # 0 = Show/1 = Hide Description on program,now,search %?> +<?% SET global.hideDescription = 0 %?> +<?% ######################################################################## %?> +<?% # 0 = Stream recording with ffmpeg %?> +<?% # 1 = Stream recording with Samba/NFS %?> +<?% # 2 = Start playback with SVDRP %?> +<?% SET global.playbackmode = 1 %?> + diff --git a/skins/stone_flat/status.inc b/skins/stone_flat/status.inc new file mode 100644 index 0000000..68ea8ee --- /dev/null +++ b/skins/stone_flat/status.inc @@ -0,0 +1,21 @@ +<!-- ###### status ###### --> +<?% IF ! global.statusinc.defined;global.statusinc = 1 %?> +</div> + +<div id="sidebar"> + <table summary=""> + <tr><td class="sidehead"><?% gettext("Status",20) %?></td></tr> + <tr> + <td class="sidetext"> + <?% IF allow( 'sv' ) %?><a href="?cmd=sv"><?% gettext("Vitals",20) %?></a><br /><?% END %?> + <?% IF allow( 'sf' ) %?><a href="?cmd=sf"><?% gettext("Filesystems",20) %?></a><br /><?% END %?> + <?% IF allow( 'sm' ) %?><a href="?cmd=sm"><?% gettext("Memory",20) %?></a><br /><?% END %?> + <?% IF allow( 'sn' ) %?><a href="?cmd=sn"><?% gettext("Network",20) %?></a><br /><?% END %?> + <?% IF allow( 'sa' ) %?><!--<a href="?cmd=sa">Alle Informationen</a><br />--><?% END %?> + </td> + </tr> + <tr><td class="sidebottom"></td></tr> + </table> + <p id="sidefooter"> </p> +</div> +<?% END %?> diff --git a/skins/stone_flat/style.css b/skins/stone_flat/style.css new file mode 100644 index 0000000..e9d955c --- /dev/null +++ b/skins/stone_flat/style.css @@ -0,0 +1,721 @@ +body { +background-color:#f2f2f2; +font-family:Tahoma, Arial, Helvetica, sans-serif; +color:#000; +margin:0; +padding:0; +} + +body.frame { +background-color:#f2f2f2; +font-family:Tahoma, Arial, Helvetica, sans-serif; +color:#000; +margin:90px 0 0; +padding:0 0 0 165px; +} + +input,select,textarea { +font-family:Tahoma, Arial, Helvetica, sans-serif; +color:#000; +background-color:#e2e2e2; +font-size:12px; +} + +#body { +padding:0; +} + +h1,h2 { +color:#000; +border-bottom-color:#000; +font-weight:700; +border-bottom-style:solid; +border-bottom-width:1px; +} + +h1 { +font-size:16px; +margin-bottom:15px; +} + +h2 { +font-size:14px; +margin-bottom:10px; +} + +table.schema { +float:left; +border:1px solid #404040; +border-right:0; +margin-bottom:1px; +} + +#timewindow { +position:relative; +top:0; +height:3px; +z-index:2; +border:thin solid gray; +background-color:gray; +text-align:right; +} + +#timeline { +position:relative; +top:0; +width:1px; +height:100%; +border-left:1px dashed gray; +z-index:2; +margin:0; +} + +img { +vertical-align:middle; +border:0; +border-style:none; +margin:0; +padding:0; +} + +img.recording,img.recorddetails { +width:160px; +} + +div.recording { +height:120px; +vertical-align:middle; +text-align:center; +} + +img.epgimages { +width:160px; +float:left; +margin-top:5px; +margin-right:10px; +margin-bottom:5px; +} + +img.cover { +width:100px; +} + +img.media { +width:130px; +} + +div.media { +height:180px; +vertical-align:middle; +text-align:center; +overflow:hidden; +} + +img.medialist { +width:60px; +} + +div.medialist { +height:80px; +vertical-align:middle; +text-align:center; +overflow:hidden; +} + + +img.actor { +height:90px; +} + +div.actor { +width:130px; +vertical-align:middle; +text-align:center; +} +a img { +border:0; +} + +td.push { +vertical-align:middle; +text-align:right; +white-space:nowrap; +} + +tr.two { +background-color:#d2d2d2; +} + +.left { +text-align:left; +} + +.middle { +text-align:center; +} + +.right { +text-align:right; +} + +.title { +font-size:11px; +font-weight:700; +} + +a:active { +color:#00F; +text-decoration:none; +} + +#logo { +position:absolute; +top:10px; +left:10px; +border:0; +z-index:10; +width:75px; +height:75px; +} + +#logo a img { +width:75px; +height:75px; +} + +#header { +position:absolute; +z-index:5; +top:0; +left:0; +right:0; +width:100%; +height:48px; +text-align:right; +background:url("images/head.jpg") no-repeat; +background-color:#d2d2d2; +border-bottom:1px solid #807d74; +} + +#headerNav { +position:absolute; +top:54px; +left:0; +padding-left:90px; +padding-right:0; +text-align:left; +vertical-align:middle; +font-size:10px; +} + +#sidebar { +position:absolute; +top:126px; +left:5px; +width:150px; +} + +#sidebar input { +width:135px; +margin:0; +padding:0; +} + +#sidebar select { +width:140px; +margin:0; +padding:0; +} + +p.vtx { +font-size:12px; +font-family:monospace; +white-space:nowrap; +} + +img.vtx { +position:absolute; +z-index:1; +width:7px; +height:15px; +} + +a.vtx:link,a.vtx:visited,a.vtx:hover,a.vtx:active { +text-decoration:none; +} + +a.vtx:link,a.vtx:visited { +color:#0F0; +} + +a.vtx:hover,a.vtx:active { +color:#FF0; +} + +img.progressleft { +background:#d2d2d2; +border-color:#000; +border-style:solid none solid solid; +border-width:1px; +padding:0; +} + +img.progressright { +background:#FFF; +border-color:#000; +border-style:solid; +border-width:1px; +padding:0; +} + +img.progress { +background:#d2d2d2; +border-color:#000; +border-style:solid; +border-width:1px; +padding:0; +} + +img.marksleft { +background:#e2e2e2; +border-color:#000; +border-style:solid; +border-width:1px; +padding:0; +} + +img.marksright1 { +background:#e2e2e2; +border-top-style:solid; +border-top-width:1px; +border-bottom-style:solid; +border-bottom-width:1px; +border-right-style:solid; +border-right-width:1px; +border-color:#000; +padding:0; +} + +img.marksright2 { +background:#d2d2d2; +border-top-style:solid; +border-top-width:1px; +border-bottom-style:solid; +border-bottom-width:1px; +border-right-style:solid; +border-right-width:1px; +border-color:#000; +padding:0; +} + +td.wait_full { +background:#d2d2d2; +width:15px; +height:15px; +border-color:#000; +border-style:solid; +border-width:1px; +} + +td.wait_clear { +background:#e2e2e2; +width:15px; +height:15px; +border-style:none; +border-width:0; +} + +table { +border-collapse:collapse; +border-spacing:0; +border-style:hidden; +border-width:0; +margin:0; +padding:0; +} + +table.fieldtable { +background:url(images/dark180.gif) repeat-y; +width:180px; +} + +div.fieldhead { +white-space:nowrap; +overflow:hidden; +width:174px; +height:18px; +float:left; +display:inline; +} + +td.fieldhead { +vertical-align:middle; +background:url(images/head180.gif) no-repeat; +height:20px; +color:#000; +font-size:11px; +font-weight:700; +padding-left:2px; +padding-right:2px; +} + +td.fieldtext { +vertical-align:top; +background:url(images/dark180.gif) repeat-y; +color:#000; +font-size:11px; +padding:2px; +} + +td.fieldbottom { +vertical-align:bottom; +background:url(images/down180.gif) no-repeat; +height:1px; +} + +table.fieldinline { +width:100%; +} + +fieldinline { +color:#000; +font-size:11px; +} + +#fieldinline input { +font-family:'Trebuchet MS', Lucida, Verdana, Helvetica, Arial, sans-serif; +color:#000; +font-size:8px; +} + +#sidebar table { +background:url(images/dark150.gif) repeat-y; +width:150px; +margin-bottom:5px; +} + +td.sidehead { +vertical-align:middle; +background:url(images/head150.gif) no-repeat; +height:20px; +color:#000; +font-size:12px; +font-weight:700; +padding-left:4px; +padding-right:4px; +overflow:hidden; +white-space:nowrap; +} + +td.sidetext { +vertical-align:top; +background:url(images/dark150.gif) repeat-y; +color:#000; +font-size:11px; +padding:4px; +} + +td.sidebottom { +vertical-align:bottom; +background:url(images/down150.gif) no-repeat; +height:1px; +} + +#sidebar ul { + list-style: none; + clear:both; + margin:0; + padding:0; +} + +#sidebar li { + float:left; +} + +#sidebar li.label { + width:100px; + padding-left:5px; + padding-right:5px; + overflow:hidden; + white-space:nowrap; +} + +table.areatable { +background:url(images/dark400.gif) repeat-y; +width:400px; +margin-bottom:5px; +} + +td.areahead { +vertical-align:middle; +background:url(images/head400.gif) no-repeat; +height:20px; +color:#000; +font-size:12px; +font-weight:700; +padding-left:4px; +padding-right:4px; +} + +td.areatext { +vertical-align:top; +background:url(images/dark400.gif) repeat-y; +color:#000; +font-size:11px; +padding:4px; +} + +td.areabottom { +vertical-align:bottom; +background:url(images/down400.gif) no-repeat; +height:1px; +} + +table.editortable { +background:url(images/dark600.gif) repeat-y; +width:600px; +margin-bottom:5px; +} + +div.editorhead { +white-space:nowrap; +overflow:hidden; +max-width:550px; +height:18px; +float:left; +} + +td.editorhead { +vertical-align:middle; +background:url(images/head600.gif) no-repeat; +height:20px; +color:#000; +font-size:12px; +font-weight:700; +padding-left:4px; +padding-right:4px; +} + +td.editortext { +vertical-align:top; +background:url(images/dark600.gif) repeat-y; +color:#000; +font-size:11px; +padding:4px; +} + +td.editorbottom { +vertical-align:bottom; +background:url(images/down600.gif) no-repeat; +height:1px; +} + +table.largetable { +background:url(images/dark800.gif) repeat-y; +width:800px; +margin-bottom:5px; +} + +td.largehead { +vertical-align:middle; +background:url(images/head800.gif) no-repeat; +height:20px; +color:#000; +font-size:12px; +font-weight:700; +padding-left:4px; +padding-right:4px; +} + +td.largetext { +vertical-align:top; +background:url(images/dark800.gif) repeat-y; +color:#000; +font-size:11px; +padding:1px; +} + +td.largebottom { +vertical-align:bottom; +background:url(images/down800.gif) no-repeat; +height:1px; +} + +td.rcbutton,td.rcbuttonlarge { +vertical-align:middle; +text-align:center; +background-color:#d2d2d2; +border-bottom:1px solid #CCC; +border-right:1px solid #CCC; +border-top:1px solid #979797; +border-left:1px solid #979797; +height:20px; +padding:0; +} + +td.rcbutton { +width:32px; +} + +td.rcbuttonlarge { +width:48px; +} + +a.rcbutton:active,a.rcbutton:link,a.rcbutton:visited { +text-decoration:none; +display:block; +margin:0; +padding:2px; +} + +a.rcbutton:hover { +background:#e2e2e2; +} + +#hilfsframe { +z-index:10; +position:absolute; +left:0; +top:0; +background-color:transparent; +} + +#shutter { +z-index:12; +text-align:right; +padding-right:25px; +background-color:transparent; +} + +#hilfsframecontent { +z-index:10; +background-color:transparent; +height:100%; +} + +.hilfsframed { +background-color:transparent; +} + +.deactive { +color:#AAA; +} + +.active { +color:#202060; +font-weight:700; +} + +.running { +color:#2020b4; +font-weight:700; +} + +.problem { +color:#b03e28; +} + +.error { +color:red; +font-weight:700; +} + +.areabegin { +float:left; +margin:5px; +} + +.areaclose { +clear:both; +} + +#TOOLTIP { +position:absolute; +width:400px; +z-index:5; +visibility:hidden; +} + +.subtitle,td { +font-size:10px; +} + +.description,.channel { +font-size:9px; +} + +a,a:visited,a:active,a:link { +color:#000; +text-decoration:none; +} + +a:hover { +color:#9a0a33; +text-decoration:none; +} + +table.wait,table.rcbutton { +border-collapse:separate; +border-spacing:3px; +} + +.suggestlink { +padding: 2px 6px 2px 6px; +} + +.suggestover { +background-color: #d2d2d2; +padding: 2px 6px 2px 6px; +} + +.suggestbox { +width:135px; +visibility:hidden; +position: absolute; +text-align: left; +background-color: #e2e2e2; +border:1px solid #CCC; +} + +#slideframe{
+height:125px;
+position:relative;
+overflow:hidden;
+margin:5px; +} +
+#slideleft{
+width:50px;
+height:100%;
+position:absolute;
+left:0px;
+z-index:10;
+padding:1px; +background:url(images/blank.gif) repeat; +text-align:left; +} +
+#slideright{
+width:50px;
+height:100%;
+position:absolute;
+right:0px;
+z-index:10;
+padding:1px;
+background:url(images/blank.gif) repeat; +text-align:right; +} +
+#slidelist{
+position:absolute;
+height:auto;
+}
+ +#slidelist #slideend{
+float:left;
+}
+ +#slidelist img{
+float:left;
+padding:1px;
+} diff --git a/skins/stone_flat/tlist.tmpl b/skins/stone_flat/tlist.tmpl new file mode 100644 index 0000000..17a12de --- /dev/null +++ b/skins/stone_flat/tlist.tmpl @@ -0,0 +1,242 @@ +<!-- tlist --> +<?% USE date %?> +<body class="frame"> +<div id="body"> +<?% ######################################################################## %?> +<?% aus = gettext('Off') %?> +<?% an = gettext('On') %?> +<?% enableform = ( allow('ttoggle') || allow('tdelete') ) && data.size > 1 %?> +<?% ######################################################################## %?> +<?% minuten = 0 %?> +<?% BLOCK summe %?> + <?% IF aktiv == 1; # Errechnen der Differenzen + minuten = minuten + (duration div 60); + END %?> +<?% END %?> +<?% ######################################################################## %?> +<?% BLOCK printsumme %?> + <?% IF minuten > 0 %?> + <p class="description" style="padding: 0; margin-left: <?% width %?>px;"><?% minuten div 60 %?>:<?% minuten mod 60 FILTER format('%02d')%?></p> + <?% END %?> +<?% END %?> +<?% ######################################################################## %?> +<?% BLOCK RowButtons %?> + <a href="?cmd=search&data=<?% url( title.split('~').first ) %?>"> + <img src="images/find.<?% global.imagetyp %?>" alt="" title="<?% gettext("Search for repeats") %?>" /> + </a> + <?% IF allow('tedit') %?> + <a href="javascript:popup('tedit','<?% id %?>',620,670,1)"> + <img src="images/edit.<?% global.imagetyp %?>" alt="" title="<?% gettext("Edit this timer") %?>" /> + </a> + <?% END %?> + <?% IF allow('tdelete') %?> + <a href="javascript:surecmd('<?% gettext("You would delete follow timers?") %?>','<?% escape(title) %?><?% IF subtitle != "";"~";escape(subtitle);END %?>','tdelete','<?% id %?>',620,670)"> + <img src="images/delete.<?% global.imagetyp %?>" alt="" title="<?% gettext("Delete timer") %?>" /> + </a> + <?% END %?> +<?% END %?> +<?% ######################################################################## %?> +<?% BLOCK SetState %?> + <?% state = '' %?> + <?% UNLESS aktiv %?> + <?% state = "deactive" %?> + <?% ELSIF conflict %?> + <?% state = "problem" %?> + <?% ELSIF param.runningTimer.exists(id) %?> + <?% state = "running" %?> + <?% END %?> +<?% END %?> +<?% ######################################################################## %?> +<?% BLOCK StateImage %?> + <?% IF aktiv %?> + <?% IF param.capacity && param.capacity div 60 <= minuten %?> + <img id='toggle<?% id %?>' src="images/warning.<?% global.imagetyp %?>" alt="" title="<?% gettext("Not enough space to record this timer!") %?>" /> + <?% ELSE %?> + <img id='toggle<?% id %?>' src="images/on.<?% global.imagetyp %?>" alt="" title="<?% an %?>" /> + <?% END %?> + <?% ELSE %?> + <img id='toggle<?% id %?>' src="images/off.<?% global.imagetyp %?>" alt="" title="<?% aus %?>" /> + <?% END %?> +<?% END %?> +<?% ######################################################################## %?> +<?% BLOCK ItemAsFlat %?> + <?% PROCESS SetState %?> + <tr id="item<?% id %?>" valign="bottom" <?% ' class="two"' IF z mod 2 == 0 %?>> + <td class="fieldinline"> + <?% IF allow('ttoggle') %?> + <a href="javascript:toggle('ttoggle','<?% id %?>')"> + <?% END %?> + <?% PROCESS StateImage %?> + <?% '</a>' IF allow('ttoggle') %?> + </td> + <td class="fieldinline"> + <?% IF allow('program') %?><a class="fieldinline" href="?cmd=program&data=<?% channel %?><?% IF eventid %?>#E<?% eventid %?><?% END %?>" title="<?% gettext("Jump to program guide:") %?><?% sender %?>" style="vertical-align:bottom;"><?% END %?> + <font class="channel<?% IF state != "";" ";state;END %?>"><?% channel %?>.</font> <font class="title<?% IF state != "";" ";state;END %?>"><?% sender %?></font> + <?% '</a>' IF allow('program') %?> + </td> + <td class="fieldinline"> + <?% IF enableform %?> + <input class="push" type="checkbox" value="<?% id %?>" name="<?% title %?><?% IF subtitle != "";"~";subtitle;END %?>" /> + <?% END %?> + <font class="description<?% IF state != "";" ";state;END %?>"> + <?% start %?>-<?% stop %?> + <?% "(VPS)" IF vps %?> + </font> + </td> + <td class="fieldinline"> + <?% IF allow('tedit') %?> + <a href="javascript:popup('tedit','<?% id %?>',620,670,1)" class="fieldinline"> + <?% END %?> + <font class="title<?% IF state != "";" ";state;END %?>"><?% title %?></font> + <?% IF subtitle.length > 0 %?> + <font class="subtitle<?% IF state != "";" ";state;END %?>"> - <?% subtitle %?></font> + <?% END %?> + <?% '</a>' IF allow('tedit') %?> + </td> + <td class="fieldinline push"> + <?% INCLUDE widgets/tooltip.inc cmd="display" linkid=eventid ttp_offset=-300 %?> + <?% PROCESS RowButtons %?> + </td> + </tr> + <?% IF global.hideDescription != 1 && description.length > 0 %?> + <tr id="desc<?% id %?>"<?% ' class="two"' IF z mod 2 == 0 %?>> + <td class="fieldinline" colspan="2"> </td> + <td class="fieldinline" colspan="3"> + <a href="javascript:popup('display','<?% eventid %?>',620,670,0)" class="fieldinline"> + <font class="description<?% IF state != "";" ";state;END %?>"><?% chop(description,100,1) %?></font> + </a> + </td> + </tr> + <?% END %?> +<?% END %?> +<?% ######################################################################## %?> +<h1><?% gettext("Planned recordings") %?></h1> +<?% IF data.size > 1 %?> +<?% fields = data.shift %?> +<form name="tlist" action=""> + <?% z = 1 %?> + <?% FOREACH zeile = data %?> + <?% IF debug;"<!-- Item: ";FOREACH x = zeile;loop.count - 1;":";x.replace("-"," ");"|";END;"-->";END %?> + <?%- id=zeile.0; + aktiv= ( zeile.1 ? zeile.1 mod 2 : 0 ); + sender=zeile.2; + channel=zeile.3; + datum=zeile.4; + start=zeile.5; + stop=zeile.6; + title=zeile.7; + priority=zeile.8; + conflict=zeile.10; + eventid=zeile.11; + autotimerid=zeile.12; + duration=zeile.13; + description=zeile.14; + t = zeile.7.split('~');IF t.size > 1;subtitle = t.pop;ELSE;subtitle="";END;title=t.join('~'); + vps= ( zeile.1 ? zeile.1 mod 8 div 4 : 0 ); + day = date.format(zeile.9, "%A, %x", locale) %?> + <?% IF !old.defined || day != old %?> + <?% IF old.defined %?> + </table> + </td> + </tr> + <tr><td class="largebottom"></td></tr> + </table> + <?% PROCESS printsumme width=780 %?> + <?% END %?> + <table class="largetable" summary=""> + <tr><td class="largehead"><?% day %?></td></tr> + <tr> + <td class="largetext" align="left"> + <table summary="" width="100%"> + <?% z = 1 %?> + <tr height="0"><th width="20"></th><th width="130"></th><th width="130"></th><th></th><th width="60" align="right"></th></tr> + <?% END %?> + <?% PROCESS summe %?> + <?% PROCESS ItemAsFlat %?> + <?% old = day %?> + <?% z = z + 1 %?> + <?% END %?> + </table> + </td> + </tr> + <tr><td class="largebottom"></td></tr> + </table> + <?% PROCESS printsumme width=780 %?> +</form> +<?% END %?> +</div> +<!-- ###### Seite ###### --> +<div id="sidebar"> +<?% IF enableform || allow('tnew') || allow('tupdate') %?> + <table summary=""> + <tr><td class="sidehead"><?% gettext("Timers",20) %?></td></tr> + <tr> + <td class="sidetext"> +<?% IF allow('topten') %?> + <a href="?cmd=topten"><img src="images/topten.<?% global.imagetyp %?>" alt="" /></a> + <a href="?cmd=topten"><?% gettext("TopTen Entrys",20) %?></a><br /> +<?% END %?> +<?% IF allow('tnew') %?> + <a href="javascript:popupcmd('tnew',620,670,1)"><img src="images/new.<?% global.imagetyp %?>" alt="" /></a> + <a href="javascript:popupcmd('tnew',620,670,1)"><?% gettext("Create a new timer",20) %?></a><br /> +<?% END %?> +<?% IF allow('tupdate') %?> + <a href="javascript:fire('tupdate','0')"><img src="images/refresh.<?% global.imagetyp %?>" alt="" /></a> + <a href="javascript:fire('tupdate','0')"><?% gettext("Update timers",20) %?></a> +<?% END %?> + </td> + </tr> + <tr> + <td class="sidebottom"></td> + </tr> + </table> +<?% END %?> +<?% IF enableform %?> + <table summary=""> + <tr><td class="sidehead"><?% gettext("Select") %?></td></tr> + <tr> + <td class="sidetext"> + <a href="javascript:selAll(document.tlist,1)"><img src="images/select.<?% global.imagetyp %?>" alt="" /></a> + <a href="javascript:selAll(document.tlist,1)"><?% gettext("Select all",20) %?></a><br /> + <a href="javascript:selAll(document.tlist,0)"><img src="images/deselect.<?% global.imagetyp %?>" alt="" /></a> + <a href="javascript:selAll(document.tlist,0)"><?% gettext("Unselect all",20) %?></a><br /> + <a href="javascript:reverse(document.tlist)"><img src="images/invers.<?% global.imagetyp %?>" alt="" /></a> + <a href="javascript:reverse(document.tlist)"><?% gettext("Reverse select",20) %?></a> + </td> + </tr> + <tr> + <td class="sidetext"> +<?% IF allow('ttoggle') %?> + <a href="javascript:selToggle('<?% gettext("You have nothing selected!") %?>',document.tlist)"><img src="images/onoff.<?% global.imagetyp %?>" alt="" /></a> + <a href="javascript:selToggle('<?% gettext("You have nothing selected!") %?>',document.tlist)"><?% gettext("Toggle timer",20) %?></a><br /> +<?% END %?> +<?% IF allow('tdelete') %?> + <a href="javascript:DeleteSelected('<?% gettext("You would delete follow timers?") %?>','<?% gettext("You have nothing selected!") %?>','tdelete',document.tlist,620,670)"><img src="images/delete.<?% global.imagetyp %?>" alt="" /></a> + <a href="javascript:DeleteSelected('<?% gettext("You would delete follow timers?") %?>','<?% gettext("You have nothing selected!") %?>','tdelete',document.tlist,620,670)"><?% gettext("Delete timer",20) %?></a><br /> +<?% END %?> + </td> + </tr> + <tr> + <td class="sidebottom"></td> + </tr> + </table> +<?% END %?> + <table summary=""> + <tr><td class="sidehead"><?% gettext("Search for timers",20) %?></td></tr> + <tr> + <td class="sidetext"> + <form name="searchform" action=""> + <input type="hidden" name="cmd" value="tsearch" /> + <input type="text" id="timertext" name="data" alt="<?% gettext("Search for timers") %?>" + onkeyup="suggest('tsuggest','timertext','timersuggest');" + <?% IF cgi.param('cmd')=='ts' || cgi.param('cmd')=='tsearch' %?>value="<?% cgi.param('data')%?>"<?% END %?> + autocomplete="off" /> + <br /><div class="suggestbox" id="timersuggest"></div> + </form> + </td> + </tr> + <tr><td class="sidebottom"></td></tr> + </table> + <p id="sidefooter"> </p> +</div> +<?% INCLUDE header.inc %?> diff --git a/skins/stone_flat/tooltip.js b/skins/stone_flat/tooltip.js new file mode 120000 index 0000000..ebad6a3 --- /dev/null +++ b/skins/stone_flat/tooltip.js @@ -0,0 +1 @@ +../stone/tooltip.js
\ No newline at end of file diff --git a/skins/stone_flat/topten.tmpl b/skins/stone_flat/topten.tmpl new file mode 100644 index 0000000..df7fa38 --- /dev/null +++ b/skins/stone_flat/topten.tmpl @@ -0,0 +1,146 @@ +<!-- topten --> +<?% USE date %?> +<body class="frame"> +<div id="body"> +<?% ######################################################################## %?> +<?% BLOCK RowButtons %?> + <a href="?cmd=search&data=<?% url( title ) %?>"> + <img src="images/find.<?% global.imagetyp %?>" alt="" title="<?% gettext("Search for repeats") %?>" /> + </a> + <?% IF param.timers.${id} && allow('tedit') %?> + <a href="javascript:popup('tedit','<?% param.timers.${id}.Id %?>',620,670,1)"> + <img src="images/onoff.<?% global.imagetyp %?>" alt="" title="<?% gettext("Edit this Timer") %?>" /> + </a> + <?% ELSIF allow('tnew') %?> + <a href="javascript:popup('tnew','<?% id %?>',620,670,1)"> + <img src="images/record.<?% global.imagetyp %?>" alt="" title="<?% gettext("To record") %?>" /> + </a> + <?% END %?> +<?% END %?> +<?% ######################################################################## %?> +<?% BLOCK SetState %?> + <?% state = '' %?> + <?% IF param.runningTimer.exists(id) %?> + <?% state = "running" %?> + <?% ELSIF param.timers.exists(id) %?> + <?% UNLESS param.timers.${id}.Status %?> + <?% state = "deactive" %?> + <?% ELSE %?> + <?% state = "active" %?> + <?% END %?> + <?% END %?> +<?% END %?> +<?% ######################################################################## %?> +<?% BLOCK ItemAsFlat %?> + <?% PROCESS SetState %?> + <tr<?% ' class="two"' IF z mod 2 == 0 %?>> + <td class="fieldinline"> + <a class="fieldinline<?% IF state != "";" ";state;END %?>" style="vertical-align:bottom;" href="?cmd=program&data=<?% channel %?><?% IF id > 0 %?>#E<?% id %?><?% END %?>" title="<?% gettext("Program guide for") %?> <?% sender %?>"> + <font class="channel<?% IF state != "";" ";state;END %?>"><?% channel %?>. <?% chop(sender,20) %?></font></a> + </td> + <td class="fieldinline"> + <a href="javascript:popup('display','<?% id %?>',620,670,0)" class="fieldinline"> + <font class="title<?% IF state != "";" ";state;END %?>"><?% chop(title,45) %?></font> + <?% IF subtitle.length > 0 %?><font class="subtitle<?% IF state != "";" ";state;END %?>"> - <?% chop(subtitle,55) %?></font><?% END %?> + </a> + </td> + <td class="fieldinline subtitle<?% IF state != "";" ";state;END %?>" style="white-space: nowrap"> + <?% date.format(start,"%x %X",locale) %?> + </td> + <td class="fieldinline push"> + <?% INCLUDE widgets/tooltip.inc cmd="display" eventid=id linkid=id ttp_offset=-300 %?> + <?% PROCESS RowButtons %?> + </td> + </tr> + <?% IF global.hideDescription != 1 && description.length > 0 %?> + <tr<?% ' class="two"' IF z mod 2 == 0 %?>> + <td class="fieldinline" > </td> + <td class="fieldinline" colspan="4"> + <a href="javascript:popup('display','<?% id %?>',620,670,0)" class="fieldinline"> + <font class="description<?% IF state != "";" ";state;END %?>"><?% chop(description,100,1) %?></font> + </a> + </td> + </tr> + <?% END %?> +<?% END %?> +<?% ######################################################################## %?> +<?% IF data.size > 1 %?> +<?% fields = data.shift %?> +<h1><?% gettext("TopTen Entrys") %?></h1> + <?% FOREACH zeile = data %?> + <?% IF debug;"<!-- Item: ";FOREACH x = zeile;loop.count - 1;":";x.replace("-"," ");"|";END;"-->";END %?> + <?% id=zeile.0;title=zeile.1;subtitle=zeile.2;description=zeile.3;channel_id=zeile.4;start=zeile.5;video=zeile.6;audio=zeile.7;rank=zeile.8;level=zeile.9;count=zeile.10 %?> + <?% chid_enc = reentities(channel_id) %?> + <?% channel = param.channels.$chid_enc.POS %?> + <?% sender = param.channels.$chid_enc.Name %?> + <?% IF !old.defined || 1 != old %?> + <?% IF old.defined %?> + </table> + </td> + </tr> + <tr><td class="largebottom"></td></tr> +</table> + <?% END %?> +<table class="largetable" summary=""> + <tr><td class="largehead"><?% day %?></td></tr> + <tr> + <td class="largetext" align="left"> + <table summary="" width="100%"> + <?% z = 1 %?> + <tr height="0"><th width="120"></th><th></th><th width="60"></th><th width="40" align="right"></th></tr> + <?% END %?> + <?% PROCESS ItemAsFlat %?> + <?% old = 1 %?> + <?% z = z + 1 %?> + <?% END %?> + </table> + </td> + </tr> + <tr><td class="largebottom"></td></tr> +</table> +<?% END %?> +</div> +<!-- ###### Seite ###### --> +<div id="sidebar"> +<?% IF enableform || allow('tnew') || allow('tupdate') %?> + <table summary=""> + <tr><td class="sidehead"><?% gettext("Timers",20) %?></td></tr> + <tr> + <td class="sidetext"> +<?% IF allow('topten') %?> + <a href="?cmd=topten"><img src="images/topten.<?% global.imagetyp %?>" alt="" /></a> + <a href="?cmd=topten"><?% gettext("TopTen Entrys",20) %?></a><br /> +<?% END %?> +<?% IF allow('tnew') %?> + <a href="javascript:popupcmd('tnew',620,670,1)"><img src="images/new.<?% global.imagetyp %?>" alt="" /></a> + <a href="javascript:popupcmd('tnew',620,670,1)"><?% gettext("Create a new timer",20) %?></a><br /> +<?% END %?> +<?% IF allow('tupdate') %?> + <a href="javascript:fire('tupdate','0')"><img src="images/refresh.<?% global.imagetyp %?>" alt="" /></a> + <a href="javascript:fire('tupdate','0')"><?% gettext("Update timers",20) %?></a><br /> +<?% END %?> + </td> + </tr> + <tr> + <td class="sidebottom"></td> + </tr> + </table> +<?% END %?> + <table summary=""> + <tr><td class="sidehead"><?% gettext("Search",20) %?></td></tr> + <tr> + <td class="sidetext"> + <form method="post" action="?cmd=tsearch" name="searchform"> + <input type="text" id="timertext" name="data" alt="<?% gettext("Search for timers") %?>" + onkeyup="suggest('tsuggest','timertext','timersuggest');" + <?% IF cgi.param('cmd')=='ts' || cgi.param('cmd')=='tsearch' %?>value="<?% cgi.param('data')%?>"<?% END %?> + autocomplete="off" /> + <br /><div class="suggestbox" id="timersuggest"></div> + </form> + </td> + </tr> + <tr><td class="sidebottom"></td></tr> + </table> + <p id="sidefooter"> </p> +</div> +<?% INCLUDE header.inc %?> diff --git a/skins/stone_flat/tsearch.tmpl b/skins/stone_flat/tsearch.tmpl new file mode 120000 index 0000000..d1d3655 --- /dev/null +++ b/skins/stone_flat/tsearch.tmpl @@ -0,0 +1 @@ +tlist.tmpl
\ No newline at end of file diff --git a/skins/stone_flat/ulist.tmpl b/skins/stone_flat/ulist.tmpl new file mode 100644 index 0000000..9a117c5 --- /dev/null +++ b/skins/stone_flat/ulist.tmpl @@ -0,0 +1,77 @@ +<!-- ulist Template --> +<body class="frame"> +<div id="body"> +<?% ######################################################################## %?> +<?% BLOCK RowButtons %?> +<?% IF allow('uedit') %?> + <a href="javascript:popup('uedit','<?% id %?>',620,670,1)"> + <img src="images/edit.<?% global.imagetyp %?>" alt="" title="<?% gettext("Edit account of user") %?>" /> + </a> +<?% END %?> +<?% IF allow('udelete') %?> + <a href="javascript:sureandreload('<?% gettext("You will delete this account of user") %?>','<?% escape(user) %?>','udelete','<?% id %?>')"> + <img src="images/delete.<?% global.imagetyp %?>" alt="" title="<?% gettext("Delete account of user") %?>" /> + </a> +<?% END %?> +<?% END %?> +<?% ######################################################################## %?> +<?% BLOCK ItemAsFlat %?> + <tr<?% ' class="two"' IF loop.count mod 2 == 0 %?>> + <td> + <?% IF allow('uedit') %?> + <a title="<?% gettext("Edit account of user") %?>" href="javascript:popup('uedit','<?% id %?>',620,670,1)" class="fieldinline" > + <?% END %?> + <strong><?% user %?></strong> + <?% IF allow('uedit') %?> + </a> + <?% END %?> + </td> + <td align="right"> + <?% right %?> + </td> + <td class="push"> + <?% PROCESS RowButtons %?> + </td> + </tr> +<?% END %?> +<?% ######################################################################## %?> +<h1><?% gettext("Administration of User") %?></h1> +<?% IF data.size > 1 %?> +<?% fields = data.shift %?> + <table class="largetable" summary=""> + <tr><td class="largehead"><?% gettext("Administration of User") %?></td></tr> + <tr> + <td class="largetext" align="left"> + <table summary="" width="100%"> + <tr height="0"><th></th><th></th><th width="60" align="right"></th></tr> + <?% FOREACH zeile = data %?> + <?% IF debug;"<!-- Item: ";FOREACH x = zeile;loop.count - 1;":";x.replace("-"," ");"|";END;"-->";END %?> + <?% id=zeile.0;user=zeile.1;right=zeile.2 %?> + <?% PROCESS ItemAsFlat %?> + <?% END %?> + </table> + </td> + </tr> + <tr><td class="largebottom"></td></tr> + </table> +<?% END %?> +</div> +<!-- ###### Seite ###### --> +<div id="sidebar"> + <table summary=""> + <tr><td class="sidehead"><?% gettext("Administration of User",20) %?></td></tr> +<?% IF allow('unew') %?> + <tr> + <td class="sidetext"> + <a title="<?% gettext("Create a new account for user") %?>" href="javascript:popupcmd('unew',620,670,1)"><img src="images/new.<?% global.imagetyp %?>" alt="" title="<?% gettext("Create a new account for user") %?>" /></a> + <a title="<?% gettext("Create a new account for user") %?>" href="javascript:popupcmd('unew',620,670,1)"><?% gettext("Create a new account for user",20) %?></a><br /> + </td> + </tr> +<?% END %?> + <tr> + <td class="sidebottom"></td> + </tr> + </table> + <p id="sidefooter"> </p> +</div> +<?% INCLUDE header.inc %?> diff --git a/skins/stone_flat/vitals.tmpl b/skins/stone_flat/vitals.tmpl new file mode 100644 index 0000000..f8f9e20 --- /dev/null +++ b/skins/stone_flat/vitals.tmpl @@ -0,0 +1,107 @@ +<!-- Vitals Template --> +<?% IF ! global.bodyinc.defined;global.bodyinc = 1 %?> +<body class="frame"> +<?% INCLUDE status.inc %?> +<?% INCLUDE header.inc %?> +<div id="body"> +<?% END %?> + +<?% + USE date; + statusfiles = []; + + FILTER null; + name = 'vitals'; + loaddata = []; + utildata = []; + userdata = []; + timestamps = []; + FOREACH item = param.stack; + t = date.format(item.timestamp, '%H:%M:%S'); + timestamps.push(t); + l = item.load.first * 10; + loaddata.push(l); + utildata.push(item.util); + userdata.push(item.users); + END; + + # Maximum wert + max = loaddata.nsort.last; + IF utildata.nsort.last > max; + max = utildata.nsort.last; + END; + IF userdata.nsort.last > max; + max = userdata.nsort.last; + END; + max = ( max + (max div 10) + 0.9 ) div 1; + + # Data ... + d = [ + timestamps , + loaddata , + userdata , + utildata , + ]; + + USE my_graph = GD.Graph.lines(575,300); + + # Xsteps + steps = param.stack.size div 5; + label = gettext('Average load'); + my_graph.set( + x_label_skip => steps, + x_long_ticks => 1, + + y_long_ticks => 1, + y_max_value => max, + + line_width => 2, + box_axis => 1, + boxclr => '#FFFFCC', + fgclr => '#BBBBBB' + legend_placement => 'RD', + legend_spacing => 5, + ); + my_graph.set_title_font(param.font,10); + my_graph.set_y_label_font(param.font,10); + my_graph.set_x_label_font(param.font,10); + my_graph.set_x_axis_font(param.font,6); + my_graph.set_y_axis_font(param.font,6); + my_graph.set_legend( 'Load (x10)', 'User', 'Util'); + file = writefile("status_${name}.gif", my_graph.plot(d).gif ); + statusfiles.push([label, file]); + END; + %?> + +<?% IF param.headingText %?> +<h1><?% param.headingText %?></h1> +<?% END %?> + +<table class="editortable" summary=""> + <tr><td class="editorhead"> </td></tr> + <tr> + <td class="editortext" align="center"> + <table summary="" width="100%"> + <?% FOREACH name = data.keys.sort %?> + <tr<?% ' class="two"' IF loop.count mod 2 == 0 %?>> + <td><?% name %?></td> + <td><?% data.$name.replace('\n', '<br />') %?></td> + </tr> + <?% END %?> + </table> + </td> + </tr> + <tr><td class="editorbottom"></td></tr> +</table> + +<?% FOREACH file = statusfiles %?> +<table class="editortable" summary=""> + <tr><td class="editorhead"><?% file.0 %?></td></tr> + <tr> + <td class="editortext" align="center"> + <img src="<?% file.1 %?>" alt="<?% file.0 %?>" /> + </td> + </tr> + <tr><td class="editorbottom"></td></tr> +</table> +<?% END %?> diff --git a/skins/stone_flat/widgets b/skins/stone_flat/widgets new file mode 120000 index 0000000..3a021d7 --- /dev/null +++ b/skins/stone_flat/widgets @@ -0,0 +1 @@ +../stone/widgets/
\ No newline at end of file |
