diff options
| author | Andreas Brachold <vdr07@deltab.de> | 2008-11-24 16:39:09 +0000 |
|---|---|---|
| committer | Andreas Brachold <vdr07@deltab.de> | 2008-11-24 16:39:09 +0000 |
| commit | 8c42985fd234e2a993b3f01416941f4b371d1a92 (patch) | |
| tree | 917e47097785386fa27a0c29f6ab8f83a950b872 | |
| parent | ffb81caa20a1dbede72f8a45299af87f8ab049e2 (diff) | |
| download | xxv-8c42985fd234e2a993b3f01416941f4b371d1a92.tar.gz xxv-8c42985fd234e2a993b3f01416941f4b371d1a92.tar.bz2 | |
* Add Data::COW (Copy on write handling for user own config profile)
* USER: Reimplement user own config profiles
* MEDIALIB: Remove fix number of columns, use now floating layout
* SVDRP: Add status message
* xxvd: Change password failed, on none HTML-Consoles
* AUTOTIMER: remove astatus (wrong callback)
* XMLTV: fix import, add multi recorder capability
* REPORT: clean up some routines
* STATUS: remove usage of /bin/wc, use native perl code
* CHANNELS: Fix hang at read channels, if recorder offline
* TELNET: remove 'quit' command do same like 'exit'
* RECORDS: clone database handle for preview image generation
* TIMERS: add more parameter check
* xxvd: disable mysql_enable_utf8
38 files changed, 1875 insertions, 1283 deletions
@@ -324,7 +324,7 @@ sub getDbh { my $dbh = DBI->connect($dsn, $usr, $pwd,{ PrintError => 1, AutoCommit => 1, - mysql_enable_utf8 => ($charset =~ m/UTF-8/ ? 1 : 0), +# mysql_enable_utf8 => (($charset =~ m/UTF-8/) ? 1 : 0), mysql_auto_reconnect => 1 }); @@ -452,6 +452,7 @@ sub quit { sub docu { # ------------------ my $console = shift; + my $config = shift; my $name = shift || 0; my $HTTPD = getModule("HTTPD"); @@ -491,6 +492,7 @@ sub docu { sub more { # ------------------ my $console = shift; + my $config = shift; my $name = shift || return error('No text file defined!'); my $param = shift || {}; @@ -692,6 +694,9 @@ sub module { required => gettext("This is required!"), check => sub{ my $value = shift || return; + + return $value unless(ref $value eq 'ARRAY'); + # If no password given the take the old password as default if($value->[0] and $value->[0] ne $value->[1]) { return undef, gettext("The fields with the 1st and the 2nd password must match!"); diff --git a/html/help.tmpl b/html/help.tmpl index d7a8c72..3889c07 100644 --- a/html/help.tmpl +++ b/html/help.tmpl @@ -111,8 +111,8 @@ logger.add(new WebFXTreeItem("<?% gettext("Syslog") %?>", "?cmd=logger&data=s var admin = new WebFXTreeItem("<?% gettext("Administration") %?>",0,tree); <?% IF allow('vl') %?>admin.add(new WebFXTreeItem("<?% gettext("Video disk recorder",12) %?>", "?cmd=vl"));<?% END %?> <?% IF allow('cl') %?>admin.add(new WebFXTreeItem("<?% gettext("Channels",12) %?>", "?cmd=cl"));<?% END %?> -<?% IF allow('ul') %?>admin.add(new WebFXTreeItem("<?% gettext("User") %?>","?cmd=ul")); -<?% ELSIF allow('uprefs') %?>admin.add(new WebFXTreeItem("<?% gettext("Personality") %?>","?cmd=uprefs"));<?% END %?> +<?% IF allow('ul') %?>admin.add(new WebFXTreeItem("<?% gettext("User") %?>","?cmd=ul"));<?% END %?> +<?% IF allow('uprefs') %?>admin.add(new WebFXTreeItem("<?% gettext("Own settings") %?>","?cmd=uprefs"));<?% END %?> <?% IF allow('rel') %?>admin.add(new WebFXTreeItem("<?% gettext("Reload") %?>","?cmd=rel"));<?% END %?> <?% END %?> diff --git a/html/mldisplay.tmpl b/html/mldisplay.tmpl index 01a125e..c2680f7 100644 --- a/html/mldisplay.tmpl +++ b/html/mldisplay.tmpl @@ -207,21 +207,17 @@ <tr> <td colspan="5"> <b><?% gettext("Actors") %?>:</b><br> - <table width="100%"> + <div> <?% WHILE param.actors.size %?> - <tr> - <?% FOREACH [ 1 .. param.actorcols ] %?> <?% actor = param.actors.shift %?> - <td width="<?% (100 - (100 mod param.actorcols)) / param.actorcols %?>%" valign="top"> + <div style="float:left;height:60px;width:160px;overflow:hidden"> <?% IF actor.0 %?> - <img src='?cmd=mlcache&__source=<?% actor.1 %?>' alt="" border="0" width="44" height="60" /> - <a href="?cmd=mlsearch&__search&__selfields=actors&__searchitem=<?% actor.0 %?>"><?% actor.0 %?></a> + <img style="float:left;margin-right:10px" src='?cmd=mlcache&__source=<?% actor.1 %?>' alt="" border="0" width="44" height="60" /> + <a href="?cmd=mlsearch&__search&__selfields=actors&__searchitem=<?% actor.0 %?>"><?% actor.0 %?></a> <?% END %?> - </td> - <?% END %?> - </tr> + </div> <?% END %?> - </table> + </div> </td> </tr> <?% END %?> diff --git a/html/mllistmedias.tmpl b/html/mllistmedias.tmpl index e85f8be..123d2ff 100644 --- a/html/mllistmedias.tmpl +++ b/html/mllistmedias.tmpl @@ -1,12 +1,9 @@ <?% IF data.size %?> <!-- TableTemplate --> -<table width="100%"> <?% WHILE data.size %?> -<tr> - <?% FOREACH [ 1 .. param.cols ] %?> <?% fields = data.shift %?> - <td width="<?% (100 - (100 mod param.cols)) / param.cols %?>%"> <?% IF fields.0 %?> + <div style="float:left;height:150px;width:325px;overflow:hidden"> <table width="100%"> <tr> <td> @@ -46,10 +43,7 @@ </td> </tr> </table> + </div> <?% END %?> - </td> <?% END %?> -</tr> <?% END %?> -</table> -<?% END %?>
\ No newline at end of file diff --git a/html/report.tmpl b/html/report.tmpl index 974148b..8b5c0b0 100644 --- a/html/report.tmpl +++ b/html/report.tmpl @@ -7,6 +7,10 @@ link = '?cmd=rdisplay&data='; ELSIF name == 'AUTOTIMER'; link = '?cmd=tedit&data='; + ELSIF name == 'SVDRP'; + link = '?cmd=vdredit&data='; + ELSE; + link = ''; END; %?> @@ -32,7 +36,10 @@ <?% FOREACH field = zeile %?> <?% c = c + 1 %?> <?% NEXT IF fields.$c.match('^__') %?> - <td><a href='<?% link %?><?% zeile.first %?>'><?% field %?></a></td> + <td><?% IF link %?><a href="<?% link %?><?% zeile.first %?>"><?% END %?> + <?% field %?> + <?% IF link %?></a><?% END %?> + </td> <?% END %?> </tr> <?% END %?> diff --git a/lib/Data/COW.pm b/lib/Data/COW.pm new file mode 100644 index 0000000..55ae9b4 --- /dev/null +++ b/lib/Data/COW.pm @@ -0,0 +1,332 @@ +package Data::COW; + +use 5.006001; +use strict; +no warnings; + +use Exporter; +use Scalar::Util qw<reftype blessed>; +use overload (); # we're not overloading anything, but we'd like to + # check if they're already implementing a value type + +use base 'Exporter'; + +our @EXPORT = qw<make_cow_ref>; + +our $VERSION = '0.02'; + +sub tied_any { + my ($ref) = @_; + if (ref $ref) { + if (reftype($ref) eq 'SCALAR') { + tied $$ref; + } + elsif (reftype($ref) eq 'ARRAY') { + tied @$ref; + } + elsif (reftype($ref) eq 'HASH') { + tied %$ref; + } + } + +} + +sub cow_object { + my ($ref) = @_; + my $tied = tied_any $ref; + $tied && $tied->isa('Data::COW') && $tied; +} + +sub make_cow_ref { + my ($ref, $parent, $key) = @_; + + make_cow_ref_nocheck($ref, $parent, $key); +} + +sub make_temp_cow_ref { + my ($ref, $parent, $key) = @_; + + if (my $obj = cow_object $ref) { + if ($obj->{parent} == $parent) { + $ref; + } + else { + make_cow_ref_nocheck($ref, $parent, $key); + } + } + else { + make_cow_ref_nocheck($ref, $parent, $key); + } +} + +sub make_cow_ref_nocheck { + my ($ref, $parent, $key) = @_; + + if (ref $ref && + # check if they already think they're a value type + !(overload::Overloaded($ref) && overload::Method($ref, '='))) + { + my $ret; + if (reftype($ref) eq 'SCALAR') { + tie my $it => 'Data::COW::Scalar', $ref, $parent, $key; + $ret = \$it; + } + elsif (reftype($ref) eq 'ARRAY') { + tie my @it => 'Data::COW::Array', $ref, $parent, $key; + $ret = \@it; + } + elsif (reftype($ref) eq 'HASH') { + tie my %it => 'Data::COW::Hash', $ref, $parent, $key; + $ret = \%it; + } + else { + # code and glob are not aggregates that we can take control + # of, so punt and just return them like anything else + return $ref; + } + + if (blessed($ref)) { + bless $ret => blessed($ref); + } + + return $ret; + } + else { + return $ref; + } +} + +sub clone_using { + my ($self, $copier) = @_; + + return unless $self->{const}; + my $old = $self->{ref}; + my $new = $copier->($old); + + if (blessed $old) { + bless $new => blessed $old; + } + if ($self->{parent}) { + my $cnew = make_cow_ref $new, $self->{parent}, undef; + tied_any($cnew)->{const} = 0; + $self->{parent}->clone($self->{key} => $cnew); + } + $self->{ref} = $new; + $self->{const} = 0; +} + +package Data::COW::Scalar; + +use Tie::Scalar; +use base 'Tie::Scalar'; +use base 'Data::COW'; + +sub TIESCALAR { + my ($class, $ref, $parent, $key) = @_; + bless { + ref => $ref, + parent => $parent, + key => $key, + const => 1, + } => ref $class || $class; +} + +sub clone { + my ($self, $key, $value) = @_; + + $self->clone_using(sub { my $v = ${$_[0]}; \$v }); + ${$self->{ref}} = $value if defined $key; +} + +sub FETCH { + my ($self) = @_; + Data::COW::make_temp_cow_ref(${$self->{ref}}, $self, 1); +} + +sub STORE { + my ($self, $value) = @_; + $self->clone(1 => $value); + $value; +} + +package Data::COW::Array; + +use Tie::Array; +use base 'Tie::Array'; +use base 'Data::COW'; + +sub TIEARRAY { + my ($class, $ref, $parent, $key) = @_; + bless { + ref => $ref, + parent => $parent, + key => $key, + const => 1, + } => ref $class || $class; +} + +sub clone { + my ($self, $key, $value) = @_; + $self->clone_using(sub { [ @{$_[0]} ] }); + $self->{ref}[$key] = $value if defined $key; +} + +sub FETCH { + my ($self, $key) = @_; + Data::COW::make_temp_cow_ref($self->{ref}[$key], $self, $key); +} + +sub STORE { + my ($self, $key, $value) = @_; + $self->clone($key => $value); + $value; +} + +sub FETCHSIZE { + my ($self) = @_; + scalar @{$self->{ref}}; +} + +sub STORESIZE { + my ($self, $size) = @_; + $self->clone; + $#{$self->{ref}} = $size-1; +} + +sub DELETE { + my ($self, $key) = @_; + $self->clone; + delete $self->{ref}[$key]; +} + +sub EXISTS { + my ($self, $key) = @_; + exists $self->{ref}[$key]; +} + +package Data::COW::Hash; + +use Tie::Hash; +use base 'Tie::Hash'; +use base 'Data::COW'; + +sub TIEHASH { + my ($class, $ref, $parent, $key) = @_; + bless { + ref => $ref, + parent => $parent, + key => $key, + const => 1, + } => ref $class || $class; +} + +sub clone { + my ($self, $key, $value) = @_; + $self->clone_using(sub { + my $ret = { %{$_[0]} }; + $ret; + }); + $self->{ref}{$key} = $value if defined $key; +} + +sub FETCH { + my ($self, $key) = @_; + Data::COW::make_temp_cow_ref($self->{ref}{$key}, $self, $key); +} + +sub STORE { + my ($self, $key, $value) = @_; + $self->clone($key => $value); + $value; +} + +sub EXISTS { + my ($self, $key) = @_; + exists $self->{ref}{$key}; +} + +sub DELETE { + my ($self, $key) = @_; + $self->clone; + delete $self->{ref}{$key}; +} + +sub CLEAR { + my ($self) = @_; + $self->clone_using(sub { {} }); + (); +} + +sub FIRSTKEY { + my ($self) = @_; + my $a = keys %{$self->{ref}}; # reset iterator + each %{$self->{ref}}; +} + +sub NEXTKEY { + my ($self) = @_; + each %{$self->{ref}}; +} + +sub SCALAR { + my ($self) = @_; + scalar %{$self->{ref}}; +} + +1; + +=head1 NAME + +Data::COW - clone deep data structures copy-on-write + +=head1 SYNOPSIS + + use Data::COW; + + my $array = [ 0, 1, 2 ]; + my $copy = make_cow_ref $array; + + push @$array, 3; + # $copy->[3] is 3 + push @$copy, 4; + # $array->[4] is not defined (and doesn't even exist) + # $copy is a real copy now + push @$array, 5; + # $copy is unaffected + +=head1 DESCRIPTION + +Data::COW makes copies of data structures copy-on-write, or "lazily". +So if you have a data structure that takes up ten megs of memory, it +doesn't take ten megs to copy it. Even if you change part of it, +Data::COW only copies the parts that need to be copied in order to +reflect the change. + +Data::COW exports one function: C<make_cow_ref>. This takes a reference +and returns a copy-on-write reference to it. If you don't want this +in your namespace, and you want to use it as C<Data::COW::make_cow_ref>, +use the module like this: + + use Data::COW (); + +Data::COW won't be able to copy filehandles or glob references. But how +do you change those anyway? It's also probably a bad idea to give it +objects that refer to XS internal state without providing a value type +interface. Also, don't use stringified references from this data +structure: they're different each time you access them! + +=head1 SEE ALSO + +L<Clone> + +=head1 AUTHOR + +Luke Palmer <luke@luqui.org> + +=head1 COPYRIGHT + + Copyright (C) 2005 by Luke Palmer + + This library is free software; you can redistribute it and/or modify it under + the same terms as Perl itself, either Perl version 5.8.3 or, at your option, + any later version of Perl 5 you may have available. diff --git a/lib/XXV/MODULES/AUTOTIMER.pm b/lib/XXV/MODULES/AUTOTIMER.pm index 01b89bd..f0da931 100644 --- a/lib/XXV/MODULES/AUTOTIMER.pm +++ b/lib/XXV/MODULES/AUTOTIMER.pm @@ -44,12 +44,6 @@ sub module { }, }, Commands => { - astatus => { - description => gettext('Display status of autotimers.'), - short => 'as', - callback => sub{ $obj->status(@_) }, - DenyClass => 'alist', - }, anew => { description => gettext("Create new autotimer"), short => 'an', @@ -155,7 +149,6 @@ sub module { # ------------------ sub status { my $obj = shift || return error('No object defined!'); - my $console = shift; my $lastReportTime = shift || 0; my %f = ( @@ -329,7 +322,8 @@ sub _init { # ------------------ sub autotimer { my $obj = shift || return error('No object defined!'); - my $console = shift; + my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $autotimerid = shift; my $waiter; @@ -575,7 +569,7 @@ sub _autotimerLookup { sleep 1; - $modT->readData(); + $modT->_readData(); return (\@{$log},$C,$M); } @@ -587,10 +581,11 @@ sub _autotimerLookup { sub autotimerCreate { my $obj = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $timerid = shift || 0; my $data = shift || 0; - $obj->autotimerEdit($console, $timerid, $data); + $obj->autotimerEdit($console, $config, $timerid, $data); } # ------------------ @@ -601,6 +596,7 @@ sub autotimerCreate { sub autotimerEdit { my $obj = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $timerid = shift || 0; my $data = shift || 0; @@ -1011,7 +1007,7 @@ You can also fine tune your search : $data->{Search}, ( $console->{USER} && $console->{USER}->{Name} ? sprintf(' from user: %s', $console->{USER}->{Name}) : "" ) ); - $obj->autotimer($console, $data->{Id}); + $obj->autotimer($console, $config, $data->{Id}); } return 1; } @@ -1024,6 +1020,7 @@ You can also fine tune your search : sub autotimerDelete { my $obj = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $timerid = shift || return $console->err(gettext("No autotimer defined for deletion! Please use adelete 'aid'!")); # If timerid the edittimer my @timers = reverse sort{ $a <=> $b } split(/[^0-9]/, $timerid); @@ -1054,6 +1051,7 @@ sub autotimerDelete { sub autotimerToggle { my $obj = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $timerid = shift || return $console->err(gettext("No autotimer defined to toggle! Please use atoggle 'aid'!")); my @timers = reverse sort{ $a <=> $b } split(/[^0-9]/, $timerid); @@ -1122,6 +1120,7 @@ sub autotimerToggle { sub list { my $obj = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $text = shift || ''; my $params = shift; @@ -1598,6 +1597,7 @@ sub suggest { # ------------------ my $obj = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $search = shift; my $params = shift; diff --git a/lib/XXV/MODULES/CHANNELS.pm b/lib/XXV/MODULES/CHANNELS.pm index b8d55de..de518a2 100644 --- a/lib/XXV/MODULES/CHANNELS.pm +++ b/lib/XXV/MODULES/CHANNELS.pm @@ -116,7 +116,6 @@ sub module { sub status { # ------------------ my $self = shift || return error('No object defined!'); - my $console = shift; my $lastReportTime = shift || 0; my $sql = "SELECT SQL_CACHE count(*) from CHANNELS"; @@ -391,7 +390,8 @@ sub _insertGrp { sub readData { # ------------------ my $self = shift || return error('No object defined!'); - my $console = shift; + my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); if($self->_readData($console)) { $console->redirect({url => '?cmd=clist', wait => 1}) @@ -431,7 +431,7 @@ sub _readData { or return error sprintf("Couldn't execute query: %s.",$dsth->errstr); my $msg = [ sprintf(gettext("No channels on '%s' available!"),$self->{svdrp}->hostname($vid)), $error ]; - $console->err($msg); + $console->err($msg) if(defined $console); next; } @@ -593,6 +593,7 @@ sub list { # ------------------ my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $id = shift || ''; my $params = shift; @@ -1023,6 +1024,7 @@ sub newChannel { # ------------------ my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $id = shift || 0; my $default = shift || 0; @@ -1034,6 +1036,7 @@ sub editChannel { # ------------------ my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $cid = shift || 0; # If channelid then edit channel my $data = shift || 0; # Data for defaults @@ -1336,7 +1339,8 @@ sub saveChannel { sub deleteChannel { # ------------------ my $self = shift || return error('No object defined!'); - my $console = shift; + my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $channelid = shift || return con_err($console, gettext("No channel defined for deletion! Please use cdelete 'pos'!")); my $answer = shift || 0; diff --git a/lib/XXV/MODULES/CHRONICLE.pm b/lib/XXV/MODULES/CHRONICLE.pm index 79d8b8e..d3aceed 100644 --- a/lib/XXV/MODULES/CHRONICLE.pm +++ b/lib/XXV/MODULES/CHRONICLE.pm @@ -166,6 +166,7 @@ sub list { # ------------------ my $self = shift; my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $data = shift; my $params = shift; @@ -244,7 +245,8 @@ sub search { # ------------------ my $self = shift; my $console = shift || return error('No console defined!'); - my $text = shift || return $console->err(gettext("No 'string' to search for! Please use chrsearch 'text'.")); + my $config = shift || return error('No config defined!'); + my $text = shift || return $console->err(gettext("No 'string' to search defined! Please use chrsearch 'text'.")); my $params = shift; my $query = buildsearch("title",$text); @@ -326,6 +328,7 @@ sub delete { # ------------------ my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $items = shift || return $console->err(gettext("No ID to delete! Please use chrdelete 'id'")); my @ids = reverse sort{ $a <=> $b } split(/[^0-9]/, $items); diff --git a/lib/XXV/MODULES/CONFIG.pm b/lib/XXV/MODULES/CONFIG.pm index 426be49..0f36a8f 100644 --- a/lib/XXV/MODULES/CONFIG.pm +++ b/lib/XXV/MODULES/CONFIG.pm @@ -43,7 +43,7 @@ sub module { description => gettext("Restart all modules."), short => 'rel', callback => sub{ - my ($console, $l) = @_; + my ($console, $config, $l) = @_; $Module::Reload::Debug = CORE::int(($Tools::VERBOSE+.5)/2); # my %Status = %Module::Reload->Stat; my $cnt = Module::Reload->check(); @@ -99,14 +99,15 @@ sub new { } # ------------------ -sub menu { +sub _menu { # ------------------ my $obj = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift; my $sector = shift || 0; my $ret = {}; - $ret->{title} = gettext("Settings for XXV"); + $ret->{title} = gettext("Global settings"); $ret->{highlight} = $sector; my $mods = main::getModules; @@ -129,10 +130,11 @@ sub edit { # ------------------ my $obj = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift; my $sector = shift || 0; my $data = shift || 0; - $obj->menu( $console, $sector ) + $obj->_menu( $console, $config, $sector ) if($console->{TYP} eq 'HTML' or ($console->{TYP} ne 'HTML' and not $sector)); return unless $sector; @@ -204,6 +206,7 @@ sub get { # ------------------ my $obj = shift || return error('No object defined!'); my $console = shift; + my $config = shift; my $modname = shift || 0; return con_err($console, gettext('Need a name of the module to display the configuration!')) @@ -292,6 +295,7 @@ sub usage { # ------------------ my $obj = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift; my $modulename = shift || 0; my $hint = shift || ''; my $user = shift || $console->{USER}; diff --git a/lib/XXV/MODULES/EPG.pm b/lib/XXV/MODULES/EPG.pm index 352dfaf..c36b8ae 100644 --- a/lib/XXV/MODULES/EPG.pm +++ b/lib/XXV/MODULES/EPG.pm @@ -38,12 +38,14 @@ sub module { default => '12:00,18:00,20:15,22:00', type => 'string', required => gettext('This is required!'), + level => 'guest' }, timeframe => { description => gettext("How much hours to display in schema"), default => 2, type => 'integer', required => gettext('This is required!'), + level => 'guest' }, }, Commands => { @@ -126,7 +128,6 @@ sub module { sub status { # ------------------ my $self = shift || return error('No object defined!'); - my $console = shift; my $lastReportTime = shift || 0; my $total = 0; @@ -281,6 +282,7 @@ sub startReadEpgData { # ------------------ my $self = shift || return error('No object defined!'); my $console = shift; + my $config = shift; debug sprintf('The read on epg data start now!'); @@ -641,6 +643,7 @@ sub search { # ------------------ my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $data = shift; my $params = shift; @@ -791,6 +794,7 @@ sub program { # ------------------ my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $cid = shift; unless($cid) { my $c = $self->{dbh}->selectrow_arrayref("SELECT SQL_CACHE hash from CHANNELS order by vid, pos limit 1"); @@ -913,6 +917,7 @@ sub display { # ------------------ my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $eventid = shift; unless($eventid) { @@ -1002,6 +1007,7 @@ sub runningNext { # ------------------ my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $data = shift; my $param = shift || {}; @@ -1158,7 +1164,7 @@ ORDER BY c.vid, c.pos $console->table($erg, { - periods => $self->{periods}, + periods => $config->{periods}, cgroups => $cgroups, channelgroup => $cgrp, rows => $rows @@ -1171,6 +1177,7 @@ sub runningNow { # ------------------ my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $zeit = shift || time; my $param = shift || {}; @@ -1307,7 +1314,7 @@ ORDER BY c.vid, c.pos $console->table($erg, { zeit => $zeit, - periods => $self->{periods}, + periods => $config->{periods}, cgroups => $cgroups, channelgroup => $cgrp, rows => $rows @@ -1320,6 +1327,7 @@ sub NowOnChannel { # ------------------ my $self = shift || return error('No object defined!'); my $console = shift; + my $config = shift; my $channel = shift; my $vid = shift || $self->{svdrp}->primary_hosts(); @@ -1403,6 +1411,7 @@ sub schema { # ------------------ my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $zeit = shift || time; my $param = shift || {}; @@ -1417,11 +1426,11 @@ sub schema { $zeit = UnixDate(ParseDate($zeit),"%s") || time; } - $zeit += 86400 if($zeit < time - ($self->{timeframe} * 3600)); + $zeit += 86400 if($zeit < time - ($config->{timeframe} * 3600)); $zeit++; my $zeitvon = $self->toFullHour($zeit); - my $zeitbis = $zeitvon + ($self->{timeframe}*3600); + my $zeitbis = $zeitvon + ($config->{timeframe}*3600); push(@$term, $zeitvon); push(@$term, $zeitbis); @@ -1523,7 +1532,7 @@ WHERE { zeitvon => $zeitvon, zeitbis => $zeitbis, - periods => $self->{periods}, + periods => $config->{periods}, cgroups => $cgroups, channelgroup => $cgrp } @@ -1535,6 +1544,7 @@ sub checkOnTimer { # ------------------ my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $eid = shift || return con_err($console, gettext('No event id defined!')); my $sql = qq| @@ -1576,6 +1586,7 @@ sub getDescription { # ------------------ my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $eid = shift || 0; my $event = $self->getId($eid,"description"); @@ -1624,6 +1635,7 @@ sub suggest { # ------------------ my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $search = shift; my $params = shift; @@ -1682,6 +1694,7 @@ sub image { # ------------------ my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $data = shift; return $console->err(gettext("Sorry, get image is'nt supported")) diff --git a/lib/XXV/MODULES/EVENTS.pm b/lib/XXV/MODULES/EVENTS.pm index f3ac7e1..cd6345b 100644 --- a/lib/XXV/MODULES/EVENTS.pm +++ b/lib/XXV/MODULES/EVENTS.pm @@ -341,6 +341,7 @@ sub list { # ------------------ my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $data = shift || 1; my %f = ( @@ -388,6 +389,8 @@ sub request { # ------------------ my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); + # To this time you can set on # cmd=request&data=rss&ver=2 or # cmd=request&data=mail&__test=1 diff --git a/lib/XXV/MODULES/GRAB.pm b/lib/XXV/MODULES/GRAB.pm index 7bb8226..8895535 100644 --- a/lib/XXV/MODULES/GRAB.pm +++ b/lib/XXV/MODULES/GRAB.pm @@ -234,6 +234,7 @@ sub display { # ------------------ my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $data = shift; my $params = shift; diff --git a/lib/XXV/MODULES/HTTPD.pm b/lib/XXV/MODULES/HTTPD.pm index 8887290..b587f20 100644 --- a/lib/XXV/MODULES/HTTPD.pm +++ b/lib/XXV/MODULES/HTTPD.pm @@ -85,6 +85,7 @@ sub module { type => 'list', required => gettext('This is required!'), choices => sub{ return $self->findskins(); }, + level => 'guest' }, StartPage => { description => gettext('Startup screen'), @@ -95,7 +96,8 @@ sub module { my $erg = $self->_get_startpage_as_array(); map { my $x = $_->[1]; $_->[1] = $_->[0]; $_->[0] = $x; } @$erg; return $erg; - } + }, + level => 'guest' }, Debug => { description => gettext('Dump additional debugging information, required only for software development.'), @@ -172,7 +174,7 @@ sub init { LocalAddr => $self->{Interface}, Reuse => 1 ) or return error("Couldn't create socket: $!"); - + binmode $socket, ":encoding(utf8)" if($self->{charset} eq 'UTF-8'); # install an initial watcher Event->io( fd => $socket, @@ -223,8 +225,6 @@ sub communicator { if(exists $self->{LOGOUT}); my $ip = getip($handle); - my $htmlRootDir = sprintf('%s/%s', $self->{paths}->{HTMLDIR}, $self->{HtmlRoot}); - my $htmlDefDir = sprintf('%s/%s', $self->{paths}->{HTMLDIR}, 'default'); my $query = $data->{Query}; if($data->{Method} eq 'POST' && $data->{Post}) { @@ -238,6 +238,7 @@ sub communicator { my $cgi = CGI->new( $query ); my $console; + my $htmlRootDir; if(my $outputtype = $cgi->param('ajax')) { # Is a Ajax Request $console = XXV::OUTPUT::Ajax->new( @@ -253,31 +254,33 @@ sub communicator { $console = XXV::OUTPUT::Html->new( -handle => $handle, -dbh => $self->{dbh}, - -htmdir => $htmlRootDir, - -htmdef => $htmlDefDir, + -htmdir => $self->{paths}->{HTMLDIR}, -cgi => $cgi, -mime => $mime, -browser=> $data, -paths => $self->{paths}, - -start => $self->{StartPage}, -debug => ($self->{Debug} eq 'y' ? 1 : 0), -charset=> $self->{charset}, ); + $htmlRootDir = $console->setSkin($self->{HtmlRoot}); # Set default skin } my $userMod = main::getModule('USER'); - if(ref $userMod and $userMod->{active} eq 'y') { - $console->{USER} = $userMod->check($handle, $data->{username}, $data->{password}); - $console->login(gettext('You are not authorized to use this system!')) - unless(exists $console->{USER}->{Level}); - } - - if(ref $userMod and - ($userMod->{active} ne 'y' - or exists $console->{USER}->{Level})) { - + unless(ref $userMod) { + $self->ModulNotLoaded($console,'USER'); + } else { + $console->{USER} = $userMod->check($handle, $data->{username}, $data->{password}); + unless(exists $console->{USER}->{Level}) { + $console->login(gettext('You are not authorized to use this system!')); + } else { $console->setCall('nothing'); - if(not $data->{Query} and + my $config = $console->{USER}->{config}->{'HTTPD'}; + + $htmlRootDir = $console->setSkin($config->{HtmlRoot}) + if($htmlRootDir); # Set user skin on HTML console + + if($htmlRootDir and + not $data->{Query} and ($data->{Request} eq '/' or -d sprintf('%s/%s', $htmlRootDir,$data->{Request}))) { my $request = $htmlRootDir; $request .= '/'; @@ -288,7 +291,7 @@ sub communicator { $request =~ s/\/+/\//g; # Send the first page (index.html) if(-r sprintf('%sindex.tmpl', $request)) { - $console->index; + $console->index($config->{StartPage}); } else { $console->datei(sprintf('%sindex.html', $request)); } @@ -299,7 +302,7 @@ sub communicator { $request =~ s/\/\.\.//g; $request =~ s/\/+/\//g; if($request =~ /tempimages\//) { - my $tmp = $userMod->userTmp; + my $tmp = $userMod->userTmp($console->{USER}->{Name}); $request =~ s/.*tempimages\//$tmp\//; $console->datei($request, $typ); } else { @@ -308,9 +311,7 @@ sub communicator { } else { $self->handleInput($console, $cgi); } - - } else { - $self->ModulNotLoaded($console,'USER'); + } } $console->footer() if($console->{inclFooter}); $console->printout(); @@ -461,7 +462,7 @@ sub handleInput { # Test the command on exists, permissions and so on my $u = main::getModule('USER'); if($u) { - my ($cmdobj, $cmdname, $shorterr, $err) = $u->checkCommand($console, $ucmd); + my ($cmdobj, $cmdname, $cmdModule, $shorterr, $err) = $u->checkCommand($console, $ucmd); $console->setCall($cmdname); if($cmdobj and not $shorterr) { @@ -469,11 +470,11 @@ sub handleInput { $console->{nocache} = 1 if($cmdobj->{binary} eq 'nocache'); } - $cmdobj->{callback}($console, $udata, $result ); + $cmdobj->{callback}($console, $console->{USER}->{config}->{$cmdModule}, $udata, $result ); } elsif($shorterr eq 'noperm' or $shorterr eq 'noactive') { $console->status403($err); } else { - $self->usage($console, undef, $err); + $self->_usage($console, undef, $err); } } else { $self->ModulNotLoaded($console,'USER'); @@ -481,7 +482,7 @@ sub handleInput { } # ------------------ -sub usage { +sub _usage { # ------------------ my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); @@ -490,7 +491,7 @@ sub usage { my $m = main::getModule('CONFIG'); if ($m){ - return $m->usage($console,$modulename,$hint); + return $m->usage($console,undef, $modulename,$hint); } else { $self->ModulNotLoaded($console,'CONFIG'); } @@ -501,7 +502,6 @@ sub usage { sub status { # ------------------ my $self = shift || return error('No object defined!'); - my $console = shift || return; my $lastReportTime = shift || 0; return { @@ -555,10 +555,11 @@ sub findskins # ------ unzip ------------ sub unzip { my $self = shift || return error('No object defined!'); + my $console = shift || return error('No console defined!'); my $file = shift || return error('No file defined!'); my $gz = gzopen($file, "rb") - or return $self->msg(undef, sprintf(gettext("Could not open file '%s'! : %s"), $file, &gzerror )); + or return $console->msg(undef, sprintf(gettext("Could not open file '%s'! : %s"), $file, &gzerror )); my $text; while($gz->gzread(my $buffer) > 0) { @@ -567,10 +568,9 @@ sub unzip { $gz->gzclose(); my $u = main::getModule('USER'); - if($u) { - my $tmpfile = sprintf('%s/gz_%d.tmp', $u->userTmp, time); - return save_file($tmpfile, $text); - } + return $self->ModulNotLoaded($console,'USER') unless(ref $u); + my $tmpfile = sprintf('%s/gz_%d.tmp', $u->userTmp($console->{USER}->{Name}), time); + return save_file($tmpfile, $text); } @@ -584,6 +584,7 @@ sub checkvalue { # ------------------ my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $data = shift || return error('No data defined!'); my @query = split(':',$data); diff --git a/lib/XXV/MODULES/KEYWORDS.pm b/lib/XXV/MODULES/KEYWORDS.pm index 27c16c8..fb51765 100644 --- a/lib/XXV/MODULES/KEYWORDS.pm +++ b/lib/XXV/MODULES/KEYWORDS.pm @@ -200,6 +200,7 @@ sub suggest { my $self = shift || return error('No object defined!'); my $type = shift || return error('No type defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $search = shift; my $params = shift; @@ -280,6 +281,7 @@ sub timer_keywords { # ------------------ my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $text = shift; my $params = shift; @@ -302,6 +304,7 @@ sub recording_keywords { # ------------------ my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $text = shift; my $params = shift; diff --git a/lib/XXV/MODULES/LOGREAD.pm b/lib/XXV/MODULES/LOGREAD.pm index a8862e5..214b202 100644 --- a/lib/XXV/MODULES/LOGREAD.pm +++ b/lib/XXV/MODULES/LOGREAD.pm @@ -101,6 +101,7 @@ sub logger { # ------------------ my $obj = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $logname = shift || 'standard'; my $params = shift || {}; diff --git a/lib/XXV/MODULES/MEDIALIB.pm b/lib/XXV/MODULES/MEDIALIB.pm index da41794..d219352 100644 --- a/lib/XXV/MODULES/MEDIALIB.pm +++ b/lib/XXV/MODULES/MEDIALIB.pm @@ -43,18 +43,6 @@ sub module { type => 'dir', required => gettext("This is required!"), }, - listcols => { - description => gettext('Number of columns in listview'), - default => 4, - type => 'integer', - required => gettext('This is required!'), - }, - actorcols => { - description => gettext('Number of columns of actors in detailview'), - default => 6, - type => 'integer', - required => gettext('This is required!'), - }, deflanguage => { description => gettext('Default media language'), default => 'german', @@ -294,7 +282,6 @@ sub _init { # ------------------ sub status { my $obj = shift || return error('No object defined!'); - my $console = shift; my $sql = qq| SELECT SQL_CACHE @@ -315,10 +302,10 @@ sub researchMedia { # ------------------ my $obj = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $id = shift || 0; my $params = shift || {}; - if(ref $params eq 'HASH') { my $medias; @@ -344,10 +331,11 @@ sub createMedia { # ------------------ my $obj = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $id = shift || 0; my $params = shift || 0; - $obj->editMedia($console, 0, $params); + $obj->editMedia($console, $config, 0, $params); } # ------------------ @@ -355,6 +343,7 @@ sub copyMedia { # ------------------ my $obj = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $id = shift || 0; my $params = shift || 0; @@ -373,7 +362,7 @@ WHERE delete $erg->{id}; $erg->{range} = $params->{range} if($params && $params->{range}); - $obj->editMedia($console, 0, $erg); + $obj->editMedia($console, $config, 0, $erg); } # ------------------ @@ -381,6 +370,7 @@ sub importMedia { # ------------------ my $obj = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $id = shift || 0; my $params = shift || {}; @@ -437,8 +427,8 @@ sub importMedia { } } - $params->{mediatype} = $obj->{defmediatype} unless defined $params->{mediatype} && $params->{mediatype} != 0; - $params->{language} = $obj->{deflanguage} unless defined $params->{language} && $params->{language} ne ''; + $params->{mediatype} = $config->{defmediatype} unless defined $params->{mediatype} && $params->{mediatype} != 0; + $params->{language} = $config->{deflanguage} unless defined $params->{language} && $params->{language} ne ''; $console->table({}, { @@ -456,6 +446,7 @@ sub searchMedia { # ------------------ my $obj = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $id = shift || 0; my $params = shift || {}; @@ -520,7 +511,7 @@ ORDER BY title $setcount = defined $erg ? scalar @$erg : 0; map { $_->[1] =~ s/([^A-Za-z0-9])/sprintf("%%%02X", ord($1))/seg; - } @$erg if $obj->{usecache} eq "y"; + } @$erg if $config->{usecache} eq "y"; } $console->table($erg, @@ -529,10 +520,9 @@ ORDER BY title fields => $obj->_getsearchsfields_as_array, allgenres => $obj->_get_videogenres_as_array, setcount => $setcount, - range => defined $params->{range} && $params->{range} ne '' ? $params->{range} : $obj->{defrange}, + range => defined $params->{range} && $params->{range} ne '' ? $params->{range} : $config->{defrange}, ranges => $obj->_get_ranges_as_array, - cols => $obj->{listcols}, - usecache => $obj->{usecache}, + usecache => $config->{usecache}, } ); } @@ -542,6 +532,7 @@ sub editMedia { # ------------------ my $obj = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $id = shift || 0; my $params = shift || {}; @@ -569,8 +560,8 @@ WHERE } } - $params->{mediatype} = $obj->{defmediatype} unless defined $params->{mediatype} && $params->{mediatype} != 0; - $params->{language} = $obj->{deflanguage} unless defined $params->{language} && $params->{language} ne ''; + $params->{mediatype} = $config->{defmediatype} unless defined $params->{mediatype} && $params->{mediatype} != 0; + $params->{language} = $config->{deflanguage} unless defined $params->{language} && $params->{language} ne ''; $console->table({}, { @@ -588,13 +579,14 @@ sub listMedia { # ------------------ my $obj = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $id = shift || ""; my $params = shift; my ($r, $range,$where); $r = uc($params->{range}) if ( $params && defined $params->{range} && $params->{range}=~ /^.+?/ ); - $r = uc($obj->{defrange}) + $r = uc($config->{defrange}) if ( ! $r ); if ( $r eq "SEEN" ) { @@ -630,14 +622,13 @@ ORDER BY title # da sonst die Formatierung des Listenansicht nicht mehr passt map { $_->[1] =~ s/([^A-Za-z0-9])/sprintf("%%%02X", ord($1))/seg; - } @$erg if $obj->{usecache} eq "y"; + } @$erg if $config->{usecache} eq "y"; my $param = { setcount => $setcount, range => $r, ranges => $obj->_get_ranges_as_array, - cols => $obj->{listcols}, - usecache => $obj->{usecache}, + usecache => $config->{usecache}, }; return $console->table($erg, $param); } @@ -647,6 +638,7 @@ sub displayMedia { # ------------------ my $obj = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $id = shift || ""; my $params = shift; @@ -666,7 +658,7 @@ WHERE id = ? my $erg = $sth->fetchall_arrayref(); my $actors = $obj->_get_actors( $erg->[0][12] ); my $actorcount = ref $actors ? scalar @$actors : 0; - $erg->[0][10] =~ s/([^A-Za-z0-9])/sprintf("%%%02X", ord($1))/seg if $obj->{usecache} eq "y"; + $erg->[0][10] =~ s/([^A-Za-z0-9])/sprintf("%%%02X", ord($1))/seg if $config->{usecache} eq "y"; $erg->[0][18] = '' if $erg->[0][18] eq '0000-00-00 00:00:00'; #\r\n will be replace with <br/> by output from OUTPUT::HTML @@ -679,10 +671,9 @@ WHERE id = ? actorcount => $actorcount, genres_all => $obj->_get_videogenres_as_hash_by_id, genres_sel => $obj->_get_videogenres_byvideoid( $id ), - range => defined $params->{range} && $params->{range} ne '' ? $params->{range} : $obj->{defrange}, + range => defined $params->{range} && $params->{range} ne '' ? $params->{range} : $config->{defrange}, ranges => $obj->_get_ranges_as_array, - actorcols => $obj->{actorcols}, - usecache => $obj->{usecache}, + usecache => $config->{usecache}, }; return $console->table($erg, $param); } @@ -692,6 +683,7 @@ sub saveMedia { # ------------------ my $obj = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $id = shift || ""; my $params = shift; @@ -735,6 +727,7 @@ sub deleteMedia { # ------------------ my $obj = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $id = shift || ""; my $params = shift; @@ -773,7 +766,6 @@ sub deleteMedia { sub _saveActors { # ------------------ my $obj = shift || return error('No object defined!'); - my $console = shift || return error('No console defined!'); my $input = shift || ''; $input =~ s/\r\n/\n/g; @@ -984,6 +976,7 @@ sub mediacache { # ------------------ my $obj = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $id = shift || 0; my $params = shift || ''; diff --git a/lib/XXV/MODULES/MOVETIMER.pm b/lib/XXV/MODULES/MOVETIMER.pm index d2b050a..853ddb9 100644 --- a/lib/XXV/MODULES/MOVETIMER.pm +++ b/lib/XXV/MODULES/MOVETIMER.pm @@ -168,7 +168,8 @@ sub _init { sub movetimermanual { # ------------------ my $self = shift || return error('No object defined!'); - my $console = shift; + my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $id = shift; return 0 unless($self->_movetimer($console,$id)); @@ -362,10 +363,11 @@ sub modifyTimer { sub movetimercreate { my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $id = shift || 0; my $data = shift || 0; - $self->movetimeredit($console, $id, $data); + $self->movetimeredit($console, $config, $id, $data); } # ------------------ @@ -376,6 +378,7 @@ sub movetimercreate { sub movetimeredit { my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $id = shift || 0; my $data = shift || 0; @@ -537,6 +540,7 @@ sub _insert { sub movetimerdelete { my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $id = shift || return $console->err(gettext("Missing ID to select rules for deletion! Please use movetimerdelete 'id'")); my @rules = reverse sort{ $a <=> $b } split(/[^0-9]/, $id); @@ -566,6 +570,7 @@ sub movetimerdelete { sub movetimerlist { my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my %f = ( 'id' => gettext('Service'), diff --git a/lib/XXV/MODULES/MUSIC.pm b/lib/XXV/MODULES/MUSIC.pm index e32f60f..479bcab 100644 --- a/lib/XXV/MODULES/MUSIC.pm +++ b/lib/XXV/MODULES/MUSIC.pm @@ -336,6 +336,7 @@ sub refresh { # ------------------ my $obj = shift || return error('No object defined!'); my $console = shift; + my $config = shift; my $dbh = ($obj->{mdbh} ? $obj->{mdbh} : $obj->{dbh}); @@ -454,6 +455,7 @@ sub play { # ------------------ my $obj = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $data = shift || return error('No data defined!'); debug sprintf('Call play%s', @@ -468,6 +470,7 @@ sub playlist { # ------------------ my $obj = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $data = shift || return error('No data defined!'); my $dbh = ($obj->{mdbh} ? $obj->{mdbh} : $obj->{dbh}); @@ -521,6 +524,7 @@ sub search { # ------------------ my $obj = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $text = shift; unless($text) { @@ -536,6 +540,7 @@ sub list { # ------------------ my $obj = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $param = shift; my $dbh = ($obj->{mdbh} ? $obj->{mdbh} : $obj->{dbh}); @@ -905,7 +910,6 @@ sub GenreArray { sub status { # ------------------ my $obj = shift || return error('No object defined!'); - my $console = shift; my $lastReportTime = shift || 0; return @@ -962,6 +966,7 @@ sub getcovers { # ------------------ my $obj = shift || return error('No object defined!'); my $console = shift; + my $config = shift; my $force = shift; my $dbh = ($obj->{mdbh} ? $obj->{mdbh} : $obj->{dbh}); @@ -1097,7 +1102,7 @@ sub getcovers { } # Start Robots - $rob->start( 'coverimage', $console, sub{ $waiter->end if(ref $waiter and $current); } ); + $rob->start( 'coverimage', sub{ $waiter->end if(ref $waiter and $current); } ); return $erg; } @@ -1290,6 +1295,7 @@ sub coverimage { # ------------------ my $obj = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $data = shift || return error('No data defined!'); my $dbh = ($obj->{mdbh} ? $obj->{mdbh} : $obj->{dbh}); @@ -1360,6 +1366,7 @@ sub getfile { # ------------------ my $obj = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $data = shift || return error('No data defined!'); my $dbh = ($obj->{mdbh} ? $obj->{mdbh} : $obj->{dbh}); @@ -1398,6 +1405,7 @@ sub suggest { # ------------------ my $obj = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $search = shift; my $params = shift; diff --git a/lib/XXV/MODULES/RECORDS.pm b/lib/XXV/MODULES/RECORDS.pm index b0b8bf8..325c60f 100644 --- a/lib/XXV/MODULES/RECORDS.pm +++ b/lib/XXV/MODULES/RECORDS.pm @@ -486,7 +486,7 @@ sub scandirectory { wanted => sub{ if(-r $File::Find::name) { if($File::Find::name =~ /\.$typ\/\d{3}.vdr$/sig) { # Lookup for *.rec/001.vdr - my $filename = $File::Find::name;#$enc->decode($File::Find::name); + my $filename = $File::Find::name; my $path = dirname($filename); my $md5 = md5_hex($path); @@ -508,6 +508,7 @@ sub scandirectory { my $title = dirname($path); $title =~ s/^$self->{videodir}//g; $title =~ s/^\///g; +# $rec->{title} = $enc->decode($self->converttitle($title)); $rec->{title} = $self->converttitle($title); # add file @@ -537,6 +538,7 @@ sub readData { # ------------------ my $self = shift || return error('No object defined!'); my $console = shift; + my $config = shift; my $waiter = shift; # Read manual or Once at day, make full scan my $forceUpdate = shift; @@ -656,7 +658,7 @@ sub readData { my $job = $self->videoPreview( $db_data->{$h}, 1); if($job) { push(@{$self->{JOBS}}, $job); - $self->_updatePreview($job->{RecordMD5}, $db_data->{$h}->{preview}); + $self->_updatePreview($self->{dbh}, $job->{RecordMD5}, $db_data->{$h}->{preview}); } } $self->_updateEvent($db_data->{$h}); @@ -750,7 +752,8 @@ sub readData { defined(my $child = fork()) or return con_err($console, sprintf("Couldn't fork : %s",$!)); if($child == 0) { $self->{dbh}->{InactiveDestroy} = 1; - + my $dbh = $self->{dbh}->clone(); + error(sprintf("Couldn't clone database handle : %s",$!)) unless($dbh); while(scalar @jobs > 0) { my $job = shift (@jobs); @@ -764,8 +767,9 @@ sub readData { push(@{$preview},$frame); last if(scalar @{$preview} >= $self->{previewcount}); } - $self->_updatePreview($job->{RecordMD5},$preview); + $self->_updatePreview($dbh, $job->{RecordMD5},$preview) if($dbh); } + undef $dbh; exit 0; } } @@ -834,6 +838,7 @@ sub refresh { # ------------------ my $self = shift || return error('No object defined!'); my $console = shift; + my $config = shift; my $waiter; if(ref $console && $console->typ eq 'HTML') { @@ -842,7 +847,7 @@ sub refresh { con_msg($console,gettext("Get information on recordings ...")); } - if($self->readData($console,$waiter,'force')) { + if($self->readData($console,$config, $waiter,'force')) { $console->redirect({url => '?cmd=rlist', wait => 1}) if(ref $console and $console->typ eq 'HTML'); @@ -913,10 +918,11 @@ sub _updateState { sub _updatePreview { # ------------------ my $self = shift || return error('No object defined!'); + my $dbh = shift || return error ('No dbh defined!'); my $RecordMD5 = shift || return error ('No data defined!'); my $preview = shift || return error ('No data to replace!'); my $images = join(',',@{$preview}); - my $sth = $self->{dbh}->prepare('UPDATE RECORDS SET preview=?, addtime=NOW() where RecordMD5=?'); + my $sth = $dbh->prepare('UPDATE RECORDS SET preview=?, addtime=NOW() where RecordMD5=?'); return $sth->execute($images,$RecordMD5); } # ------------------ @@ -1477,6 +1483,7 @@ sub display { # ------------------ my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $recordid = shift; unless($recordid) { @@ -1546,6 +1553,7 @@ sub play { # ------------------ my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $recordid = shift || return con_err($console,gettext("No recording defined for playback! Please use rplay 'rid'.")); my $params = shift; @@ -1574,7 +1582,7 @@ sub play { my $cmd = sprintf('PLAY %d %s', $rec->{RecordID}, $start); - if($self->{svdrp}->scommand($console, $cmd)) { + if($self->{svdrp}->scommand($console, $config, $cmd)) { $console->redirect({url => sprintf('?cmd=rdisplay&data=%s',$rec->{RecordMD5}), wait => 1}) if(ref $console and $console->typ eq 'HTML'); @@ -1589,6 +1597,7 @@ sub cut { # ------------------ my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $recordid = shift || return con_err($console,gettext("No recording defined for playback! Please use rplay 'rid'.")); my $sql = qq|SELECT SQL_CACHE RecordID,RecordMD5 FROM RECORDS WHERE RecordMD5 = ?|; @@ -1615,6 +1624,7 @@ sub list { # ------------------ my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $text = shift || ""; my $params = shift; @@ -1757,18 +1767,20 @@ sub search { # ------------------ my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); - my $text = shift || return $self->list($console); + my $config = shift || return error('No config defined!'); + my $text = shift || return $self->list($console,$config); my $params = shift; my $query = buildsearch("e.title,e.subtitle,e.description",$text); - return $self->_search($console,$query->{query},$query->{term},$params); + return $self->_search($console,$config,$query->{query},$query->{term},$params); } # ------------------ sub _search { # ------------------ my $self = shift || return error('No object defined!'); - my $console = shift; + my $console = shift; + my $config = shift; my $search = shift; my $term = shift; my $params = shift; @@ -1892,6 +1904,7 @@ sub delete { # ------------------ my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $record = shift || return con_err($console,gettext("No recording defined for deletion! Please use rdelete 'id'.")); my $answer = shift || 0; @@ -2026,6 +2039,7 @@ sub redit { # ------------------ my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $recordid = shift || return con_err($console,gettext("No recording defined for editing!")); my $data = shift || 0; @@ -2305,6 +2319,7 @@ sub conv { # ------------------ my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $data = shift || 0; $self->_loadreccmds; @@ -2361,7 +2376,6 @@ sub conv { sub status { # ------------------ my $self = shift || return error('No object defined!'); - my $console = shift; my $lastReportTime = shift; my $sql = qq| @@ -2589,6 +2603,7 @@ sub suggest { # ------------------ my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $search = shift; my $params = shift; @@ -2633,6 +2648,7 @@ sub recover { # ------------------ my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $recordid = shift || 0; my $data = shift || 0; @@ -2772,6 +2788,7 @@ sub image { # ------------------ my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $data = shift; return $console->err(gettext("Sorry, get image is'nt supported")) diff --git a/lib/XXV/MODULES/REMOTE.pm b/lib/XXV/MODULES/REMOTE.pm index a3ff243..caf09f9 100644 --- a/lib/XXV/MODULES/REMOTE.pm +++ b/lib/XXV/MODULES/REMOTE.pm @@ -32,6 +32,7 @@ sub module { default => 'y', type => 'confirm', required => gettext('This is required!'), + level => 'guest' }, commands => { description => sprintf(gettext("Path of file '%s'"),'commands.conf'), @@ -161,6 +162,7 @@ sub list { # ------------------ my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $cmds = $self->parse(); my @list = (['__Id', 'Name', 'Cmd']); @@ -176,6 +178,7 @@ sub command { # ------------------ my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $command = shift || return error('No command defined!'); my $cmds = $self->parse(); @@ -207,6 +210,7 @@ sub remote { # ------------------ my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $command = shift; my $params = shift; @@ -264,6 +268,7 @@ sub switch { # ------------------ my $self = shift || return error('No object defined!'); my $console = shift; + my $config = shift; my $cid = shift || ''; my $params = shift; diff --git a/lib/XXV/MODULES/REPORT.pm b/lib/XXV/MODULES/REPORT.pm index 1b42657..2fe2695 100644 --- a/lib/XXV/MODULES/REPORT.pm +++ b/lib/XXV/MODULES/REPORT.pm @@ -113,7 +113,8 @@ sub init { sub report { # ------------------ my $self = shift || return error('No object defined!'); - my $console = shift; + my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $modulename = shift || ''; my $mods = main::getModules(); @@ -126,7 +127,7 @@ sub report { next if($modulename and uc($modulename) ne $modCfg->{Name}); next if(exists $mods->{$modName}->{active} and $cfg->{$modCfg->{Name}}->{active} eq 'n'); if(exists $modCfg->{Status} and ref $modCfg->{Status} eq 'CODE') { - $result->{$modCfg->{Name}} = $modCfg->{Status}($console, $self->{LastReportTime}); + $result->{$modCfg->{Name}} = $modCfg->{Status}($self->{LastReportTime}); } } diff --git a/lib/XXV/MODULES/ROBOT.pm b/lib/XXV/MODULES/ROBOT.pm index d6bab6b..6b732da 100644 --- a/lib/XXV/MODULES/ROBOT.pm +++ b/lib/XXV/MODULES/ROBOT.pm @@ -20,6 +20,7 @@ sub module { Date => (split(/ /, '$Date$'))[1], Author => 'xpix', LastAuthor => (split(/ /, '$Author$'))[1], + Status => sub{ $obj->status(@_) }, Preferences => { active => { description => gettext('Activate this service'), @@ -28,13 +29,6 @@ sub module { required => gettext('This is required!'), }, }, - Commands => { - robot => { - description => gettext("Start a robots 'rname'"), - short => 'ro', - callback => sub{ $obj->start(@_) }, - }, - }, }; return $args; } @@ -111,8 +105,7 @@ sub start { # ------------------ my $obj = shift || return error('No object defined!'); my $rname = shift || return error('No robot name defined!'); - my $console = shift; - my $endcb = shift; + my $endcb = shift; lg sprintf('Start Robots ....'); @@ -169,16 +162,14 @@ sub result { sub status { # ------------------ my $obj = shift || return error('No object defined!'); - my $console = shift; - my $rname = shift; + my $lastReportTime = shift || 0; - return 1 unless(ref $console); + return + if($obj->{active} eq 'n'); - if($rname) { - $console->table($obj->{result}->{$rname}); - } else { - $console->table($obj->{result}); - } + return { + message => $obj->{result} + }; } diff --git a/lib/XXV/MODULES/SHARE.pm b/lib/XXV/MODULES/SHARE.pm index c4bb6d4..50abc4d 100644 --- a/lib/XXV/MODULES/SHARE.pm +++ b/lib/XXV/MODULES/SHARE.pm @@ -345,6 +345,7 @@ sub TopTen { # ------------------ my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $anzahl = shift || 10; my %f = ( diff --git a/lib/XXV/MODULES/STATUS.pm b/lib/XXV/MODULES/STATUS.pm index a2875f0..2895f1c 100644 --- a/lib/XXV/MODULES/STATUS.pm +++ b/lib/XXV/MODULES/STATUS.pm @@ -36,12 +36,6 @@ sub module { type => "file", required => gettext('This is required!'), }, - wcBinary => { - description => sprintf(gettext("Path of command '%s'"),'wc'), - default => "/usr/bin/wc", - required => gettext('This is required!'), - type => "file", - }, dfBinary => { description => sprintf(gettext("Path of command '%s'"),'df'), default => "/bin/df", @@ -75,21 +69,23 @@ sub module { description => gettext('Display all relevant informations about this system'), short => 'sa', callback => sub{ - my $console = shift; + my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); + $console->setCall('vitals'); - $obj->vitals($console); + $obj->vitals($console,$config); $console->setCall('filesys'); - $obj->filesys($console); + $obj->filesys($console,$config); $console->setCall('memory'); - $obj->memory($console); + $obj->memory($console,$config); $console->setCall('network'); - $obj->network($console); + $obj->network($console,$config); $console->setCall('hardware'); - $obj->hardware($console); + $obj->hardware($console,$config); }, }, vitals => { @@ -201,6 +197,7 @@ sub vitals { # ------------------ my $obj = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $output = { name => $obj->name(), @@ -227,6 +224,7 @@ sub network { # ------------------ my $obj = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $interfaces = $obj->netDevs(); my $param = { @@ -244,6 +242,7 @@ sub hardware { # ------------------ my $obj = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my ($number, $model, $speed, $cache, $bogomips) = $obj->CPU(); my $pci = $obj->pci(); @@ -271,6 +270,7 @@ sub memory { # ------------------ my $obj = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $ret = $obj->meminfo(undef,$console->typ eq 'HTML'); my $param = { @@ -288,6 +288,7 @@ sub filesys { # ------------------ my $obj = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $ret = $obj->mounts(undef,$obj->{graphic} eq 'y' && $console->typ eq 'HTML'); my $param = { @@ -549,10 +550,10 @@ sub util { sub users { my $obj = shift || return error('No object defined!'); - my $result = `$obj->{whoBinary} | $obj->{wcBinary} -l` - or return error "Couldn't execute $obj->{whoBinary} or $obj->{wcBinary}\n"; - $result =~ s/\n//g; - return $result; + my $result = `$obj->{whoBinary}` + or return error "Couldn't execute $obj->{whoBinary}\n"; + my $lines = ($result =~ tr/\n//); + return $lines; } diff --git a/lib/XXV/MODULES/STREAM.pm b/lib/XXV/MODULES/STREAM.pm index e693bf3..d6e3407 100644 --- a/lib/XXV/MODULES/STREAM.pm +++ b/lib/XXV/MODULES/STREAM.pm @@ -189,6 +189,7 @@ sub livestream { # ------------------ my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $cid = shift || return con_err($console,gettext("No channel defined for streaming!")); my $params = shift; @@ -268,6 +269,7 @@ sub playrecord { # ------------------ my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $recid = shift || return $console->err(gettext("No recording defined for streaming!")); my $params = shift; diff --git a/lib/XXV/MODULES/SVDRP.pm b/lib/XXV/MODULES/SVDRP.pm index fc9a10a..716b834 100644 --- a/lib/XXV/MODULES/SVDRP.pm +++ b/lib/XXV/MODULES/SVDRP.pm @@ -21,6 +21,7 @@ sub module { Date => (split(/ /, '$Date$'))[1], Author => 'xpix', LastAuthor => (split(/ /, '$Author$'))[1], + Status => sub{ $self->status(@_) }, Preferences => { timeout => { description => gettext('Connection timeout defines after how many seconds an unrequited connection is terminated.'), @@ -57,7 +58,7 @@ sub module { sstatus => { description => gettext('Status from video disk recorder.'), short => 'ss', - callback => sub{ $self->status(@_) }, + callback => sub{ $self->state(@_) }, Level => 'user', DenyClass => 'remote', }, @@ -179,15 +180,17 @@ sub _insert { sub create { my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $id = shift || 0; my $data = shift || 0; - $self->edit($console, $id, $data); + $self->edit($console, $config, $id, $data); } sub edit { my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $id = shift || 0; my $data = shift || 0; @@ -272,6 +275,8 @@ sub edit { sub delete { my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); + my $id = shift || return $console->err(gettext("No definition of video disk recorder for deletion! Please use sdelete 'id'.")); my $sth = $self->{dbh}->prepare('delete from RECORDER where id = ?'); @@ -309,6 +314,7 @@ sub list { # ------------------ my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my %f = ( 'id' => gettext('Service'), @@ -445,6 +451,15 @@ sub enum_onlinehosts { return $hosts; } +sub enum_hosts { + my $self = shift || return error('No object defined!'); + + my $sth = $self->{dbh}->prepare("SELECT SQL_CACHE host,id FROM RECORDER"); + $sth->execute() + or return error sprintf("Couldn't execute query: %s.",$sth->errstr); + return $sth->fetchall_arrayref(); +} + # ------------------ sub IDfromHostname { # ------------------ @@ -538,16 +553,15 @@ sub command { my $data; my $line; - my @commands; - push(@commands, (ref $cmd eq 'ARRAY' ? @$cmd : $cmd)); + my $commands; + push(@$commands, (ref $cmd eq 'ARRAY' ? @$cmd : $cmd)); - unless(scalar @commands > 0) { + unless(scalar @$commands > 0) { $error = 'No commands defined!'; error ($error); return (undef, $error); } - push(@commands, "quit"); - + push(@$commands, "quit"); # Open connection my $so = IO::Socket::INET->new(PeerAddr => $vdr->{host}, PeerPort => $vdr->{port} , Proto => 'tcp' ); @@ -597,8 +611,9 @@ sub command { #my $enc = find_encoding($encoding); # send commando queue - foreach my $command (@commands) { - $command =~ s/\r?\n//; + foreach my $command (@$commands) { + $command =~ s/\r//g; + $command =~ s/\n$//; #if($encoding ne $self->{charset}) { # $command = $enc->encode($command); #} @@ -648,7 +663,7 @@ sub command { $self->{Cache}->{$vdrid}->{online} = 'yes'; - foreach my $command (@commands) { + foreach my $command (@$commands) { my @lines = (split(/[\r\n]/, $command)); event(sprintf('Call command "%s" on %s %s.', $lines[0], $vdr->{host}, $error ? " failed" : "successful")) if($command ne "quit"); @@ -657,10 +672,11 @@ sub command { } # ------------------ -sub status { +sub state { # ------------------ my $self = shift || return error('No object defined!'); my $console = shift || return; + my $config = shift || return error('No config defined!'); my $vdrid = shift; my ($erg,$error) = $self->command('stat disk', $vdrid); @@ -676,6 +692,7 @@ sub scommand { # ------------------ my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $text = shift || return $console->err(gettext("No command defined! Please use scommand 'cmd'.")); my $vdrid = shift; @@ -691,4 +708,50 @@ sub scommand { return 0; } +# ------------------ +sub status { +# ------------------ + my $self = shift || return error('No object defined!'); + my $lastReportTime = shift; + + my %f = ( + 'host' => gettext('Recorder'), + 'state' => gettext('State') + ); + + my $sql = qq| +SELECT SQL_CACHE + id as __id, + host as \'$f{host}\', + active as \'$f{state}\' +from RECORDER WHERE active = 'y'|; + + my $sth = $self->{dbh}->prepare($sql); + $sth->execute() + or return error sprintf("Couldn't execute query: %s.",$sth->errstr); + my $fields = $sth->{'NAME'}; + my $erg = $sth->fetchall_arrayref(); + + map { + if(defined $self->{Cache}->{$_->[0]} + && defined $self->{Cache}->{$_->[0]}->{online}) { + if($self->{Cache}->{$_->[0]}->{online} eq 'yes') { + $_->[2] = gettext("Online"); + } else { + $_->[2] = gettext("Offline"); + } + } else { + $_->[2] = gettext("Unknown"); + } + } @$erg; + + unshift(@$erg, $fields); + return { + message => sprintf(gettext('%d active recorder'), + (scalar @$erg -1)), + table => $erg, + }; +} + + 1; diff --git a/lib/XXV/MODULES/TELNET.pm b/lib/XXV/MODULES/TELNET.pm index a1829e8..c7f93a7 100644 --- a/lib/XXV/MODULES/TELNET.pm +++ b/lib/XXV/MODULES/TELNET.pm @@ -48,21 +48,11 @@ sub module { }, }, Commands => { - quit => { - description => gettext("This will exit the telnet session"), - short => 'q', - callback => sub{ - my ($w, $c, $l) = @_; - lg "Telnet session closed.\n"; - $c->message(gettext("Session closed.")); - $obj->{LOGOUT} = 1; - }, - }, bye => { description => gettext("This will exit the xxv system."), short => 'x', callback => sub{ - my ($w, $c, $l) = @_; + my ($console, $config) = @_; my $answer; my $questions = [ 'really' => { @@ -70,10 +60,8 @@ sub module { msg => gettext("Are you sure to exit the xxv system?"), def => 'n'} ]; - $answer = $c->question(gettext("This will exit the xxv system."),$questions,$answer); + $answer = $console->question(gettext("This will exit the xxv system."),$questions,$answer); if($answer->{really} eq 'y') { - $w->w->fd->close; - $w->w->cancel; lg "Closed session and exit.\n"; main::quit; } diff --git a/lib/XXV/MODULES/TIMERS.pm b/lib/XXV/MODULES/TIMERS.pm index 9de2d81..ed4e337 100644 --- a/lib/XXV/MODULES/TIMERS.pm +++ b/lib/XXV/MODULES/TIMERS.pm @@ -27,31 +27,74 @@ sub module { default => 30 * 60, type => 'integer', required => gettext("This is required!"), + check => sub{ + my $value = shift || 0; + if($value =~ /^\d+$/sig and $value > 60) { + return int($value); + } else { + return undef, gettext('Value incorrect!'); + } + }, }, prevminutes => { description => gettext('Buffer time in minutes before the scheduled start of a recording'), default => 5, type => 'integer', + check => sub{ + my $value = shift || 0; + if($value =~ /^\d+$/sig and $value >= 0 and $value <= 1440) { + return int($value); + } else { + return undef, gettext('Value incorrect!'); + } + }, + level => 'guest' }, afterminutes => { description => gettext('Buffer time in minutes past the scheduled end of a recording'), default => 5, type => 'integer', + check => sub{ + my $value = shift || 0; + if($value =~ /^\d+$/sig and $value >= 0 and $value <= 1440) { + return int($value); + } else { + return undef, gettext('Value incorrect!'); + } + }, + level => 'guest' }, Priority => { description => gettext('Priority of a timer for recordings when creating a new timer'), default => 50, type => 'integer', + check => sub{ + my $value = shift || 0; + if($value =~ /^\d+$/sig and $value >= 0 and $value < 100) { + return int($value); + } else { + return undef, gettext('Value incorrect!'); + } + }, }, Lifetime => { description => gettext('The guaranteed lifetime (in days) of a recording created by this timer'), default => 50, type => 'integer', + check => sub{ + my $value = shift || 0; + if($value =~ /^\d+$/sig and $value >= 0 and $value < 100) { + return int($value); + } else { + return undef, gettext('Value incorrect!'); + } + }, }, usevpstime => { description => gettext('Use Programme Delivery Control (PDC) to control start time'), default => 'n', type => 'confirm', + level => 'guest' }, adjust => { description => gettext('Change timers if EPG entries change'), @@ -219,7 +262,6 @@ sub module { sub status { # ------------------ my $self = shift || return error('No object defined!'); - my $console = shift; my $lastReportTime = shift || 0; my $total = 0; @@ -427,13 +469,14 @@ sub _saveTimer { sub _newTimerdefaults { my $self = shift || return error('No object defined!'); - my $timer = shift; + my $config = shift || return error('No config defined!'); + my $timer = shift; $timer->{active} = 'y'; - $timer->{priority} = $self->{Priority}; - $timer->{lifetime} = $self->{Lifetime}; + $timer->{priority} = $config->{Priority}; + $timer->{lifetime} = $config->{Lifetime}; - if($timer->{vpsstart} && $self->{usevpstime} eq 'y' && $timer->{vpsstart} > time ) { + if($timer->{vpsstart} && $config->{usevpstime} eq 'y' && $timer->{vpsstart} > time ) { $timer->{vps} = 'y'; $timer->{day} = $timer->{vpsday}; $timer->{start} = $timer->{vpsstart}; @@ -447,6 +490,7 @@ sub newTimer { # ------------------ my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $epgid = shift || 0; my $epg = shift || 0; @@ -472,7 +516,7 @@ WHERE|; my $data; my $sth = $self->{dbh}->prepare($sql); - if(!$sth->execute($self->{prevminutes} * 60, $self->{prevminutes} * 60, $self->{afterminutes} * 60, @events) + if(!$sth->execute($config->{prevminutes} * 60, $config->{prevminutes} * 60, $config->{afterminutes} * 60, @events) || !($data = $sth->fetchall_hashref('eventid')) || (scalar keys %{$data} < 1)) { return $console->err(sprintf(gettext("Event '%s' does not exist in the database!"),join(',',@events))); @@ -481,9 +525,9 @@ WHERE|; my $count = 1; foreach my $eventid (keys %{$data}) { $epg = $data->{$eventid}; - $self->_newTimerdefaults($epg); + $self->_newTimerdefaults($config, $epg); $epg->{action} = 'save' if(scalar keys %{$data} > 1 || $fast ); - $self->_editTimer($console, 0, $epg) if($count < scalar keys %{$data}); + $self->_editTimer($console, $config, 0, $epg) if($count < scalar keys %{$data}); $count += 1; } } @@ -496,9 +540,9 @@ WHERE|; start => my_strftime("%H%M",$t), stop => my_strftime("%H%M",$t + 3600) }; - $self->_newTimerdefaults($epg); + $self->_newTimerdefaults($config, $epg); } - $self->editTimer($console, 0, $epg); + $self->editTimer($console, $config, 0, $epg); } # ------------------ @@ -506,6 +550,7 @@ sub _editTimer { # ------------------ my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $timerid = shift || 0; # If timerid the edittimer my $data = shift || 0; # Data for defaults @@ -762,10 +807,11 @@ sub editTimer { # ------------------ my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $timerid = shift; # id of present timer, then edit this timer my $data = shift; # Data for defaults - if($self->_editTimer($console,$timerid,$data) + if($self->_editTimer($console,$config,$timerid,$data) && $self->{svdrp}->queue_count()) { my ($erg,$error) = $self->{svdrp}->queue_flush(); # Aufrufen der Kommandos @@ -799,6 +845,7 @@ sub deleteTimer { # ------------------ my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $timerid = shift || return $console->err(gettext("No timer defined for deletion! Please use tdelete 'tid'.")); # If timerid the edittimer my $answer = shift || 0; @@ -884,6 +931,7 @@ sub toggleTimer { # ------------------ my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $timerid = shift || return $console->err(gettext("No timer defined to toggle! Please use ttoggle 'id'.")); # If timerid the edittimer my @timers = split(/[^0-9a-f]/, $timerid); @@ -1122,7 +1170,8 @@ sub _readData { sub readData { # ------------------ my $self = shift || return error('No object defined!'); - my $console = shift; + my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); if($self->_readData($console)) { $console->redirect({url => '?cmd=tlist', wait => 1}) @@ -1157,6 +1206,7 @@ sub list { # ------------------ my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $id = shift; my $params = shift; @@ -1168,7 +1218,7 @@ sub list { foreach(@timers) { push(@{$term},$_); } } - return $self->_list($console,$search,$term,$params); + return $self->_list($console,$config,$search,$term,$params); } # ------------------ @@ -1176,6 +1226,7 @@ sub search { # ------------------ my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $text = shift || return $self->list($console); my $params = shift; @@ -1185,7 +1236,7 @@ sub search { $search = sprintf('AND ( %s )', $query->{query}); foreach(@{$query->{term}}) { push(@{$term},$_); } - return $self->_list($console,$search,$term,$params); + return $self->_list($console,$config,$search,$term,$params); } # ------------------ @@ -1193,6 +1244,7 @@ sub _list { # ------------------ my $self = shift || return error('No object defined!'); my $console = shift; + my $config = shift; my $search = shift || ''; my $term = shift; my $params = shift; @@ -1966,6 +2018,7 @@ sub suggest { # ------------------ my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $search = shift; my $params = shift; diff --git a/lib/XXV/MODULES/USER.pm b/lib/XXV/MODULES/USER.pm index e4a355e..7864e6e 100644 --- a/lib/XXV/MODULES/USER.pm +++ b/lib/XXV/MODULES/USER.pm @@ -10,12 +10,13 @@ use File::Path; # ------------------ sub module { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $args = { Name => 'USER', Prereq => { 'Net::IP::Match::Regexp qw( create_iprange_regexp match_ip )' => 'Efficiently match IPv4 addresses against IPv4 ranges via regexp ', + 'Data::COW' => 'clone deep data structures copy-on-write' }, Description => gettext("This module manages the User administration. @@ -71,31 +72,31 @@ or the same parameter is set for each function."), unew => { description => gettext('Create new user account'), short => 'un', - callback => sub{ $obj->create(@_) }, + callback => sub{ $self->create(@_) }, Level => 'admin', }, udelete => { description => gettext("Delete user account 'uid'"), short => 'ud', - callback => sub{ $obj->delete(@_) }, + callback => sub{ $self->delete(@_) }, Level => 'admin', }, uedit => { description => gettext("Edit user account 'uid'"), short => 'ue', - callback => sub{ $obj->edit(@_) }, + callback => sub{ $self->edit(@_) }, Level => 'admin', }, uprefs => { description => gettext("Change preferences"), short => 'up', - callback => sub{ $obj->userprefs(@_) }, + callback => sub{ $self->userprefs(@_) }, Level => 'user', }, ulist => { description => gettext("List the accounts of users"), short => 'ul', - callback => sub{ $obj->list(@_) }, + callback => sub{ $self->list(@_) }, Level => 'admin', }, logout => { @@ -103,8 +104,9 @@ or the same parameter is set for each function."), short => 'exit', callback => sub{ my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); - if($obj->{active} eq 'y') { + if($self->{active} eq 'y') { $console->message(gettext("Session closed.")); $console->redirect({url => '?', parent => 'top', wait => 2}) if($console->typ eq 'HTML'); @@ -127,14 +129,12 @@ or the same parameter is set for each function."), after => 1, prio => 6, # -1 very hard ... 6 very low cb => sub{ - $obj->logout; - delete $console->{USER} if($console->{USER}); + $self->_logout($console,$config); $ConsoleMod->{LOGOUT} = 1 if($ConsoleMod); }, ); } else { - $obj->logout; - delete $console->{USER} if($console->{USER}); + $self->_logout($console,$config); $ConsoleMod->{LOGOUT} = 1 if($ConsoleMod); } } @@ -190,28 +190,28 @@ sub new { # ------------------ sub _init { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); - unless($obj->{dbh}) { + unless($self->{dbh}) { panic("Session to database is'nt connected"); return 0; } my $version = main::getDBVersion(); # don't remove old table, if updated rows => warn only - if(!tableUpdated($obj->{dbh},'USER',$version,0)) { + if(!tableUpdated($self->{dbh},'USER',$version,0)) { return 0; } # Look for table or create this table - my $erg = $obj->{dbh}->do(qq| + my $erg = $self->{dbh}->do(qq| CREATE TABLE IF NOT EXISTS USER ( Id int(11) unsigned auto_increment NOT NULL, Name varchar(100) NOT NULL default '', Password varchar(100) NOT NULL, Level set('admin', 'user', 'guest' ) NOT NULL, - Prefs varchar(100) default '', - UserPrefs varchar(100) default '', + Prefs text default '', + UserPrefs text default '', Deny set('tlist', 'alist', 'rlist', 'mlist', 'tedit', 'aedit', 'redit', 'remote', 'stream', 'cedit', 'media'), MaxLifeTime tinyint(2) default '0', MaxPriority tinyint(2) default '0', @@ -220,8 +220,8 @@ sub _init { |); # The Table is empty? Make a default User ... - unless($obj->{dbh}->selectrow_arrayref('SELECT SQL_CACHE count(*) from USER')->[0]) { - $obj->_insert({ + unless($self->{dbh}->selectrow_arrayref('SELECT SQL_CACHE count(*) from USER')->[0]) { + $self->_insert({ Name => 'xxv', Password => 'xxv', Level => 'admin', @@ -233,29 +233,40 @@ sub _init { # ------------------ # Name: create # Descr: Save a new User in the Usertable. -# Usage: my $ok = $obj->create($console, 0, {name => 'user', ...}); +# Usage: my $ok = $self->create($console, 0, {name => 'user', ...}); # ------------------ sub create { - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $id = shift || 0; my $data = shift || 0; - $obj->edit($console, $id, $data); + $self->edit($console, $config, $id, $data); } # ------------------ sub userprefs { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); - my $id = shift || $obj->{USER}->{Id}; + my $config = shift || return error('No config defined!'); + my $id = shift; my $data = shift || 0; + + unless($console->{USER}->{Id}) { + return $console->err(gettext("This account has'nt own preferences!")); + } + + $id = $console->{USER}->{Id} unless($id); + if($id ne $console->{USER}->{Id}) { + return $console->err(gettext("You are not authorized for change external account preferences!")); + } my $user; if($id and not ref $data) { - my $sth = $obj->{dbh}->prepare('SELECT SQL_CACHE * from USER where Id = ?'); + my $sth = $self->{dbh}->prepare('SELECT SQL_CACHE * from USER where Id = ?'); $sth->execute($id) or return $console->err(sprintf(gettext("User account '%s' does not exist in the database!"),$id)); $user = $sth->fetchrow_hashref(); @@ -269,50 +280,106 @@ sub userprefs { 'Password' => { typ => 'password', msg => gettext("Password for this account"), - req => gettext('This is required!'), + #req => gettext('This is required!'), def => '', check => sub{ my $value = shift || return; + + return $value unless(ref $value eq 'ARRAY'); + # If no password given the # take the old password as default - if($console->typ eq 'HTML') { - if($value->[0] and $value->[0] ne $value->[1]) { - return undef, gettext("The fields with the 1st and the 2nd password must match!"); - } else { - return $value->[0]; - } - } - else { - return $value; - } - }, - }, - 'UserPrefs' => { - def => $user->{UserPrefs} || '', - msg => gettext("Personal preferences for this user: ModName::Param=value, "), - typ => 'string', - check => sub{ - my $value = shift || return; - foreach my $pref (split(',', $value)) { - my ($modname, $parameter, $value) = $pref =~ /(\S+)::(\S+)\=(.+)/sg; - if(my $mod = main::getModule($modname)) { - unless(exists $mod->{$parameter}) { - return undef, sprintf(gettext("The parameter '%s' in module '%s' does not exist!"),$parameter, $mod); - } - } + if($value->[0] and $value->[0] ne $value->[1]) { + return undef, gettext("The fields with the 1st and the 2nd password must match!"); + } else { + return $value->[0]; } - return $value; }, }, ]; + my $mods = main::getModules(); + my $defaultconfig = main::getModule('CONFIG')->{config}; + my $values; + @$values = split('\n', $user->{UserPrefs}) if($user->{UserPrefs}); + + foreach my $modName (sort keys %{$mods}) { + my $prefs = $mods->{$modName}->{MOD}->{Preferences}; + + my @m = split('::', $modName); + shift(@m);#'XXV' + shift(@m);#'MODULES' + my $modul = join('::',@m); + + my $cfg = $defaultconfig->{$modul}; + + next if(exists $mods->{$modName}->{active} and $cfg->{active} eq 'n'); + + foreach my $name (sort { lc($a) cmp lc($b) } keys(%{$prefs})) { + my $def; + if($values) { + foreach my $userpref (@$values) { + my ($modname, $parameter, $value) = $userpref =~ /(\S+)::(\S+)\=(.+)/sg; + if($modname eq $modul && $name eq $parameter) { + $def = $value; + last; + } + } + } + $def = $cfg->{$name} + if(!(defined $def) && defined $cfg->{$name} && $cfg->{$name} ne ""); + $def = $prefs->{$name}->{default} unless(defined $def); + + push(@$questions, $modul .'::'. $name, + { + typ => $prefs->{$name}->{type} || 'string', + options => $prefs->{$name}->{options}, + msg => sprintf("%s:\n%s", ucfirst($modul), ($prefs->{$name}->{description} || ucfirst($name) )), + def => $def, + #req => $prefs->{$name}->{required}, + choices => $prefs->{$name}->{choices}, + check => $prefs->{$name}->{check}, + readonly => $prefs->{$name}->{readonly} || 0, + } + ) if($prefs->{$name}->{level} + and $self->getLevel($console->{USER}->{Level}) + >= $self->getLevel($prefs->{$name}->{level})); + } + } # Ask Questions - $data = $console->question(sprintf(gettext('Edit preferences: %s'), $obj->{USER}->{Name}), $questions, $data); - - if(ref $data eq 'HASH') { - $obj->_insert($data); - - $obj->refreshUserSettings($data->{UserPrefs}, $user->{UserPrefs}); + $data = $console->question(sprintf(gettext('Edit preferences: %s'), $console->{USER}->{Name}), $questions, $data); + + if(ref $data eq 'HASH' && $data->{Id} eq $id) { + my $userpref; + foreach my $item (keys(%{$data})) { + next unless($item =~ /::/s); + my $value = delete $data->{$item}; + my ($modname, $parameter) = $item =~ /(\S+)::(\S+)/sg; + my $mod = main::getModule($modname); + unless(exists $mod->{$parameter}) { + error sprintf(("The module '%s' does not exist!"),$mod); + next; + } + unless(exists $mod->{$parameter}) { + error sprintf(("The parameter '%s' in module '%s' does not exist!"),$parameter, $mod); + next; + } + my $prefs = $mod->{MOD}->{Preferences}; + unless($prefs->{$parameter}->{level} + and $self->getLevel($console->{USER}->{Level}) + >= $self->getLevel($prefs->{$parameter}->{level})) { + error sprintf(("You are not authorized for change this parameter '%s' in module '%s'!"),$parameter, $mod); + next; + } + my $cfg = $defaultconfig->{$modname}; + unless($cfg->{$parameter} ne $value) { + next; + } + + push(@$userpref,$modname .'::'. $parameter .'='.$value); + } + $data->{UserPrefs} = $userpref ? join('\n', @$userpref) : undef; + $self->_insert($data); $console->message(gettext('User account saved!')); if($console->typ eq 'HTML') { @@ -327,17 +394,18 @@ sub userprefs { # ------------------ # Name: edit # Descr: Edit an existing User in the Usertable. -# Usage: my $ok = $obj->edit($console, $id, [$data]); +# Usage: my $ok = $self->edit($console, $id, [$data]); # ------------------ sub edit { - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $id = shift || 0; my $data = shift || 0; my $user; if($id and not ref $data) { - my $sth = $obj->{dbh}->prepare('SELECT SQL_CACHE * from USER where Id = ?'); + my $sth = $self->{dbh}->prepare('SELECT SQL_CACHE * from USER where Id = ?'); $sth->execute($id) or return $console->err(sprintf(gettext("User account '%s' does not exist in the database!"),$id)); $user = $sth->fetchrow_hashref(); @@ -370,17 +438,15 @@ sub edit { def => '', check => sub{ my $value = shift || return; + + return $value unless(ref $value eq 'ARRAY'); + # If no password given the # take the old password as default - if($console->typ eq 'HTML') { - if($value->[0] and $value->[0] ne $value->[1]) { - return undef, gettext("The fields with the 1st and the 2nd password must match!"); - } else { - return $value->[0]; - } - } - else { - return $value; + if($value->[0] and $value->[0] ne $value->[1]) { + return undef, gettext("The fields with the 1st and the 2nd password must match!"); + } else { + return $value->[0]; } }, }, @@ -428,12 +494,17 @@ sub edit { }, }, 'Prefs' => { - def => $user->{Prefs} || '', + def => sub { + my $value = $user->{Prefs} ? split(/\n/,$user->{Prefs}) : ''; + return (ref $value eq 'ARRAY') ? join(',', @$value) : $value; + }, msg => gettext("Preferences for this User: ModName::Param=value, "), typ => 'string', check => sub{ my $value = shift || return; - foreach my $pref (split(',', $value)) { + my @vals = (ref $value eq 'ARRAY') ? @$value : split(/\s*,\s*/, $value); + + foreach my $pref (@vals) { my ($modname, $parameter, $value) = $pref =~ /(\S+)::(\S+)\=(.+)/sg; if(my $mod = main::getModule($modname)) { unless(exists $mod->{$parameter}) { @@ -441,7 +512,7 @@ sub edit { } } } - return $value; + return join('\n', @vals); }, }, 'MaxLifeTime' => { @@ -475,10 +546,10 @@ sub edit { : gettext('Create new user account')), $questions, $data); if(ref $data eq 'HASH') { - $obj->_insert($data); + $self->_insert($data); debug sprintf('%s account with name "%s" is saved%s', - ($id ? 'New' : 'Changed'), + ($id ? 'Changed' : 'New'), $data->{Name}, ( $console->{USER} && $console->{USER}->{Name} ? sprintf(' from user: %s', $console->{USER}->{Name}) : "" ) ); @@ -493,14 +564,15 @@ sub edit { # ------------------ # Name: delete # Descr: Delete an existing User in the Usertable with Id. -# Usage: my $ok = $obj->delete($console, $id); +# Usage: my $ok = $self->delete($console, $id); # ------------------ sub delete { - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $id = shift || return $console->err(gettext("No user account defined for deletion! Please use udelete 'uid'.")); - my $sth = $obj->{dbh}->prepare('delete from USER where Id = ?'); + my $sth = $self->{dbh}->prepare('delete from USER where Id = ?'); $sth->execute($id) or return $console->err(sprintf(gettext("User account '%s' does not exist in the database!"),$id)); $console->message(sprintf gettext("User account %s deleted."), $id); @@ -519,8 +591,9 @@ sub delete { # ------------------ sub list { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my %f = ( 'Id' => gettext('Service'), @@ -531,7 +604,7 @@ sub list { ); my $sql = qq| -SELECT SQL_CACHE +SELECT SQL_CACHE Id as \'$f{Id}\', Name as \'$f{Name}\', Level as \'$f{Level}\', @@ -541,7 +614,7 @@ from USER |; - my $sth = $obj->{dbh}->prepare($sql); + my $sth = $self->{dbh}->prepare($sql); $sth->execute() or return error sprintf("Couldn't execute query: %s.",$sth->errstr); my $fields = $sth->{'NAME'}; @@ -553,47 +626,39 @@ from # ------------------ # Name: logout -# Descr: The routine for logout the user, this will clean the user temp files -# and make a rollback to the standard user settings. -# Usage: my $ok = $obj->logout(); +# Descr: The routine for logout the user, this will clean the user temp files. +# Usage: my $ok = $self->logout(); # ------------------ -sub logout { - my $obj = shift || return error('No object defined!'); +sub _logout { + my $self = shift || return error('No object defined!'); + my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); lg sprintf('Logout called%s', - $obj->{USER}->{Name} ? sprintf(" by user %s", $obj->{USER}->{Name}) : "" + $console->{USER}->{Name} ? sprintf(" by user %s", $console->{USER}->{Name}) : "" ); - # get the default user settings - $obj->setUserSettings($obj->{USER}->{UserPrefs}, 'rollback') - if($obj->{USER}->{UserPrefs}); - - # get the default settings - $obj->setUserSettings($obj->{USER}->{Prefs}, 'rollback') - if($obj->{USER}->{Prefs}); - - main::toCleanUp($obj->{USER}->{Name}); - delete $obj->{USER}; + main::toCleanUp($console->{USER}->{Name}); return 1; } # ------------------ sub _checkIp { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $handle = shift || return; my $ip = getip($handle); - if($obj->{withAuth}) { - my $regexp = create_iprange_regexp(split(/\s*,\s*/, $obj->{withAuth})); + if($self->{withAuth}) { + my $regexp = create_iprange_regexp(split(/\s*,\s*/, $self->{withAuth})); if (match_ip($ip, $regexp)) { return 0; } } - if($obj->{noAuth}) { - my $regexp = create_iprange_regexp(split(/\s*,\s*/, $obj->{noAuth})); + if($self->{noAuth}) { + my $regexp = create_iprange_regexp(split(/\s*,\s*/, $self->{noAuth})); if (match_ip($ip, $regexp)) { return 1; } @@ -606,88 +671,63 @@ sub _checkIp { # Descr: The loginroutine to check the User Name, Password # or the ClientIPAdress. # This will return a Userhash with the DB-Entrys. -# Usage: my $userHash = $obj->check($handle); +# Usage: my $userHash = $self->check($handle); # ------------------ sub check { - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $handle = shift || return; - if($obj->_checkIp($handle)) { - $obj->{USER}->{Name} = undef; - $obj->{USER}->{Level} = 'admin'; + my $user; + if($self->{active} ne 'y' + or $self->_checkIp($handle)) { + $user->{Name} = 'su'; # we are Superuser + $user->{Level} = 'admin'; + #$user->{MaxLifeTime} = 0; #0 - disabled + #$user->{MaxPriority} = 0; #0 - disabled + $user->{config} = main::getModule('CONFIG')->{config}; } else { my $name = shift || return; my $password = shift || return; - - my $oldprefs = $obj->{USER}->{UserPrefs}; - - my $newUser = 0; - if((!$obj->{USER}) or (!scalar keys %{$obj->{USER}}) or $name ne $obj->{USER}->{Name}) { - lg sprintf('User %s try to login!', $name ); - $newUser = $name; - $obj->logout() - if($obj->{USER} and (scalar keys %{$obj->{USER}})); - } - # check User - my $sth = $obj->{dbh}->prepare('SELECT SQL_CACHE * from USER where Name = ? and Password = md5( ? )'); + my $sth = $self->{dbh}->prepare('SELECT SQL_CACHE * from USER where Name = ? and Password = md5( ? )'); $sth->execute($name, $password) or return error sprintf("Couldn't execute query: %s.",$sth->errstr); - $obj->{USER} = $sth->fetchrow_hashref(); + $user = $sth->fetchrow_hashref(); + + return undef + unless($user); + + $user->{config} = make_cow_ref(main::getModule('CONFIG')->{config}); # Set the user settings from user - $obj->refreshUserSettings($obj->{USER}->{UserPrefs}, $oldprefs); + $self->applySettings($user->{UserPrefs}, $user->{config}) + if($user->{UserPrefs}); # Set the user settings from admin - $obj->setUserSettings($obj->{USER}->{Prefs}, 'set') - if($obj->{USER}->{Prefs} and $newUser); + $self->applySettings($user->{Prefs}, $user->{config}) + if($user->{Prefs}); } - if(my $level = $obj->getLevel($obj->{USER}->{Level})) { - $obj->{USER}->{value} = $level if($level); + if(my $level = $self->getLevel($user->{Level})) { + $user->{value} = $level if($level); } - return $obj->{USER}; -} - -# ------------------ -sub refreshUserSettings { -# ------------------ - my $obj = shift || return error('No object defined!'); - my $newprefs = shift || ''; - my $oldprefs = shift || ''; - - return 1 if($newprefs eq $oldprefs); - - $obj->setUserSettings($oldprefs, 'rollback') - if($oldprefs); - - $obj->setUserSettings($newprefs, 'set') - if($newprefs); - - my $mod = main::getModule('CONFIG'); - $mod->reconfigure(); - + return $user; } - # ------------------ -sub setUserSettings { +sub applySettings { # ------------------ - my $obj = shift || return error('No object defined!'); - my $prefs = shift || return error ('No Settings??'); - my $mode = shift || 'set'; + my $self = shift || return error('No object defined!'); + my $newprefs = shift || return error ('No settings defined!'); + my $config = shift || return error ('No config defined!'); - foreach my $pref (split(',', $prefs)) { + foreach my $pref (split('\n', $newprefs)) { my ($modname, $parameter, $value) = $pref =~ /(\S+)::(\S+)\=(.*)/sg; if($modname and my $mod = main::getModule($modname) and my $cfg = main::getModule('CONFIG')->{config}) { if(exists $mod->{$parameter}) { - if($mode eq 'set') { - $cfg->{$modname}->{$parameter} = $value; - } else { - $cfg->{$modname}->{$parameter} = $mod->{$parameter}; - } + $config->{$modname}->{$parameter} = $value; } else { error("The Parameter '$parameter' in Module '$mod' is doesn't exist!"); } @@ -698,16 +738,16 @@ sub setUserSettings { # ------------------ sub allowCommand { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $modCfg = shift || return error('No modul defined!'); my $cmdName = shift || return error('No command name defined!'); my $user = shift || return error('No user defined!'); my $DontdumpViolation = shift || ''; if( - (exists $modCfg->{Level} and $user->{value} < $obj->getLevel($modCfg->{Level})) + (exists $modCfg->{Level} and $user->{value} < $self->getLevel($modCfg->{Level})) or - (exists $modCfg->{Commands}->{$cmdName}->{Level} and $user->{value} < $obj->getLevel($modCfg->{Commands}->{$cmdName}->{Level})) + (exists $modCfg->{Commands}->{$cmdName}->{Level} and $user->{value} < $self->getLevel($modCfg->{Commands}->{$cmdName}->{Level})) or ($user->{Deny} and exists $modCfg->{Commands}->{$cmdName}->{DenyClass} and $user->{Deny} =~ /$modCfg->{Commands}->{$cmdName}->{DenyClass}/) ) { @@ -728,7 +768,7 @@ sub allowCommand { # 'noperm' = Permission denied for the called User # 'noexists' = Command does not exist! # $error is the full Errortext to diaply im Userinterface. -# Usage: my ($cmdobj, $cmdname, $shorterr, $error) = $obj->checkCommand($console, $command); +# Usage: my ($cmdobj, $cmdname, $shorterr, $error) = $self->checkCommand($console, $command); # Test: sub t_checkCommand { my ($cmdobj, $cmdname, $shorterr, $error, $t) @@ -741,7 +781,7 @@ sub t_checkCommand { } # ------------------ sub checkCommand { - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); my $ucmd = shift || return error('No command defined!'); my $DontdumpViolation = shift || ''; @@ -751,12 +791,12 @@ sub checkCommand { my $shorterr = 0; my $cmdobj = 0; my $cmdname = 0; - my $cfg = main::getModule('CONFIG')->{config}; + my $cmdModule; my $ok = 0; # Checks the Commands Syntax (double shortcmds?) - $obj->checkCmdSyntax() - unless(defined $obj->{Check}); + $self->checkCmdSyntax() + unless(defined $self->{Check}); foreach my $modName (keys %{$mods}) { my $modCfg = $mods->{$modName}->{MOD}; @@ -765,16 +805,17 @@ sub checkCommand { $ok++; $cmdobj = $modCfg->{Commands}->{$cmdName}; $cmdname = $cmdName; + $cmdModule = $modCfg->{Name}; # Check on active Modul - if(exists $mods->{$modName}->{active} and $cfg->{$modCfg->{Name}}->{active} eq 'n') { + if(exists $mods->{$modName}->{active} and $console->{USER}->{config}->{$modCfg->{Name}}->{active} eq 'n') { $err = sprintf(gettext("Sorry, but the module %s is inactive! Enable it with %s:Preferences:active = y"), - $modCfg->{Name}, $modCfg->{Name}); + $cmdModule, $cmdModule); $shorterr = 'noactive'; } - if($obj->{active} eq 'y') { + if($self->{active} eq 'y') { # Check Userlevel and Permissions - unless($obj->allowCommand($modCfg, $cmdName, $console->{USER},$DontdumpViolation)) { + unless($self->allowCommand($modCfg, $cmdName, $console->{USER},$DontdumpViolation)) { $err = gettext('You are not authorized for this function!'); $shorterr = 'noperm'; } @@ -788,23 +829,23 @@ sub checkCommand { } if($shorterr) { - return (undef, 'nothing', $shorterr, $err) + return (undef, 'nothing', undef, $shorterr, $err) } else { - return ($cmdobj, $cmdname, undef, undef) + return ($cmdobj, $cmdname, $cmdModule, undef, undef) } } # ------------------ # Name: checkCmdSyntax # Descr: Check the Syntax of Commands and for double Names in different Modules -# Usage: my $ok = $obj->checkCmdSyntax(tlist); +# Usage: my $ok = $self->checkCmdSyntax(tlist); # Test: sub t_checkCmdSyntax { return $_[0]->checkCmdSyntax('tlist'); } # ------------------ sub checkCmdSyntax { - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $mods = main::getModules(); my $shorts = {}; @@ -820,34 +861,34 @@ sub checkCmdSyntax { } } } - $obj->{Check} = 1; + $self->{Check} = 1; 1; } # ------------------ # Name: getLevel # Descr: Translate the Levelname to an numeric level -# Usage: my $score = $obj->getLevel(levelname); +# Usage: my $score = $self->getLevel(levelname); # Test: sub t_getLevel { return $_[0]->getLevel('user') == 5; } # ------------------ sub getLevel { - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $name = shift || return; # Level Table - $obj->{LEV} = { + $self->{LEV} = { admin => 10, user => 5, guest => 1, - } unless(exists $obj->{LEV}); + } unless(exists $self->{LEV}); - if($obj->{LEV}->{$name}) { - return $obj->{LEV}->{$name}; + if($self->{LEV}->{$name}) { + return $self->{LEV}->{$name}; } else { - return error("This Levelname '$name' does not exist"); + return error("Name of level '$name' does not exist!"); } } @@ -855,7 +896,7 @@ sub getLevel { # ------------------ sub _insert { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $data = shift || return; if(ref $data eq 'HASH') { @@ -894,10 +935,10 @@ sub _insert { join(', ', @$kenn), ); } - my $sth = $obj->{dbh}->prepare( $sql ); + my $sth = $self->{dbh}->prepare( $sql ); $sth->execute( @$vals ); } else { - my $sth = $obj->{dbh}->prepare('REPLACE INTO USER VALUES (?,?,?,?)'); + my $sth = $self->{dbh}->prepare('REPLACE INTO USER VALUES (?,?,?,?)'); $sth->execute( @$data ); } } @@ -905,14 +946,14 @@ sub _insert { # ------------------ # Name: userTmp # Descr: Return a temp directory only for logged user and delete this by exit xxv. -# Usage: my $tmpdir = $obj->userTmp([username]); +# Usage: my $tmpdir = $self->userTmp([username]); # ------------------ sub userTmp { - my $obj = shift || return error('No object defined!'); - my $user = ($obj->{active} eq 'y' ? ( shift || ($obj->{USER}->{Name}?$obj->{USER}->{Name}:"nobody") ) : "nobody" ); + my $self = shift || return error('No object defined!'); + my $user = shift || return error('No username defined!'); # /var/cache/xxv/temp/xpix/$PID - my $dir = sprintf('%s/%s/%d', $obj->{tempimages} , $user, $$); + my $dir = sprintf('%s/%s/%d', $self->{tempimages} , $user, $$); unless(-d $dir) { mkpath($dir) or error "Couldn't mkpath $dir : $!"; diff --git a/lib/XXV/MODULES/VTX.pm b/lib/XXV/MODULES/VTX.pm index 18deaa6..67a5c85 100644 --- a/lib/XXV/MODULES/VTX.pm +++ b/lib/XXV/MODULES/VTX.pm @@ -109,6 +109,7 @@ sub new { sub findfirst { my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $basedir = $self->{dir}; unless($basedir and -d $basedir) { @@ -141,6 +142,7 @@ sub findfirst { sub channel { my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $channel = shift; my $basedir = $self->{dir}; @@ -152,7 +154,7 @@ sub channel { } unless($channel) { - return $self->findfirst ($console); + return $self->findfirst ($console, $config); } my $mod = main::getModule ('CHANNELS'); @@ -252,8 +254,9 @@ sub channel { sub page { my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $page = shift || ""; - my $channel = $self->{CHANNEL} || return $self->findfirst ($console); + my $channel = $self->{CHANNEL} || return $self->findfirst ($console, $config); my $basedir = $self->{dir} || return error('No base directory defined!'); my $chandir = $self->{CHANNELDIR} || return error('No channel defined!'); my $cache = $self->{cache} || 'packed'; @@ -1371,7 +1374,7 @@ sub HighLight { my $ub = "</font>"; foreach my $line (split('\n',$result)) { - $line =~ s/$search/$ua$search$ub/g; + $line =~ s/$search/$ua$1$ub/ig; $lines .= $line; } return $lines; @@ -1382,6 +1385,7 @@ sub HighLight { sub search { my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $search = shift; my $channel = $self->{CHANNEL}; @@ -1447,6 +1451,7 @@ sub image { # ------------------ my $obj = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $data = shift; return $console->err(gettext("Sorry, get image is'nt supported")) diff --git a/lib/XXV/MODULES/XMLTV.pm b/lib/XXV/MODULES/XMLTV.pm index b53d31a..aa6bf35 100644 --- a/lib/XXV/MODULES/XMLTV.pm +++ b/lib/XXV/MODULES/XMLTV.pm @@ -16,7 +16,7 @@ sub module { Prereq => { 'Template' => 'Front-end module to the Template Toolkit ', 'Date::Manip' => 'date manipulation routines', - 'Time::Local' => 'efficiently compute time from local and GMT time ', + 'Time::Local' => 'efficiently compute time from local and GMT time', 'XML::Simple' => 'Easy API to maintain XML (esp config files)' }, Description => gettext('This module import epg data from xmltv sources.'), @@ -180,7 +180,7 @@ sub _init { return 0 if($self->{active} ne 'y'); lg 'Start callback to import xmltv epg data!'; - $self->_XMLTV($console,$waiter); + $self->_XMLTV($console,undef,$waiter); } ); return 1; @@ -194,6 +194,7 @@ sub manual { # ------------------ my $self = shift || return error('No object defined!'); my $console = shift; + my $config = shift; my $id = shift; my $waiter; @@ -201,7 +202,7 @@ sub manual { $waiter = $console->wait(gettext("Import epg data from xmltv sources ..."),0,1000,'no'); } - my ($msg, $error) = $self->_XMLTV($console,$waiter,$id); + my ($msg, $error) = $self->_XMLTV($console,$config,$waiter,$id,'force'); $waiter->end() if(ref $waiter); $console->start() if(ref $waiter); @@ -220,12 +221,15 @@ sub _XMLTV { # ------------------ my $self = shift || return error('No object defined!'); my $console = shift; + my $config = shift; my $waiter = shift; my $id = shift; + my $force = shift; - my $sth = $self->{dbh}->prepare(q| + my $sql = qq| select x.id, + x.vid, x.active, x.xmltvname, x.channel, @@ -234,12 +238,18 @@ sub _XMLTV { x.source, UNIX_TIMESTAMP(x.updated) as updated, c.Name - from XMLTV as x, CHANNELS as c + from XMLTV as x, CHANNELS as c, RECORDER as r where - active != 'n' - AND x.channel = c.Id - |); - if(!$sth->execute()) { + x.active != 'n' + and x.channel = c.Id + and x.vid = r.id + and r.active != 'n' + |; + $sql .= qq| and x.id = ?| if($id); + $sql .= qq| ORDER BY x.vid|; + + my $sth = $self->{dbh}->prepare($sql); + unless($id ? $sth->execute($id) : $sth->execute()) { error sprintf("Couldn't execute query: %s.",$sth->errstr); return (undef, undef) } @@ -247,12 +257,13 @@ sub _XMLTV { return (undef, undef) unless($rules); # Adjust waiter max value now. - $waiter->max(scalar keys %$rules) + $waiter->max((scalar keys %$rules)+1) if(ref $console && ref $waiter); my $now = time(); my $l = 0; - my $output; + my $output = ""; + my $vid; foreach my $id (sort keys %$rules) { my $rule = $rules->{$id}; @@ -260,12 +271,14 @@ sub _XMLTV { $waiter->next(++$l, undef, sprintf(gettext("Import epg data for channel '%s'"), $rule->{Name})) if(ref $waiter); - if($rule->{updateinterval} eq 'd' && ($rule->{updated} + 86400) > $now ) { - lg sprintf("Skip import xml data by update interval : %s (%s) id %d",$rule->{Name},$rule->{channel},$rule->{id}); - next; - } elsif($rule->{updateinterval} eq 'w' && ($rule->{updated} + (86400 * 7)) > $now ) { - lg sprintf("Skip import xml data by update interval : %s (%s) id %d",$rule->{Name},$rule->{channel},$rule->{id}); - next; + unless($force && $id) { + if($rule->{updateinterval} eq 'd' && ($rule->{updated} + 86400) > $now ) { + lg sprintf("Skip import xml data by update interval : %s (%s) id %d",$rule->{Name},$rule->{channel},$rule->{id}); + next; + } elsif($rule->{updateinterval} eq 'w' && ($rule->{updated} + (86400 * 7)) > $now ) { + lg sprintf("Skip import xml data by update interval : %s (%s) id %d",$rule->{Name},$rule->{channel},$rule->{id}); + next; + } } my $file = sprintf("%s/%s",$self->{paths}->{XMLTV},$rule->{source}); @@ -285,19 +298,28 @@ sub _XMLTV { error sprintf("Can't process xml data at %s (%s) id %d",$rule->{Name},$rule->{channel},$rule->{id}); } } + if($vid && $vid != $rule->{vid}) { + $self->{svdrp}->queue_add("PUTE\n" . $output . ".\n",$rule->{vid}); + $output = ""; + } + $vid = $rule->{vid}; } - if($output and length $output) { + if($vid && $output && length $output) { + $self->{svdrp}->queue_add("PUTE\n" . $output . ".\n",$vid); + } + if($self->{svdrp}->queue_count()) { $waiter->next(undef,undef,gettext('Transmit data.')) if(ref $waiter); - my ($erg,$error) = $self->{svdrp}->command(sprintf("PUTE\n%s\n.\n",$output)); + + my ($erg,$error) = $self->{svdrp}->queue_flush(); unless($error) { debug 'Data import complete'; return ($erg, undef); } else { error sprintf('Data does\'nt imported : %s',$error); - return (undef, $erg); + return (undef, $error); } } else { error sprintf('None data exits to import'); @@ -346,7 +368,7 @@ sub _ProcessXML { # Create output - my $epgdata = ''; + my $epgdata; # Find XML events @@ -364,7 +386,7 @@ sub _ProcessXML { # 'channel' => 'abc', # 'start' => '20080317160000 +0100' # }, - next if($xmltvname and $xml->{channel} ne $xmltvname); + next if($xmltvname && $xml->{channel} ne $xmltvname); my $vdrst = &xmltime2vdr($xml->{start}, $adjust); my $vdret = &xmltime2vdr($xml->{stop}, $adjust); @@ -377,10 +399,8 @@ sub _ProcessXML { $vdrdesc =~ s/\r\n/\|/g; # pipe used from vdr as linebreak $vdrdesc =~ s/\n/\|/g; # pipe used from vdr as linebreak - if($self->{charset} ne 'UTF-8') { - $vdrtitle = encode($self->{charset},$vdrtitle); - $vdrdesc = encode($self->{charset},$vdrdesc); - } + $vdrtitle = encode($self->{charset},$vdrtitle); + $vdrdesc = encode($self->{charset},$vdrdesc); # Send VDR Event $epgdata .= "E $vdrid $vdrst $vdrdur 0\n"; @@ -390,9 +410,11 @@ sub _ProcessXML { } - return unless($epgdata and length $epgdata); + return unless($epgdata && length $epgdata); - return "C $cid $channel_name\n".$epgdata . "c\n"; + return "C $cid $channel_name\n" + . $epgdata + . "c\n"; } # ------------------ @@ -447,10 +469,11 @@ sub _parse_template { sub create { my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $id = shift || 0; my $data = shift || 0; - $self->edit($console, $id, $data); + $self->edit($console, $config, $id, $data); } # ------------------ @@ -461,13 +484,14 @@ sub create { sub edit { my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $id = shift || 0; my $data = shift || 0; my $modC = main::getModule('CHANNELS'); my $rule; - if($id and not ref $data) { + if($id && not ref $data) { my $sth = $self->{dbh}->prepare("select * from XMLTV where id = ?"); $sth->execute($id) or return $console->err(sprintf(gettext("Rule to import epg data from xmltv sources with ID '%s' does not exist in the database!"),$id)); @@ -476,6 +500,7 @@ sub edit { } elsif (ref $data eq 'HASH') { $rule = $data; } + my $vlist = $self->{svdrp}->enum_hosts(); my $con = $console->typ eq "CONSOLE"; my $questions = [ @@ -500,26 +525,27 @@ sub edit { def => $rule->{xmltvname} || '', typ => 'string' }, + 'vid' => { + typ => scalar @$vlist > 1 ? 'list' : 'hidden', + def => $rule->{vid} || $self->{svdrp}->primary_hosts(), + choices => $vlist, + msg => gettext('Which video disk recorder should record'), + }, 'channel' => { typ => 'list', def => $con ? $modC->ChannelToPos($rule->{channel}) : $rule->{channel}, - choices => $con ? $modC->ChannelArray('Name') : $modC->ChannelWithGroup('Name,Id'), + choices => $con ? $modC->ChannelArray('name') : $modC->ChannelWithGroup('c.name,c.id'), msg => gettext('Assign data to channel?'), req => gettext("This is required!"), check => sub{ - my $value = shift || return; - - if(my $name = $modC->ChannelToName($value)) { - $data->{channel} = $value; - return $value; - } elsif(my $ch = $modC->PosToChannel($value) || $modC->NameToChannel($value) ) { - $data->{channel} = $value; - return $ch; - } elsif( ! $modC->NameToChannel($value)) { - return undef, sprintf(gettext("This channel '%s' does not exist!"),$value); - } else { - return undef, gettext("This is required!"); - } + my $value = shift; + return undef, gettext("This is required!") + unless($value); + + my $ch = $modC->ToCID($value,$data->{vid}); + return undef, sprintf(gettext("Channel '%s' does not exist on video disk recorder %s!"),$value, $self->{svdrp}->hostname($data->{vid})) + unless($ch); + return $ch; }, }, 'template' => { @@ -556,11 +582,11 @@ sub edit { $console->message(gettext('Rule to import epg data from xmltv sources saved!')); debug sprintf('%s rule to import epg data from xmltv sources is saved%s', - ($id ? 'New' : 'Changed'), + ($id ? 'Changed' : 'New'), ( $console->{USER} && $console->{USER}->{Name} ? sprintf(' from user: %s', $console->{USER}->{Name}) : "" ) ); - my ($msg, $error) = $self->_XMLTV($console,undef,$data->{id}); + my ($msg, $error) = $self->_XMLTV($console,$config,undef,$data->{id}); if($error) { $console->err($error); } elsif($msg) { @@ -628,6 +654,7 @@ sub _updateTime { sub remove { my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my $id = shift || return $console->err(gettext("Missing ID to select rules for deletion! Please use xmltvremove 'id'")); my @rules = reverse sort{ $a <=> $b } split(/[^0-9]/, $id); @@ -657,6 +684,7 @@ sub remove { sub list { my $self = shift || return error('No object defined!'); my $console = shift || return error('No console defined!'); + my $config = shift || return error('No config defined!'); my %f = ( 'id' => gettext('Service'), @@ -665,23 +693,27 @@ sub list { 'template' => gettext('Parse data as template'), 'interval' => gettext('Interval to parse data'), 'source' => gettext('source to import'), + 'host' => gettext('Video disk recorder') ); my $sql = qq| select - id as \'$f{'id'}\', - active as \'$f{'active'}\', + x.id as \'$f{'id'}\', + IF(x.active!='n' and r.active!='n','y','n') as \'$f{'active'}\', (SELECT Name FROM CHANNELS as c WHERE x.channel = c.Id LIMIT 1) as \'$f{'channel'}\', - template as \'$f{'template'}\', - updateinterval as \'$f{'interval'}\', - source as \'$f{'source'}\' + x.template as \'$f{'template'}\', + x.updateinterval as \'$f{'interval'}\', + x.source as \'$f{'source'}\', + r.host as \'$f{'host'}\' from - XMLTV as x + XMLTV as x, RECORDER as r + where + x.vid = r.id order by - id + x.id |; my $sth = $self->{dbh}->prepare($sql); @@ -708,8 +740,10 @@ sub list { } @$erg; unshift(@$erg, $fields); - - $console->table($erg); + my $hostlist = $self->{svdrp}->list_hosts(); + $console->table($erg, { + recorder => scalar @$hostlist, + }); } # ------------------ diff --git a/lib/XXV/OUTPUT/Console.pm b/lib/XXV/OUTPUT/Console.pm index 9bed898..3f83797 100644 --- a/lib/XXV/OUTPUT/Console.pm +++ b/lib/XXV/OUTPUT/Console.pm @@ -641,7 +641,7 @@ sub pod { my $podfile = sprintf('%s/%s.pod', $obj->{paths}->{PODPATH}, $modname); return $obj->err(sprintf(gettext('Module %s not found!'), $modname)) unless(-r $podfile); - my $tmpdir = main::getModule('USER')->userTmp; + my $tmpdir = main::getModule('USER')->userTmp($obj->{USER}->{Name}); my $outfile = sprintf('%s/%s_%d.pod', $tmpdir, $modname, time); my $parser = Pod::Text->new (sentence => 0, width => 78); @@ -678,7 +678,7 @@ sub txtfile { return $obj->err(sprintf(gettext("Could not open file '%s'! : %s"), $filename, $e)); } } - $txtfile = main::getModule('HTTPD')->unzip($gzfile); + $txtfile = main::getModule('HTTPD')->unzip($obj,$gzfile); } } my $txt = load_file($txtfile); diff --git a/lib/XXV/OUTPUT/Html.pm b/lib/XXV/OUTPUT/Html.pm index ae93f51..95b1906 100644 --- a/lib/XXV/OUTPUT/Html.pm +++ b/lib/XXV/OUTPUT/Html.pm @@ -87,8 +87,7 @@ sub new { $self->{htmdir} = $attr{'-htmdir'} || return error('No htmdir given!'); - $self->{htmdef} = $attr{'-htmdef'} - || return error('No htmdef given!'); + $self->{htmdef} = sprintf('%s/default', $self->{htmdir}); $self->{cgi} = $attr{'-cgi'} || return error('No cgi given!'); @@ -99,9 +98,6 @@ sub new { $self->{browser} = $attr{'-browser'} || return error('No browser given!'); - $self->{start} = $attr{'-start'} - || return error('No start page given!'); - $self->{debug} = $attr{'-debug'} || 0; @@ -141,10 +137,12 @@ sub parseTemplate { sub index { # ------------------ my $self = shift || return error('No object defined!'); + my $start = shift || return error('No start page defined!'); + $self->{nopack} = 1; $self->{call} = 'index'; my $params = {}; - $params->{start} = $self->{start}; + $params->{start} = $start; $self->out( $self->parseTemplateFile("index", {}, $params, $self->{call})); } @@ -167,7 +165,7 @@ sub parseTemplateFile { $self->{tt} = Template->new( START_TAG => '\<\?\%', # Tagstyle END_TAG => '\%\?\>', # Tagstyle - INCLUDE_PATH => [$self->{htmdir},$self->{htmdef}] , # or list ref + INCLUDE_PATH => [$self->{Skin},$self->{htmdef}] , # or list ref INTERPOLATE => 1, # expand "$var" in plain text PRE_CHOMP => 1, # cleanup whitespace EVAL_PERL => 1, # evaluate Perl code blocks @@ -183,9 +181,7 @@ sub parseTemplateFile { # StandardTemplate: ./htmlRoot/widgets/menu.tmpl my $widget_first = sprintf('%s.tmpl', $call); my $widget_second = sprintf('widgets/%s.tmpl', $name); - my $widget = (-e sprintf('%s/%s', $self->{htmdir}, $widget_first) ? $widget_first : $widget_second); - - my $user = ($u->{active} eq 'y' && $self->{USER}->{Name} ? $self->{USER}->{Name} : "nobody" ); + my $widget = (-e sprintf('%s/%s', $self->{Skin}, $widget_first) ? $widget_first : $widget_second); my $output; my $vars = { cgi => $self->{cgi}, @@ -197,7 +193,7 @@ sub parseTemplateFile { pid => $$, debug => 0, # Avoid losing encoding like utf8 verbose => $self->{debug}, - user => $user, + user => $self->{USER}->{Name}, charset => $self->{charset}, # query the current locale locale => main::getGeneralConfig->{Language}, @@ -289,7 +285,7 @@ sub parseTemplateFile { my $filename = shift || return error('No filename defined!'); my $data = shift || return error('No data defined!'); - my $dir = $u->userTmp; + my $dir = $u->userTmp($self->{USER}->{Name}); # absolut Path to file my $file = sprintf('%s/%s', $dir, $filename); @@ -491,7 +487,7 @@ sub status404 { my $file = shift || return error('No file defined!'); my $why = shift || ""; - $file =~ s/$self->{htmdir}\///g; # Don't post html root, avoid spy out + $file =~ s/$self->{Skin}\///g; # Don't post html root, avoid spy out $self->statusmsg(404,sprintf(gettext("Couldn't open file '%s' : %s!"),$file,$why), gettext("Not found")); @@ -939,7 +935,7 @@ sub pod { unless(-r $podfile); my $u = main::getModule('USER'); - my $tmpdir = $u->userTmp; + my $tmpdir = $u->userTmp($self->{USER}->{Name}); my $outfile = sprintf('%s/%s_%d.pod', $tmpdir, $modname, time); pod2html( @@ -980,7 +976,7 @@ sub txtfile { return $self->err(sprintf(gettext("Could not open file '%s'! : %s"), $filename, $e)); } } - $txtfile = main::getModule('HTTPD')->unzip($gzfile); + $txtfile = main::getModule('HTTPD')->unzip($self,$gzfile); } } @@ -992,7 +988,7 @@ sub txtfile { } my $u = main::getModule('USER'); - my $htmlfile = sprintf('%s/temp_txt.html', $u->userTmp); + my $htmlfile = sprintf('%s/temp_txt.html', $u->userTmp($self->{USER}->{Name})); # create TextToHTML object unless(exists $self->{txt2html}) { @@ -1030,6 +1026,17 @@ sub setCall { } # ------------------ +sub setSkin { +# ------------------ + my $self = shift || return error('No object defined!'); + my $name = shift || return error ('No skin defined!'); + + $self->{Skin} = sprintf('%s/%s', $self->{htmdir}, $name); + return $self->{Skin}; +} + + +# ------------------ sub browser { # ------------------ my $self = shift || return error('No object defined!'); diff --git a/lib/XXV/OUTPUT/NEWS/JABBER.pm b/lib/XXV/OUTPUT/NEWS/JABBER.pm index 273775a..440e5d5 100644 --- a/lib/XXV/OUTPUT/NEWS/JABBER.pm +++ b/lib/XXV/OUTPUT/NEWS/JABBER.pm @@ -128,7 +128,8 @@ Then you must receive a message in your running jabber client. return $value unless(ref $value eq 'ARRAY'); - # If no password given the take the old password as default + # If no password given the + # take the old password as default if($value->[0] and $value->[0] ne $value->[1]) { return undef, gettext("The fields with the 1st and the 2nd password must match!"); } else { diff --git a/lib/XXV/OUTPUT/Wml.pm b/lib/XXV/OUTPUT/Wml.pm index 196cee9..d2852d4 100644 --- a/lib/XXV/OUTPUT/Wml.pm +++ b/lib/XXV/OUTPUT/Wml.pm @@ -127,7 +127,6 @@ sub parseTemplate { my $widget_first = sprintf('%s.tmpl', (exists $self->{call}) ? $self->{call} : 'nothing'); my $widget_second = sprintf('widgets/%s.tmpl', $name); my $widget = (-e sprintf('%s/%s', $self->{wmldir}, $widget_first) ? $widget_first : $widget_second); - my $user = ($u->{active} eq 'y' && $self->{USER}->{Name} ? $self->{USER}->{Name} : "nobody" ); my $output; my $vars = { cgi => $self->{cgi}, @@ -138,7 +137,7 @@ sub parseTemplate { param => $params, pid => $$, debug => 1, - user => $user, + user => $self->{USER}->{Name}, charset => $self->{charset}, allow => sub{ my($cmdobj, $cmdname, $se, $err) = $u->checkCommand($self, $_[0],"1"); @@ -160,7 +159,7 @@ sub parseTemplate { my $filename = shift || return error('No Filename to write'); my $data = shift || return error('Nothing data to write'); - my $dir = $u->userTmp; + my $dir = $u->userTmp($self->{USER}->{Name}); # absolut Path to file my $file = sprintf('%s/%s', $dir, $filename); @@ -375,7 +374,7 @@ sub pod { $modname = ucfirst($modname) if($modname eq 'GENERAL'); my $podfile = sprintf('%s/%s.pod', $self->{paths}->{PODPATH}, $modname); - my $tmpdir = main::getModule('USER')->userTmp; + my $tmpdir = main::getModule('USER')->userTmp($self->{USER}->{Name}); my $outfile = sprintf('%s/%s_%d.pod', $tmpdir, $modname, time); pod2html( diff --git a/locale/de.po b/locale/de.po index d0b6e0a..b384609 100644 --- a/locale/de.po +++ b/locale/de.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: XXV 1.3\n" "POT-Creation-Date: 2005-01-12 18:55\n" -"PO-Revision-Date: 2008-11-09 13:33+0100\n" +"PO-Revision-Date: 2008-11-24 13:11+0100\n" "Last-Translator: Andreas Brachold <anbr at users.berlios.de>\n" "Language-Team: LANGUAGE <LL@li.org>\n" "MIME-Version: 1.0\n" @@ -19,57 +19,57 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" #-------------------- -#: ../bin/xxvd:484 +#: ../bin/xxvd:485 msgid "Documentation has been generated in '%s'." msgstr "Dokumentation wurde in '%s' generiert" #-------------------- -#: ../bin/xxvd:661 +#: ../bin/xxvd:663 msgid "This is the main program xxvd." msgstr "Das ist das Hauptprogramm xxvd." #-------------------- -#: ../bin/xxvd:668 +#: ../bin/xxvd:670 msgid "Interface language" msgstr "Sprache der Oberfläche" #-------------------- -#: ../bin/xxvd:671 +#: ../bin/xxvd:673 msgid "English" msgstr "Englisch" #-------------------- -#: ../bin/xxvd:672 +#: ../bin/xxvd:674 msgid "German" msgstr "Deutsch" #-------------------- -#: ../bin/xxvd:677 +#: ../bin/xxvd:679 msgid "Data source for the connection to the database" msgstr "Name der Datenquelle für die Verbindung zur Datenbank" #-------------------- -#: ../bin/xxvd:680 ../bin/xxvd:686 ../bin/xxvd:692 ../lib/XXV/MODULES/AUTOTIMER.pm:30 ../lib/XXV/MODULES/AUTOTIMER.pm:686 ../lib/XXV/MODULES/CHANNELS.pm:1100 ../lib/XXV/MODULES/CHANNELS.pm:1126 ../lib/XXV/MODULES/CHANNELS.pm:1139 ../lib/XXV/MODULES/CHANNELS.pm:1178 ../lib/XXV/MODULES/CHANNELS.pm:1204 ../lib/XXV/MODULES/CHANNELS.pm:28 ../lib/XXV/MODULES/CHRONICLE.pm:27 ../lib/XXV/MODULES/EPG.pm:33 ../lib/XXV/MODULES/EPG.pm:39 ../lib/XXV/MODULES/EPG.pm:45 ../lib/XXV/MODULES/EVENTS.pm:33 ../lib/XXV/MODULES/GRAB.pm:29 ../lib/XXV/MODULES/GRAB.pm:43 ../lib/XXV/MODULES/HTTPD.pm:62 ../lib/XXV/MODULES/HTTPD.pm:68 ../lib/XXV/MODULES/HTTPD.pm:74 ../lib/XXV/MODULES/HTTPD.pm:80 ../lib/XXV/MODULES/HTTPD.pm:86 ../lib/XXV/MODULES/HTTPD.pm:93 ../lib/XXV/MODULES/INTERFACE.pm:32 ../lib/XXV/MODULES/INTERFACE.pm:38 ../lib/XXV/MODULES/INTERFACE.pm:44 ../lib/XXV/MODULES/KEYWORDS.pm:28 ../lib/XXV/MODULES/LOGREAD.pm:31 ../lib/XXV/MODULES/LOGREAD.pm:37 ../lib/XXV/MODULES/LOGREAD.pm:43 ../lib/XXV/MODULES/LOGREAD.pm:49 ../lib/XXV/MODULES/MEDIALIB.pm:32 ../lib/XXV/MODULES/MEDIALIB.pm:38 ../lib/XXV/MODULES/MEDIALIB.pm:44 ../lib/XXV/MODULES/MEDIALIB.pm:50 ../lib/XXV/MODULES/MEDIALIB.pm:56 ../lib/XXV/MODULES/MOVETIMER.pm:26 ../lib/XXV/MODULES/MOVETIMER.pm:414 ../lib/XXV/MODULES/MOVETIMER.pm:417 ../lib/XXV/MODULES/MOVETIMER.pm:437 ../lib/XXV/MODULES/MOVETIMER.pm:440 ../lib/XXV/MODULES/MUSIC.pm:39 ../lib/XXV/MODULES/MUSIC.pm:45 ../lib/XXV/MODULES/MUSIC.pm:51 ../lib/XXV/MODULES/MUSIC.pm:57 ../lib/XXV/MODULES/MUSIC.pm:68 ../lib/XXV/MODULES/MUSIC.pm:74 ../lib/XXV/MODULES/RECORDS.pm:103 ../lib/XXV/MODULES/RECORDS.pm:2070 ../lib/XXV/MODULES/RECORDS.pm:2084 ../lib/XXV/MODULES/RECORDS.pm:2098 ../lib/XXV/MODULES/RECORDS.pm:2652 ../lib/XXV/MODULES/RECORDS.pm:2664 ../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:29 ../lib/XXV/MODULES/REPORT.pm:35 ../lib/XXV/MODULES/ROBOT.pm:28 ../lib/XXV/MODULES/SHARE.pm:64 ../lib/XXV/MODULES/SHARE.pm:81 ../lib/XXV/MODULES/SHARE.pm:87 ../lib/XXV/MODULES/STATUS.pm:31 ../lib/XXV/MODULES/STATUS.pm:37 ../lib/XXV/MODULES/STATUS.pm:42 ../lib/XXV/MODULES/STATUS.pm:48 ../lib/XXV/MODULES/STREAM.pm:108 ../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:88 ../lib/XXV/MODULES/STREAM.pm:94 ../lib/XXV/MODULES/SVDRP.pm:215 ../lib/XXV/MODULES/SVDRP.pm:221 ../lib/XXV/MODULES/SVDRP.pm:29 ../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:583 ../lib/XXV/MODULES/TIMERS.pm:596 ../lib/XXV/MODULES/TIMERS.pm:599 ../lib/XXV/MODULES/TIMERS.pm:624 ../lib/XXV/MODULES/USER.pm:272 ../lib/XXV/MODULES/USER.pm:363 ../lib/XXV/MODULES/USER.pm:369 ../lib/XXV/MODULES/USER.pm:394 ../lib/XXV/MODULES/USER.pm:67 ../lib/XXV/MODULES/VTX.pm:33 ../lib/XXV/MODULES/VTX.pm:39 ../lib/XXV/MODULES/WAPD.pm:42 ../lib/XXV/MODULES/WAPD.pm:48 ../lib/XXV/MODULES/WAPD.pm:54 ../lib/XXV/MODULES/WAPD.pm:60 ../lib/XXV/MODULES/WAPD.pm:66 ../lib/XXV/MODULES/WAPD.pm:73 ../lib/XXV/MODULES/XMLTV.pm:32 ../lib/XXV/MODULES/XMLTV.pm:495 ../lib/XXV/MODULES/XMLTV.pm:508 ../lib/XXV/MODULES/XMLTV.pm:521 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:113 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:119 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:125 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:69 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:95 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:102 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:33 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:59 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:77 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:91 ../lib/XXV/OUTPUT/NEWS/RSS.pm:33 ../lib/XXV/OUTPUT/NEWS/RSS.pm:59 ../lib/XXV/OUTPUT/NEWS/VDR.pm:30 ../lib/XXV/OUTPUT/NEWS/VDR.pm:56 +#: ../bin/xxvd:682 ../bin/xxvd:688 ../bin/xxvd:694 ../lib/XXV/MODULES/AUTOTIMER.pm:30 ../lib/XXV/MODULES/AUTOTIMER.pm:682 ../lib/XXV/MODULES/CHANNELS.pm:1103 ../lib/XXV/MODULES/CHANNELS.pm:1129 ../lib/XXV/MODULES/CHANNELS.pm:1142 ../lib/XXV/MODULES/CHANNELS.pm:1181 ../lib/XXV/MODULES/CHANNELS.pm:1207 ../lib/XXV/MODULES/CHANNELS.pm:28 ../lib/XXV/MODULES/CHRONICLE.pm:27 ../lib/XXV/MODULES/EPG.pm:34 ../lib/XXV/MODULES/EPG.pm:40 ../lib/XXV/MODULES/EPG.pm:47 ../lib/XXV/MODULES/EVENTS.pm:33 ../lib/XXV/MODULES/GRAB.pm:30 ../lib/XXV/MODULES/GRAB.pm:44 ../lib/XXV/MODULES/HTTPD.pm:62 ../lib/XXV/MODULES/HTTPD.pm:68 ../lib/XXV/MODULES/HTTPD.pm:74 ../lib/XXV/MODULES/HTTPD.pm:80 ../lib/XXV/MODULES/HTTPD.pm:86 ../lib/XXV/MODULES/HTTPD.pm:94 ../lib/XXV/MODULES/INTERFACE.pm:32 ../lib/XXV/MODULES/INTERFACE.pm:38 ../lib/XXV/MODULES/INTERFACE.pm:44 ../lib/XXV/MODULES/KEYWORDS.pm:28 ../lib/XXV/MODULES/LOGREAD.pm:31 ../lib/XXV/MODULES/LOGREAD.pm:37 ../lib/XXV/MODULES/LOGREAD.pm:43 ../lib/XXV/MODULES/LOGREAD.pm:49 ../lib/XXV/MODULES/MEDIALIB.pm:32 ../lib/XXV/MODULES/MEDIALIB.pm:38 ../lib/XXV/MODULES/MEDIALIB.pm:44 ../lib/XXV/MODULES/MOVETIMER.pm:26 ../lib/XXV/MODULES/MOVETIMER.pm:417 ../lib/XXV/MODULES/MOVETIMER.pm:420 ../lib/XXV/MODULES/MOVETIMER.pm:440 ../lib/XXV/MODULES/MOVETIMER.pm:443 ../lib/XXV/MODULES/MUSIC.pm:39 ../lib/XXV/MODULES/MUSIC.pm:45 ../lib/XXV/MODULES/MUSIC.pm:51 ../lib/XXV/MODULES/MUSIC.pm:57 ../lib/XXV/MODULES/MUSIC.pm:68 ../lib/XXV/MODULES/MUSIC.pm:74 ../lib/XXV/MODULES/RECORDS.pm:103 ../lib/XXV/MODULES/RECORDS.pm:2084 ../lib/XXV/MODULES/RECORDS.pm:2098 ../lib/XXV/MODULES/RECORDS.pm:2112 ../lib/XXV/MODULES/RECORDS.pm:2668 ../lib/XXV/MODULES/RECORDS.pm:2680 ../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:41 ../lib/XXV/MODULES/REPORT.pm:29 ../lib/XXV/MODULES/REPORT.pm:35 ../lib/XXV/MODULES/ROBOT.pm:29 ../lib/XXV/MODULES/SHARE.pm:64 ../lib/XXV/MODULES/SHARE.pm:81 ../lib/XXV/MODULES/SHARE.pm:87 ../lib/XXV/MODULES/STATUS.pm:31 ../lib/XXV/MODULES/STATUS.pm:37 ../lib/XXV/MODULES/STATUS.pm:42 ../lib/XXV/MODULES/STREAM.pm:108 ../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:88 ../lib/XXV/MODULES/STREAM.pm:94 ../lib/XXV/MODULES/SVDRP.pm:218 ../lib/XXV/MODULES/SVDRP.pm:224 ../lib/XXV/MODULES/SVDRP.pm:30 ../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:628 ../lib/XXV/MODULES/TIMERS.pm:641 ../lib/XXV/MODULES/TIMERS.pm:644 ../lib/XXV/MODULES/TIMERS.pm:669 ../lib/XXV/MODULES/USER.pm:283 ../lib/XXV/MODULES/USER.pm:428 ../lib/XXV/MODULES/USER.pm:434 ../lib/XXV/MODULES/USER.pm:459 ../lib/XXV/MODULES/USER.pm:68 ../lib/XXV/MODULES/VTX.pm:33 ../lib/XXV/MODULES/VTX.pm:39 ../lib/XXV/MODULES/WAPD.pm:42 ../lib/XXV/MODULES/WAPD.pm:48 ../lib/XXV/MODULES/WAPD.pm:54 ../lib/XXV/MODULES/WAPD.pm:60 ../lib/XXV/MODULES/WAPD.pm:66 ../lib/XXV/MODULES/WAPD.pm:73 ../lib/XXV/MODULES/XMLTV.pm:32 ../lib/XXV/MODULES/XMLTV.pm:520 ../lib/XXV/MODULES/XMLTV.pm:539 ../lib/XXV/MODULES/XMLTV.pm:542 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:113 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:119 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:125 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:69 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:95 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:102 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:33 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:59 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:77 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:91 ../lib/XXV/OUTPUT/NEWS/RSS.pm:33 ../lib/XXV/OUTPUT/NEWS/RSS.pm:59 ../lib/XXV/OUTPUT/NEWS/VDR.pm:30 ../lib/XXV/OUTPUT/NEWS/VDR.pm:56 msgid "This is required!" msgstr "Das ist erforderlich!" #-------------------- -#: ../bin/xxvd:683 ../bin/xxvd:689 +#: ../bin/xxvd:685 ../bin/xxvd:691 msgid "Password for database access" msgstr "Passwort für Datenbankzugriff" #-------------------- -#: ../bin/xxvd:697 ../lib/XXV/MODULES/USER.pm:280 ../lib/XXV/MODULES/USER.pm:377 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:133 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:120 +#: ../bin/xxvd:699 ../lib/XXV/MODULES/USER.pm:291 ../lib/XXV/MODULES/USER.pm:442 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:133 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:120 msgid "The fields with the 1st and the 2nd password must match!" msgstr "Das Feld mit 1. und 2. Passwort muß gleich sein, um es zu bestätigen!" #-------------------- -#: ../bin/xxvd:706 +#: ../bin/xxvd:708 msgid "Generate the documentation into the doc directory." msgstr "Generiere die Dokumentation ins doc Verzeichnis." #-------------------- -#: ../bin/xxvd:712 +#: ../bin/xxvd:714 msgid "Display program information." msgstr "Zeigt Textdateien." @@ -79,7 +79,7 @@ msgid "Wished automated recordings" msgstr "Gewünschte automatische Aufnahmen" #-------------------- -#: ../html/alist.tmpl:45 ../html/tlist.tmpl:97 ../lib/XXV/MODULES/AUTOTIMER.pm:997 +#: ../html/alist.tmpl:45 ../html/tlist.tmpl:97 ../lib/XXV/MODULES/AUTOTIMER.pm:993 msgid "Edit autotimer" msgstr "Autotimer bearbeiten" @@ -94,7 +94,7 @@ msgid "Delete autotimer" msgstr "Lösche Autotimer" #-------------------- -#: ../html/alist.tmpl:5 ../lib/XXV/MODULES/AUTOTIMER.pm:54 ../lib/XXV/MODULES/AUTOTIMER.pm:998 +#: ../html/alist.tmpl:5 ../lib/XXV/MODULES/AUTOTIMER.pm:48 ../lib/XXV/MODULES/AUTOTIMER.pm:994 msgid "Create new autotimer" msgstr "Neuer Autotimer" @@ -179,47 +179,47 @@ msgid "Delete channels" msgstr "Kanäle löschen" #-------------------- -#: ../html/clist.tmpl:134 ../lib/XXV/MODULES/CHANNELS.pm:1094 ../lib/XXV/MODULES/CHANNELS.pm:1366 ../lib/XXV/MODULES/CHANNELS.pm:601 ../lib/XXV/MODULES/USER.pm:527 ../lib/XXV/OUTPUT/Console.pm:170 ../lib/XXV/OUTPUT/Console.pm:233 +#: ../html/clist.tmpl:134 ../lib/XXV/MODULES/CHANNELS.pm:1097 ../lib/XXV/MODULES/CHANNELS.pm:1370 ../lib/XXV/MODULES/CHANNELS.pm:602 ../lib/XXV/MODULES/USER.pm:599 ../lib/XXV/OUTPUT/Console.pm:170 ../lib/XXV/OUTPUT/Console.pm:233 msgid "Name" msgstr "Name" #-------------------- -#: ../html/clist.tmpl:135 ../lib/XXV/MODULES/CHANNELS.pm:1106 ../lib/XXV/MODULES/CHANNELS.pm:602 +#: ../html/clist.tmpl:135 ../lib/XXV/MODULES/CHANNELS.pm:1109 ../lib/XXV/MODULES/CHANNELS.pm:603 msgid "Transponder frequency" msgstr "Frequenz des Transponder" #-------------------- -#: ../html/clist.tmpl:136 ../lib/XXV/MODULES/CHANNELS.pm:1133 +#: ../html/clist.tmpl:136 ../lib/XXV/MODULES/CHANNELS.pm:1136 msgid "Various parameters, depending on signal source" msgstr "Verschiedene Parameter, abhängig von der Signalquelle" #-------------------- -#: ../html/clist.tmpl:137 ../html/movetimerlist.tmpl:82 ../lib/XXV/MODULES/MOVETIMER.pm:572 +#: ../html/clist.tmpl:137 ../html/movetimerlist.tmpl:82 ../lib/XXV/MODULES/MOVETIMER.pm:577 msgid "Source" msgstr "Quelle" #-------------------- -#: ../html/clist.tmpl:138 ../lib/XXV/MODULES/CHANNELS.pm:1158 +#: ../html/clist.tmpl:138 ../lib/XXV/MODULES/CHANNELS.pm:1161 msgid "Video PID (VPID)" msgstr "Video PID (VPID)" #-------------------- -#: ../html/clist.tmpl:139 ../lib/XXV/MODULES/CHANNELS.pm:1172 +#: ../html/clist.tmpl:139 ../lib/XXV/MODULES/CHANNELS.pm:1175 msgid "Audio PID (APID)" msgstr "Audio PID (APID)" #-------------------- -#: ../html/clist.tmpl:140 ../lib/XXV/MODULES/CHANNELS.pm:1184 +#: ../html/clist.tmpl:140 ../lib/XXV/MODULES/CHANNELS.pm:1187 msgid "Teletext PID (TPID)" msgstr "Videotext PID (TPID)" #-------------------- -#: ../html/clist.tmpl:141 ../lib/XXV/MODULES/CHANNELS.pm:1198 +#: ../html/clist.tmpl:141 ../lib/XXV/MODULES/CHANNELS.pm:1201 msgid "Conditional access (CA)" msgstr "Zugangsberechtigungssystem (CA)" #-------------------- -#: ../html/clist.tmpl:148 ../html/help.tmpl:112 ../html/tlist.tmpl:51 ../lib/XXV/MODULES/CHANNELS.pm:1367 +#: ../html/clist.tmpl:148 ../html/help.tmpl:112 ../html/tlist.tmpl:51 ../lib/XXV/MODULES/CHANNELS.pm:1371 ../lib/XXV/MODULES/XMLTV.pm:696 #. (12) msgid "Video disk recorder" msgstr "Video Disk Rekorder" @@ -230,12 +230,12 @@ msgid "Switch to channel" msgstr "Schalte zum Kanal" #-------------------- -#: ../html/clist.tmpl:36 ../lib/XXV/MODULES/CHANNELS.pm:1264 +#: ../html/clist.tmpl:36 ../lib/XXV/MODULES/CHANNELS.pm:1267 msgid "Edit channel" msgstr "Kanal bearbeiten" #-------------------- -#: ../html/clist.tmpl:39 ../lib/XXV/MODULES/CHANNELS.pm:1372 +#: ../html/clist.tmpl:39 ../lib/XXV/MODULES/CHANNELS.pm:1376 msgid "Would you like to delete this channel?" msgstr "Wollen Sie diesen Kanal löschen?" @@ -245,7 +245,7 @@ msgid "Delete channel" msgstr "Kanal löschen" #-------------------- -#: ../html/clist.tmpl:94 ../html/help.tmpl:113 ../lib/XXV/MODULES/AUTOTIMER.pm:1145 ../lib/XXV/MODULES/CHANNELS.pm:484 +#: ../html/clist.tmpl:94 ../html/help.tmpl:113 ../lib/XXV/MODULES/AUTOTIMER.pm:1144 ../lib/XXV/MODULES/CHANNELS.pm:484 #. (12) msgid "Channels" msgstr "Kanäle" @@ -261,17 +261,17 @@ msgid "Detailed program information" msgstr "Detailierte Programminformation" #-------------------- -#: ../html/display.tmpl:21 ../html/display.tmpl:44 ../lib/XXV/MODULES/EPG.pm:1189 ../lib/XXV/MODULES/EPG.pm:924 +#: ../html/display.tmpl:21 ../html/display.tmpl:44 ../lib/XXV/MODULES/EPG.pm:1202 ../lib/XXV/MODULES/EPG.pm:936 msgid "Percent" msgstr "Prozent" #-------------------- -#: ../html/display.tmpl:25 ../html/rdisplay.tmpl:158 ../html/search.tmpl:54 ../lib/XXV/MODULES/AUTOTIMER.pm:164 ../lib/XXV/MODULES/AUTOTIMER.pm:438 ../lib/XXV/MODULES/CHRONICLE.pm:175 ../lib/XXV/MODULES/CHRONICLE.pm:255 ../lib/XXV/MODULES/EPG.pm:1064 ../lib/XXV/MODULES/EPG.pm:1186 ../lib/XXV/MODULES/EPG.pm:685 ../lib/XXV/MODULES/EPG.pm:920 ../lib/XXV/MODULES/RECORDS.pm:2108 ../lib/XXV/MODULES/SHARE.pm:353 ../lib/XXV/MODULES/TIMERS.pm:1204 ../lib/XXV/MODULES/TIMERS.pm:828 ../lib/XXV/MODULES/XMLTV.pm:664 +#: ../html/display.tmpl:25 ../html/rdisplay.tmpl:158 ../html/search.tmpl:54 ../lib/XXV/MODULES/AUTOTIMER.pm:157 ../lib/XXV/MODULES/AUTOTIMER.pm:432 ../lib/XXV/MODULES/CHRONICLE.pm:176 ../lib/XXV/MODULES/CHRONICLE.pm:257 ../lib/XXV/MODULES/EPG.pm:1076 ../lib/XXV/MODULES/EPG.pm:1199 ../lib/XXV/MODULES/EPG.pm:695 ../lib/XXV/MODULES/EPG.pm:932 ../lib/XXV/MODULES/RECORDS.pm:2122 ../lib/XXV/MODULES/SHARE.pm:354 ../lib/XXV/MODULES/TIMERS.pm:1256 ../lib/XXV/MODULES/TIMERS.pm:875 ../lib/XXV/MODULES/XMLTV.pm:692 msgid "Channel" msgstr "Kanal" #-------------------- -#: ../html/display.tmpl:27 ../html/movetimerlist.tmpl:81 ../lib/XXV/MODULES/AUTOTIMER.pm:1142 ../lib/XXV/MODULES/CHANNELS.pm:600 ../lib/XXV/MODULES/CHRONICLE.pm:173 ../lib/XXV/MODULES/CHRONICLE.pm:253 ../lib/XXV/MODULES/EPG.pm:1062 ../lib/XXV/MODULES/EPG.pm:1184 ../lib/XXV/MODULES/EPG.pm:683 ../lib/XXV/MODULES/EPG.pm:809 ../lib/XXV/MODULES/EPG.pm:917 ../lib/XXV/MODULES/MOVETIMER.pm:571 ../lib/XXV/MODULES/MUSIC.pm:609 ../lib/XXV/MODULES/SHARE.pm:351 ../lib/XXV/MODULES/SVDRP.pm:314 ../lib/XXV/MODULES/TIMERS.pm:1201 ../lib/XXV/MODULES/USER.pm:526 ../lib/XXV/MODULES/XMLTV.pm:662 +#: ../html/display.tmpl:27 ../html/movetimerlist.tmpl:81 ../lib/XXV/MODULES/AUTOTIMER.pm:1141 ../lib/XXV/MODULES/CHANNELS.pm:601 ../lib/XXV/MODULES/CHRONICLE.pm:174 ../lib/XXV/MODULES/CHRONICLE.pm:255 ../lib/XXV/MODULES/EPG.pm:1074 ../lib/XXV/MODULES/EPG.pm:1197 ../lib/XXV/MODULES/EPG.pm:693 ../lib/XXV/MODULES/EPG.pm:820 ../lib/XXV/MODULES/EPG.pm:929 ../lib/XXV/MODULES/MOVETIMER.pm:576 ../lib/XXV/MODULES/MUSIC.pm:614 ../lib/XXV/MODULES/SHARE.pm:352 ../lib/XXV/MODULES/SVDRP.pm:320 ../lib/XXV/MODULES/TIMERS.pm:1253 ../lib/XXV/MODULES/USER.pm:598 ../lib/XXV/MODULES/XMLTV.pm:690 msgid "Service" msgstr "Service" @@ -301,12 +301,12 @@ msgid "Search with OFDb" msgstr "Suche mit OFDb" #-------------------- -#: ../html/display.tmpl:60 ../lib/XXV/MODULES/AUTOTIMER.pm:447 ../lib/XXV/MODULES/AUTOTIMER.pm:648 ../lib/XXV/MODULES/EPG.pm:923 ../lib/XXV/MODULES/RECORDS.pm:2121 ../lib/XXV/MODULES/RECORDS.pm:2321 ../lib/XXV/MODULES/TIMERS.pm:728 ../lib/XXV/OUTPUT/Console.pm:171 +#: ../html/display.tmpl:60 ../lib/XXV/MODULES/AUTOTIMER.pm:441 ../lib/XXV/MODULES/AUTOTIMER.pm:644 ../lib/XXV/MODULES/EPG.pm:935 ../lib/XXV/MODULES/RECORDS.pm:2135 ../lib/XXV/MODULES/RECORDS.pm:2336 ../lib/XXV/MODULES/TIMERS.pm:773 ../lib/XXV/OUTPUT/Console.pm:171 msgid "Description" msgstr "Beschreibung" #-------------------- -#: ../html/display.tmpl:69 ../lib/XXV/MODULES/AUTOTIMER.pm:165 ../lib/XXV/MODULES/AUTOTIMER.pm:441 ../lib/XXV/MODULES/AUTOTIMER.pm:444 ../lib/XXV/MODULES/CHRONICLE.pm:177 ../lib/XXV/MODULES/CHRONICLE.pm:257 ../lib/XXV/MODULES/EPG.pm:1065 ../lib/XXV/MODULES/EPG.pm:1187 ../lib/XXV/MODULES/EPG.pm:686 ../lib/XXV/MODULES/EPG.pm:811 ../lib/XXV/MODULES/EPG.pm:921 ../lib/XXV/MODULES/SHARE.pm:354 ../lib/XXV/MODULES/TIMERS.pm:1205 ../lib/XXV/MODULES/TIMERS.pm:829 +#: ../html/display.tmpl:69 ../lib/XXV/MODULES/AUTOTIMER.pm:158 ../lib/XXV/MODULES/AUTOTIMER.pm:435 ../lib/XXV/MODULES/AUTOTIMER.pm:438 ../lib/XXV/MODULES/CHRONICLE.pm:178 ../lib/XXV/MODULES/CHRONICLE.pm:259 ../lib/XXV/MODULES/EPG.pm:1077 ../lib/XXV/MODULES/EPG.pm:1200 ../lib/XXV/MODULES/EPG.pm:696 ../lib/XXV/MODULES/EPG.pm:822 ../lib/XXV/MODULES/EPG.pm:933 ../lib/XXV/MODULES/SHARE.pm:355 ../lib/XXV/MODULES/TIMERS.pm:1257 ../lib/XXV/MODULES/TIMERS.pm:876 msgid "Start" msgstr "Start" @@ -316,7 +316,7 @@ msgid "PDC" msgstr "VPS" #-------------------- -#: ../html/display.tmpl:75 ../html/widgets/player.tmpl:100 ../html/widgets/player.tmpl:60 ../lib/XXV/MODULES/AUTOTIMER.pm:166 ../lib/XXV/MODULES/AUTOTIMER.pm:442 ../lib/XXV/MODULES/AUTOTIMER.pm:445 ../lib/XXV/MODULES/CHRONICLE.pm:178 ../lib/XXV/MODULES/CHRONICLE.pm:258 ../lib/XXV/MODULES/EPG.pm:1066 ../lib/XXV/MODULES/EPG.pm:1188 ../lib/XXV/MODULES/EPG.pm:687 ../lib/XXV/MODULES/EPG.pm:812 ../lib/XXV/MODULES/EPG.pm:922 ../lib/XXV/MODULES/SHARE.pm:355 ../lib/XXV/MODULES/TIMERS.pm:1206 +#: ../html/display.tmpl:75 ../html/widgets/player.tmpl:100 ../html/widgets/player.tmpl:60 ../lib/XXV/MODULES/AUTOTIMER.pm:159 ../lib/XXV/MODULES/AUTOTIMER.pm:436 ../lib/XXV/MODULES/AUTOTIMER.pm:439 ../lib/XXV/MODULES/CHRONICLE.pm:179 ../lib/XXV/MODULES/CHRONICLE.pm:260 ../lib/XXV/MODULES/EPG.pm:1078 ../lib/XXV/MODULES/EPG.pm:1201 ../lib/XXV/MODULES/EPG.pm:697 ../lib/XXV/MODULES/EPG.pm:823 ../lib/XXV/MODULES/EPG.pm:934 ../lib/XXV/MODULES/SHARE.pm:356 ../lib/XXV/MODULES/TIMERS.pm:1258 msgid "Stop" msgstr "Stopp" @@ -356,14 +356,14 @@ msgid "Administration" msgstr "Administration" #-------------------- -#: ../html/help.tmpl:114 ../lib/XXV/MODULES/USER.pm:352 +#: ../html/help.tmpl:114 ../lib/XXV/MODULES/USER.pm:417 msgid "User" msgstr "Anwender" #-------------------- #: ../html/help.tmpl:115 -msgid "Personality" -msgstr "Persönlichkeit" +msgid "Own settings" +msgstr "Eigene Einstellungen" #-------------------- #: ../html/help.tmpl:116 @@ -371,7 +371,7 @@ msgid "Reload" msgstr "Erneut laden" #-------------------- -#: ../html/help.tmpl:120 ../lib/XXV/MODULES/USER.pm:529 +#: ../html/help.tmpl:120 ../lib/XXV/MODULES/USER.pm:601 msgid "Preferences" msgstr "Einstellungen" @@ -386,7 +386,7 @@ msgid "search" msgstr "Suchen" #-------------------- -#: ../html/help.tmpl:23 ../lib/XXV/MODULES/HTTPD.pm:646 ../lib/XXV/MODULES/WAPD.pm:75 ../wml/widgets/footer.tmpl:6 +#: ../html/help.tmpl:23 ../lib/XXV/MODULES/HTTPD.pm:639 ../lib/XXV/MODULES/WAPD.pm:75 ../wml/widgets/footer.tmpl:6 msgid "Running now" msgstr "Jetzt läuft" @@ -397,7 +397,7 @@ msgid "Next" msgstr "Nächstes" #-------------------- -#: ../html/help.tmpl:51 ../lib/XXV/MODULES/HTTPD.pm:647 ../lib/XXV/MODULES/WAPD.pm:76 ../wml/widgets/footer.tmpl:12 +#: ../html/help.tmpl:51 ../lib/XXV/MODULES/HTTPD.pm:640 ../lib/XXV/MODULES/WAPD.pm:76 ../wml/widgets/footer.tmpl:12 msgid "Program guide" msgstr "Programm" @@ -413,13 +413,13 @@ msgid "Programming" msgstr "Programmierung" #-------------------- -#: ../html/help.tmpl:65 ../lib/XXV/MODULES/HTTPD.pm:649 ../lib/XXV/MODULES/WAPD.pm:78 ../wml/tlist.tmpl:2 ../wml/widgets/footer.tmpl:15 +#: ../html/help.tmpl:65 ../lib/XXV/MODULES/HTTPD.pm:642 ../lib/XXV/MODULES/WAPD.pm:78 ../wml/tlist.tmpl:2 ../wml/widgets/footer.tmpl:15 #. (12) msgid "Timers" msgstr "Timer" #-------------------- -#: ../html/help.tmpl:66 ../lib/XXV/MODULES/HTTPD.pm:648 ../lib/XXV/MODULES/WAPD.pm:77 ../wml/widgets/footer.tmpl:17 +#: ../html/help.tmpl:66 ../lib/XXV/MODULES/HTTPD.pm:641 ../lib/XXV/MODULES/WAPD.pm:77 ../wml/widgets/footer.tmpl:17 #. (12) msgid "Autotimer" msgstr "Autotimer" @@ -437,13 +437,13 @@ msgid "Media content" msgstr "Medieninhalte" #-------------------- -#: ../html/help.tmpl:72 ../lib/XXV/MODULES/HTTPD.pm:650 ../lib/XXV/MODULES/WAPD.pm:79 ../wml/widgets/footer.tmpl:18 +#: ../html/help.tmpl:72 ../lib/XXV/MODULES/HTTPD.pm:643 ../lib/XXV/MODULES/WAPD.pm:79 ../wml/widgets/footer.tmpl:18 #. (12) msgid "Recordings" msgstr "Aufnahmen" #-------------------- -#: ../html/help.tmpl:73 ../lib/XXV/MODULES/HTTPD.pm:651 ../lib/XXV/MODULES/MEDIALIB.pm:1237 ../lib/XXV/MODULES/WAPD.pm:80 +#: ../html/help.tmpl:73 ../lib/XXV/MODULES/HTTPD.pm:644 ../lib/XXV/MODULES/MEDIALIB.pm:1231 ../lib/XXV/MODULES/WAPD.pm:80 #. (12) msgid "Music" msgstr "Musik" @@ -461,13 +461,13 @@ msgid "Tools" msgstr "Werkzeuge" #-------------------- -#: ../html/help.tmpl:79 ../lib/XXV/MODULES/HTTPD.pm:652 ../lib/XXV/MODULES/WAPD.pm:81 ../wml/widgets/footer.tmpl:19 +#: ../html/help.tmpl:79 ../lib/XXV/MODULES/HTTPD.pm:645 ../lib/XXV/MODULES/WAPD.pm:81 ../wml/widgets/footer.tmpl:19 #. (12) msgid "Remote" msgstr "Fernbedienung" #-------------------- -#: ../html/help.tmpl:80 ../html/widgets/vtx.tmpl:3 ../lib/XXV/MODULES/HTTPD.pm:653 ../lib/XXV/MODULES/WAPD.pm:82 +#: ../html/help.tmpl:80 ../html/widgets/vtx.tmpl:3 ../lib/XXV/MODULES/HTTPD.pm:646 ../lib/XXV/MODULES/WAPD.pm:82 #. (12) msgid "Teletext" msgstr "Videotext" @@ -485,12 +485,12 @@ msgid "Commands" msgstr "Kommandos" #-------------------- -#: ../html/help.tmpl:87 ../html/widgets/player.tmpl:105 ../html/widgets/player.tmpl:69 ../lib/XXV/MODULES/HTTPD.pm:654 ../lib/XXV/MODULES/TIMERS.pm:1202 ../lib/XXV/MODULES/WAPD.pm:83 +#: ../html/help.tmpl:87 ../html/widgets/player.tmpl:105 ../html/widgets/player.tmpl:69 ../lib/XXV/MODULES/HTTPD.pm:647 ../lib/XXV/MODULES/TIMERS.pm:1254 ../lib/XXV/MODULES/WAPD.pm:83 msgid "Status" msgstr "Status" #-------------------- -#: ../html/help.tmpl:88 ../lib/XXV/MODULES/STATUS.pm:216 +#: ../html/help.tmpl:88 ../lib/XXV/MODULES/STATUS.pm:213 msgid "Vitals" msgstr "Wichtiges" @@ -500,12 +500,12 @@ msgid "Memory" msgstr "Speicher" #-------------------- -#: ../html/help.tmpl:90 ../lib/XXV/MODULES/STATUS.pm:712 +#: ../html/help.tmpl:90 ../lib/XXV/MODULES/STATUS.pm:713 msgid "Filesystem" msgstr "Filesystem" #-------------------- -#: ../html/help.tmpl:91 ../lib/XXV/MODULES/STATUS.pm:233 +#: ../html/help.tmpl:91 ../lib/XXV/MODULES/STATUS.pm:231 msgid "Network" msgstr "Netzwerk" @@ -525,7 +525,7 @@ msgid "News" msgstr "Neuigkeiten" #-------------------- -#: ../html/help.tmpl:98 ../lib/XXV/MODULES/MEDIALIB.pm:1245 +#: ../html/help.tmpl:98 ../lib/XXV/MODULES/MEDIALIB.pm:1239 msgid "History" msgstr "Geschichte" @@ -590,7 +590,7 @@ msgid "TV-Episode" msgstr "TV-Episode" #-------------------- -#: ../html/mlcopy.tmpl:115 ../html/mldisplay.tmpl:115 ../html/mledit.tmpl:115 ../html/mlimport.tmpl:115 ../lib/XXV/MODULES/MEDIALIB.pm:1311 +#: ../html/mlcopy.tmpl:115 ../html/mldisplay.tmpl:115 ../html/mledit.tmpl:115 ../html/mlimport.tmpl:115 ../lib/XXV/MODULES/MEDIALIB.pm:1305 msgid "Seen" msgstr "Gesehen" @@ -600,7 +600,7 @@ msgid "Runtime" msgstr "Laufzeit" #-------------------- -#: ../html/mlcopy.tmpl:128 ../html/mldisplay.tmpl:30 ../html/mledit.tmpl:128 ../html/mlimport.tmpl:128 ../html/mlist.tmpl:75 ../lib/XXV/MODULES/MEDIALIB.pm:1286 ../lib/XXV/MODULES/MUSIC.pm:614 +#: ../html/mlcopy.tmpl:128 ../html/mldisplay.tmpl:30 ../html/mledit.tmpl:128 ../html/mlimport.tmpl:128 ../html/mlist.tmpl:75 ../lib/XXV/MODULES/MEDIALIB.pm:1280 ../lib/XXV/MODULES/MUSIC.pm:619 msgid "Year" msgstr "Jahr" @@ -610,7 +610,7 @@ msgid "Filename" msgstr "Dateiname" #-------------------- -#: ../html/mlcopy.tmpl:140 ../html/mldisplay.tmpl:209 ../html/mledit.tmpl:140 ../html/mlimport.tmpl:140 ../lib/XXV/MODULES/MEDIALIB.pm:1284 +#: ../html/mlcopy.tmpl:140 ../html/mldisplay.tmpl:209 ../html/mledit.tmpl:140 ../html/mlimport.tmpl:140 ../lib/XXV/MODULES/MEDIALIB.pm:1278 msgid "Actors" msgstr "Schauspieler" @@ -640,7 +640,7 @@ msgid "Size" msgstr "Größe" #-------------------- -#: ../html/mlcopy.tmpl:187 ../html/mldisplay.tmpl:201 ../html/mledit.tmpl:187 ../html/mlimport.tmpl:187 ../html/mlist.tmpl:77 ../lib/XXV/MODULES/MEDIALIB.pm:1291 +#: ../html/mlcopy.tmpl:187 ../html/mldisplay.tmpl:201 ../html/mledit.tmpl:187 ../html/mlimport.tmpl:187 ../html/mlist.tmpl:77 ../lib/XXV/MODULES/MEDIALIB.pm:1285 msgid "Comment" msgstr "Kommentar" @@ -660,7 +660,7 @@ msgid "Save" msgstr "Speichern" #-------------------- -#: ../html/mlcopy.tmpl:23 ../html/mledit.tmpl:23 ../html/mlimport.tmpl:23 ../lib/XXV/MODULES/AUTOTIMER.pm:162 ../lib/XXV/MODULES/AUTOTIMER.pm:435 ../lib/XXV/MODULES/AUTOTIMER.pm:646 ../lib/XXV/MODULES/CHRONICLE.pm:174 ../lib/XXV/MODULES/CHRONICLE.pm:254 ../lib/XXV/MODULES/EPG.pm:1063 ../lib/XXV/MODULES/EPG.pm:1185 ../lib/XXV/MODULES/EPG.pm:684 ../lib/XXV/MODULES/EPG.pm:810 ../lib/XXV/MODULES/EPG.pm:918 ../lib/XXV/MODULES/EVENTS.pm:348 ../lib/XXV/MODULES/MEDIALIB.pm:1281 ../lib/XXV/MODULES/MUSIC.pm:612 ../lib/XXV/MODULES/RECORDS.pm:1646 ../lib/XXV/MODULES/RECORDS.pm:1781 ../lib/XXV/MODULES/SHARE.pm:352 ../lib/XXV/MODULES/TIMERS.pm:1207 ../lib/XXV/MODULES/TIMERS.pm:827 +#: ../html/mlcopy.tmpl:23 ../html/mledit.tmpl:23 ../html/mlimport.tmpl:23 ../lib/XXV/MODULES/AUTOTIMER.pm:155 ../lib/XXV/MODULES/AUTOTIMER.pm:429 ../lib/XXV/MODULES/AUTOTIMER.pm:642 ../lib/XXV/MODULES/CHRONICLE.pm:175 ../lib/XXV/MODULES/CHRONICLE.pm:256 ../lib/XXV/MODULES/EPG.pm:1075 ../lib/XXV/MODULES/EPG.pm:1198 ../lib/XXV/MODULES/EPG.pm:694 ../lib/XXV/MODULES/EPG.pm:821 ../lib/XXV/MODULES/EPG.pm:930 ../lib/XXV/MODULES/EVENTS.pm:349 ../lib/XXV/MODULES/MEDIALIB.pm:1275 ../lib/XXV/MODULES/MUSIC.pm:617 ../lib/XXV/MODULES/RECORDS.pm:1656 ../lib/XXV/MODULES/RECORDS.pm:1793 ../lib/XXV/MODULES/SHARE.pm:353 ../lib/XXV/MODULES/TIMERS.pm:1259 ../lib/XXV/MODULES/TIMERS.pm:874 msgid "Title" msgstr "Titel" @@ -670,7 +670,7 @@ msgid "Search at" msgstr "Suche bei" #-------------------- -#: ../html/mlcopy.tmpl:36 ../html/mledit.tmpl:36 ../html/mlimport.tmpl:36 ../lib/XXV/MODULES/AUTOTIMER.pm:436 ../lib/XXV/MODULES/AUTOTIMER.pm:647 ../lib/XXV/MODULES/EPG.pm:919 ../lib/XXV/MODULES/MEDIALIB.pm:1282 ../lib/XXV/MODULES/RECORDS.pm:1647 ../lib/XXV/MODULES/RECORDS.pm:1782 +#: ../html/mlcopy.tmpl:36 ../html/mledit.tmpl:36 ../html/mlimport.tmpl:36 ../lib/XXV/MODULES/AUTOTIMER.pm:430 ../lib/XXV/MODULES/AUTOTIMER.pm:643 ../lib/XXV/MODULES/EPG.pm:931 ../lib/XXV/MODULES/MEDIALIB.pm:1276 ../lib/XXV/MODULES/RECORDS.pm:1657 ../lib/XXV/MODULES/RECORDS.pm:1794 msgid "Subtitle" msgstr "Serientitel" @@ -680,7 +680,7 @@ msgid "Create Media" msgstr "Medium erstellen" #-------------------- -#: ../html/mlcopy.tmpl:42 ../html/mldisplay.tmpl:78 ../html/mledit.tmpl:42 ../html/mlimport.tmpl:42 ../lib/XXV/MODULES/MEDIALIB.pm:1287 +#: ../html/mlcopy.tmpl:42 ../html/mldisplay.tmpl:78 ../html/mledit.tmpl:42 ../html/mlimport.tmpl:42 ../lib/XXV/MODULES/MEDIALIB.pm:1281 msgid "Country" msgstr "Land" @@ -690,12 +690,12 @@ msgid "Cover URL" msgstr "Cover URL" #-------------------- -#: ../html/mlcopy.tmpl:56 ../html/mldisplay.tmpl:48 ../html/mledit.tmpl:56 ../html/mlimport.tmpl:56 ../lib/XXV/MODULES/MEDIALIB.pm:1283 +#: ../html/mlcopy.tmpl:56 ../html/mldisplay.tmpl:48 ../html/mledit.tmpl:56 ../html/mlimport.tmpl:56 ../lib/XXV/MODULES/MEDIALIB.pm:1277 msgid "Director" msgstr "Regisseur" #-------------------- -#: ../html/mlcopy.tmpl:64 ../html/mldisplay.tmpl:62 ../html/mledit.tmpl:64 ../html/mlimport.tmpl:64 ../lib/XXV/MODULES/MEDIALIB.pm:1290 +#: ../html/mlcopy.tmpl:64 ../html/mldisplay.tmpl:62 ../html/mledit.tmpl:64 ../html/mlimport.tmpl:64 ../lib/XXV/MODULES/MEDIALIB.pm:1284 msgid "Language" msgstr "Spache" @@ -720,17 +720,17 @@ msgid "spanish" msgstr "spanisch" #-------------------- -#: ../html/mlcopy.tmpl:82 ../html/mldisplay.tmpl:193 ../html/mledit.tmpl:82 ../html/mlimport.tmpl:82 ../lib/XXV/MODULES/MEDIALIB.pm:1285 +#: ../html/mlcopy.tmpl:82 ../html/mldisplay.tmpl:193 ../html/mledit.tmpl:82 ../html/mlimport.tmpl:82 ../lib/XXV/MODULES/MEDIALIB.pm:1279 msgid "Plot" msgstr "Handlung" #-------------------- -#: ../html/mlcopy.tmpl:90 ../html/mldisplay.tmpl:102 ../html/mledit.tmpl:90 ../html/mlimport.tmpl:90 ../lib/XXV/MODULES/MEDIALIB.pm:1288 +#: ../html/mlcopy.tmpl:90 ../html/mldisplay.tmpl:102 ../html/mledit.tmpl:90 ../html/mlimport.tmpl:90 ../lib/XXV/MODULES/MEDIALIB.pm:1282 msgid "DiskID" msgstr "DiskID" #-------------------- -#: ../html/mlcopy.tmpl:95 ../html/mldisplay.tmpl:92 ../html/mledit.tmpl:95 ../html/mlimport.tmpl:95 ../lib/XXV/MODULES/MEDIALIB.pm:1289 +#: ../html/mlcopy.tmpl:95 ../html/mldisplay.tmpl:92 ../html/mledit.tmpl:95 ../html/mlimport.tmpl:95 ../lib/XXV/MODULES/MEDIALIB.pm:1283 msgid "Mediatype" msgstr "Medientyp" @@ -755,7 +755,7 @@ msgid "Albums" msgstr "Alben" #-------------------- -#: ../html/mlist.tmpl:24 ../html/mlnavcontainer.tmpl:28 ../html/mlsearch.tmpl:46 ../html/search.tmpl:75 ../html/widgets/vtx.tmpl:28 ../lib/XXV/MODULES/AUTOTIMER.pm:1144 ../wml/next.tmpl:15 ../wml/now.tmpl:15 ../wml/program.tmpl:43 ../wml/search.tmpl:17 +#: ../html/mlist.tmpl:24 ../html/mlnavcontainer.tmpl:28 ../html/mlsearch.tmpl:46 ../html/search.tmpl:75 ../html/widgets/vtx.tmpl:28 ../lib/XXV/MODULES/AUTOTIMER.pm:1143 ../wml/next.tmpl:15 ../wml/now.tmpl:15 ../wml/program.tmpl:43 ../wml/search.tmpl:17 msgid "Search" msgstr "Suche" @@ -791,7 +791,7 @@ msgid "Selection" msgstr "Auswählen" #-------------------- -#: ../html/mlist.tmpl:74 ../lib/XXV/MODULES/MUSIC.pm:610 +#: ../html/mlist.tmpl:74 ../lib/XXV/MODULES/MUSIC.pm:615 msgid "Artist" msgstr "Künstler" @@ -801,7 +801,7 @@ msgid "Media list" msgstr "Medienliste" #-------------------- -#: ../html/mllistmedias.tmpl:43 +#: ../html/mllistmedias.tmpl:40 msgid "more" msgstr "mehr" @@ -881,7 +881,7 @@ msgid "Rules to move timer between channels" msgstr "Regeln zum Verschieben von Timern zwischen Kanälen" #-------------------- -#: ../html/movetimerlist.tmpl:54 ../html/movetimerlist.tmpl:55 ../lib/XXV/MODULES/MOVETIMER.pm:473 +#: ../html/movetimerlist.tmpl:54 ../html/movetimerlist.tmpl:55 ../lib/XXV/MODULES/MOVETIMER.pm:476 #. (25) msgid "Create a new rule to move timer" msgstr "Erzeuge eine neue Regel zum Verschieben von Timern" @@ -904,22 +904,22 @@ msgid "Would you like to delete these rules?" msgstr "Wollen Sie diese Regeln löschen?" #-------------------- -#: ../html/movetimerlist.tmpl:7 ../lib/XXV/MODULES/MOVETIMER.pm:472 +#: ../html/movetimerlist.tmpl:7 ../lib/XXV/MODULES/MOVETIMER.pm:475 msgid "Edit rule to move timer" msgstr "Regel zum Verschieben von Timern bearbeiten" #-------------------- -#: ../html/movetimerlist.tmpl:83 ../lib/XXV/MODULES/MOVETIMER.pm:573 +#: ../html/movetimerlist.tmpl:83 ../lib/XXV/MODULES/MOVETIMER.pm:578 msgid "Destination" msgstr "Ziel" #-------------------- -#: ../html/movetimerlist.tmpl:84 ../lib/XXV/MODULES/MOVETIMER.pm:574 ../lib/XXV/MODULES/MOVETIMER.pm:643 +#: ../html/movetimerlist.tmpl:84 ../lib/XXV/MODULES/MOVETIMER.pm:579 ../lib/XXV/MODULES/MOVETIMER.pm:648 msgid "Move timer" msgstr "Verschiebe Timer" #-------------------- -#: ../html/movetimerlist.tmpl:85 ../lib/XXV/MODULES/MOVETIMER.pm:575 +#: ../html/movetimerlist.tmpl:85 ../lib/XXV/MODULES/MOVETIMER.pm:580 msgid "Change original timer" msgstr "Ändere original Timer" @@ -1019,7 +1019,7 @@ msgid "New recording" msgstr "Neue Aufnahme" #-------------------- -#: ../html/rdisplay.tmpl:167 ../lib/XXV/MODULES/RECORDS.pm:2130 +#: ../html/rdisplay.tmpl:167 ../lib/XXV/MODULES/RECORDS.pm:2144 msgid "Keywords" msgstr "Stichwörter" @@ -1029,12 +1029,12 @@ msgid "Lifetime" msgstr "Lebenszeit" #-------------------- -#: ../html/rdisplay.tmpl:190 ../lib/XXV/MODULES/AUTOTIMER.pm:167 ../lib/XXV/MODULES/TIMERS.pm:1208 +#: ../html/rdisplay.tmpl:190 ../lib/XXV/MODULES/AUTOTIMER.pm:160 ../lib/XXV/MODULES/TIMERS.pm:1260 msgid "Priority" msgstr "Priorität" #-------------------- -#: ../html/rdisplay.tmpl:65 ../html/rlist.tmpl:102 ../lib/XXV/MODULES/RECORDS.pm:1648 ../lib/XXV/MODULES/RECORDS.pm:1783 +#: ../html/rdisplay.tmpl:65 ../html/rlist.tmpl:102 ../lib/XXV/MODULES/RECORDS.pm:1658 ../lib/XXV/MODULES/RECORDS.pm:1795 msgid "Duration" msgstr "Dauer" @@ -1044,7 +1044,7 @@ msgid "Recording list" msgstr "Aufnahmeliste" #-------------------- -#: ../html/rdisplay.tmpl:78 ../lib/XXV/MODULES/RECORDS.pm:1934 +#: ../html/rdisplay.tmpl:78 ../lib/XXV/MODULES/RECORDS.pm:1947 msgid "Would you like to delete this recording?" msgstr "Wollen Sie diese Aufnahme löschen?" @@ -1059,7 +1059,7 @@ msgid "Cut recording" msgstr "Aufnahme schneiden" #-------------------- -#: ../html/rdisplay.tmpl:86 ../lib/XXV/MODULES/RECORDS.pm:2150 +#: ../html/rdisplay.tmpl:86 ../lib/XXV/MODULES/RECORDS.pm:2164 msgid "Edit recording" msgstr "Aufnahme bearbeiten" @@ -1169,7 +1169,7 @@ msgid "Search in fields" msgstr "Suchfelder" #-------------------- -#: ../html/search.tmpl:27 ../html/search.tmpl:35 ../html/search.tmpl:42 ../lib/XXV/MODULES/MEDIALIB.pm:1310 +#: ../html/search.tmpl:27 ../html/search.tmpl:35 ../html/search.tmpl:42 ../lib/XXV/MODULES/MEDIALIB.pm:1304 msgid "All" msgstr "Alle" @@ -1281,7 +1281,7 @@ msgid "Planned recordings" msgstr "Geplante Aufnahmen" #-------------------- -#: ../html/tlist.tmpl:86 ../lib/XXV/MODULES/TIMERS.pm:834 +#: ../html/tlist.tmpl:86 ../lib/XXV/MODULES/TIMERS.pm:881 msgid "Would you like to delete this timer?" msgstr "Wollen Sie diesen Timer löschen?" @@ -1421,7 +1421,7 @@ msgid "Mute" msgstr "Mute" #-------------------- -#: ../html/widgets/player.tmpl:106 ../html/widgets/player.tmpl:70 +#: ../html/widgets/player.tmpl:106 ../html/widgets/player.tmpl:70 ../lib/XXV/MODULES/SVDRP.pm:744 msgid "Unknown" msgstr "Unbekannt" @@ -1526,82 +1526,82 @@ msgid "Next page" msgstr "Nächste Seite" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:1008 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:1004 msgid "Autotimer saved!" msgstr "Autotimer gespeichert!" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:1027 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:1024 msgid "No autotimer defined for deletion! Please use adelete 'aid'!" msgstr "Kein Autotimer zum Löschen definiert! Bitte verwende adelete 'aid'" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:1036 ../lib/XXV/MODULES/AUTOTIMER.pm:1065 ../lib/XXV/MODULES/AUTOTIMER.pm:1074 ../lib/XXV/MODULES/AUTOTIMER.pm:614 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:1033 ../lib/XXV/MODULES/AUTOTIMER.pm:1063 ../lib/XXV/MODULES/AUTOTIMER.pm:1072 ../lib/XXV/MODULES/AUTOTIMER.pm:610 msgid "Autotimer '%s' does not exist in the database!" msgstr "Autotimer '%s' existiert nicht in der Datenbank!" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:1040 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:1037 msgid "Autotimer %s deleted." msgstr "Autotimer %s wurde gelöscht." #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:1057 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:1055 msgid "No autotimer defined to toggle! Please use atoggle 'aid'!" msgstr "Kein Autotimer zum Umschalten definiert! Bitte verwende atoggle 'aid'" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:1084 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:1082 msgid "Couldn't update database to toggle autotimer(%d) !" msgstr "Konnte Datenbank nicht aktualisieren, um Autotimer(%d) umzuschalten!" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:1096 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:1094 msgid "Autotimer %s is disabled." msgstr "Autotimer %s ist deaktiviert." #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:1098 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:1096 msgid "Autotimer %s is activated." msgstr "Autotimer %s ist aktiviert." #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:1143 ../lib/XXV/MODULES/SVDRP.pm:315 ../lib/XXV/MODULES/XMLTV.pm:663 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:1142 ../lib/XXV/MODULES/SVDRP.pm:321 ../lib/XXV/MODULES/XMLTV.pm:691 msgid "Active" msgstr "Aktiv" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:1146 ../lib/XXV/MODULES/RECORDS.pm:1649 ../lib/XXV/MODULES/RECORDS.pm:1784 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:1145 ../lib/XXV/MODULES/RECORDS.pm:1659 ../lib/XXV/MODULES/RECORDS.pm:1796 msgid "Start time" msgstr "Startzeit" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:1147 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:1146 msgid "Stop time" msgstr "Stoppzeit" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:1148 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:1147 msgid "Directory" msgstr "Verzeichnis" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:1149 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:1148 msgid "Minimum length" msgstr "Minimale Länge" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:1226 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:1225 msgid "Unknown channel : %s" msgstr "Unbekannter Kanal : %s" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:138 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:132 msgid "Autotimer '%s' found: %s" msgstr "Autotimer '%s' hat gefunden: %s" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:163 ../lib/XXV/MODULES/CHRONICLE.pm:176 ../lib/XXV/MODULES/CHRONICLE.pm:256 ../lib/XXV/MODULES/EPG.pm:688 ../lib/XXV/MODULES/EPG.pm:813 ../lib/XXV/MODULES/SHARE.pm:356 ../lib/XXV/MODULES/TIMERS.pm:1203 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:156 ../lib/XXV/MODULES/CHRONICLE.pm:177 ../lib/XXV/MODULES/CHRONICLE.pm:258 ../lib/XXV/MODULES/EPG.pm:698 ../lib/XXV/MODULES/EPG.pm:824 ../lib/XXV/MODULES/SHARE.pm:357 ../lib/XXV/MODULES/TIMERS.pm:1255 msgid "Day" msgstr "Datum" @@ -1611,12 +1611,12 @@ msgid "This module searches for EPG entries with user-defined text and creates n msgstr "Diese Modul sucht nach EPG Einträgen mit nutzerdefinierten Texten und erzeugt neue Timer." #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:208 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:201 msgid "Autotimer has programmed %d new timer(s) since last report to %s" msgstr "Autotimer hat %d neuen Timer programmiert, seit letztem Report an %s" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:27 ../lib/XXV/MODULES/CHRONICLE.pm:24 ../lib/XXV/MODULES/EVENTS.pm:30 ../lib/XXV/MODULES/HTTPD.pm:59 ../lib/XXV/MODULES/INTERFACE.pm:29 ../lib/XXV/MODULES/KEYWORDS.pm:25 ../lib/XXV/MODULES/LOGREAD.pm:28 ../lib/XXV/MODULES/MEDIALIB.pm:29 ../lib/XXV/MODULES/MOVETIMER.pm:23 ../lib/XXV/MODULES/MUSIC.pm:36 ../lib/XXV/MODULES/REMOTE.pm:25 ../lib/XXV/MODULES/REPORT.pm:26 ../lib/XXV/MODULES/ROBOT.pm:25 ../lib/XXV/MODULES/SHARE.pm:61 ../lib/XXV/MODULES/STATUS.pm:28 ../lib/XXV/MODULES/TELNET.pm:26 ../lib/XXV/MODULES/VTX.pm:25 ../lib/XXV/MODULES/WAPD.pm:39 ../lib/XXV/MODULES/XMLTV.pm:29 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:66 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:30 ../lib/XXV/OUTPUT/NEWS/RSS.pm:30 ../lib/XXV/OUTPUT/NEWS/VDR.pm:27 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:27 ../lib/XXV/MODULES/CHRONICLE.pm:24 ../lib/XXV/MODULES/EVENTS.pm:30 ../lib/XXV/MODULES/HTTPD.pm:59 ../lib/XXV/MODULES/INTERFACE.pm:29 ../lib/XXV/MODULES/KEYWORDS.pm:25 ../lib/XXV/MODULES/LOGREAD.pm:28 ../lib/XXV/MODULES/MEDIALIB.pm:29 ../lib/XXV/MODULES/MOVETIMER.pm:23 ../lib/XXV/MODULES/MUSIC.pm:36 ../lib/XXV/MODULES/REMOTE.pm:25 ../lib/XXV/MODULES/REPORT.pm:26 ../lib/XXV/MODULES/ROBOT.pm:26 ../lib/XXV/MODULES/SHARE.pm:61 ../lib/XXV/MODULES/STATUS.pm:28 ../lib/XXV/MODULES/TELNET.pm:26 ../lib/XXV/MODULES/VTX.pm:25 ../lib/XXV/MODULES/WAPD.pm:39 ../lib/XXV/MODULES/XMLTV.pm:29 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:66 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:30 ../lib/XXV/OUTPUT/NEWS/RSS.pm:30 ../lib/XXV/OUTPUT/NEWS/VDR.pm:27 msgid "Activate this service" msgstr "Aktiviere diesen Dienst" @@ -1626,127 +1626,127 @@ msgid "Exclude channels from autotimer" msgstr "Schliesse Kanäle von Autotimer aus." #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:337 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:331 msgid "Searching for autotimer ..." msgstr "Schaue nach Autotimer ..." #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:347 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:341 msgid "Autotimer process created %d timers and modified %d timers." msgstr "Autotimervorgang hat %d Timer erzeugt und %d Timer modifiziert." #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:351 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:345 msgid "Back to autotimer listing." msgstr "Zurück zur Autotimer Liste" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:419 ../lib/XXV/MODULES/AUTOTIMER.pm:424 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:413 ../lib/XXV/MODULES/AUTOTIMER.pm:418 msgid "Search for autotimer '%s'" msgstr "Schaue nach Autotimer '%s'" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:432 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:426 msgid "Found %d entries for '%s' in EPG database." msgstr "%d Einträge für '%s' in EPG Datenbank gefunden." #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:48 -msgid "Display status of autotimers." -msgstr "Status der Autotimer anzeigen." - -#-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:532 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:526 msgid "Could not save timer for '%s' : %s" msgstr "Konnte Timer für '%s' nicht speichern : %s" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:537 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:531 msgid "Modified timer for '%s'." msgstr "Timer für '%s' modifiziert." #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:541 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:535 msgid "Timer for '%s' has been created." msgstr "Timer für '%s' erzeugt." #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:549 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:543 msgid "Created %d timer for '%s'." msgstr "%d Timer für '%s' erzeugt. " #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:558 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:55 +msgid "Delete a autotimer 'aid'" +msgstr "Löschen eines Autotimer 'aid'" + +#-------------------- +#: ../lib/XXV/MODULES/AUTOTIMER.pm:552 msgid "Modified %d timer for '%s'." msgstr "%d Timer für '%s' modifiziert." #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:573 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:567 msgid "Read new timers into database." msgstr "Lese neue Timer in Datenbank." #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:61 -msgid "Delete a autotimer 'aid'" -msgstr "Löschen eines Autotimer 'aid'" +#: ../lib/XXV/MODULES/AUTOTIMER.pm:62 +msgid "Edit an autotimer 'aid'" +msgstr "Editieren eines Autotimer 'aid'" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:636 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:632 msgid "Mon" msgstr "Mo" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:637 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:633 msgid "Tue" msgstr "Di" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:638 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:634 msgid "Wed" msgstr "Mi" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:639 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:635 msgid "Thu" msgstr "Do" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:640 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:636 msgid "Fri" msgstr "Fr" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:641 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:637 msgid "Sat" msgstr "Sa" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:642 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:638 msgid "Sun" msgstr "So" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:652 ../wml/tlist.tmpl:26 ../wml/tlist.tmpl:67 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:648 ../wml/tlist.tmpl:26 ../wml/tlist.tmpl:67 msgid "Timer" msgstr "Timer" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:653 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:649 msgid "Existing recording" msgstr "Vorhandene Aufnahme" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:654 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:650 msgid "Recording chronicle" msgstr "Aufnahmechronik" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:671 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:667 msgid "Activate this autotimer" msgstr "Aktiviere diesen Autotimer" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:675 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:671 msgid "" "Search terms to search for EPG entries.\n" "You can also fine tune your search :\n" @@ -1761,162 +1761,157 @@ msgstr "" "* durch ein Minuszeichen zum Ausschliessen von Suchbegriffen z.B. 'Heute,-Morgen'" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:68 -msgid "Edit an autotimer 'aid'" -msgstr "Editieren eines Autotimer 'aid'" - -#-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:683 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:679 msgid "Search in this EPG fields" msgstr "Suche in diesen EPG-Feldern" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:704 ../lib/XXV/MODULES/AUTOTIMER.pm:754 ../lib/XXV/MODULES/AUTOTIMER.pm:831 ../lib/XXV/MODULES/USER.pm:401 ../lib/XXV/MODULES/USER.pm:408 ../lib/XXV/MODULES/USER.pm:424 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:69 +msgid "Search for autotimer with text 'aid'" +msgstr "Suche nach Autotimer mit Text 'aid'" + +#-------------------- +#: ../lib/XXV/MODULES/AUTOTIMER.pm:700 ../lib/XXV/MODULES/AUTOTIMER.pm:750 ../lib/XXV/MODULES/AUTOTIMER.pm:827 ../lib/XXV/MODULES/USER.pm:466 ../lib/XXV/MODULES/USER.pm:473 ../lib/XXV/MODULES/USER.pm:489 msgid "You can choose: %s!" msgstr "Sie können wählen: %s!" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:719 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:715 msgid "Limit search to these channels" msgstr "Begrenze Suche auf diese Kanäle" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:727 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:723 msgid "The channel '%s' does not exist!" msgstr "Der Kanal '%s' existiert nicht!" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:734 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:730 msgid "Ignore retries with same title?" msgstr "Ignoriere Wiederholungen mit gleichen Titel?" #-------------------- #: ../lib/XXV/MODULES/AUTOTIMER.pm:75 -msgid "Search for autotimer with text 'aid'" -msgstr "Suche nach Autotimer mit Text 'aid'" +msgid "Show autotimer 'aid'" +msgstr "Zeige Autotimer 'aid'" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:770 ../lib/XXV/MODULES/TIMERS.pm:652 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:766 ../lib/XXV/MODULES/TIMERS.pm:697 msgid "Start time in format 'HH:MM'" msgstr "Startzeit im Format 'HH:MM'" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:773 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:769 msgid "You set a start time without an end time!" msgstr "Startzeitpunkt ohne Stoppzeitpunkt definiert!" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:777 ../lib/XXV/MODULES/AUTOTIMER.pm:783 ../lib/XXV/MODULES/AUTOTIMER.pm:800 ../lib/XXV/MODULES/AUTOTIMER.pm:806 ../lib/XXV/MODULES/TIMERS.pm:656 ../lib/XXV/MODULES/TIMERS.pm:662 ../lib/XXV/MODULES/TIMERS.pm:675 ../lib/XXV/MODULES/TIMERS.pm:681 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:773 ../lib/XXV/MODULES/AUTOTIMER.pm:779 ../lib/XXV/MODULES/AUTOTIMER.pm:796 ../lib/XXV/MODULES/AUTOTIMER.pm:802 ../lib/XXV/MODULES/TIMERS.pm:701 ../lib/XXV/MODULES/TIMERS.pm:707 ../lib/XXV/MODULES/TIMERS.pm:720 ../lib/XXV/MODULES/TIMERS.pm:726 msgid "The time is incorrect!" msgstr "Die Zeit ist nicht korrekt!" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:793 ../lib/XXV/MODULES/TIMERS.pm:671 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:789 ../lib/XXV/MODULES/TIMERS.pm:716 msgid "End time in format 'HH:MM'" msgstr "Endzeit im Format 'HH:MM'" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:796 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:792 msgid "You set an end time without a start time!" msgstr "Stoppzeitpunkt ohne Startzeitpunkt definiert!" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:81 -msgid "Show autotimer 'aid'" -msgstr "Zeige Autotimer 'aid'" - -#-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:811 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:807 msgid "Only search these weekdays" msgstr "Suche nur an diesen Wochentagen" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:844 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:81 +msgid "Start autotimer search." +msgstr "Autotimersuche durchführen" + +#-------------------- +#: ../lib/XXV/MODULES/AUTOTIMER.pm:840 msgid "Use PDC time to control created timer" msgstr "Verwende VPS zum Überwachen neuer Timer" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:848 ../lib/XXV/MODULES/TIMERS.pm:32 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:844 ../lib/XXV/MODULES/TIMERS.pm:40 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:856 ../lib/XXV/MODULES/AUTOTIMER.pm:870 ../lib/XXV/MODULES/AUTOTIMER.pm:883 ../lib/XXV/MODULES/AUTOTIMER.pm:899 ../lib/XXV/MODULES/AUTOTIMER.pm:915 ../lib/XXV/MODULES/CHANNELS.pm:1082 ../lib/XXV/MODULES/CHANNELS.pm:1113 ../lib/XXV/MODULES/CHANNELS.pm:1152 ../lib/XXV/MODULES/CHANNELS.pm:1165 ../lib/XXV/MODULES/CHANNELS.pm:1191 ../lib/XXV/MODULES/CHANNELS.pm:1217 ../lib/XXV/MODULES/CHANNELS.pm:1230 ../lib/XXV/MODULES/CHANNELS.pm:1243 ../lib/XXV/MODULES/CHANNELS.pm:1256 ../lib/XXV/MODULES/GRAB.pm:104 ../lib/XXV/MODULES/GRAB.pm:232 ../lib/XXV/MODULES/GRAB.pm:240 ../lib/XXV/MODULES/GRAB.pm:35 ../lib/XXV/MODULES/GRAB.pm:49 ../lib/XXV/MODULES/GRAB.pm:72 ../lib/XXV/MODULES/GRAB.pm:91 ../lib/XXV/MODULES/RECORDS.pm:109 ../lib/XXV/MODULES/RECORDS.pm:2081 ../lib/XXV/MODULES/RECORDS.pm:2095 ../lib/XXV/MODULES/STREAM.pm:100 ../lib/XXV/MODULES/STREAM.pm:114 ../lib/XXV/MODULES/SVDRP.pm:228 ../lib/XXV/MODULES/TIMERS.pm:697 ../lib/XXV/MODULES/TIMERS.pm:713 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:852 ../lib/XXV/MODULES/AUTOTIMER.pm:866 ../lib/XXV/MODULES/AUTOTIMER.pm:879 ../lib/XXV/MODULES/AUTOTIMER.pm:895 ../lib/XXV/MODULES/AUTOTIMER.pm:911 ../lib/XXV/MODULES/CHANNELS.pm:1085 ../lib/XXV/MODULES/CHANNELS.pm:1116 ../lib/XXV/MODULES/CHANNELS.pm:1155 ../lib/XXV/MODULES/CHANNELS.pm:1168 ../lib/XXV/MODULES/CHANNELS.pm:1194 ../lib/XXV/MODULES/CHANNELS.pm:1220 ../lib/XXV/MODULES/CHANNELS.pm:1233 ../lib/XXV/MODULES/CHANNELS.pm:1246 ../lib/XXV/MODULES/CHANNELS.pm:1259 ../lib/XXV/MODULES/GRAB.pm:105 ../lib/XXV/MODULES/GRAB.pm:249 ../lib/XXV/MODULES/GRAB.pm:257 ../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:109 ../lib/XXV/MODULES/RECORDS.pm:2095 ../lib/XXV/MODULES/RECORDS.pm:2109 ../lib/XXV/MODULES/STREAM.pm:100 ../lib/XXV/MODULES/STREAM.pm:114 ../lib/XXV/MODULES/SVDRP.pm:231 ../lib/XXV/MODULES/TIMERS.pm:35 ../lib/XXV/MODULES/TIMERS.pm:48 ../lib/XXV/MODULES/TIMERS.pm:62 ../lib/XXV/MODULES/TIMERS.pm:742 ../lib/XXV/MODULES/TIMERS.pm:758 ../lib/XXV/MODULES/TIMERS.pm:76 ../lib/XXV/MODULES/TIMERS.pm:89 msgid "Value incorrect!" msgstr "Der Wert ist nicht korrekt!" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:862 ../lib/XXV/MODULES/TIMERS.pm:37 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:858 ../lib/XXV/MODULES/TIMERS.pm:54 msgid "Buffer time in minutes past the scheduled end of a recording" msgstr "Pufferzeit in Minuten, nach dem zeitlichen Ende der Aufnahme." #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:87 -msgid "Start autotimer search." -msgstr "Autotimersuche durchführen" - -#-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:876 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:872 msgid "Minimum play time in minutes" msgstr "Mindestlänge in Minuten" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:889 ../lib/XXV/MODULES/RECORDS.pm:2088 ../lib/XXV/MODULES/TIMERS.pm:687 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:88 +msgid "Toggle autotimer on or off 'aid'" +msgstr "Umschalten der Autotimer zwischen Ein und Aus 'aid'" + +#-------------------- +#: ../lib/XXV/MODULES/AUTOTIMER.pm:885 ../lib/XXV/MODULES/RECORDS.pm:2102 ../lib/XXV/MODULES/TIMERS.pm:732 msgid "Priority (%d ... %d)" msgstr "Priorität (%d ... %d)" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:895 ../lib/XXV/MODULES/TIMERS.pm:693 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:891 ../lib/XXV/MODULES/TIMERS.pm:738 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:905 ../lib/XXV/MODULES/RECORDS.pm:2074 ../lib/XXV/MODULES/TIMERS.pm:703 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:901 ../lib/XXV/MODULES/RECORDS.pm:2088 ../lib/XXV/MODULES/TIMERS.pm:748 msgid "Lifetime (%d ... %d)" msgstr "Lebenszeit (%d ... %d)" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:911 ../lib/XXV/MODULES/TIMERS.pm:709 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:907 ../lib/XXV/MODULES/TIMERS.pm:754 msgid "Sorry, but the maximum life time is limited to %d!" msgstr "Entschuldigung, aber die maximale Lebenszeit ist auf %d begrenzt!" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:921 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:917 msgid "Group all recordings into one directory" msgstr "Gruppiere alle Aufnahmen in einem Verzeichnis" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:934 ../lib/XXV/MODULES/AUTOTIMER.pm:967 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:930 ../lib/XXV/MODULES/AUTOTIMER.pm:963 msgid "%Y-%m-%d %H:%M:%S" msgstr "%d.%m.%Y %H:%M:%S" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:94 -msgid "Toggle autotimer on or off 'aid'" -msgstr "Umschalten der Autotimer zwischen Ein und Aus 'aid'" - -#-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:940 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:936 msgid "Start date as YYYY-MM-DD HH:MM:SS." msgstr "Startdatum als DD.MM.YYYY HH:MM:SS." #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:947 ../lib/XXV/MODULES/AUTOTIMER.pm:979 ../lib/XXV/MODULES/TIMERS.pm:629 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:943 ../lib/XXV/MODULES/AUTOTIMER.pm:975 ../lib/XXV/MODULES/TIMERS.pm:674 msgid "Language=English" msgstr "Language=German,DateFormat=non-US" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:954 ../lib/XXV/MODULES/AUTOTIMER.pm:986 ../lib/XXV/MODULES/TIMERS.pm:643 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:950 ../lib/XXV/MODULES/AUTOTIMER.pm:982 ../lib/XXV/MODULES/TIMERS.pm:688 msgid "The day is incorrect or was in a wrong format!" msgstr "Das eingegebene Datum ist nicht korrekt oder hatte ein falsches Format!" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:973 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:969 msgid "Stop date as YYYY-MM-DD HH:MM:SS." msgstr "Enddatum als DD.MM.YYYY HH:MM:SS." #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:992 ../lib/XXV/MODULES/TIMERS.pm:720 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:988 ../lib/XXV/MODULES/TIMERS.pm:765 msgid "Add keywords to recording" msgstr "Stichwörter zur Aufnahme hinzufügen" @@ -1926,92 +1921,92 @@ msgid "Deletes one or more channels 'pos'" msgstr "Löscht einen oder mehrere Kanäle 'pos'" #-------------------- -#: ../lib/XXV/MODULES/CHANNELS.pm:1047 ../lib/XXV/MODULES/CHANNELS.pm:1052 ../lib/XXV/MODULES/CHANNELS.pm:1396 ../lib/XXV/MODULES/REMOTE.pm:272 ../lib/XXV/MODULES/REMOTE.pm:277 +#: ../lib/XXV/MODULES/CHANNELS.pm:1050 ../lib/XXV/MODULES/CHANNELS.pm:1055 ../lib/XXV/MODULES/CHANNELS.pm:1400 ../lib/XXV/MODULES/REMOTE.pm:277 ../lib/XXV/MODULES/REMOTE.pm:282 msgid "Channel '%s' does not exist in the database!" msgstr "Der Kanal '%s' existiert nicht in der Datenbank!" #-------------------- -#: ../lib/XXV/MODULES/CHANNELS.pm:1068 +#: ../lib/XXV/MODULES/CHANNELS.pm:1071 msgid "Which video disk recorder should used" msgstr "Welcher Video Disk Rekorder soll genutzt werden" #-------------------- -#: ../lib/XXV/MODULES/CHANNELS.pm:1075 ../lib/XXV/MODULES/CHANNELS.pm:1365 ../lib/XXV/MODULES/CHANNELS.pm:615 +#: ../lib/XXV/MODULES/CHANNELS.pm:1078 ../lib/XXV/MODULES/CHANNELS.pm:1369 ../lib/XXV/MODULES/CHANNELS.pm:616 msgid "Position" msgstr "Position" #-------------------- -#: ../lib/XXV/MODULES/CHANNELS.pm:1093 ../lib/XXV/MODULES/CHANNELS.pm:1265 +#: ../lib/XXV/MODULES/CHANNELS.pm:1096 ../lib/XXV/MODULES/CHANNELS.pm:1268 msgid "New channel" msgstr "Neuer Kanal" #-------------------- -#: ../lib/XXV/MODULES/CHANNELS.pm:1120 ../lib/XXV/MODULES/CHANNELS.pm:604 +#: ../lib/XXV/MODULES/CHANNELS.pm:1123 ../lib/XXV/MODULES/CHANNELS.pm:605 msgid "Signal source" msgstr "Signalquelle" #-------------------- -#: ../lib/XXV/MODULES/CHANNELS.pm:1145 ../lib/XXV/MODULES/CHANNELS.pm:605 +#: ../lib/XXV/MODULES/CHANNELS.pm:1148 ../lib/XXV/MODULES/CHANNELS.pm:606 msgid "Symbol rate" msgstr "Symbolrate" #-------------------- -#: ../lib/XXV/MODULES/CHANNELS.pm:1210 +#: ../lib/XXV/MODULES/CHANNELS.pm:1213 msgid "Service ID (SID)" msgstr "Service ID (SID)" #-------------------- -#: ../lib/XXV/MODULES/CHANNELS.pm:1223 +#: ../lib/XXV/MODULES/CHANNELS.pm:1226 msgid "Network ID (NID)" msgstr "Netzwerk ID (NID)" #-------------------- -#: ../lib/XXV/MODULES/CHANNELS.pm:1236 +#: ../lib/XXV/MODULES/CHANNELS.pm:1239 msgid "Transport stream ID (TID)" msgstr "Transport stream ID (TID)" #-------------------- -#: ../lib/XXV/MODULES/CHANNELS.pm:1249 +#: ../lib/XXV/MODULES/CHANNELS.pm:1252 msgid "Radio ID (RID)" msgstr "Radio ID (RID)" #-------------------- -#: ../lib/XXV/MODULES/CHANNELS.pm:129 +#: ../lib/XXV/MODULES/CHANNELS.pm:128 msgid "The system has saved %d channels from %d groups" msgstr "Das System hat %d Kanäle aus %d Gruppen gespeichert" #-------------------- -#: ../lib/XXV/MODULES/CHANNELS.pm:1340 +#: ../lib/XXV/MODULES/CHANNELS.pm:1344 msgid "No channel defined for deletion! Please use cdelete 'pos'!" msgstr "Kanal zu löschen definiert! Bitte verwende cdelete 'pos'" #-------------------- -#: ../lib/XXV/MODULES/CHANNELS.pm:1412 +#: ../lib/XXV/MODULES/CHANNELS.pm:1416 msgid "Found no channel to delete!" msgstr "Kein Kanal zum Löschen gefunden!" #-------------------- -#: ../lib/XXV/MODULES/CHANNELS.pm:1427 +#: ../lib/XXV/MODULES/CHANNELS.pm:1431 msgid "New %s channel: %s on position: %d %s" msgstr "Neuer %s Kanal: %s auf Position: %d %s" #-------------------- -#: ../lib/XXV/MODULES/CHANNELS.pm:1429 +#: ../lib/XXV/MODULES/CHANNELS.pm:1433 msgid "TV" msgstr "TV" #-------------------- -#: ../lib/XXV/MODULES/CHANNELS.pm:1430 +#: ../lib/XXV/MODULES/CHANNELS.pm:1434 msgid "Radio" msgstr "Radio" #-------------------- -#: ../lib/XXV/MODULES/CHANNELS.pm:1433 +#: ../lib/XXV/MODULES/CHANNELS.pm:1437 msgid "(encrypted)" msgstr "(verschlüsselt)" #-------------------- -#: ../lib/XXV/MODULES/CHANNELS.pm:1440 +#: ../lib/XXV/MODULES/CHANNELS.pm:1444 msgid "Found %d new channels!" msgstr "%d neue Kanäle gefunden!" @@ -2056,52 +2051,52 @@ msgid "There are %d channels inserted, %d channels updated, %d channels deleted msgstr "Es wurden %d Kanäle hinzugefügt, %d Kanäle aktualisiert und %d Kanäle in der Datenbank gelöscht." #-------------------- -#: ../lib/XXV/MODULES/CHANNELS.pm:603 +#: ../lib/XXV/MODULES/CHANNELS.pm:604 msgid "Parameters" msgstr "Parameter" #-------------------- -#: ../lib/XXV/MODULES/CHANNELS.pm:606 +#: ../lib/XXV/MODULES/CHANNELS.pm:607 msgid "Video PID" msgstr "Video PID" #-------------------- -#: ../lib/XXV/MODULES/CHANNELS.pm:607 +#: ../lib/XXV/MODULES/CHANNELS.pm:608 msgid "Audio PID" msgstr "Audio PID" #-------------------- -#: ../lib/XXV/MODULES/CHANNELS.pm:608 +#: ../lib/XXV/MODULES/CHANNELS.pm:609 msgid "Teletext PID" msgstr "Videotext PID" #-------------------- -#: ../lib/XXV/MODULES/CHANNELS.pm:609 +#: ../lib/XXV/MODULES/CHANNELS.pm:610 msgid "Conditional access" msgstr "Zugangsberechtigungssystem" #-------------------- -#: ../lib/XXV/MODULES/CHANNELS.pm:610 +#: ../lib/XXV/MODULES/CHANNELS.pm:611 msgid "SID" msgstr "SID" #-------------------- -#: ../lib/XXV/MODULES/CHANNELS.pm:611 +#: ../lib/XXV/MODULES/CHANNELS.pm:612 msgid "TID" msgstr "TID" #-------------------- -#: ../lib/XXV/MODULES/CHANNELS.pm:612 +#: ../lib/XXV/MODULES/CHANNELS.pm:613 msgid "NID" msgstr "NID" #-------------------- -#: ../lib/XXV/MODULES/CHANNELS.pm:613 +#: ../lib/XXV/MODULES/CHANNELS.pm:614 msgid "RID" msgstr "RID" #-------------------- -#: ../lib/XXV/MODULES/CHANNELS.pm:614 +#: ../lib/XXV/MODULES/CHANNELS.pm:615 msgid "Channel group" msgstr "Kanalgruppe" @@ -2131,9 +2126,9 @@ msgid "This module saves recordings in a chronicle." msgstr "Dieses Modul speichert Aufnahmen in einer Chronik." #-------------------- -#: ../lib/XXV/MODULES/CHRONICLE.pm:247 -msgid "No 'string' to search for! Please use chrsearch 'text'." -msgstr "Kein 'Text' zum Suchen! Bitte verwende chrsearch 'text'" +#: ../lib/XXV/MODULES/CHRONICLE.pm:249 +msgid "No 'string' to search defined! Please use chrsearch 'text'." +msgstr "Kein 'Text' zum Suchen definiert! Bitte verwende chrsearch 'text'" #-------------------- #: ../lib/XXV/MODULES/CHRONICLE.pm:32 @@ -2141,12 +2136,12 @@ msgid "List recording chronicle" msgstr "Zeige Aufnahmechronik" #-------------------- -#: ../lib/XXV/MODULES/CHRONICLE.pm:329 +#: ../lib/XXV/MODULES/CHRONICLE.pm:332 msgid "No ID to delete! Please use chrdelete 'id'" msgstr "Kein ID zum Löschen! Bitte verwende chrdelete 'id'" #-------------------- -#: ../lib/XXV/MODULES/CHRONICLE.pm:338 +#: ../lib/XXV/MODULES/CHRONICLE.pm:341 msgid "Chronicle entry %s deleted." msgstr "Eintrag %s in der Chronik gelöscht." @@ -2161,52 +2156,52 @@ msgid "Delete within chronicle with 'ID'" msgstr "Lösche in der Chronik mit 'ID'" #-------------------- -#: ../lib/XXV/MODULES/CONFIG.pm:109 -msgid "Settings for XXV" -msgstr "Einstellungen für XXV" +#: ../lib/XXV/MODULES/CONFIG.pm:110 +msgid "Global settings" +msgstr "Allgemeine Einstellungen" #-------------------- -#: ../lib/XXV/MODULES/CONFIG.pm:142 ../lib/XXV/MODULES/CONFIG.pm:216 +#: ../lib/XXV/MODULES/CONFIG.pm:144 ../lib/XXV/MODULES/CONFIG.pm:219 msgid "Sorry, but section %s does not exist in the configuration!" msgstr "Verzeihung, aber der Abschnitt %s existiert nicht in der Konfiguration!" #-------------------- -#: ../lib/XXV/MODULES/CONFIG.pm:147 +#: ../lib/XXV/MODULES/CONFIG.pm:149 msgid "Sorry, but the settings in module: %s do not exist!" msgstr "Verzeihung, aber die Einstellungen in Modul: %s existieren nicht!" #-------------------- -#: ../lib/XXV/MODULES/CONFIG.pm:158 +#: ../lib/XXV/MODULES/CONFIG.pm:160 msgid "No description" msgstr "Keine Beschreibung" #-------------------- -#: ../lib/XXV/MODULES/CONFIG.pm:168 -msgid "%s manual" -msgstr "%s Dokumentation" - -#-------------------- #: ../lib/XXV/MODULES/CONFIG.pm:17 msgid "This module edits, writes and saves the configuration." msgstr "Dieses Modul bearbeitet, schreibt und übernimmt die Konfiguration." #-------------------- -#: ../lib/XXV/MODULES/CONFIG.pm:171 +#: ../lib/XXV/MODULES/CONFIG.pm:170 +msgid "%s manual" +msgstr "%s Dokumentation" + +#-------------------- +#: ../lib/XXV/MODULES/CONFIG.pm:173 msgid "Edit configuration %s" msgstr "Konfiguration %s bearbeiten" #-------------------- -#: ../lib/XXV/MODULES/CONFIG.pm:175 +#: ../lib/XXV/MODULES/CONFIG.pm:177 msgid "Section: '%s' saving ... please wait." msgstr "Abschnitt: '%s' speichere .. bitte warten." #-------------------- -#: ../lib/XXV/MODULES/CONFIG.pm:198 +#: ../lib/XXV/MODULES/CONFIG.pm:200 msgid "Configuration written to '%s'." msgstr "Konfiguration nach '%s' geschrieben." #-------------------- -#: ../lib/XXV/MODULES/CONFIG.pm:209 +#: ../lib/XXV/MODULES/CONFIG.pm:212 msgid "Need a name of the module to display the configuration!" msgstr "Ich benötige einen Namen des Moduls um die Konfiguration anzuzeigen!" @@ -2216,12 +2211,12 @@ msgid "Edit configuration 'section'" msgstr "Konfiguration bearbeiten 'Abschnitt'" #-------------------- -#: ../lib/XXV/MODULES/CONFIG.pm:260 +#: ../lib/XXV/MODULES/CONFIG.pm:263 msgid "Couldn't find %s in %s!" msgstr "Bearbeiten war erfolgreich" #-------------------- -#: ../lib/XXV/MODULES/CONFIG.pm:267 +#: ../lib/XXV/MODULES/CONFIG.pm:270 msgid "Edit successful!" msgstr "Bearbeiten war erfolgreich!" @@ -2231,7 +2226,7 @@ msgid "Get configuration from 'modname'" msgstr "Hole die Konfiguration von 'modname'" #-------------------- -#: ../lib/XXV/MODULES/CONFIG.pm:309 +#: ../lib/XXV/MODULES/CONFIG.pm:313 msgid "" "%sThis is the xxv %s server.\n" "Please use the following commands:\n" @@ -2260,117 +2255,122 @@ msgid "There none module reloaded." msgstr "Es wurden keine Module neugeladen." #-------------------- -#: ../lib/XXV/MODULES/EPG.pm:1321 ../lib/XXV/MODULES/VTX.pm:1390 +#: ../lib/XXV/MODULES/EPG.pm:1335 ../lib/XXV/MODULES/VTX.pm:1394 msgid "No channel defined!" msgstr "Kein Kanal definiert!" #-------------------- -#: ../lib/XXV/MODULES/EPG.pm:151 +#: ../lib/XXV/MODULES/EPG.pm:1548 +msgid "No event id defined!" +msgstr "Keine ID zum Event definiert!" + +#-------------------- +#: ../lib/XXV/MODULES/EPG.pm:159 msgid "EPG table contains %d entries and since the last login on %s %d new entries." msgstr "Die EPG Tabelle enthält %d Einträge und seit dem letzten Anmeldung am %s, %d neue Einträge" #-------------------- -#: ../lib/XXV/MODULES/EPG.pm:1532 -msgid "No event id defined!" -msgstr "Keine ID zum Event definiert!" +#: ../lib/XXV/MODULES/EPG.pm:1700 ../lib/XXV/MODULES/GRAB.pm:241 ../lib/XXV/MODULES/RECORDS.pm:2794 ../lib/XXV/MODULES/VTX.pm:1457 +msgid "Sorry, get image is'nt supported" +msgstr "Entschuldigung, Bilder werden nicht unterstützt!" #-------------------- -#: ../lib/XXV/MODULES/EPG.pm:17 +#: ../lib/XXV/MODULES/EPG.pm:18 msgid "This module reads new EPG data and saves it to the database." msgstr "Dieses Modul liest neue EPG-Daten und speichert sie in der Datenbank." #-------------------- -#: ../lib/XXV/MODULES/EPG.pm:25 +#: ../lib/XXV/MODULES/EPG.pm:26 msgid "Location of additional EPG images." msgstr "Position von zusätzlichen EPG Bildern." #-------------------- -#: ../lib/XXV/MODULES/EPG.pm:282 +#: ../lib/XXV/MODULES/EPG.pm:291 msgid "Read EPG data ..." msgstr "Lese EPG Daten" #-------------------- -#: ../lib/XXV/MODULES/EPG.pm:30 +#: ../lib/XXV/MODULES/EPG.pm:31 msgid "How often EPG data are to be analyzed (in seconds)" msgstr "Wie oft sollen EPG Daten analysiert werden (in Sekunden)" #-------------------- -#: ../lib/XXV/MODULES/EPG.pm:318 +#: ../lib/XXV/MODULES/EPG.pm:327 msgid "%d events in database updated." msgstr "Es wurden %d Einträge in Datenbank aktualisiert." #-------------------- -#: ../lib/XXV/MODULES/EPG.pm:36 +#: ../lib/XXV/MODULES/EPG.pm:37 msgid "Preferred program times. (eg. 12:00, 18:00)" msgstr "Die bevorzugten Programmzeiten (Kommagetrenne Liste)" #-------------------- -#: ../lib/XXV/MODULES/EPG.pm:409 +#: ../lib/XXV/MODULES/EPG.pm:418 msgid "Analyze channel '%s'" msgstr "Untersuche Kanal '%s'" #-------------------- -#: ../lib/XXV/MODULES/EPG.pm:42 +#: ../lib/XXV/MODULES/EPG.pm:44 msgid "How much hours to display in schema" msgstr "Wieviel im Schema anzuzeigen Stunden" #-------------------- -#: ../lib/XXV/MODULES/EPG.pm:50 +#: ../lib/XXV/MODULES/EPG.pm:53 msgid "Search within EPG data" msgstr "Suche in EPG-Daten" #-------------------- -#: ../lib/XXV/MODULES/EPG.pm:55 -msgid "List program for channel 'channel name'" -msgstr "Zeige Programm für Kanal 'Kanalname'" - -#-------------------- -#: ../lib/XXV/MODULES/EPG.pm:566 +#: ../lib/XXV/MODULES/EPG.pm:575 msgid "No title" msgstr "Kein Titel" #-------------------- -#: ../lib/XXV/MODULES/EPG.pm:60 +#: ../lib/XXV/MODULES/EPG.pm:58 +msgid "List program for channel 'channel name'" +msgstr "Zeige Programm für Kanal 'Kanalname'" + +#-------------------- +#: ../lib/XXV/MODULES/EPG.pm:63 msgid "Show program 'eventid'" msgstr "Zeige Sendung 'eventid'" #-------------------- -#: ../lib/XXV/MODULES/EPG.pm:65 +#: ../lib/XXV/MODULES/EPG.pm:68 msgid "Display events currently showing." msgstr "Zeigt Sendungen, welche aktuell laufen." #-------------------- -#: ../lib/XXV/MODULES/EPG.pm:70 +#: ../lib/XXV/MODULES/EPG.pm:73 msgid "Display events showing next." msgstr "Zeigt Sendungen, welche als nächstes laufen." #-------------------- -#: ../lib/XXV/MODULES/EPG.pm:75 +#: ../lib/XXV/MODULES/EPG.pm:78 msgid "Display events in a schematic way" msgstr "Zeigt Sendungen in einer übersichtlichen Weise" #-------------------- -#: ../lib/XXV/MODULES/EPG.pm:790 +#: ../lib/XXV/MODULES/EPG.pm:801 msgid "No channel available!" msgstr "Keine Kanäle verfügbar!" #-------------------- -#: ../lib/XXV/MODULES/EPG.pm:80 +#: ../lib/XXV/MODULES/EPG.pm:83 msgid "Update EPG data." msgstr "Aktualisiere EPG Daten" #-------------------- -#: ../lib/XXV/MODULES/EPG.pm:912 +#: ../lib/XXV/MODULES/EPG.pm:924 msgid "No ID defined to display this program! Please use display 'eid'!" msgstr "Keine ID einer Sendung, zur Anzeige dieses Programmes, definiert! Bitte verwende display 'eid'" #-------------------- -#: ../lib/XXV/MODULES/EPG.pm:94 +#: ../lib/XXV/MODULES/EPG.pm:97 msgid "Display the current program running in the VDR" msgstr "Zeigt die Sendung, die im VDR läuft" #-------------------- -#: ../lib/XXV/MODULES/EPG.pm:979 +#: ../lib/XXV/MODULES/EPG.pm:991 msgid "Event '%d' does not exist in the database!" msgstr "Sendung '%d' existiert nicht in der Datenbank!" @@ -2395,12 +2395,12 @@ msgid "" msgstr "" #-------------------- -#: ../lib/XXV/MODULES/EVENTS.pm:347 +#: ../lib/XXV/MODULES/EVENTS.pm:348 msgid "Time" msgstr "Zeit" #-------------------- -#: ../lib/XXV/MODULES/EVENTS.pm:349 ../lib/XXV/OUTPUT/Console.pm:115 ../wml/widgets/message.tmpl:4 ../wml/widgets/message.tmpl:7 +#: ../lib/XXV/MODULES/EVENTS.pm:350 ../lib/XXV/OUTPUT/Console.pm:115 ../wml/widgets/message.tmpl:4 ../wml/widgets/message.tmpl:7 msgid "Message" msgstr "Nachricht" @@ -2410,17 +2410,17 @@ msgid "Used host of referred link inside reports." msgstr "Benutzter Host für verweisende Links innerhalb der Reporte." #-------------------- -#: ../lib/XXV/MODULES/EVENTS.pm:395 +#: ../lib/XXV/MODULES/EVENTS.pm:398 msgid "Sorry, but none type requested!" msgstr "Entschuldigung, es wurde kein Typ angefordert!" #-------------------- -#: ../lib/XXV/MODULES/EVENTS.pm:400 +#: ../lib/XXV/MODULES/EVENTS.pm:403 msgid "Sorry, but this type '%s' does not exist on this system!" msgstr "Entschuldigung, aber dieser Typ '%s' exitistiert in diesem System nicht!" #-------------------- -#: ../lib/XXV/MODULES/EVENTS.pm:404 +#: ../lib/XXV/MODULES/EVENTS.pm:407 msgid "Sorry, but this module is not active!" msgstr "Entschuldigung, aber dieses Modul ist nicht aktiv!" @@ -2430,37 +2430,37 @@ msgid "Display the actual news site 'typ'" msgstr "Zeigt die aktuelle Nachrichtenseite 'typ' an" #-------------------- -#: ../lib/XXV/MODULES/EVENTS.pm:443 +#: ../lib/XXV/MODULES/EVENTS.pm:446 msgid "All messages" msgstr "Alle Meldungen" #-------------------- -#: ../lib/XXV/MODULES/EVENTS.pm:444 ../lib/XXV/MODULES/EVENTS.pm:469 +#: ../lib/XXV/MODULES/EVENTS.pm:447 ../lib/XXV/MODULES/EVENTS.pm:472 msgid "Harmless" msgstr "Harmlos" #-------------------- -#: ../lib/XXV/MODULES/EVENTS.pm:445 +#: ../lib/XXV/MODULES/EVENTS.pm:448 msgid "Interesting" msgstr "Interessant" #-------------------- -#: ../lib/XXV/MODULES/EVENTS.pm:446 +#: ../lib/XXV/MODULES/EVENTS.pm:449 msgid "Very interesting" msgstr "Sehr interessant" #-------------------- -#: ../lib/XXV/MODULES/EVENTS.pm:447 +#: ../lib/XXV/MODULES/EVENTS.pm:450 msgid "Important" msgstr "Wichtig" #-------------------- -#: ../lib/XXV/MODULES/EVENTS.pm:448 +#: ../lib/XXV/MODULES/EVENTS.pm:451 msgid "Very important" msgstr "Sehr wichtig" #-------------------- -#: ../lib/XXV/MODULES/EVENTS.pm:449 +#: ../lib/XXV/MODULES/EVENTS.pm:452 msgid "None messages" msgstr "Keine Meldungen" @@ -2470,112 +2470,117 @@ msgid "Display the event list" msgstr "Zeigt die Liste der Ereignisse" #-------------------- -#: ../lib/XXV/MODULES/GRAB.pm:19 +#: ../lib/XXV/MODULES/GRAB.pm:20 msgid "This module grab a picture from video output." msgstr "Dieses Modul holt das Bilder des Videoausganges." #-------------------- -#: ../lib/XXV/MODULES/GRAB.pm:26 +#: ../lib/XXV/MODULES/GRAB.pm:27 msgid "Image width" msgstr "Bildbreite" #-------------------- -#: ../lib/XXV/MODULES/GRAB.pm:40 +#: ../lib/XXV/MODULES/GRAB.pm:270 +msgid "Failed" +msgstr "Fehlgeschlagen" + +#-------------------- +#: ../lib/XXV/MODULES/GRAB.pm:41 msgid "Image height" msgstr "Bildhöhe" #-------------------- -#: ../lib/XXV/MODULES/GRAB.pm:54 +#: ../lib/XXV/MODULES/GRAB.pm:55 msgid "Text to display in the grabbed picture." msgstr "Im Screenshots anzuzeigender Text." #-------------------- -#: ../lib/XXV/MODULES/GRAB.pm:64 +#: ../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:77 ../lib/XXV/MODULES/STATUS.pm:62 +#: ../lib/XXV/MODULES/GRAB.pm:78 ../lib/XXV/MODULES/STATUS.pm:56 msgid "TrueType font to draw overlay text" msgstr "TrueType Zeichensatz für Overlaytext." #-------------------- -#: ../lib/XXV/MODULES/GRAB.pm:83 +#: ../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:96 +#: ../lib/XXV/MODULES/GRAB.pm:97 msgid "Quality from image in percent." msgstr "Qualität des Bildes in Prozent." #-------------------- -#: ../lib/XXV/MODULES/HTTPD.pm:101 +#: ../lib/XXV/MODULES/HTTPD.pm:103 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." #-------------------- -#: ../lib/XXV/MODULES/HTTPD.pm:271 ../lib/XXV/MODULES/WAPD.pm:204 +#: ../lib/XXV/MODULES/HTTPD.pm:274 ../lib/XXV/MODULES/WAPD.pm:204 msgid "You are not authorized to use this system!" msgstr "Sie haben keine Berechtigungen für dieses System!" #-------------------- -#: ../lib/XXV/MODULES/HTTPD.pm:436 +#: ../lib/XXV/MODULES/HTTPD.pm:429 msgid "Module '%s' is'nt loaded!" msgstr "Modul '%s' wurde nicht geladen!" #-------------------- -#: ../lib/XXV/MODULES/HTTPD.pm:437 +#: ../lib/XXV/MODULES/HTTPD.pm:430 msgid "Internal Server Error" msgstr "Interner Serverfehler" #-------------------- +#: ../lib/XXV/MODULES/HTTPD.pm:508 +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:51 msgid "This module is a multisession HTTPD server." msgstr "Dieses Modul ist ein Mehrfachsitzung HTTPD Server." #-------------------- -#: ../lib/XXV/MODULES/HTTPD.pm:516 -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:569 ../lib/XXV/OUTPUT/Console.pm:678 ../lib/XXV/OUTPUT/Html.pm:980 +#: ../lib/XXV/MODULES/HTTPD.pm:562 ../lib/XXV/OUTPUT/Console.pm:678 ../lib/XXV/OUTPUT/Html.pm:976 msgid "Could not open file '%s'! : %s" msgstr "Konnte Datei '%s' nicht öffnen : %s" #-------------------- -#: ../lib/XXV/MODULES/HTTPD.pm:607 +#: ../lib/XXV/MODULES/HTTPD.pm:600 msgid "Directory found." msgstr "Verzeichnis gefunden." #-------------------- -#: ../lib/XXV/MODULES/HTTPD.pm:609 +#: ../lib/XXV/MODULES/HTTPD.pm:602 msgid "Directory not found." msgstr "Verzeichnis nicht gefunden." #-------------------- -#: ../lib/XXV/MODULES/HTTPD.pm:615 +#: ../lib/XXV/MODULES/HTTPD.pm:608 msgid "File found." msgstr "Datei gefunden." #-------------------- -#: ../lib/XXV/MODULES/HTTPD.pm:617 +#: ../lib/XXV/MODULES/HTTPD.pm:610 msgid "File not found." msgstr "Datei nicht gefunden." #-------------------- -#: ../lib/XXV/MODULES/HTTPD.pm:626 +#: ../lib/XXV/MODULES/HTTPD.pm:619 msgid "Host does not exist." msgstr "Host existiert nicht." #-------------------- -#: ../lib/XXV/MODULES/HTTPD.pm:631 +#: ../lib/XXV/MODULES/HTTPD.pm:624 msgid "Query : '%s' not supported." msgstr "Abfrage : '%s' nicht unterstützt." #-------------------- -#: ../lib/XXV/MODULES/HTTPD.pm:645 +#: ../lib/XXV/MODULES/HTTPD.pm:638 msgid "Schema" msgstr "Übersicht" @@ -2600,7 +2605,7 @@ msgid "Skin used" msgstr "Verwendeter Skin" #-------------------- -#: ../lib/XXV/MODULES/HTTPD.pm:90 ../lib/XXV/MODULES/WAPD.pm:70 +#: ../lib/XXV/MODULES/HTTPD.pm:91 ../lib/XXV/MODULES/WAPD.pm:70 msgid "Startup screen" msgstr "Erste Seite, die beim Anmelden zu sehen ist" @@ -2630,7 +2635,7 @@ msgid "Search recordings 'keywords'" msgstr "Sucht Aufnahmen 'Stichwort'" #-------------------- -#: ../lib/XXV/MODULES/LOGREAD.pm:151 +#: ../lib/XXV/MODULES/LOGREAD.pm:152 msgid "Could not read log file %s!" msgstr "Konnte die Log-Datei %s nicht einlesen!" @@ -2640,7 +2645,7 @@ msgid "This module reads the xxv log file and displays it on the console." msgstr "Diese Module liest die xxv-Log-Datei und zeigt sie in der Konsole." #-------------------- -#: ../lib/XXV/MODULES/LOGREAD.pm:34 ../lib/XXV/MODULES/MUSIC.pm:87 ../lib/XXV/MODULES/STATUS.pm:34 ../lib/XXV/MODULES/STATUS.pm:40 ../lib/XXV/MODULES/STATUS.pm:46 +#: ../lib/XXV/MODULES/LOGREAD.pm:34 ../lib/XXV/MODULES/MUSIC.pm:87 ../lib/XXV/MODULES/STATUS.pm:34 ../lib/XXV/MODULES/STATUS.pm:40 msgid "Path of command '%s'" msgstr "Pfad des Kommando '%s'" @@ -2650,7 +2655,7 @@ msgid "Lines to display" msgstr "Wieviel Zeilen anzeigen?" #-------------------- -#: ../lib/XXV/MODULES/LOGREAD.pm:46 ../lib/XXV/MODULES/RECORDS.pm:37 ../lib/XXV/MODULES/REMOTE.pm:37 +#: ../lib/XXV/MODULES/LOGREAD.pm:46 ../lib/XXV/MODULES/RECORDS.pm:37 ../lib/XXV/MODULES/REMOTE.pm:38 msgid "Path of file '%s'" msgstr "Pfad der Datei '%s'" @@ -2661,216 +2666,206 @@ msgstr "Zeigt die letzten Log-Einträge an" #-------------------- #: ../lib/XXV/MODULES/MEDIALIB.pm:103 -msgid "Edit media" -msgstr "Medium bearbeiten" +msgid "Delete media" +msgstr "Medium löschen" #-------------------- -#: ../lib/XXV/MODULES/MEDIALIB.pm:1041 +#: ../lib/XXV/MODULES/MEDIALIB.pm:1035 msgid "wanted" msgstr "Wunschliste" #-------------------- #: ../lib/XXV/MODULES/MEDIALIB.pm:109 -msgid "Copy media" -msgstr "Medium kopieren" +msgid "Research media" +msgstr "Medium recherchieren" #-------------------- #: ../lib/XXV/MODULES/MEDIALIB.pm:115 -msgid "Delete media" -msgstr "Medium löschen" +msgid "Get image from media cache" +msgstr "Hole Bild aus dem Medien Cache" #-------------------- -#: ../lib/XXV/MODULES/MEDIALIB.pm:1157 +#: ../lib/XXV/MODULES/MEDIALIB.pm:1151 msgid "Action" msgstr "Action" #-------------------- -#: ../lib/XXV/MODULES/MEDIALIB.pm:1161 +#: ../lib/XXV/MODULES/MEDIALIB.pm:1155 msgid "Adventure" msgstr "Abenteuer" #-------------------- -#: ../lib/XXV/MODULES/MEDIALIB.pm:1165 +#: ../lib/XXV/MODULES/MEDIALIB.pm:1159 msgid "Animation" msgstr "Animation" #-------------------- -#: ../lib/XXV/MODULES/MEDIALIB.pm:1169 +#: ../lib/XXV/MODULES/MEDIALIB.pm:1163 msgid "Comedy" msgstr "Komödie" #-------------------- -#: ../lib/XXV/MODULES/MEDIALIB.pm:1173 +#: ../lib/XXV/MODULES/MEDIALIB.pm:1167 msgid "Crime" msgstr "Krimi" #-------------------- -#: ../lib/XXV/MODULES/MEDIALIB.pm:1177 +#: ../lib/XXV/MODULES/MEDIALIB.pm:1171 msgid "Documentary" msgstr "Dokumentation" #-------------------- -#: ../lib/XXV/MODULES/MEDIALIB.pm:1181 +#: ../lib/XXV/MODULES/MEDIALIB.pm:1175 msgid "Drama" msgstr "Drama" #-------------------- -#: ../lib/XXV/MODULES/MEDIALIB.pm:1185 +#: ../lib/XXV/MODULES/MEDIALIB.pm:1179 msgid "Family" msgstr "Familie" #-------------------- -#: ../lib/XXV/MODULES/MEDIALIB.pm:1189 +#: ../lib/XXV/MODULES/MEDIALIB.pm:1183 msgid "Fantasy" msgstr "Fantasy" #-------------------- -#: ../lib/XXV/MODULES/MEDIALIB.pm:1193 +#: ../lib/XXV/MODULES/MEDIALIB.pm:1187 msgid "Film-Noir" msgstr "Film-Noir" #-------------------- -#: ../lib/XXV/MODULES/MEDIALIB.pm:1197 +#: ../lib/XXV/MODULES/MEDIALIB.pm:1191 msgid "Horror" msgstr "Horror" #-------------------- -#: ../lib/XXV/MODULES/MEDIALIB.pm:1201 +#: ../lib/XXV/MODULES/MEDIALIB.pm:1195 msgid "Musical" msgstr "Musical" #-------------------- -#: ../lib/XXV/MODULES/MEDIALIB.pm:1205 +#: ../lib/XXV/MODULES/MEDIALIB.pm:1199 msgid "Mystery" msgstr "Mystery" #-------------------- -#: ../lib/XXV/MODULES/MEDIALIB.pm:1209 +#: ../lib/XXV/MODULES/MEDIALIB.pm:1203 msgid "Romance" msgstr "Romanze" #-------------------- -#: ../lib/XXV/MODULES/MEDIALIB.pm:121 -msgid "Research media" -msgstr "Medium recherchieren" - -#-------------------- -#: ../lib/XXV/MODULES/MEDIALIB.pm:1213 +#: ../lib/XXV/MODULES/MEDIALIB.pm:1207 msgid "Sci-Fi" msgstr "Sci-Fi" #-------------------- -#: ../lib/XXV/MODULES/MEDIALIB.pm:1217 +#: ../lib/XXV/MODULES/MEDIALIB.pm:1211 msgid "Short" msgstr "Kurzfilm" #-------------------- -#: ../lib/XXV/MODULES/MEDIALIB.pm:1221 +#: ../lib/XXV/MODULES/MEDIALIB.pm:1215 msgid "Thriller" msgstr "Thriller" #-------------------- -#: ../lib/XXV/MODULES/MEDIALIB.pm:1225 +#: ../lib/XXV/MODULES/MEDIALIB.pm:1219 msgid "War" msgstr "Krieg" #-------------------- -#: ../lib/XXV/MODULES/MEDIALIB.pm:1229 +#: ../lib/XXV/MODULES/MEDIALIB.pm:122 +msgid "Save media" +msgstr "Medium speichern" + +#-------------------- +#: ../lib/XXV/MODULES/MEDIALIB.pm:1223 msgid "Western" msgstr "Western" #-------------------- -#: ../lib/XXV/MODULES/MEDIALIB.pm:1233 +#: ../lib/XXV/MODULES/MEDIALIB.pm:1227 msgid "Adult" msgstr "Adult" #-------------------- -#: ../lib/XXV/MODULES/MEDIALIB.pm:1241 +#: ../lib/XXV/MODULES/MEDIALIB.pm:1235 msgid "Biography" msgstr "Biography" #-------------------- -#: ../lib/XXV/MODULES/MEDIALIB.pm:1249 +#: ../lib/XXV/MODULES/MEDIALIB.pm:1243 msgid "Childs" msgstr "Kinder" #-------------------- -#: ../lib/XXV/MODULES/MEDIALIB.pm:1253 +#: ../lib/XXV/MODULES/MEDIALIB.pm:1247 msgid "Splatter" msgstr "Splatter" #-------------------- -#: ../lib/XXV/MODULES/MEDIALIB.pm:127 -msgid "Get image from media cache" -msgstr "Hole Bild aus dem Medien Cache" +#: ../lib/XXV/MODULES/MEDIALIB.pm:128 +msgid "Import media" +msgstr "Medium importieren" #-------------------- -#: ../lib/XXV/MODULES/MEDIALIB.pm:1301 +#: ../lib/XXV/MODULES/MEDIALIB.pm:1295 msgid "#" msgstr "#" #-------------------- -#: ../lib/XXV/MODULES/MEDIALIB.pm:1302 +#: ../lib/XXV/MODULES/MEDIALIB.pm:1296 msgid "ABC" msgstr "ABC" #-------------------- -#: ../lib/XXV/MODULES/MEDIALIB.pm:1303 +#: ../lib/XXV/MODULES/MEDIALIB.pm:1297 msgid "DEF" msgstr "DEF" #-------------------- -#: ../lib/XXV/MODULES/MEDIALIB.pm:1304 +#: ../lib/XXV/MODULES/MEDIALIB.pm:1298 msgid "GHI" msgstr "GHI" #-------------------- -#: ../lib/XXV/MODULES/MEDIALIB.pm:1305 +#: ../lib/XXV/MODULES/MEDIALIB.pm:1299 msgid "JKL" msgstr "JKL" #-------------------- -#: ../lib/XXV/MODULES/MEDIALIB.pm:1306 +#: ../lib/XXV/MODULES/MEDIALIB.pm:1300 msgid "MNO" msgstr "MNO" #-------------------- -#: ../lib/XXV/MODULES/MEDIALIB.pm:1307 +#: ../lib/XXV/MODULES/MEDIALIB.pm:1301 msgid "PQRS" msgstr "PQRS" #-------------------- -#: ../lib/XXV/MODULES/MEDIALIB.pm:1308 +#: ../lib/XXV/MODULES/MEDIALIB.pm:1302 msgid "TUV" msgstr "TUV" #-------------------- -#: ../lib/XXV/MODULES/MEDIALIB.pm:1309 +#: ../lib/XXV/MODULES/MEDIALIB.pm:1303 msgid "WXYZ" msgstr "WXYZ" #-------------------- -#: ../lib/XXV/MODULES/MEDIALIB.pm:1312 +#: ../lib/XXV/MODULES/MEDIALIB.pm:1306 msgid "Unseen" msgstr "Ungesehen" #-------------------- -#: ../lib/XXV/MODULES/MEDIALIB.pm:1313 +#: ../lib/XXV/MODULES/MEDIALIB.pm:1307 msgid "Wanted" msgstr "Wunschliste" #-------------------- #: ../lib/XXV/MODULES/MEDIALIB.pm:134 -msgid "Save media" -msgstr "Medium speichern" - -#-------------------- -#: ../lib/XXV/MODULES/MEDIALIB.pm:140 -msgid "Import media" -msgstr "Medium importieren" - -#-------------------- -#: ../lib/XXV/MODULES/MEDIALIB.pm:146 msgid "Search media" msgstr "Medium suchen" @@ -2880,7 +2875,7 @@ msgid "This module manages media like DVDs, VCD, etc." msgstr "Dieses Module verwaltet Medien wie z.B. DVD, VCD, etc." #-------------------- -#: ../lib/XXV/MODULES/MEDIALIB.pm:308 +#: ../lib/XXV/MODULES/MEDIALIB.pm:295 msgid "Media library has stored %d medias" msgstr "Medienbibliothek hat %d Medien gespeichert" @@ -2890,7 +2885,7 @@ msgid "Cache images" msgstr "Bilder zwischenspeichern" #-------------------- -#: ../lib/XXV/MODULES/MEDIALIB.pm:371 ../lib/XXV/MODULES/MEDIALIB.pm:560 ../lib/XXV/MODULES/MEDIALIB.pm:665 ../lib/XXV/MODULES/MEDIALIB.pm:748 +#: ../lib/XXV/MODULES/MEDIALIB.pm:361 ../lib/XXV/MODULES/MEDIALIB.pm:552 ../lib/XXV/MODULES/MEDIALIB.pm:658 ../lib/XXV/MODULES/MEDIALIB.pm:742 msgid "Media with ID '%s' does not exist in the database!" msgstr "Medium mit der ID '%s' existiert nicht in der Datenbank!" @@ -2901,58 +2896,58 @@ msgstr "Speicherplatz der Cover Bilder" #-------------------- #: ../lib/XXV/MODULES/MEDIALIB.pm:47 -msgid "Number of columns in listview" -msgstr "Anzahl der Spalten in der Medienliste" - -#-------------------- -#: ../lib/XXV/MODULES/MEDIALIB.pm:53 -msgid "Number of columns of actors in detailview" -msgstr "Anzahl der Spalten der Schauspieler in der Detail Ansicht" - -#-------------------- -#: ../lib/XXV/MODULES/MEDIALIB.pm:59 msgid "Default media language" msgstr "Standardsprache der Medien" #-------------------- -#: ../lib/XXV/MODULES/MEDIALIB.pm:64 +#: ../lib/XXV/MODULES/MEDIALIB.pm:52 msgid "Default mediatype" msgstr "Standard Medientyp" #-------------------- -#: ../lib/XXV/MODULES/MEDIALIB.pm:722 +#: ../lib/XXV/MODULES/MEDIALIB.pm:62 +msgid "Default range" +msgstr "Standardbereich" + +#-------------------- +#: ../lib/XXV/MODULES/MEDIALIB.pm:715 msgid "Media %s saved!" msgstr "Medium %s gespeichert!" #-------------------- -#: ../lib/XXV/MODULES/MEDIALIB.pm:74 -msgid "Default range" -msgstr "Standardbereich" +#: ../lib/XXV/MODULES/MEDIALIB.pm:73 +msgid "List medias" +msgstr "Medien auflisten" #-------------------- -#: ../lib/XXV/MODULES/MEDIALIB.pm:758 +#: ../lib/XXV/MODULES/MEDIALIB.pm:752 msgid "Genres for Media with ID '%s' does not exist in the database!" msgstr "Genres für Medium mit der ID '%s' existieren nicht in der Datenbank!" #-------------------- -#: ../lib/XXV/MODULES/MEDIALIB.pm:763 +#: ../lib/XXV/MODULES/MEDIALIB.pm:757 msgid "Media %s is deleted." msgstr "Medium %s wurde gelöscht." #-------------------- +#: ../lib/XXV/MODULES/MEDIALIB.pm:79 +msgid "Display media" +msgstr "Medium anzeigen" + +#-------------------- #: ../lib/XXV/MODULES/MEDIALIB.pm:85 -msgid "List medias" -msgstr "Medien auflisten" +msgid "Create new media" +msgstr "Erstelle neues Medium" #-------------------- #: ../lib/XXV/MODULES/MEDIALIB.pm:91 -msgid "Display media" -msgstr "Medium anzeigen" +msgid "Edit media" +msgstr "Medium bearbeiten" #-------------------- #: ../lib/XXV/MODULES/MEDIALIB.pm:97 -msgid "Create new media" -msgstr "Erstelle neues Medium" +msgid "Copy media" +msgstr "Medium kopieren" #-------------------- #: ../lib/XXV/MODULES/MOVETIMER.pm:16 @@ -2960,12 +2955,12 @@ msgid "This module move timers between channels." msgstr "Diese Modul verschiebt Timer zwischen Kanälen." #-------------------- -#: ../lib/XXV/MODULES/MOVETIMER.pm:227 +#: ../lib/XXV/MODULES/MOVETIMER.pm:228 msgid "Couldn't query rules to move timer from database!" msgstr "Konnte Regel zum Verschieben der Timer nicht aus der Datenbank abfragen!" #-------------------- -#: ../lib/XXV/MODULES/MOVETIMER.pm:321 +#: ../lib/XXV/MODULES/MOVETIMER.pm:322 msgid "There none timer to move." msgstr "Es wurden keine Timer verschoben." @@ -2975,32 +2970,32 @@ msgid "List rules to move timer between channels" msgstr "Zeige Regel zum Verschieben von Timer zwischen Kanälen" #-------------------- -#: ../lib/XXV/MODULES/MOVETIMER.pm:388 ../lib/XXV/MODULES/MOVETIMER.pm:548 +#: ../lib/XXV/MODULES/MOVETIMER.pm:391 ../lib/XXV/MODULES/MOVETIMER.pm:552 msgid "Rule to move timer with ID '%s' does not exist in the database!" msgstr "Regel zum Verschieben der Timer mit ID '%s' exisitert nicht in der Datenbank!" #-------------------- -#: ../lib/XXV/MODULES/MOVETIMER.pm:407 +#: ../lib/XXV/MODULES/MOVETIMER.pm:410 msgid "Which video disk recorder should as source?" msgstr "Welcher Video Disk Rekorder soll als Quelle dienen?" #-------------------- -#: ../lib/XXV/MODULES/MOVETIMER.pm:413 +#: ../lib/XXV/MODULES/MOVETIMER.pm:416 msgid "Which channel should used as source?" msgstr "Welcher Kanal soll als Quelle verwendet werden?" #-------------------- -#: ../lib/XXV/MODULES/MOVETIMER.pm:421 ../lib/XXV/MODULES/MOVETIMER.pm:444 ../lib/XXV/MODULES/TIMERS.pm:603 +#: ../lib/XXV/MODULES/MOVETIMER.pm:424 ../lib/XXV/MODULES/MOVETIMER.pm:447 ../lib/XXV/MODULES/TIMERS.pm:648 ../lib/XXV/MODULES/XMLTV.pm:546 msgid "Channel '%s' does not exist on video disk recorder %s!" msgstr "Kanal '%s' existiert nicht auf Video Disk Rekorder %s!" #-------------------- -#: ../lib/XXV/MODULES/MOVETIMER.pm:430 +#: ../lib/XXV/MODULES/MOVETIMER.pm:433 msgid "Which video disk recorder should as destination?" msgstr "Welcher Video Disk Rekorder soll als Ziel dienen?" #-------------------- -#: ../lib/XXV/MODULES/MOVETIMER.pm:436 +#: ../lib/XXV/MODULES/MOVETIMER.pm:439 msgid "Which channel should used as destination?" msgstr "Welcher Kanal soll als Ziel verwendet werden?" @@ -3010,37 +3005,37 @@ msgid "Create rule to move timer between channels" msgstr "Erzeuge eine neue Regel zum Verschieben von Timern zwischen Kanälen" #-------------------- -#: ../lib/XXV/MODULES/MOVETIMER.pm:450 +#: ../lib/XXV/MODULES/MOVETIMER.pm:453 msgid "When should use this rule" msgstr "Wann soll die Regel verwendet werden" #-------------------- -#: ../lib/XXV/MODULES/MOVETIMER.pm:460 +#: ../lib/XXV/MODULES/MOVETIMER.pm:463 msgid "How should timer handled, if changed" msgstr "Wie sollen Timer behandelt bei Änderungen behandelt werden" #-------------------- -#: ../lib/XXV/MODULES/MOVETIMER.pm:481 +#: ../lib/XXV/MODULES/MOVETIMER.pm:484 msgid "Rule to move timer saved!" msgstr "Regel zum Verschieben von Timern gespeichert!" #-------------------- -#: ../lib/XXV/MODULES/MOVETIMER.pm:518 ../lib/XXV/MODULES/MOVETIMER.pm:525 -msgid "Couldn't insert rule move timer in database!" -msgstr "Regel zum Verschieben von Timern konnte nicht in Datenbank eingefügt werden!" - -#-------------------- #: ../lib/XXV/MODULES/MOVETIMER.pm:52 msgid "Delete rule to move timer between channels" msgstr "Lösche Regel zum Verschieben von Timern zwischen Kanälen" #-------------------- -#: ../lib/XXV/MODULES/MOVETIMER.pm:540 +#: ../lib/XXV/MODULES/MOVETIMER.pm:521 ../lib/XXV/MODULES/MOVETIMER.pm:528 +msgid "Couldn't insert rule move timer in database!" +msgstr "Regel zum Verschieben von Timern konnte nicht in Datenbank eingefügt werden!" + +#-------------------- +#: ../lib/XXV/MODULES/MOVETIMER.pm:544 msgid "Missing ID to select rules for deletion! Please use movetimerdelete 'id'" msgstr "Benötige ID zum Auswählen der Regel für die Löschung! Bitte verwende movetimerdelete 'id'" #-------------------- -#: ../lib/XXV/MODULES/MOVETIMER.pm:552 +#: ../lib/XXV/MODULES/MOVETIMER.pm:556 msgid "Rule to move timer %s is deleted." msgstr "Regel zum Verschieben der Timer %s wurde gelöscht." @@ -3050,42 +3045,47 @@ msgid "Edit rule to move timer between channels" msgstr "Bearbeite Regel zum Verschieben von Timern zwischen Kanälen" #-------------------- -#: ../lib/XXV/MODULES/MOVETIMER.pm:631 +#: ../lib/XXV/MODULES/MOVETIMER.pm:636 msgid "Allways" msgstr "Immer" #-------------------- -#: ../lib/XXV/MODULES/MOVETIMER.pm:632 +#: ../lib/XXV/MODULES/MOVETIMER.pm:637 msgid "Newer" msgstr "Niemals" #-------------------- -#: ../lib/XXV/MODULES/MOVETIMER.pm:633 +#: ../lib/XXV/MODULES/MOVETIMER.pm:638 msgid "If collision detected" msgstr "Wenn eine Kollision erkannt wurde" #-------------------- -#: ../lib/XXV/MODULES/MOVETIMER.pm:644 +#: ../lib/XXV/MODULES/MOVETIMER.pm:649 msgid "Keep inactive original timer" msgstr "Behalte den inaktiven original Timer" #-------------------- -#: ../lib/XXV/MODULES/MOVETIMER.pm:645 +#: ../lib/XXV/MODULES/MOVETIMER.pm:650 msgid "Copy original timer" msgstr "Kopiere den original Timer" #-------------------- +#: ../lib/XXV/MODULES/MUSIC.pm:1001 +msgid "Lookup for cover from '%s-%s'" +msgstr "Suche nach Plattenhüllen von '%s-%s'" + +#-------------------- #: ../lib/XXV/MODULES/MUSIC.pm:101 msgid "Download album covers." msgstr "Plattenhüllen herunterladen." #-------------------- -#: ../lib/XXV/MODULES/MUSIC.pm:1068 +#: ../lib/XXV/MODULES/MUSIC.pm:1073 msgid "New covers search was successfully!" msgstr "Suche nach neue Plattenhüllen war erfolgreich!" #-------------------- -#: ../lib/XXV/MODULES/MUSIC.pm:1072 ../lib/XXV/MODULES/MUSIC.pm:1089 ../lib/XXV/MODULES/MUSIC.pm:347 ../lib/XXV/MODULES/MUSIC.pm:367 ../lib/XXV/MODULES/MUSIC.pm:407 ../lib/XXV/MODULES/MUSIC.pm:446 +#: ../lib/XXV/MODULES/MUSIC.pm:1077 ../lib/XXV/MODULES/MUSIC.pm:1094 ../lib/XXV/MODULES/MUSIC.pm:348 ../lib/XXV/MODULES/MUSIC.pm:368 ../lib/XXV/MODULES/MUSIC.pm:408 ../lib/XXV/MODULES/MUSIC.pm:447 msgid "Back to music list" msgstr "Zurück zur Musikliste" @@ -3095,7 +3095,7 @@ msgid "Play music file 'fid'" msgstr "Spiele Musikdatei 'fid'" #-------------------- -#: ../lib/XXV/MODULES/MUSIC.pm:1086 +#: ../lib/XXV/MODULES/MUSIC.pm:1091 msgid "It is not necessary to look for new covers because already all albums possess cover!" msgstr "Es ist nicht notwendig, nach neuer Plattenhüllen zu suchen, weil bereits alle Alben ein Plattenhülle besitzen!" @@ -3120,12 +3120,12 @@ msgid "Show album covers." msgstr "Zeigt Plattenhüllen." #-------------------- -#: ../lib/XXV/MODULES/MUSIC.pm:1354 +#: ../lib/XXV/MODULES/MUSIC.pm:1360 msgid "Sorry, images for cover is'nt supported" msgstr "Entschuldigung, Plattenhüllen werden nicht unterstützt." #-------------------- -#: ../lib/XXV/MODULES/MUSIC.pm:1392 +#: ../lib/XXV/MODULES/MUSIC.pm:1399 msgid "Sorry, couldn't get file." msgstr "Entschuldigung, Datei kann nicht geholt werden." @@ -3140,22 +3140,22 @@ msgid "This module managed music files." msgstr "Dieser Modul behandelt die Musikdateien." #-------------------- -#: ../lib/XXV/MODULES/MUSIC.pm:343 +#: ../lib/XXV/MODULES/MUSIC.pm:344 msgid "Directory of the music files '%s' not found" msgstr "Verzeichnis mit den Musikdateien '%s' nicht gefunden" #-------------------- -#: ../lib/XXV/MODULES/MUSIC.pm:365 +#: ../lib/XXV/MODULES/MUSIC.pm:366 msgid "Reread the music files ..." msgstr "Erneutes Einlesen der Musikdateien ..." #-------------------- -#: ../lib/XXV/MODULES/MUSIC.pm:379 +#: ../lib/XXV/MODULES/MUSIC.pm:380 msgid "Get information from music files ..." msgstr "Hole Informationen über die Musikdateien ..." #-------------------- -#: ../lib/XXV/MODULES/MUSIC.pm:405 +#: ../lib/XXV/MODULES/MUSIC.pm:406 msgid "No music files found!" msgstr "Keine Musikdateien gefunden!" @@ -3165,7 +3165,7 @@ msgid "Directory with the music files" msgstr "Verzeichnis mit den Musikdateien" #-------------------- -#: ../lib/XXV/MODULES/MUSIC.pm:442 +#: ../lib/XXV/MODULES/MUSIC.pm:443 msgid "%d new music files in database saved and %d non exists entries deleted!" msgstr "%d neue Musikdateien wurden in der Datenbank gespeichert und %d nicht existierende gelöscht!" @@ -3175,7 +3175,7 @@ msgid "Port to listen for icecast clients." msgstr "Port des Server, an dem für Icecast Clients gelauscht wird." #-------------------- -#: ../lib/XXV/MODULES/MUSIC.pm:515 +#: ../lib/XXV/MODULES/MUSIC.pm:518 msgid "Sorry, playback is'nt supported" msgstr "Entschuldigung, Wiedergabe ist nicht möglich" @@ -3185,17 +3185,17 @@ msgid "Proxy URL to music server. e.g. (http://vdr/xxv) Please remember you must msgstr "Proxy URL des Musikservers. z.B.(http://vdr/xxv). Denke daran das der Port des Icecast Server in die Proxykonfiguration eingetragen werden muss!" #-------------------- -#: ../lib/XXV/MODULES/MUSIC.pm:611 +#: ../lib/XXV/MODULES/MUSIC.pm:616 msgid "Album" msgstr "Album" #-------------------- -#: ../lib/XXV/MODULES/MUSIC.pm:613 +#: ../lib/XXV/MODULES/MUSIC.pm:618 msgid "Number of track" msgstr "Nummer des Track" #-------------------- -#: ../lib/XXV/MODULES/MUSIC.pm:615 +#: ../lib/XXV/MODULES/MUSIC.pm:620 msgid "Length" msgstr "Dauer" @@ -3215,7 +3215,7 @@ msgid "DSN for muggle database" msgstr "DSN für die Muggle Datenbank" #-------------------- -#: ../lib/XXV/MODULES/MUSIC.pm:931 +#: ../lib/XXV/MODULES/MUSIC.pm:935 msgid "Music database contains %d entries with %d albums from %d artists in %d genres" msgstr "Die Musikdatenbank enthält %d Einträge mit %d Alben von %d Künstlern in %d Genren" @@ -3225,16 +3225,11 @@ msgid "Rereading of the music directory." msgstr "Nochmaliges Einlesen des Musikverzeichnisses." #-------------------- -#: ../lib/XXV/MODULES/MUSIC.pm:976 +#: ../lib/XXV/MODULES/MUSIC.pm:981 msgid "Please wait, search for new covers ..." msgstr "Bitte warten, suche nach neuen Plattenhüllen ..." #-------------------- -#: ../lib/XXV/MODULES/MUSIC.pm:996 -msgid "Lookup for cover from '%s-%s'" -msgstr "Suche nach Plattenhüllen von '%s-%s'" - -#-------------------- #: ../lib/XXV/MODULES/RECORDS.pm:100 msgid "Preview image width" msgstr "Breite der Vorschaubilder" @@ -3260,32 +3255,32 @@ msgid "Delete recording 'rid'" msgstr "Aufnahme löschen 'rid'" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:1483 +#: ../lib/XXV/MODULES/RECORDS.pm:1490 msgid "No recording defined for display! Please use rdisplay 'rid'" msgstr "Keine Aufnahme zum Anzeigen definiert! Bitte verwende rdisplay 'rid'" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:1520 ../lib/XXV/MODULES/RECORDS.pm:1558 ../lib/XXV/MODULES/RECORDS.pm:1599 ../lib/XXV/MODULES/RECORDS.pm:1962 ../lib/XXV/MODULES/RECORDS.pm:2051 ../lib/XXV/MODULES/RECORDS.pm:2330 +#: ../lib/XXV/MODULES/RECORDS.pm:1527 ../lib/XXV/MODULES/RECORDS.pm:1566 ../lib/XXV/MODULES/RECORDS.pm:1608 ../lib/XXV/MODULES/RECORDS.pm:1975 ../lib/XXV/MODULES/RECORDS.pm:2065 ../lib/XXV/MODULES/RECORDS.pm:2345 msgid "Recording '%s' does not exist in the database!" msgstr "Aufnahme '%s' existiert nicht in der Datenbank!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:1549 ../lib/XXV/MODULES/RECORDS.pm:1592 -msgid "No recording defined for playback! Please use rplay 'rid'." -msgstr "Keine Aufnahme zum Wiedergabe definiert! Bitte verwende rplay 'rid'" - -#-------------------- #: ../lib/XXV/MODULES/RECORDS.pm:155 msgid "Edit recording 'rid'" msgstr "Aufnahme bearbeiten 'rid'" #-------------------- +#: ../lib/XXV/MODULES/RECORDS.pm:1557 ../lib/XXV/MODULES/RECORDS.pm:1601 +msgid "No recording defined for playback! Please use rplay 'rid'." +msgstr "Keine Aufnahme zum Wiedergabe definiert! Bitte verwende rplay 'rid'" + +#-------------------- #: ../lib/XXV/MODULES/RECORDS.pm:162 msgid "Convert recording 'rid'" msgstr "Aufnahme konvertieren 'rid'" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:1645 ../lib/XXV/MODULES/RECORDS.pm:1780 +#: ../lib/XXV/MODULES/RECORDS.pm:1655 ../lib/XXV/MODULES/RECORDS.pm:1792 msgid "Index" msgstr "Index" @@ -3300,7 +3295,7 @@ msgid "Cut recording 'rid' in vdr" msgstr "Schneide Aufnahme 'rid' im VDR" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:1895 +#: ../lib/XXV/MODULES/RECORDS.pm:1908 msgid "No recording defined for deletion! Please use rdelete 'id'." msgstr "Keine Aufnahme zum Löschen definiert! Bitte verwende rdelete 'rid'." @@ -3310,72 +3305,72 @@ msgid "Create event entries if a recording has been deleted." msgstr "Erzeuge Eventeinträge, wenn eine Aufnahme gelöscht wurde." #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:1968 +#: ../lib/XXV/MODULES/RECORDS.pm:1981 msgid "Recording '%s' to delete" msgstr "Aufnahme '%s' wird gelöscht" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2004 +#: ../lib/XXV/MODULES/RECORDS.pm:2017 msgid "No recording to delete!" msgstr "Keine Aufnahme zum Löschen!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2029 +#: ../lib/XXV/MODULES/RECORDS.pm:2043 msgid "No recording defined for editing!" msgstr "Keine Aufnahme-ID zum Bearbeiten!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2068 ../lib/XXV/MODULES/RECORDS.pm:2651 ../lib/XXV/MODULES/TIMERS.pm:581 +#: ../lib/XXV/MODULES/RECORDS.pm:2082 ../lib/XXV/MODULES/RECORDS.pm:2667 ../lib/XXV/MODULES/TIMERS.pm:626 msgid "Title of recording" msgstr "Titel der Aufnahme" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2105 +#: ../lib/XXV/MODULES/RECORDS.pm:2119 msgid "Undefined" msgstr "Unbestimmt" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2115 ../lib/XXV/MODULES/STREAM.pm:207 ../lib/XXV/MODULES/XMLTV.pm:519 +#: ../lib/XXV/MODULES/RECORDS.pm:2129 ../lib/XXV/MODULES/STREAM.pm:208 msgid "This channel '%s' does not exist!" msgstr "Dieser Kanal '%s' existiert nicht in der Datenbank!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2135 +#: ../lib/XXV/MODULES/RECORDS.pm:2149 msgid "Video" msgstr "Video" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2140 +#: ../lib/XXV/MODULES/RECORDS.pm:2154 msgid "Audio" msgstr "Audio" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2145 +#: ../lib/XXV/MODULES/RECORDS.pm:2159 msgid "Cut marks" msgstr "Schnittmarken" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2182 ../lib/XXV/MODULES/RECORDS.pm:2190 +#: ../lib/XXV/MODULES/RECORDS.pm:2196 ../lib/XXV/MODULES/RECORDS.pm:2204 msgid "Couldn't write file '%s' : %s" msgstr "Konnte Datei '%s' nicht schreiben : %s" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2209 ../lib/XXV/MODULES/RECORDS.pm:2227 -msgid "Recording: '%s', couldn't move to '%s' : %s" -msgstr "Aufnahme: '%s', konnte nicht nach '%s' verschoben werden : %s" - -#-------------------- #: ../lib/XXV/MODULES/RECORDS.pm:222 msgid "Recording deleted: %s" msgstr "Aufnahme gelöscht: %s" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2223 +#: ../lib/XXV/MODULES/RECORDS.pm:2223 ../lib/XXV/MODULES/RECORDS.pm:2241 +msgid "Recording: '%s', couldn't move to '%s' : %s" +msgstr "Aufnahme: '%s', konnte nicht nach '%s' verschoben werden : %s" + +#-------------------- +#: ../lib/XXV/MODULES/RECORDS.pm:2237 msgid "Recording: '%s', couldn't mkpath: '%s' : %s" msgstr "Aufnahme: '%s', konnte nicht Verzeichnis '%s' nicht erstellen : %s" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2234 +#: ../lib/XXV/MODULES/RECORDS.pm:2248 msgid "Recording: '%s', couldn't remove '%s' : %s" msgstr "Aufnahme: '%s', konnte nicht '%s' nicht entfernen : %s" @@ -3385,96 +3380,91 @@ msgid "Subtitle: %s" msgstr "Serientitel: %s" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2265 ../lib/XXV/MODULES/RECORDS.pm:2267 +#: ../lib/XXV/MODULES/RECORDS.pm:2279 ../lib/XXV/MODULES/RECORDS.pm:2281 msgid "Recording edited!" msgstr "Aufnahme wurde bearbeitet!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2275 +#: ../lib/XXV/MODULES/RECORDS.pm:2289 msgid "Recording was'nt changed!" msgstr "Aufnahme wurde nicht verändert!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2313 +#: ../lib/XXV/MODULES/RECORDS.pm:2328 msgid "No reccmds.conf on your system!" msgstr "Keine reccmds.conf auf dem System!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2318 +#: ../lib/XXV/MODULES/RECORDS.pm:2333 msgid "Please use rconvert 'cmdid_rid'" msgstr "Bitte verwende rconvert 'cmdid_rid'" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2322 +#: ../lib/XXV/MODULES/RECORDS.pm:2337 msgid "Command" msgstr "Kommando" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2329 +#: ../lib/XXV/MODULES/RECORDS.pm:2344 msgid "Couldn't find this command ID!" msgstr "Kann diese Kommando-ID nicht finden!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2343 +#: ../lib/XXV/MODULES/RECORDS.pm:2358 msgid "Call %s '%s', standard error output :" msgstr "Aufruf %s '%s', Standardfehlerausgabe :" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2346 +#: ../lib/XXV/MODULES/RECORDS.pm:2361 msgid "Call %s '%s', standard output :" msgstr "Aufruf %s '%s', Ausgabe :" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2350 +#: ../lib/XXV/MODULES/RECORDS.pm:2365 msgid "Sorry! Couldn't call %s '%s'! %s" msgstr "Entschuldigung! Konnte %s '%s' nicht aufrufen! %s" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2354 +#: ../lib/XXV/MODULES/RECORDS.pm:2369 msgid "Back to recording list" msgstr "Zurück zur Aufnahmeliste" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2392 +#: ../lib/XXV/MODULES/RECORDS.pm:2406 msgid "%d new recordings since last report time %s" msgstr "%d neue Aufnahmen seit der letzten Reportzeit %s" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2641 +#: ../lib/XXV/MODULES/RECORDS.pm:2657 msgid "There none recoverable recordings!" msgstr "Es sind keine wiederherstellbaren Aufnahmen vorhanden!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2671 +#: ../lib/XXV/MODULES/RECORDS.pm:2687 msgid "Recover recording" msgstr "Aufnahme wiederherstellen" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2677 +#: ../lib/XXV/MODULES/RECORDS.pm:2693 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:2686 +#: ../lib/XXV/MODULES/RECORDS.pm:2702 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:2699 ../lib/XXV/MODULES/RECORDS.pm:2701 +#: ../lib/XXV/MODULES/RECORDS.pm:2715 ../lib/XXV/MODULES/RECORDS.pm:2717 msgid "Recording recovered!" msgstr "Aufnahme wiederhergestellt!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2709 +#: ../lib/XXV/MODULES/RECORDS.pm:2725 msgid "None recording was'nt recovered!" msgstr "Keine Aufnahme wurde wiederhergestellt!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2777 ../lib/XXV/MODULES/VTX.pm:1452 -msgid "Sorry, get image is'nt supported" -msgstr "Entschuldigung, Bilder werden nicht unterstützt!" - -#-------------------- #: ../lib/XXV/MODULES/RECORDS.pm:29 msgid "This module manages recordings." msgstr "Dieses Modul verwaltet die Aufnahmen." @@ -3495,17 +3485,17 @@ msgid "Directory where recordings are stored" msgstr "Verzeichnis, wo die vdr Aufnahmen gespeichert sind" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:553 +#: ../lib/XXV/MODULES/RECORDS.pm:555 msgid "No recordings available!" msgstr "Keine Aufnahmen verfügbar!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:569 +#: ../lib/XXV/MODULES/RECORDS.pm:571 msgid "Used %s, total %s%s, free %s%s" msgstr "Genutzt %s, Gesamt %s%s, Frei %s%s" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:574 +#: ../lib/XXV/MODULES/RECORDS.pm:576 msgid "Unknown disc capacity!" msgstr "Unbekannte Festplattenkapazität!" @@ -3515,7 +3505,7 @@ msgid "Location of used program to produce thumbnails on your system." msgstr "Position des verwendeten Programms, zum Erzeugen der Vorschaubildern." #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:626 +#: ../lib/XXV/MODULES/RECORDS.pm:628 msgid "Update recording '%s'" msgstr "Aktualisiere Aufnahme '%s'" @@ -3525,7 +3515,7 @@ msgid "The program used to create thumbnails" msgstr "Das verwendete Programm, um Vorschaubildern zu erzeugen" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:678 +#: ../lib/XXV/MODULES/RECORDS.pm:680 msgid "Analyze recording '%s'" msgstr "Untersuche Aufnahme '%s'" @@ -3535,17 +3525,17 @@ msgid "None" msgstr "Keines" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:702 +#: ../lib/XXV/MODULES/RECORDS.pm:704 msgid "Can't add recording '%s' into database!" msgstr "Konnte Aufnahme '%s' nicht in Datenbank einfügen!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:705 +#: ../lib/XXV/MODULES/RECORDS.pm:707 msgid "Can't assign recording '%s' to file!" msgstr "Kann Aufnahme '%s' keiner Datei zuordnen!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:712 +#: ../lib/XXV/MODULES/RECORDS.pm:714 msgid "Recording '%s' without id or unique title and date from VDR!" msgstr "Aufnahme '%s' ohne ID oder eindeutigen Titel und Datum vom VDR!" @@ -3555,12 +3545,12 @@ msgid "Produce how many thumbnails" msgstr "Wieviele Vorschaubildern erzeugen?" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:802 +#: ../lib/XXV/MODULES/RECORDS.pm:806 msgid "Write %d recordings to the database." msgstr "Schreibe %d Aufnahmen in die Datenbank." #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:804 +#: ../lib/XXV/MODULES/RECORDS.pm:808 msgid "Write %d recordings to the database. Couldn't assign %d recordings." msgstr "Schreibe nur %d Aufnahmen in die Datenbank. Kann %d Aufnahmen nicht zuordnen." @@ -3570,7 +3560,7 @@ msgid "Display recording list with thumbnails?" msgstr "Zeige Aufnahmeliste mit Vorschaubildern?" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:840 ../lib/XXV/MODULES/RECORDS.pm:842 +#: ../lib/XXV/MODULES/RECORDS.pm:845 ../lib/XXV/MODULES/RECORDS.pm:847 msgid "Get information on recordings ..." msgstr "Hole Informationen über Aufnahmen ..." @@ -3590,12 +3580,12 @@ msgid "This module emulate a remote control." msgstr "Dieses Modul emulieren eine Fernbedienung." #-------------------- -#: ../lib/XXV/MODULES/REMOTE.pm:182 +#: ../lib/XXV/MODULES/REMOTE.pm:185 msgid "This cmd id does not exist!" msgstr "Dieses Kommando existiert nicht!" #-------------------- -#: ../lib/XXV/MODULES/REMOTE.pm:185 +#: ../lib/XXV/MODULES/REMOTE.pm:188 msgid "Try to start command: %s with cmd: %s" msgstr "Versuche Start des Kommando: %s mit cmd: %s " @@ -3605,22 +3595,22 @@ msgid "Grab video framebuffer, as preview on remotecontrol." msgstr "Speichert den Videoframebuffer, als Vorschau innerhalb der Fernbedienung." #-------------------- -#: ../lib/XXV/MODULES/REMOTE.pm:45 +#: ../lib/XXV/MODULES/REMOTE.pm:46 msgid "Display ir remote 'cmd'" msgstr "Zeigt eine Fernbedienung 'cmd'" #-------------------- -#: ../lib/XXV/MODULES/REMOTE.pm:51 +#: ../lib/XXV/MODULES/REMOTE.pm:52 msgid "Switch to channel 'cid'" msgstr "Schaltet zum Kanal 'cid'" #-------------------- -#: ../lib/XXV/MODULES/REMOTE.pm:57 +#: ../lib/XXV/MODULES/REMOTE.pm:58 msgid "Call the command 'cid'" msgstr "Aufruf des Kommandos 'cid'" #-------------------- -#: ../lib/XXV/MODULES/REMOTE.pm:63 +#: ../lib/XXV/MODULES/REMOTE.pm:64 msgid "List the commands" msgstr "Liste die Kommandos" @@ -3645,12 +3635,7 @@ msgid "This module register and run robots to fetch data from internet." msgstr "Dieses Modul verwaltet und startet Robots, um Daten aus dem Internet zu holen." #-------------------- -#: ../lib/XXV/MODULES/ROBOT.pm:33 -msgid "Start a robots 'rname'" -msgstr "Startet eine Robot 'rname'" - -#-------------------- -#: ../lib/XXV/MODULES/SHARE.pm:357 +#: ../lib/XXV/MODULES/SHARE.pm:358 msgid "Rank" msgstr "Platzierung" @@ -3680,22 +3665,17 @@ msgid "Display the TopTen list of timers." msgstr "Zeigt die Liste der besten zehn Timer an." #-------------------- -#: ../lib/XXV/MODULES/STATUS.pm:101 -msgid "Displays network information" -msgstr "Zeigt die Informationen des Netzwerks" - -#-------------------- -#: ../lib/XXV/MODULES/STATUS.pm:106 +#: ../lib/XXV/MODULES/STATUS.pm:102 msgid "Displays hardware information" msgstr "Zeigt die Informationen der Hardware" #-------------------- -#: ../lib/XXV/MODULES/STATUS.pm:111 +#: ../lib/XXV/MODULES/STATUS.pm:107 msgid "Displays memory information" msgstr "Zeigt die Informationen des Speichers" #-------------------- -#: ../lib/XXV/MODULES/STATUS.pm:116 +#: ../lib/XXV/MODULES/STATUS.pm:112 msgid "Display the file system informations" msgstr "Zeigt die Informationen des Dateisystems" @@ -3705,191 +3685,196 @@ msgid "This module analyzes your system and displays the result." msgstr "Dieses Modul analysieren Ihr System und zeigt das Resultat an." #-------------------- -#: ../lib/XXV/MODULES/STATUS.pm:260 +#: ../lib/XXV/MODULES/STATUS.pm:259 msgid "CPU" msgstr "CPU" #-------------------- -#: ../lib/XXV/MODULES/STATUS.pm:261 +#: ../lib/XXV/MODULES/STATUS.pm:260 msgid "PCI" msgstr "PCI" #-------------------- -#: ../lib/XXV/MODULES/STATUS.pm:263 +#: ../lib/XXV/MODULES/STATUS.pm:262 msgid "IDE" msgstr "IDE" #-------------------- -#: ../lib/XXV/MODULES/STATUS.pm:265 +#: ../lib/XXV/MODULES/STATUS.pm:264 msgid "SCSI" msgstr "SCSI" #-------------------- -#: ../lib/XXV/MODULES/STATUS.pm:294 +#: ../lib/XXV/MODULES/STATUS.pm:295 msgid "Filesystems" msgstr "Dateisysteme" #-------------------- -#: ../lib/XXV/MODULES/STATUS.pm:376 +#: ../lib/XXV/MODULES/STATUS.pm:377 msgid "day" msgstr "Tag" #-------------------- -#: ../lib/XXV/MODULES/STATUS.pm:382 +#: ../lib/XXV/MODULES/STATUS.pm:383 msgid "days" msgstr "Tage" #-------------------- -#: ../lib/XXV/MODULES/STATUS.pm:390 +#: ../lib/XXV/MODULES/STATUS.pm:391 msgid "hour" msgstr "Stunde" #-------------------- -#: ../lib/XXV/MODULES/STATUS.pm:396 +#: ../lib/XXV/MODULES/STATUS.pm:397 msgid "hours" msgstr "Stunden" #-------------------- -#: ../lib/XXV/MODULES/STATUS.pm:404 +#: ../lib/XXV/MODULES/STATUS.pm:405 msgid "minute" msgstr "Minute" #-------------------- -#: ../lib/XXV/MODULES/STATUS.pm:410 +#: ../lib/XXV/MODULES/STATUS.pm:411 msgid "minutes" msgstr "Minuten" #-------------------- -#: ../lib/XXV/MODULES/STATUS.pm:425 +#: ../lib/XXV/MODULES/STATUS.pm:426 msgid "Interface" msgstr "Schnittstelle" #-------------------- -#: ../lib/XXV/MODULES/STATUS.pm:426 +#: ../lib/XXV/MODULES/STATUS.pm:427 msgid "RxBytes" msgstr "RxBytes" #-------------------- -#: ../lib/XXV/MODULES/STATUS.pm:427 +#: ../lib/XXV/MODULES/STATUS.pm:428 msgid "RxPackets" msgstr "RxPackets" #-------------------- -#: ../lib/XXV/MODULES/STATUS.pm:428 +#: ../lib/XXV/MODULES/STATUS.pm:429 msgid "RxErrs" msgstr "RxErrs" #-------------------- -#: ../lib/XXV/MODULES/STATUS.pm:429 +#: ../lib/XXV/MODULES/STATUS.pm:430 msgid "RxDrop" msgstr "RxDrop" #-------------------- -#: ../lib/XXV/MODULES/STATUS.pm:430 +#: ../lib/XXV/MODULES/STATUS.pm:431 msgid "TxBytes" msgstr "TxBytes" #-------------------- -#: ../lib/XXV/MODULES/STATUS.pm:431 +#: ../lib/XXV/MODULES/STATUS.pm:432 msgid "TxPackets" msgstr "TxPackets" #-------------------- -#: ../lib/XXV/MODULES/STATUS.pm:432 +#: ../lib/XXV/MODULES/STATUS.pm:433 msgid "TxErrs" msgstr "TxErrs" #-------------------- -#: ../lib/XXV/MODULES/STATUS.pm:433 +#: ../lib/XXV/MODULES/STATUS.pm:434 msgid "TxDrop" msgstr "TxDrop" #-------------------- -#: ../lib/XXV/MODULES/STATUS.pm:500 -msgid "No on-chip cache." -msgstr "Kein On-Chip Cache." - -#-------------------- -#: ../lib/XXV/MODULES/STATUS.pm:52 +#: ../lib/XXV/MODULES/STATUS.pm:46 msgid "Interval in seconds to save data" msgstr "Abstand in den Sekunden, zum sich an die Daten zu erinnern" #-------------------- -#: ../lib/XXV/MODULES/STATUS.pm:57 +#: ../lib/XXV/MODULES/STATUS.pm:501 +msgid "No on-chip cache." +msgstr "Kein On-Chip Cache." + +#-------------------- +#: ../lib/XXV/MODULES/STATUS.pm:51 msgid "Save historical data, in hours" msgstr "Wie lang an die historischen Daten erinnert, in Stunden" #-------------------- -#: ../lib/XXV/MODULES/STATUS.pm:589 +#: ../lib/XXV/MODULES/STATUS.pm:590 msgid "Device" msgstr "Gerät" #-------------------- -#: ../lib/XXV/MODULES/STATUS.pm:590 +#: ../lib/XXV/MODULES/STATUS.pm:591 msgid "Model" msgstr "Modell" #-------------------- -#: ../lib/XXV/MODULES/STATUS.pm:591 ../lib/XXV/MODULES/STATUS.pm:717 +#: ../lib/XXV/MODULES/STATUS.pm:592 ../lib/XXV/MODULES/STATUS.pm:718 msgid "Capacity" msgstr "Kapazität" #-------------------- -#: ../lib/XXV/MODULES/STATUS.pm:592 +#: ../lib/XXV/MODULES/STATUS.pm:593 msgid "Cache" msgstr "Cache" #-------------------- -#: ../lib/XXV/MODULES/STATUS.pm:68 +#: ../lib/XXV/MODULES/STATUS.pm:62 msgid "Show collected data as diagram?" msgstr "Zeige gesammelte Daten als Diagramm?" #-------------------- -#: ../lib/XXV/MODULES/STATUS.pm:713 +#: ../lib/XXV/MODULES/STATUS.pm:69 +msgid "Display all relevant informations about this system" +msgstr "Zeigt alle relevanten Informationen über dieses System an" + +#-------------------- +#: ../lib/XXV/MODULES/STATUS.pm:714 msgid "Typ" msgstr "Type" #-------------------- -#: ../lib/XXV/MODULES/STATUS.pm:714 +#: ../lib/XXV/MODULES/STATUS.pm:715 msgid "Space" msgstr "Verfügbar" #-------------------- -#: ../lib/XXV/MODULES/STATUS.pm:715 +#: ../lib/XXV/MODULES/STATUS.pm:716 msgid "Used" msgstr "Benutzt" #-------------------- -#: ../lib/XXV/MODULES/STATUS.pm:716 +#: ../lib/XXV/MODULES/STATUS.pm:717 msgid "Free" msgstr "Frei" #-------------------- -#: ../lib/XXV/MODULES/STATUS.pm:718 +#: ../lib/XXV/MODULES/STATUS.pm:719 msgid "Mount" msgstr "Eingehängt auf" #-------------------- -#: ../lib/XXV/MODULES/STATUS.pm:75 -msgid "Display all relevant informations about this system" -msgstr "Zeigt alle relevanten Informationen über dieses System an" - -#-------------------- -#: ../lib/XXV/MODULES/STATUS.pm:793 +#: ../lib/XXV/MODULES/STATUS.pm:794 msgid "PANIC! Only %s%% space left on device %s" msgstr "PANIK! Nur noch %s%% freier Platz auf Gerät %s" #-------------------- -#: ../lib/XXV/MODULES/STATUS.pm:794 +#: ../lib/XXV/MODULES/STATUS.pm:795 msgid "Device has space %s from %s used!" msgstr "Gerät hat Platz %s von %s verwendet!" #-------------------- -#: ../lib/XXV/MODULES/STATUS.pm:96 +#: ../lib/XXV/MODULES/STATUS.pm:92 msgid "Display the vitals informations" msgstr "Zeigt die wichtigen Informationen" #-------------------- +#: ../lib/XXV/MODULES/STATUS.pm:97 +msgid "Displays network information" +msgstr "Zeigt die Informationen des Netzwerks" + +#-------------------- #: ../lib/XXV/MODULES/STREAM.pm:105 msgid "Stream widget height" msgstr "Streaming Widgethöhe" @@ -3905,12 +3890,12 @@ 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:192 +#: ../lib/XXV/MODULES/STREAM.pm:193 msgid "No channel defined for streaming!" msgstr "Kein Kanal für Streaming definiert!" #-------------------- -#: ../lib/XXV/MODULES/STREAM.pm:195 ../lib/XXV/MODULES/STREAM.pm:274 +#: ../lib/XXV/MODULES/STREAM.pm:196 ../lib/XXV/MODULES/STREAM.pm:276 msgid "Can't stream files!" msgstr "Kann Datei nicht streamen!" @@ -3920,17 +3905,17 @@ msgid "This module generate streams from recordings." msgstr "Dieses Modul erzeugt Streams von Aufnahmen." #-------------------- -#: ../lib/XXV/MODULES/STREAM.pm:262 +#: ../lib/XXV/MODULES/STREAM.pm:263 msgid "Unknown access method!" msgstr "Unbekannte Methode des Zugriffs!" #-------------------- -#: ../lib/XXV/MODULES/STREAM.pm:271 +#: ../lib/XXV/MODULES/STREAM.pm:273 msgid "No recording defined for streaming!" msgstr "Keine Aufnahme für Streaming definiert!" #-------------------- -#: ../lib/XXV/MODULES/STREAM.pm:279 ../lib/XXV/MODULES/STREAM.pm:302 ../lib/XXV/MODULES/STREAM.pm:308 +#: ../lib/XXV/MODULES/STREAM.pm:281 ../lib/XXV/MODULES/STREAM.pm:304 ../lib/XXV/MODULES/STREAM.pm:310 msgid "Couldn't find recording: '%s'" msgstr "Konnte Aufnahme '%s' nicht finden" @@ -4045,132 +4030,157 @@ msgid "This module module manages connection to video disk recorder." msgstr "Das Modul verwaltet die Verbindung zu den Video Disk Rekordern." #-------------------- -#: ../lib/XXV/MODULES/SVDRP.pm:198 ../lib/XXV/MODULES/SVDRP.pm:279 +#: ../lib/XXV/MODULES/SVDRP.pm:201 ../lib/XXV/MODULES/SVDRP.pm:284 msgid "Definition of video disk recorder '%s' does not exist in the database!" msgstr "Definition '%s' des Video Disk Rekorder existiert nicht in der Datenbank!" #-------------------- -#: ../lib/XXV/MODULES/SVDRP.pm:210 +#: ../lib/XXV/MODULES/SVDRP.pm:213 msgid "Activate this definition" msgstr "Aktiviere diese Definition" #-------------------- -#: ../lib/XXV/MODULES/SVDRP.pm:214 +#: ../lib/XXV/MODULES/SVDRP.pm:217 msgid "Host or IP address of video disk recorder" msgstr "Host bzw. IP-Adresse des Video Disk Rekorder" #-------------------- -#: ../lib/XXV/MODULES/SVDRP.pm:220 +#: ../lib/XXV/MODULES/SVDRP.pm:223 msgid "Used Port of SVDRP" msgstr "Verwendeter SVDRP Port" #-------------------- -#: ../lib/XXV/MODULES/SVDRP.pm:235 +#: ../lib/XXV/MODULES/SVDRP.pm:238 msgid "Use as primary video disk recorder" msgstr "Verwende als primären Video Disk Rekorder" #-------------------- -#: ../lib/XXV/MODULES/SVDRP.pm:238 +#: ../lib/XXV/MODULES/SVDRP.pm:241 msgid "List of present source of DVB cards. (eg. S19.2E,S19.2E,T,T )" msgstr "Liste der vorhandenen Quellen der DVB Karten. (z.B. S19.2E,S19.2E,T,T )" #-------------------- -#: ../lib/XXV/MODULES/SVDRP.pm:245 +#: ../lib/XXV/MODULES/SVDRP.pm:248 msgid "Edit video disk recorder definition" msgstr "Bearbeiten der Video Disk Rekorder Definition" #-------------------- -#: ../lib/XXV/MODULES/SVDRP.pm:246 +#: ../lib/XXV/MODULES/SVDRP.pm:249 msgid "Create new video disk recorder definition" msgstr "Erzeuge neue Video Disk Rekorder Definition" #-------------------- -#: ../lib/XXV/MODULES/SVDRP.pm:26 -msgid "Connection timeout defines after how many seconds an unrequited connection is terminated." -msgstr "Nach wievielen Sekunden wird eine unerwiderte Verbindung beendet." - -#-------------------- -#: ../lib/XXV/MODULES/SVDRP.pm:265 +#: ../lib/XXV/MODULES/SVDRP.pm:268 msgid "Video disk recorder definition saved!" msgstr "Video Disk Rekorder Definition wurde gespeichert!" #-------------------- -#: ../lib/XXV/MODULES/SVDRP.pm:275 +#: ../lib/XXV/MODULES/SVDRP.pm:27 +msgid "Connection timeout defines after how many seconds an unrequited connection is terminated." +msgstr "Nach wievielen Sekunden wird eine unerwiderte Verbindung beendet." + +#-------------------- +#: ../lib/XXV/MODULES/SVDRP.pm:280 msgid "No definition of video disk recorder for deletion! Please use sdelete 'id'." msgstr "Keine Definition eines Video Disk Rekorder zum Löschen! Bitte verwende sdelete 'id'." #-------------------- -#: ../lib/XXV/MODULES/SVDRP.pm:285 +#: ../lib/XXV/MODULES/SVDRP.pm:290 msgid "Definition of video disk recorder are %s deleted." msgstr "Definition '%s' des Video Disk Rekorder wurde gelöscht." #-------------------- -#: ../lib/XXV/MODULES/SVDRP.pm:316 +#: ../lib/XXV/MODULES/SVDRP.pm:322 msgid "Primary" msgstr "Primär" #-------------------- -#: ../lib/XXV/MODULES/SVDRP.pm:317 +#: ../lib/XXV/MODULES/SVDRP.pm:323 msgid "Host" msgstr "Host" #-------------------- -#: ../lib/XXV/MODULES/SVDRP.pm:318 +#: ../lib/XXV/MODULES/SVDRP.pm:324 msgid "Typ of Cards" msgstr "Art von Karten" #-------------------- -#: ../lib/XXV/MODULES/SVDRP.pm:34 +#: ../lib/XXV/MODULES/SVDRP.pm:35 msgid "List defined video disk recorder." msgstr "Zeige Definition der Video Disk Rekorder" #-------------------- -#: ../lib/XXV/MODULES/SVDRP.pm:40 +#: ../lib/XXV/MODULES/SVDRP.pm:41 msgid "Create new video disk recorder definition." msgstr "Erzeuge neue Video Disk Rekorder Definition" #-------------------- -#: ../lib/XXV/MODULES/SVDRP.pm:46 +#: ../lib/XXV/MODULES/SVDRP.pm:47 msgid "Delete video disk recorder definition 'id'" msgstr "Lösche Video Disk Rekorder Definition 'id'" #-------------------- -#: ../lib/XXV/MODULES/SVDRP.pm:52 +#: ../lib/XXV/MODULES/SVDRP.pm:53 msgid "Edit video disk recorder definition 'id'" msgstr "Bearbeiten Video Disk Rekorder Definition 'id'" #-------------------- -#: ../lib/XXV/MODULES/SVDRP.pm:534 +#: ../lib/XXV/MODULES/SVDRP.pm:549 msgid "None video disk recorder defined in the database." msgstr "Kein Video Disk Rekorder in der Datenbank definiert." #-------------------- -#: ../lib/XXV/MODULES/SVDRP.pm:58 +#: ../lib/XXV/MODULES/SVDRP.pm:59 msgid "Status from video disk recorder." msgstr "Status des Video Disk Rekorder." #-------------------- -#: ../lib/XXV/MODULES/SVDRP.pm:627 +#: ../lib/XXV/MODULES/SVDRP.pm:642 msgid "Error at command '%s' to %s:%s! %s" msgstr "Fehler im Kommando '%s' %s:%s! %s" #-------------------- -#: ../lib/XXV/MODULES/SVDRP.pm:65 +#: ../lib/XXV/MODULES/SVDRP.pm:66 msgid "Send a command to video disk recorder." msgstr "Sende Befehl an Video Disk Rekorder." #-------------------- -#: ../lib/XXV/MODULES/SVDRP.pm:679 +#: ../lib/XXV/MODULES/SVDRP.pm:696 msgid "No command defined! Please use scommand 'cmd'." msgstr "Kein Kommando definiert! Bitte verwende scommand 'cmd'" #-------------------- +#: ../lib/XXV/MODULES/SVDRP.pm:718 +msgid "Recorder" +msgstr "Rekorder" + +#-------------------- +#: ../lib/XXV/MODULES/SVDRP.pm:719 +msgid "State" +msgstr "Status" + +#-------------------- +#: ../lib/XXV/MODULES/SVDRP.pm:739 +msgid "Online" +msgstr "Verbunden" + +#-------------------- +#: ../lib/XXV/MODULES/SVDRP.pm:741 +msgid "Offline" +msgstr "Keine Verbindung" + +#-------------------- +#: ../lib/XXV/MODULES/SVDRP.pm:750 +msgid "%d active recorder" +msgstr "%d aktive Rekorder" + +#-------------------- #: ../lib/XXV/MODULES/TELNET.pm:19 msgid "This module is a multisession telnet server." msgstr "Dieses Modul ist ein Mehrfachsitzungstelnet-Server." #-------------------- -#: ../lib/XXV/MODULES/TELNET.pm:204 +#: ../lib/XXV/MODULES/TELNET.pm:192 msgid "" "Welcome to xxv system version: %s.\\r\n" "This is session %s.\\r\n" @@ -4179,17 +4189,17 @@ msgstr "" "Das ist Sitzung %s.\\r\n" #-------------------- -#: ../lib/XXV/MODULES/TELNET.pm:213 +#: ../lib/XXV/MODULES/TELNET.pm:201 msgid "Welcome to xxv system." msgstr "Willkommen im xxv-System." #-------------------- -#: ../lib/XXV/MODULES/TELNET.pm:217 +#: ../lib/XXV/MODULES/TELNET.pm:205 msgid "Welcome to xxv system. Please Login:" msgstr "Willkommen im xxv-System. Bitte Anmelden:" #-------------------- -#: ../lib/XXV/MODULES/TELNET.pm:223 +#: ../lib/XXV/MODULES/TELNET.pm:211 msgid "Sorry, but permission denied!" msgstr "Entschuldigung, aber Erlaubnis verweigert!" @@ -4199,84 +4209,109 @@ msgid "Number of port to listen for telnet clients" msgstr "Nummer des Port, um auf Telnet-Clients zu lauschen" #-------------------- -#: ../lib/XXV/MODULES/TELNET.pm:52 -msgid "This will exit the telnet session" -msgstr "Das beendet die Telnetsitzung" - -#-------------------- -#: ../lib/XXV/MODULES/TELNET.pm:57 ../lib/XXV/MODULES/USER.pm:108 -msgid "Session closed." -msgstr "Sitzung geschlossen." - -#-------------------- -#: ../lib/XXV/MODULES/TELNET.pm:62 ../lib/XXV/MODULES/TELNET.pm:73 +#: ../lib/XXV/MODULES/TELNET.pm:52 ../lib/XXV/MODULES/TELNET.pm:63 msgid "This will exit the xxv system." msgstr "Das wird das xxv-System beenden." #-------------------- -#: ../lib/XXV/MODULES/TELNET.pm:70 +#: ../lib/XXV/MODULES/TELNET.pm:60 msgid "Are you sure to exit the xxv system?" msgstr "Sind Sie sicher, das XXV-System zu beenden?" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:104 -msgid "Activate/Deactive timer 'tid'" -msgstr "Aktiviere/Deaktiviere Timer 'tid'" +#: ../lib/XXV/MODULES/TIMERS.pm:100 +msgid "Change timers if EPG entries change" +msgstr "Timer justieren, wenn EPG Eintrag verändert wurde" + +#-------------------- +#: ../lib/XXV/MODULES/TIMERS.pm:1014 +msgid "No timer to toggle!" +msgstr "Kein Timer zum Umschalten!" + +#-------------------- +#: ../lib/XXV/MODULES/TIMERS.pm:107 +msgid "List timers 'tid'" +msgstr "Zeige Timer 'tid'" + +#-------------------- +#: ../lib/XXV/MODULES/TIMERS.pm:113 +msgid "Search timers 'text'" +msgstr "Suche Timer 'text'" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:1115 +#: ../lib/XXV/MODULES/TIMERS.pm:1163 msgid "%d timer written to database." msgstr "%d Timer in Datenbank geschrieben." #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:144 -msgid "New timer: %s" -msgstr "Neuer Timer: %s" +#: ../lib/XXV/MODULES/TIMERS.pm:119 +msgid "Read timers and write them to the database" +msgstr "Lese Timer und schreibe sie in die Datenbank" + +#-------------------- +#: ../lib/XXV/MODULES/TIMERS.pm:126 +msgid "Create timer 'eid'" +msgstr "Erzeuge Timer 'eid'" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:1494 +#: ../lib/XXV/MODULES/TIMERS.pm:133 +msgid "Edit timer 'tid'" +msgstr "Bearbeite Timer 'tid'" + +#-------------------- +#: ../lib/XXV/MODULES/TIMERS.pm:140 +msgid "Delete timer 'tid'" +msgstr "Lösche Timer 'tid'" + +#-------------------- +#: ../lib/XXV/MODULES/TIMERS.pm:147 +msgid "Activate/Deactive timer 'tid'" +msgstr "Aktiviere/Deaktiviere Timer 'tid'" + +#-------------------- +#: ../lib/XXV/MODULES/TIMERS.pm:1546 msgid "Adjust timer : %s" msgstr "Anpassen des Timer : %s" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:1496 +#: ../lib/XXV/MODULES/TIMERS.pm:1548 msgid "Adjust times from %s to %s" msgstr "Anpassen der Zeiten von %s nach %s" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:166 -msgid "Timer deleted: %s" -msgstr "Timer gelöscht: %s" - -#-------------------- #: ../lib/XXV/MODULES/TIMERS.pm:18 msgid "This module reads timers and saves it to the database." msgstr "Diese Modul liest die timers.conf und speichert sie in der Datenbank." #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:197 -msgid "Timer activated: %s" -msgstr "Timer aktiviert: %s" - -#-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:199 -msgid "Timer deactivated: %s" -msgstr "Timer deaktiviert: %s" +#: ../lib/XXV/MODULES/TIMERS.pm:187 +msgid "New timer: %s" +msgstr "Neuer Timer: %s" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:2018 +#: ../lib/XXV/MODULES/TIMERS.pm:2071 msgid "Channel: %s" msgstr "Kanal: %s" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:2023 +#: ../lib/XXV/MODULES/TIMERS.pm:2076 msgid "On: %s to %s" msgstr "Um: %s bis %s" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:238 -msgid "%d timer exists." -msgstr "Es exisiteren %d Timer." +#: ../lib/XXV/MODULES/TIMERS.pm:209 +msgid "Timer deleted: %s" +msgstr "Timer gelöscht: %s" + +#-------------------- +#: ../lib/XXV/MODULES/TIMERS.pm:240 +msgid "Timer activated: %s" +msgstr "Timer aktiviert: %s" + +#-------------------- +#: ../lib/XXV/MODULES/TIMERS.pm:242 +msgid "Timer deactivated: %s" +msgstr "Timer deaktiviert: %s" #-------------------- #: ../lib/XXV/MODULES/TIMERS.pm:26 @@ -4284,132 +4319,102 @@ msgid "How often timers are to be updated (in seconds)" msgstr "Wie oft sollen Timer aktualisiert werden (in Sekunden)" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:42 -msgid "Priority of a timer for recordings when creating a new timer" -msgstr "Die Priorität eines Timers für Aufnahmen, bei Erzeugen eines neuen Timer" - -#-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:47 -msgid "The guaranteed lifetime (in days) of a recording created by this timer" -msgstr "Die garantierte Lebenszeit (in Tagen) einer Aufnahme, die durch diesen Timer erzeugt wurde" +#: ../lib/XXV/MODULES/TIMERS.pm:280 +msgid "%d timer exists." +msgstr "Es exisiteren %d Timer." #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:478 +#: ../lib/XXV/MODULES/TIMERS.pm:522 msgid "Event '%s' does not exist in the database!" msgstr "Sendung '%s' existiert nicht in der Datenbank!" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:494 ../lib/XXV/MODULES/TIMERS.pm:737 +#: ../lib/XXV/MODULES/TIMERS.pm:538 ../lib/XXV/MODULES/TIMERS.pm:782 msgid "New timer" msgstr "Neuer Timer" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:52 -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:543 ../lib/XXV/MODULES/TIMERS.pm:860 ../lib/XXV/MODULES/TIMERS.pm:938 +#: ../lib/XXV/MODULES/TIMERS.pm:588 ../lib/XXV/MODULES/TIMERS.pm:907 ../lib/XXV/MODULES/TIMERS.pm:986 msgid "Timer '%s' does not exist in the database!" msgstr "Timer '%s' existiert nicht in der Datenbank!" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:57 -msgid "Change timers if EPG entries change" -msgstr "Timer justieren, wenn EPG Eintrag verändert wurde" - -#-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:573 +#: ../lib/XXV/MODULES/TIMERS.pm:618 msgid "Enable this timer" msgstr "Aktiviere diesen Timer" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:578 +#: ../lib/XXV/MODULES/TIMERS.pm:623 msgid "Use PDC time to control timer" msgstr "Verwende VPS Zeit zum Überwachen des Timers" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:589 +#: ../lib/XXV/MODULES/TIMERS.pm:634 ../lib/XXV/MODULES/XMLTV.pm:532 msgid "Which video disk recorder should record" msgstr "Welcher Video Disk Recorder soll aufzeichen" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:595 +#: ../lib/XXV/MODULES/TIMERS.pm:640 msgid "Which channel should recorded" msgstr "Welcher Kanal soll aufgezeichnet werden" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:617 +#: ../lib/XXV/MODULES/TIMERS.pm:662 msgid "%Y-%m-%d" msgstr "%d.%m.%Y" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:623 +#: ../lib/XXV/MODULES/TIMERS.pm:668 msgid "Enter a day or weekday in format 'MTWTFSS'." msgstr "Datum oder Wochentag im Format 'MDMDFSS' eingeben." #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:64 -msgid "List timers 'tid'" -msgstr "Zeige Timer 'tid'" - -#-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:70 -msgid "Search timers 'text'" -msgstr "Suche Timer 'text'" +#: ../lib/XXV/MODULES/TIMERS.pm:68 +msgid "Priority of a timer for recordings when creating a new timer" +msgstr "Die Priorität eines Timers für Aufnahmen, bei Erzeugen eines neuen Timer" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:736 +#: ../lib/XXV/MODULES/TIMERS.pm:781 msgid "Edit timer" msgstr "Timer bearbeiten" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:76 -msgid "Read timers and write them to the database" -msgstr "Lese Timer und schreibe sie in die Datenbank" +#: ../lib/XXV/MODULES/TIMERS.pm:81 +msgid "The guaranteed lifetime (in days) of a recording created by this timer" +msgstr "Die garantierte Lebenszeit (in Tagen) einer Aufnahme, die durch diesen Timer erzeugt wurde" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:802 +#: ../lib/XXV/MODULES/TIMERS.pm:849 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:83 -msgid "Create timer 'eid'" -msgstr "Erzeuge Timer 'eid'" - -#-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:876 +#: ../lib/XXV/MODULES/TIMERS.pm:923 msgid "No timer to delete!" msgstr "Kein Timer zum Löschen!" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:887 +#: ../lib/XXV/MODULES/TIMERS.pm:935 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:90 -msgid "Edit timer 'tid'" -msgstr "Bearbeite Timer 'tid'" - -#-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:966 -msgid "No timer to toggle!" -msgstr "Kein Timer zum Umschalten!" - -#-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:97 -msgid "Delete timer 'tid'" -msgstr "Lösche Timer 'tid'" +#: ../lib/XXV/MODULES/TIMERS.pm:94 +msgid "Use Programme Delivery Control (PDC) to control start time" +msgstr "Verwende Video Program System (VPS) zum Überwachen der Startzeit" #-------------------- -#: ../lib/XXV/MODULES/USER.pm:102 +#: ../lib/XXV/MODULES/USER.pm:103 msgid "Log out from current session." msgstr "Abmelden von der aktuellen Sitzung." #-------------------- -#: ../lib/XXV/MODULES/USER.pm:21 +#: ../lib/XXV/MODULES/USER.pm:110 +msgid "Session closed." +msgstr "Sitzung geschlossen." + +#-------------------- +#: ../lib/XXV/MODULES/USER.pm:22 msgid "" "This module manages the User administration.\n" "You may set a level for the whole module with \n" @@ -4422,202 +4427,207 @@ msgstr "" "oder es wird der selbe Parameter für jede Funktion gesetzt." #-------------------- -#: ../lib/XXV/MODULES/USER.pm:260 ../lib/XXV/MODULES/USER.pm:342 ../lib/XXV/MODULES/USER.pm:505 -msgid "User account '%s' does not exist in the database!" -msgstr "Account für Benutzer '%s' existiert nicht in der Datenbank!" +#: ../lib/XXV/MODULES/USER.pm:260 +msgid "This account has'nt own preferences!" +msgstr "Dieser Account hat keine eigenen Einstellungen!" #-------------------- -#: ../lib/XXV/MODULES/USER.pm:271 ../lib/XXV/MODULES/USER.pm:368 -msgid "Password for this account" -msgstr "Passwort für diesen Anwenderzugang" +#: ../lib/XXV/MODULES/USER.pm:265 +msgid "You are not authorized for change external account preferences!" +msgstr "Sie sind nicht berechtigt, fremde Einstellungen zu ändern!" #-------------------- -#: ../lib/XXV/MODULES/USER.pm:292 -msgid "Personal preferences for this user: ModName::Param=value, " -msgstr "Persönliche Einstellungen für diese Anwender: ModName::Param=wert, " +#: ../lib/XXV/MODULES/USER.pm:271 ../lib/XXV/MODULES/USER.pm:407 ../lib/XXV/MODULES/USER.pm:576 +msgid "User account '%s' does not exist in the database!" +msgstr "Account für Benutzer '%s' existiert nicht in der Datenbank!" #-------------------- -#: ../lib/XXV/MODULES/USER.pm:300 ../lib/XXV/MODULES/USER.pm:440 -msgid "The parameter '%s' in module '%s' does not exist!" -msgstr "Der Parameter '%s' in Modul '%s' existiert nicht!" +#: ../lib/XXV/MODULES/USER.pm:282 ../lib/XXV/MODULES/USER.pm:433 +msgid "Password for this account" +msgstr "Passwort für diesen Anwenderzugang" #-------------------- -#: ../lib/XXV/MODULES/USER.pm:31 +#: ../lib/XXV/MODULES/USER.pm:32 msgid "Enable user authentication" msgstr "Aktiviert die Anwenderauthentifizierung" #-------------------- -#: ../lib/XXV/MODULES/USER.pm:310 +#: ../lib/XXV/MODULES/USER.pm:347 msgid "Edit preferences: %s" msgstr "Einstellungen für diese Anwender bearbeiten: %s" #-------------------- -#: ../lib/XXV/MODULES/USER.pm:317 ../lib/XXV/MODULES/USER.pm:486 +#: ../lib/XXV/MODULES/USER.pm:37 +msgid "IP addresses with user authentification" +msgstr "IP Adressen mit Benutzer-Authentifizierung" + +#-------------------- +#: ../lib/XXV/MODULES/USER.pm:381 ../lib/XXV/MODULES/USER.pm:556 msgid "User account saved!" msgstr "Anwenderzugang wurde gespeichert!" #-------------------- -#: ../lib/XXV/MODULES/USER.pm:320 +#: ../lib/XXV/MODULES/USER.pm:384 msgid "Please wait ... refreshing interface!" msgstr "Bitte warten ... die Anwenderoberfläche wird aktualisiert!" #-------------------- -#: ../lib/XXV/MODULES/USER.pm:351 +#: ../lib/XXV/MODULES/USER.pm:416 msgid "Administrator" msgstr "Verwalter" #-------------------- -#: ../lib/XXV/MODULES/USER.pm:353 +#: ../lib/XXV/MODULES/USER.pm:418 msgid "Guest" msgstr "Gast" #-------------------- -#: ../lib/XXV/MODULES/USER.pm:36 -msgid "IP addresses with user authentification" -msgstr "IP Adressen mit Benutzer-Authentifizierung" - -#-------------------- -#: ../lib/XXV/MODULES/USER.pm:362 +#: ../lib/XXV/MODULES/USER.pm:427 msgid "Name of user account" msgstr "Name für diesen Anwenderzugang" #-------------------- -#: ../lib/XXV/MODULES/USER.pm:392 +#: ../lib/XXV/MODULES/USER.pm:44 ../lib/XXV/MODULES/USER.pm:58 +msgid "Your IP number (%s) is wrong! You need an IP in range (xxx.xxx.xxx.xxx/xx)" +msgstr "Ihr IP Number (%s) ist falsch! Sie benötigen ein IP mit Bereich (xxx.xxx.xxx.xxx/xx)" + +#-------------------- +#: ../lib/XXV/MODULES/USER.pm:457 msgid "Level for this account" msgstr "Berechtigungen für diesen Anwenderzugang" #-------------------- -#: ../lib/XXV/MODULES/USER.pm:412 +#: ../lib/XXV/MODULES/USER.pm:477 msgid "Deny class of commands" msgstr "Verweigere Gruppierung von Kommandos" #-------------------- -#: ../lib/XXV/MODULES/USER.pm:43 ../lib/XXV/MODULES/USER.pm:57 -msgid "Your IP number (%s) is wrong! You need an IP in range (xxx.xxx.xxx.xxx/xx)" -msgstr "Ihr IP Number (%s) ist falsch! Sie benötigen ein IP mit Bereich (xxx.xxx.xxx.xxx/xx)" - -#-------------------- -#: ../lib/XXV/MODULES/USER.pm:432 +#: ../lib/XXV/MODULES/USER.pm:500 msgid "Preferences for this User: ModName::Param=value, " msgstr "Präferenzen für diesen Benutzer: ModName::Param=value, " #-------------------- -#: ../lib/XXV/MODULES/USER.pm:448 +#: ../lib/XXV/MODULES/USER.pm:51 +msgid "IP addresses without user authentification" +msgstr "IP Adressen ohne Benutzer-Authentifizierung" + +#-------------------- +#: ../lib/XXV/MODULES/USER.pm:510 +msgid "The parameter '%s' in module '%s' does not exist!" +msgstr "Der Parameter '%s' in Modul '%s' existiert nicht!" + +#-------------------- +#: ../lib/XXV/MODULES/USER.pm:518 msgid "Maximum permitted value for lifetime with timers" msgstr "Maximal erlaubter Wert für Lebenszeit bei Timern" #-------------------- -#: ../lib/XXV/MODULES/USER.pm:454 ../lib/XXV/MODULES/USER.pm:466 +#: ../lib/XXV/MODULES/USER.pm:524 ../lib/XXV/MODULES/USER.pm:536 msgid "This value is not an integer or not between 0 and 100" msgstr "Dieser Wert ist keine Zahl oder liegt nicht zwischen 0 und 100" #-------------------- -#: ../lib/XXV/MODULES/USER.pm:460 +#: ../lib/XXV/MODULES/USER.pm:530 msgid "Maximum permitted value for priority with timers" msgstr "Maximal erlaubter Wert für Priorität bei Timern" #-------------------- -#: ../lib/XXV/MODULES/USER.pm:474 +#: ../lib/XXV/MODULES/USER.pm:544 msgid "Edit user account" msgstr "Bearbeiten des Anwenderzugang" #-------------------- -#: ../lib/XXV/MODULES/USER.pm:475 ../lib/XXV/MODULES/USER.pm:72 +#: ../lib/XXV/MODULES/USER.pm:545 ../lib/XXV/MODULES/USER.pm:73 msgid "Create new user account" msgstr "Erzeugt einen neuen Anwenderzugang" #-------------------- -#: ../lib/XXV/MODULES/USER.pm:50 -msgid "IP addresses without user authentification" -msgstr "IP Adressen ohne Benutzer-Authentifizierung" - -#-------------------- -#: ../lib/XXV/MODULES/USER.pm:501 +#: ../lib/XXV/MODULES/USER.pm:572 msgid "No user account defined for deletion! Please use udelete 'uid'." msgstr "Keine ID eines Anwenderzuganges zum Löschen definiert! Bitte verwende udelete 'uid'" #-------------------- -#: ../lib/XXV/MODULES/USER.pm:506 +#: ../lib/XXV/MODULES/USER.pm:577 msgid "User account %s deleted." msgstr "Anwenderzugang %s wurde gelöscht" #-------------------- -#: ../lib/XXV/MODULES/USER.pm:528 +#: ../lib/XXV/MODULES/USER.pm:600 msgid "Level" msgstr "Ebene" #-------------------- -#: ../lib/XXV/MODULES/USER.pm:530 +#: ../lib/XXV/MODULES/USER.pm:602 msgid "User preferences" msgstr "Anwendereinstellungen" #-------------------- -#: ../lib/XXV/MODULES/USER.pm:64 +#: ../lib/XXV/MODULES/USER.pm:65 msgid "common directory for temporary images" msgstr "Gemeinsames Verzeichnis für temporäre Bilder" #-------------------- -#: ../lib/XXV/MODULES/USER.pm:770 +#: ../lib/XXV/MODULES/USER.pm:79 +msgid "Delete user account 'uid'" +msgstr "Lösche eine Anwenderzugang 'uid'" + +#-------------------- +#: ../lib/XXV/MODULES/USER.pm:810 msgid "Sorry, but the module %s is inactive! Enable it with %s:Preferences:active = y" msgstr "Entschuldigung, aber das Modul %s ist inaktiv! Aktiviere es mit %s:Preferences:active = y" #-------------------- -#: ../lib/XXV/MODULES/USER.pm:778 +#: ../lib/XXV/MODULES/USER.pm:818 msgid "You are not authorized for this function!" msgstr "Sie sind nicht berechtigt, diese Funktion auszuführen!" #-------------------- -#: ../lib/XXV/MODULES/USER.pm:78 -msgid "Delete user account 'uid'" -msgstr "Lösche eine Anwenderzugang 'uid'" - -#-------------------- -#: ../lib/XXV/MODULES/USER.pm:785 +#: ../lib/XXV/MODULES/USER.pm:825 msgid "Sorry, couldn't understand command '%s'!\n" msgstr "Entschuldigung, der Befehl '%s' konnte nicht verstanden werden!\n" #-------------------- -#: ../lib/XXV/MODULES/USER.pm:84 +#: ../lib/XXV/MODULES/USER.pm:85 msgid "Edit user account 'uid'" msgstr "Bearbeiten eine Anwenderzugang 'uid'" #-------------------- -#: ../lib/XXV/MODULES/USER.pm:90 +#: ../lib/XXV/MODULES/USER.pm:91 msgid "Change preferences" msgstr "Die eigenen Einstellungen verändern" #-------------------- -#: ../lib/XXV/MODULES/USER.pm:96 +#: ../lib/XXV/MODULES/USER.pm:97 msgid "List the accounts of users" msgstr "Zeige die Anwenderzugänge" #-------------------- -#: ../lib/XXV/MODULES/VTX.pm:1117 ../lib/XXV/MODULES/VTX.pm:1145 ../lib/XXV/MODULES/VTX.pm:1157 +#: ../lib/XXV/MODULES/VTX.pm:1120 ../lib/XXV/MODULES/VTX.pm:1148 ../lib/XXV/MODULES/VTX.pm:1160 msgid "Couldn't read page!" msgstr "Die Seite konnte nicht gelesen werden!" #-------------------- -#: ../lib/XXV/MODULES/VTX.pm:1127 ../lib/XXV/MODULES/VTX.pm:490 +#: ../lib/XXV/MODULES/VTX.pm:1130 ../lib/XXV/MODULES/VTX.pm:493 msgid "Couldn't find page!" msgstr "Die Seite konnte nicht gefunden werden!" #-------------------- -#: ../lib/XXV/MODULES/VTX.pm:115 ../lib/XXV/MODULES/VTX.pm:150 +#: ../lib/XXV/MODULES/VTX.pm:116 ../lib/XXV/MODULES/VTX.pm:152 msgid "None channel selected, missing base directory!" msgstr "Kein Kanal gewählt, vermisse Basisverzeichnis!" #-------------------- -#: ../lib/XXV/MODULES/VTX.pm:136 +#: ../lib/XXV/MODULES/VTX.pm:137 msgid "None channel selected, empty base directory!" msgstr "Kein Kanal gewählt, Basisverzeichnis leer!" #-------------------- -#: ../lib/XXV/MODULES/VTX.pm:1395 +#: ../lib/XXV/MODULES/VTX.pm:1399 msgid "No data to search given!" msgstr "Keine Daten zum Suchen übergeben!" #-------------------- -#: ../lib/XXV/MODULES/VTX.pm:1423 +#: ../lib/XXV/MODULES/VTX.pm:1427 msgid "No page with '%s' found!" msgstr "Keine Seite mit '%s' gefunden!" @@ -4627,12 +4637,12 @@ msgid "This module display cached teletext pages from osdteletext-plugin." msgstr "Diese Modul zeigt gespeicherte Videotextseiten des Plugin OSDTeletext an." #-------------------- -#: ../lib/XXV/MODULES/VTX.pm:217 ../lib/XXV/MODULES/VTX.pm:243 +#: ../lib/XXV/MODULES/VTX.pm:219 ../lib/XXV/MODULES/VTX.pm:245 msgid "No data found for '%s'!" msgstr "Keine Daten für '%s' gefunden!" #-------------------- -#: ../lib/XXV/MODULES/VTX.pm:240 +#: ../lib/XXV/MODULES/VTX.pm:242 msgid "Channel '%s' selected." msgstr "Kanal '%s' wurde gewählt." @@ -4680,7 +4690,7 @@ msgid "Number of port to listen for wap clients" msgstr "Nummer des Port, um auf WAP-Clients zu lauschen" #-------------------- -#: ../lib/XXV/MODULES/XMLTV.pm:201 +#: ../lib/XXV/MODULES/XMLTV.pm:202 msgid "Import epg data from xmltv sources ..." msgstr "Importiere EPG Daten von XMLTV Quellen" @@ -4690,17 +4700,17 @@ msgid "This module import epg data from xmltv sources." msgstr "Dieses Modul importiert EPG Daten von XMLTV Quellen." #-------------------- -#: ../lib/XXV/MODULES/XMLTV.pm:260 +#: ../lib/XXV/MODULES/XMLTV.pm:271 msgid "Import epg data for channel '%s'" msgstr "Importiere EPG Daten für Kanal '%s'" #-------------------- -#: ../lib/XXV/MODULES/XMLTV.pm:291 +#: ../lib/XXV/MODULES/XMLTV.pm:312 msgid "Transmit data." msgstr "Übertrage Daten." #-------------------- -#: ../lib/XXV/MODULES/XMLTV.pm:304 +#: ../lib/XXV/MODULES/XMLTV.pm:326 msgid "None data exits to import" msgstr "Keine Daten zum Importieren vorhanden." @@ -4710,7 +4720,7 @@ msgid "Manual import epg data from xmltv sources." msgstr "Manueller Import der EPG Daten von XMLTV Quellen." #-------------------- -#: ../lib/XXV/MODULES/XMLTV.pm:373 +#: ../lib/XXV/MODULES/XMLTV.pm:395 msgid "Title not available" msgstr "Titel nicht verfügbar" @@ -4720,122 +4730,122 @@ msgid "List rules to import epg data from xmltv sources." msgstr "Zeige Regeln zum Importieren von EPG-Daten von XMLTV Quellen." #-------------------- -#: ../lib/XXV/MODULES/XMLTV.pm:473 ../lib/XXV/MODULES/XMLTV.pm:639 +#: ../lib/XXV/MODULES/XMLTV.pm:497 ../lib/XXV/MODULES/XMLTV.pm:666 msgid "Rule to import epg data from xmltv sources with ID '%s' does not exist in the database!" msgstr "Regel zum Importieren von EPG-Daten von XMLTV Quellen mit ID '%s' existiert nicht in der Datenbank!" #-------------------- -#: ../lib/XXV/MODULES/XMLTV.pm:489 +#: ../lib/XXV/MODULES/XMLTV.pm:51 +msgid "Create rule to import epg data from xmltv sources." +msgstr "Erzeuge Regel zum Importieren von EPG-Daten aus einer XMLTV Quelle." + +#-------------------- +#: ../lib/XXV/MODULES/XMLTV.pm:514 msgid "Enable this rule" msgstr "Aktiviere Regel" #-------------------- -#: ../lib/XXV/MODULES/XMLTV.pm:492 +#: ../lib/XXV/MODULES/XMLTV.pm:517 msgid "Source to import?" msgstr "Quelle zum Importieren?" #-------------------- -#: ../lib/XXV/MODULES/XMLTV.pm:499 +#: ../lib/XXV/MODULES/XMLTV.pm:524 msgid "Limit import by this channel name inside xmltv source?" msgstr "Begrenze Import auf diesen Kanalnamen innerhalb der XMLTV Quelle!" #-------------------- -#: ../lib/XXV/MODULES/XMLTV.pm:507 +#: ../lib/XXV/MODULES/XMLTV.pm:538 msgid "Assign data to channel?" msgstr "Weise Daten einen Kanal zu?" #-------------------- -#: ../lib/XXV/MODULES/XMLTV.pm:51 -msgid "Create rule to import epg data from xmltv sources." -msgstr "Erzeuge Regel zum Importieren von EPG-Daten aus einer XMLTV Quelle." - -#-------------------- -#: ../lib/XXV/MODULES/XMLTV.pm:526 +#: ../lib/XXV/MODULES/XMLTV.pm:552 msgid "Parse data as template?" msgstr "Übersetzte Daten als Template?" #-------------------- -#: ../lib/XXV/MODULES/XMLTV.pm:536 +#: ../lib/XXV/MODULES/XMLTV.pm:562 msgid "Interval to parse data?" msgstr "Intervall zum Lesen der Daten?" #-------------------- -#: ../lib/XXV/MODULES/XMLTV.pm:548 +#: ../lib/XXV/MODULES/XMLTV.pm:574 msgid "Edit rule to import epg data from xmltv sources" msgstr "Bearbeite Regel zum Importieren von EPG-Daten aus einer XMLTV Quelle." #-------------------- -#: ../lib/XXV/MODULES/XMLTV.pm:549 +#: ../lib/XXV/MODULES/XMLTV.pm:575 msgid "Create a new rule to import epg data from xmltv sources" msgstr "Erzeuge neue Regel zum Importieren von EPG-Daten aus einer XMLTV Quelle." #-------------------- -#: ../lib/XXV/MODULES/XMLTV.pm:557 -msgid "Rule to import epg data from xmltv sources saved!" -msgstr "Regel zum Importieren von EPG-Daten aus einer XMLTV Quelle gespeichert!" - -#-------------------- #: ../lib/XXV/MODULES/XMLTV.pm:58 msgid "Delete rule to import epg data from xmltv sources." msgstr "Lösche Regel zum Importieren von EPG-Daten aus einer XMLTV Quelle." #-------------------- -#: ../lib/XXV/MODULES/XMLTV.pm:599 ../lib/XXV/MODULES/XMLTV.pm:606 +#: ../lib/XXV/MODULES/XMLTV.pm:583 +msgid "Rule to import epg data from xmltv sources saved!" +msgstr "Regel zum Importieren von EPG-Daten aus einer XMLTV Quelle gespeichert!" + +#-------------------- +#: ../lib/XXV/MODULES/XMLTV.pm:625 ../lib/XXV/MODULES/XMLTV.pm:632 msgid "Couldn't insert rule to import epg data from xmltv sources in database!" msgstr "Konnte Regel zum Importieren von EPG-Daten aus einer XMLTV Quelle nicht in Datenbank einfügen!" #-------------------- -#: ../lib/XXV/MODULES/XMLTV.pm:631 +#: ../lib/XXV/MODULES/XMLTV.pm:65 +msgid "Edit rule to import epg data from xmltv sources." +msgstr "Bearbeite Regel zum Importieren von EPG-Daten aus einer XMLTV Quelle." + +#-------------------- +#: ../lib/XXV/MODULES/XMLTV.pm:658 msgid "Missing ID to select rules for deletion! Please use xmltvremove 'id'" msgstr "Vermisse ID zur Auswahl der Regel zum Löschen! Bitte verwende xmltvremove 'id'" #-------------------- -#: ../lib/XXV/MODULES/XMLTV.pm:643 +#: ../lib/XXV/MODULES/XMLTV.pm:670 msgid "Rule import epg data from xmltv sources %s is deleted." msgstr "Regel %s zum Importieren von EPG-Daten aus einer XMLTV Quelle gelöscht!" #-------------------- -#: ../lib/XXV/MODULES/XMLTV.pm:65 -msgid "Edit rule to import epg data from xmltv sources." -msgstr "Bearbeite Regel zum Importieren von EPG-Daten aus einer XMLTV Quelle." - -#-------------------- -#: ../lib/XXV/MODULES/XMLTV.pm:665 +#: ../lib/XXV/MODULES/XMLTV.pm:693 msgid "Parse data as template" msgstr "Übersetze Daten als Template" #-------------------- -#: ../lib/XXV/MODULES/XMLTV.pm:666 +#: ../lib/XXV/MODULES/XMLTV.pm:694 msgid "Interval to parse data" msgstr "Intervall zum einlesen der Daten" #-------------------- -#: ../lib/XXV/MODULES/XMLTV.pm:667 +#: ../lib/XXV/MODULES/XMLTV.pm:695 msgid "source to import" msgstr "Quelle zum Importieren" #-------------------- -#: ../lib/XXV/MODULES/XMLTV.pm:747 +#: ../lib/XXV/MODULES/XMLTV.pm:781 msgid "Yes" msgstr "Ja" #-------------------- -#: ../lib/XXV/MODULES/XMLTV.pm:748 +#: ../lib/XXV/MODULES/XMLTV.pm:782 msgid "No" msgstr "Nein" #-------------------- -#: ../lib/XXV/MODULES/XMLTV.pm:759 +#: ../lib/XXV/MODULES/XMLTV.pm:793 msgid "Every EPG Data import" msgstr "Import bei jedem einlesen von EPG Daten" #-------------------- -#: ../lib/XXV/MODULES/XMLTV.pm:760 +#: ../lib/XXV/MODULES/XMLTV.pm:794 msgid "Once every day" msgstr "Einmalig per Tag" #-------------------- -#: ../lib/XXV/MODULES/XMLTV.pm:761 +#: ../lib/XXV/MODULES/XMLTV.pm:795 msgid "Once every week" msgstr "Einmalig per Woche" @@ -4845,17 +4855,17 @@ msgid "This receive and send Ajax messages." msgstr "Dies empfängt und sendet AJAX Nachrichten." #-------------------- -#: ../lib/XXV/OUTPUT/Ajax.pm:282 ../lib/XXV/OUTPUT/Console.pm:306 ../lib/XXV/OUTPUT/Html.pm:530 ../lib/XXV/OUTPUT/Wml.pm:304 ../wml/widgets/dir.tmpl:8 +#: ../lib/XXV/OUTPUT/Ajax.pm:282 ../lib/XXV/OUTPUT/Console.pm:306 ../lib/XXV/OUTPUT/Html.pm:526 ../lib/XXV/OUTPUT/Wml.pm:303 ../wml/widgets/dir.tmpl:8 msgid "Directory '%s' does not exist!" msgstr "Verzeichnis '%s' existiert leider nicht!" #-------------------- -#: ../lib/XXV/OUTPUT/Ajax.pm:287 ../lib/XXV/OUTPUT/Console.pm:311 ../lib/XXV/OUTPUT/Html.pm:535 ../lib/XXV/OUTPUT/Wml.pm:309 ../wml/widgets/file.tmpl:8 +#: ../lib/XXV/OUTPUT/Ajax.pm:287 ../lib/XXV/OUTPUT/Console.pm:311 ../lib/XXV/OUTPUT/Html.pm:531 ../lib/XXV/OUTPUT/Wml.pm:308 ../wml/widgets/file.tmpl:8 msgid "File '%s' does not exist!" msgstr "Datei '%s' existiert leider nicht!" #-------------------- -#: ../lib/XXV/OUTPUT/Ajax.pm:296 ../lib/XXV/OUTPUT/Console.pm:315 ../lib/XXV/OUTPUT/Html.pm:544 ../lib/XXV/OUTPUT/Wml.pm:313 +#: ../lib/XXV/OUTPUT/Ajax.pm:296 ../lib/XXV/OUTPUT/Console.pm:315 ../lib/XXV/OUTPUT/Html.pm:540 ../lib/XXV/OUTPUT/Wml.pm:312 msgid "Error '%s' (%s) : %s!" msgstr "Fehler im Feld '%s' (%s) : %s!" @@ -4936,7 +4946,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:642 ../lib/XXV/OUTPUT/Html.pm:938 +#: ../lib/XXV/OUTPUT/Console.pm:642 ../lib/XXV/OUTPUT/Html.pm:934 msgid "Module %s not found!" msgstr "Modul %s nicht gefunden!" @@ -4951,47 +4961,47 @@ msgid "This receives and sends HTML messages." msgstr "Dies empfängt und sendet HTML Nachrichten" #-------------------- -#: ../lib/XXV/OUTPUT/Html.pm:318 +#: ../lib/XXV/OUTPUT/Html.pm:314 msgid "Can't proper parse html widget '%s.tmpl'" msgstr "Kann widget '%s.tmpl' nicht korrekt übersetzen." #-------------------- -#: ../lib/XXV/OUTPUT/Html.pm:319 +#: ../lib/XXV/OUTPUT/Html.pm:315 msgid "Your skin may be outdated, please check project home page for updates!" msgstr "Der Skin ist möglischerweise veraltet, bitte überprüfe die Homepage des Projekt auf Updates!" #-------------------- -#: ../lib/XXV/OUTPUT/Html.pm:472 +#: ../lib/XXV/OUTPUT/Html.pm:468 msgid "Authorization required" msgstr "Berechtigung erforderlich" #-------------------- -#: ../lib/XXV/OUTPUT/Html.pm:482 +#: ../lib/XXV/OUTPUT/Html.pm:478 msgid "Forbidden" msgstr "Verboten" #-------------------- -#: ../lib/XXV/OUTPUT/Html.pm:496 ../lib/XXV/OUTPUT/Wml.pm:274 +#: ../lib/XXV/OUTPUT/Html.pm:492 ../lib/XXV/OUTPUT/Wml.pm:273 msgid "Couldn't open file '%s' : %s!" msgstr "Kann Datei '%s' nicht öffnen : %s!" #-------------------- -#: ../lib/XXV/OUTPUT/Html.pm:497 +#: ../lib/XXV/OUTPUT/Html.pm:493 msgid "Not found" msgstr "Nicht gefunden" #-------------------- -#: ../lib/XXV/OUTPUT/Html.pm:581 +#: ../lib/XXV/OUTPUT/Html.pm:577 msgid "Please wait ..." msgstr "Bitte warten ..." #-------------------- -#: ../lib/XXV/OUTPUT/Html.pm:956 ../lib/XXV/OUTPUT/Wml.pm:392 +#: ../lib/XXV/OUTPUT/Html.pm:952 ../lib/XXV/OUTPUT/Wml.pm:391 msgid "Back to configuration page." msgstr "Zurück zur Konfigurationsseite" #-------------------- -#: ../lib/XXV/OUTPUT/Html.pm:987 +#: ../lib/XXV/OUTPUT/Html.pm:983 msgid "File" msgstr "Datei" @@ -5086,27 +5096,27 @@ msgid "SMTP mail server host name" msgstr "Hostname des SMTP Mail-Server" #-------------------- -#: ../lib/XXV/OUTPUT/NEWS/RSS.pm:152 +#: ../lib/XXV/OUTPUT/NEWS/RSS.pm:158 msgid "XXV RSS 1.0" msgstr "XXV RSS 1.0" #-------------------- -#: ../lib/XXV/OUTPUT/NEWS/RSS.pm:154 ../lib/XXV/OUTPUT/NEWS/RSS.pm:177 +#: ../lib/XXV/OUTPUT/NEWS/RSS.pm:160 ../lib/XXV/OUTPUT/NEWS/RSS.pm:183 msgid "Messages from your VDR/XXV" msgstr "Meldungen von VDR/XXV" #-------------------- -#: ../lib/XXV/OUTPUT/NEWS/RSS.pm:157 +#: ../lib/XXV/OUTPUT/NEWS/RSS.pm:163 msgid "XXV messages" msgstr "XXV Meldungen" #-------------------- -#: ../lib/XXV/OUTPUT/NEWS/RSS.pm:175 +#: ../lib/XXV/OUTPUT/NEWS/RSS.pm:181 msgid "XXV RSS 2.0" msgstr "XXV RSS 2.0" #-------------------- -#: ../lib/XXV/OUTPUT/NEWS/RSS.pm:204 +#: ../lib/XXV/OUTPUT/NEWS/RSS.pm:210 msgid "The module NEWS::RSS is not active!" msgstr "Das Modul NEWS::RSS ist nicht aktiv!" diff --git a/locale/de/LC_MESSAGES/xxv.mo b/locale/de/LC_MESSAGES/xxv.mo Binary files differindex 4799b37..c1be9f1 100644 --- a/locale/de/LC_MESSAGES/xxv.mo +++ b/locale/de/LC_MESSAGES/xxv.mo |
