diff options
| author | Andreas Brachold <vdr07@deltab.de> | 2008-08-10 14:05:26 +0000 |
|---|---|---|
| committer | Andreas Brachold <vdr07@deltab.de> | 2008-08-10 14:05:26 +0000 |
| commit | 2e9c00e1bdd19f3fb61ce0aaede85d5f5400ef81 (patch) | |
| tree | bf3734ba1dbfb0e8c5df072c55b19b62603135b5 | |
| parent | 11ad754da4d127a74e26894e97c232a3a98972b5 (diff) | |
| download | xxv-2e9c00e1bdd19f3fb61ce0aaede85d5f5400ef81.tar.gz xxv-2e9c00e1bdd19f3fb61ce0aaede85d5f5400ef81.tar.bz2 | |
* AUTOTIMER: fix some orthography
* EVENTS: store news from last month into database
* RSS: dump news from database
* TIMERS: event if timer adjusted
* TIMERS/AUTOTIMER: rewrite event/news handling
* xxvd: show pid at startup
* xxvd: show base revision at startup
* CHANNELS: fix detect radio channels
* REPORT: Refactoring event handling, move any function to modul EVENTS.
* EVENTS: elist function to list news as table
* EVENTS: respect minimum level to exclude unwanted harmless news
* RSS/MAIL... : remove dependency to modul REPORT
| -rwxr-xr-x | bin/xxvd | 11 | ||||
| -rw-r--r-- | lib/Tools.pm | 11 | ||||
| -rw-r--r-- | lib/XXV/MODULES/AUTOTIMER.pm | 56 | ||||
| -rw-r--r-- | lib/XXV/MODULES/CHANNELS.pm | 6 | ||||
| -rw-r--r-- | lib/XXV/MODULES/EVENTS.pm | 339 | ||||
| -rw-r--r-- | lib/XXV/MODULES/HTTPD.pm | 6 | ||||
| -rw-r--r-- | lib/XXV/MODULES/RECORDS.pm | 4 | ||||
| -rw-r--r-- | lib/XXV/MODULES/REPORT.pm | 212 | ||||
| -rw-r--r-- | lib/XXV/MODULES/SHARE.pm | 41 | ||||
| -rw-r--r-- | lib/XXV/MODULES/STATUS.pm | 2 | ||||
| -rw-r--r-- | lib/XXV/MODULES/SVDRP.pm | 23 | ||||
| -rw-r--r-- | lib/XXV/MODULES/TIMERS.pm | 306 | ||||
| -rw-r--r-- | lib/XXV/OUTPUT/Html.pm | 8 | ||||
| -rw-r--r-- | lib/XXV/OUTPUT/NEWS/JABBER.pm | 76 | ||||
| -rw-r--r-- | lib/XXV/OUTPUT/NEWS/MAIL.pm | 207 | ||||
| -rw-r--r-- | lib/XXV/OUTPUT/NEWS/RSS.pm | 137 | ||||
| -rw-r--r-- | lib/XXV/OUTPUT/NEWS/VDR.pm | 61 | ||||
| -rw-r--r-- | locale/de.po | 930 | ||||
| -rw-r--r-- | locale/de/LC_MESSAGES/xxv.mo | bin | 81706 -> 81243 bytes |
19 files changed, 1276 insertions, 1160 deletions
@@ -454,10 +454,8 @@ sub quit { # remove any depends process like preview encoder for recordings &killfam('TERM',$$); - debug qq|--------------------------------------------------|; - debug sprintf(qq|----- XXVD System %15s ended : %2s -----|, &getVersion,$ret); - debug qq|--------------------------------------------------|; + debug sprintf("%s(%s) ended. state : %s", $0, $$, $ret); exit($ret); } @@ -606,15 +604,14 @@ sub init_logging { my $fh = IO::File->new($loggerfile,$mode) or return print(sprintf("Couldn't write %s : %s!",$loggerfile,$!)); +# binmode $fh, ":encoding(utf8)" if($Tools::CHARSET eq 'UTF-8'); print $fh sprintf("%d (%d) [%s] %s\n",++$loggercnt, $errcode, $tt, $msg); $fh->close; }; # First log message - debug qq|--------------------------------------------------|; - debug sprintf(qq|---- XXVD System %15s started ----|, &getVersion); - debug qq|--------------------------------------------------|; - debug sprintf('Verbose Level is set to %d', $verbose); + debug sprintf("%s(%s) started. base version : %s", $0,$$, &getVersion); + debug sprintf('verbose level is set to %d', $verbose); } # ------------------ diff --git a/lib/Tools.pm b/lib/Tools.pm index 682fdde..984314d 100644 --- a/lib/Tools.pm +++ b/lib/Tools.pm @@ -356,9 +356,9 @@ sub load_file { lg sprintf('Load file "%s" (%s)',$file, $binmode); my $mode = '<'; -# if($binmode ne 'binary') { -# $mode .= ':utf8' if($CHARSET && $CHARSET eq 'UTF-8'); -# } + #if($binmode ne 'binary') { + # $mode .= ':encoding(utf8)' if($CHARSET && $CHARSET eq 'UTF-8'); + #} my $fh = IO::File->new($file,$mode) or return error(sprintf("Couldn't open %s : %s!",$file,$!)); @@ -384,11 +384,12 @@ sub save_file { if($binmode ne 'binary') { $data =~ s/\r\n/\n/sig; -# $mode .= ':utf8' if($CHARSET && $CHARSET eq 'UTF-8'); + # $mode .= ':encoding(utf8)' if($CHARSET && $CHARSET eq 'UTF-8'); } my $fh = IO::File->new($file,$mode) - or return error(sprintf("Couldn't write %s : %s!",$file,$!)); + or return error(sprintf("Couldn't write %s : %s!",$file,$!)); + print $fh $data; $fh->close; diff --git a/lib/XXV/MODULES/AUTOTIMER.pm b/lib/XXV/MODULES/AUTOTIMER.pm index 26bab5e..30df67a 100644 --- a/lib/XXV/MODULES/AUTOTIMER.pm +++ b/lib/XXV/MODULES/AUTOTIMER.pm @@ -104,8 +104,8 @@ sub module { }, }, RegEvent => { + # Create event entries if an autotimer has created a new timer 'newTimerfromAutotimer' => { - Descr => gettext('Create event entries if an autotimer has created a new timer.'), # You have this choices (harmless is default): # 'harmless', 'interesting', 'veryinteresting', 'important', 'veryimportant' @@ -124,34 +124,20 @@ sub module { # of the TimerId # ... Match => { - TimerId => qr/id\:\s+\"(\d+)\"/s, + pos => qr/Save timer\s+(\d+)/s, + host => qr/Save timer\s+\d+\s+on\s+(\S+)/s, }, Actions => [ q|sub{ my $args = shift; my $event = shift; - my $timer = getDataById($args->{TimerId}, 'TIMERS', 'pos'); - my $desc = getDataById($timer->{eventid}, 'EPG', 'eventid') if($timer->{eventid}); - my $autotimer = getDataById($timer->{autotimerid}, 'AUTOTIMER', 'Id'); - my $title = sprintf(gettext("Autotimer('%s') found: %s"), - $autotimer->{Search}, $timer->{file}); - - my $description = ''; - - my $channel = main::getModule('CHANNELS')->ChannelToName($timer->{channel}); - $description .= sprintf(gettext("Channel: %s"), $channel); - $description .= "\r\n"; - Date_Init("Language=English"); - my $d = ParseDate($timer->{starttime}); - $timer->{starttime} = datum(UnixDate($d,"%s")) if($d); - $description .= sprintf(gettext("On: %s to %s"), - $timer->{starttime}, - fmttime($timer->{stop})); - $description .= "\r\n"; - $description .= sprintf(gettext("Description: %s"), $desc->{description} ) - if($desc && $desc->{description}); + my $modT = main::getModule('TIMERS') or return; + my $timer = $modT->getTimerByPos($modT->{svdrp}->IDfromHostname($args->{host}), $args->{pos}) or return; - main::getModule('REPORT')->news($title, $description, "display", $timer->{eventid}, $event->{Level}); + my $autotimer = getDataById($timer->{autotimerid}, 'AUTOTIMER', 'Id'); + my $title = sprintf(gettext("Autotimer '%s' found: %s"), + $autotimer->{Search}, $timer->{file}); + $modT->_news($title, $timer, $event->{Level}); } |, ], @@ -517,7 +503,7 @@ sub _autotimerLookup { # Wished timer already exist with same data from autotimer ? next if($obj->_timerexists($event)); - # Adjust timers set by the autotimer + # Adjust timers set by Autotimer my $timerID = $obj->_timerexistsfuzzy($event,$a,$modT); if(scalar @done) { @@ -638,7 +624,7 @@ sub autotimerEdit { if($timerid and not ref $data) { my $sth = $obj->{dbh}->prepare("SELECT SQL_CACHE * from AUTOTIMER where Id = ?"); $sth->execute($timerid) - or return $console->err(sprintf(gettext("The autotimer '%s' does not exist in the database."),$timerid)); + or return $console->err(sprintf(gettext("Autotimer '%s' does not exist in the database!"),$timerid)); $epg = $sth->fetchrow_hashref(); # Channels Ids in Namen umwandeln @@ -1061,7 +1047,7 @@ sub autotimerDelete { my $rows = $sth->execute(@timers); if(!$rows || $rows eq "0E0") { error sprintf("Couldn't execute query: %s.",$sth->errstr) unless($rows); - $console->err(sprintf gettext("The autotimer '%s' does not exist in the database."), join(',', @timers)); + $console->err(sprintf gettext("Autotimer '%s' does not exist in the database!"), join(',', @timers)); return 0; } @@ -1076,7 +1062,7 @@ sub autotimerDelete { # ------------------ # Name: autotimerToogle -# Descr: Switch the Autotimer on or off. +# Descr: Switch Autotimer on or off. # Usage: $obj->autotimerToogle($watcher, $console, $atid); # ------------------ sub autotimerToggle { @@ -1091,7 +1077,7 @@ sub autotimerToggle { my $sth = $obj->{dbh}->prepare($sql); if(!$sth->execute(@timers)) { error sprintf("Couldn't execute query: %s.",$sth->errstr); - $console->err(sprintf(gettext("The autotimer '%s' does not exist in the database."),$timerid)); + $console->err(sprintf(gettext("Autotimer '%s' does not exist in the database!"),$timerid)); return 0; } my $data = $sth->fetchall_hashref('Id'); @@ -1100,7 +1086,7 @@ sub autotimerToggle { for my $timer (@timers) { unless(exists $data->{$timer}) { - $console->err(sprintf(gettext("The autotimer '%s' does not exist in the database."), $timer)); + $console->err(sprintf(gettext("Autotimer '%s' does not exist in the database!"), $timer)); next; } @@ -1110,7 +1096,7 @@ sub autotimerToggle { my $sth = $obj->{dbh}->prepare($sql); if(!$sth->execute($status,$timer)) { error sprintf("Couldn't execute query: %s.",$sth->errstr); - $console->err(sprintf(gettext("Couldn't toggle autotimer with ID '%s'!"),$timer)); + $console->err(sprintf(gettext("Couldn't update database to toggle autotimer(%d) !"),$timer)); next; } @@ -1121,9 +1107,11 @@ sub autotimerToggle { ); if($console->typ ne 'AJAX') { - my $text = ($status eq 'n') ? gettext('disabled') - : gettext('activated'); - $console->message(sprintf gettext("Autotimer %s is %s."), $timer, $text); + if($status eq 'n') { + $console->message(sprintf gettext("Autotimer %s is disabled."), $timer); + } else { + $console->message(sprintf gettext("Autotimer %s is activated."), $timer); + } } # AJAX @@ -1454,7 +1442,7 @@ sub _timerexistsfuzzy { $after = $modT->{afterminutes} * 60; } - # Adjust timers set by the autotimer, if event changed +/- five minutes. + # Adjust timers set by Autotimer, if event changed +/- five minutes. my $sql = "SELECT SQL_CACHE id from TIMERS where channel = ? and ? between (UNIX_TIMESTAMP(starttime) - ?) AND (UNIX_TIMESTAMP(starttime) + ?) diff --git a/lib/XXV/MODULES/CHANNELS.pm b/lib/XXV/MODULES/CHANNELS.pm index 64b2965..f55660b 100644 --- a/lib/XXV/MODULES/CHANNELS.pm +++ b/lib/XXV/MODULES/CHANNELS.pm @@ -1011,9 +1011,9 @@ sub getChannelType { or return error sprintf("Couldn't execute query: %s.",$sth->errstr); my $erg = $sth->fetchrow_hashref(); if($erg) { - if(exists $erg->{VPID}) { + if(exists $erg->{VPID} && $erg->{VPID}) { return 'TV'; - } elsif(exists $erg->{APID}) { + } elsif(exists $erg->{APID} && $erg->{APID}) { return 'RADIO'; } } @@ -1447,7 +1447,7 @@ sub _brandNewChannels { last if(25 < scalar @lines ); } - my $rm = main::getModule('REPORT'); + my $rm = main::getModule('EVENTS'); $rm->news( sprintf(gettext('Found %d new channels!'), scalar keys %$attr), join("\r\n",@lines), diff --git a/lib/XXV/MODULES/EVENTS.pm b/lib/XXV/MODULES/EVENTS.pm index fb458ee..b848d5b 100644 --- a/lib/XXV/MODULES/EVENTS.pm +++ b/lib/XXV/MODULES/EVENTS.pm @@ -8,11 +8,11 @@ use Tools; # ------------------ sub module { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $args = { Name => 'EVENTS', Prereq => { - 'Date::Manip' => 'date manipulation routines', + 'Date::Manip' => 'date manipulation routines', }, Description => gettext( "This module manage the events for control and watch the xxv system. @@ -32,26 +32,25 @@ This sub look in Module->RegEvent->Actions, and call this Routines. type => 'confirm', required => gettext('This is required!'), }, + host => { + description => gettext('Used host of referred link inside reports.'), + default => main::getModule('STATUS')->name, + type => 'host', + }, }, Commands => { -# list => { -# description => gettext('Display the event list'), -# short => 'el', -# callback => sub{ $obj->list(@_) }, -# Level => 'user', -# }, -# eedit => { -# description => gettext('Edit a event'), -# short => 'ee', -# callback => sub{ $obj->edit(@_) }, -# Level => 'user', -# }, -# etoogle => { -# description => gettext('Change a event on or off'), -# short => 'eto', -# callback => sub{ $obj->toogle(@_) }, -# Level => 'user', -# }, + request => { + description => gettext("Display the actual news site 'typ'"), + short => 'req', + callback => sub{ $self->request(@_) }, + binary => 'nocache' + }, + elist => { + description => gettext('Display the event list'), + short => 'el', + callback => sub{ $self->list(@_) }, + Level => 'user', + }, }, }; return $args; @@ -72,7 +71,10 @@ sub new { # paths $self->{paths} = delete $attr{'-paths'}; - # who am I + # the big Config + $self->{CONFIG} = $attr{'-config'}; + + # who am I $self->{MOD} = $self->module; # all configvalues to $self without parents (important for ConfigModule) @@ -102,14 +104,83 @@ sub new { # ------------------ sub _init { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); + + + my $version = 30; # Must be increment if rows of table changed + # this tables hasen't handmade user data, + # therefore old table could dropped if updated rows + if(!tableUpdated($self->{dbh},'EVENTS',$version,1)) { + return 0; + } + + # Look for table or create this table + $self->{dbh}->do(qq| + CREATE TABLE IF NOT EXISTS EVENTS ( + id int unsigned auto_increment NOT NULL, + title text default '', + message text default '', + cmd text default '', + data text default '', + level int unsigned, + addtime timestamp, + PRIMARY KEY(id) + ) COMMENT = '$version' + |); + + # Load the NEWS Plugins ... + my @mods = glob($self->{paths}->{NEWSMODS}.'/*.pm'); + + # Try to use the news plugins + foreach my $module (reverse @mods) { + my $moduleName = 'XXV::OUTPUT::NEWS::'.(split('\.',(split('/', $module))[-1]))[0]; + # make an object for the module + eval "use $moduleName"; + if($@) { + panic("Couldn't load news module: $moduleName"); + next; + } + + my $mod = $moduleName->new( + -config => $self->{CONFIG}, + -dbh => $self->{dbh}, + -paths => $self->{paths}, + -host => $self->{host}, + -charset => $self->{charset} + ); + + unless($mod) { + error sprintf('Load news module %s failed!',$moduleName); + next; + } + + $self->{NEWSMODS}->{$moduleName} = $mod; + + main::addModule($moduleName, $self->{NEWSMODS}->{$moduleName}); + + debug sprintf("Load news module %s(%s)\n", + $moduleName, + (ref $self->{NEWSMODS}->{$moduleName}) + ? $self->{NEWSMODS}->{$moduleName}->{MOD}->{Version} + : 'failed!'); + } main::after(sub{ - $obj->{EVENTS} = $obj->searchForEvents(); + $self->{EVENTS} = $self->searchForEvents(); # This will add a callback for log events (ignore verbose) $Tools::LOGCALLB = sub{ - $obj->callEvent(@_); + $self->callEvent(@_); }; + + my $start = main::getStartTime; + $self->news( + sprintf(gettext('XXVD System %s started'), main::getVersion), + sprintf(gettext('Start time: %s'), datum($start)), + undef, + undef, + 'harmless' + ); + return 1; }, "EVENTS: Look for event entrys in modules ...", 3); @@ -119,7 +190,7 @@ sub _init { # ------------------ sub searchForEvents { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $mods = main::getModules(); my $events = {}; @@ -140,17 +211,17 @@ sub searchForEvents { # ------------------ sub callEvent { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $args = { 'Mod' => shift, 'Sub' => shift, 'Msg' => shift, }; - return unless(exists $obj->{EVENTS}); - return if($obj->{active} ne 'y'); + return unless(exists $self->{EVENTS}); + return if($self->{active} ne 'y'); - foreach my $id (keys %{$obj->{EVENTS}}) { - my $entry = $obj->{EVENTS}->{$id}; + foreach my $id (keys %{$self->{EVENTS}}) { + my $entry = $self->{EVENTS}->{$id}; my $bool = 0; # Search for right fields @@ -192,4 +263,212 @@ sub callEvent { return 1; } + +# ------------------ +sub news { +# ------------------ + my $self = shift || return error('No object defined!'); + my $title = shift || return error('No title defined!'); + my $text = shift || ''; + my $cmd = shift || ''; + my $id = shift || ''; + my $levname = shift || 'harmless'; # Level for how important is this news? + + # convert Levelname to integer + my $lev = $self->scala($levname) + || return error('Problem to analyze level!'); + + my $hmod = main::getModule('HTTPD') or return; + + my $url = sprintf("http://%s:%s/", $self->{host}, $hmod->{Port}); + $url = sprintf("%s?cmd=%s&data=%s", $url, $cmd, $id) + if($cmd && $id); + + my $news = { + AddDate => time, + Title => $title, + Text => $text, + Cmd => $cmd, + Id => $id, + Url => $url, + Level => $lev, + LevelName => $levname, + category => $self->translate_scala($lev) + }; + + #my $days = 7 * 24 * 60 * 60; + $self->{dbh}->do("DELETE FROM EVENTS WHERE (addtime + INTERVAL 31 DAY) < NOW()"); + $self->_insert($news); + + # Send to all activated News modules + foreach my $modName (sort keys %{$self->{NEWSMODS}}) { + + # Active? + next if($self->{NEWSMODS}->{$modName}->{active} ne 'y'); + + # Level correct? + next if(exists $self->{NEWSMODS}->{$modName}->{level} + and $self->{NEWSMODS}->{$modName}->{level} >= $lev); + + # Do to send (first push and maybe send) + $self->{NEWSMODS}->{$modName}->push($news); + } + +} + +sub _insert { + my $self = shift || return error('No object defined!'); + my $news = shift || return error('No object defined!'); + + my $sth = $self->{dbh}->prepare( +q| + REPLACE INTO EVENTS + (title, message, cmd, data, level, addtime ) + VALUES (?, ?, ?, ?, ?, NOW()) +| +); + $sth->execute( + $news->{Title}, + $news->{Text}, + $news->{Cmd}, + $news->{Id}, + $news->{Level} + ) or return error sprintf("Couldn't execute query: %s.",$sth->errstr); + return 1; +} + +# ------------------ +sub list { +# ------------------ + my $self = shift || return error('No object defined!'); + my $watcher = shift || return error('No watcher defined!'); + my $console = shift || return error('No console defined!'); + my $data = shift || 1; + + my %f = ( + 'addtime' => gettext('Time'), + 'title' => gettext('Title'), + 'message' => gettext('Message') + ); + + my $sql = qq| +SELECT SQL_CACHE + addtime as \'$f{addtime}\', + title as \'$f{title}\', + message as \'$f{message}\', + '' as __url, + level as __level, + '' as __levelName, + cmd as __cmd, + data as __data +from + EVENTS +where level >= ? +order by + addtime desc +LIMIT 0,50 + |; + + my $sth = $self->{dbh}->prepare($sql); + $sth->execute($data) + or return error sprintf("Couldn't execute query: %s.",$sth->errstr); + my $fields = $sth->{'NAME'}; + my $erg = $sth->fetchall_arrayref(); + map { + $_->[3] = sprintf("?cmd=%s&data=%s", $_->[6], $_->[7]) + if($_->[6] && $_->[7]); + + $_->[5] = $self->translate_scala($_->[4]); + } @$erg; + unshift(@$erg, $fields); + + $console->table($erg); +} + +# ------------------ +sub request { +# ------------------ + my $self = shift || return error('No object defined!'); + my $watcher = shift || return error('No watcher defined!'); + my $console = shift || return error('No console defined!'); + # To this time you can set on + # cmd=request&data=rss&ver=2 or + # cmd=request&data=mail&__test=1 + # ... + my $typ = shift || return $console->err(gettext("Sorry, but none type requested!")); + my $params = shift || {}; + + my ($mod) = grep(/${typ}$/i, keys %{$self->{NEWSMODS}}); + + return $console->err(sprintf(gettext("Sorry, but this type '%s' does not exist on this system!"), $typ)) + unless($mod); + my $module = $self->{NEWSMODS}->{$mod}; + + return $console->err(gettext("Sorry, but this module is not active!")) + if($module->{active} ne 'y'); + + return $console->out( + $module->req($params), + $module->{TYP} + ); +} + + +# ------------------ +sub scala { +# ------------------ + my $self = shift || return error('No object defined!'); + my $typ = shift || return 10; + + $self->{SCALA} = { + 'all' => 1, + 'harmless' => 10, + 'interesting' => 30, + 'veryinteresting' => 50, + 'important' => 70, + 'veryimportant' => 100, + 'none' => 200, + } unless(exists $self->{SCALA}); + + if($typ and exists $self->{SCALA}->{$typ}) { + return $self->{SCALA}->{$typ}; + } else { + return error sprintf("Level %s does not exist! Please use %s", $typ, join(',', keys %{$self->{SCALA}})); + } +} + +# ------------------ +sub get_level_as_array { +# ------------------ + my $self = shift || return error('No object defined!'); + + return [ + [ 1, gettext('All messages') ], # Include all messages, dont use as category + [ 10, gettext('Harmless') ], + [ 30, gettext('Interesting') ], + [ 50, gettext('Very interesting') ], + [ 70, gettext('Important') ], + [ 100, gettext('Very important') ], + [ 200, gettext('None messages') ] # Exclude all messages, dont use as category + ]; +} + +sub translate_level { + my $self = shift || return error('No object defined!'); + my $level = shift || 'harmless'; + + my $s = $self->scala($level); + return $self->translate_scala($s); +} + +sub translate_scala { + my $self = shift || return error('No object defined!'); + my $scala = shift || 10; + + my $erg = $self->get_level_as_array(); + foreach my $w ( @$erg ) { + return $w->[1] if($scala <= $w->[0]); + } + return gettext('Harmless'); +} 1; diff --git a/lib/XXV/MODULES/HTTPD.pm b/lib/XXV/MODULES/HTTPD.pm index f9d6bb0..947eefa 100644 --- a/lib/XXV/MODULES/HTTPD.pm +++ b/lib/XXV/MODULES/HTTPD.pm @@ -230,7 +230,11 @@ sub communicator { if($data->{Method} eq 'POST' && $data->{Post}) { $query .= '&' if($query); $query .= $data->{Post}; - } + } + #if($self->{charset} eq 'UTF-8' + # && $query && !utf8::is_utf8($query)) { + # utf8::upgrade($query); + #} my $cgi = CGI->new( $query ); my $console; diff --git a/lib/XXV/MODULES/RECORDS.pm b/lib/XXV/MODULES/RECORDS.pm index 2fee3ad..04e4a10 100644 --- a/lib/XXV/MODULES/RECORDS.pm +++ b/lib/XXV/MODULES/RECORDS.pm @@ -212,11 +212,11 @@ sub module { $description .= "\r\n"; } if($epg->{description}) { - $description .= sprintf(gettext("Description: %s"), $epg->{description}); + $description .= $epg->{description}; # $description .= "\r\n"; } - main::getModule('REPORT')->news($title, $description, "display", $record->{eventid}, $event->{Level}); + main::getModule('EVENTS')->news($title, $description, "display", $record->{eventid}, $event->{Level}); } |, ], diff --git a/lib/XXV/MODULES/REPORT.pm b/lib/XXV/MODULES/REPORT.pm index dfcdc72..8652425 100644 --- a/lib/XXV/MODULES/REPORT.pm +++ b/lib/XXV/MODULES/REPORT.pm @@ -9,13 +9,13 @@ use Tools; # ------------------ sub module { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $args = { Name => 'REPORT', Prereq => { # 'Perl::Module' => 'Description', }, - Description => gettext('This module read in every module the status information and display this. Also this module send this informations e.g. as mail report.'), + Description => gettext('This module read and show status information from every module.'), Version => (split(/ /, '$Revision$'))[1], Date => (split(/ /, '$Date$'))[1], Author => 'xpix', @@ -27,16 +27,6 @@ sub module { default => 'y', type => 'confirm', required => gettext('This is required!'), - check => sub { - my $value = shift; - if($value eq 'y') { - my $module = main::getModule('EVENTS'); - if(!$module or $module->{active} ne 'y') { - return undef, sprintf(gettext("Module can't activated! This module depends module %s."),'EVENTS'); - } - } - return $value; - }, }, interval => { description => gettext('Time in hours to send the report.'), @@ -44,23 +34,12 @@ sub module { type => 'integer', required => gettext('This is required!'), }, - host => { - description => gettext('Used host of referred link inside reports.'), - default => main::getModule('STATUS')->name, - type => 'host', - }, }, Commands => { report => { description => gettext("Display the report screen 'modname'"), short => 'rp', - callback => sub{ $obj->report(@_) }, - }, - request => { - description => gettext("Display the actual news site 'typ'"), - short => 'req', - callback => sub{ $obj->request(@_) }, - binary => 'nocache' + callback => sub{ $self->report(@_) }, }, }, }; @@ -82,12 +61,9 @@ sub new { # paths $self->{paths} = delete $attr{'-paths'}; - # who am I + # who am I $self->{MOD} = $self->module; - # the big Config - $self->{CONFIG} = $attr{'-config'}; - # the dbh handle $self->{dbh} = delete $attr{'-dbh'}; @@ -121,59 +97,13 @@ sub new { # The Initprocess my $erg = $self->init or return error('Problem to initialize module!'); - # Initiat after load modules ... - main::after( sub{ - my $start = main::getStartTime; - $self->news( - sprintf(gettext('XXVD System %s started'), main::getVersion), - sprintf(gettext('Start time: %s'), datum($start)), - undef, - undef, - 'important' - ); - return 1; - }, "Send start message to news modules ..."); - return $self; } # ------------------ sub init { # ------------------ - my $obj = shift || return error('No object defined!'); - - # Load the NEWS Plugins ... - my @mods = glob($obj->{paths}->{NEWSMODS}.'/*.pm'); - - # Try to use the news plugins - foreach my $module (reverse @mods) { - my $moduleName = 'XXV::OUTPUT::NEWS::'.(split('\.',(split('/', $module))[-1]))[0]; - - # make an object for the module - eval "use $moduleName"; - error $@ if $@; - my $mod = $moduleName->new( - -config => $obj->{CONFIG}, - -dbh => $obj->{dbh}, - -paths => $obj->{paths}, - -host => $obj->{host}, - ); - - unless($mod) { - error sprintf('Load news module %s failed!',$moduleName); - next; - } - - $obj->{NEWSMODS}->{$moduleName} = $mod; - - main::addModule($moduleName, $obj->{NEWSMODS}->{$moduleName}); - - debug sprintf("Load news module %s(%s)\n", - $moduleName, - (ref $obj->{NEWSMODS}->{$moduleName}) - ? $obj->{NEWSMODS}->{$moduleName}->{MOD}->{Version} - : 'failed!'); - } + my $self = shift || return error('No object defined!'); return 1; } @@ -182,7 +112,7 @@ sub init { # ------------------ sub report { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $watcher = shift; my $console = shift; my $modulename = shift || ''; @@ -197,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}($watcher, $console, $obj->{LastReportTime}); + $result->{$modCfg->{Name}} = $modCfg->{Status}($watcher, $console, $self->{LastReportTime}); } } @@ -207,132 +137,4 @@ sub report { return 1; } -# ------------------ -sub news { -# ------------------ - my $obj = shift || return error('No object defined!'); - my $title = shift || return error('No title defined!'); - my $text = shift || ''; - my $cmd = shift || ''; - my $id = shift || ''; - my $levname = shift || 'harmless'; # Level for how important is this news? - - # convert Levelname to integer - my $lev = $obj->scala($levname) - || return error('Problem to analyze level!'); - - my $hmod = main::getModule('HTTPD') or return; - - my $url = sprintf("http://%s:%s/", $obj->{host}, $hmod->{Port}); - $url = sprintf("%s?cmd=%s&data=%s", $url, $cmd, $id) - if($cmd && $id); - - my $news = { - AddDate => time, - Title => $title, - Text => $text, - Cmd => $cmd, - Id => $id, - Url => $url, - Level => $lev, - LevelName => $levname, - category => $obj->translate_level($levname) - }; - - # Send to all activated News modules - foreach my $modName (sort keys %{$obj->{NEWSMODS}}) { - - # Active? - next if($obj->{NEWSMODS}->{$modName}->{active} ne 'y'); - - # Level correct? - next if(exists $obj->{NEWSMODS}->{$modName}->{level} - and $obj->{NEWSMODS}->{$modName}->{level} >= $lev); - - # Do to send (first read and then send) - $obj->{NEWSMODS}->{$modName}->read($news); - } - -} - -# ------------------ -sub request { -# ------------------ - my $obj = shift || return error('No object defined!'); - my $watcher = shift || return error('No watcher defined!'); - my $console = shift || return error('No console defined!'); - # To this time you can set on - # cmd=request&data=rss&ver=2 or - # cmd=request&data=mail - # ... - my $typ = shift || return $console->err(gettext("Sorry, but none type requested!")); - my $params = shift || {}; - - my ($mod) = grep(/${typ}$/i, keys %{$obj->{NEWSMODS}}); - - return $console->err(sprintf(gettext("Sorry, but this type '%s' does not exist on this system!"), $typ)) - unless($mod); - - return $console->err(gettext("Sorry, but this module is not active!")) - unless($obj->{NEWSMODS}->{$mod}->{active} eq 'y'); - - return $console->out( - $obj->{NEWSMODS}->{$mod}->req($params), - $obj->{NEWSMODS}->{$mod}->{TYP} - ); -} - - -# ------------------ -sub scala { -# ------------------ - my $obj = shift || return error('No object defined!'); - my $typ = shift || return 10; - - $obj->{SCALA} = { - 'all' => 1, - 'harmless' => 10, - 'interesting' => 30, - 'veryinteresting'=> 50, - 'important' => 70, - 'veryimportant' => 100, - 'none' => 200, - } unless(exists $obj->{SCALA}); - - if($typ and exists $obj->{SCALA}->{$typ}) { - return $obj->{SCALA}->{$typ}; - } else { - return error sprintf("Level %s does not exist! Please use %s", $typ, join(',', keys %{$obj->{SCALA}})); - } -} - -# ------------------ -sub get_level_as_array { -# ------------------ - my $obj = shift || return error('No object defined!'); - - return [ - [ 1, gettext('All messages') ], # Include all messages, dont use as category - [ 10, gettext('Harmless') ], - [ 30, gettext('Interesting') ], - [ 50, gettext('Very interesting') ], - [ 70, gettext('Important') ], - [ 100, gettext('Very important') ], - [ 200, gettext('None messages') ] # Exclude all messages, dont use as category - ]; -} - -sub translate_level { - my $obj = shift || return error('No object defined!'); - my $level = shift || 'harmless'; - - my $s = $obj->scala($level); - - my $erg = $obj->get_level_as_array(); - foreach my $w ( @$erg ) { - return $w->[1] if($s <= $w->[0]); - } - return gettext('Harmless'); -} - 1; diff --git a/lib/XXV/MODULES/SHARE.pm b/lib/XXV/MODULES/SHARE.pm index 6188298..e6cd93c 100644 --- a/lib/XXV/MODULES/SHARE.pm +++ b/lib/XXV/MODULES/SHARE.pm @@ -191,6 +191,7 @@ sub _init { } } } + return 1; }, "SHARE: Connect to popularity web service ...",4) if($self->{active} eq 'y'); @@ -212,6 +213,14 @@ sub _init { }, ); } + + my $m = main::getModule('TIMERS'); + $m->updated(sub{ + return 0 if($self->{active} ne 'y'); + + lg 'Start timer callback to share timer!'; + return $self->_sharetimer(); + }); return 1; }, "SHARE: Update data with popularity web service ...",48) if($self->{active} eq 'y'); @@ -440,4 +449,36 @@ sub CmdToService { : return $res; } +# ------------------ +sub _sharetimer { +# ------------------ + my $self = shift || return error('No object defined!'); + + my $sql = 'SELECT id,flags,priority,lifetime,autotimerid,eventid,UNIX_TIMESTAMP(eventstarttime) + eventduration as eventstoptime FROM TIMERS'; + my $erg = $self->{dbh}->selectall_hashref($sql, 'id') or return; + + foreach my $t (keys %$erg) { + my $timer = $erg->{$t}; + $self->sharetimer($timer); + } +} +# ------------------ +sub sharetimer { +# ------------------ + my $self = shift || return error('No object defined!'); + my $timer = shift || return error('No timer defined!'); + + my $level = 1; + if($timer->{autotimerid} and ($timer->{flags} && $timer->{flags} & 1)) { + $level = (($timer->{priority} <= 50 or $timer->{lifetime} < 33) ? 2 : 3); + } elsif($timer->{flags} && $timer->{flags} & 1) { + $level = (($timer->{priority} <= 50 or $timer->{lifetime} < 33) ? 4 : 5); + } + + if($timer->{eventid}) { + $self->setEventLevel($timer->{eventid}, $level, $timer->{eventstoptime}); + } +} + + 1; diff --git a/lib/XXV/MODULES/STATUS.pm b/lib/XXV/MODULES/STATUS.pm index 75eb80e..c5bf172 100644 --- a/lib/XXV/MODULES/STATUS.pm +++ b/lib/XXV/MODULES/STATUS.pm @@ -793,7 +793,7 @@ sub watchDog { foreach my $m (@$mou) { next unless($m->[0] =~ /^\//); if($m->[5] >= 90 ) { - my $rm = main::getModule('REPORT'); + my $rm = main::getModule('EVENTS'); $rm->news( sprintf(gettext("PANIC! Only %s%% space left on device %s"),(100 - $m->[5]),$m->[0]), sprintf(gettext("Device has space %s from %s used!"), $m->[3], $m->[2]), diff --git a/lib/XXV/MODULES/SVDRP.pm b/lib/XXV/MODULES/SVDRP.pm index a3ba7b7..5507f61 100644 --- a/lib/XXV/MODULES/SVDRP.pm +++ b/lib/XXV/MODULES/SVDRP.pm @@ -450,6 +450,23 @@ sub enum_onlinehosts { } # ------------------ +sub IDfromHostname { +# ------------------ + my $self = shift || return error('No object defined!'); + my $host = shift || return error('No host defined!'); + + my $sql = qq| +SELECT SQL_CACHE id FROM RECORDER WHERE host = ? +|; + + my $sth = $self->{dbh}->prepare($sql); + $sth->execute($host) + or return error(sprintf("Video disk recorder '%s' does not exist in the database!",$host)); + my $erg = $sth->fetchrow_hashref(); + return $erg ? $erg->{id} : undef; +} + +# ------------------ sub queue_cmds { # ------------------ my $self = shift || return error('No object defined!'); @@ -527,6 +544,8 @@ sub command { return undef; } + #binmode $telnet, ":encoding(utf8)" if($self->{charset} eq 'UTF-8'); + # read first line do { $line = $telnet->getline; @@ -565,7 +584,9 @@ sub command { error($msg); $self->{ERROR} .= $msg . "\n"; } - + #if( $self->{charset} eq 'UTF-8') { + # utf8::upgrade($line) if(!utf8::is_utf8($line)); + #} push(@$data, $line); } } while($line && $line =~ /^\d\d\d\-/); diff --git a/lib/XXV/MODULES/TIMERS.pm b/lib/XXV/MODULES/TIMERS.pm index a0d16a7..bda2be1 100644 --- a/lib/XXV/MODULES/TIMERS.pm +++ b/lib/XXV/MODULES/TIMERS.pm @@ -114,12 +114,11 @@ sub module { }, }, RegEvent => { - 'newTimerfromUser' => { - Descr => gettext('Create event entries if the user has created a new timer.'), - + # Create event entries if the user has created a new timer + 'newTimerfromUser' => { # You have this choices (harmless is default): # 'harmless', 'interesting', 'veryinteresting', 'important', 'veryimportant' - Level => 'interesting', + Level => 'veryinteresting', # Search for a spezial Event. # I.e.: Search for an LogEvent with match @@ -133,194 +132,82 @@ sub module { # of the id # ... Match => { - TimerId => qr/id\:\s+\"(\d+)\"/s, + pos => qr/New timer\s+(\d+)/s, + host => qr/New timer\s+\d+\s+on\s+(\S+)/s, }, Actions => [ q|sub{ my $args = shift; my $event = shift; - my $timer = getDataById($args->{TimerId}, 'TIMERS', 'pos'); + my $modT = main::getModule('TIMERS') or return; + my $timer = $modT->getTimerByPos($modT->{svdrp}->IDfromHostname($args->{host}), $args->{pos}) or return; return if($timer->{autotimerid}); - my $desc = getDataById($timer->{eventid}, 'EPG', 'eventid') if($timer->{eventid}); - my $title = sprintf(gettext("New timer found: %s"),$timer->{file}); - - my $description = ''; - - my $channel = main::getModule('CHANNELS')->ChannelToName($timer->{channel}); - $description .= sprintf(gettext("Channel: %s"), $channel); - $description .= "\r\n"; - - Date_Init("Language=English"); - my $d = ParseDate($timer->{starttime}); - $timer->{starttime} = datum(UnixDate($d,"%s")) if($d); - - $description .= sprintf(gettext("On: %s to %s"), - $timer->{starttime}, - fmttime($timer->{stop})); - $description .= "\r\n"; - $description .= sprintf(gettext("Description: %s"), $desc->{description} ) - if($desc && $desc->{description}); - - main::getModule('REPORT')->news($title, $description, "display", $timer->{eventid}, $event->{Level}); + my $title = sprintf(gettext("New timer: %s"),$timer->{file}); + $modT->_news($title, $timer, $event->{Level}); } |, - q|sub{ my $args = shift; - my $event = shift; - my $timer = getDataById($args->{TimerId}, 'TIMERS', 'pos'); - my $soap = main::getModule('SHARE'); - my $level = 1; - if($timer->{autotimerid}) { - $level = (($timer->{priority} <= 50 or $timer->{lifetime} < 33) ? 2 : 3); - } else { - $level = (($timer->{priority} <= 50 or $timer->{lifetime} < 33) ? 4 : 5); - } - - if($timer->{eventid}) { - my $event = main::getModule('EPG')->getId($timer->{eventid}, 'UNIX_TIMESTAMP(starttime) + duration as STOPTIME'); - $soap->setEventLevel($timer->{eventid}, $level, $event->{STOPTIME}); - } - }|, ], }, + # Create event entries if the user has deleted a timer 'deleteTimer' => { - Descr => gettext('Create event entries if the user has deleted a timer.'), Level => 'interesting', SearchForEvent => { Msg => 'delt', }, Match => { - TimerId => qr/delt\s+(\d+)/s, + pos => qr/delt\s+(\d+)\"\s+on\s+\S+/s, + host => qr/delt\s+\d+\"\s+on\s+(\S+)/s, }, Actions => [ q|sub{ my $args = shift; my $event = shift; - my $timer = getDataById($args->{TimerId}, 'TIMERS', 'pos'); + my $modT = main::getModule('TIMERS') or return; + my $timer = $modT->getTimerByPos($modT->{svdrp}->IDfromHostname($args->{host}), $args->{pos}) or return; my $title = sprintf(gettext("Timer deleted: %s"),$timer->{file}); - my $desc = getDataById($timer->{eventid}, 'EPG', 'eventid') if($timer->{eventid}); - - my $description = ''; - - my $channel = main::getModule('CHANNELS')->ChannelToName($timer->{channel}); - $description .= sprintf(gettext("Channel: %s"), $channel); - $description .= "\r\n"; - - Date_Init("Language=English"); - my $d = ParseDate($timer->{starttime}); - $timer->{starttime} = datum(UnixDate($d,"%s")) if($d); - - $description .= sprintf(gettext("On: %s to %s"), - $timer->{starttime}, - fmttime($timer->{stop})); - $description .= "\r\n"; - $description .= sprintf(gettext("Description: %s"), $desc->{description} ) - if($desc && $desc->{description}); - - main::getModule('REPORT')->news($title, $description, "display", $timer->{eventid}, $event->{Level}); + $modT->_news($title, $timer, $event->{Level}); } |, q|sub{ my $args = shift; my $event = shift; - my $timer = getDataById($args->{TimerId}, 'TIMERS', 'pos'); - my $soap = main::getModule('SHARE'); - my $level = 1; - - if($timer->{eventid}) { - my $event = main::getModule('EPG')->getId($timer->{eventid}, 'UNIX_TIMESTAMP(starttime) + duration as STOPTIME'); - $soap->setEventLevel($timer->{eventid}, $level, $event->{STOPTIME}); - } + my $modT = main::getModule('TIMERS') or return; + my $timer = $modT->getTimerByPos($modT->{svdrp}->IDfromHostname($args->{host}), $args->{pos}) or return; + my $modS = main::getModule('SHARE') or return; + $modS->sharetimer($timer); }|, ], }, + # Create event entries if the user has toggled a timer. 'toggleTimer' => { - Descr => gettext('Create event entries if the user has toggled a timer.'), Level => 'interesting', SearchForEvent => { Msg => 'modt', }, Match => { - TimerId => qr/modt\s+(\d+)\s(on|off)/s, - Type => qr/modt\s+\d+\s+(on|off)/s + pos => qr/modt\s+(\d+)\s(on|off)/s, + enabled => qr/modt\s+\d+\s+(on|off)/s, + host => qr/modt\s+\d+\s+\S+\s+on\s+(\S+)/s, }, Actions => [ q|sub{ my $args = shift; my $event = shift; - my $timer = getDataById($args->{TimerId}, 'TIMERS', 'pos'); + my $modT = main::getModule('TIMERS') or return; + my $timer = $modT->getTimerByPos($modT->{svdrp}->IDfromHostname($args->{host}), $args->{pos}) or return; my $title; - if($args->{Type} eq 'on') { + if($args->{enabled} eq 'on') { $title = sprintf(gettext("Timer activated: %s"),$timer->{file}); } else { $title = sprintf(gettext("Timer deactivated: %s"),$timer->{file}); } - - my $description = ''; - - my $channel = main::getModule('CHANNELS')->ChannelToName($timer->{channel}); - $description .= sprintf(gettext("Channel: %s"), $channel); - $description .= "\r\n"; - - Date_Init("Language=English"); - my $d = ParseDate($timer->{starttime}); - $timer->{starttime} = datum(UnixDate($d,"%s")) if($d); - - my $desc = getDataById($timer->{eventid}, 'EPG', 'eventid') if($timer->{eventid}); - $description .= sprintf(gettext("On: %s to %s"), - $timer->{starttime}, - fmttime($timer->{stop})); - $description .= "\r\n"; - $description .= sprintf(gettext("Description: %s"), $desc->{description} ) - if($desc && $desc->{description}); - - main::getModule('REPORT')->news($title, $description, "display", $timer->{eventid}, $event->{Level}); + $modT->_news($title, $timer, $event->{Level}); } |, q|sub{ my $args = shift; my $event = shift; - my $timer = getDataById($args->{TimerId}, 'TIMERS', 'pos'); - my $soap = main::getModule('SHARE'); - my $level = ($args->{Type} eq 'off' ? 1 : 2); - if($timer->{autotimerid} and $args->{Type} eq 'on') { - $level = (($timer->{priority} <= 50 or $timer->{lifetime} < 33) ? 2 : 3); - } elsif($args->{Type} eq 'on') { - $level = (($timer->{priority} <= 50 or $timer->{lifetime} < 33) ? 4 : 5); - } - - if($timer->{eventid}) { - my $event = main::getModule('EPG')->getId($timer->{eventid}, 'UNIX_TIMESTAMP(starttime) + duration as STOPTIME'); - $soap->setEventLevel($timer->{eventid}, $level, $event->{STOPTIME}); - } - }|, - ], - }, - 'updateTimer' => { - Descr => gettext('Create event entries if a timer has been updated.'), - Level => 'harmless', - SearchForEvent => { - Msg => 'Reread', - }, - Match => { - HighId => qr/Reread\s+(\d+)\s+timers/s, - }, - Actions => [ - q|sub{ my $args = shift; - my $event = shift; + my $modT = main::getModule('TIMERS') or return; + my $timer = $modT->getTimerByPos($modT->{svdrp}->IDfromHostname($args->{host}), $args->{pos}) or return; my $modS = main::getModule('SHARE') or return; - my $modE = main::getModule('EPG') or return; - for (my $i = 1; $i<=$args->{HighId}; $i++) { - my $timer = getDataById($i, 'TIMERS', 'pos'); - - my $level = 1; - if($timer->{autotimerid} and ($timer->{flags} && $timer->{flags} & 1)) { - $level = (($timer->{priority} <= 50 or $timer->{lifetime} < 33) ? 2 : 3); - } elsif($timer->{flags} && $timer->{flags} & 1) { - $level = (($timer->{priority} <= 50 or $timer->{lifetime} < 33) ? 4 : 5); - } - - if($timer->{eventid}) { - my $event = $modE->getId($timer->{eventid}, 'UNIX_TIMESTAMP(starttime) + duration as STOPTIME'); - $modS->setEventLevel($timer->{eventid}, $level, $event->{STOPTIME}); - } - } - }|, + $modS->sharetimer($timer); + }|, ], }, }, @@ -338,7 +225,7 @@ sub status { my $total = 0; { - my $sth = $self->{dbh}->prepare("SELECT SQL_CACHE count(*) as count from TIMERS"); + my $sth = $self->{dbh}->prepare("SELECT SQL_CACHE count(*) as count from TIMERS"); if(!$sth->execute()) { error sprintf("Couldn't execute query: %s.",$sth->errstr); @@ -492,7 +379,10 @@ sub saveTimer { $self->_insert($data); } - event sprintf('Save timer "%s" with id: "%d"', $data->{file}, $pos || 0); + event sprintf('Save timer %d on %s - %s', + $pos || 0, + $self->{svdrp}->hostname($data->{vid}), + $data->{file}); $self->{changedTimer} = 1; @@ -1096,7 +986,6 @@ sub _insert { # ------------------ my $self = shift || return error('No object defined!'); my $timer = shift || return; - my $checked = shift || 0; # import only status which used from vdr and thereby exclude eventid from vdradmin $timer->{flags} &= 15; @@ -1134,7 +1023,7 @@ sub _insert { my $sth = $self->{dbh}->prepare( q|REPLACE INTO TIMERS VALUES - (?,?,?,?,?,?,?,?,?,?,?,?,FROM_UNIXTIME(?), FROM_UNIXTIME(?),0,?,?,?,?,?,NOW()) + (?,?,?,?,?,?,?,?,?,?,?,?,FROM_UNIXTIME(?), FROM_UNIXTIME(?),0,?,?,?,?,0,NOW()) |); my $id = md5_hex($timer->{vid} . $timer->{channel} . $nexttime->{start} . $nexttime->{stop} ); $sth->execute( @@ -1155,8 +1044,7 @@ q|REPLACE INTO TIMERS VALUES $e ? $e->{eventid} : 0, $e ? $e->{starttime} : 0, $e ? $e->{duration} : 0, - $aid, - $checked + $aid ) or return error sprintf("Couldn't execute query: %s.",$sth->errstr); $self->{keywords}->insert('timer',$id,$keywords); @@ -1207,7 +1095,7 @@ sub _readData { file => $data[7], aux => $data[8] }; - if($self->_insert($timer, 1)) { + if($self->_insert($timer)) { $c++; } } @@ -1221,21 +1109,20 @@ sub _readData { $self->getTimersByAutotimer($aids); # Get new timers by User - if($oldTimers or exists $self->{changedTimer}) { + if(($oldTimers && scalar keys %$oldTimers != $c) + or (!$oldTimers && $c) + or exists $self->{changedTimer}) { my $timers = $self->getNewTimers($oldTimers); - foreach my $t (@$timers) { - event sprintf('New timer "%s" with id: "%d"', $t->{file}, $t->{pos}); + foreach my $t (keys %$timers) { + event sprintf('New timer %d on %s - "%s"', $timers->{$t}->{pos}, $self->{svdrp}->hostname($timers->{$t}->{vid}), $timers->{$t}->{file}); } - $self->updated() if(scalar @$timers or exists $self->{changedTimer}); + $self->updated() if(($timers && scalar keys %$timers) or exists $self->{changedTimer}); delete $self->{changedTimer} if(exists $self->{changedTimer}); } - $self->{REGISTER}++; - if(scalar keys %$oldTimers != $c or $self->{REGISTER} == 2) { - # Event to signal we are finish to read - event(sprintf('Reread %d timers and written into database!', $c)); - } + # Event to signal we are finish to read + lg(sprintf('Reread %d timers and written into database!', $c)); $console->message(sprintf(gettext("%d timer written to database."), $c)) if(ref $console and $console->typ ne 'AJAX'); @@ -1433,7 +1320,7 @@ ORDER BY sub getTimerById { # ------------------ my $self = shift || return error('No object defined!'); - my $tid = shift || return error('No id defined!'); + my $tid = shift || return error('No tid defined!'); my $sql = qq| SELECT SQL_CACHE @@ -1469,7 +1356,8 @@ WHERE sub getTimerByPos { # ------------------ my $self = shift || return error('No object defined!'); - my $tid = shift || return error('No id defined!'); + my $vid = shift || return error('No vid defined!'); + my $pos = shift || return error('No pos defined!'); my $sql = qq| SELECT SQL_CACHE @@ -1485,19 +1373,21 @@ SELECT SQL_CACHE UNIX_TIMESTAMP(t.starttime) as Day, t.collision, t.eventid, - t.autotimerid + t.autotimerid, + UNIX_TIMESTAMP(t.eventstarttime) + t.eventduration as eventstoptime FROM TIMERS as t, CHANNELS as c WHERE t.channel = c.id AND t.vid = c.vid + and t.vid = ? and t.pos = ? |; my $sth = $self->{dbh}->prepare($sql); - $sth->execute($tid) - or return error(sprintf("Timer '%s' does not exist in the database!",$tid)); + $sth->execute($vid, $pos) + or return error(sprintf("Timer '%s' does not exist in the database!",sprintf("%d/%d",$vid,$pos))); return $sth->fetchrow_hashref(); } # ------------------ @@ -1514,15 +1404,23 @@ sub getRunningTimer { sub getNewTimers { # ------------------ my $self = shift || return error('No object defined!'); - my $oldTimers = shift || return; + my $oldTimers = shift; - my $ret = []; - foreach my $timerid (keys %$oldTimers) { - if(! $oldTimers->{$timerid}->{checked}) { - push(@$ret, $oldTimers->{$timerid}); - } + if($oldTimers) { + my @old = keys %$oldTimers; + return undef unless(scalar @old); + + my $sql = sprintf('SELECT SQL_CACHE * FROM TIMERS where id not in (%s)', join(',' => ('?') x @old)); + my $sth = $self->{dbh}->prepare($sql); + $sth->execute(@old) + or return error sprintf("Couldn't execute query: %s.",$sth->errstr); + return $sth->fetchall_hashref('id'); + } else { + my $sth = $self->{dbh}->prepare('SELECT SQL_CACHE * FROM TIMERS'); + $sth->execute() + or return error sprintf("Couldn't execute query: %s.",$sth->errstr); + return $sth->fetchall_hashref('id'); } - return $ret; } # ------------------ @@ -1530,7 +1428,7 @@ sub getCheckTimer { # ------------------ my $self = shift || return error('No object defined!'); my $sql = qq| -SELECT SQL_CACHE t.id, t.vid, t.pos, t.flags, t.channel, t.priority, t.lifetime, +SELECT SQL_CACHE t.id, t.vid, t.pos, t.flags, t.channel, t.priority, t.lifetime, t.file, t.aux, t.start as timerstart,t.stop as timerstop, UNIX_TIMESTAMP(e.starttime) as starttime, @@ -1587,14 +1485,27 @@ SELECT SQL_CACHE t.id, t.vid, t.pos, t.flags, t.channel, t.priority, t.lifetime lifetime => $erg->{$t}->{lifetime} }; - debug sprintf("Adjust timer %d (%s) at %s : from %s - %s to %s - %s", + # next if adjust change notthing ... (e.g. time changed only around few seconds) + next if($erg->{$t}->{timerstart} == $tt->{start} + && $erg->{$t}->{timerstop} == $tt->{stop}); + + # save timer + my $from = sprintf('%s - %s',fmttime($erg->{$t}->{timerstart}), fmttime($erg->{$t}->{timerstop})); + my $to = sprintf('%s - %s',fmttime($tt->{start}),fmttime($tt->{stop})); + debug sprintf("Adjust timer %d on %s at %s : from %s to %s - %s", $tt->{pos}, - $tt->{file}, + $self->{svdrp}->hostname($tt->{vid}), $tt->{day}, - fmttime($erg->{$t}->{timerstart}), fmttime($erg->{$t}->{timerstop}), - fmttime($tt->{start}),fmttime($tt->{stop})); + $from, $to, + $tt->{file}); $self->saveTimer($tt); + + $self->news($tt->{vid},$tt->{pos} + ,sprintf(gettext("Adjust timer : %s"),$tt->{file}) + ,'interesting' + ,sprintf(gettext("Adjust times from %s to %s"),$from, $to) . "\r\n" + ); } return $erg; } @@ -2093,4 +2004,45 @@ sub suggest { } } +# ------------------ +sub news { +# ------------------ + my $self = shift || return error('No object defined!'); + my $vid = shift || return error('No vid defined!'); + my $pos = shift || return error('No pos defined!'); + my $title = shift || return error('No title defined!'); + my $eventlevel = shift || return error('No eventlevel defined!'); + my $description = shift || ''; + + my $timer = $self->getTimerByPos($vid,$pos) || return undef; + return $self->_news($title, $timer, $eventlevel, $description); +} + +# ------------------ +sub _news { +# ------------------ + my $self = shift || return error('No object defined!'); + my $title = shift || return error('No title defined!'); + my $timer = shift || return error('No timer defined!'); + my $eventlevel = shift || return error('No eventlevel defined!'); + my $description = shift || ''; + + $description .= sprintf(gettext("Channel: %s"), $timer->{Channel}); + $description .= "\r\n"; + + $timer->{starttime} = datum($timer->{Day}); + + $description .= sprintf(gettext("On: %s to %s"), + $timer->{starttime}, + fmttime($timer->{stop})); + $description .= "\r\n"; + + my $epgdesc = $self->getEpgDesc($timer->{id}); + $description .= $epgdesc + if($epgdesc); + + main::getModule('EVENTS')->news($title, $description, "display", $timer->{eventid}, $eventlevel); + +} + 1; diff --git a/lib/XXV/OUTPUT/Html.pm b/lib/XXV/OUTPUT/Html.pm index 0bd2473..9b2ba5d 100644 --- a/lib/XXV/OUTPUT/Html.pm +++ b/lib/XXV/OUTPUT/Html.pm @@ -1058,6 +1058,10 @@ sub parseData { $self->parseData($dta->{$name}); } else { $dta->{$name} = reentities($dta->{$name}) if($self->{hasentities}); + #if($self->{charset} eq 'UTF-8' + # && $dta->{$name} && !utf8::is_utf8($dta->{$name})) { + # utf8::upgrade($dta->{$name}); + #} $dta->{$name} = entities($dta->{$name}); } } @@ -1067,6 +1071,10 @@ sub parseData { $self->parseData($_); } else { $_ = reentities($_) if($self->{hasentities}); + #if($self->{charset} eq 'UTF-8' + # && $_ && !utf8::is_utf8($_)) { + # utf8::upgrade($_); + #} $_ = entities($_); } } diff --git a/lib/XXV/OUTPUT/NEWS/JABBER.pm b/lib/XXV/OUTPUT/NEWS/JABBER.pm index 481dd8d..273775a 100644 --- a/lib/XXV/OUTPUT/NEWS/JABBER.pm +++ b/lib/XXV/OUTPUT/NEWS/JABBER.pm @@ -3,16 +3,17 @@ use strict; use Tools; -# News Modules have only three methods +# News Modules have only this methods # init - for intervall or others # send - send the informations -# read - read the news and parse it +# push - push the news and parse it +# req - read the actual news print this out # This module method must exist for XXV # ------------------ sub module { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $args = { Name => 'NEWS::JABBER', Prereq => { @@ -68,18 +69,14 @@ Then you must receive a message in your running jabber client. required => gettext('This is required!'), check => sub { my $value = shift; - my $erg = $obj->init + my $erg = $self->init or return undef, gettext("Can't initialize news module!") - if($value eq 'y' and not exists $obj->{JCON}); + if($value eq 'y' and not exists $self->{JCON}); if($value eq 'y') { - my $emodule = main::getModule('EVENTS'); - if(!$emodule or $emodule->{active} ne 'y') { + my $emod = main::getModule('EVENTS'); + if(!$emod or $emod->{active} ne 'y') { return undef, sprintf(gettext("Module can't activated! This module depends module %s."),'EVENTS'); } - my $rmodule = main::getModule('REPORT'); - if(!$rmodule or $rmodule->{active} ne 'y') { - return undef, sprintf(gettext("Module can't activated! This module depends module %s."),'REPORT'); - } } return $value; }, @@ -89,18 +86,18 @@ Then you must receive a message in your running jabber client. default => 1, type => 'list', choices => sub { - my $rmodule = main::getModule('REPORT'); - return undef unless($rmodule); - my $erg = $rmodule->get_level_as_array(); + my $emod = main::getModule('EVENTS'); + return undef unless($emod); + my $erg = $emod->get_level_as_array(); map { my $x = $_->[1]; $_->[1] = $_->[0]; $_->[0] = $x; } @$erg; return @$erg; }, required => gettext('This is required!'), check => sub { my $value = int(shift) || 0; - my $rmodule = main::getModule('REPORT'); - return undef unless($rmodule); - my $erg = $rmodule->get_level_as_array(); + my $emod = main::getModule('EVENTS'); + return undef unless($emod); + my $erg = $emod->get_level_as_array(); unless($value >= $erg->[0]->[0] and $value <= $erg->[-1]->[0]) { return undef, sprintf(gettext('Sorry, but value must be between %d and %d'), @@ -162,7 +159,8 @@ sub new { # all configvalues to $self without parents (important for ConfigModule) map { - $self->{$_} = $attr{'-config'}->{$self->{MOD}->{Name}}->{$_} || $self->{MOD}->{Preferences}->{$_}->{default} + $self->{$_} = $attr{'-config'}->{$self->{MOD}->{Name}}->{$_}; + $self->{$_} = $self->{MOD}->{Preferences}->{$_}->{default} unless($self->{$_}); } keys %{$self->{MOD}->{Preferences}}; # Try to use the Requirments @@ -190,7 +188,7 @@ sub new { # ------------------ sub init { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); 1; } @@ -198,13 +196,13 @@ sub init { # ------------------ sub jconnect { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $jcon = Net::XMPP::Client->new( debuglevel => 0, ) || return error("Can't create jabber client"); - my ($user, $server) = split('\@', $obj->{user}); + my ($user, $server) = split('\@', $self->{user}); debug sprintf("Connecting to jabber server: %s ...", $server); @@ -212,25 +210,25 @@ sub jconnect { hostname => $server, ); return - unless($obj->xmpp_check_result("Connect",\@res,$jcon)); + unless($self->xmpp_check_result("Connect",\@res,$jcon)); debug sprintf("Authentificat with User:%s ...", $user); @res = $jcon->AuthSend( 'hostname'=>$server, 'username'=>$user, - 'password'=>$obj->{passwd}, + 'password'=>$self->{passwd}, 'resource'=>'xxv' ); return $jcon - if($obj->xmpp_check_result("Login",\@res,$jcon)); + if($self->xmpp_check_result("Login",\@res,$jcon)); } # ------------------ sub jdisconnect { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $cnx = shift || 0; $cnx->Disconnect() @@ -243,33 +241,33 @@ sub jdisconnect { # ------------------ sub send { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $vars = shift || return error('No data defined!'); return undef, lg('This function is deactivated!') - if($obj->{active} ne 'y'); + if($self->{active} ne 'y'); - my $cnx = $obj->jconnect() + my $cnx = $self->jconnect() || return error ('No connected JabberClient!' ); $cnx->MessageSend( - 'to' => $obj->{receiveUser}, + 'to' => $self->{receiveUser}, 'subject'=> $vars->{Title}, 'body' => ($vars->{Text} || $vars->{Url}), ); - $cnx = $obj->jdisconnect($cnx); + $cnx = $self->jdisconnect($cnx); 1; } # ------------------ -sub read { +sub push { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $vars = shift || return error('No data defined!'); - return $obj->send($vars); + return $self->send($vars); 1; } @@ -277,10 +275,10 @@ sub read { # ------------------ sub req { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); return gettext('The module NEWS::JABBER is not active!') - if($obj->{active} ne 'y'); + if($self->{active} ne 'y'); my $vars = { AddDate => time, @@ -289,17 +287,17 @@ sub req { Level => 100, }; - if($obj->send($vars)) { - return sprintf('Message is send to %s at %s', $obj->{receiveUser}, datum($vars->{AddDate})); + if($self->send($vars)) { + return sprintf('Message is send to %s at %s', $self->{receiveUser}, datum($vars->{AddDate})); } else { - return sprintf("Sorry, couldn't send message to %s at %s", $obj->{receiveUser}, datum($vars->{AddDate})); + return sprintf("Sorry, couldn't send message to %s at %s", $self->{receiveUser}, datum($vars->{AddDate})); } } # ------------------ sub xmpp_check_result { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my ($txt,$res,$cnx)=@_; return error("Error '$txt': result undefined") diff --git a/lib/XXV/OUTPUT/NEWS/MAIL.pm b/lib/XXV/OUTPUT/NEWS/MAIL.pm index 66d9a5c..60ae109 100644 --- a/lib/XXV/OUTPUT/NEWS/MAIL.pm +++ b/lib/XXV/OUTPUT/NEWS/MAIL.pm @@ -7,14 +7,14 @@ use POSIX qw(locale_h); # News Modules have only this methods # init - for intervall or others # send - send the informations -# read - read the news and parse it +# push - push the news and parse it # req - read the actual news print this out # This module method must exist for XXV # ------------------ sub module { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $args = { Name => 'NEWS::MAIL', Prereq => { @@ -33,19 +33,15 @@ sub module { required => gettext('This is required!'), check => sub { my $value = shift; - my $erg = $obj->init + my $erg = $self->init or return undef, gettext("Can't initialize news module!") - if($value eq 'y' and not exists $obj->{INITE}); + if($value eq 'y' and not exists $self->{INITE}); return $value; if($value eq 'y') { - my $emodule = main::getModule('EVENTS'); - if(!$emodule or $emodule->{active} ne 'y') { + my $emod = main::getModule('EVENTS'); + if(!$emod or $emod->{active} ne 'y') { return undef, sprintf(gettext("Module can't activated! This module depends module %s."),'EVENTS'); } - my $rmodule = main::getModule('REPORT'); - if(!$rmodule or $rmodule->{active} ne 'y') { - return undef, sprintf(gettext("Module can't activated! This module depends module %s."),'REPORT'); - } } }, }, @@ -54,18 +50,18 @@ sub module { default => 1, type => 'list', choices => sub { - my $rmodule = main::getModule('REPORT'); - return undef unless($rmodule); - my $erg = $rmodule->get_level_as_array(); + my $emod = main::getModule('EVENTS'); + return undef unless($emod); + my $erg = $emod->get_level_as_array(); map { my $x = $_->[1]; $_->[1] = $_->[0]; $_->[0] = $x; } @$erg; return @$erg; }, required => gettext('This is required!'), check => sub { my $value = int(shift) || 0; - my $rmodule = main::getModule('REPORT'); - return undef unless($rmodule); - my $erg = $rmodule->get_level_as_array(); + my $emod = main::getModule('EVENTS'); + return undef unless($emod); + my $erg = $emod->get_level_as_array(); unless($value >= $erg->[0]->[0] and $value <= $erg->[-1]->[0]) { return undef, sprintf(gettext('Sorry, but value must be between %d and %d'), @@ -81,9 +77,9 @@ sub module { required => gettext('This is required!'), check => sub { my $value = int(shift) || 0; - if($value and ref $obj->{INTERVAL}) { + if($value and ref $self->{TIMER}) { my $newinterval = $value*3600; - $obj->{INTERVAL}->interval($newinterval); + $self->{TIMER}->interval($newinterval); } return $value; }, @@ -139,18 +135,22 @@ sub new { my $self = {}; bless($self, $class); + # read the DB Handle + $self->{dbh} = delete $attr{'-dbh'}; + # paths $self->{paths} = delete $attr{'-paths'}; # host $self->{host} = delete $attr{'-host'}; - # who am I + # who am I $self->{MOD} = $self->module; # all configvalues to $self without parents (important for ConfigModule) map { - $self->{$_} = $attr{'-config'}->{$self->{MOD}->{Name}}->{$_} || $self->{MOD}->{Preferences}->{$_}->{default} + $self->{$_} = $attr{'-config'}->{$self->{MOD}->{Name}}->{$_}; + $self->{$_} = $self->{MOD}->{Preferences}->{$_}->{default} unless($self->{$_}); } keys %{$self->{MOD}->{Preferences}}; # Try to use the Requirments @@ -185,8 +185,7 @@ sub new { # The Initprocess my $erg = $self->init - or return error("Can't initialize news module!") - if($self->{active} eq 'y'); + or return error("Can't initialize news module!"); $self->{TYP} = 'text/plain'; @@ -196,21 +195,24 @@ sub new { # ------------------ sub init { # ------------------ - my $obj = shift || return error('No object defined!'); - $obj->{INITE} = 1; + my $self = shift || return error('No object defined!'); + $self->{INITE} = 1; - $obj->{LastReportTime} = time; + $self->{LastReportTime} = main::getStartTime(); # Interval to send the next mail - $obj->{INTERVAL} = Event->timer( - interval => $obj->{interval}*3600, + $self->{TIMER} = Event->timer( + interval => $self->{interval}*3600, prio => 6, # -1 very hard ... 6 very low cb => sub{ - $obj->send(); + if($self->{active} eq 'y') { + my $content = $self->_req(); + $self->send($content); + } }, ); - $obj->{COUNT} = 1; + $self->{COUNT} = 1; 1; } @@ -218,54 +220,55 @@ sub init { # ------------------ sub send { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); return error('This function is deactivated!') - if($obj->{active} ne 'y'); + if($self->{active} ne 'y'); - ++$obj->{COUNT}; + my $content = $self->_req(); - my $content = $obj->req(); + my @addresses = split(/\s*,\s*/, $self->{address}); + + my $mail = new Mail::SendEasy( + smtp => $self->{smtp}, + user => $self->{susr}, + pass => $self->{spwd} + ); - my $smod = main::getModule('STATUS'); - my @addresses = split(/\s*,\s*/, $obj->{address}); # Send mail - my $status = Mail::SendEasy::send( - smtp => $obj->{smtp}, - user => $obj->{susr}, - pass => $obj->{spwd}, - from => $obj->{from_address}, + my $status = $mail->send( + from => $self->{from_address}, from_title => 'XXV MailNewsAgent', to => shift @addresses , cc => join(',', @addresses), - subject => "News from your XXV System!" , + subject => gettext("News from your XXV System!"), msg => $content, - msgid => $obj->{COUNT}, - ) || return error sprintf("Can't send mail: %s", $Mail::SendEasy::ER); + msgid => $self->{COUNT}, + ) || return error sprintf("Can't send mail: %s", $mail->error); - $obj->{LastReportTime} = time; + lg sprintf('Mail %d. send successfully', $self->{COUNT}++); - lg sprintf('Mail %d. send successfully', $obj->{COUNT}); - $obj->{NEWSLETTER} = undef; 1; } # ------------------ sub parseHeader { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); + my $newscnt = shift || 0; + my $output = ''; my $vars = { - msgnr => $obj->{COUNT}, + msgnr => $self->{COUNT}, date => datum(time), - anzahl=> $obj->{NEWSCOUNT}, + anzahl=> $newscnt, }; - my $template = $obj->{TEMPLATES}->{'header'}; - $obj->{tt}->process($template, $vars, \$output) - or return error($obj->{tt}->error()); + my $template = $self->{TEMPLATES}->{'header'}; + $self->{tt}->process($template, $vars, \$output) + or return error($self->{tt}->error()); return $output; } @@ -273,63 +276,107 @@ sub parseHeader { # ------------------ sub parseFooter { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $output = ''; my $vars = { usage => main::getModule('RECORDS')->{CapacityMessage}, uptime => main::getModule('STATUS')->uptime, - lastreport => datum($obj->{LastReportTime}), + lastreport => datum($self->{LastReportTime}), }; - my $template = $obj->{TEMPLATES}->{'footer'}; - $obj->{tt}->process($template, $vars, \$output) - or return error($obj->{tt}->error()); + my $template = $self->{TEMPLATES}->{'footer'}; + $self->{tt}->process($template, $vars, \$output) + or return error($self->{tt}->error()); return $output; } # ------------------ -sub read { +sub push { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $vars = shift || return error('No data defined!'); - my $output = ''; - $vars->{count} = ++$obj->{NEWSCOUNT}; - $vars->{host} = $obj->{host}; - $vars->{port} = main::getModule('HTTPD')->{Port}; - - my $template = $obj->{TEMPLATES}->{'content'}; - $obj->{tt}->process($template, $vars, \$output) - or return error($obj->{tt}->error()); - - $obj->{NEWSLETTER} .= $output; - - return $output; + return undef; } # ------------------ sub req { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); + my $params = shift || {}; + + if($params->{test}) { + my $content = $self->_req(1); + if($self->send($content)) { + return gettext('A mail with the following content has been sent to your mail account!') + . "\n\n" + . $content; + } else { + return gettext("Mail with the following content could'nt sent to your mail account!") + . "\n\n" + . $content; + } + } + return $self->_req(1); +} +# ------------------ +sub _req { +# ------------------ + my $self = shift || return error('No object defined!'); my $test = shift || 0; return gettext('The module NEWS::Mail is not active!') - if($obj->{active} ne 'y'); + if($self->{active} ne 'y'); my $content = ''; - if($test) { - $obj->send; - $content .= gettext('A mail with the following content has been sent to your mail account!'); - $content .= "\n\n"; + + my $sql = "SELECT SQL_CACHE id, title, message, cmd, data, level, UNIX_TIMESTAMP(addtime) from EVENTS where level >= ? AND UNIX_TIMESTAMP(addtime) >= ? order by addtime desc"; + my $sth = $self->{dbh}->prepare($sql); + $sth->execute($self->{level}, $self->{LastReportTime}) + or return error sprintf("Couldn't execute query: %s.",$sth->errstr); + my $data = $sth->fetchall_arrayref(); + + $content .= $self->parseHeader($data ? scalar @$data : 0); + + my $emod = main::getModule('EVENTS'); + my $hmod = main::getModule('HTTPD'); + my $url = sprintf("http://%s:%s/", $self->{host}, $hmod->{Port}); + + foreach my $entry (@{$data}) { + my ($id, $title, $message, $cmd, $data, $level, $addtime) = @{$entry}; + + my $link = $url; + $link .= sprintf("?cmd=%s&data=%s", $cmd, $data) + if($cmd && $data); + + my $vars = { + AddDate => $addtime, + Title => $title, + Text => $message, + Cmd => $cmd, + Id => $data, + Url => $link, + Level => $level, + category => $emod->translate_scala($level), + count => $id, + host => $self->{host}, + port => $hmod->{Port}, + }; + + my $output = ''; + my $template = $self->{TEMPLATES}->{'content'}; + $self->{tt}->process($template, $vars, \$output) + or return error($self->{tt}->error()); + $content .= $output; } - $content .= $obj->parseHeader(); - $content .= $obj->{NEWSLETTER}; - $content .= $obj->parseFooter(); + $content .= $self->parseFooter(); + + $self->{LastReportTime} = time unless($test); return $content; } diff --git a/lib/XXV/OUTPUT/NEWS/RSS.pm b/lib/XXV/OUTPUT/NEWS/RSS.pm index 376a438..7ede3f3 100644 --- a/lib/XXV/OUTPUT/NEWS/RSS.pm +++ b/lib/XXV/OUTPUT/NEWS/RSS.pm @@ -4,16 +4,17 @@ use strict; use Tools; use POSIX qw(locale_h); -# News Modules have only three methods +# News Modules have only this methods # init - for intervall or others # send - send the informations -# read - read the news and parse it +# push - push the news and parse it +# req - read the actual news print this out # This module method must exist for XXV # ------------------ sub module { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $args = { Name => 'NEWS::RSS', Prereq => { @@ -32,18 +33,14 @@ sub module { required => gettext('This is required!'), check => sub { my $value = shift; - my $erg = $obj->init + my $erg = $self->init or return undef, gettext("Can't initialize news module!") - if($value eq 'y' and not exists $obj->{INITE}); + if($value eq 'y' and not exists $self->{INITE}); if($value eq 'y') { - my $emodule = main::getModule('EVENTS'); - if(!$emodule or $emodule->{active} ne 'y') { + my $emod = main::getModule('EVENTS'); + if(!$emod or $emod->{active} ne 'y') { return undef, sprintf(gettext("Module can't activated! This module depends module %s."),'EVENTS'); } - my $rmodule = main::getModule('REPORT'); - if(!$rmodule or $rmodule->{active} ne 'y') { - return undef, sprintf(gettext("Module can't activated! This module depends module %s."),'REPORT'); - } } return $value; }, @@ -53,18 +50,18 @@ sub module { default => 1, type => 'list', choices => sub { - my $rmodule = main::getModule('REPORT'); - return undef unless($rmodule); - my $erg = $rmodule->get_level_as_array(); + my $emod = main::getModule('EVENTS'); + return undef unless($emod); + my $erg = $emod->get_level_as_array(); map { my $x = $_->[1]; $_->[1] = $_->[0]; $_->[0] = $x; } @$erg; return @$erg; }, required => gettext('This is required!'), check => sub { my $value = int(shift) || 0; - my $rmodule = main::getModule('REPORT'); - return undef unless($rmodule); - my $erg = $rmodule->get_level_as_array(); + my $emod = main::getModule('EVENTS'); + return undef unless($emod); + my $erg = $emod->get_level_as_array(); unless($value >= $erg->[0]->[0] and $value <= $erg->[-1]->[0]) { return undef, sprintf(gettext('Sorry, but value must be between %d and %d'), @@ -85,18 +82,22 @@ sub new { my $self = {}; bless($self, $class); + # read the DB Handle + $self->{dbh} = delete $attr{'-dbh'}; + # paths $self->{paths} = delete $attr{'-paths'}; # host $self->{host} = delete $attr{'-host'}; - # who am I + # who am I $self->{MOD} = $self->module; # all configvalues to $self without parents (important for ConfigModule) map { - $self->{$_} = $attr{'-config'}->{$self->{MOD}->{Name}}->{$_} || $self->{MOD}->{Preferences}->{$_}->{default} + $self->{$_} = $attr{'-config'}->{$self->{MOD}->{Name}}->{$_}; + $self->{$_} = $self->{MOD}->{Preferences}->{$_}->{default} unless($self->{$_}); } keys %{$self->{MOD}->{Preferences}}; # Try to use the Requirments @@ -118,16 +119,14 @@ sub new { }, "NEWS::RSS: Start initiate rss feed ...") if($self->{active} eq 'y'); - - return $self; } # ------------------ sub init { # ------------------ - my $obj = shift || return error('No object defined!'); - $obj->{INITE} = 1; + my $self = shift || return error('No object defined!'); + $self->{INITE} = 1; 1; } @@ -135,10 +134,12 @@ sub init { # ------------------ sub createRSS { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $ver = shift || 2; - my $account = sprintf("%s@%s", $ENV{USER}, main::getModule('STATUS')->name); - my $url = sprintf("http://%s:%s/", $obj->{host}, main::getModule('HTTPD')->{Port}); + my $lastaddtime = shift; + my $url = shift; + + my $account = sprintf("%s@%s", $ENV{USER}, $self->{host}); my $rss; if($ver == 1) { @@ -149,8 +150,8 @@ sub createRSS { $rss->channel( title => gettext("XXV RSS 1.0"), - 'link' => $url, - description => gettext("Important messages from your VDR/XXV"), + 'link' => $url, + description => gettext("Messages from your VDR/XXV"), dc => { date => datum(time,'int'), subject => gettext("XXV messages"), @@ -165,8 +166,6 @@ sub createRSS { ); } elsif($ver == 2) { - my $lastbuild = (exists $obj->{lastBuildDate} ? $obj->{lastBuildDate} : time); - my $lastadd = (exists $obj->{lastAddDate} ? $obj->{lastAddDate} : time); $rss = XML::RSS->new( version => '2.0', @@ -175,76 +174,66 @@ sub createRSS { $rss->channel( title => gettext("XXV RSS 2.0"), 'link' => $url, - description => gettext("Important messages from your VDR/XXV"), + description => gettext("Messages from your VDR/XXV"), language => setlocale(POSIX::LC_MESSAGES), - pubDate => datum($lastadd, 'rss'), - lastBuildDate => datum($lastbuild, 'rss'), + pubDate => datum($lastaddtime, 'rss'), + lastBuildDate => datum(time, 'rss'), managingEditor => $account, ); } - $obj->{lastBuildDate} = time; return ($ver, $rss); } # ------------------ -sub send { +sub push { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $vars = shift || return error('No data defined!'); - while($obj->{STACK} && scalar @{$obj->{STACK}} > 100) { - shift(@{$obj->{STACK}}); - } - - push(@{$obj->{STACK}}, [ - ++$obj->{COUNT}, - entities($vars->{Title}), - entities($vars->{Url}), - entities($vars->{Text}), - datum($vars->{AddDate},'int'), - $vars->{category}, - ]); - $obj->{lastAddDate} = time; - - lg sprintf('Insert rss item (%d)', $obj->{COUNT}); - 1; -} - -# ------------------ -sub read { -# ------------------ - my $obj = shift || return error('No object defined!'); - my $vars = shift || return error('No data defined!'); - - return undef, lg('This function is deactivated!') - if($obj->{active} ne 'y'); - - return $obj->send($vars); + return; } # ------------------ sub req { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $params = shift || {}; return gettext('The module NEWS::RSS is not active!') - if($obj->{active} ne 'y'); + if($self->{active} ne 'y'); - my ($ver, $rss) = $obj->createRSS($params->{version}); + my $sql = "SELECT SQL_CACHE id, title, message, cmd, data, level, UNIX_TIMESTAMP(addtime) from EVENTS where level >= ? order by addtime desc LIMIT 0,50"; + my $sth = $self->{dbh}->prepare($sql); + $sth->execute($self->{level}) + or return error sprintf("Couldn't execute query: %s.",$sth->errstr); + my $data = $sth->fetchall_arrayref(); + + my $lastaddtime = ($data && scalar @$data) ? $data->[0]->[6] : time; + + my $url = sprintf("http://%s:%s", $self->{host}, main::getModule('HTTPD')->{Port}); + my ($ver, $rss) = $self->createRSS($params->{version}, $lastaddtime, $url); return 0 unless($rss); - foreach my $entry (@{$obj->{STACK}}) { - my ($item, $title, $link, $descr, $adddate, $category) = @{$entry}; + my $emod = main::getModule('EVENTS'); + foreach my $entry (@{$data}) { + my ($id, $title, $message, $cmd, $data, $level, $addtime) = @{$entry}; + + my $link = ''; + $link = sprintf("%s/?cmd=%s&data=%s", $url, $cmd, $data) + if($cmd && $data); + + my $category = $emod->translate_scala($level); + $message =~ s/\r\n/<br \/>/g; + if($ver == 1) { $rss->add_item( title => $title, link => $link, - description => $descr, + description => entities($message), dc => { - date => $adddate, + date => datum($addtime, 'rss'), subject => $category, }, ); @@ -252,10 +241,10 @@ sub req { $rss->add_item( title => $title, link => $link, - description => $descr, - pubDate => $adddate, + description => entities($message), + pubDate => datum($addtime, 'rss'), category => $category, - guid => sprintf(gettext('RSS item %d at %s'), $item, $adddate), + guid => $id, ); } } diff --git a/lib/XXV/OUTPUT/NEWS/VDR.pm b/lib/XXV/OUTPUT/NEWS/VDR.pm index 9f90c01..95beb59 100644 --- a/lib/XXV/OUTPUT/NEWS/VDR.pm +++ b/lib/XXV/OUTPUT/NEWS/VDR.pm @@ -4,16 +4,17 @@ use strict; use Tools; use POSIX qw(locale_h); -# News Modules have only three methods +# News Modules have only this methods # init - for intervall or others # send - send the informations -# read - read the news and parse it +# push - push the news and parse it +# req - read the actual news print this out # This module method must exist for XXV # ------------------ sub module { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $args = { Name => 'NEWS::VDR', Description => gettext('This NEWS module generates messages for the VDR interface.'), @@ -29,18 +30,14 @@ sub module { required => gettext('This is required!'), check => sub { my $value = shift; - my $erg = $obj->init + my $erg = $self->init or return undef, gettext("Can't initialize news module!") - if($value eq 'y' and not exists $obj->{INITE}); + if($value eq 'y' and not exists $self->{INITE}); if($value eq 'y') { - my $emodule = main::getModule('EVENTS'); - if(!$emodule or $emodule->{active} ne 'y') { + my $emod = main::getModule('EVENTS'); + if(!$emod or $emod->{active} ne 'y') { return undef, sprintf(gettext("Module can't activated! This module depends module %s."),'EVENTS'); } - my $rmodule = main::getModule('REPORT'); - if(!$rmodule or $rmodule->{active} ne 'y') { - return undef, sprintf(gettext("Module can't activated! This module depends module %s."),'REPORT'); - } } return $value; }, @@ -50,18 +47,18 @@ sub module { default => 1, type => 'list', choices => sub { - my $rmodule = main::getModule('REPORT'); - return undef unless($rmodule); - my $erg = $rmodule->get_level_as_array(); + my $emod = main::getModule('EVENTS'); + return undef unless($emod); + my $erg = $emod->get_level_as_array(); map { my $x = $_->[1]; $_->[1] = $_->[0]; $_->[0] = $x; } @$erg; return @$erg; }, required => gettext('This is required!'), check => sub { my $value = int(shift) || 0; - my $rmodule = main::getModule('REPORT'); - return undef unless($rmodule); - my $erg = $rmodule->get_level_as_array(); + my $emod = main::getModule('EVENTS'); + return undef unless($emod); + my $erg = $emod->get_level_as_array(); unless($value >= $erg->[0]->[0] and $value <= $erg->[-1]->[0]) { return undef, sprintf(gettext('Sorry, but value must be between %d and %d'), @@ -93,7 +90,8 @@ sub new { # all configvalues to $self without parents (important for ConfigModule) map { - $self->{$_} = $attr{'-config'}->{$self->{MOD}->{Name}}->{$_} || $self->{MOD}->{Preferences}->{$_}->{default} + $self->{$_} = $attr{'-config'}->{$self->{MOD}->{Name}}->{$_}; + $self->{$_} = $self->{MOD}->{Preferences}->{$_}->{default} unless($self->{$_}); } keys %{$self->{MOD}->{Preferences}}; # Try to use the Requirments @@ -121,10 +119,10 @@ sub new { # ------------------ sub init { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); - $obj->{INITE} = 1; - $obj->{SVDRP} = main::getModule('SVDRP'); + $self->{INITE} = 1; + $self->{SVDRP} = main::getModule('SVDRP'); 1; } @@ -132,39 +130,40 @@ sub init { # ------------------ sub send { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $vars = shift || return error('No data defined!'); return lg('This function is deactivated!') - if($obj->{active} ne 'y'); + if($self->{active} ne 'y'); return lg('Title is not set!') unless($vars->{Title}); + return undef unless($vars->{level} >= $self->{level} ); my $cmd = sprintf('MESG %s', $vars->{Title}); - my $svdrp = $obj->{SVDRP} || return error ('No SVDRP!' ); + my $svdrp = $self->{SVDRP} || return error ('No SVDRP!' ); return $svdrp->command($cmd); } # ------------------ -sub read { +sub push { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $vars = shift || return error('No data defined!'); - return $obj->send($vars); + return $self->send($vars); } # ------------------ sub req { # ------------------ - my $obj = shift || return error('No object defined!'); + my $self = shift || return error('No object defined!'); my $test = shift || 0; return gettext('The module NEWS::VDR is not active!') - if($obj->{active} ne 'y'); + if($self->{active} ne 'y'); my $vars = { AddDate => time, @@ -172,10 +171,10 @@ sub req { Text => 'This is only a test from xxv news vdr modul!', Cmd => 'request', Id => 'vdr', - Level => 'harmless', + Level => 100, }; - if( $obj->read($vars) ) { + if( $self->send($vars) ) { return gettext("Message was been sent to your VDR!"); } else { return gettext("Message chould'nt been sent to your VDR!"); diff --git a/locale/de.po b/locale/de.po index f7ed785..33f3c44 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-06-14 08:07+0200\n" +"PO-Revision-Date: 2008-08-09 09:49+0200\n" "Last-Translator: Andreas Brachold <anbr at users.berlios.de>\n" "Language-Team: LANGUAGE <LL@li.org>\n" "MIME-Version: 1.0\n" @@ -19,17 +19,17 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" #-------------------- -#: ../bin/xxvd:499 +#: ../bin/xxvd:498 msgid "Documentation has been generated in '%s'." msgstr "Dokumentation wurde in '%s' generiert" #-------------------- -#: ../bin/xxvd:525 +#: ../bin/xxvd:524 msgid "The xxv system will restart now. Please try to re-login in %d seconds." msgstr "Das xxv-System startet jetzt neu. Versuchen Sie bitte ein erneute Anmeldung in den %d Sekunden" #-------------------- -#: ../bin/xxvd:535 +#: ../bin/xxvd:534 msgid "Couldn't restart the xxv system! Script for initialization couldn't be executed." msgstr "Neustart des xxv-System nicht möglich! Skript für Initialisierung ist nicht ausführbar." @@ -59,7 +59,7 @@ msgid "Data source for the connection to the database" msgstr "Name der Datenquelle für die Verbindung zur Datenbank" #-------------------- -#: ../bin/xxvd:718 ../bin/xxvd:724 ../bin/xxvd:730 ../bin/xxvd:745 ../lib/XXV/MODULES/AUTOTIMER.pm:30 ../lib/XXV/MODULES/AUTOTIMER.pm:713 ../lib/XXV/MODULES/CHANNELS.pm:1105 ../lib/XXV/MODULES/CHANNELS.pm:1131 ../lib/XXV/MODULES/CHANNELS.pm:1144 ../lib/XXV/MODULES/CHANNELS.pm:1183 ../lib/XXV/MODULES/CHANNELS.pm:1209 ../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:418 ../lib/XXV/MODULES/MOVETIMER.pm:421 ../lib/XXV/MODULES/MOVETIMER.pm:441 ../lib/XXV/MODULES/MOVETIMER.pm:444 ../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:2060 ../lib/XXV/MODULES/RECORDS.pm:2074 ../lib/XXV/MODULES/RECORDS.pm:2088 ../lib/XXV/MODULES/RECORDS.pm:2107 ../lib/XXV/MODULES/RECORDS.pm:2647 ../lib/XXV/MODULES/RECORDS.pm:2659 ../lib/XXV/MODULES/RECORDS.pm:39 ../lib/XXV/MODULES/RECORDS.pm:45 ../lib/XXV/MODULES/RECORDS.pm:51 ../lib/XXV/MODULES/RECORDS.pm:57 ../lib/XXV/MODULES/RECORDS.pm:63 ../lib/XXV/MODULES/RECORDS.pm:75 ../lib/XXV/MODULES/RECORDS.pm:91 ../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:45 ../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:217 ../lib/XXV/MODULES/SVDRP.pm:223 ../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:695 ../lib/XXV/MODULES/TIMERS.pm:708 ../lib/XXV/MODULES/TIMERS.pm:711 ../lib/XXV/MODULES/TIMERS.pm:736 ../lib/XXV/MODULES/USER.pm:275 ../lib/XXV/MODULES/USER.pm:367 ../lib/XXV/MODULES/USER.pm:373 ../lib/XXV/MODULES/USER.pm:398 ../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:507 ../lib/XXV/MODULES/XMLTV.pm:520 ../lib/XXV/MODULES/XMLTV.pm:533 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:116 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:122 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:128 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:68 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:98 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:106 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:33 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:63 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:81 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:95 ../lib/XXV/OUTPUT/NEWS/RSS.pm:32 ../lib/XXV/OUTPUT/NEWS/RSS.pm:62 ../lib/XXV/OUTPUT/NEWS/VDR.pm:29 ../lib/XXV/OUTPUT/NEWS/VDR.pm:59 +#: ../bin/xxvd:718 ../bin/xxvd:724 ../bin/xxvd:730 ../bin/xxvd:745 ../lib/XXV/MODULES/AUTOTIMER.pm:30 ../lib/XXV/MODULES/AUTOTIMER.pm:699 ../lib/XXV/MODULES/CHANNELS.pm:1105 ../lib/XXV/MODULES/CHANNELS.pm:1131 ../lib/XXV/MODULES/CHANNELS.pm:1144 ../lib/XXV/MODULES/CHANNELS.pm:1183 ../lib/XXV/MODULES/CHANNELS.pm:1209 ../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:418 ../lib/XXV/MODULES/MOVETIMER.pm:421 ../lib/XXV/MODULES/MOVETIMER.pm:441 ../lib/XXV/MODULES/MOVETIMER.pm:444 ../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:2061 ../lib/XXV/MODULES/RECORDS.pm:2075 ../lib/XXV/MODULES/RECORDS.pm:2089 ../lib/XXV/MODULES/RECORDS.pm:2108 ../lib/XXV/MODULES/RECORDS.pm:2648 ../lib/XXV/MODULES/RECORDS.pm:2660 ../lib/XXV/MODULES/RECORDS.pm:39 ../lib/XXV/MODULES/RECORDS.pm:45 ../lib/XXV/MODULES/RECORDS.pm:51 ../lib/XXV/MODULES/RECORDS.pm:57 ../lib/XXV/MODULES/RECORDS.pm:63 ../lib/XXV/MODULES/RECORDS.pm:75 ../lib/XXV/MODULES/RECORDS.pm:91 ../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:217 ../lib/XXV/MODULES/SVDRP.pm:223 ../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:585 ../lib/XXV/MODULES/TIMERS.pm:598 ../lib/XXV/MODULES/TIMERS.pm:601 ../lib/XXV/MODULES/TIMERS.pm:626 ../lib/XXV/MODULES/USER.pm:275 ../lib/XXV/MODULES/USER.pm:367 ../lib/XXV/MODULES/USER.pm:373 ../lib/XXV/MODULES/USER.pm:398 ../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:507 ../lib/XXV/MODULES/XMLTV.pm:520 ../lib/XXV/MODULES/XMLTV.pm:533 ../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!" @@ -69,7 +69,7 @@ msgid "Password for database access" msgstr "Passwort für Datenbankzugriff" #-------------------- -#: ../bin/xxvd:735 ../lib/XXV/MODULES/USER.pm:283 ../lib/XXV/MODULES/USER.pm:381 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:136 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:124 +#: ../bin/xxvd:735 ../lib/XXV/MODULES/USER.pm:283 ../lib/XXV/MODULES/USER.pm:381 ../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!" @@ -99,7 +99,7 @@ msgid "Wished automated recordings" msgstr "Gewünschte automatische Aufnahmen" #-------------------- -#: ../html/alist.tmpl:45 ../html/tlist.tmpl:94 ../lib/XXV/MODULES/AUTOTIMER.pm:1024 +#: ../html/alist.tmpl:45 ../html/tlist.tmpl:94 ../lib/XXV/MODULES/AUTOTIMER.pm:1010 msgid "Edit autotimer" msgstr "Autotimer bearbeiten" @@ -114,7 +114,7 @@ msgid "Delete autotimer" msgstr "Lösche Autotimer" #-------------------- -#: ../html/alist.tmpl:5 ../lib/XXV/MODULES/AUTOTIMER.pm:1025 ../lib/XXV/MODULES/AUTOTIMER.pm:54 +#: ../html/alist.tmpl:5 ../lib/XXV/MODULES/AUTOTIMER.pm:1011 ../lib/XXV/MODULES/AUTOTIMER.pm:54 msgid "Create new autotimer" msgstr "Neuer Autotimer" @@ -265,7 +265,7 @@ msgid "Delete channel" msgstr "Kanal löschen" #-------------------- -#: ../html/clist.tmpl:94 ../html/help.tmpl:113 ../lib/XXV/MODULES/AUTOTIMER.pm:1173 ../lib/XXV/MODULES/CHANNELS.pm:486 +#: ../html/clist.tmpl:94 ../html/help.tmpl:113 ../lib/XXV/MODULES/AUTOTIMER.pm:1161 ../lib/XXV/MODULES/CHANNELS.pm:486 #. (12) msgid "Channels" msgstr "Kanäle" @@ -281,17 +281,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:922 +#: ../html/display.tmpl:21 ../html/display.tmpl:44 ../lib/XXV/MODULES/EPG.pm:1198 ../lib/XXV/MODULES/EPG.pm:931 msgid "Percent" msgstr "Prozent" #-------------------- -#: ../html/display.tmpl:25 ../html/rdisplay.tmpl:158 ../html/search.tmpl:54 ../lib/XXV/MODULES/AUTOTIMER.pm:179 ../lib/XXV/MODULES/AUTOTIMER.pm:456 ../lib/XXV/MODULES/CHRONICLE.pm:176 ../lib/XXV/MODULES/CHRONICLE.pm:257 ../lib/XXV/MODULES/EPG.pm:1063 ../lib/XXV/MODULES/EPG.pm:1186 ../lib/XXV/MODULES/EPG.pm:688 ../lib/XXV/MODULES/EPG.pm:918 ../lib/XXV/MODULES/RECORDS.pm:2098 ../lib/XXV/MODULES/SHARE.pm:345 ../lib/XXV/MODULES/TIMERS.pm:1334 ../lib/XXV/MODULES/TIMERS.pm:948 ../lib/XXV/MODULES/XMLTV.pm:678 +#: ../html/display.tmpl:25 ../html/rdisplay.tmpl:158 ../html/search.tmpl:54 ../lib/XXV/MODULES/AUTOTIMER.pm:165 ../lib/XXV/MODULES/AUTOTIMER.pm:442 ../lib/XXV/MODULES/CHRONICLE.pm:176 ../lib/XXV/MODULES/CHRONICLE.pm:257 ../lib/XXV/MODULES/EPG.pm:1072 ../lib/XXV/MODULES/EPG.pm:1195 ../lib/XXV/MODULES/EPG.pm:690 ../lib/XXV/MODULES/EPG.pm:927 ../lib/XXV/MODULES/RECORDS.pm:2099 ../lib/XXV/MODULES/SHARE.pm:354 ../lib/XXV/MODULES/TIMERS.pm:1221 ../lib/XXV/MODULES/TIMERS.pm:838 ../lib/XXV/MODULES/XMLTV.pm:678 msgid "Channel" msgstr "Kanal" #-------------------- -#: ../html/display.tmpl:27 ../html/movetimerlist.tmpl:81 ../lib/XXV/MODULES/AUTOTIMER.pm:1170 ../lib/XXV/MODULES/CHANNELS.pm:603 ../lib/XXV/MODULES/CHRONICLE.pm:174 ../lib/XXV/MODULES/CHRONICLE.pm:255 ../lib/XXV/MODULES/EPG.pm:1061 ../lib/XXV/MODULES/EPG.pm:1184 ../lib/XXV/MODULES/EPG.pm:686 ../lib/XXV/MODULES/EPG.pm:806 ../lib/XXV/MODULES/EPG.pm:915 ../lib/XXV/MODULES/MOVETIMER.pm:577 ../lib/XXV/MODULES/MUSIC.pm:614 ../lib/XXV/MODULES/SHARE.pm:343 ../lib/XXV/MODULES/SVDRP.pm:318 ../lib/XXV/MODULES/TIMERS.pm:1331 ../lib/XXV/MODULES/USER.pm:532 ../lib/XXV/MODULES/XMLTV.pm:676 +#: ../html/display.tmpl:27 ../html/movetimerlist.tmpl:81 ../lib/XXV/MODULES/AUTOTIMER.pm:1158 ../lib/XXV/MODULES/CHANNELS.pm:603 ../lib/XXV/MODULES/CHRONICLE.pm:174 ../lib/XXV/MODULES/CHRONICLE.pm:255 ../lib/XXV/MODULES/EPG.pm:1070 ../lib/XXV/MODULES/EPG.pm:1193 ../lib/XXV/MODULES/EPG.pm:688 ../lib/XXV/MODULES/EPG.pm:815 ../lib/XXV/MODULES/EPG.pm:924 ../lib/XXV/MODULES/MOVETIMER.pm:577 ../lib/XXV/MODULES/MUSIC.pm:614 ../lib/XXV/MODULES/SHARE.pm:352 ../lib/XXV/MODULES/SVDRP.pm:318 ../lib/XXV/MODULES/TIMERS.pm:1218 ../lib/XXV/MODULES/USER.pm:532 ../lib/XXV/MODULES/XMLTV.pm:676 msgid "Service" msgstr "Service" @@ -321,12 +321,12 @@ msgid "Search with OFDb" msgstr "Suche mit OFDb" #-------------------- -#: ../html/display.tmpl:60 ../lib/XXV/MODULES/AUTOTIMER.pm:465 ../lib/XXV/MODULES/AUTOTIMER.pm:675 ../lib/XXV/MODULES/EPG.pm:921 ../lib/XXV/MODULES/RECORDS.pm:2113 ../lib/XXV/MODULES/RECORDS.pm:2314 ../lib/XXV/MODULES/TIMERS.pm:840 ../lib/XXV/OUTPUT/Console.pm:171 +#: ../html/display.tmpl:60 ../lib/XXV/MODULES/AUTOTIMER.pm:451 ../lib/XXV/MODULES/AUTOTIMER.pm:661 ../lib/XXV/MODULES/EPG.pm:930 ../lib/XXV/MODULES/RECORDS.pm:2114 ../lib/XXV/MODULES/RECORDS.pm:2315 ../lib/XXV/MODULES/TIMERS.pm:730 ../lib/XXV/OUTPUT/Console.pm:171 msgid "Description" msgstr "Beschreibung" #-------------------- -#: ../html/display.tmpl:69 ../lib/XXV/MODULES/AUTOTIMER.pm:180 ../lib/XXV/MODULES/AUTOTIMER.pm:459 ../lib/XXV/MODULES/AUTOTIMER.pm:462 ../lib/XXV/MODULES/CHRONICLE.pm:178 ../lib/XXV/MODULES/CHRONICLE.pm:259 ../lib/XXV/MODULES/EPG.pm:1064 ../lib/XXV/MODULES/EPG.pm:1187 ../lib/XXV/MODULES/EPG.pm:689 ../lib/XXV/MODULES/EPG.pm:808 ../lib/XXV/MODULES/EPG.pm:919 ../lib/XXV/MODULES/SHARE.pm:346 ../lib/XXV/MODULES/TIMERS.pm:1335 ../lib/XXV/MODULES/TIMERS.pm:949 +#: ../html/display.tmpl:69 ../lib/XXV/MODULES/AUTOTIMER.pm:166 ../lib/XXV/MODULES/AUTOTIMER.pm:445 ../lib/XXV/MODULES/AUTOTIMER.pm:448 ../lib/XXV/MODULES/CHRONICLE.pm:178 ../lib/XXV/MODULES/CHRONICLE.pm:259 ../lib/XXV/MODULES/EPG.pm:1073 ../lib/XXV/MODULES/EPG.pm:1196 ../lib/XXV/MODULES/EPG.pm:691 ../lib/XXV/MODULES/EPG.pm:817 ../lib/XXV/MODULES/EPG.pm:928 ../lib/XXV/MODULES/SHARE.pm:355 ../lib/XXV/MODULES/TIMERS.pm:1222 ../lib/XXV/MODULES/TIMERS.pm:839 msgid "Start" msgstr "Start" @@ -336,7 +336,7 @@ msgid "PDC" msgstr "VPS" #-------------------- -#: ../html/display.tmpl:75 ../html/widgets/player.tmpl:100 ../html/widgets/player.tmpl:60 ../lib/XXV/MODULES/AUTOTIMER.pm:181 ../lib/XXV/MODULES/AUTOTIMER.pm:460 ../lib/XXV/MODULES/AUTOTIMER.pm:463 ../lib/XXV/MODULES/CHRONICLE.pm:179 ../lib/XXV/MODULES/CHRONICLE.pm:260 ../lib/XXV/MODULES/EPG.pm:1065 ../lib/XXV/MODULES/EPG.pm:1188 ../lib/XXV/MODULES/EPG.pm:690 ../lib/XXV/MODULES/EPG.pm:809 ../lib/XXV/MODULES/EPG.pm:920 ../lib/XXV/MODULES/SHARE.pm:347 ../lib/XXV/MODULES/TIMERS.pm:1336 +#: ../html/display.tmpl:75 ../html/widgets/player.tmpl:100 ../html/widgets/player.tmpl:60 ../lib/XXV/MODULES/AUTOTIMER.pm:167 ../lib/XXV/MODULES/AUTOTIMER.pm:446 ../lib/XXV/MODULES/AUTOTIMER.pm:449 ../lib/XXV/MODULES/CHRONICLE.pm:179 ../lib/XXV/MODULES/CHRONICLE.pm:260 ../lib/XXV/MODULES/EPG.pm:1074 ../lib/XXV/MODULES/EPG.pm:1197 ../lib/XXV/MODULES/EPG.pm:692 ../lib/XXV/MODULES/EPG.pm:818 ../lib/XXV/MODULES/EPG.pm:929 ../lib/XXV/MODULES/SHARE.pm:356 ../lib/XXV/MODULES/TIMERS.pm:1223 msgid "Stop" msgstr "Stopp" @@ -411,7 +411,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:650 ../lib/XXV/MODULES/WAPD.pm:75 ../wml/widgets/footer.tmpl:6 msgid "Running now" msgstr "Jetzt läuft" @@ -422,7 +422,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:651 ../lib/XXV/MODULES/WAPD.pm:76 ../wml/widgets/footer.tmpl:12 msgid "Program guide" msgstr "Programm" @@ -438,13 +438,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:653 ../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:652 ../lib/XXV/MODULES/WAPD.pm:77 ../wml/widgets/footer.tmpl:17 #. (12) msgid "Autotimer" msgstr "Autotimer" @@ -462,13 +462,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:654 ../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:1250 ../lib/XXV/MODULES/WAPD.pm:80 +#: ../html/help.tmpl:73 ../lib/XXV/MODULES/HTTPD.pm:655 ../lib/XXV/MODULES/MEDIALIB.pm:1250 ../lib/XXV/MODULES/WAPD.pm:80 #. (12) msgid "Music" msgstr "Musik" @@ -486,13 +486,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:656 ../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:657 ../lib/XXV/MODULES/WAPD.pm:82 #. (12) msgid "Teletext" msgstr "Videotext" @@ -510,7 +510,7 @@ 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:1332 ../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:658 ../lib/XXV/MODULES/TIMERS.pm:1219 ../lib/XXV/MODULES/WAPD.pm:83 msgid "Status" msgstr "Status" @@ -685,7 +685,7 @@ msgid "Save" msgstr "Speichern" #-------------------- -#: ../html/mlcopy.tmpl:23 ../html/mledit.tmpl:23 ../html/mlimport.tmpl:23 ../lib/XXV/MODULES/AUTOTIMER.pm:177 ../lib/XXV/MODULES/AUTOTIMER.pm:453 ../lib/XXV/MODULES/AUTOTIMER.pm:673 ../lib/XXV/MODULES/CHRONICLE.pm:175 ../lib/XXV/MODULES/CHRONICLE.pm:256 ../lib/XXV/MODULES/EPG.pm:1062 ../lib/XXV/MODULES/EPG.pm:1185 ../lib/XXV/MODULES/EPG.pm:687 ../lib/XXV/MODULES/EPG.pm:807 ../lib/XXV/MODULES/EPG.pm:916 ../lib/XXV/MODULES/MEDIALIB.pm:1294 ../lib/XXV/MODULES/MUSIC.pm:617 ../lib/XXV/MODULES/RECORDS.pm:1632 ../lib/XXV/MODULES/RECORDS.pm:1769 ../lib/XXV/MODULES/SHARE.pm:344 ../lib/XXV/MODULES/TIMERS.pm:1337 ../lib/XXV/MODULES/TIMERS.pm:947 +#: ../html/mlcopy.tmpl:23 ../html/mledit.tmpl:23 ../html/mlimport.tmpl:23 ../lib/XXV/MODULES/AUTOTIMER.pm:163 ../lib/XXV/MODULES/AUTOTIMER.pm:439 ../lib/XXV/MODULES/AUTOTIMER.pm:659 ../lib/XXV/MODULES/CHRONICLE.pm:175 ../lib/XXV/MODULES/CHRONICLE.pm:256 ../lib/XXV/MODULES/EPG.pm:1071 ../lib/XXV/MODULES/EPG.pm:1194 ../lib/XXV/MODULES/EPG.pm:689 ../lib/XXV/MODULES/EPG.pm:816 ../lib/XXV/MODULES/EPG.pm:925 ../lib/XXV/MODULES/EVENTS.pm:350 ../lib/XXV/MODULES/MEDIALIB.pm:1294 ../lib/XXV/MODULES/MUSIC.pm:617 ../lib/XXV/MODULES/RECORDS.pm:1633 ../lib/XXV/MODULES/RECORDS.pm:1770 ../lib/XXV/MODULES/SHARE.pm:353 ../lib/XXV/MODULES/TIMERS.pm:1224 ../lib/XXV/MODULES/TIMERS.pm:837 msgid "Title" msgstr "Titel" @@ -695,7 +695,7 @@ msgid "Search at" msgstr "Suche bei" #-------------------- -#: ../html/mlcopy.tmpl:36 ../html/mledit.tmpl:36 ../html/mlimport.tmpl:36 ../lib/XXV/MODULES/AUTOTIMER.pm:454 ../lib/XXV/MODULES/AUTOTIMER.pm:674 ../lib/XXV/MODULES/EPG.pm:917 ../lib/XXV/MODULES/MEDIALIB.pm:1295 ../lib/XXV/MODULES/RECORDS.pm:1633 ../lib/XXV/MODULES/RECORDS.pm:1770 +#: ../html/mlcopy.tmpl:36 ../html/mledit.tmpl:36 ../html/mlimport.tmpl:36 ../lib/XXV/MODULES/AUTOTIMER.pm:440 ../lib/XXV/MODULES/AUTOTIMER.pm:660 ../lib/XXV/MODULES/EPG.pm:926 ../lib/XXV/MODULES/MEDIALIB.pm:1295 ../lib/XXV/MODULES/RECORDS.pm:1634 ../lib/XXV/MODULES/RECORDS.pm:1771 msgid "Subtitle" msgstr "Serientitel" @@ -780,7 +780,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:1172 ../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:1160 ../wml/next.tmpl:15 ../wml/now.tmpl:15 ../wml/program.tmpl:43 ../wml/search.tmpl:17 msgid "Search" msgstr "Suche" @@ -846,7 +846,7 @@ msgid "Delete" msgstr "Löschen" #-------------------- -#: ../html/mlnavcontainer.tmpl:25 ../html/rlist.tmpl:137 ../html/rlist.tmpl:141 ../html/rlist.tmpl:142 ../html/widgets/remote.tmpl:110 +#: ../html/mlnavcontainer.tmpl:25 ../html/rlist.tmpl:137 ../html/rlist.tmpl:141 ../html/rlist.tmpl:142 ../html/widgets/remote.tmpl:118 msgid "Back" msgstr "Zurück" @@ -1044,7 +1044,7 @@ msgid "New recording" msgstr "Neue Aufnahme" #-------------------- -#: ../html/rdisplay.tmpl:167 ../lib/XXV/MODULES/RECORDS.pm:2122 +#: ../html/rdisplay.tmpl:167 ../lib/XXV/MODULES/RECORDS.pm:2123 msgid "Keywords" msgstr "Stichwörter" @@ -1054,12 +1054,12 @@ msgid "Lifetime" msgstr "Lebenszeit" #-------------------- -#: ../html/rdisplay.tmpl:190 ../lib/XXV/MODULES/AUTOTIMER.pm:182 ../lib/XXV/MODULES/TIMERS.pm:1338 +#: ../html/rdisplay.tmpl:190 ../lib/XXV/MODULES/AUTOTIMER.pm:168 ../lib/XXV/MODULES/TIMERS.pm:1225 msgid "Priority" msgstr "Priorität" #-------------------- -#: ../html/rdisplay.tmpl:65 ../html/rlist.tmpl:102 ../lib/XXV/MODULES/RECORDS.pm:1634 ../lib/XXV/MODULES/RECORDS.pm:1771 +#: ../html/rdisplay.tmpl:65 ../html/rlist.tmpl:102 ../lib/XXV/MODULES/RECORDS.pm:1635 ../lib/XXV/MODULES/RECORDS.pm:1772 msgid "Duration" msgstr "Dauer" @@ -1069,7 +1069,7 @@ msgid "Recording list" msgstr "Aufnahmeliste" #-------------------- -#: ../html/rdisplay.tmpl:78 ../lib/XXV/MODULES/RECORDS.pm:1923 +#: ../html/rdisplay.tmpl:78 ../lib/XXV/MODULES/RECORDS.pm:1924 msgid "Would you like to delete this recording?" msgstr "Wollen Sie diese Aufnahme löschen?" @@ -1084,7 +1084,7 @@ msgid "Cut recording" msgstr "Aufnahme schneiden" #-------------------- -#: ../html/rdisplay.tmpl:86 ../lib/XXV/MODULES/RECORDS.pm:2142 +#: ../html/rdisplay.tmpl:86 ../lib/XXV/MODULES/RECORDS.pm:2143 msgid "Edit recording" msgstr "Aufnahme bearbeiten" @@ -1306,7 +1306,7 @@ msgid "Planned recordings" msgstr "Geplante Aufnahmen" #-------------------- -#: ../html/tlist.tmpl:83 ../lib/XXV/MODULES/TIMERS.pm:954 +#: ../html/tlist.tmpl:83 ../lib/XXV/MODULES/TIMERS.pm:844 msgid "Would you like to delete this timer?" msgstr "Wollen Sie diesen Timer löschen?" @@ -1496,31 +1496,31 @@ msgid "Volume" msgstr "Lautstärke" #-------------------- -#: ../html/widgets/remote.tmpl:109 ../wml/next.tmpl:32 ../wml/next.tmpl:46 ../wml/now.tmpl:32 ../wml/now.tmpl:46 ../wml/program.tmpl:25 ../wml/program.tmpl:63 ../wml/program.tmpl:77 ../wml/search.tmpl:34 ../wml/search.tmpl:48 ../wml/tlist.tmpl:13 ../wml/tlist.tmpl:62 ../wml/tlist.tmpl:76 ../wml/widgets/err.tmpl:18 ../wml/widgets/footer.tmpl:2 ../wml/widgets/formEnd.tmpl:5 ../wml/widgets/message.tmpl:18 +#: ../html/widgets/remote.tmpl:107 +msgid "Ok" +msgstr "Ok" + +#-------------------- +#: ../html/widgets/remote.tmpl:117 ../wml/next.tmpl:32 ../wml/next.tmpl:46 ../wml/now.tmpl:32 ../wml/now.tmpl:46 ../wml/program.tmpl:25 ../wml/program.tmpl:63 ../wml/program.tmpl:77 ../wml/search.tmpl:34 ../wml/search.tmpl:48 ../wml/tlist.tmpl:13 ../wml/tlist.tmpl:62 ../wml/tlist.tmpl:76 ../wml/widgets/err.tmpl:18 ../wml/widgets/footer.tmpl:2 ../wml/widgets/formEnd.tmpl:5 ../wml/widgets/message.tmpl:18 msgid "Menu" msgstr "Menü" #-------------------- -#: ../html/widgets/remote.tmpl:122 +#: ../html/widgets/remote.tmpl:165 msgid "Set" msgstr "Setzen" #-------------------- -#: ../html/widgets/remote.tmpl:60 +#: ../html/widgets/remote.tmpl:68 msgid "Monitor" msgstr "Monitor" #-------------------- -#: ../html/widgets/remote.tmpl:61 +#: ../html/widgets/remote.tmpl:69 msgid "Switch off" msgstr "Abschalten" #-------------------- -#: ../html/widgets/remote.tmpl:99 -msgid "Ok" -msgstr "Ok" - -#-------------------- #: ../html/widgets/vtx.tmpl:22 ../html/widgets/vtx.tmpl:4 ../html/widgets/vtx.tmpl:8 msgid "Page" msgstr "Seite" @@ -1551,127 +1551,87 @@ msgid "Next page" msgstr "Nächste Seite" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:1000 -msgid "Stop date as YYYY-MM-DD HH:MM:SS." -msgstr "Enddatum als DD.MM.YYYY HH:MM:SS." - -#-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:1006 ../lib/XXV/MODULES/AUTOTIMER.pm:974 ../lib/XXV/MODULES/TIMERS.pm:741 -msgid "Language=English" -msgstr "Language=German,DateFormat=non-US" - -#-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:1013 ../lib/XXV/MODULES/AUTOTIMER.pm:981 ../lib/XXV/MODULES/TIMERS.pm:755 -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:1019 ../lib/XXV/MODULES/TIMERS.pm:832 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:1005 ../lib/XXV/MODULES/TIMERS.pm:722 msgid "Add keywords to recording" msgstr "Stichwörter zur Aufnahme hinzufügen" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:1035 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:1021 msgid "Autotimer saved!" msgstr "Autotimer gespeichert!" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:1055 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:1041 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:1064 ../lib/XXV/MODULES/AUTOTIMER.pm:1094 ../lib/XXV/MODULES/AUTOTIMER.pm:1103 ../lib/XXV/MODULES/AUTOTIMER.pm:641 -msgid "The autotimer '%s' does not exist in the database." -msgstr "Der Autotimer '%s' existiert nicht in der Datenbank!" +#: ../lib/XXV/MODULES/AUTOTIMER.pm:1050 ../lib/XXV/MODULES/AUTOTIMER.pm:1080 ../lib/XXV/MODULES/AUTOTIMER.pm:1089 ../lib/XXV/MODULES/AUTOTIMER.pm:627 +msgid "Autotimer '%s' does not exist in the database!" +msgstr "Autotimer '%s' existiert nicht in der Datenbank!" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:1068 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:1054 msgid "Autotimer %s deleted." msgstr "Autotimer %s wurde gelöscht." #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:108 -msgid "Create event entries if an autotimer has created a new timer." -msgstr "Erzeuge Eventeinträge, wenn eine neuer Timer durch einen Autotimer erzeugt wurde." - -#-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:1086 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:1072 msgid "No autotimer defined to toggle! Please use atoggle 'aid'!" -msgstr "Kein ID eines Autotimer zum Umschalten definiert! Bitte verwende atoggle 'aid'" +msgstr "Kein Autotimer zum Umschalten definiert! Bitte verwende atoggle 'aid'" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:1113 -msgid "Couldn't toggle autotimer with ID '%s'!" -msgstr "Konnte Autotimer mit ID '%s' nicht umschalten!" +#: ../lib/XXV/MODULES/AUTOTIMER.pm:1099 +msgid "Couldn't update database to toggle autotimer(%d) !" +msgstr "Konnte Datenbank nicht aktualisieren, um Autotimer(%d) umzuschalten!" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:1124 -msgid "disabled" -msgstr "Deaktiviert" +#: ../lib/XXV/MODULES/AUTOTIMER.pm:1111 +msgid "Autotimer %s is disabled." +msgstr "Autotimer %s ist deaktiviert." #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:1125 -msgid "activated" -msgstr "Aktiviert" - -#-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:1126 -msgid "Autotimer %s is %s." -msgstr "Autotimer %s ist %s." +#: ../lib/XXV/MODULES/AUTOTIMER.pm:1113 +msgid "Autotimer %s is activated." +msgstr "Autotimer %s ist aktiviert." #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:1171 ../lib/XXV/MODULES/SVDRP.pm:319 ../lib/XXV/MODULES/XMLTV.pm:677 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:1159 ../lib/XXV/MODULES/SVDRP.pm:319 ../lib/XXV/MODULES/XMLTV.pm:677 msgid "Active" msgstr "Aktiv" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:1174 ../lib/XXV/MODULES/RECORDS.pm:1635 ../lib/XXV/MODULES/RECORDS.pm:1772 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:1162 ../lib/XXV/MODULES/RECORDS.pm:1636 ../lib/XXV/MODULES/RECORDS.pm:1773 msgid "Start time" msgstr "Startzeit" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:1175 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:1163 msgid "Stop time" msgstr "Stoppzeit" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:1176 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:1164 msgid "Directory" msgstr "Verzeichnis" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:1177 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:1165 msgid "Minimum length" msgstr "Minimale Länge" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:1254 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:1242 msgid "Unknown channel : %s" msgstr "Unbekannter Kanal : %s" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:135 -msgid "Autotimer('%s') found: %s" -msgstr "Autotimer('%s') hat gefunden: %s" - -#-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:141 ../lib/XXV/MODULES/TIMERS.pm:149 ../lib/XXV/MODULES/TIMERS.pm:204 ../lib/XXV/MODULES/TIMERS.pm:258 -msgid "Channel: %s" -msgstr "Kanal: %s" - -#-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:147 ../lib/XXV/MODULES/TIMERS.pm:156 ../lib/XXV/MODULES/TIMERS.pm:211 ../lib/XXV/MODULES/TIMERS.pm:266 -msgid "On: %s to %s" -msgstr "Um: %s bis %s" - -#-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:151 ../lib/XXV/MODULES/RECORDS.pm:215 ../lib/XXV/MODULES/TIMERS.pm:160 ../lib/XXV/MODULES/TIMERS.pm:215 ../lib/XXV/MODULES/TIMERS.pm:270 -msgid "Description: %s" -msgstr "Beschreibung: %s" +#: ../lib/XXV/MODULES/AUTOTIMER.pm:138 +msgid "Autotimer '%s' found: %s" +msgstr "Autotimer '%s' hat gefunden: %s" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:178 ../lib/XXV/MODULES/CHRONICLE.pm:177 ../lib/XXV/MODULES/CHRONICLE.pm:258 ../lib/XXV/MODULES/EPG.pm:691 ../lib/XXV/MODULES/EPG.pm:810 ../lib/XXV/MODULES/SHARE.pm:348 ../lib/XXV/MODULES/TIMERS.pm:1333 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:164 ../lib/XXV/MODULES/CHRONICLE.pm:177 ../lib/XXV/MODULES/CHRONICLE.pm:258 ../lib/XXV/MODULES/EPG.pm:693 ../lib/XXV/MODULES/EPG.pm:819 ../lib/XXV/MODULES/SHARE.pm:357 ../lib/XXV/MODULES/TIMERS.pm:1220 msgid "Day" msgstr "Datum" @@ -1681,12 +1641,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:223 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:209 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:65 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:30 ../lib/XXV/OUTPUT/NEWS/RSS.pm:29 ../lib/XXV/OUTPUT/NEWS/VDR.pm:26 +#: ../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 msgid "Activate this service" msgstr "Aktiviere diesen Dienst" @@ -1696,27 +1656,27 @@ msgid "Exclude channels from autotimer" msgstr "Schliesse Kanäle von Autotimer aus." #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:354 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:340 msgid "Searching for autotimer ..." msgstr "Schaue nach Autotimer ..." #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:364 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:350 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:368 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:354 msgid "Back to autotimer listing." msgstr "Zurück zur Autotimer Liste" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:437 ../lib/XXV/MODULES/AUTOTIMER.pm:442 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:423 ../lib/XXV/MODULES/AUTOTIMER.pm:428 msgid "Search for autotimer '%s'" msgstr "Schaue nach Autotimer '%s'" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:450 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:436 msgid "Found %d entries for '%s' in EPG database." msgstr "%d Einträge für '%s' in EPG Datenbank gefunden." @@ -1726,32 +1686,32 @@ msgid "Display status of autotimers." msgstr "Status der Autotimer anzeigen." #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:557 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:543 msgid "Could not save timer for '%s' : %s" msgstr "Konnte Timer für '%s' nicht speichern : %s" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:562 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:548 msgid "Modified timer for '%s'." msgstr "Timer für '%s' modifiziert." #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:566 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:552 msgid "Timer for '%s' has been created." msgstr "Timer für '%s' erzeugt." #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:574 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:560 msgid "Created %d timer for '%s'." msgstr "%d Timer für '%s' erzeugt. " #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:583 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:569 msgid "Modified %d timer for '%s'." msgstr "%d Timer für '%s' modifiziert." #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:598 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:584 msgid "Read new timers into database." msgstr "Lese neue Timer in Datenbank." @@ -1761,67 +1721,67 @@ msgid "Delete a autotimer 'aid'" msgstr "Löschen eines Autotimer 'aid'" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:663 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:649 msgid "Mon" msgstr "Mo" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:664 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:650 msgid "Tue" msgstr "Di" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:665 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:651 msgid "Wed" msgstr "Mi" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:666 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:652 msgid "Thu" msgstr "Do" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:667 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:653 msgid "Fri" msgstr "Fr" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:668 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:654 msgid "Sat" msgstr "Sa" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:669 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:655 msgid "Sun" msgstr "So" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:679 ../wml/tlist.tmpl:26 ../wml/tlist.tmpl:67 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:665 ../wml/tlist.tmpl:26 ../wml/tlist.tmpl:67 msgid "Timer" msgstr "Timer" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:68 -msgid "Edit an autotimer 'aid'" -msgstr "Editieren eines Autotimer 'aid'" - -#-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:680 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:666 msgid "Existing recording" msgstr "Vorhandene Aufnahme" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:681 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:667 msgid "Recording chronicle" msgstr "Aufnahmechronik" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:698 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:68 +msgid "Edit an autotimer 'aid'" +msgstr "Editieren eines Autotimer 'aid'" + +#-------------------- +#: ../lib/XXV/MODULES/AUTOTIMER.pm:684 msgid "Activate this autotimer" msgstr "Aktiviere diesen Autotimer" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:702 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:688 msgid "" "Search terms to search for EPG entries.\n" "You can also fine tune your search :\n" @@ -1836,147 +1796,162 @@ msgstr "" "* durch ein Minuszeichen zum Ausschliessen von Suchbegriffen z.B. 'Heute,-Morgen'" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:710 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:696 msgid "Search in this EPG fields" msgstr "Suche in diesen EPG-Feldern" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:731 ../lib/XXV/MODULES/AUTOTIMER.pm:781 ../lib/XXV/MODULES/AUTOTIMER.pm:858 ../lib/XXV/MODULES/USER.pm:405 ../lib/XXV/MODULES/USER.pm:412 ../lib/XXV/MODULES/USER.pm:428 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:717 ../lib/XXV/MODULES/AUTOTIMER.pm:767 ../lib/XXV/MODULES/AUTOTIMER.pm:844 ../lib/XXV/MODULES/USER.pm:405 ../lib/XXV/MODULES/USER.pm:412 ../lib/XXV/MODULES/USER.pm:428 msgid "You can choose: %s!" msgstr "Sie können wählen: %s!" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:746 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:732 msgid "Limit search to these channels" msgstr "Begrenze Suche auf diese Kanäle" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:75 -msgid "Search for autotimer with text 'aid'" -msgstr "Suche nach Autotimer mit Text 'aid'" - -#-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:754 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:740 msgid "The channel '%s' does not exist!" msgstr "Der Kanal '%s' existiert nicht!" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:761 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:747 msgid "Ignore retries with same title?" msgstr "Ignoriere Wiederholungen mit gleichen Titel?" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:797 ../lib/XXV/MODULES/TIMERS.pm:764 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:75 +msgid "Search for autotimer with text 'aid'" +msgstr "Suche nach Autotimer mit Text 'aid'" + +#-------------------- +#: ../lib/XXV/MODULES/AUTOTIMER.pm:783 ../lib/XXV/MODULES/TIMERS.pm:654 msgid "Start time in format 'HH:MM'" msgstr "Startzeit im Format 'HH:MM'" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:800 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:786 msgid "You set a start time without an end time!" msgstr "Startzeitpunkt ohne Stoppzeitpunkt definiert!" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:804 ../lib/XXV/MODULES/AUTOTIMER.pm:810 ../lib/XXV/MODULES/AUTOTIMER.pm:827 ../lib/XXV/MODULES/AUTOTIMER.pm:833 ../lib/XXV/MODULES/TIMERS.pm:768 ../lib/XXV/MODULES/TIMERS.pm:774 ../lib/XXV/MODULES/TIMERS.pm:787 ../lib/XXV/MODULES/TIMERS.pm:793 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:790 ../lib/XXV/MODULES/AUTOTIMER.pm:796 ../lib/XXV/MODULES/AUTOTIMER.pm:813 ../lib/XXV/MODULES/AUTOTIMER.pm:819 ../lib/XXV/MODULES/TIMERS.pm:658 ../lib/XXV/MODULES/TIMERS.pm:664 ../lib/XXV/MODULES/TIMERS.pm:677 ../lib/XXV/MODULES/TIMERS.pm:683 msgid "The time is incorrect!" msgstr "Die Zeit ist nicht korrekt!" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:81 -msgid "Show autotimer 'aid'" -msgstr "Zeige Autotimer 'aid'" - -#-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:820 ../lib/XXV/MODULES/TIMERS.pm:783 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:806 ../lib/XXV/MODULES/TIMERS.pm:673 msgid "End time in format 'HH:MM'" msgstr "Endzeit im Format 'HH:MM'" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:823 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:809 msgid "You set an end time without a start time!" msgstr "Stoppzeitpunkt ohne Startzeitpunkt definiert!" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:838 -msgid "Only search these weekdays" -msgstr "Suche nur an diesen Wochentagen" +#: ../lib/XXV/MODULES/AUTOTIMER.pm:81 +msgid "Show autotimer 'aid'" +msgstr "Zeige Autotimer 'aid'" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:87 -msgid "Start autotimer search." -msgstr "Autotimersuche durchführen" +#: ../lib/XXV/MODULES/AUTOTIMER.pm:824 +msgid "Only search these weekdays" +msgstr "Suche nur an diesen Wochentagen" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:871 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:857 msgid "Use PDC time to control created timer" msgstr "Verwende VPS zum Überwachen neuer Timer" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:875 ../lib/XXV/MODULES/TIMERS.pm:32 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:861 ../lib/XXV/MODULES/TIMERS.pm:32 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:883 ../lib/XXV/MODULES/AUTOTIMER.pm:897 ../lib/XXV/MODULES/AUTOTIMER.pm:910 ../lib/XXV/MODULES/AUTOTIMER.pm:926 ../lib/XXV/MODULES/AUTOTIMER.pm:942 ../lib/XXV/MODULES/CHANNELS.pm:1087 ../lib/XXV/MODULES/CHANNELS.pm:1118 ../lib/XXV/MODULES/CHANNELS.pm:1157 ../lib/XXV/MODULES/CHANNELS.pm:1170 ../lib/XXV/MODULES/CHANNELS.pm:1196 ../lib/XXV/MODULES/CHANNELS.pm:1222 ../lib/XXV/MODULES/CHANNELS.pm:1235 ../lib/XXV/MODULES/CHANNELS.pm:1248 ../lib/XXV/MODULES/CHANNELS.pm:1261 ../lib/XXV/MODULES/GRAB.pm:104 ../lib/XXV/MODULES/GRAB.pm:228 ../lib/XXV/MODULES/GRAB.pm:236 ../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:2071 ../lib/XXV/MODULES/RECORDS.pm:2085 ../lib/XXV/MODULES/STREAM.pm:100 ../lib/XXV/MODULES/STREAM.pm:114 ../lib/XXV/MODULES/SVDRP.pm:230 ../lib/XXV/MODULES/TIMERS.pm:809 ../lib/XXV/MODULES/TIMERS.pm:825 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:869 ../lib/XXV/MODULES/AUTOTIMER.pm:883 ../lib/XXV/MODULES/AUTOTIMER.pm:896 ../lib/XXV/MODULES/AUTOTIMER.pm:912 ../lib/XXV/MODULES/AUTOTIMER.pm:928 ../lib/XXV/MODULES/CHANNELS.pm:1087 ../lib/XXV/MODULES/CHANNELS.pm:1118 ../lib/XXV/MODULES/CHANNELS.pm:1157 ../lib/XXV/MODULES/CHANNELS.pm:1170 ../lib/XXV/MODULES/CHANNELS.pm:1196 ../lib/XXV/MODULES/CHANNELS.pm:1222 ../lib/XXV/MODULES/CHANNELS.pm:1235 ../lib/XXV/MODULES/CHANNELS.pm:1248 ../lib/XXV/MODULES/CHANNELS.pm:1261 ../lib/XXV/MODULES/GRAB.pm:104 ../lib/XXV/MODULES/GRAB.pm:231 ../lib/XXV/MODULES/GRAB.pm:239 ../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:2072 ../lib/XXV/MODULES/RECORDS.pm:2086 ../lib/XXV/MODULES/STREAM.pm:100 ../lib/XXV/MODULES/STREAM.pm:114 ../lib/XXV/MODULES/SVDRP.pm:230 ../lib/XXV/MODULES/TIMERS.pm:699 ../lib/XXV/MODULES/TIMERS.pm:715 msgid "Value incorrect!" msgstr "Der Wert ist nicht korrekt!" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:889 ../lib/XXV/MODULES/TIMERS.pm:37 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:87 +msgid "Start autotimer search." +msgstr "Autotimersuche durchführen" + +#-------------------- +#: ../lib/XXV/MODULES/AUTOTIMER.pm:875 ../lib/XXV/MODULES/TIMERS.pm:37 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:903 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:889 msgid "Minimum play time in minutes" msgstr "Mindestlänge in Minuten" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:916 ../lib/XXV/MODULES/RECORDS.pm:2078 ../lib/XXV/MODULES/TIMERS.pm:799 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:902 ../lib/XXV/MODULES/RECORDS.pm:2079 ../lib/XXV/MODULES/TIMERS.pm:689 msgid "Priority (%d ... %d)" msgstr "Priorität (%d ... %d)" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:922 ../lib/XXV/MODULES/TIMERS.pm:805 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:908 ../lib/XXV/MODULES/TIMERS.pm:695 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:932 ../lib/XXV/MODULES/RECORDS.pm:2064 ../lib/XXV/MODULES/TIMERS.pm:815 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:918 ../lib/XXV/MODULES/RECORDS.pm:2065 ../lib/XXV/MODULES/TIMERS.pm:705 msgid "Lifetime (%d ... %d)" msgstr "Lebenszeit (%d ... %d)" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:938 ../lib/XXV/MODULES/TIMERS.pm:821 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:924 ../lib/XXV/MODULES/TIMERS.pm:711 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:934 +msgid "Group all recordings into one directory" +msgstr "Gruppiere alle Aufnahmen in einem Verzeichnis" + +#-------------------- #: ../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:948 -msgid "Group all recordings into one directory" -msgstr "Gruppiere alle Aufnahmen in einem Verzeichnis" - -#-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:961 ../lib/XXV/MODULES/AUTOTIMER.pm:994 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:947 ../lib/XXV/MODULES/AUTOTIMER.pm:980 msgid "%Y-%m-%d %H:%M:%S" msgstr "%d.%m.%Y %H:%M:%S" #-------------------- -#: ../lib/XXV/MODULES/AUTOTIMER.pm:967 +#: ../lib/XXV/MODULES/AUTOTIMER.pm:953 msgid "Start date as YYYY-MM-DD HH:MM:SS." msgstr "Startdatum als DD.MM.YYYY HH:MM:SS." #-------------------- +#: ../lib/XXV/MODULES/AUTOTIMER.pm:960 ../lib/XXV/MODULES/AUTOTIMER.pm:992 ../lib/XXV/MODULES/TIMERS.pm:631 +msgid "Language=English" +msgstr "Language=German,DateFormat=non-US" + +#-------------------- +#: ../lib/XXV/MODULES/AUTOTIMER.pm:967 ../lib/XXV/MODULES/AUTOTIMER.pm:999 ../lib/XXV/MODULES/TIMERS.pm:645 +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:986 +msgid "Stop date as YYYY-MM-DD HH:MM:SS." +msgstr "Enddatum als DD.MM.YYYY HH:MM:SS." + +#-------------------- #: ../lib/XXV/MODULES/CHANNELS.pm:104 msgid "Deletes one or more channels 'pos'" msgstr "Löscht einen oder mehrere Kanäle 'pos'" #-------------------- -#: ../lib/XXV/MODULES/CHANNELS.pm:1052 ../lib/XXV/MODULES/CHANNELS.pm:1057 ../lib/XXV/MODULES/CHANNELS.pm:1408 ../lib/XXV/MODULES/REMOTE.pm:275 +#: ../lib/XXV/MODULES/CHANNELS.pm:1052 ../lib/XXV/MODULES/CHANNELS.pm:1057 ../lib/XXV/MODULES/CHANNELS.pm:1408 ../lib/XXV/MODULES/REMOTE.pm:276 ../lib/XXV/MODULES/REMOTE.pm:281 msgid "Channel '%s' does not exist in the database!" msgstr "Der Kanal '%s' existiert nicht in der Datenbank!" @@ -2086,6 +2061,11 @@ msgid "Filter channel list, set all wanted CA (Common Access)" msgstr "Filter Kanalliste, setze alle gesuche CA(Common Access)" #-------------------- +#: ../lib/XXV/MODULES/CHANNELS.pm:435 +msgid "No channels on '%s' available!" +msgstr "Keine Kanäle auf '%s' verfügbar!" + +#-------------------- #: ../lib/XXV/MODULES/CHANNELS.pm:45 msgid "Free-to-air" msgstr "Frei empfangbar" @@ -2320,21 +2300,21 @@ msgid "There none module reloaded." msgstr "Es wurden keine Module neugeladen." #-------------------- -#: ../lib/XXV/MODULES/EPG.pm:1318 ../lib/XXV/MODULES/VTX.pm:1356 +#: ../lib/XXV/MODULES/EPG.pm:1331 ../lib/XXV/MODULES/VTX.pm:1356 msgid "No channel defined!" msgstr "Kein Kanal definiert!" #-------------------- -#: ../lib/XXV/MODULES/EPG.pm:1524 -msgid "No event id defined!" -msgstr "Keine ID zum Event definiert!" - -#-------------------- #: ../lib/XXV/MODULES/EPG.pm:153 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:1540 +msgid "No event id defined!" +msgstr "Keine ID zum Event definiert!" + +#-------------------- #: ../lib/XXV/MODULES/EPG.pm:17 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." @@ -2365,7 +2345,7 @@ msgid "Preferred program times. (eg. 12:00, 18:00)" msgstr "Die bevorzugten Programmzeiten (Kommagetrenne Liste)" #-------------------- -#: ../lib/XXV/MODULES/EPG.pm:411 +#: ../lib/XXV/MODULES/EPG.pm:413 msgid "Analyze channel '%s'" msgstr "Untersuche Kanal '%s'" @@ -2385,7 +2365,7 @@ msgid "List program for channel 'channel name'" msgstr "Zeige Programm für Kanal 'Kanalname'" #-------------------- -#: ../lib/XXV/MODULES/EPG.pm:568 +#: ../lib/XXV/MODULES/EPG.pm:570 msgid "No title" msgstr "Kein Titel" @@ -2410,12 +2390,17 @@ msgid "Display events in a schematic way" msgstr "Zeigt Sendungen in einer übersichtlichen Weise" #-------------------- +#: ../lib/XXV/MODULES/EPG.pm:796 +msgid "No channel available!" +msgstr "Keine Kanäle verfügbar!" + +#-------------------- #: ../lib/XXV/MODULES/EPG.pm:80 msgid "Update EPG data." msgstr "Aktualisiere EPG Daten" #-------------------- -#: ../lib/XXV/MODULES/EPG.pm:910 +#: ../lib/XXV/MODULES/EPG.pm:919 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'" @@ -2425,11 +2410,21 @@ msgid "Display the current program running in the VDR" msgstr "Zeigt die Sendung, die im VDR läuft" #-------------------- -#: ../lib/XXV/MODULES/EPG.pm:977 +#: ../lib/XXV/MODULES/EPG.pm:986 msgid "Event '%d' does not exist in the database!" msgstr "Sendung '%d' existiert nicht in der Datenbank!" #-------------------- +#: ../lib/XXV/MODULES/EVENTS.pm:177 +msgid "XXVD System %s started" +msgstr "XXVD System %s gestartet" + +#-------------------- +#: ../lib/XXV/MODULES/EVENTS.pm:178 +msgid "Start time: %s" +msgstr "Startzeit: %s" + +#-------------------- #: ../lib/XXV/MODULES/EVENTS.pm:18 msgid "" "This module manage the events for control and watch the xxv system.\n" @@ -2440,19 +2435,79 @@ msgid "" msgstr "" #-------------------- -#: ../lib/XXV/MODULES/EVENTS.pm:38 -msgid "Display the event list" -msgstr "Zeigt die Liste der Ereignisse" +#: ../lib/XXV/MODULES/EVENTS.pm:349 +msgid "Time" +msgstr "Zeit" #-------------------- -#: ../lib/XXV/MODULES/EVENTS.pm:44 -msgid "Edit a event" -msgstr "Ereignis bearbeiten" +#: ../lib/XXV/MODULES/EVENTS.pm:351 ../lib/XXV/OUTPUT/Console.pm:115 ../wml/widgets/message.tmpl:4 ../wml/widgets/message.tmpl:7 +msgid "Message" +msgstr "Nachricht" #-------------------- -#: ../lib/XXV/MODULES/EVENTS.pm:50 -msgid "Change a event on or off" -msgstr "Ändere ein Ereignis zwischen ein/aus" +#: ../lib/XXV/MODULES/EVENTS.pm:36 +msgid "Used host of referred link inside reports." +msgstr "Benutzter Host für verweisende Links innerhalb der Reporte." + +#-------------------- +#: ../lib/XXV/MODULES/EVENTS.pm:398 +msgid "Sorry, but none type requested!" +msgstr "Entschuldigung, es wurde kein Typ angefordert!" + +#-------------------- +#: ../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:407 +msgid "Sorry, but this module is not active!" +msgstr "Entschuldigung, aber dieses Modul ist nicht aktiv!" + +#-------------------- +#: ../lib/XXV/MODULES/EVENTS.pm:43 +msgid "Display the actual news site 'typ'" +msgstr "Zeigt die aktuelle Nachrichtenseite 'typ' an" + +#-------------------- +#: ../lib/XXV/MODULES/EVENTS.pm:446 +msgid "All messages" +msgstr "Alle Meldungen" + +#-------------------- +#: ../lib/XXV/MODULES/EVENTS.pm:447 ../lib/XXV/MODULES/EVENTS.pm:472 +msgid "Harmless" +msgstr "Harmlos" + +#-------------------- +#: ../lib/XXV/MODULES/EVENTS.pm:448 +msgid "Interesting" +msgstr "Interessant" + +#-------------------- +#: ../lib/XXV/MODULES/EVENTS.pm:449 +msgid "Very interesting" +msgstr "Sehr interessant" + +#-------------------- +#: ../lib/XXV/MODULES/EVENTS.pm:450 +msgid "Important" +msgstr "Wichtig" + +#-------------------- +#: ../lib/XXV/MODULES/EVENTS.pm:451 +msgid "Very important" +msgstr "Sehr wichtig" + +#-------------------- +#: ../lib/XXV/MODULES/EVENTS.pm:452 +msgid "None messages" +msgstr "Keine Meldungen" + +#-------------------- +#: ../lib/XXV/MODULES/EVENTS.pm:49 +msgid "Display the event list" +msgstr "Zeigt die Liste der Ereignisse" #-------------------- #: ../lib/XXV/MODULES/GRAB.pm:111 @@ -2505,17 +2560,17 @@ msgid "Dump additional debugging information, required only for software develop msgstr "Ausgeben von zusätzliche Informationen zur Fehlersuche, wird nur für die Software-Entwicklung benötigt." #-------------------- -#: ../lib/XXV/MODULES/HTTPD.pm:267 ../lib/XXV/MODULES/WAPD.pm:204 +#: ../lib/XXV/MODULES/HTTPD.pm:271 ../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:432 +#: ../lib/XXV/MODULES/HTTPD.pm:436 msgid "Module '%s' is'nt loaded!" msgstr "Modul '%s' wurde nicht geladen!" #-------------------- -#: ../lib/XXV/MODULES/HTTPD.pm:433 +#: ../lib/XXV/MODULES/HTTPD.pm:437 msgid "Internal Server Error" msgstr "Interner Serverfehler" @@ -2525,47 +2580,47 @@ msgid "This module is a multisession HTTPD server." msgstr "Dieses Modul ist ein Mehrfachsitzung HTTPD Server." #-------------------- -#: ../lib/XXV/MODULES/HTTPD.pm:515 +#: ../lib/XXV/MODULES/HTTPD.pm:519 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:568 ../lib/XXV/OUTPUT/Console.pm:678 ../lib/XXV/OUTPUT/Html.pm:974 +#: ../lib/XXV/MODULES/HTTPD.pm:572 ../lib/XXV/OUTPUT/Console.pm:678 ../lib/XXV/OUTPUT/Html.pm:974 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:611 msgid "Directory found." msgstr "Verzeichnis gefunden." #-------------------- -#: ../lib/XXV/MODULES/HTTPD.pm:609 +#: ../lib/XXV/MODULES/HTTPD.pm:613 msgid "Directory not found." msgstr "Verzeichnis nicht gefunden." #-------------------- -#: ../lib/XXV/MODULES/HTTPD.pm:615 +#: ../lib/XXV/MODULES/HTTPD.pm:619 msgid "File found." msgstr "Datei gefunden." #-------------------- -#: ../lib/XXV/MODULES/HTTPD.pm:617 +#: ../lib/XXV/MODULES/HTTPD.pm:621 msgid "File not found." msgstr "Datei nicht gefunden." #-------------------- -#: ../lib/XXV/MODULES/HTTPD.pm:626 +#: ../lib/XXV/MODULES/HTTPD.pm:630 msgid "Host does not exist." msgstr "Host existiert nicht." #-------------------- -#: ../lib/XXV/MODULES/HTTPD.pm:631 +#: ../lib/XXV/MODULES/HTTPD.pm:635 msgid "Query : '%s' not supported." msgstr "Abfrage : '%s' nicht unterstützt." #-------------------- -#: ../lib/XXV/MODULES/HTTPD.pm:645 +#: ../lib/XXV/MODULES/HTTPD.pm:649 msgid "Schema" msgstr "Übersicht" @@ -2980,7 +3035,7 @@ msgid "Which channel should used as source?" msgstr "Welcher Kanal soll als Quelle verwendet werden?" #-------------------- -#: ../lib/XXV/MODULES/MOVETIMER.pm:425 ../lib/XXV/MODULES/MOVETIMER.pm:448 ../lib/XXV/MODULES/TIMERS.pm:715 +#: ../lib/XXV/MODULES/MOVETIMER.pm:425 ../lib/XXV/MODULES/MOVETIMER.pm:448 ../lib/XXV/MODULES/TIMERS.pm:605 msgid "Channel '%s' does not exist on video disk recorder %s!" msgstr "Kanal '%s' existiert nicht auf Video Disk Rekorder %s!" @@ -3250,7 +3305,7 @@ msgid "Edit recording 'rid'" msgstr "Aufnahme bearbeiten 'rid'" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:1466 +#: ../lib/XXV/MODULES/RECORDS.pm:1467 msgid "No recording defined for display! Please use rdisplay 'rid'" msgstr "Keine Aufnahme zum Anzeigen definiert! Bitte verwende rdisplay 'rid'" @@ -3260,12 +3315,12 @@ msgid "Convert recording 'rid'" msgstr "Aufnahme konvertieren 'rid'" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:1503 ../lib/XXV/MODULES/RECORDS.pm:1542 ../lib/XXV/MODULES/RECORDS.pm:1584 ../lib/XXV/MODULES/RECORDS.pm:1951 ../lib/XXV/MODULES/RECORDS.pm:2041 ../lib/XXV/MODULES/RECORDS.pm:2323 +#: ../lib/XXV/MODULES/RECORDS.pm:1504 ../lib/XXV/MODULES/RECORDS.pm:1543 ../lib/XXV/MODULES/RECORDS.pm:1585 ../lib/XXV/MODULES/RECORDS.pm:1952 ../lib/XXV/MODULES/RECORDS.pm:2042 ../lib/XXV/MODULES/RECORDS.pm:2324 msgid "Recording '%s' does not exist in the database!" msgstr "Aufnahme '%s' existiert nicht in der Datenbank!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:1533 ../lib/XXV/MODULES/RECORDS.pm:1577 +#: ../lib/XXV/MODULES/RECORDS.pm:1534 ../lib/XXV/MODULES/RECORDS.pm:1578 msgid "No recording defined for playback! Please use rplay 'rid'." msgstr "Keine Aufnahme zum Wiedergabe definiert! Bitte verwende rplay 'rid'" @@ -3280,7 +3335,7 @@ msgid "Cut recording 'rid' in vdr" msgstr "Schneide Aufnahme 'rid' im VDR" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:1631 ../lib/XXV/MODULES/RECORDS.pm:1768 +#: ../lib/XXV/MODULES/RECORDS.pm:1632 ../lib/XXV/MODULES/RECORDS.pm:1769 msgid "Index" msgstr "Index" @@ -3290,27 +3345,27 @@ 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:1884 +#: ../lib/XXV/MODULES/RECORDS.pm:1885 msgid "No recording defined for deletion! Please use rdelete 'id'." msgstr "Keine Aufnahme zum Löschen definiert! Bitte verwende rdelete 'rid'." #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:1957 +#: ../lib/XXV/MODULES/RECORDS.pm:1958 msgid "Recording '%s' to delete" msgstr "Aufnahme '%s' wird gelöscht" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:1993 +#: ../lib/XXV/MODULES/RECORDS.pm:1994 msgid "No recording to delete!" msgstr "Keine Aufnahme zum Löschen!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2019 +#: ../lib/XXV/MODULES/RECORDS.pm:2020 msgid "No recording defined for editing!" msgstr "Keine Aufnahme-ID zum Bearbeiten!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2058 ../lib/XXV/MODULES/RECORDS.pm:2646 ../lib/XXV/MODULES/TIMERS.pm:693 +#: ../lib/XXV/MODULES/RECORDS.pm:2059 ../lib/XXV/MODULES/RECORDS.pm:2647 ../lib/XXV/MODULES/TIMERS.pm:583 msgid "Title of recording" msgstr "Titel der Aufnahme" @@ -3320,12 +3375,12 @@ msgid "Recording deleted: %s" msgstr "Aufnahme gelöscht: %s" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2095 +#: ../lib/XXV/MODULES/RECORDS.pm:2096 msgid "Undefined" msgstr "Unbestimmt" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2105 ../lib/XXV/MODULES/STREAM.pm:208 ../lib/XXV/MODULES/XMLTV.pm:531 +#: ../lib/XXV/MODULES/RECORDS.pm:2106 ../lib/XXV/MODULES/STREAM.pm:208 ../lib/XXV/MODULES/XMLTV.pm:531 msgid "This channel '%s' does not exist!" msgstr "Dieser Kanal '%s' existiert nicht in der Datenbank!" @@ -3335,127 +3390,127 @@ msgid "Subtitle: %s" msgstr "Serientitel: %s" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2127 +#: ../lib/XXV/MODULES/RECORDS.pm:2128 msgid "Video" msgstr "Video" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2132 +#: ../lib/XXV/MODULES/RECORDS.pm:2133 msgid "Audio" msgstr "Audio" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2137 +#: ../lib/XXV/MODULES/RECORDS.pm:2138 msgid "Cut marks" msgstr "Schnittmarken" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2174 ../lib/XXV/MODULES/RECORDS.pm:2182 +#: ../lib/XXV/MODULES/RECORDS.pm:2175 ../lib/XXV/MODULES/RECORDS.pm:2183 msgid "Couldn't write file '%s' : %s" msgstr "Konnte Datei '%s' nicht schreiben : %s" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2201 ../lib/XXV/MODULES/RECORDS.pm:2219 +#: ../lib/XXV/MODULES/RECORDS.pm:2202 ../lib/XXV/MODULES/RECORDS.pm:2220 msgid "Recording: '%s', couldn't move to '%s' : %s" msgstr "Aufnahme: '%s', konnte nicht nach '%s' verschoben werden : %s" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2215 +#: ../lib/XXV/MODULES/RECORDS.pm:2216 msgid "Recording: '%s', couldn't mkpath: '%s' : %s" msgstr "Aufnahme: '%s', konnte nicht Verzeichnis '%s' nicht erstellen : %s" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2226 +#: ../lib/XXV/MODULES/RECORDS.pm:2227 msgid "Recording: '%s', couldn't remove '%s' : %s" msgstr "Aufnahme: '%s', konnte nicht '%s' nicht entfernen : %s" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2257 ../lib/XXV/MODULES/RECORDS.pm:2259 +#: ../lib/XXV/MODULES/RECORDS.pm:2258 ../lib/XXV/MODULES/RECORDS.pm:2260 msgid "Recording edited!" msgstr "Aufnahme wurde bearbeitet!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2267 +#: ../lib/XXV/MODULES/RECORDS.pm:2268 msgid "Recording was'nt changed!" msgstr "Aufnahme wurde nicht verändert!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2306 +#: ../lib/XXV/MODULES/RECORDS.pm:2307 msgid "No reccmds.conf on your system!" msgstr "Keine reccmds.conf auf dem System!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2311 +#: ../lib/XXV/MODULES/RECORDS.pm:2312 msgid "Please use rconvert 'cmdid_rid'" msgstr "Bitte verwende rconvert 'cmdid_rid'" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2315 +#: ../lib/XXV/MODULES/RECORDS.pm:2316 msgid "Command" msgstr "Kommando" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2322 +#: ../lib/XXV/MODULES/RECORDS.pm:2323 msgid "Couldn't find this command ID!" msgstr "Kann diese Kommando-ID nicht finden!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2336 +#: ../lib/XXV/MODULES/RECORDS.pm:2337 msgid "Call %s '%s', standard error output :" msgstr "Aufruf %s '%s', Standardfehlerausgabe :" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2339 +#: ../lib/XXV/MODULES/RECORDS.pm:2340 msgid "Call %s '%s', standard output :" msgstr "Aufruf %s '%s', Ausgabe :" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2343 +#: ../lib/XXV/MODULES/RECORDS.pm:2344 msgid "Sorry! Couldn't call %s '%s'! %s" msgstr "Entschuldigung! Konnte %s '%s' nicht aufrufen! %s" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2347 +#: ../lib/XXV/MODULES/RECORDS.pm:2348 msgid "Back to recording list" msgstr "Zurück zur Aufnahmeliste" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2386 +#: ../lib/XXV/MODULES/RECORDS.pm:2387 msgid "%d new recordings since last report time %s" msgstr "%d neue Aufnahmen seit der letzten Reportzeit %s" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2636 +#: ../lib/XXV/MODULES/RECORDS.pm:2637 msgid "There none recoverable recordings!" msgstr "Es sind keine wiederherstellbaren Aufnahmen vorhanden!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2666 +#: ../lib/XXV/MODULES/RECORDS.pm:2667 msgid "Recover recording" msgstr "Aufnahme wiederherstellen" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2672 +#: ../lib/XXV/MODULES/RECORDS.pm:2673 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:2681 +#: ../lib/XXV/MODULES/RECORDS.pm:2682 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:2694 ../lib/XXV/MODULES/RECORDS.pm:2696 +#: ../lib/XXV/MODULES/RECORDS.pm:2695 ../lib/XXV/MODULES/RECORDS.pm:2697 msgid "Recording recovered!" msgstr "Aufnahme wiederhergestellt!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2704 +#: ../lib/XXV/MODULES/RECORDS.pm:2705 msgid "None recording was'nt recovered!" msgstr "Keine Aufnahme wurde wiederhergestellt!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:2773 ../lib/XXV/MODULES/VTX.pm:1419 +#: ../lib/XXV/MODULES/RECORDS.pm:2774 ../lib/XXV/MODULES/VTX.pm:1419 msgid "Sorry, get image is'nt supported" msgstr "Entschuldigung, Bilder werden nicht unterstützt!" @@ -3500,27 +3555,27 @@ 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:607 +#: ../lib/XXV/MODULES/RECORDS.pm:608 msgid "Update recording '%s'" msgstr "Aktualisiere Aufnahme '%s'" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:659 -msgid "Analyze recording '%s'" -msgstr "Untersuche Aufnahme '%s'" - -#-------------------- #: ../lib/XXV/MODULES/RECORDS.pm:66 msgid "The program used to create thumbnails" msgstr "Das verwendete Programm, um Vorschaubildern zu erzeugen" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:683 +#: ../lib/XXV/MODULES/RECORDS.pm:660 +msgid "Analyze recording '%s'" +msgstr "Untersuche Aufnahme '%s'" + +#-------------------- +#: ../lib/XXV/MODULES/RECORDS.pm:684 msgid "Can't add recording '%s' into database!" msgstr "Konnte Aufnahme '%s' nicht in Datenbank einfügen!" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:686 +#: ../lib/XXV/MODULES/RECORDS.pm:687 msgid "Can't assign recording '%s' to file!" msgstr "Kann Aufnahme '%s' keiner Datei zuordnen!" @@ -3530,7 +3585,7 @@ msgid "None" msgstr "Keines" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:693 +#: ../lib/XXV/MODULES/RECORDS.pm:694 msgid "Recording '%s' without id or unique title and date from VDR!" msgstr "Aufnahme '%s' ohne ID oder eindeutigen Titel und Datum vom VDR!" @@ -3540,17 +3595,17 @@ msgid "Produce how many thumbnails" msgstr "Wieviele Vorschaubildern erzeugen?" #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:783 +#: ../lib/XXV/MODULES/RECORDS.pm:784 msgid "Write %d recordings to the database." msgstr "Schreibe %d Aufnahmen in die Datenbank." #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:785 +#: ../lib/XXV/MODULES/RECORDS.pm:786 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." #-------------------- -#: ../lib/XXV/MODULES/RECORDS.pm:822 ../lib/XXV/MODULES/RECORDS.pm:824 +#: ../lib/XXV/MODULES/RECORDS.pm:823 ../lib/XXV/MODULES/RECORDS.pm:825 msgid "Get information on recordings ..." msgstr "Hole Informationen über Aufnahmen ..." @@ -3610,96 +3665,21 @@ msgid "List the commands" msgstr "Liste die Kommandos" #-------------------- -#: ../lib/XXV/MODULES/REPORT.pm:128 -msgid "XXVD System %s started" -msgstr "XXVD System %s gestartet" - -#-------------------- -#: ../lib/XXV/MODULES/REPORT.pm:129 -msgid "Start time: %s" -msgstr "Startzeit: %s" - -#-------------------- #: ../lib/XXV/MODULES/REPORT.pm:18 -msgid "This module read in every module the status information and display this. Also this module send this informations e.g. as mail report." -msgstr "Dieses Modul, liest von jedes Modul die Statusangaben und zeigen dieses an. Dieses Modul senden diese Informationen z.B. auch als email Report." - -#-------------------- -#: ../lib/XXV/MODULES/REPORT.pm:268 -msgid "Sorry, but none type requested!" -msgstr "Entschuldigung, es wurde kein Typ angefordert!" - -#-------------------- -#: ../lib/XXV/MODULES/REPORT.pm:273 -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/REPORT.pm:276 -msgid "Sorry, but this module is not active!" -msgstr "Entschuldigung, aber dieses Modul ist nicht aktiv!" +msgid "This module read and show status information from every module." +msgstr "Dieses Modul, liest von jedes Modul die Statusangaben und zeigen dieses an." #-------------------- -#: ../lib/XXV/MODULES/REPORT.pm:315 -msgid "All messages" -msgstr "Alle Meldungen" - -#-------------------- -#: ../lib/XXV/MODULES/REPORT.pm:316 ../lib/XXV/MODULES/REPORT.pm:335 -msgid "Harmless" -msgstr "Harmlos" - -#-------------------- -#: ../lib/XXV/MODULES/REPORT.pm:317 -msgid "Interesting" -msgstr "Interessant" - -#-------------------- -#: ../lib/XXV/MODULES/REPORT.pm:318 -msgid "Very interesting" -msgstr "Sehr interessant" - -#-------------------- -#: ../lib/XXV/MODULES/REPORT.pm:319 -msgid "Important" -msgstr "Wichtig" - -#-------------------- -#: ../lib/XXV/MODULES/REPORT.pm:320 -msgid "Very important" -msgstr "Sehr wichtig" - -#-------------------- -#: ../lib/XXV/MODULES/REPORT.pm:321 -msgid "None messages" -msgstr "Keine Meldungen" - -#-------------------- -#: ../lib/XXV/MODULES/REPORT.pm:35 ../lib/XXV/MODULES/SHARE.pm:70 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:77 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:81 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:43 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:47 ../lib/XXV/OUTPUT/NEWS/RSS.pm:41 ../lib/XXV/OUTPUT/NEWS/RSS.pm:45 ../lib/XXV/OUTPUT/NEWS/VDR.pm:38 ../lib/XXV/OUTPUT/NEWS/VDR.pm:42 -msgid "Module can't activated! This module depends module %s." -msgstr "Modul konnte nicht aktiviert werden! Diese Modul ist abhängig vom Modul %s." - -#-------------------- -#: ../lib/XXV/MODULES/REPORT.pm:42 +#: ../lib/XXV/MODULES/REPORT.pm:32 msgid "Time in hours to send the report." msgstr "Zeit in den Stunden, einen Report zu senden." #-------------------- -#: ../lib/XXV/MODULES/REPORT.pm:48 -msgid "Used host of referred link inside reports." -msgstr "Benutzter Host für verweisende Links innerhalb der Reporte." - -#-------------------- -#: ../lib/XXV/MODULES/REPORT.pm:55 +#: ../lib/XXV/MODULES/REPORT.pm:40 msgid "Display the report screen 'modname'" msgstr "Zeigt den Reportschirm ' modname'" #-------------------- -#: ../lib/XXV/MODULES/REPORT.pm:60 -msgid "Display the actual news site 'typ'" -msgstr "Zeigt die aktuelle Nachrichtenseite 'typ' an" - -#-------------------- #: ../lib/XXV/MODULES/ROBOT.pm:18 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." @@ -3710,7 +3690,7 @@ msgid "Start a robots 'rname'" msgstr "Startet eine Robot 'rname'" #-------------------- -#: ../lib/XXV/MODULES/SHARE.pm:349 +#: ../lib/XXV/MODULES/SHARE.pm:358 msgid "Rank" msgstr "Platzierung" @@ -3720,6 +3700,11 @@ msgid "This module send and read shared data from SOAP Server." msgstr "Dieses Modul sendet und liest gemeinsame Daten vom SOAP Server." #-------------------- +#: ../lib/XXV/MODULES/SHARE.pm:70 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:78 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:43 ../lib/XXV/OUTPUT/NEWS/RSS.pm:42 ../lib/XXV/OUTPUT/NEWS/VDR.pm:39 +msgid "Module can't activated! This module depends module %s." +msgstr "Modul konnte nicht aktiviert werden! Diese Modul ist abhängig vom Modul %s." + +#-------------------- #: ../lib/XXV/MODULES/SHARE.pm:78 msgid "URL to access popularity web service." msgstr "URL für den Zugang zum Popularität Web Service." @@ -3985,6 +3970,11 @@ msgid "No recording defined for streaming!" msgstr "Keine Aufnahme für Streaming definiert!" #-------------------- +#: ../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" + +#-------------------- #: ../lib/XXV/MODULES/STREAM.pm:30 msgid "Used host of referred link inside playlist." msgstr "Benutzter Host für verweisende Links innerhalb der Abspiellisten." @@ -4185,7 +4175,7 @@ msgid "Delete video disk recorder definition 'id'" msgstr "Lösche Video Disk Rekorder Definition 'id'" #-------------------- -#: ../lib/XXV/MODULES/SVDRP.pm:501 +#: ../lib/XXV/MODULES/SVDRP.pm:518 msgid "None video disk recorder defined in the database." msgstr "Kein Video Disk Rekorder in der Datenbank definiert." @@ -4200,7 +4190,7 @@ msgid "Status from video disk recorder." msgstr "Status des Video Disk Rekorder." #-------------------- -#: ../lib/XXV/MODULES/SVDRP.pm:608 +#: ../lib/XXV/MODULES/SVDRP.pm:629 msgid "No command defined! Please use scommand 'cmd'." msgstr "Kein Kommando definiert! Bitte verwende scommand 'cmd'" @@ -4264,86 +4254,71 @@ msgid "Are you sure to exit the xxv system?" msgstr "Sind Sie sicher, das XXV-System zu beenden?" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:1008 -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:104 msgid "Activate/Deactive timer 'tid'" msgstr "Aktiviere/Deaktiviere Timer 'tid'" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:1059 ../lib/XXV/MODULES/TIMERS.pm:655 ../lib/XXV/MODULES/TIMERS.pm:980 -msgid "Timer '%s' does not exist in the database!" -msgstr "Timer '%s' existiert nicht in der Datenbank!" - -#-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:1088 -msgid "No timer to toggle!" -msgstr "Kein Timer zum Umschalten!" - -#-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:118 -msgid "Create event entries if the user has created a new timer." -msgstr "Erzeuge Ereigniseinträge, wenn ein neuer Timer vom Anwender erstellt wurde." - -#-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:1240 +#: ../lib/XXV/MODULES/TIMERS.pm:1127 msgid "%d timer written to database." msgstr "%d Timer in Datenbank geschrieben." #-------------------- #: ../lib/XXV/MODULES/TIMERS.pm:144 -msgid "New timer found: %s" -msgstr "Neuer Timer gefunden: %s" +msgid "New timer: %s" +msgstr "Neuer Timer: %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:1505 +msgid "Adjust timer : %s" +msgstr "Anpassen des Timer : %s" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:186 -msgid "Create event entries if the user has deleted a timer." -msgstr "Erzeuge Ereigniseinträge, wenn ein Timer vom Anwender gelöscht wurde." +#: ../lib/XXV/MODULES/TIMERS.pm:1507 +msgid "Adjust times from %s to %s" +msgstr "Anpassen der Zeiten von %s nach %s" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:198 +#: ../lib/XXV/MODULES/TIMERS.pm:166 msgid "Timer deleted: %s" msgstr "Timer gelöscht: %s" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:235 -msgid "Create event entries if the user has toggled a timer." -msgstr "Erzeugt Eventeinträge, wenn eine Timer vom User umgeschaltet wurde." +#: ../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:250 +#: ../lib/XXV/MODULES/TIMERS.pm:197 msgid "Timer activated: %s" msgstr "Timer aktiviert: %s" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:252 +#: ../lib/XXV/MODULES/TIMERS.pm:199 msgid "Timer deactivated: %s" msgstr "Timer deaktiviert: %s" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:26 -msgid "How often timers are to be updated (in seconds)" -msgstr "Wie oft sollen Timer aktualisiert werden (in Sekunden)" +#: ../lib/XXV/MODULES/TIMERS.pm:2030 +msgid "Channel: %s" +msgstr "Kanal: %s" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:295 -msgid "Create event entries if a timer has been updated." -msgstr "Erzeuge Eventeinträge, wenn ein Timer aktualisiert wurde." +#: ../lib/XXV/MODULES/TIMERS.pm:2035 +msgid "On: %s to %s" +msgstr "Um: %s bis %s" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:352 +#: ../lib/XXV/MODULES/TIMERS.pm:239 msgid "%d timer exists." msgstr "Es exisiteren %d Timer." #-------------------- +#: ../lib/XXV/MODULES/TIMERS.pm:26 +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" @@ -4354,79 +4329,99 @@ 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: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:57 -msgid "Change timers if EPG entries change" -msgstr "Timer justieren, wenn EPG Eintrag verändert wurde" - -#-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:589 +#: ../lib/XXV/MODULES/TIMERS.pm:479 msgid "Event '%s' does not exist in the database!" msgstr "Sendung '%s' existiert nicht in der Datenbank!" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:605 ../lib/XXV/MODULES/TIMERS.pm:849 +#: ../lib/XXV/MODULES/TIMERS.pm:495 ../lib/XXV/MODULES/TIMERS.pm:739 msgid "New timer" msgstr "Neuer Timer" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:64 -msgid "List timers 'tid'" -msgstr "Zeige Timer 'tid'" +#: ../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:545 ../lib/XXV/MODULES/TIMERS.pm:870 ../lib/XXV/MODULES/TIMERS.pm:949 +msgid "Timer '%s' does not exist in the database!" +msgstr "Timer '%s' existiert nicht in der Datenbank!" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:685 +#: ../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:575 msgid "Enable this timer" msgstr "Aktiviere diesen Timer" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:690 +#: ../lib/XXV/MODULES/TIMERS.pm:580 msgid "Use PDC time to control timer" msgstr "Verwende VPS Zeit zum Überwachen des Timers" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:70 -msgid "Search timers 'text'" -msgstr "Suche Timer 'text'" - -#-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:701 +#: ../lib/XXV/MODULES/TIMERS.pm:591 msgid "Which video disk recorder should record" msgstr "Welcher Video Disk Recorder soll aufzeichen" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:707 +#: ../lib/XXV/MODULES/TIMERS.pm:597 msgid "Which channel should recorded" msgstr "Welcher Kanal soll aufgezeichnet werden" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:729 +#: ../lib/XXV/MODULES/TIMERS.pm:619 msgid "%Y-%m-%d" msgstr "%d.%m.%Y" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:735 +#: ../lib/XXV/MODULES/TIMERS.pm:625 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:738 +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:812 +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:848 -msgid "Edit timer" -msgstr "Timer bearbeiten" +#: ../lib/XXV/MODULES/TIMERS.pm:886 +msgid "No timer to delete!" +msgstr "Kein Timer zum Löschen!" + +#-------------------- +#: ../lib/XXV/MODULES/TIMERS.pm:898 +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 @@ -4434,19 +4429,14 @@ msgid "Edit timer 'tid'" msgstr "Bearbeite Timer 'tid'" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:922 -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:97 msgid "Delete timer 'tid'" msgstr "Lösche Timer 'tid'" #-------------------- -#: ../lib/XXV/MODULES/TIMERS.pm:996 -msgid "No timer to delete!" -msgstr "Kein Timer zum Löschen!" +#: ../lib/XXV/MODULES/TIMERS.pm:978 +msgid "No timer to toggle!" +msgstr "Kein Timer zum Umschalten!" #-------------------- #: ../lib/XXV/MODULES/USER.pm:102 @@ -4905,11 +4895,6 @@ msgid "Error '%s' (%s) : %s!" msgstr "Fehler im Feld '%s' (%s) : %s!" #-------------------- -#: ../lib/XXV/OUTPUT/Console.pm:115 ../wml/widgets/message.tmpl:4 ../wml/widgets/message.tmpl:7 -msgid "Message" -msgstr "Nachricht" - -#-------------------- #: ../lib/XXV/OUTPUT/Console.pm:168 msgid "Module" msgstr "Modul" @@ -5036,52 +5021,47 @@ msgid "File" msgstr "Datei" #-------------------- -#: ../lib/XXV/OUTPUT/NEWS/JABBER.pm:106 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:71 ../lib/XXV/OUTPUT/NEWS/RSS.pm:70 ../lib/XXV/OUTPUT/NEWS/VDR.pm:67 +#: ../lib/XXV/OUTPUT/NEWS/JABBER.pm:103 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:67 ../lib/XXV/OUTPUT/NEWS/RSS.pm:67 ../lib/XXV/OUTPUT/NEWS/VDR.pm:64 msgid "Sorry, but value must be between %d and %d" msgstr "Entschuldigung, der Wert muss zwischen %d und %d liegen!" #-------------------- -#: ../lib/XXV/OUTPUT/NEWS/JABBER.pm:113 +#: ../lib/XXV/OUTPUT/NEWS/JABBER.pm:110 msgid "User to be notified (as Jabber account to@jabber.server.org)" msgstr "Zu benachrichtigender Anwender (als Jabberzugang an@jabber.server.org)" #-------------------- -#: ../lib/XXV/OUTPUT/NEWS/JABBER.pm:119 +#: ../lib/XXV/OUTPUT/NEWS/JABBER.pm:116 msgid "Jabber account to send message (from@jabber.server.org)" msgstr "Jabberzuganges zum Senden der Nachricht" #-------------------- -#: ../lib/XXV/OUTPUT/NEWS/JABBER.pm:125 +#: ../lib/XXV/OUTPUT/NEWS/JABBER.pm:122 msgid "Password for Jabber account" msgstr "Passwort des Jabberzuganges" #-------------------- -#: ../lib/XXV/OUTPUT/NEWS/JABBER.pm:282 +#: ../lib/XXV/OUTPUT/NEWS/JABBER.pm:280 msgid "The module NEWS::JABBER is not active!" msgstr "Das Modul NEWS::JABBER ist nicht aktiv!" #-------------------- -#: ../lib/XXV/OUTPUT/NEWS/JABBER.pm:72 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:37 ../lib/XXV/OUTPUT/NEWS/RSS.pm:36 ../lib/XXV/OUTPUT/NEWS/VDR.pm:33 +#: ../lib/XXV/OUTPUT/NEWS/JABBER.pm:73 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:37 ../lib/XXV/OUTPUT/NEWS/RSS.pm:37 ../lib/XXV/OUTPUT/NEWS/VDR.pm:34 msgid "Can't initialize news module!" msgstr "Konnte das News Modul nicht initialisieren!" #-------------------- -#: ../lib/XXV/OUTPUT/NEWS/JABBER.pm:88 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:53 ../lib/XXV/OUTPUT/NEWS/RSS.pm:52 ../lib/XXV/OUTPUT/NEWS/VDR.pm:49 +#: ../lib/XXV/OUTPUT/NEWS/JABBER.pm:85 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:49 ../lib/XXV/OUTPUT/NEWS/RSS.pm:49 ../lib/XXV/OUTPUT/NEWS/VDR.pm:46 msgid "Category of messages that should displayed" msgstr "Kategorie der Nachrichten die angezeigt werden soll" #-------------------- -#: ../lib/XXV/OUTPUT/NEWS/MAIL.pm:103 -msgid "SMTP mail server host name" -msgstr "Hostname des SMTP Mail-Server" - -#-------------------- -#: ../lib/XXV/OUTPUT/NEWS/MAIL.pm:109 +#: ../lib/XXV/OUTPUT/NEWS/MAIL.pm:105 msgid "User name for mail server access" msgstr "Username für Zugriff zum Mail-Server" #-------------------- -#: ../lib/XXV/OUTPUT/NEWS/MAIL.pm:114 +#: ../lib/XXV/OUTPUT/NEWS/MAIL.pm:110 msgid "Password for mail server access" msgstr "Password für Zugriff zum Mail-Server" @@ -5091,82 +5071,92 @@ msgid "This NEWS module generate mails for news." msgstr "Dieses Nachrichten Modul erzeugen Mails für Nachrichten." #-------------------- -#: ../lib/XXV/OUTPUT/NEWS/MAIL.pm:320 -msgid "The module NEWS::Mail is not active!" -msgstr "Das Modul NEWS::Mail ist nicht aktiv!" +#: ../lib/XXV/OUTPUT/NEWS/MAIL.pm:245 +msgid "News from your XXV System!" +msgstr "Meldungen von XXV System!" #-------------------- -#: ../lib/XXV/OUTPUT/NEWS/MAIL.pm:326 +#: ../lib/XXV/OUTPUT/NEWS/MAIL.pm:315 msgid "A mail with the following content has been sent to your mail account!" msgstr "Eine Mail mit dem folgenden Inhalt, wurde an Ihrem Mailaccount gesendet!" #-------------------- -#: ../lib/XXV/OUTPUT/NEWS/MAIL.pm:78 +#: ../lib/XXV/OUTPUT/NEWS/MAIL.pm:319 +msgid "Mail with the following content could'nt sent to your mail account!" +msgstr "Mail mit folgenden Inhalt erstellt, konnte aber nicht an den Mailaccount übermittelt werden!" + +#-------------------- +#: ../lib/XXV/OUTPUT/NEWS/MAIL.pm:332 +msgid "The module NEWS::Mail is not active!" +msgstr "Das Modul NEWS::Mail ist nicht aktiv!" + +#-------------------- +#: ../lib/XXV/OUTPUT/NEWS/MAIL.pm:74 msgid "Time in hours to send the next mail" msgstr "Zeit in den Stunden, um die nächste Nachricht zu senden" #-------------------- -#: ../lib/XXV/OUTPUT/NEWS/MAIL.pm:92 +#: ../lib/XXV/OUTPUT/NEWS/MAIL.pm:88 msgid "One or more mail addresses for sending the messages" msgstr "Eine oder mehr Mail-Adressen für das Senden der Nachrichten" #-------------------- -#: ../lib/XXV/OUTPUT/NEWS/MAIL.pm:98 +#: ../lib/XXV/OUTPUT/NEWS/MAIL.pm:94 msgid "Mail address to describe the sender." msgstr "Mailadresse zum Beschreiben des Absender." #-------------------- -#: ../lib/XXV/OUTPUT/NEWS/RSS.pm:151 +#: ../lib/XXV/OUTPUT/NEWS/MAIL.pm:99 +msgid "SMTP mail server host name" +msgstr "Hostname des SMTP Mail-Server" + +#-------------------- +#: ../lib/XXV/OUTPUT/NEWS/RSS.pm:152 msgid "XXV RSS 1.0" msgstr "XXV RSS 1.0" #-------------------- -#: ../lib/XXV/OUTPUT/NEWS/RSS.pm:153 ../lib/XXV/OUTPUT/NEWS/RSS.pm:178 -msgid "Important messages from your VDR/XXV" -msgstr "Wichtige Nachrichten vom VDR/XXV" +#: ../lib/XXV/OUTPUT/NEWS/RSS.pm:154 ../lib/XXV/OUTPUT/NEWS/RSS.pm:177 +msgid "Messages from your VDR/XXV" +msgstr "Meldungen von VDR/XXV" #-------------------- -#: ../lib/XXV/OUTPUT/NEWS/RSS.pm:156 +#: ../lib/XXV/OUTPUT/NEWS/RSS.pm:157 msgid "XXV messages" msgstr "XXV Meldungen" #-------------------- -#: ../lib/XXV/OUTPUT/NEWS/RSS.pm:176 +#: ../lib/XXV/OUTPUT/NEWS/RSS.pm:175 msgid "XXV RSS 2.0" msgstr "XXV RSS 2.0" #-------------------- -#: ../lib/XXV/OUTPUT/NEWS/RSS.pm:22 -msgid "This NEWS module generates an RSS news feed for your RSS reader." -msgstr "Dieses Nachrichten Modul erzeugen ein RSS Newsfeed für Ihren RSS Leser." - -#-------------------- -#: ../lib/XXV/OUTPUT/NEWS/RSS.pm:233 +#: ../lib/XXV/OUTPUT/NEWS/RSS.pm:204 msgid "The module NEWS::RSS is not active!" msgstr "Das Modul NEWS::RSS ist nicht aktiv!" #-------------------- -#: ../lib/XXV/OUTPUT/NEWS/RSS.pm:258 -msgid "RSS item %d at %s" -msgstr "RSS Eintrag %d um %s" +#: ../lib/XXV/OUTPUT/NEWS/RSS.pm:23 +msgid "This NEWS module generates an RSS news feed for your RSS reader." +msgstr "Dieses Nachrichten Modul erzeugen ein RSS Newsfeed für Ihren RSS Leser." #-------------------- -#: ../lib/XXV/OUTPUT/NEWS/VDR.pm:166 +#: ../lib/XXV/OUTPUT/NEWS/VDR.pm:165 msgid "The module NEWS::VDR is not active!" msgstr "Das Module NEWS::VDR ist nicht aktiv!" #-------------------- -#: ../lib/XXV/OUTPUT/NEWS/VDR.pm:179 +#: ../lib/XXV/OUTPUT/NEWS/VDR.pm:178 msgid "Message was been sent to your VDR!" msgstr "Nachricht wurde an Ihren VDR gesendet!" #-------------------- -#: ../lib/XXV/OUTPUT/NEWS/VDR.pm:181 +#: ../lib/XXV/OUTPUT/NEWS/VDR.pm:180 msgid "Message chould'nt been sent to your VDR!" msgstr "Nachricht konnte nicht an Ihren VDR gesendet werden!" #-------------------- -#: ../lib/XXV/OUTPUT/NEWS/VDR.pm:19 +#: ../lib/XXV/OUTPUT/NEWS/VDR.pm:20 msgid "This NEWS module generates messages for the VDR interface." msgstr "Dieses NEWS Modul erzeugt Nachrichten für vdr Schnittstelle." diff --git a/locale/de/LC_MESSAGES/xxv.mo b/locale/de/LC_MESSAGES/xxv.mo Binary files differindex ad3f842..74c5c47 100644 --- a/locale/de/LC_MESSAGES/xxv.mo +++ b/locale/de/LC_MESSAGES/xxv.mo |
