summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Brachold <vdr07@deltab.de>2008-08-10 14:05:26 +0000
committerAndreas Brachold <vdr07@deltab.de>2008-08-10 14:05:26 +0000
commit2e9c00e1bdd19f3fb61ce0aaede85d5f5400ef81 (patch)
treebf3734ba1dbfb0e8c5df072c55b19b62603135b5
parent11ad754da4d127a74e26894e97c232a3a98972b5 (diff)
downloadxxv-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-xbin/xxvd11
-rw-r--r--lib/Tools.pm11
-rw-r--r--lib/XXV/MODULES/AUTOTIMER.pm56
-rw-r--r--lib/XXV/MODULES/CHANNELS.pm6
-rw-r--r--lib/XXV/MODULES/EVENTS.pm339
-rw-r--r--lib/XXV/MODULES/HTTPD.pm6
-rw-r--r--lib/XXV/MODULES/RECORDS.pm4
-rw-r--r--lib/XXV/MODULES/REPORT.pm212
-rw-r--r--lib/XXV/MODULES/SHARE.pm41
-rw-r--r--lib/XXV/MODULES/STATUS.pm2
-rw-r--r--lib/XXV/MODULES/SVDRP.pm23
-rw-r--r--lib/XXV/MODULES/TIMERS.pm306
-rw-r--r--lib/XXV/OUTPUT/Html.pm8
-rw-r--r--lib/XXV/OUTPUT/NEWS/JABBER.pm76
-rw-r--r--lib/XXV/OUTPUT/NEWS/MAIL.pm207
-rw-r--r--lib/XXV/OUTPUT/NEWS/RSS.pm137
-rw-r--r--lib/XXV/OUTPUT/NEWS/VDR.pm61
-rw-r--r--locale/de.po930
-rw-r--r--locale/de/LC_MESSAGES/xxv.mobin81706 -> 81243 bytes
19 files changed, 1276 insertions, 1160 deletions
diff --git a/bin/xxvd b/bin/xxvd
index 0c4caff..7c4ac5c 100755
--- a/bin/xxvd
+++ b/bin/xxvd
@@ -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
index ad3f842..74c5c47 100644
--- a/locale/de/LC_MESSAGES/xxv.mo
+++ b/locale/de/LC_MESSAGES/xxv.mo
Binary files differ