summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Brachold <vdr07@deltab.de>2008-01-03 11:56:27 +0000
committerAndreas Brachold <vdr07@deltab.de>2008-01-03 11:56:27 +0000
commit51899785cc76d32a71b043b6a19d3c8e904355e2 (patch)
treed817e1b7f77bafe84b1418474213eda1140a92bf
parent8222d826a768795076a655fcc057a218b7f8e933 (diff)
downloadxxv-51899785cc76d32a71b043b6a19d3c8e904355e2.tar.gz
xxv-51899785cc76d32a71b043b6a19d3c8e904355e2.tar.bz2
* STREAM: Add embed player of playback (selectable widget)
* GRAB: Check range of parameter width/height * HTTPD: Some times missing footer * EPG: display deliver channelid for stream * Skins: remove skin.cfg / global.playbackmode * Skins: add skin.cfg / global.preferedlocal as default button for Switch inside VDR or web cast * Skins: format images to common size * Skins: Add more images (mute,loud,quiet) * Skins: Player with selectable widget (vlc/default media)
-rw-r--r--html/program.tmpl2
-rw-r--r--html/rdisplay.tmpl2
-rw-r--r--html/topten.tmpl11
-rw-r--r--html/widgets/player.tmpl205
-rw-r--r--lib/XXV/MODULES/CHANNELS.pm4
-rw-r--r--lib/XXV/MODULES/EPG.pm3
-rw-r--r--lib/XXV/MODULES/GRAB.pm40
-rw-r--r--lib/XXV/MODULES/HTTPD.pm5
-rw-r--r--lib/XXV/MODULES/RECORDS.pm15
-rw-r--r--lib/XXV/MODULES/STREAM.pm130
-rw-r--r--lib/XXV/OUTPUT/Html.pm3
-rw-r--r--locale/de.po346
-rw-r--r--locale/de/LC_MESSAGES/xxv.mobin71086 -> 71911 bytes
13 files changed, 553 insertions, 213 deletions
diff --git a/html/program.tmpl b/html/program.tmpl
index 195fdb8..8fe07b1 100644
--- a/html/program.tmpl
+++ b/html/program.tmpl
@@ -36,7 +36,7 @@
</form>
<td>
<a href='?cmd=switch&amp;data=<?% channelpos %?>'>[<?% gettext('Switch') %?>]</a>
- <a href='?cmd=livestream&amp;data=<?% channelpos %?>' type='audio/x-mpegurl'>[<?% gettext('Livestream') %?>]</a>
+ <a href='?cmd=livestream&amp;data=<?% channelpos %?>'>[<?% gettext('Live TV web cast') %?>]</a>
</td>
</tr>
</table>
diff --git a/html/rdisplay.tmpl b/html/rdisplay.tmpl
index 112c447..e1833fa 100644
--- a/html/rdisplay.tmpl
+++ b/html/rdisplay.tmpl
@@ -84,7 +84,7 @@
<a href="?cmd=redit&amp;data=<?% data.RecordId %?>">[<?% gettext("Edit recording") %?>]</a>&nbsp;
<?% END %?>
<?% IF allow('playrecord') %?>
- <a href="?cmd=playrecord&amp;data=<?% data.RecordId %?>">[<?% gettext("Watch recording") %?>]</a>&nbsp;
+ <a href="?cmd=playrecord&amp;data=<?% data.RecordId %?>">[<?% gettext("Watch recording as web cast") %?>]</a>&nbsp;
<?% END %?>
<?% IF allow('rplay') %?>
<a href="?cmd=rplay&amp;data=<?% data.RecordId %?>">[<?% gettext("Watch recording in VDR") %?>]</a>&nbsp;
diff --git a/html/topten.tmpl b/html/topten.tmpl
index b01c220..8ebe7f5 100644
--- a/html/topten.tmpl
+++ b/html/topten.tmpl
@@ -14,17 +14,6 @@
<table>
<tr>
-<!--
-<div id="navcontainer">
-<ul id="navlist">
- <li><a href="#" onclick="suche('<?% gettext('Search string:') %?>', '?cmd=search&__channel=<?% channelpos %?>&data=', '<?% cgi.param('search') %?>')">
- <?% gettext("Search on Channel") %?></a></li>
- <li><a href='?cmd=switch&amp;data=<?% channelpos %?>'><?% gettext('Switch') %?></a></li>
- <li><a href='?cmd=livestream&amp;data=<?% channelpos %?>' type='audio/x-mpegurl'><?% gettext('Livestream') %?></a></li>
-</ul>
-</div>
--->
-
<table border="0" width="95%">
<?% IF data.size %?>
<?% fields = data.shift %?>
diff --git a/html/widgets/player.tmpl b/html/widgets/player.tmpl
index 0a4db13..d6354e8 100644
--- a/html/widgets/player.tmpl
+++ b/html/widgets/player.tmpl
@@ -1,20 +1,187 @@
-<br>
<!-- player -->
- <OBJECT id='mediaPlayer' width="320" height="285"
- classid='CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95'
- codebase='http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701'
- standby='Loading Microsoft Windows Media Player components...' type='application/x-oleobject'>
- <param name='fileName' value="<?% data %?>">
- <param name='animationatStart' value='true'>
- <param name='transparentatStart' value='true'>
- <param name='autoStart' value="true">
- <param name='showControls' value="true">
- <param name='loop' value="true">
- <EMBED type='application/x-mplayer2'
- pluginspage='http://microsoft.com/windows/mediaplayer/en/download/'
- id='mediaPlayer' name='mediaPlayer' displaysize='4' autosize='-1'
- bgcolor='darkblue' showcontrols="true" showtracker='-1'
- showdisplay='0' showstatusbar='-1' videoborder3d='-1' width="320" height="285"
- src="<?% data %?>" autostart="true" designtimesp='5311' loop="true">
- </EMBED>
- </OBJECT>
+<?% width = param.width %?>
+<?% height = param.height %?>
+<?% widget = param.widget %?>
+
+<?% IF info.http_useragent.match('.*MSIE.*') && !info.http_useragent.match('.*Opera.*');
+ msie = 1;
+ELSE;
+ msie = 0;
+END %?>
+
+
+
+<h1><?% param.title %?></h1>
+
+<?% IF widget == 'vlc' && !msie %?>
+
+<!-- vlc with mozilla -->
+<script language="javascript">
+<!--
+ function volume_up()
+ {
+ var previous = document.vlc.get_volume();
+ var newvolume = previous + 10;
+ if( newvolume > 200 ) newvolume = 200;
+ document.vlc.set_volume( newvolume );
+ var volume = document.getElementById("volume_status");
+ var current = document.vlc.get_volume();
+ volume.innerHTML = current + " %";
+ }
+
+ function volume_down()
+ {
+ var previous = document.vlc.get_volume();
+ var newvolume = previous - 10;
+ if( newvolume < 0 ) newvolume = 0;
+ document.vlc.set_volume( newvolume );
+ var current = document.vlc.get_volume();
+ volume.innerHTML = current + " %";
+ }
+ function status()
+ {
+ var play_status = document.getElementById("play_status");
+ play_status.innerHTML = document.vlc.isplaying()
+ ? "<?% gettext("Playing") %?>"
+ : "<?% gettext("Not playing") %?>";
+ setTimeout("status()", 1000 );
+ }
+//-->
+</script>
+<p align='center'>
+ <embed type="application/x-vlc-plugin"
+ pluginspage="http://www.videolan.org/vlc"
+ name="vlc"
+ autoplay="yes" loop="no" height="<?% height %?>" width="<?% width %?>"
+ target="<?% data %?>" />
+<br />
+ <input type="button" id="play" value="<?% gettext("Playback") %?>" onClick='document.vlc.play()' />
+ <input type="button" id="pause" value="<?% gettext("Pause") %?>" onClick='document.vlc.pause()' />
+ <input type="button" id="stop" value="<?% gettext("Stop") %?>" onClick='document.vlc.stop()' />
+ &nbsp;
+ <input type="button" id="quiet" value="<?% gettext("Decrease volume") %?>" onClick='volume_down()' />
+ <input type="button" id="loud" value="<?% gettext("Increase volume") %?>" onClick='volume_up()' />
+ <input type="button" id="mute" value="<?% gettext("Mute") %?>" onClick='document.vlc.mute()' />
+ &nbsp;
+ <input type="button" id="fullscreen" value="<?% gettext("Full screen") %?>" onClick='document.vlc.fullscreen()' />
+<br />
+ <table summary="">
+ <tr><td><?% gettext("Status") %?> : </td>
+ <td><span id="play_status"><?% gettext("Unknown") %?></span></td></tr>
+ <tr><td><?% gettext("Volume") %?> : </td><td><span id="volume_status"></span></td></tr>
+ </table>
+</p>
+
+<script language="javascript">
+<!--
+ var volume = document.getElementById("volume_status");
+ var current = document.vlc.get_volume();
+ volume.innerHTML = current + " %";
+ setTimeout("status()", 1 );
+//-->
+</script>
+
+
+<?% ELSIF widget == 'vlc' %?>
+
+<!-- vlc with activeX -->
+<p align='center'>
+ <object classid="clsid:E23FE9C6-778E-49D4-B537-38FCDE4887D8"
+ codebase="http://downloads.videolan.org/pub/videolan/vlc/latest/win32/axvlc.cab"
+ height="<?% height %?>" width="<?% width %?>" id="vlc" events="True">
+ <param name="Src" value="<?% data %?>" />
+ <param name="ShowDisplay" value="True" />
+ <param name="Loop" value="False" />
+ <param name="AutoPlay" value="True" />
+ </object>
+<br />
+ <input type="button" id="play" value="<?% gettext("Playback") %?>" onClick='doPlayOrPause()' />
+ <input type="button" id="pause" value="<?% gettext("Pause") %?>" onClick='doPlayOrPause()' />
+ <input type="button" id="stop" value="<?% gettext("Stop") %?>" onClick='document.vlc.stop()' />
+ &nbsp;
+ <input type="button" id="mute" value="<?% gettext("Mute") %?>" onClick='document.vlc.toggleMute()' />
+<br />
+ <table summary="">
+ <tr><td><?% gettext("Status") %?> : </td>
+ <td><span id="play_status"><?% gettext("Unknown") %?></span></td></tr>
+ </table>
+</p>
+
+<script LANGUAGE="JScript">
+<!--
+var sliderTimerId = 0;
+
+function onPlay() {
+ document.getElementById("play_status").value = "<?% gettext("Playing") %?>";
+};
+function onPause() {
+ document.getElementById("play_status").value = "<?% gettext("Paused") %?>";
+};
+function onStop() {
+ document.getElementById("play_status").value = "<?% gettext("Not playing") %?>";
+};
+
+function doUpdate() {
+ if( vlc.Playing ) {
+ sliderTimerId = setTimeout("doUpdate()", 1000);
+ }
+ else {
+ onStop();
+ sliderTimerId = 0;
+ }
+};
+
+function doPlayOrPause() {
+ if( document.vlc.playing ) {
+ document.vlc.pause();
+ }
+ else {
+ document.vlc.play();
+ }
+};
+function vlc::play() {
+ if( ! sliderTimerId ) {
+ sliderTimerId = setTimeout("doUpdate()", 1000);
+ }
+ onPlay();
+};
+function vlc::pause() {
+ if( sliderTimerId ) {
+ clearTimeout(sliderTimerId)
+ sliderTimerId = 0;
+ }
+ onPause();
+};
+function vlc::stop() {
+ if( sliderTimerId ) {
+ clearTimeout(sliderTimerId)
+ sliderTimerId = 0;
+ }
+ onStop();
+};
+//-->
+</script>
+<?% ELSE %?>
+<!-- media player with activeX -->
+<p align='center'>
+ <object id="mediaPlayer" width="<?% width %?>" height="<?% height %?>"
+ classid="CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95"
+ codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701"
+ standby="Loading Microsoft Windows Media Player components..." type="application/x-oleobject">
+ <param name="fileName" value="<?% data %?>" />
+ <param name="animationatStart" value="true" />
+ <param name="transparentatStart" value="true" />
+ <param name="autoStart" value="true" />
+ <param name="showControls" value="true" />
+ <param name="loop" value="true" />
+ <embed type="application/x-mplayer2"
+ pluginspage="http://microsoft.com/windows/mediaplayer/en/download/"
+ id="mediaPlayer" name="mediaPlayer" displaysize="4" autosize="-1"
+ bgcolor='darkblue' showcontrols="true" showtracker="-1"
+ showdisplay="0" showstatusbar="-1" videoborder3d="-1" width="<?% width %?>" height="<?% height %?>"
+ src="<?% data %?>" autostart="true" designtimesp="5311" loop="true">
+ </embed>
+ </object>
+</p>
+<?% END %?>
+
diff --git a/lib/XXV/MODULES/CHANNELS.pm b/lib/XXV/MODULES/CHANNELS.pm
index f1e4464..d0719e8 100644
--- a/lib/XXV/MODULES/CHANNELS.pm
+++ b/lib/XXV/MODULES/CHANNELS.pm
@@ -1014,12 +1014,12 @@ sub _brandNewChannels {
foreach my $chpos (sort {$erg->{$a} <=> $erg->{$b}} keys %$erg) {
my $c = $erg->{$chpos};
$text .= sprintf(gettext('New %s channel: %s on position: %d %s'),
- ($c->{VPID} > 5 or index('+', $c->{VPID})
+ ($c->{VPID}
? gettext('TV')
: gettext('Radio')),
$c->{Name},
$c->{POS},
- (index('+', $c->{VPID}) || $c->{VPID} == 1 ? gettext('(encrypted)') : ''),
+ (($c->{CA} && $c->{CA} > 5) ? gettext('(encrypted)') : ''),
);
}
diff --git a/lib/XXV/MODULES/EPG.pm b/lib/XXV/MODULES/EPG.pm
index 98470a4..a5f0e4d 100644
--- a/lib/XXV/MODULES/EPG.pm
+++ b/lib/XXV/MODULES/EPG.pm
@@ -778,7 +778,8 @@ SELECT SQL_CACHE
(unix_timestamp(e.starttime) + e.duration - unix_timestamp())/duration*100 as \'$f{'Percent'}\',
e.video as __Video,
e.audio as __Audio,
- IF(e.vpstime!=0,$vps,'') as __PDC
+ IF(e.vpstime!=0,$vps,'') as __PDC,
+ e.channel_id as __channel_id
from
$table as e,CHANNELS as c
where
diff --git a/lib/XXV/MODULES/GRAB.pm b/lib/XXV/MODULES/GRAB.pm
index b341a76..c1582a4 100644
--- a/lib/XXV/MODULES/GRAB.pm
+++ b/lib/XXV/MODULES/GRAB.pm
@@ -28,12 +28,28 @@ sub module {
default => 320,
type => 'integer',
required => gettext('This is required!'),
+ check => sub{
+ my $value = shift || 0;
+ if($value =~ /^\d+$/sig and $value >= 8 and $value < 4096) {
+ return int($value);
+ } else {
+ return undef, gettext('Value incorrect!');
+ }
+ },
},
ysize => {
description => gettext('Image height'),
default => 240,
type => 'integer',
required => gettext('This is required!'),
+ check => sub{
+ my $value = shift || 0;
+ if($value =~ /^\d+$/sig and $value >= 8 and $value < 4096) {
+ return int($value);
+ } else {
+ return undef, gettext('Value incorrect!');
+ }
+ }
},
overlay => {
description => gettext('Text to display in the grabbed picture.'),
@@ -49,6 +65,14 @@ sub module {
description => gettext('Vertical position of displayed text, in pixels.'),
default => 10,
type => 'integer',
+ check => sub{
+ my $value = shift || 0;
+ if($value =~ /^\d+$/sig and $value >= 8 and $value < 4096) {
+ return int($value);
+ } else {
+ return undef, gettext('Value incorrect!');
+ }
+ }
},
font => {
description => gettext('TrueType font to draw overlay text'),
@@ -60,11 +84,27 @@ sub module {
description => gettext('Font size to draw image text (only for ttf font!).'),
default => 10,
type => 'integer',
+ check => sub{
+ my $value = shift || 0;
+ if($value =~ /^\d+$/sig and $value >= 1 and $value < 100) {
+ return int($value);
+ } else {
+ return undef, gettext('Value incorrect!');
+ }
+ }
},
imgquality => {
description => gettext('Quality from image in percent.'),
default => 80,
type => 'integer',
+ check => sub{
+ my $value = shift || 0;
+ if($value =~ /^\d+$/sig and $value >= 1 and $value < 100) {
+ return int($value);
+ } else {
+ return undef, gettext('Value incorrect!');
+ }
+ }
},
},
Commands => {
diff --git a/lib/XXV/MODULES/HTTPD.pm b/lib/XXV/MODULES/HTTPD.pm
index 26fb07c..be18755 100644
--- a/lib/XXV/MODULES/HTTPD.pm
+++ b/lib/XXV/MODULES/HTTPD.pm
@@ -317,14 +317,12 @@ sub communicator
}
} else {
$obj->handleInput($watcher, $console, $cgi);
- $console->footer()
- unless($console->{TYP} eq 'AJAX'
- or $console->{noFooter});
}
} else {
$obj->ModulNotLoaded($console,'USER');
}
+ $console->footer() if($console->{inclFooter});
$console->printout();
# make entry more readable
@@ -481,7 +479,6 @@ sub handleInput {
if($cmdobj and not $shorterr) {
if($cmdobj->{binary}) {
- $console->{noFooter} = 1;
$console->{nocache} = 1
if($cmdobj->{binary} eq 'nocache');
}
diff --git a/lib/XXV/MODULES/RECORDS.pm b/lib/XXV/MODULES/RECORDS.pm
index 0b447d3..705984f 100644
--- a/lib/XXV/MODULES/RECORDS.pm
+++ b/lib/XXV/MODULES/RECORDS.pm
@@ -2118,12 +2118,25 @@ ORDER BY
# ------------------
+sub IdToData {
+# ------------------
+ my $obj = shift || return error('No object defined!');
+ my $id = shift || return undef;
+
+ my $sth = $obj->{dbh}->prepare('SELECT SQL_CACHE * from RECORDS as r, OLDEPG as e where e.eventid = r.eventid and RecordMD5 = ?');
+ $sth->execute($id)
+ or return error sprintf("Couldn't execute query: %s.",$sth->errstr);
+ my $erg = $sth->fetchrow_hashref();
+ return $erg;
+}
+
+# ------------------
sub IdToPath {
# ------------------
my $obj = shift || return error('No object defined!');
my $id = shift || return undef;
- my $sth = $obj->{dbh}->prepare('SELECT SQL_CACHE Path from RECORDS where RecordMD5 = ?');
+ my $sth = $obj->{dbh}->prepare('SELECT SQL_CACHE Path from RECORDS where RecordMD5 = ?');
$sth->execute($id)
or return error sprintf("Couldn't execute query: %s.",$sth->errstr);
my $erg = $sth->fetchrow_hashref();
diff --git a/lib/XXV/MODULES/STREAM.pm b/lib/XXV/MODULES/STREAM.pm
index 2267017..7928dfd 100644
--- a/lib/XXV/MODULES/STREAM.pm
+++ b/lib/XXV/MODULES/STREAM.pm
@@ -32,36 +32,64 @@ sub module {
type => 'host',
required => gettext('This is required!'),
},
- streamtyp => {
+ method => {
description => gettext('Typ of streaming'),
- default => 1,
+ default => 'http',
type => 'list',
- choices => sub {
- my $erg = $obj->_get_streamtyp();
- map { my $x = $_->[1]; $_->[1] = $_->[0]; $_->[0] = $x; } @$erg;
- return @$erg;
- },
+ choices => [
+ [ gettext('HTTP Streaming'), 'http' ],
+ [ gettext('Remote SMB/NFS share'),'smb' ],
+ ],
required => gettext('This is required!'),
- check => sub {
- my $value = int(shift) || 0;
- my $erg = $obj->_get_streamtyp();
- unless($value >= $erg->[0]->[0] and $value <= $erg->[-1]->[0]) {
- return undef,
- sprintf(gettext('Sorry, but value must be between %d and %d'),
- $erg->[0]->[0],$erg->[-1]->[0]);
- }
- return $value;
- },
+ },
+ mimetyp => {
+ description => gettext('Used mime type to deliver video streams'),
+ default => 'video/x-mpegurl',
+ type => 'string',
},
netvideo => {
description => gettext('Base directory of remote SMB/NFS share.'),
default => '\\\\vdr\\video',
type => 'string',
},
- mimetyp => {
- description => gettext('Used mime type to deliver video streams'),
- default => 'video/x-mpegurl',
- type => 'string',
+ widget => {
+ description => gettext('Used stream widget'),
+ type => 'list',
+ default => 'vlc',
+ choices => [
+ [gettext("Other external player"), 'external'],
+ [gettext('Embed media player'), 'media'],
+ [gettext('Embed vlc player'), 'vlc'],
+ ],
+ required => gettext("This is required!"),
+ },
+ width => {
+ description => gettext('Stream widget width'),
+ default => 720,
+ type => 'integer',
+ required => gettext('This is required!'),
+ check => sub{
+ my $value = shift || 0;
+ if($value =~ /^\d+$/sig and $value >= 8 and $value < 4096) {
+ return int($value);
+ } else {
+ return undef, gettext('Value incorrect!');
+ }
+ },
+ },
+ height => {
+ description => gettext('Stream widget height'),
+ default => 576,
+ type => 'integer',
+ required => gettext('This is required!'),
+ check => sub{
+ my $value = shift || 0;
+ if($value =~ /^\d+$/sig and $value >= 8 and $value < 4096) {
+ return int($value);
+ } else {
+ return undef, gettext('Value incorrect!');
+ }
+ },
},
},
Commands => {
@@ -131,6 +159,7 @@ sub livestream {
my $watcher = shift || return error('No watcher defined!');
my $console = shift || return error('No console defined!');
my $channel = shift || return con_err($console,gettext("No channel defined for streaming!"));
+ my $params = shift;
return $console->err(gettext("Can't stream files!"))
unless($console->can('datei'));
@@ -141,6 +170,18 @@ sub livestream {
return $console->err(sprintf(gettext("This channel '%s' does not exist!"),$channel))
unless($ch);
+ if($obj->{widget} ne 'external' && (!$params || !(exists $params->{player}))) {
+ my $data = sprintf("?cmd=livestream&__player=1&data=%s",$ch);
+
+ my $param = {
+ title => $cmod->ChannelToName($ch),
+ widget => $obj->{widget},
+ width => $obj->{width},
+ height => $obj->{height},
+ };
+ return $console->player($data, $param);
+ }
+
my $cpos = $cmod->ChannelToPos($ch);
debug sprintf('Live stream with channel "%s"%s',
$cmod->ChannelToName($ch),
@@ -171,20 +212,39 @@ sub playrecord {
my $params = shift;
my $rmod = main::getModule('RECORDS');
- my $videopath = $rmod->{videodir};
- my $path = $rmod->IdToPath($recid)
+ my $result = $rmod->IdToData($recid)
or return $console->err(gettext(sprintf("Couldn't find recording: '%s'", $recid)));
- my @files = bsd_glob("$path/[0-9][0-9][0-9].vdr");
-
- return $console->err(gettext(sprintf("Couldn't find recording: '%s'", $recid)))
- unless scalar(@files);
-
my $start = 0;
my $offset = 0;
if($params && exists $params->{start}) {
$start = &text2frame($params->{start});
}
+
+ if($obj->{widget} ne 'external' && (!$params || !(exists $params->{player}))) {
+ my $data = sprintf("?cmd=playrecord&__player=1&data=%s",$recid);
+ $data .= sprintf("&__start=%d", $start) if($start);
+
+ my $param = {
+ title => $result->{title},
+ widget => $obj->{widget},
+ width => $obj->{width},
+ height => $obj->{height},
+ };
+ $param->{title} .= '~' . $result->{subtitle} if($result->{subtitle});
+
+ return $console->player($data, $param);
+ }
+
+ return $console->err(gettext(sprintf("Couldn't find recording: '%s'", $recid)))
+ unless $result->{Path};
+
+ my $path = $result->{Path};
+ my @files = bsd_glob("$path/[0-9][0-9][0-9].vdr");
+
+ return $console->err(gettext(sprintf("Couldn't find recording: '%s'", $recid)))
+ unless scalar(@files);
+
if($start) {
my ($filenumber,$fileoffset) = $rmod->frametofile($path,$start);
splice(@files, 0, $filenumber-1) if($filenumber && ($filenumber - 1) > 0);
@@ -196,7 +256,7 @@ sub playrecord {
( $console->{USER} && $console->{USER}->{Name} ? sprintf(' from user: %s', $console->{USER}->{Name}) : "" )
);
- if($obj->{streamtyp} != 1) {
+ if($obj->{method} eq 'http') {
return $console->err(gettext("Can't stream files!"))
unless($console->can('stream'));
@@ -207,6 +267,8 @@ sub playrecord {
return $console->err(gettext("Can't stream files!"))
unless($console->can('datei'));
+ my $videopath = $rmod->{videodir};
+
my $data;
$data = "#EXTM3U\r\n";
foreach my $file (@files) {
@@ -229,14 +291,4 @@ sub playrecord {
}
}
-# ------------------
-sub _get_streamtyp {
-# ------------------
- my $obj = shift || return error('No object defined!');
-
- return [
- [ 1, gettext('Remote SMB/NFS share') ],
- [ 2, gettext('HTTP Streaming') ],
- ];
-}
1;
diff --git a/lib/XXV/OUTPUT/Html.pm b/lib/XXV/OUTPUT/Html.pm
index 2d8d1bc..af98b59 100644
--- a/lib/XXV/OUTPUT/Html.pm
+++ b/lib/XXV/OUTPUT/Html.pm
@@ -47,7 +47,6 @@ sub AUTOLOAD {
my $output = $obj->parseTemplate($name, $data, $params);
$obj->out( $output );
-
$obj->{call} = '';
}
@@ -139,6 +138,8 @@ sub parseTemplate {
my $output;
unless(defined $obj->{header}) {
$output .= $obj->parseTemplateFile("start", $data, $params);
+ # we must add footer on any template generated output
+ $obj->{inclFooter} = 1;
}
$output .= $obj->parseTemplateFile($name, $data, $params,((exists $obj->{call}) ? $obj->{call} : 'nothing'));
return $output;
diff --git a/locale/de.po b/locale/de.po
index 3716db6..1ee8f32 100644
--- a/locale/de.po
+++ b/locale/de.po
@@ -1,15 +1,15 @@
# Deutsche Übersetzung der XXV Pakets.
-# Copyright (C) 2004-2007 THE PACKAGE'S COPYRIGHT HOLDER
+# Copyright (C) 2004-2008 THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the XXV package.
#
-# Andreas Brachold <anbr at users.berlios.de>, 2004-2007
+# Andreas Brachold <anbr at users.berlios.de>, 2004-2008
# Tobias Grimm <tg@e-tobi.net> 2005
#
msgid ""
msgstr ""
"Project-Id-Version: XXV 1.1\n"
"POT-Creation-Date: 2005-01-12 18:55\n"
-"PO-Revision-Date: 2007-12-30 14:22+0100\n"
+"PO-Revision-Date: 2008-01-03 12:31+0100\n"
"Last-Translator: Andreas Brachold <anbr at users.berlios.de>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
#--------------------
-#: ../bin/xxvd:101 ../bin/xxvd:116 ../bin/xxvd:89 ../bin/xxvd:95 ../lib/XXV/MODULES/AUTOTIMER.pm:31 ../lib/XXV/MODULES/AUTOTIMER.pm:677 ../lib/XXV/MODULES/CHANNELS.pm:29 ../lib/XXV/MODULES/CHANNELS.pm:35 ../lib/XXV/MODULES/CHANNELS.pm:701 ../lib/XXV/MODULES/CHANNELS.pm:727 ../lib/XXV/MODULES/CHANNELS.pm:740 ../lib/XXV/MODULES/CHANNELS.pm:779 ../lib/XXV/MODULES/CHANNELS.pm:805 ../lib/XXV/MODULES/CHRONICLE.pm:28 ../lib/XXV/MODULES/EPG.pm:36 ../lib/XXV/MODULES/EPG.pm:42 ../lib/XXV/MODULES/EPG.pm:48 ../lib/XXV/MODULES/EVENTS.pm:34 ../lib/XXV/MODULES/GRAB.pm:30 ../lib/XXV/MODULES/GRAB.pm:36 ../lib/XXV/MODULES/HTTPD.pm:61 ../lib/XXV/MODULES/HTTPD.pm:67 ../lib/XXV/MODULES/HTTPD.pm:73 ../lib/XXV/MODULES/HTTPD.pm:79 ../lib/XXV/MODULES/HTTPD.pm:85 ../lib/XXV/MODULES/HTTPD.pm:92 ../lib/XXV/MODULES/INTERFACE.pm:33 ../lib/XXV/MODULES/INTERFACE.pm:39 ../lib/XXV/MODULES/INTERFACE.pm:45 ../lib/XXV/MODULES/LOGREAD.pm:32 ../lib/XXV/MODULES/LOGREAD.pm:38 ../lib/XXV/MODULES/LOGREAD.pm:44 ../lib/XXV/MODULES/LOGREAD.pm:50 ../lib/XXV/MODULES/MEDIALIB.pm:34 ../lib/XXV/MODULES/MEDIALIB.pm:40 ../lib/XXV/MODULES/MEDIALIB.pm:46 ../lib/XXV/MODULES/MEDIALIB.pm:52 ../lib/XXV/MODULES/MEDIALIB.pm:58 ../lib/XXV/MODULES/MOVETIMER.pm:27 ../lib/XXV/MODULES/MOVETIMER.pm:364 ../lib/XXV/MODULES/MOVETIMER.pm:377 ../lib/XXV/MODULES/MOVETIMER.pm:386 ../lib/XXV/MODULES/MOVETIMER.pm:399 ../lib/XXV/MODULES/MUSIC.pm:40 ../lib/XXV/MODULES/MUSIC.pm:46 ../lib/XXV/MODULES/MUSIC.pm:52 ../lib/XXV/MODULES/MUSIC.pm:58 ../lib/XXV/MODULES/MUSIC.pm:69 ../lib/XXV/MODULES/MUSIC.pm:75 ../lib/XXV/MODULES/RECORDS.pm:1810 ../lib/XXV/MODULES/RECORDS.pm:1824 ../lib/XXV/MODULES/RECORDS.pm:1838 ../lib/XXV/MODULES/RECORDS.pm:1857 ../lib/XXV/MODULES/RECORDS.pm:2411 ../lib/XXV/MODULES/RECORDS.pm:2423 ../lib/XXV/MODULES/RECORDS.pm:40 ../lib/XXV/MODULES/RECORDS.pm:46 ../lib/XXV/MODULES/RECORDS.pm:52 ../lib/XXV/MODULES/RECORDS.pm:58 ../lib/XXV/MODULES/RECORDS.pm:64 ../lib/XXV/MODULES/RECORDS.pm:76 ../lib/XXV/MODULES/RECORDS.pm:92 ../lib/XXV/MODULES/REMOTE.pm:28 ../lib/XXV/MODULES/REMOTE.pm:34 ../lib/XXV/MODULES/REMOTE.pm:40 ../lib/XXV/MODULES/REPORT.pm:30 ../lib/XXV/MODULES/REPORT.pm:46 ../lib/XXV/MODULES/ROBOT.pm:29 ../lib/XXV/MODULES/SHARE.pm:53 ../lib/XXV/MODULES/SHARE.pm:70 ../lib/XXV/MODULES/SHARE.pm:76 ../lib/XXV/MODULES/STATUS.pm:32 ../lib/XXV/MODULES/STATUS.pm:38 ../lib/XXV/MODULES/STATUS.pm:43 ../lib/XXV/MODULES/STATUS.pm:49 ../lib/XXV/MODULES/STREAM.pm:33 ../lib/XXV/MODULES/STREAM.pm:44 ../lib/XXV/MODULES/SVDRP.pm:30 ../lib/XXV/MODULES/SVDRP.pm:36 ../lib/XXV/MODULES/SVDRP.pm:42 ../lib/XXV/MODULES/TELNET.pm:29 ../lib/XXV/MODULES/TELNET.pm:35 ../lib/XXV/MODULES/TELNET.pm:41 ../lib/XXV/MODULES/TELNET.pm:47 ../lib/XXV/MODULES/TIMERS.pm:29 ../lib/XXV/MODULES/TIMERS.pm:636 ../lib/XXV/MODULES/TIMERS.pm:639 ../lib/XXV/MODULES/TIMERS.pm:657 ../lib/XXV/MODULES/TIMERS.pm:677 ../lib/XXV/MODULES/TIMERS.pm:773 ../lib/XXV/MODULES/USER.pm:268 ../lib/XXV/MODULES/USER.pm:360 ../lib/XXV/MODULES/USER.pm:366 ../lib/XXV/MODULES/USER.pm:391 ../lib/XXV/MODULES/USER.pm:68 ../lib/XXV/MODULES/VTX.pm:33 ../lib/XXV/MODULES/VTX.pm:39 ../lib/XXV/MODULES/WAPD.pm:43 ../lib/XXV/MODULES/WAPD.pm:49 ../lib/XXV/MODULES/WAPD.pm:55 ../lib/XXV/MODULES/WAPD.pm:61 ../lib/XXV/MODULES/WAPD.pm:67 ../lib/XXV/MODULES/WAPD.pm:74 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:100 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:118 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:124 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:130 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:70 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:107 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:34 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:64 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:82 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:96 ../lib/XXV/OUTPUT/NEWS/RSS.pm:33 ../lib/XXV/OUTPUT/NEWS/RSS.pm:63 ../lib/XXV/OUTPUT/NEWS/VDR.pm:30 ../lib/XXV/OUTPUT/NEWS/VDR.pm:60
+#: ../bin/xxvd:101 ../bin/xxvd:116 ../bin/xxvd:89 ../bin/xxvd:95 ../lib/XXV/MODULES/AUTOTIMER.pm:31 ../lib/XXV/MODULES/AUTOTIMER.pm:677 ../lib/XXV/MODULES/CHANNELS.pm:29 ../lib/XXV/MODULES/CHANNELS.pm:35 ../lib/XXV/MODULES/CHANNELS.pm:701 ../lib/XXV/MODULES/CHANNELS.pm:727 ../lib/XXV/MODULES/CHANNELS.pm:740 ../lib/XXV/MODULES/CHANNELS.pm:779 ../lib/XXV/MODULES/CHANNELS.pm:805 ../lib/XXV/MODULES/CHRONICLE.pm:28 ../lib/XXV/MODULES/EPG.pm:36 ../lib/XXV/MODULES/EPG.pm:42 ../lib/XXV/MODULES/EPG.pm:48 ../lib/XXV/MODULES/EVENTS.pm:34 ../lib/XXV/MODULES/GRAB.pm:30 ../lib/XXV/MODULES/GRAB.pm:44 ../lib/XXV/MODULES/HTTPD.pm:61 ../lib/XXV/MODULES/HTTPD.pm:67 ../lib/XXV/MODULES/HTTPD.pm:73 ../lib/XXV/MODULES/HTTPD.pm:79 ../lib/XXV/MODULES/HTTPD.pm:85 ../lib/XXV/MODULES/HTTPD.pm:92 ../lib/XXV/MODULES/INTERFACE.pm:33 ../lib/XXV/MODULES/INTERFACE.pm:39 ../lib/XXV/MODULES/INTERFACE.pm:45 ../lib/XXV/MODULES/LOGREAD.pm:32 ../lib/XXV/MODULES/LOGREAD.pm:38 ../lib/XXV/MODULES/LOGREAD.pm:44 ../lib/XXV/MODULES/LOGREAD.pm:50 ../lib/XXV/MODULES/MEDIALIB.pm:34 ../lib/XXV/MODULES/MEDIALIB.pm:40 ../lib/XXV/MODULES/MEDIALIB.pm:46 ../lib/XXV/MODULES/MEDIALIB.pm:52 ../lib/XXV/MODULES/MEDIALIB.pm:58 ../lib/XXV/MODULES/MOVETIMER.pm:27 ../lib/XXV/MODULES/MOVETIMER.pm:364 ../lib/XXV/MODULES/MOVETIMER.pm:377 ../lib/XXV/MODULES/MOVETIMER.pm:386 ../lib/XXV/MODULES/MOVETIMER.pm:399 ../lib/XXV/MODULES/MUSIC.pm:40 ../lib/XXV/MODULES/MUSIC.pm:46 ../lib/XXV/MODULES/MUSIC.pm:52 ../lib/XXV/MODULES/MUSIC.pm:58 ../lib/XXV/MODULES/MUSIC.pm:69 ../lib/XXV/MODULES/MUSIC.pm:75 ../lib/XXV/MODULES/RECORDS.pm:1810 ../lib/XXV/MODULES/RECORDS.pm:1824 ../lib/XXV/MODULES/RECORDS.pm:1838 ../lib/XXV/MODULES/RECORDS.pm:1857 ../lib/XXV/MODULES/RECORDS.pm:2424 ../lib/XXV/MODULES/RECORDS.pm:2436 ../lib/XXV/MODULES/RECORDS.pm:40 ../lib/XXV/MODULES/RECORDS.pm:46 ../lib/XXV/MODULES/RECORDS.pm:52 ../lib/XXV/MODULES/RECORDS.pm:58 ../lib/XXV/MODULES/RECORDS.pm:64 ../lib/XXV/MODULES/RECORDS.pm:76 ../lib/XXV/MODULES/RECORDS.pm:92 ../lib/XXV/MODULES/REMOTE.pm:28 ../lib/XXV/MODULES/REMOTE.pm:34 ../lib/XXV/MODULES/REMOTE.pm:40 ../lib/XXV/MODULES/REPORT.pm:30 ../lib/XXV/MODULES/REPORT.pm:46 ../lib/XXV/MODULES/ROBOT.pm:29 ../lib/XXV/MODULES/SHARE.pm:53 ../lib/XXV/MODULES/SHARE.pm:70 ../lib/XXV/MODULES/SHARE.pm:76 ../lib/XXV/MODULES/STATUS.pm:32 ../lib/XXV/MODULES/STATUS.pm:38 ../lib/XXV/MODULES/STATUS.pm:43 ../lib/XXV/MODULES/STATUS.pm:49 ../lib/XXV/MODULES/STREAM.pm:33 ../lib/XXV/MODULES/STREAM.pm:43 ../lib/XXV/MODULES/STREAM.pm:64 ../lib/XXV/MODULES/STREAM.pm:70 ../lib/XXV/MODULES/STREAM.pm:84 ../lib/XXV/MODULES/SVDRP.pm:30 ../lib/XXV/MODULES/SVDRP.pm:36 ../lib/XXV/MODULES/SVDRP.pm:42 ../lib/XXV/MODULES/TELNET.pm:29 ../lib/XXV/MODULES/TELNET.pm:35 ../lib/XXV/MODULES/TELNET.pm:41 ../lib/XXV/MODULES/TELNET.pm:47 ../lib/XXV/MODULES/TIMERS.pm:29 ../lib/XXV/MODULES/TIMERS.pm:636 ../lib/XXV/MODULES/TIMERS.pm:639 ../lib/XXV/MODULES/TIMERS.pm:664 ../lib/XXV/MODULES/TIMERS.pm:760 ../lib/XXV/MODULES/USER.pm:268 ../lib/XXV/MODULES/USER.pm:360 ../lib/XXV/MODULES/USER.pm:366 ../lib/XXV/MODULES/USER.pm:391 ../lib/XXV/MODULES/USER.pm:68 ../lib/XXV/MODULES/VTX.pm:33 ../lib/XXV/MODULES/VTX.pm:39 ../lib/XXV/MODULES/WAPD.pm:43 ../lib/XXV/MODULES/WAPD.pm:49 ../lib/XXV/MODULES/WAPD.pm:55 ../lib/XXV/MODULES/WAPD.pm:61 ../lib/XXV/MODULES/WAPD.pm:67 ../lib/XXV/MODULES/WAPD.pm:74 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:100 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:118 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:124 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:130 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:70 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:107 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:34 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:64 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:82 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:96 ../lib/XXV/OUTPUT/NEWS/RSS.pm:33 ../lib/XXV/OUTPUT/NEWS/RSS.pm:63 ../lib/XXV/OUTPUT/NEWS/VDR.pm:30 ../lib/XXV/OUTPUT/NEWS/VDR.pm:60
msgid "This is required!"
msgstr "Das ist erforderlich!"
@@ -272,17 +272,17 @@ msgid "Detailed program information"
msgstr "Detailierte Programminformation"
#--------------------
-#: ../html/display.tmpl:21 ../html/display.tmpl:44 ../lib/XXV/MODULES/EPG.pm:753 ../lib/XXV/MODULES/EPG.pm:926
+#: ../html/display.tmpl:21 ../html/display.tmpl:44 ../lib/XXV/MODULES/EPG.pm:753 ../lib/XXV/MODULES/EPG.pm:927
msgid "Percent"
msgstr "Prozent"
#--------------------
-#: ../html/display.tmpl:25 ../html/rdisplay.tmpl:149 ../html/search.tmpl:54 ../html/topten.tmpl:32 ../lib/XXV/MODULES/AUTOTIMER.pm:436 ../lib/XXV/MODULES/CHRONICLE.pm:168 ../lib/XXV/MODULES/CHRONICLE.pm:207 ../lib/XXV/MODULES/EPG.pm:749 ../lib/XXV/MODULES/EPG.pm:849 ../lib/XXV/MODULES/EPG.pm:923 ../lib/XXV/MODULES/RECORDS.pm:1848 ../lib/XXV/MODULES/TIMERS.pm:1136
+#: ../html/display.tmpl:25 ../html/rdisplay.tmpl:149 ../html/search.tmpl:54 ../html/topten.tmpl:21 ../lib/XXV/MODULES/AUTOTIMER.pm:436 ../lib/XXV/MODULES/CHRONICLE.pm:168 ../lib/XXV/MODULES/CHRONICLE.pm:207 ../lib/XXV/MODULES/EPG.pm:749 ../lib/XXV/MODULES/EPG.pm:850 ../lib/XXV/MODULES/EPG.pm:924 ../lib/XXV/MODULES/RECORDS.pm:1848 ../lib/XXV/MODULES/TIMERS.pm:1123
msgid "Channel"
msgstr "Kanal"
#--------------------
-#: ../html/display.tmpl:27 ../html/topten.tmpl:32 ../lib/XXV/MODULES/AUTOTIMER.pm:1064 ../lib/XXV/MODULES/CHRONICLE.pm:165 ../lib/XXV/MODULES/CHRONICLE.pm:204 ../lib/XXV/MODULES/EPG.pm:746 ../lib/XXV/MODULES/EPG.pm:847 ../lib/XXV/MODULES/EPG.pm:921 ../lib/XXV/MODULES/MOVETIMER.pm:527 ../lib/XXV/MODULES/MUSIC.pm:607 ../lib/XXV/MODULES/RECORDS.pm:1494 ../lib/XXV/MODULES/RECORDS.pm:1569 ../lib/XXV/MODULES/TIMERS.pm:1133 ../lib/XXV/MODULES/USER.pm:525
+#: ../html/display.tmpl:27 ../html/topten.tmpl:21 ../lib/XXV/MODULES/AUTOTIMER.pm:1064 ../lib/XXV/MODULES/CHRONICLE.pm:165 ../lib/XXV/MODULES/CHRONICLE.pm:204 ../lib/XXV/MODULES/EPG.pm:746 ../lib/XXV/MODULES/EPG.pm:848 ../lib/XXV/MODULES/EPG.pm:922 ../lib/XXV/MODULES/MOVETIMER.pm:527 ../lib/XXV/MODULES/MUSIC.pm:607 ../lib/XXV/MODULES/RECORDS.pm:1494 ../lib/XXV/MODULES/RECORDS.pm:1569 ../lib/XXV/MODULES/TIMERS.pm:1120 ../lib/XXV/MODULES/USER.pm:525
msgid "Service"
msgstr "Service"
@@ -312,12 +312,12 @@ msgid "Search with OFDb"
msgstr "Suche mit OFDb"
#--------------------
-#: ../html/display.tmpl:60 ../lib/XXV/MODULES/AUTOTIMER.pm:445 ../lib/XXV/MODULES/AUTOTIMER.pm:639 ../lib/XXV/MODULES/EPG.pm:752 ../lib/XXV/MODULES/RECORDS.pm:1862 ../lib/XXV/MODULES/RECORDS.pm:2042 ../lib/XXV/MODULES/TIMERS.pm:786 ../lib/XXV/OUTPUT/Console.pm:169
+#: ../html/display.tmpl:60 ../lib/XXV/MODULES/AUTOTIMER.pm:445 ../lib/XXV/MODULES/AUTOTIMER.pm:639 ../lib/XXV/MODULES/EPG.pm:752 ../lib/XXV/MODULES/RECORDS.pm:1862 ../lib/XXV/MODULES/RECORDS.pm:2042 ../lib/XXV/MODULES/TIMERS.pm:773 ../lib/XXV/OUTPUT/Console.pm:169
msgid "Description"
msgstr "Beschreibung"
#--------------------
-#: ../html/display.tmpl:69 ../html/rlist.tmpl:243 ../html/rsearch.tmpl:243 ../html/topten.tmpl:32 ../lib/XXV/MODULES/AUTOTIMER.pm:1068 ../lib/XXV/MODULES/AUTOTIMER.pm:439 ../lib/XXV/MODULES/AUTOTIMER.pm:442 ../lib/XXV/MODULES/CHRONICLE.pm:170 ../lib/XXV/MODULES/CHRONICLE.pm:209 ../lib/XXV/MODULES/EPG.pm:750 ../lib/XXV/MODULES/EPG.pm:850 ../lib/XXV/MODULES/EPG.pm:924 ../lib/XXV/MODULES/TIMERS.pm:1137
+#: ../html/display.tmpl:69 ../html/rlist.tmpl:243 ../html/rsearch.tmpl:243 ../html/topten.tmpl:21 ../lib/XXV/MODULES/AUTOTIMER.pm:1068 ../lib/XXV/MODULES/AUTOTIMER.pm:439 ../lib/XXV/MODULES/AUTOTIMER.pm:442 ../lib/XXV/MODULES/CHRONICLE.pm:170 ../lib/XXV/MODULES/CHRONICLE.pm:209 ../lib/XXV/MODULES/EPG.pm:750 ../lib/XXV/MODULES/EPG.pm:851 ../lib/XXV/MODULES/EPG.pm:925 ../lib/XXV/MODULES/TIMERS.pm:1124
msgid "Start"
msgstr "Start"
@@ -327,7 +327,7 @@ msgid "PDC"
msgstr "VPS"
#--------------------
-#: ../html/display.tmpl:75 ../lib/XXV/MODULES/AUTOTIMER.pm:1069 ../lib/XXV/MODULES/AUTOTIMER.pm:440 ../lib/XXV/MODULES/AUTOTIMER.pm:443 ../lib/XXV/MODULES/CHRONICLE.pm:171 ../lib/XXV/MODULES/CHRONICLE.pm:210 ../lib/XXV/MODULES/EPG.pm:751 ../lib/XXV/MODULES/EPG.pm:851 ../lib/XXV/MODULES/EPG.pm:925 ../lib/XXV/MODULES/TIMERS.pm:1138
+#: ../html/display.tmpl:75 ../html/widgets/player.tmpl:100 ../html/widgets/player.tmpl:60 ../lib/XXV/MODULES/AUTOTIMER.pm:1069 ../lib/XXV/MODULES/AUTOTIMER.pm:440 ../lib/XXV/MODULES/AUTOTIMER.pm:443 ../lib/XXV/MODULES/CHRONICLE.pm:171 ../lib/XXV/MODULES/CHRONICLE.pm:210 ../lib/XXV/MODULES/EPG.pm:751 ../lib/XXV/MODULES/EPG.pm:852 ../lib/XXV/MODULES/EPG.pm:926 ../lib/XXV/MODULES/TIMERS.pm:1125
msgid "Stop"
msgstr "Stopp"
@@ -469,7 +469,7 @@ msgid "Edit channels"
msgstr "Kanäle bearbeiten"
#--------------------
-#: ../html/help.tmpl:87 ../lib/XXV/MODULES/HTTPD.pm:103 ../lib/XXV/MODULES/TIMERS.pm:1134 ../lib/XXV/MODULES/WAPD.pm:84
+#: ../html/help.tmpl:87 ../html/widgets/player.tmpl:105 ../html/widgets/player.tmpl:69 ../lib/XXV/MODULES/HTTPD.pm:103 ../lib/XXV/MODULES/TIMERS.pm:1121 ../lib/XXV/MODULES/WAPD.pm:84
msgid "Status"
msgstr "Status"
@@ -644,7 +644,7 @@ msgid "Save"
msgstr "Speichern"
#--------------------
-#: ../html/mlcopy.tmpl:23 ../html/mledit.tmpl:23 ../html/mlimport.tmpl:23 ../html/rlist.tmpl:241 ../html/rsearch.tmpl:241 ../html/topten.tmpl:32 ../lib/XXV/MODULES/AUTOTIMER.pm:434 ../lib/XXV/MODULES/AUTOTIMER.pm:637 ../lib/XXV/MODULES/CHRONICLE.pm:166 ../lib/XXV/MODULES/CHRONICLE.pm:205 ../lib/XXV/MODULES/EPG.pm:747 ../lib/XXV/MODULES/EPG.pm:848 ../lib/XXV/MODULES/EPG.pm:922 ../lib/XXV/MODULES/MEDIALIB.pm:1300 ../lib/XXV/MODULES/MUSIC.pm:610 ../lib/XXV/MODULES/RECORDS.pm:1495 ../lib/XXV/MODULES/RECORDS.pm:1570 ../lib/XXV/MODULES/TIMERS.pm:1139
+#: ../html/mlcopy.tmpl:23 ../html/mledit.tmpl:23 ../html/mlimport.tmpl:23 ../html/rlist.tmpl:241 ../html/rsearch.tmpl:241 ../html/topten.tmpl:21 ../lib/XXV/MODULES/AUTOTIMER.pm:434 ../lib/XXV/MODULES/AUTOTIMER.pm:637 ../lib/XXV/MODULES/CHRONICLE.pm:166 ../lib/XXV/MODULES/CHRONICLE.pm:205 ../lib/XXV/MODULES/EPG.pm:747 ../lib/XXV/MODULES/EPG.pm:849 ../lib/XXV/MODULES/EPG.pm:923 ../lib/XXV/MODULES/MEDIALIB.pm:1300 ../lib/XXV/MODULES/MUSIC.pm:610 ../lib/XXV/MODULES/RECORDS.pm:1495 ../lib/XXV/MODULES/RECORDS.pm:1570 ../lib/XXV/MODULES/TIMERS.pm:1126
msgid "Title"
msgstr "Titel"
@@ -904,19 +904,19 @@ msgid "Program guide for"
msgstr "Programm für"
#--------------------
-#: ../html/program.tmpl:25 ../html/topten.tmpl:21
+#: ../html/program.tmpl:25
msgid "Search on Channel"
msgstr "Suche im Kanal"
#--------------------
-#: ../html/program.tmpl:38 ../html/topten.tmpl:22 ../wml/program.tmpl:45
+#: ../html/program.tmpl:38 ../wml/program.tmpl:45
msgid "Switch"
msgstr "Umschalten"
#--------------------
-#: ../html/program.tmpl:39 ../html/topten.tmpl:23
-msgid "Livestream"
-msgstr "Livestream"
+#: ../html/program.tmpl:39
+msgid "Live TV web cast"
+msgstr "Live TV Streaming"
#--------------------
#: ../html/rdisplay.tmpl:1
@@ -939,7 +939,7 @@ msgid "Lifetime"
msgstr "Lebenszeit"
#--------------------
-#: ../html/rdisplay.tmpl:162 ../lib/XXV/MODULES/TIMERS.pm:1140
+#: ../html/rdisplay.tmpl:162 ../lib/XXV/MODULES/TIMERS.pm:1127
msgid "Priority"
msgstr "Priorität"
@@ -975,8 +975,8 @@ msgstr "Aufnahme bearbeiten"
#--------------------
#: ../html/rdisplay.tmpl:87
-msgid "Watch recording"
-msgstr "Aufnahme ansehen"
+msgid "Watch recording as web cast"
+msgstr "Aufnahme als Stream ansehen"
#--------------------
#: ../html/rdisplay.tmpl:90
@@ -1211,12 +1211,7 @@ msgid "This Screen list the most programmed EPG Events from all XXV Users. Of co
msgstr "Diese Liste die zeigt meist programmierten Sendungen von allen XXV Benutzern. Selbstverständlich sind das nur nur Sendungen, die in Ihrer EPG-Tabelle vorhanden sind!"
#--------------------
-#: ../html/topten.tmpl:20
-msgid "Search string:"
-msgstr "Suchmuster:"
-
-#--------------------
-#: ../html/topten.tmpl:32
+#: ../html/topten.tmpl:21
msgid "Rank"
msgstr "Platzierung"
@@ -1311,6 +1306,61 @@ msgid "Repeat entry"
msgstr "Eingabe wiederholen"
#--------------------
+#: ../html/widgets/player.tmpl:102 ../html/widgets/player.tmpl:64
+msgid "Mute"
+msgstr "Mute"
+
+#--------------------
+#: ../html/widgets/player.tmpl:106 ../html/widgets/player.tmpl:70
+msgid "Unknown"
+msgstr "Unbekannt"
+
+#--------------------
+#: ../html/widgets/player.tmpl:115 ../html/widgets/player.tmpl:45
+msgid "Playing"
+msgstr "Wiedergabe"
+
+#--------------------
+#: ../html/widgets/player.tmpl:118
+msgid "Paused"
+msgstr "Pausiert"
+
+#--------------------
+#: ../html/widgets/player.tmpl:121 ../html/widgets/player.tmpl:46
+msgid "Not playing"
+msgstr "Keine Wiedergabe"
+
+#--------------------
+#: ../html/widgets/player.tmpl:58 ../html/widgets/player.tmpl:98
+msgid "Playback"
+msgstr "Wiedergabe"
+
+#--------------------
+#: ../html/widgets/player.tmpl:59 ../html/widgets/player.tmpl:99
+msgid "Pause"
+msgstr "Pause"
+
+#--------------------
+#: ../html/widgets/player.tmpl:62
+msgid "Decrease volume"
+msgstr "Leiser"
+
+#--------------------
+#: ../html/widgets/player.tmpl:63
+msgid "Increase volume"
+msgstr "Lauter"
+
+#--------------------
+#: ../html/widgets/player.tmpl:66
+msgid "Full screen"
+msgstr "Vollbild"
+
+#--------------------
+#: ../html/widgets/player.tmpl:71
+msgid "Volume"
+msgstr "Lautstärke"
+
+#--------------------
#: ../html/widgets/remote.tmpl:109 ../wml/next.tmpl:32 ../wml/next.tmpl:46 ../wml/now.tmpl:32 ../wml/now.tmpl:46 ../wml/program.tmpl:25 ../wml/program.tmpl:63 ../wml/program.tmpl:77 ../wml/search.tmpl:34 ../wml/search.tmpl:48 ../wml/tlist.tmpl:13 ../wml/tlist.tmpl:62 ../wml/tlist.tmpl:76 ../wml/tsearch.tmpl:13 ../wml/tsearch.tmpl:62 ../wml/tsearch.tmpl:76 ../wml/widgets/err.tmpl:18 ../wml/widgets/footer.tmpl:2 ../wml/widgets/formEnd.tmpl:5 ../wml/widgets/message.tmpl:18
msgid "Menu"
msgstr "Menü"
@@ -1621,7 +1671,7 @@ msgid "Search for autotimer with text 'aid'"
msgstr "Suche nach Autotimer mit Text 'aid'"
#--------------------
-#: ../lib/XXV/MODULES/AUTOTIMER.pm:761 ../lib/XXV/MODULES/TIMERS.pm:705
+#: ../lib/XXV/MODULES/AUTOTIMER.pm:761 ../lib/XXV/MODULES/TIMERS.pm:692
msgid "Start time in format 'HH:MM'"
msgstr "Startzeit im Format 'HH:MM'"
@@ -1631,12 +1681,12 @@ msgid "You set a start time without an end time!"
msgstr "Startzeitpunkt ohne Stoppzeitpunkt definiert!"
#--------------------
-#: ../lib/XXV/MODULES/AUTOTIMER.pm:768 ../lib/XXV/MODULES/AUTOTIMER.pm:774 ../lib/XXV/MODULES/AUTOTIMER.pm:791 ../lib/XXV/MODULES/AUTOTIMER.pm:797 ../lib/XXV/MODULES/TIMERS.pm:709 ../lib/XXV/MODULES/TIMERS.pm:715 ../lib/XXV/MODULES/TIMERS.pm:728 ../lib/XXV/MODULES/TIMERS.pm:734
+#: ../lib/XXV/MODULES/AUTOTIMER.pm:768 ../lib/XXV/MODULES/AUTOTIMER.pm:774 ../lib/XXV/MODULES/AUTOTIMER.pm:791 ../lib/XXV/MODULES/AUTOTIMER.pm:797 ../lib/XXV/MODULES/TIMERS.pm:696 ../lib/XXV/MODULES/TIMERS.pm:702 ../lib/XXV/MODULES/TIMERS.pm:715 ../lib/XXV/MODULES/TIMERS.pm:721
msgid "The time is incorrect!"
msgstr "Die Zeit ist nicht korrekt!"
#--------------------
-#: ../lib/XXV/MODULES/AUTOTIMER.pm:784 ../lib/XXV/MODULES/TIMERS.pm:724
+#: ../lib/XXV/MODULES/AUTOTIMER.pm:784 ../lib/XXV/MODULES/TIMERS.pm:711
msgid "End time in format 'HH:MM'"
msgstr "Endzeit im Format 'HH:MM'"
@@ -1666,7 +1716,7 @@ msgid "Buffer time in minutes before the scheduled start of a recording"
msgstr "Pufferzeit in Minuten, vor dem zeitlichen Anfang der Aufnahme."
#--------------------
-#: ../lib/XXV/MODULES/AUTOTIMER.pm:847 ../lib/XXV/MODULES/AUTOTIMER.pm:861 ../lib/XXV/MODULES/AUTOTIMER.pm:874 ../lib/XXV/MODULES/AUTOTIMER.pm:890 ../lib/XXV/MODULES/AUTOTIMER.pm:906 ../lib/XXV/MODULES/CHANNELS.pm:683 ../lib/XXV/MODULES/CHANNELS.pm:714 ../lib/XXV/MODULES/CHANNELS.pm:753 ../lib/XXV/MODULES/CHANNELS.pm:766 ../lib/XXV/MODULES/CHANNELS.pm:792 ../lib/XXV/MODULES/CHANNELS.pm:818 ../lib/XXV/MODULES/CHANNELS.pm:831 ../lib/XXV/MODULES/CHANNELS.pm:844 ../lib/XXV/MODULES/CHANNELS.pm:857 ../lib/XXV/MODULES/RECORDS.pm:1821 ../lib/XXV/MODULES/RECORDS.pm:1835 ../lib/XXV/MODULES/TIMERS.pm:750 ../lib/XXV/MODULES/TIMERS.pm:766
+#: ../lib/XXV/MODULES/AUTOTIMER.pm:847 ../lib/XXV/MODULES/AUTOTIMER.pm:861 ../lib/XXV/MODULES/AUTOTIMER.pm:874 ../lib/XXV/MODULES/AUTOTIMER.pm:890 ../lib/XXV/MODULES/AUTOTIMER.pm:906 ../lib/XXV/MODULES/CHANNELS.pm:683 ../lib/XXV/MODULES/CHANNELS.pm:714 ../lib/XXV/MODULES/CHANNELS.pm:753 ../lib/XXV/MODULES/CHANNELS.pm:766 ../lib/XXV/MODULES/CHANNELS.pm:792 ../lib/XXV/MODULES/CHANNELS.pm:818 ../lib/XXV/MODULES/CHANNELS.pm:831 ../lib/XXV/MODULES/CHANNELS.pm:844 ../lib/XXV/MODULES/CHANNELS.pm:857 ../lib/XXV/MODULES/GRAB.pm:105 ../lib/XXV/MODULES/GRAB.pm:36 ../lib/XXV/MODULES/GRAB.pm:50 ../lib/XXV/MODULES/GRAB.pm:73 ../lib/XXV/MODULES/GRAB.pm:92 ../lib/XXV/MODULES/RECORDS.pm:1821 ../lib/XXV/MODULES/RECORDS.pm:1835 ../lib/XXV/MODULES/STREAM.pm:76 ../lib/XXV/MODULES/STREAM.pm:90 ../lib/XXV/MODULES/TIMERS.pm:737 ../lib/XXV/MODULES/TIMERS.pm:753
msgid "Value incorrect!"
msgstr "Der Wert ist nicht korrekt!"
@@ -1686,22 +1736,22 @@ msgid "Start autotimer search."
msgstr "Autotimersuche durchführen"
#--------------------
-#: ../lib/XXV/MODULES/AUTOTIMER.pm:880 ../lib/XXV/MODULES/RECORDS.pm:1828 ../lib/XXV/MODULES/TIMERS.pm:740
+#: ../lib/XXV/MODULES/AUTOTIMER.pm:880 ../lib/XXV/MODULES/RECORDS.pm:1828 ../lib/XXV/MODULES/TIMERS.pm:727
msgid "Priority (%d ... %d)"
msgstr "Priorität (%d ... %d)"
#--------------------
-#: ../lib/XXV/MODULES/AUTOTIMER.pm:886 ../lib/XXV/MODULES/TIMERS.pm:746
+#: ../lib/XXV/MODULES/AUTOTIMER.pm:886 ../lib/XXV/MODULES/TIMERS.pm:733
msgid "Sorry, but the maximum priority is limited to %d!"
msgstr "Entschuldigung, aber die maximale Priorität ist auf %d begrenzt!"
#--------------------
-#: ../lib/XXV/MODULES/AUTOTIMER.pm:896 ../lib/XXV/MODULES/RECORDS.pm:1814 ../lib/XXV/MODULES/TIMERS.pm:756
+#: ../lib/XXV/MODULES/AUTOTIMER.pm:896 ../lib/XXV/MODULES/RECORDS.pm:1814 ../lib/XXV/MODULES/TIMERS.pm:743
msgid "Lifetime (%d ... %d)"
msgstr "Lebenszeit (%d ... %d)"
#--------------------
-#: ../lib/XXV/MODULES/AUTOTIMER.pm:902 ../lib/XXV/MODULES/TIMERS.pm:762
+#: ../lib/XXV/MODULES/AUTOTIMER.pm:902 ../lib/XXV/MODULES/TIMERS.pm:749
msgid "Sorry, but the maximum life time is limited to %d!"
msgstr "Entschuldigung, aber die maximale Lebenszeit ist auf %d begrenzt!"
@@ -1896,7 +1946,7 @@ msgid "No channel defined for deletion!"
msgstr "Kein Kanal zum Löschen definiert!"
#--------------------
-#: ../lib/XXV/MODULES/CHRONICLE.pm:169 ../lib/XXV/MODULES/CHRONICLE.pm:208 ../lib/XXV/MODULES/TIMERS.pm:1135
+#: ../lib/XXV/MODULES/CHRONICLE.pm:169 ../lib/XXV/MODULES/CHRONICLE.pm:208 ../lib/XXV/MODULES/TIMERS.pm:1122
msgid "Day"
msgstr "Tag"
@@ -2040,7 +2090,7 @@ msgid "Modules loaded."
msgstr "Module neugeladen."
#--------------------
-#: ../lib/XXV/MODULES/EPG.pm:1125
+#: ../lib/XXV/MODULES/EPG.pm:1126
msgid "No event id defined!"
msgstr "Keine ID zum Event definiert!"
@@ -2135,7 +2185,7 @@ msgid "Display events in a schematic way"
msgstr "Zeigt Sendungen in einer übersichtlichen Weise"
#--------------------
-#: ../lib/XXV/MODULES/EPG.pm:799
+#: ../lib/XXV/MODULES/EPG.pm:800
msgid "Event '%d' does not exist in the database!"
msgstr "Sendung '%d' existiert nicht in der Datenbank!"
@@ -2145,16 +2195,16 @@ msgid "Update EPG data."
msgstr "Aktualisiere EPG Daten"
#--------------------
-#: ../lib/XXV/MODULES/EPG.pm:979 ../lib/XXV/MODULES/VTX.pm:1348
-msgid "No channel defined!"
-msgstr "Kein Kanal definiert!"
-
-#--------------------
#: ../lib/XXV/MODULES/EPG.pm:98
msgid "Display the current program running in the VDR"
msgstr "Zeigt die Sendung, die im VDR läuft"
#--------------------
+#: ../lib/XXV/MODULES/EPG.pm:980 ../lib/XXV/MODULES/VTX.pm:1348
+msgid "No channel defined!"
+msgstr "Kein Kanal definiert!"
+
+#--------------------
#: ../lib/XXV/MODULES/EVENTS.pm:19
msgid ""
"This module manage the events for control and watch the xxv system.\n"
@@ -2180,6 +2230,16 @@ msgid "Change a event on or off"
msgstr "Ändere ein Ereignis zwischen ein/aus"
#--------------------
+#: ../lib/XXV/MODULES/GRAB.pm:112
+msgid "Grab a picture"
+msgstr "Hole den Screenshot"
+
+#--------------------
+#: ../lib/XXV/MODULES/GRAB.pm:119
+msgid "Display the picture"
+msgstr "Zeige den Screenshot an"
+
+#--------------------
#: ../lib/XXV/MODULES/GRAB.pm:20
msgid "This module grab a picture from livestream."
msgstr "Dieses Modul holt einen Screenshot von der DVB Karte per SVDRP"
@@ -2190,46 +2250,36 @@ msgid "Image width"
msgstr "Bildbreite"
#--------------------
-#: ../lib/XXV/MODULES/GRAB.pm:33
+#: ../lib/XXV/MODULES/GRAB.pm:41
msgid "Image height"
msgstr "Bildhöhe"
#--------------------
-#: ../lib/XXV/MODULES/GRAB.pm:39
+#: ../lib/XXV/MODULES/GRAB.pm:55
msgid "Text to display in the grabbed picture."
msgstr "Im Screenshots anzuzeigender Text."
#--------------------
-#: ../lib/XXV/MODULES/GRAB.pm:49
+#: ../lib/XXV/MODULES/GRAB.pm:65
msgid "Vertical position of displayed text, in pixels."
msgstr "Vertikalen Position des anzuzeigen Text, in Pixeln."
#--------------------
-#: ../lib/XXV/MODULES/GRAB.pm:54 ../lib/XXV/MODULES/STATUS.pm:63
+#: ../lib/XXV/MODULES/GRAB.pm:78 ../lib/XXV/MODULES/STATUS.pm:63
msgid "TrueType font to draw overlay text"
msgstr "TrueType Zeichensatz für Overlaytext."
#--------------------
-#: ../lib/XXV/MODULES/GRAB.pm:60
+#: ../lib/XXV/MODULES/GRAB.pm:84
msgid "Font size to draw image text (only for ttf font!)."
msgstr "Zeichengröße für Overlaytext (nur für TTF Font!)."
#--------------------
-#: ../lib/XXV/MODULES/GRAB.pm:65
+#: ../lib/XXV/MODULES/GRAB.pm:97
msgid "Quality from image in percent."
msgstr "Qualität des Bildes in Prozent."
#--------------------
-#: ../lib/XXV/MODULES/GRAB.pm:72
-msgid "Grab a picture"
-msgstr "Hole den Screenshot"
-
-#--------------------
-#: ../lib/XXV/MODULES/GRAB.pm:79
-msgid "Display the picture"
-msgstr "Zeige den Screenshot an"
-
-#--------------------
#: ../lib/XXV/MODULES/HTTPD.pm:107
msgid "Dump additional debugging information, required only for software development."
msgstr "Ausgeben von zusätzliche Informationen zur Fehlersuche, wird nur für die Software-Entwicklung benötigt."
@@ -2240,12 +2290,12 @@ msgid "You are not authorized to use this system!"
msgstr "Sie haben keine Berechtigungen für dieses System!"
#--------------------
-#: ../lib/XXV/MODULES/HTTPD.pm:442
+#: ../lib/XXV/MODULES/HTTPD.pm:440
msgid "Modul '%s' is'nt loaded!"
msgstr "Modul '%s' wurde nicht geladen!"
#--------------------
-#: ../lib/XXV/MODULES/HTTPD.pm:443
+#: ../lib/XXV/MODULES/HTTPD.pm:441
msgid "Internal Server Error"
msgstr "Interner Serverfehler"
@@ -2255,12 +2305,12 @@ msgid "This module is a multisession HTTPD server."
msgstr "Dieses Modul ist ein Mehrfachsitzung HTTPD Server."
#--------------------
-#: ../lib/XXV/MODULES/HTTPD.pm:526
+#: ../lib/XXV/MODULES/HTTPD.pm:523
msgid "Traffic on HTTPD socket since %s: transmitted: %s - received: %s - connections: %d."
msgstr "Datenverkehr des HTTPD Anschlusses seit %s: gesendet: %s - empfangen: %s - Verbindungen: %d."
#--------------------
-#: ../lib/XXV/MODULES/HTTPD.pm:572 ../lib/XXV/OUTPUT/Console.pm:676 ../lib/XXV/OUTPUT/Html.pm:810
+#: ../lib/XXV/MODULES/HTTPD.pm:569 ../lib/XXV/OUTPUT/Console.pm:676 ../lib/XXV/OUTPUT/Html.pm:811
msgid "Could not open file '%s'! : %s"
msgstr "Konnte Datei '%s' nicht öffnen : %s"
@@ -2655,7 +2705,7 @@ msgid "Which channel should used as source?"
msgstr "Welcher Kanal soll als Quelle verwendet werden?"
#--------------------
-#: ../lib/XXV/MODULES/MOVETIMER.pm:375 ../lib/XXV/MODULES/MOVETIMER.pm:397 ../lib/XXV/MODULES/RECORDS.pm:1855 ../lib/XXV/MODULES/STREAM.pm:141 ../lib/XXV/MODULES/TIMERS.pm:643 ../lib/XXV/MODULES/TIMERS.pm:655
+#: ../lib/XXV/MODULES/MOVETIMER.pm:375 ../lib/XXV/MODULES/MOVETIMER.pm:397 ../lib/XXV/MODULES/RECORDS.pm:1855 ../lib/XXV/MODULES/STREAM.pm:170 ../lib/XXV/MODULES/TIMERS.pm:643
msgid "This channel '%s' does not exist!"
msgstr "Dieser Kanal '%s' existiert nicht in der Datenbank!"
@@ -3015,7 +3065,7 @@ msgid "No recording defined for editing!"
msgstr "Keine Aufnahme-ID zum Bearbeiten!"
#--------------------
-#: ../lib/XXV/MODULES/RECORDS.pm:1808 ../lib/XXV/MODULES/RECORDS.pm:2410 ../lib/XXV/MODULES/TIMERS.pm:771
+#: ../lib/XXV/MODULES/RECORDS.pm:1808 ../lib/XXV/MODULES/RECORDS.pm:2423 ../lib/XXV/MODULES/TIMERS.pm:758
msgid "Title of recording"
msgstr "Titel der Aufnahme"
@@ -3125,32 +3175,32 @@ msgid "%d new recordings since last report time %s"
msgstr "%d neue Aufnahmen seit der letzten Reportzeit %s"
#--------------------
-#: ../lib/XXV/MODULES/RECORDS.pm:2405
+#: ../lib/XXV/MODULES/RECORDS.pm:2418
msgid "There none recoverable recordings!"
msgstr "Es sind keine wiederherstellbaren Aufnahmen vorhanden!"
#--------------------
-#: ../lib/XXV/MODULES/RECORDS.pm:2430
+#: ../lib/XXV/MODULES/RECORDS.pm:2443
msgid "Recover recording"
msgstr "Aufnahme wiederherstellen"
#--------------------
-#: ../lib/XXV/MODULES/RECORDS.pm:2436
+#: ../lib/XXV/MODULES/RECORDS.pm:2449
msgid "Can't recover recording, maybe was this in the meantime deleted!"
msgstr "Aufnahme konnte nicht wiederhergestellt werden, möglicherweise wurde sie in der zwischenzeit gelöscht!"
#--------------------
-#: ../lib/XXV/MODULES/RECORDS.pm:2445
+#: ../lib/XXV/MODULES/RECORDS.pm:2458
msgid "Recover recording, couldn't rename '%s' to %s : %s"
msgstr "Wiederhergestellen der Aufnahme, konnte '%s' nicht in %s umbenennen : %s"
#--------------------
-#: ../lib/XXV/MODULES/RECORDS.pm:2457 ../lib/XXV/MODULES/RECORDS.pm:2459
+#: ../lib/XXV/MODULES/RECORDS.pm:2470 ../lib/XXV/MODULES/RECORDS.pm:2472
msgid "Recording recovered!"
msgstr "Aufnahme wiederhergestellt!"
#--------------------
-#: ../lib/XXV/MODULES/RECORDS.pm:2467
+#: ../lib/XXV/MODULES/RECORDS.pm:2480
msgid "None recording was'nt recovered!"
msgstr "Keine Aufnahme wurde wiederhergestellt!"
@@ -3620,17 +3670,22 @@ msgid "Display the vitals informations"
msgstr "Zeigt die wichtigen Informationen"
#--------------------
-#: ../lib/XXV/MODULES/STREAM.pm:133
+#: ../lib/XXV/MODULES/STREAM.pm:104
+msgid "Stream a channel 'cid'. This required the streamdev plugin!"
+msgstr "Stream eines Kanales 'cid'. Dies erfordert das Streamdev Plugin!"
+
+#--------------------
+#: ../lib/XXV/MODULES/STREAM.pm:161
msgid "No channel defined for streaming!"
msgstr "Kein Kanal für Streaming definiert!"
#--------------------
-#: ../lib/XXV/MODULES/STREAM.pm:135 ../lib/XXV/MODULES/STREAM.pm:200 ../lib/XXV/MODULES/STREAM.pm:207
+#: ../lib/XXV/MODULES/STREAM.pm:164 ../lib/XXV/MODULES/STREAM.pm:260 ../lib/XXV/MODULES/STREAM.pm:267
msgid "Can't stream files!"
msgstr "Kann Datei nicht streamen!"
#--------------------
-#: ../lib/XXV/MODULES/STREAM.pm:170
+#: ../lib/XXV/MODULES/STREAM.pm:211
msgid "No recording defined for streaming!"
msgstr "Keine Aufnahme für Streaming definiert!"
@@ -3640,16 +3695,6 @@ msgid "This module generate streams from recordings."
msgstr "Dieses Modul erzeugt Streams von Aufnahmen."
#--------------------
-#: ../lib/XXV/MODULES/STREAM.pm:238
-msgid "Remote SMB/NFS share"
-msgstr "SMB/NFS Dateifreigabe"
-
-#--------------------
-#: ../lib/XXV/MODULES/STREAM.pm:239
-msgid "HTTP Streaming"
-msgstr "HTTP Streaming"
-
-#--------------------
#: ../lib/XXV/MODULES/STREAM.pm:30
msgid "Used host of referred link inside playlist."
msgstr "Benutzter Host für verweisende Links innerhalb der Abspiellisten."
@@ -3660,29 +3705,59 @@ msgid "Typ of streaming"
msgstr "Art des Streaming"
#--------------------
-#: ../lib/XXV/MODULES/STREAM.pm:50 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:108 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:72 ../lib/XXV/OUTPUT/NEWS/RSS.pm:71 ../lib/XXV/OUTPUT/NEWS/VDR.pm:68
-msgid "Sorry, but value must be between %d and %d"
-msgstr "Entschuldigung, der Wert muss zwischen %d und %d liegen!"
+#: ../lib/XXV/MODULES/STREAM.pm:40
+msgid "HTTP Streaming"
+msgstr "HTTP Streaming"
+
+#--------------------
+#: ../lib/XXV/MODULES/STREAM.pm:41
+msgid "Remote SMB/NFS share"
+msgstr "SMB/NFS Dateifreigabe"
+
+#--------------------
+#: ../lib/XXV/MODULES/STREAM.pm:46
+msgid "Used mime type to deliver video streams"
+msgstr "Verwendeter Mime-Typ zur Ausgabe von Video-Streams"
#--------------------
-#: ../lib/XXV/MODULES/STREAM.pm:57
+#: ../lib/XXV/MODULES/STREAM.pm:51
msgid "Base directory of remote SMB/NFS share."
msgstr "Basisverzeichnis für SMB/NFS Dateifreigaben."
#--------------------
+#: ../lib/XXV/MODULES/STREAM.pm:56
+msgid "Used stream widget"
+msgstr "Verwendetes Streamwidget"
+
+#--------------------
+#: ../lib/XXV/MODULES/STREAM.pm:60
+msgid "Other external player"
+msgstr "Anderer externer Player"
+
+#--------------------
+#: ../lib/XXV/MODULES/STREAM.pm:61
+msgid "Embed media player"
+msgstr "Eingebetteter Media Player"
+
+#--------------------
#: ../lib/XXV/MODULES/STREAM.pm:62
-msgid "Used mime type to deliver video streams"
-msgstr "Verwendeter Mime-Typ zur Ausgabe von Video-Streams"
+msgid "Embed vlc player"
+msgstr "Eingebetteter VLC Player"
#--------------------
-#: ../lib/XXV/MODULES/STREAM.pm:69
-msgid "Stream a recordings."
-msgstr "Aufnahme streamen."
+#: ../lib/XXV/MODULES/STREAM.pm:67
+msgid "Stream widget width"
+msgstr "Streaming Widgetbreite"
#--------------------
-#: ../lib/XXV/MODULES/STREAM.pm:76
-msgid "Stream a channel 'cid'. This required the streamdev plugin!"
-msgstr "Stream eines Kanales 'cid'. Dies erfordert das Streamdev Plugin!"
+#: ../lib/XXV/MODULES/STREAM.pm:81
+msgid "Stream widget height"
+msgstr "Streaming Widgethöhe"
+
+#--------------------
+#: ../lib/XXV/MODULES/STREAM.pm:97
+msgid "Stream a recordings."
+msgstr "Aufnahme streamen."
#--------------------
#: ../lib/XXV/MODULES/SVDRP.pm:20
@@ -3779,7 +3854,7 @@ msgid "Delete timer 'tid'"
msgstr "Lösche Timer 'tid'"
#--------------------
-#: ../lib/XXV/MODULES/TIMERS.pm:1074
+#: ../lib/XXV/MODULES/TIMERS.pm:1061
msgid "%d timer written to database."
msgstr "%d Timer in Datenbank geschrieben."
@@ -3799,12 +3874,12 @@ msgid "New timer found: %s"
msgstr "Neuer Timer gefunden: %s"
#--------------------
-#: ../lib/XXV/MODULES/TIMERS.pm:1531
+#: ../lib/XXV/MODULES/TIMERS.pm:1518
msgid "Timer %d with title '%s' has started the recording!"
msgstr "Timer %d mit Titel '%s' hat die Aufnahme gestartet!"
#--------------------
-#: ../lib/XXV/MODULES/TIMERS.pm:1532
+#: ../lib/XXV/MODULES/TIMERS.pm:1519
msgid "on channel: %s to %s"
msgstr "auf Kanal: %s bis %s"
@@ -3879,7 +3954,7 @@ msgid "Use Programme Delivery Control (PDC) to control start time"
msgstr "Verwende Video Program System (VPS) zum Überwachen der Startzeit"
#--------------------
-#: ../lib/XXV/MODULES/TIMERS.pm:604 ../lib/XXV/MODULES/TIMERS.pm:848 ../lib/XXV/MODULES/TIMERS.pm:912
+#: ../lib/XXV/MODULES/TIMERS.pm:604 ../lib/XXV/MODULES/TIMERS.pm:835 ../lib/XXV/MODULES/TIMERS.pm:899
msgid "Timer '%s' does not exist in the database!"
msgstr "Timer '%s' existiert nicht in der Datenbank!"
@@ -3904,42 +3979,42 @@ msgid "Which channel should recorded"
msgstr "Welcher Kanal soll aufgezeichnet werden"
#--------------------
-#: ../lib/XXV/MODULES/TIMERS.pm:670
+#: ../lib/XXV/MODULES/TIMERS.pm:657
msgid "%Y-%m-%d"
msgstr "%d.%m.%Y"
#--------------------
-#: ../lib/XXV/MODULES/TIMERS.pm:676
+#: ../lib/XXV/MODULES/TIMERS.pm:663
msgid "Enter a day (1 to 31) or weekday in format 'MTWTFSS'."
msgstr "Tag (1 - 31) oder Wochentag im Format 'MDMDFSS' eingeben."
#--------------------
-#: ../lib/XXV/MODULES/TIMERS.pm:682
+#: ../lib/XXV/MODULES/TIMERS.pm:669
msgid "Language=English"
msgstr "Language=German,DateFormat=non-US"
#--------------------
+#: ../lib/XXV/MODULES/TIMERS.pm:683
+msgid "The day is incorrect or was in a wrong format!"
+msgstr "Der Tag ist nicht korrekt oder hatte ein falsches Format!"
+
+#--------------------
#: ../lib/XXV/MODULES/TIMERS.pm:69
msgid "List timers 'tid'"
msgstr "Zeige Timer 'tid'"
#--------------------
-#: ../lib/XXV/MODULES/TIMERS.pm:696
-msgid "The day is incorrect or was in a wrong format!"
-msgstr "Der Tag ist nicht korrekt oder hatte ein falsches Format!"
-
-#--------------------
#: ../lib/XXV/MODULES/TIMERS.pm:75
msgid "Search timers 'text'"
msgstr "Suche Timer 'text'"
#--------------------
-#: ../lib/XXV/MODULES/TIMERS.pm:794
+#: ../lib/XXV/MODULES/TIMERS.pm:781
msgid "Edit timer"
msgstr "Timer bearbeiten"
#--------------------
-#: ../lib/XXV/MODULES/TIMERS.pm:795
+#: ../lib/XXV/MODULES/TIMERS.pm:782
msgid "New timer"
msgstr "Neuer Timer"
@@ -3949,41 +4024,41 @@ msgid "Read timers and write them to the database"
msgstr "Lese Timer und schreibe sie in die Datenbank"
#--------------------
-#: ../lib/XXV/MODULES/TIMERS.pm:834
+#: ../lib/XXV/MODULES/TIMERS.pm:821
msgid "No timer defined for deletion! Please use tdelete 'tid'."
msgstr "Kein Timer zum Löschen definiert! Bitte verwende tdelete 'tid'."
#--------------------
-#: ../lib/XXV/MODULES/TIMERS.pm:859
+#: ../lib/XXV/MODULES/TIMERS.pm:846
msgid "Are you sure to delete this timer?"
msgstr "Sind Sie sicher, wollen Sie den Timer löschen?"
#--------------------
+#: ../lib/XXV/MODULES/TIMERS.pm:873
+msgid "No timer to delete!"
+msgstr "Kein Timer zum Löschen!"
+
+#--------------------
#: ../lib/XXV/MODULES/TIMERS.pm:88
msgid "Create timer 'eid'"
msgstr "Erzeuge Timer 'eid'"
#--------------------
-#: ../lib/XXV/MODULES/TIMERS.pm:886
-msgid "No timer to delete!"
-msgstr "Kein Timer zum Löschen!"
-
-#--------------------
-#: ../lib/XXV/MODULES/TIMERS.pm:898
+#: ../lib/XXV/MODULES/TIMERS.pm:885
msgid "No timer defined to toggle! Please use ttoggle 'id'."
msgstr "Kein Timer zum Umschalten definiert! Bitte verwende ttoggle 'tid'"
#--------------------
+#: ../lib/XXV/MODULES/TIMERS.pm:944
+msgid "No timer to toggle!"
+msgstr "Kein Timer zum Umschalten!"
+
+#--------------------
#: ../lib/XXV/MODULES/TIMERS.pm:95
msgid "Edit timer 'tid'"
msgstr "Bearbeite Timer 'tid'"
#--------------------
-#: ../lib/XXV/MODULES/TIMERS.pm:957
-msgid "No timer to toggle!"
-msgstr "Kein Timer zum Umschalten!"
-
-#--------------------
#: ../lib/XXV/MODULES/USER.pm:103
msgid "Log out from current session."
msgstr "Abmelden von der aktuellen Sitzung."
@@ -4310,17 +4385,17 @@ msgid "This receives and sends ASCII messages"
msgstr "Dies empfängt und sendet ASCII Nachrichten"
#--------------------
-#: ../lib/XXV/OUTPUT/Console.pm:304 ../lib/XXV/OUTPUT/Html.pm:504 ../lib/XXV/OUTPUT/Wml.pm:297 ../wml/widgets/dir.tmpl:8
+#: ../lib/XXV/OUTPUT/Console.pm:304 ../lib/XXV/OUTPUT/Html.pm:505 ../lib/XXV/OUTPUT/Wml.pm:297 ../wml/widgets/dir.tmpl:8
msgid "Directory '%s' does not exist!"
msgstr "Verzeichnis '%s' existiert leider nicht!"
#--------------------
-#: ../lib/XXV/OUTPUT/Console.pm:309 ../lib/XXV/OUTPUT/Html.pm:509 ../lib/XXV/OUTPUT/Wml.pm:302 ../wml/widgets/file.tmpl:8
+#: ../lib/XXV/OUTPUT/Console.pm:309 ../lib/XXV/OUTPUT/Html.pm:510 ../lib/XXV/OUTPUT/Wml.pm:302 ../wml/widgets/file.tmpl:8
msgid "File '%s' does not exist!"
msgstr "Datei '%s' existiert leider nicht!"
#--------------------
-#: ../lib/XXV/OUTPUT/Console.pm:313 ../lib/XXV/OUTPUT/Html.pm:518 ../lib/XXV/OUTPUT/Wml.pm:306
+#: ../lib/XXV/OUTPUT/Console.pm:313 ../lib/XXV/OUTPUT/Html.pm:519 ../lib/XXV/OUTPUT/Wml.pm:306
msgid "Error '%s' (%s) : %s!"
msgstr "Fehler im Feld '%s' (%s) : %s!"
@@ -4366,7 +4441,7 @@ msgid "You can only use one of these elements: %s"
msgstr "Sie können nur einen von diesen Elementen verwenden: %s"
#--------------------
-#: ../lib/XXV/OUTPUT/Console.pm:640 ../lib/XXV/OUTPUT/Html.pm:768
+#: ../lib/XXV/OUTPUT/Console.pm:640 ../lib/XXV/OUTPUT/Html.pm:769
msgid "Module %s not found!"
msgstr "Modul %s nicht gefunden!"
@@ -4381,41 +4456,46 @@ msgid "This receives and sends HTML messages."
msgstr "Dies empfängt und sendet HTML Nachrichten"
#--------------------
-#: ../lib/XXV/OUTPUT/Html.pm:445
+#: ../lib/XXV/OUTPUT/Html.pm:446
msgid "Authorization required"
msgstr "Berechtigung erforderlich"
#--------------------
-#: ../lib/XXV/OUTPUT/Html.pm:455
+#: ../lib/XXV/OUTPUT/Html.pm:456
msgid "Forbidden"
msgstr "Verboten"
#--------------------
-#: ../lib/XXV/OUTPUT/Html.pm:469 ../lib/XXV/OUTPUT/Wml.pm:267
+#: ../lib/XXV/OUTPUT/Html.pm:470 ../lib/XXV/OUTPUT/Wml.pm:267
msgid "Couldn't open file '%s' : %s!"
msgstr "Kann Datei '%s' nicht öffnen : %s!"
#--------------------
-#: ../lib/XXV/OUTPUT/Html.pm:470
+#: ../lib/XXV/OUTPUT/Html.pm:471
msgid "Not found"
msgstr "Nicht gefunden"
#--------------------
-#: ../lib/XXV/OUTPUT/Html.pm:556
+#: ../lib/XXV/OUTPUT/Html.pm:557
msgid "Please wait ..."
msgstr "Bitte warten ..."
#--------------------
-#: ../lib/XXV/OUTPUT/Html.pm:786 ../lib/XXV/OUTPUT/Wml.pm:385
+#: ../lib/XXV/OUTPUT/Html.pm:787 ../lib/XXV/OUTPUT/Wml.pm:385
msgid "Back to configuration page."
msgstr "Zurück zur Konfigurationsseite"
#--------------------
-#: ../lib/XXV/OUTPUT/Html.pm:817
+#: ../lib/XXV/OUTPUT/Html.pm:818
msgid "File"
msgstr "Datei"
#--------------------
+#: ../lib/XXV/OUTPUT/NEWS/JABBER.pm:108 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:72 ../lib/XXV/OUTPUT/NEWS/RSS.pm:71 ../lib/XXV/OUTPUT/NEWS/VDR.pm:68
+msgid "Sorry, but value must be between %d and %d"
+msgstr "Entschuldigung, der Wert muss zwischen %d und %d liegen!"
+
+#--------------------
#: ../lib/XXV/OUTPUT/NEWS/JABBER.pm:115
msgid "User to be notified (as Jabber account to@jabber.server.org)"
msgstr "Zu benachrichtigender Anwender (als Jabberzugang an@jabber.server.org)"
diff --git a/locale/de/LC_MESSAGES/xxv.mo b/locale/de/LC_MESSAGES/xxv.mo
index b77cbf7..b5d8d18 100644
--- a/locale/de/LC_MESSAGES/xxv.mo
+++ b/locale/de/LC_MESSAGES/xxv.mo
Binary files differ