summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Brachold <vdr07@deltab.de>2007-12-28 10:15:45 +0000
committerAndreas Brachold <vdr07@deltab.de>2007-12-28 10:15:45 +0000
commit8d11e5ef702eb4e7a0448eb43d39f28c9670954e (patch)
tree2c1ba3792fd5fac7e542be571d30fa695ed59435
parente4597ce3619f3d7772436d02d1674c28f4c03a16 (diff)
downloadxxv-8d11e5ef702eb4e7a0448eb43d39f28c9670954e.tar.gz
xxv-8d11e5ef702eb4e7a0448eb43d39f28c9670954e.tar.bz2
* New modul: MOVETIMER - This modul move timers between channels.
* rlist.tmpl : Fix typo
-rw-r--r--contrib/export-data.sql1
-rw-r--r--contrib/import-data.sql2
-rwxr-xr-xcontrib/update-xxv2
-rw-r--r--contrib/upgrade-xxv-db.sql17
-rw-r--r--lib/XXV/MODULES/MOVETIMER.pm599
-rw-r--r--lib/XXV/MODULES/RECORDS.pm6
-rw-r--r--locale/Makefile1
-rw-r--r--locale/de.po248
-rw-r--r--locale/de/LC_MESSAGES/xxv.mobin68409 -> 71143 bytes
9 files changed, 817 insertions, 59 deletions
diff --git a/contrib/export-data.sql b/contrib/export-data.sql
index 3154497..6cd0afa 100644
--- a/contrib/export-data.sql
+++ b/contrib/export-data.sql
@@ -7,5 +7,6 @@ select * INTO OUTFILE '/tmp/chronicle.sav' from CHRONICLE;
select * INTO OUTFILE '/tmp/medialib_actors.sav' from MEDIALIB_ACTORS;
select * INTO OUTFILE '/tmp/medialib_videodata.sav' from MEDIALIB_VIDEODATA;
select * INTO OUTFILE '/tmp/medialib_videogenre.sav' from MEDIALIB_VIDEOGENRE;
+select * INTO OUTFILE '/tmp/movetimer.sav' from MOVETIMER;
select * INTO OUTFILE '/tmp/user.sav' from USER;
diff --git a/contrib/import-data.sql b/contrib/import-data.sql
index 003ff05..e98ca95 100644
--- a/contrib/import-data.sql
+++ b/contrib/import-data.sql
@@ -7,6 +7,7 @@ DELETE from CHRONICLE;
DELETE from MEDIALIB_ACTORS;
DELETE from MEDIALIB_VIDEODATA;
DELETE from MEDIALIB_VIDEOGENRE;
+DELETE from MOVETIMER;
DELETE from USER;
load data infile '/tmp/autotimer.sav' into table AUTOTIMER;
@@ -14,5 +15,6 @@ load data infile '/tmp/chronicle.sav' into table CHRONICLE;
load data infile '/tmp/medialib_actors.sav' into table MEDIALIB_ACTORS;
load data infile '/tmp/medialib_videodata.sav' into table MEDIALIB_VIDEODATA;
load data infile '/tmp/medialib_videogenre.sav' into table MEDIALIB_VIDEOGENRE;
+load data infile '/tmp/movetimer.sav' into table MOVETIMER;
load data infile '/tmp/user.sav' into table USER;
diff --git a/contrib/update-xxv b/contrib/update-xxv
index 9fdd01c..59fd18d 100755
--- a/contrib/update-xxv
+++ b/contrib/update-xxv
@@ -22,7 +22,7 @@ actualVersion=26
# Specify tables to export before and import after update
#
-tables='AUTOTIMER CHRONICLE MEDIALIB_ACTORS MEDIALIB_VIDEODATA MEDIALIB_VIDEOGENRE USER'
+tables='AUTOTIMER CHRONICLE MEDIALIB_ACTORS MEDIALIB_VIDEODATA MEDIALIB_VIDEOGENRE MOVETIMER USER'
showTitle()
{
diff --git a/contrib/upgrade-xxv-db.sql b/contrib/upgrade-xxv-db.sql
index bd39e29..785a5a5 100644
--- a/contrib/upgrade-xxv-db.sql
+++ b/contrib/upgrade-xxv-db.sql
@@ -127,6 +127,21 @@ CREATE TABLE `MEDIALIB_VIDEOGENRE` (
);
--
+-- Table structure for table `MOVETIMER`
+--
+
+DROP TABLE IF EXISTS `MOVETIMER`;
+CREATE TABLE `MOVETIMER` (
+ `id` int(10) unsigned NOT NULL auto_increment,
+ `source` varchar(64) NOT NULL,
+ `destination` varchar(64) NOT NULL,
+ `move` enum('y','n','collision') default 'collision',
+ `original` enum('move','keep','copy') default 'move',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `source` (`source`)
+);
+
+--
-- Table structure for table `USER`
--
@@ -150,4 +165,4 @@ CREATE TABLE `USER` (
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
--- Dump completed on 2007-11-24 14:27:24
+-- Dump completed on 2007-12-28 10:05:06
diff --git a/lib/XXV/MODULES/MOVETIMER.pm b/lib/XXV/MODULES/MOVETIMER.pm
new file mode 100644
index 0000000..5f9ded0
--- /dev/null
+++ b/lib/XXV/MODULES/MOVETIMER.pm
@@ -0,0 +1,599 @@
+package XXV::MODULES::MOVETIMER;
+
+use strict;
+use Tools;
+use Locale::gettext;
+
+# This module method must exist for XXV
+# ------------------
+sub module {
+# ------------------
+ my $self = shift || return error('No object defined!');
+ my $args = {
+ Name => 'MOVETIMER',
+ Prereq => {
+ # 'Perl::Module' => 'Description',
+ },
+ Description => gettext('This modul move timers between channels.'),
+ Version => (split(/ /, '$Revision$'))[1],
+ Date => (split(/ /, '$Date$'))[1],
+ Author => 'Andreas Brachold',
+ LastAuthor => (split(/ /, '$Author$'))[1],
+ Preferences => {
+ active => {
+ description => gettext('Activate this service'),
+ default => 'n',
+ type => 'confirm',
+ required => gettext('This is required!'),
+ },
+ },
+ Commands => {
+ movetimer => {
+ description => gettext("Manual move timer between channels"),
+ short => 'mt',
+ callback => sub{ $self->movetimer(@_) },
+ Level => 'user',
+ DenyClass => 'tedit',
+ },
+ movetimerlist => {
+ description => gettext("List rules to move timer between channels"),
+ short => 'mtl',
+ callback => sub{ $self->movetimerlist(@_) },
+ Level => 'user',
+ DenyClass => 'tedit',
+ },
+ movetimercreate => {
+ description => gettext("Create rule to move timer between channels"),
+ short => 'mtc',
+ callback => sub{ $self->movetimercreate(@_) },
+ Level => 'user',
+ DenyClass => 'tedit',
+ },
+ movetimerdelete => {
+ description => gettext("Delete rule to move timer between channels"),
+ short => 'mtd',
+ callback => sub{ $self->movetimerdelete(@_) },
+ Level => 'user',
+ DenyClass => 'tedit',
+ },
+ movetimeredit => {
+ description => gettext("Edit rule to move timer between channels"),
+ short => 'mte',
+ callback => sub{ $self->movetimeredit(@_) },
+ Level => 'user',
+ DenyClass => 'tedit',
+ },
+ },
+ };
+ return $args;
+}
+
+# ------------------
+sub new {
+# ------------------
+ my($class, %attr) = @_;
+ my $self = {};
+ bless($self, $class);
+
+ # paths
+ $self->{paths} = delete $attr{'-paths'};
+
+ # who am I
+ $self->{MOD} = $self->module;
+
+ # all configvalues to $self without parents (important for ConfigModule)
+ map {
+ $self->{$_} = $attr{'-config'}->{$self->{MOD}->{Name}}->{$_};
+ $self->{$_} = $self->{MOD}->{Preferences}->{$_}->{default} unless($self->{$_});
+ } keys %{$self->{MOD}->{Preferences}};
+
+ # Try to use the Requirments
+ map {
+ eval "use $_";
+ return panic("\nCouldn't load modul: $_\nPlease install this modul on your system:\nperl -MCPAN -e 'install $_'") if($@);
+ } keys %{$self->{MOD}->{Prereq}};
+
+ # read the DB Handle
+ $self->{dbh} = delete $attr{'-dbh'};
+
+ # run as background process
+ #$self->{background} = delete $attr{'-background'};
+
+ # The Initprocess
+ my $erg = $self->_init or return error('Problem to initialize modul!');
+
+ return $self;
+}
+
+# ------------------
+sub _init {
+# ------------------
+ my $self = shift || return error('No object defined!');
+
+ unless($self->{dbh}) {
+ panic("Session to database is'nt connected");
+ return 0;
+ }
+
+ my $version = main::getDBVersion();
+ if(!tableUpdated($self->{dbh},'MOVETIMER',$version,0)) {
+ return 0;
+ }
+
+ # Look for table or create this table
+ $self->{dbh}->do(qq|
+ CREATE TABLE IF NOT EXISTS MOVETIMER (
+ id int unsigned auto_increment NOT NULL,
+ source varchar(64) NOT NULL,
+ destination varchar(64) NOT NULL,
+ move enum('y', 'n', 'collision') default 'collision',
+ original enum('move', 'keep', 'copy') default 'move',
+ PRIMARY KEY (id),
+ UNIQUE KEY (source)
+ ) COMMENT = '$version'
+ |);
+
+ main::after(sub{
+
+ $self->{svdrp} = main::getModule('SVDRP');
+ unless($self->{svdrp}) {
+ panic ("Couldn't get modul SVDRP");
+ return 0;
+ }
+
+ my $m = main::getModule('TIMERS');
+ $m->updated(sub{
+ return 0 if($self->{active} ne 'y');
+
+ lg 'Start timer callback to move timer!';
+ return $self->movetimer();
+
+ });
+ return 1;
+ }, "MOVETIMER: Install callback at move timer ...", 95);
+
+ return 1;
+}
+
+# ------------------
+sub movetimer {
+# ------------------
+ my $self = shift || return error('No object defined!');
+ my $watcher = shift;
+ my $console = shift;
+ my $id = shift;
+
+ my $modT = main::getModule('TIMERS') || return;
+
+ my $sth = $self->{dbh}->prepare(
+q|
+ select
+ t.Id as Id,
+ IF(t.Status & 1,'y','n') as Activ,
+ IF(t.Status & 4,'y','n') as VPS,
+ t.Status as Status,
+ t.ChannelID as ChannelID,
+ t.File as File,
+ t.aux as aux,
+ t.Day as Day,
+ t.Start as Start,
+ t.Stop as Stop,
+ t.Priority as Priority,
+ t.Lifetime as Lifetime,
+ t.Collision as Collision,
+ IF(t.Status & 1 and NOW() between t.NextStartTime and t.NextStopTime,1,0) as Running
+ from TIMERS as t,MOVETIMER as m
+ where
+ m.source = t.channelid
+ and m.move != 'm'
+ and t.Status & 1
+|);
+
+ if(!$sth->execute()) {
+ return error sprintf("Couldn't execute query: %s.",$sth->errstr);
+ }
+ my $timer = $sth->fetchall_hashref('Id');
+ return unless($timer);
+
+ $sth = $self->{dbh}->prepare("select * from MOVETIMER where move != 'n'");
+ if(!$sth->execute()) {
+ error sprintf("Couldn't execute query: %s.",$sth->errstr);
+ $console->err(sprintf(gettext("Couldn't query rules to move timer from database!")))
+ if($console);
+ }
+ my $rules = $sth->fetchall_hashref('id');
+ return unless($rules);
+
+ my $bChange = 0;
+ foreach my $tid (keys %$timer) {
+
+ my $data = $timer->{$tid};
+
+ foreach my $id (sort keys %$rules) {
+
+ my $rule = $rules->{$id};
+
+ if($data->{ChannelID} eq $rule->{source}) {
+
+ # Move timer if collision present
+ if($rule->{move} eq 'collision') {
+ # None Collision present
+ last unless($data->{Collision});
+ # Search maximum priority of collision
+ my $maxPrio = 1;
+ foreach my $tc (split(',', $data->{Collision})) {
+ my $col = (split(':', $tc))[1];
+ $maxPrio = $col
+ if($col > $maxPrio);
+ }
+ # dont solve collision until lesser own Priority
+ last if($maxPrio < $data->{Priority});
+ }
+
+ debug sprintf("Move timer %d (%s) at %s : from %s to %s",
+ $data->{Id},
+ $data->{File},
+ $data->{Day},
+ $rule->{source},
+ $rule->{destination});
+
+ if($rule->{original} eq 'keep' ) {
+
+ # Keep original timer but disable him
+ $data->{Activ} = 'n';
+ $self->modifyTimer($data,$tid);
+
+ # Create new timer
+ $data->{Activ} = 'y';
+ $data->{ChannelID} = $rule->{destination};
+ $self->modifyTimer($data,0);
+
+ } elsif($rule->{original} eq 'copy' ) {
+
+ # Copy to new timer
+ $data->{Activ} = 'y';
+ $data->{ChannelID} = $rule->{destination};
+ $self->modifyTimer($data,0);
+
+ } else {
+
+ # Edit timer direct
+ $data->{ChannelID} = $rule->{destination};
+ $self->modifyTimer($data,$tid);
+
+ }
+
+ last;
+ }
+ }
+ }
+ if($self->{svdrp}->queue_cmds('COUNT')) {
+ my $erg = $self->{svdrp}->queue_cmds("CALL"); # deqeue commands
+ $console->msg($erg, $self->{svdrp}->err)
+ if(ref $console);
+
+ $modT->readData($watcher, $console)
+ } else {
+ $console->msg(gettext("There none timer to move."))
+ if(ref $console);
+ }
+ return 1;
+}
+
+
+# ------------------
+sub modifyTimer {
+# ------------------
+ my $self = shift || return error('No object defined!');
+ my $data = shift || return error('No data defined!');
+ my $id = shift || 0;
+
+ my $status = ($data->{Activ} eq 'y' ? 1 : 0);
+ $status |= ($data->{VPS} eq 'y' ? 4 : 0);
+
+ $data->{File} =~ s/:/|/g;
+ $data->{File} =~ s/(\r|\n)//sig;
+
+ $self->{svdrp}->queue_cmds(
+ sprintf("%s %s:%s:%s:%s:%s:%s:%s:%s:%s",
+ $id ? "modt $id" : "newt",
+ $status,
+ $data->{ChannelID},
+ $data->{Day},
+ $data->{Start},
+ $data->{Stop},
+ int($data->{Priority}),
+ int($data->{Lifetime}),
+ $data->{File},
+ ($data->{aux} || '')
+ )
+ );
+}
+
+# ------------------
+# Name: movetimercreate
+# Descr: create rule to move timer.
+# Usage: $self->movetimercreate($watcher, $console, [$userdata]);
+# ------------------
+sub movetimercreate {
+ 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 $id = shift || 0;
+ my $data = shift || 0;
+
+ $self->movetimeredit($watcher, $console, $id, $data);
+}
+
+# ------------------
+# Name: movetimeredit
+# Descr: edit rule to move timer.
+# Usage: $self->movetimeredit($watcher, $console, [$id], [$userdata]);
+# ------------------
+sub movetimeredit {
+ 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 $id = shift || 0;
+ my $data = shift || 0;
+
+ my $modC = main::getModule('CHANNELS');
+
+ my $rule;
+ if($id and not ref $data) {
+ my $sth = $self->{dbh}->prepare("select * from MOVETIMER where id = ?");
+ $sth->execute($id)
+ or return $console->err(sprintf(gettext("Rule to move timer with ID '%s' does not exist in the database!"),$id));
+ $rule = $sth->fetchrow_hashref();
+
+ } elsif (ref $data eq 'HASH') {
+ $rule = $data;
+ }
+
+ my $con = $console->typ eq "CONSOLE";
+ my $questions = [
+ 'id' => {
+ typ => 'hidden',
+ def => $rule->{id} || 0,
+ },
+ 'source' => {
+ typ => 'list',
+ def => $con ? $modC->ChannelToPos($rule->{source}) : $rule->{source},
+ choices => $con ? $modC->ChannelArray('Name') : $modC->ChannelIDArray('Name'),
+ msg => gettext('Which channel should used as source?'),
+ req => gettext("This is required!"),
+ check => sub{
+ my $value = shift || return;
+
+ if(my $name = $modC->ChannelToName($value)) {
+ $data->{source} = $value;
+ return $value;
+ } elsif(my $ch = $modC->PosToChannel($value) || $modC->NameToChannel($value) ) {
+ $data->{source} = $value;
+ return $ch;
+ } elsif( ! $modC->NameToChannel($value)) {
+ return undef, sprintf(gettext("This channel '%s' does not exist!"),$value);
+ } else {
+ return undef, gettext("This is required!");
+ }
+ },
+ },
+ 'destination' => {
+ typ => 'list',
+ def => $con ? $modC->ChannelToPos($rule->{destination}) : $rule->{destination},
+ choices => $con ? $modC->ChannelArray('Name') : $modC->ChannelIDArray('Name'),
+ msg => gettext('Which channel should used as destination?'),
+ req => gettext("This is required!"),
+ check => sub{
+ my $value = shift || return;
+
+ if(my $name = $modC->ChannelToName($value)) {
+ $data->{destination} = $value;
+ return $value;
+ } elsif(my $ch = $modC->PosToChannel($value) || $modC->NameToChannel($value) ) {
+ $data->{destination} = $value;
+ return $ch;
+ } elsif( ! $modC->NameToChannel($value)) {
+ return undef, sprintf(gettext("This channel '%s' does not exist!"),$value);
+ } else {
+ return undef, gettext("This is required!");
+ }
+ },
+ },
+ 'move' => {
+ msg => gettext('When should use this rule'),
+ def => $rule->{move} || 'collision',
+ typ => 'list',
+ choices => sub {
+ my $erg = $self->_move_rules();
+ map { my $x = $_->[1]; $_->[1] = $_->[0]; $_->[0] = $x; } @$erg;
+ return @$erg;
+ },
+ },
+ 'original' => {
+ msg => gettext('How should timer handled, if changed'),
+ def => $rule->{original} || 'move',
+ typ => 'list',
+ choices => sub {
+ my $erg = $self->_original_timer_rules();
+ map { my $x = $_->[1]; $_->[1] = $_->[0]; $_->[0] = $x; } @$erg;
+ return @$erg;
+ },
+ },
+ ];
+
+ # Ask Questions
+ $data = $console->question(($id ? gettext('Edit rule to move timer')
+ : gettext('Create a new rule to move timer')), $questions, $data);
+
+ if(ref $data eq 'HASH') {
+ $self->_insert($console, $data);
+
+ $data->{id} = $self->{dbh}->selectrow_arrayref('SELECT max(id)+1 FROM MOVETIMER')->[0]
+ if(not $data->{id});
+
+ $console->message(gettext('Rule to move timer saved!'));
+ debug sprintf('%s rule to move timer is saved%s',
+ ($id ? 'New' : 'Changed'),
+ ( $console->{USER} && $console->{USER}->{Name} ? sprintf(' from user: %s', $console->{USER}->{Name}) : "" )
+ );
+
+ $self->movetimer($watcher, $console, $data->{id});
+
+ $console->redirect({url => '?cmd=movetimerlist', wait => 1})
+ if($console->typ eq 'HTML');
+ }
+ return 1;
+}
+
+# ------------------
+sub _insert {
+# ------------------
+ my $self = shift || return error('No object defined!');
+ my $console = shift || return error('No console defined!');
+ my $data = shift || return;
+
+ my $sth;
+ if(ref $data eq 'HASH') {
+ my ($names, $vals, $kenn);
+ map {
+ push(@$names, $_);
+ push(@$vals, $data->{$_}),
+ push(@$kenn, '?'),
+ } sort keys %$data;
+
+ my $sql = sprintf("REPLACE INTO MOVETIMER (%s) VALUES (%s)",
+ join(', ', @$names),
+ join(', ', @$kenn),
+ );
+ $sth = $self->{dbh}->prepare( $sql );
+ if(!$sth->execute(@$vals)) {
+ error sprintf("Couldn't execute query: %s.",$sth->errstr);
+ $console->err(sprintf(gettext("Couldn't insert rule move timer in database!")));
+ return 0;
+ }
+ } else {
+ $sth = $self->{dbh}->prepare('REPLACE INTO MOVETIMER VALUES (?,?,?,?,?)');
+ if(!$sth->execute(@$data)) {
+ error sprintf("Couldn't execute query: %s.",$sth->errstr);
+ $console->err(sprintf(gettext("Couldn't insert rule move timer in database!")));
+ return 0;
+ }
+ }
+ return 1;
+}
+
+# ------------------
+# Name: movetimerdelete
+# Descr: Routine to delete move timer rule.
+# Usage: $self->movetimerdelete($watcher, $console, $id);
+# ------------------
+sub movetimerdelete {
+ 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 $id = shift || return $console->err(gettext("Missing ID to select rules for deletion! Please use movetimerdelete 'id'"));
+
+ my @rules = reverse sort{ $a <=> $b } split(/[^0-9]/, $id);
+
+ my $sql = sprintf('DELETE FROM MOVETIMER where id in (%s)', join(',' => ('?') x @rules));
+ my $sth = $self->{dbh}->prepare($sql);
+ if(!$sth->execute(@rules)) {
+ error sprintf("Couldn't execute query: %s.",$sth->errstr);
+ $console->err(sprintf(gettext("Rule to move timer with ID '%s' does not exist in the database!"),$id));
+ return 0;
+ }
+
+ $console->message(sprintf gettext("Rule to move timer %s is deleted."), join(',', @rules));
+ debug sprintf('Rule to move timer with id "%s" is deleted%s',
+ join(',', @rules),
+ ( $console->{USER} && $console->{USER}->{Name} ? sprintf(' from user: %s', $console->{USER}->{Name}) : "" )
+ );
+ $console->redirect({url => '?cmd=movetimerlist', wait => 1})
+ if($console->typ eq 'HTML');
+}
+
+# ------------------
+# Name: movetimerlist
+# Descr: List Rules to move timer in a table display.
+# Usage: $self->movetimerlist($watcher, $console);
+# ------------------
+sub movetimerlist {
+ 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 %f = (
+ 'id' => gettext('Service'),
+ 'source' => gettext('Source'),
+ 'destination' => gettext('Destination'),
+ 'move' => gettext('Move timer'),
+ 'original' => gettext('Change original timer'),
+ );
+
+ my $sql = qq|
+ select
+ id as \'$f{'id'}\',
+ source as \'$f{'source'}\',
+ destination as \'$f{'destination'}\',
+ move as \'$f{'move'}\',
+ original as \'$f{'original'}\'
+ from
+ MOVETIMER
+ order by
+ id
+ |;
+
+ my $fields = fields($self->{dbh}, $sql);
+ my $erg = $self->{dbh}->selectall_arrayref($sql);
+
+ my %m;
+ my %d;
+ my $mr = $self->_move_rules();
+ foreach my $mrr (@{$mr}) {
+ $m{$mrr->[0]} = $mrr->[1];
+ }
+
+ my $dr = $self->_original_timer_rules();
+ foreach my $drr (@{$dr}) {
+ $d{$drr->[0]} = $drr->[1];
+ }
+
+ my $modC = main::getModule('CHANNELS');
+ map {
+ $_->[1] = $modC->ChannelToName($_->[1]);
+ $_->[2] = $modC->ChannelToName($_->[2]);
+ $_->[3] = $m{$_->[3]};
+ $_->[4] = $d{$_->[4]};
+ } @$erg;
+
+ unshift(@$erg, $fields);
+
+ $console->table($erg);
+}
+
+# ------------------
+sub _move_rules {
+# ------------------
+ my $self = shift || return error('No object defined!');
+
+ return [
+ [ 'y', gettext('Allways') ],
+ [ 'n', gettext('Newer') ],
+ [ 'collision', gettext('If collision detected') ],
+ ];
+}
+
+# ------------------
+sub _original_timer_rules {
+# ------------------
+ my $self = shift || return error('No object defined!');
+
+ return [
+ [ 'move', gettext('Move timer') ],
+ [ 'keep', gettext('Keep inactiv original timer') ],
+ [ 'copy', gettext('Copy original timer') ],
+ ];
+}
+
+1;
diff --git a/lib/XXV/MODULES/RECORDS.pm b/lib/XXV/MODULES/RECORDS.pm
index 5efb211..b66fbe3 100644
--- a/lib/XXV/MODULES/RECORDS.pm
+++ b/lib/XXV/MODULES/RECORDS.pm
@@ -201,14 +201,14 @@ sub module {
my $title = sprintf(gettext("Recording deleted: %s"), $epg->{title});
- my $description = "";
+ my $description = '';
if($epg->{subtitle}) {
$description .= sprintf(gettext("Subtitle: %s"), $epg->{subtitle});
- $description .= '\r\n';
+ $description .= "\r\n";
}
if($epg->{description}) {
$description .= sprintf(gettext("Description: %s"), $epg->{description});
- $description .= '\r\n';
+ # $description .= "\r\n";
}
main::getModule('REPORT')->news($title, $description, "display", $record->{eventid}, $event->{Level});
diff --git a/locale/Makefile b/locale/Makefile
index f9ab799..49468a9 100644
--- a/locale/Makefile
+++ b/locale/Makefile
@@ -25,6 +25,7 @@ MODULES = ../lib/XXV/MODULES/AUTOTIMER.pm \
../lib/XXV/MODULES/INTERFACE.pm \
../lib/XXV/MODULES/LOGREAD.pm \
../lib/XXV/MODULES/MEDIALIB.pm \
+ ../lib/XXV/MODULES/MOVETIMER.pm \
../lib/XXV/MODULES/MUSIC.pm \
../lib/XXV/MODULES/RECORDS.pm \
../lib/XXV/MODULES/REMOTE.pm \
diff --git a/locale/de.po b/locale/de.po
index 87ccc9e..ec08141 100644
--- a/locale/de.po
+++ b/locale/de.po
@@ -17,7 +17,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
#--------------------
-#: ../bin/xxvd:101 ../bin/xxvd:116 ../bin/xxvd:89 ../bin/xxvd:95 ../lib/XXV/MODULES/AUTOTIMER.pm:31 ../lib/XXV/MODULES/AUTOTIMER.pm:677 ../lib/XXV/MODULES/CHANNELS.pm:29 ../lib/XXV/MODULES/CHANNELS.pm:35 ../lib/XXV/MODULES/CHANNELS.pm:687 ../lib/XXV/MODULES/CHANNELS.pm:713 ../lib/XXV/MODULES/CHANNELS.pm:726 ../lib/XXV/MODULES/CHANNELS.pm:765 ../lib/XXV/MODULES/CHANNELS.pm:791 ../lib/XXV/MODULES/CHRONICLE.pm:28 ../lib/XXV/MODULES/EPG.pm:36 ../lib/XXV/MODULES/EPG.pm:42 ../lib/XXV/MODULES/EPG.pm:48 ../lib/XXV/MODULES/EVENTS.pm:34 ../lib/XXV/MODULES/GRAB.pm:30 ../lib/XXV/MODULES/GRAB.pm:36 ../lib/XXV/MODULES/HTTPD.pm:58 ../lib/XXV/MODULES/HTTPD.pm:64 ../lib/XXV/MODULES/HTTPD.pm:70 ../lib/XXV/MODULES/HTTPD.pm:76 ../lib/XXV/MODULES/HTTPD.pm:82 ../lib/XXV/MODULES/HTTPD.pm:89 ../lib/XXV/MODULES/INTERFACE.pm:33 ../lib/XXV/MODULES/INTERFACE.pm:39 ../lib/XXV/MODULES/INTERFACE.pm:45 ../lib/XXV/MODULES/LOGREAD.pm:32 ../lib/XXV/MODULES/LOGREAD.pm:38 ../lib/XXV/MODULES/LOGREAD.pm:44 ../lib/XXV/MODULES/LOGREAD.pm:50 ../lib/XXV/MODULES/MEDIALIB.pm:34 ../lib/XXV/MODULES/MEDIALIB.pm:40 ../lib/XXV/MODULES/MEDIALIB.pm:46 ../lib/XXV/MODULES/MEDIALIB.pm:52 ../lib/XXV/MODULES/MEDIALIB.pm:58 ../lib/XXV/MODULES/MUSIC.pm:40 ../lib/XXV/MODULES/MUSIC.pm:46 ../lib/XXV/MODULES/MUSIC.pm:52 ../lib/XXV/MODULES/MUSIC.pm:58 ../lib/XXV/MODULES/MUSIC.pm:69 ../lib/XXV/MODULES/MUSIC.pm:75 ../lib/XXV/MODULES/RECORDS.pm:1792 ../lib/XXV/MODULES/RECORDS.pm:1806 ../lib/XXV/MODULES/RECORDS.pm:1820 ../lib/XXV/MODULES/RECORDS.pm:1839 ../lib/XXV/MODULES/RECORDS.pm:2389 ../lib/XXV/MODULES/RECORDS.pm:2401 ../lib/XXV/MODULES/RECORDS.pm:40 ../lib/XXV/MODULES/RECORDS.pm:46 ../lib/XXV/MODULES/RECORDS.pm:52 ../lib/XXV/MODULES/RECORDS.pm:58 ../lib/XXV/MODULES/RECORDS.pm:64 ../lib/XXV/MODULES/RECORDS.pm:76 ../lib/XXV/MODULES/RECORDS.pm:92 ../lib/XXV/MODULES/REMOTE.pm:28 ../lib/XXV/MODULES/REMOTE.pm:34 ../lib/XXV/MODULES/REMOTE.pm:40 ../lib/XXV/MODULES/REPORT.pm:30 ../lib/XXV/MODULES/REPORT.pm:46 ../lib/XXV/MODULES/ROBOT.pm:29 ../lib/XXV/MODULES/SHARE.pm:53 ../lib/XXV/MODULES/SHARE.pm:70 ../lib/XXV/MODULES/SHARE.pm:76 ../lib/XXV/MODULES/STATUS.pm:32 ../lib/XXV/MODULES/STATUS.pm:38 ../lib/XXV/MODULES/STATUS.pm:43 ../lib/XXV/MODULES/STATUS.pm:49 ../lib/XXV/MODULES/STREAM.pm:32 ../lib/XXV/MODULES/SVDRP.pm:30 ../lib/XXV/MODULES/SVDRP.pm:36 ../lib/XXV/MODULES/SVDRP.pm:42 ../lib/XXV/MODULES/TELNET.pm:29 ../lib/XXV/MODULES/TELNET.pm:35 ../lib/XXV/MODULES/TELNET.pm:41 ../lib/XXV/MODULES/TELNET.pm:47 ../lib/XXV/MODULES/TIMERS.pm:29 ../lib/XXV/MODULES/TIMERS.pm:641 ../lib/XXV/MODULES/TIMERS.pm:654 ../lib/XXV/MODULES/TIMERS.pm:674 ../lib/XXV/MODULES/TIMERS.pm:770 ../lib/XXV/MODULES/USER.pm:268 ../lib/XXV/MODULES/USER.pm:360 ../lib/XXV/MODULES/USER.pm:366 ../lib/XXV/MODULES/USER.pm:391 ../lib/XXV/MODULES/USER.pm:68 ../lib/XXV/MODULES/VTX.pm:33 ../lib/XXV/MODULES/VTX.pm:39 ../lib/XXV/MODULES/WAPD.pm:43 ../lib/XXV/MODULES/WAPD.pm:49 ../lib/XXV/MODULES/WAPD.pm:55 ../lib/XXV/MODULES/WAPD.pm:61 ../lib/XXV/MODULES/WAPD.pm:67 ../lib/XXV/MODULES/WAPD.pm:74 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:100 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:118 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:124 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:130 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:70 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:107 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:34 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:64 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:82 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:96 ../lib/XXV/OUTPUT/NEWS/RSS.pm:33 ../lib/XXV/OUTPUT/NEWS/RSS.pm:63 ../lib/XXV/OUTPUT/NEWS/VDR.pm:30 ../lib/XXV/OUTPUT/NEWS/VDR.pm:60
+#: ../bin/xxvd:101 ../bin/xxvd:116 ../bin/xxvd:89 ../bin/xxvd:95 ../lib/XXV/MODULES/AUTOTIMER.pm:31 ../lib/XXV/MODULES/AUTOTIMER.pm:677 ../lib/XXV/MODULES/CHANNELS.pm:29 ../lib/XXV/MODULES/CHANNELS.pm:35 ../lib/XXV/MODULES/CHANNELS.pm:687 ../lib/XXV/MODULES/CHANNELS.pm:713 ../lib/XXV/MODULES/CHANNELS.pm:726 ../lib/XXV/MODULES/CHANNELS.pm:765 ../lib/XXV/MODULES/CHANNELS.pm:791 ../lib/XXV/MODULES/CHRONICLE.pm:28 ../lib/XXV/MODULES/EPG.pm:36 ../lib/XXV/MODULES/EPG.pm:42 ../lib/XXV/MODULES/EPG.pm:48 ../lib/XXV/MODULES/EVENTS.pm:34 ../lib/XXV/MODULES/GRAB.pm:30 ../lib/XXV/MODULES/GRAB.pm:36 ../lib/XXV/MODULES/HTTPD.pm:58 ../lib/XXV/MODULES/HTTPD.pm:64 ../lib/XXV/MODULES/HTTPD.pm:70 ../lib/XXV/MODULES/HTTPD.pm:76 ../lib/XXV/MODULES/HTTPD.pm:82 ../lib/XXV/MODULES/HTTPD.pm:89 ../lib/XXV/MODULES/INTERFACE.pm:33 ../lib/XXV/MODULES/INTERFACE.pm:39 ../lib/XXV/MODULES/INTERFACE.pm:45 ../lib/XXV/MODULES/LOGREAD.pm:32 ../lib/XXV/MODULES/LOGREAD.pm:38 ../lib/XXV/MODULES/LOGREAD.pm:44 ../lib/XXV/MODULES/LOGREAD.pm:50 ../lib/XXV/MODULES/MEDIALIB.pm:34 ../lib/XXV/MODULES/MEDIALIB.pm:40 ../lib/XXV/MODULES/MEDIALIB.pm:46 ../lib/XXV/MODULES/MEDIALIB.pm:52 ../lib/XXV/MODULES/MEDIALIB.pm:58 ../lib/XXV/MODULES/MOVETIMER.pm:27 ../lib/XXV/MODULES/MOVETIMER.pm:364 ../lib/XXV/MODULES/MOVETIMER.pm:377 ../lib/XXV/MODULES/MOVETIMER.pm:386 ../lib/XXV/MODULES/MOVETIMER.pm:399 ../lib/XXV/MODULES/MUSIC.pm:40 ../lib/XXV/MODULES/MUSIC.pm:46 ../lib/XXV/MODULES/MUSIC.pm:52 ../lib/XXV/MODULES/MUSIC.pm:58 ../lib/XXV/MODULES/MUSIC.pm:69 ../lib/XXV/MODULES/MUSIC.pm:75 ../lib/XXV/MODULES/RECORDS.pm:1793 ../lib/XXV/MODULES/RECORDS.pm:1807 ../lib/XXV/MODULES/RECORDS.pm:1821 ../lib/XXV/MODULES/RECORDS.pm:1840 ../lib/XXV/MODULES/RECORDS.pm:2390 ../lib/XXV/MODULES/RECORDS.pm:2402 ../lib/XXV/MODULES/RECORDS.pm:40 ../lib/XXV/MODULES/RECORDS.pm:46 ../lib/XXV/MODULES/RECORDS.pm:52 ../lib/XXV/MODULES/RECORDS.pm:58 ../lib/XXV/MODULES/RECORDS.pm:64 ../lib/XXV/MODULES/RECORDS.pm:76 ../lib/XXV/MODULES/RECORDS.pm:92 ../lib/XXV/MODULES/REMOTE.pm:28 ../lib/XXV/MODULES/REMOTE.pm:34 ../lib/XXV/MODULES/REMOTE.pm:40 ../lib/XXV/MODULES/REPORT.pm:30 ../lib/XXV/MODULES/REPORT.pm:46 ../lib/XXV/MODULES/ROBOT.pm:29 ../lib/XXV/MODULES/SHARE.pm:53 ../lib/XXV/MODULES/SHARE.pm:70 ../lib/XXV/MODULES/SHARE.pm:76 ../lib/XXV/MODULES/STATUS.pm:32 ../lib/XXV/MODULES/STATUS.pm:38 ../lib/XXV/MODULES/STATUS.pm:43 ../lib/XXV/MODULES/STATUS.pm:49 ../lib/XXV/MODULES/STREAM.pm:32 ../lib/XXV/MODULES/SVDRP.pm:30 ../lib/XXV/MODULES/SVDRP.pm:36 ../lib/XXV/MODULES/SVDRP.pm:42 ../lib/XXV/MODULES/TELNET.pm:29 ../lib/XXV/MODULES/TELNET.pm:35 ../lib/XXV/MODULES/TELNET.pm:41 ../lib/XXV/MODULES/TELNET.pm:47 ../lib/XXV/MODULES/TIMERS.pm:29 ../lib/XXV/MODULES/TIMERS.pm:641 ../lib/XXV/MODULES/TIMERS.pm:654 ../lib/XXV/MODULES/TIMERS.pm:674 ../lib/XXV/MODULES/TIMERS.pm:770 ../lib/XXV/MODULES/USER.pm:268 ../lib/XXV/MODULES/USER.pm:360 ../lib/XXV/MODULES/USER.pm:366 ../lib/XXV/MODULES/USER.pm:391 ../lib/XXV/MODULES/USER.pm:68 ../lib/XXV/MODULES/VTX.pm:33 ../lib/XXV/MODULES/VTX.pm:39 ../lib/XXV/MODULES/WAPD.pm:43 ../lib/XXV/MODULES/WAPD.pm:49 ../lib/XXV/MODULES/WAPD.pm:55 ../lib/XXV/MODULES/WAPD.pm:61 ../lib/XXV/MODULES/WAPD.pm:67 ../lib/XXV/MODULES/WAPD.pm:74 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:100 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:118 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:124 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:130 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:70 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:107 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:34 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:64 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:82 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:96 ../lib/XXV/OUTPUT/NEWS/RSS.pm:33 ../lib/XXV/OUTPUT/NEWS/RSS.pm:63 ../lib/XXV/OUTPUT/NEWS/VDR.pm:30 ../lib/XXV/OUTPUT/NEWS/VDR.pm:60
msgid "This is required!"
msgstr "Das ist erforderlich!"
@@ -277,12 +277,12 @@ msgid "Percent"
msgstr "Prozent"
#--------------------
-#: ../html/display.tmpl:25 ../html/rdisplay.tmpl:149 ../html/search.tmpl:54 ../html/topten.tmpl:32 ../lib/XXV/MODULES/AUTOTIMER.pm:436 ../lib/XXV/MODULES/CHRONICLE.pm:168 ../lib/XXV/MODULES/CHRONICLE.pm:207 ../lib/XXV/MODULES/EPG.pm:749 ../lib/XXV/MODULES/EPG.pm:849 ../lib/XXV/MODULES/EPG.pm:923 ../lib/XXV/MODULES/RECORDS.pm:1830 ../lib/XXV/MODULES/TIMERS.pm:1137
+#: ../html/display.tmpl:25 ../html/rdisplay.tmpl:149 ../html/search.tmpl:54 ../html/topten.tmpl:32 ../lib/XXV/MODULES/AUTOTIMER.pm:436 ../lib/XXV/MODULES/CHRONICLE.pm:168 ../lib/XXV/MODULES/CHRONICLE.pm:207 ../lib/XXV/MODULES/EPG.pm:749 ../lib/XXV/MODULES/EPG.pm:849 ../lib/XXV/MODULES/EPG.pm:923 ../lib/XXV/MODULES/RECORDS.pm:1831 ../lib/XXV/MODULES/TIMERS.pm:1137
msgid "Channel"
msgstr "Kanal"
#--------------------
-#: ../html/display.tmpl:27 ../html/topten.tmpl:32 ../lib/XXV/MODULES/AUTOTIMER.pm:1064 ../lib/XXV/MODULES/CHRONICLE.pm:165 ../lib/XXV/MODULES/CHRONICLE.pm:204 ../lib/XXV/MODULES/EPG.pm:746 ../lib/XXV/MODULES/EPG.pm:847 ../lib/XXV/MODULES/EPG.pm:921 ../lib/XXV/MODULES/MUSIC.pm:607 ../lib/XXV/MODULES/RECORDS.pm:1476 ../lib/XXV/MODULES/RECORDS.pm:1551 ../lib/XXV/MODULES/TIMERS.pm:1134 ../lib/XXV/MODULES/USER.pm:525
+#: ../html/display.tmpl:27 ../html/topten.tmpl:32 ../lib/XXV/MODULES/AUTOTIMER.pm:1064 ../lib/XXV/MODULES/CHRONICLE.pm:165 ../lib/XXV/MODULES/CHRONICLE.pm:204 ../lib/XXV/MODULES/EPG.pm:746 ../lib/XXV/MODULES/EPG.pm:847 ../lib/XXV/MODULES/EPG.pm:921 ../lib/XXV/MODULES/MOVETIMER.pm:527 ../lib/XXV/MODULES/MUSIC.pm:607 ../lib/XXV/MODULES/RECORDS.pm:1477 ../lib/XXV/MODULES/RECORDS.pm:1552 ../lib/XXV/MODULES/TIMERS.pm:1134 ../lib/XXV/MODULES/USER.pm:525
msgid "Service"
msgstr "Service"
@@ -312,7 +312,7 @@ msgid "Search with OFDb"
msgstr "Suche mit OFDb"
#--------------------
-#: ../html/display.tmpl:60 ../lib/XXV/MODULES/AUTOTIMER.pm:445 ../lib/XXV/MODULES/AUTOTIMER.pm:639 ../lib/XXV/MODULES/EPG.pm:752 ../lib/XXV/MODULES/RECORDS.pm:1844 ../lib/XXV/MODULES/TIMERS.pm:783 ../lib/XXV/OUTPUT/Console.pm:169
+#: ../html/display.tmpl:60 ../lib/XXV/MODULES/AUTOTIMER.pm:445 ../lib/XXV/MODULES/AUTOTIMER.pm:639 ../lib/XXV/MODULES/EPG.pm:752 ../lib/XXV/MODULES/RECORDS.pm:1845 ../lib/XXV/MODULES/TIMERS.pm:783 ../lib/XXV/OUTPUT/Console.pm:169
msgid "Description"
msgstr "Beschreibung"
@@ -644,7 +644,7 @@ msgid "Save"
msgstr "Speichern"
#--------------------
-#: ../html/mlcopy.tmpl:23 ../html/mledit.tmpl:23 ../html/mlimport.tmpl:23 ../html/rlist.tmpl:241 ../html/rsearch.tmpl:241 ../html/topten.tmpl:32 ../lib/XXV/MODULES/AUTOTIMER.pm:434 ../lib/XXV/MODULES/AUTOTIMER.pm:637 ../lib/XXV/MODULES/CHRONICLE.pm:166 ../lib/XXV/MODULES/CHRONICLE.pm:205 ../lib/XXV/MODULES/EPG.pm:747 ../lib/XXV/MODULES/EPG.pm:848 ../lib/XXV/MODULES/EPG.pm:922 ../lib/XXV/MODULES/MEDIALIB.pm:1300 ../lib/XXV/MODULES/MUSIC.pm:610 ../lib/XXV/MODULES/RECORDS.pm:1477 ../lib/XXV/MODULES/RECORDS.pm:1552 ../lib/XXV/MODULES/TIMERS.pm:1140
+#: ../html/mlcopy.tmpl:23 ../html/mledit.tmpl:23 ../html/mlimport.tmpl:23 ../html/rlist.tmpl:241 ../html/rsearch.tmpl:241 ../html/topten.tmpl:32 ../lib/XXV/MODULES/AUTOTIMER.pm:434 ../lib/XXV/MODULES/AUTOTIMER.pm:637 ../lib/XXV/MODULES/CHRONICLE.pm:166 ../lib/XXV/MODULES/CHRONICLE.pm:205 ../lib/XXV/MODULES/EPG.pm:747 ../lib/XXV/MODULES/EPG.pm:848 ../lib/XXV/MODULES/EPG.pm:922 ../lib/XXV/MODULES/MEDIALIB.pm:1300 ../lib/XXV/MODULES/MUSIC.pm:610 ../lib/XXV/MODULES/RECORDS.pm:1478 ../lib/XXV/MODULES/RECORDS.pm:1553 ../lib/XXV/MODULES/TIMERS.pm:1140
msgid "Title"
msgstr "Titel"
@@ -654,7 +654,7 @@ msgid "Search at"
msgstr "Suche bei"
#--------------------
-#: ../html/mlcopy.tmpl:36 ../html/mledit.tmpl:36 ../html/mlimport.tmpl:36 ../html/rlist.tmpl:242 ../html/rsearch.tmpl:242 ../lib/XXV/MODULES/AUTOTIMER.pm:435 ../lib/XXV/MODULES/AUTOTIMER.pm:638 ../lib/XXV/MODULES/CHRONICLE.pm:167 ../lib/XXV/MODULES/CHRONICLE.pm:206 ../lib/XXV/MODULES/EPG.pm:748 ../lib/XXV/MODULES/MEDIALIB.pm:1301 ../lib/XXV/MODULES/RECORDS.pm:1478 ../lib/XXV/MODULES/RECORDS.pm:1553
+#: ../html/mlcopy.tmpl:36 ../html/mledit.tmpl:36 ../html/mlimport.tmpl:36 ../html/rlist.tmpl:242 ../html/rsearch.tmpl:242 ../lib/XXV/MODULES/AUTOTIMER.pm:435 ../lib/XXV/MODULES/AUTOTIMER.pm:638 ../lib/XXV/MODULES/CHRONICLE.pm:167 ../lib/XXV/MODULES/CHRONICLE.pm:206 ../lib/XXV/MODULES/EPG.pm:748 ../lib/XXV/MODULES/MEDIALIB.pm:1301 ../lib/XXV/MODULES/RECORDS.pm:1479 ../lib/XXV/MODULES/RECORDS.pm:1554
msgid "Subtitle"
msgstr "Serientitel"
@@ -944,7 +944,7 @@ msgid "Priority"
msgstr "Priorität"
#--------------------
-#: ../html/rdisplay.tmpl:63 ../html/rlist.tmpl:103 ../html/rlist.tmpl:244 ../html/rsearch.tmpl:103 ../html/rsearch.tmpl:244 ../lib/XXV/MODULES/RECORDS.pm:1479 ../lib/XXV/MODULES/RECORDS.pm:1554
+#: ../html/rdisplay.tmpl:63 ../html/rlist.tmpl:103 ../html/rlist.tmpl:244 ../html/rsearch.tmpl:103 ../html/rsearch.tmpl:244 ../lib/XXV/MODULES/RECORDS.pm:1480 ../lib/XXV/MODULES/RECORDS.pm:1555
msgid "Duration"
msgstr "Dauer"
@@ -969,7 +969,7 @@ msgid "Cut recording"
msgstr "Aufnahme schneiden"
#--------------------
-#: ../html/rdisplay.tmpl:84 ../lib/XXV/MODULES/RECORDS.pm:1862
+#: ../html/rdisplay.tmpl:84 ../lib/XXV/MODULES/RECORDS.pm:1863
msgid "Edit recording"
msgstr "Aufnahme bearbeiten"
@@ -1436,7 +1436,7 @@ 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:28 ../lib/XXV/MODULES/CHRONICLE.pm:25 ../lib/XXV/MODULES/EVENTS.pm:31 ../lib/XXV/MODULES/HTTPD.pm:55 ../lib/XXV/MODULES/INTERFACE.pm:30 ../lib/XXV/MODULES/LOGREAD.pm:29 ../lib/XXV/MODULES/MEDIALIB.pm:31 ../lib/XXV/MODULES/MUSIC.pm:37 ../lib/XXV/MODULES/REMOTE.pm:25 ../lib/XXV/MODULES/REPORT.pm:27 ../lib/XXV/MODULES/ROBOT.pm:26 ../lib/XXV/MODULES/SHARE.pm:50 ../lib/XXV/MODULES/STATUS.pm:29 ../lib/XXV/MODULES/TELNET.pm:26 ../lib/XXV/MODULES/VTX.pm:25 ../lib/XXV/MODULES/WAPD.pm:40 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:67 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:31 ../lib/XXV/OUTPUT/NEWS/RSS.pm:30 ../lib/XXV/OUTPUT/NEWS/VDR.pm:27
+#: ../lib/XXV/MODULES/AUTOTIMER.pm:28 ../lib/XXV/MODULES/CHRONICLE.pm:25 ../lib/XXV/MODULES/EVENTS.pm:31 ../lib/XXV/MODULES/HTTPD.pm:55 ../lib/XXV/MODULES/INTERFACE.pm:30 ../lib/XXV/MODULES/LOGREAD.pm:29 ../lib/XXV/MODULES/MEDIALIB.pm:31 ../lib/XXV/MODULES/MOVETIMER.pm:24 ../lib/XXV/MODULES/MUSIC.pm:37 ../lib/XXV/MODULES/REMOTE.pm:25 ../lib/XXV/MODULES/REPORT.pm:27 ../lib/XXV/MODULES/ROBOT.pm:26 ../lib/XXV/MODULES/SHARE.pm:50 ../lib/XXV/MODULES/STATUS.pm:29 ../lib/XXV/MODULES/TELNET.pm:26 ../lib/XXV/MODULES/VTX.pm:25 ../lib/XXV/MODULES/WAPD.pm:40 ../lib/XXV/OUTPUT/NEWS/JABBER.pm:67 ../lib/XXV/OUTPUT/NEWS/MAIL.pm:31 ../lib/XXV/OUTPUT/NEWS/RSS.pm:30 ../lib/XXV/OUTPUT/NEWS/VDR.pm:27
msgid "Activate this service"
msgstr "Aktiviere diesen Dienst"
@@ -1666,7 +1666,7 @@ msgid "Buffer time in minutes before the scheduled start of a recording"
msgstr "Pufferzeit in Minuten, vor dem zeitlichen Anfang der Aufnahme."
#--------------------
-#: ../lib/XXV/MODULES/AUTOTIMER.pm:847 ../lib/XXV/MODULES/AUTOTIMER.pm:861 ../lib/XXV/MODULES/AUTOTIMER.pm:874 ../lib/XXV/MODULES/AUTOTIMER.pm:890 ../lib/XXV/MODULES/AUTOTIMER.pm:906 ../lib/XXV/MODULES/CHANNELS.pm:669 ../lib/XXV/MODULES/CHANNELS.pm:700 ../lib/XXV/MODULES/CHANNELS.pm:739 ../lib/XXV/MODULES/CHANNELS.pm:752 ../lib/XXV/MODULES/CHANNELS.pm:778 ../lib/XXV/MODULES/CHANNELS.pm:804 ../lib/XXV/MODULES/CHANNELS.pm:817 ../lib/XXV/MODULES/CHANNELS.pm:830 ../lib/XXV/MODULES/CHANNELS.pm:843 ../lib/XXV/MODULES/RECORDS.pm:1803 ../lib/XXV/MODULES/RECORDS.pm:1817 ../lib/XXV/MODULES/TIMERS.pm:747 ../lib/XXV/MODULES/TIMERS.pm:763
+#: ../lib/XXV/MODULES/AUTOTIMER.pm:847 ../lib/XXV/MODULES/AUTOTIMER.pm:861 ../lib/XXV/MODULES/AUTOTIMER.pm:874 ../lib/XXV/MODULES/AUTOTIMER.pm:890 ../lib/XXV/MODULES/AUTOTIMER.pm:906 ../lib/XXV/MODULES/CHANNELS.pm:669 ../lib/XXV/MODULES/CHANNELS.pm:700 ../lib/XXV/MODULES/CHANNELS.pm:739 ../lib/XXV/MODULES/CHANNELS.pm:752 ../lib/XXV/MODULES/CHANNELS.pm:778 ../lib/XXV/MODULES/CHANNELS.pm:804 ../lib/XXV/MODULES/CHANNELS.pm:817 ../lib/XXV/MODULES/CHANNELS.pm:830 ../lib/XXV/MODULES/CHANNELS.pm:843 ../lib/XXV/MODULES/RECORDS.pm:1804 ../lib/XXV/MODULES/RECORDS.pm:1818 ../lib/XXV/MODULES/TIMERS.pm:747 ../lib/XXV/MODULES/TIMERS.pm:763
msgid "Value incorrect!"
msgstr "Der Wert ist nicht korrekt!"
@@ -1686,7 +1686,7 @@ msgid "Start autotimer search."
msgstr "Autotimersuche durchführen"
#--------------------
-#: ../lib/XXV/MODULES/AUTOTIMER.pm:880 ../lib/XXV/MODULES/RECORDS.pm:1810 ../lib/XXV/MODULES/TIMERS.pm:737
+#: ../lib/XXV/MODULES/AUTOTIMER.pm:880 ../lib/XXV/MODULES/RECORDS.pm:1811 ../lib/XXV/MODULES/TIMERS.pm:737
msgid "Priority (%d ... %d)"
msgstr "Priorität (%d ... %d)"
@@ -1696,7 +1696,7 @@ msgid "Sorry, but the maximum priority is limited to %d!"
msgstr "Entschuldigung, aber die maximale Priorität ist auf %d begrenzt!"
#--------------------
-#: ../lib/XXV/MODULES/AUTOTIMER.pm:896 ../lib/XXV/MODULES/RECORDS.pm:1796 ../lib/XXV/MODULES/TIMERS.pm:753
+#: ../lib/XXV/MODULES/AUTOTIMER.pm:896 ../lib/XXV/MODULES/RECORDS.pm:1797 ../lib/XXV/MODULES/TIMERS.pm:753
msgid "Lifetime (%d ... %d)"
msgstr "Lebenszeit (%d ... %d)"
@@ -2625,6 +2625,151 @@ msgid "Create new media"
msgstr "Erstelle neues Medium"
#--------------------
+#: ../lib/XXV/MODULES/MOVETIMER.pm:17
+msgid "This modul move timers between channels."
+msgstr "Diese Modul verschiebt Timer zwischen Kanälen."
+
+#--------------------
+#: ../lib/XXV/MODULES/MOVETIMER.pm:201
+msgid "Couldn't query rules to move timer from database!"
+msgstr "Konnte Regel zum Verschieben der Timer nicht aus der Datenbank abfragen!"
+
+#--------------------
+#: ../lib/XXV/MODULES/MOVETIMER.pm:277
+msgid "There none timer to move."
+msgstr "Es wurden keine Timer verschoben."
+
+#--------------------
+#: ../lib/XXV/MODULES/MOVETIMER.pm:32
+msgid "Manual move timer between channels"
+msgstr "Manuelles Verschieben der Timer zwischen den Kanälen"
+
+#--------------------
+#: ../lib/XXV/MODULES/MOVETIMER.pm:346 ../lib/XXV/MODULES/MOVETIMER.pm:503
+msgid "Rule to move timer with ID '%s' does not exist in the database!"
+msgstr "Regel zum Verschieben der Timer mit ID '%s' exisitert nicht in der Datenbank!"
+
+#--------------------
+#: ../lib/XXV/MODULES/MOVETIMER.pm:363
+msgid "Which channel should used as source?"
+msgstr "Welcher Kanal soll als Quelle verwendet werden?"
+
+#--------------------
+#: ../lib/XXV/MODULES/MOVETIMER.pm:375 ../lib/XXV/MODULES/MOVETIMER.pm:397 ../lib/XXV/MODULES/RECORDS.pm:1838 ../lib/XXV/MODULES/TIMERS.pm:652
+msgid "This channel '%s' does not exist!"
+msgstr "Dieser Kanal '%s' existiert nicht in der Datenbank!"
+
+#--------------------
+#: ../lib/XXV/MODULES/MOVETIMER.pm:385
+msgid "Which channel should used as destination?"
+msgstr "Welcher Kanal soll als Ziel verwendet werden?"
+
+#--------------------
+#: ../lib/XXV/MODULES/MOVETIMER.pm:39
+msgid "List rules to move timer between channels"
+msgstr "Zeige Regel zum Verschieben von Timer zwischen Kanälen"
+
+#--------------------
+#: ../lib/XXV/MODULES/MOVETIMER.pm:404
+msgid "When should use this rule"
+msgstr "Wann soll die Regel verwendet werden"
+
+#--------------------
+#: ../lib/XXV/MODULES/MOVETIMER.pm:414
+msgid "How should timer handled, if changed"
+msgstr "Wie sollen Timer behandelt bei Änderungen behandelt werden"
+
+#--------------------
+#: ../lib/XXV/MODULES/MOVETIMER.pm:426
+msgid "Edit rule to move timer"
+msgstr "Regel zum Verschieben von Timern bearbeiten"
+
+#--------------------
+#: ../lib/XXV/MODULES/MOVETIMER.pm:427
+msgid "Create a new rule to move timer"
+msgstr "Erzeuge eine neue Regel zum Verschieben von Timern"
+
+#--------------------
+#: ../lib/XXV/MODULES/MOVETIMER.pm:435
+msgid "Rule to move timer saved!"
+msgstr "Regel zum Verschieben von Timern gespeichert!"
+
+#--------------------
+#: ../lib/XXV/MODULES/MOVETIMER.pm:46
+msgid "Create rule to move timer between channels"
+msgstr "Erzeuge eine neue Regel zum Verschieben von Timern zwischen Kanälen"
+
+#--------------------
+#: ../lib/XXV/MODULES/MOVETIMER.pm:472 ../lib/XXV/MODULES/MOVETIMER.pm:479
+msgid "Couldn't insert rule move timer in database!"
+msgstr "Regel zum Verschieben von Timern konnte nicht in Datenbank eingefügt werden!"
+
+#--------------------
+#: ../lib/XXV/MODULES/MOVETIMER.pm:495
+msgid "Missing ID to select rules for deletion! Please use movetimerdelete 'id'"
+msgstr "Benötige ID zum Auswählen der Regel für die Löschung! Bitte verwende movetimerdelete 'id'"
+
+#--------------------
+#: ../lib/XXV/MODULES/MOVETIMER.pm:507
+msgid "Rule to move timer %s is deleted."
+msgstr "Regel zum Verschieben der Timer %s wurde gelöscht."
+
+#--------------------
+#: ../lib/XXV/MODULES/MOVETIMER.pm:528
+msgid "Source"
+msgstr "Quelle"
+
+#--------------------
+#: ../lib/XXV/MODULES/MOVETIMER.pm:529
+msgid "Destination"
+msgstr "Ziel"
+
+#--------------------
+#: ../lib/XXV/MODULES/MOVETIMER.pm:53
+msgid "Delete rule to move timer between channels"
+msgstr "Lösche Regel zum Verschieben von Timern zwischen Kanälen"
+
+#--------------------
+#: ../lib/XXV/MODULES/MOVETIMER.pm:530 ../lib/XXV/MODULES/MOVETIMER.pm:593
+msgid "Move timer"
+msgstr "Verschiebe Timer"
+
+#--------------------
+#: ../lib/XXV/MODULES/MOVETIMER.pm:531
+msgid "Change original timer"
+msgstr "Ändere original Timer"
+
+#--------------------
+#: ../lib/XXV/MODULES/MOVETIMER.pm:581
+msgid "Allways"
+msgstr "Immer"
+
+#--------------------
+#: ../lib/XXV/MODULES/MOVETIMER.pm:582
+msgid "Newer"
+msgstr "Niemals"
+
+#--------------------
+#: ../lib/XXV/MODULES/MOVETIMER.pm:583
+msgid "If collision detected"
+msgstr "Wenn eine Kollision erkannt wurde"
+
+#--------------------
+#: ../lib/XXV/MODULES/MOVETIMER.pm:594
+msgid "Keep inactiv original timer"
+msgstr "Behalte den inaktiven original Timer"
+
+#--------------------
+#: ../lib/XXV/MODULES/MOVETIMER.pm:595
+msgid "Copy original timer"
+msgstr "Kopiere den original Timer"
+
+#--------------------
+#: ../lib/XXV/MODULES/MOVETIMER.pm:60
+msgid "Edit rule to move timer between channels"
+msgstr "Bearbeite Regel zum Verschieben von Timern zwischen Kanälen"
+
+#--------------------
#: ../lib/XXV/MODULES/MUSIC.pm:102
msgid "Download album covers."
msgstr "Plattenhüllen herunterladen."
@@ -2805,17 +2950,17 @@ msgid "Delete recording 'rid'"
msgstr "Aufnahme löschen 'rid'"
#--------------------
-#: ../lib/XXV/MODULES/RECORDS.pm:1334
+#: ../lib/XXV/MODULES/RECORDS.pm:1335
msgid "No recording defined for display! Please use rdisplay 'rid'"
msgstr "Keine Aufnahme zum Anzeigen definiert! Bitte verwende rdisplay 'rid'"
#--------------------
-#: ../lib/XXV/MODULES/RECORDS.pm:1372 ../lib/XXV/MODULES/RECORDS.pm:1404 ../lib/XXV/MODULES/RECORDS.pm:1431 ../lib/XXV/MODULES/RECORDS.pm:1684 ../lib/XXV/MODULES/RECORDS.pm:1773 ../lib/XXV/MODULES/RECORDS.pm:2029
+#: ../lib/XXV/MODULES/RECORDS.pm:1373 ../lib/XXV/MODULES/RECORDS.pm:1405 ../lib/XXV/MODULES/RECORDS.pm:1432 ../lib/XXV/MODULES/RECORDS.pm:1685 ../lib/XXV/MODULES/RECORDS.pm:1774 ../lib/XXV/MODULES/RECORDS.pm:2030
msgid "Recording '%s' does not exist in the database!"
msgstr "Aufnahme '%s' existiert nicht in der Datenbank!"
#--------------------
-#: ../lib/XXV/MODULES/RECORDS.pm:1397 ../lib/XXV/MODULES/RECORDS.pm:1424
+#: ../lib/XXV/MODULES/RECORDS.pm:1398 ../lib/XXV/MODULES/RECORDS.pm:1425
msgid "No recording defined for playback! Please use rplay 'rid'."
msgstr "Keine Aufnahme zum Wiedergabe definiert! Bitte verwende rplay 'rid'"
@@ -2835,7 +2980,7 @@ msgid "Play recording 'rid' in the VDR."
msgstr "Spiele Aufnahme 'rid' im VDR"
#--------------------
-#: ../lib/XXV/MODULES/RECORDS.pm:1617
+#: ../lib/XXV/MODULES/RECORDS.pm:1618
msgid "No recording defined for deletion! Please use rdelete 'id'."
msgstr "Keine Aufnahme zum Löschen definiert! Bitte verwende rdelete 'rid'."
@@ -2845,22 +2990,22 @@ msgid "Cut recording 'rid' in vdr"
msgstr "Schneide Aufnahme 'rid' im VDR"
#--------------------
-#: ../lib/XXV/MODULES/RECORDS.pm:1656
+#: ../lib/XXV/MODULES/RECORDS.pm:1657
msgid "Are you sure to delete this recording?"
msgstr "Wollen sie wirklich diese Aufnahme löschen?"
#--------------------
-#: ../lib/XXV/MODULES/RECORDS.pm:1690
+#: ../lib/XXV/MODULES/RECORDS.pm:1691
msgid "Recording '%s' to delete"
msgstr "Aufnahme '%s' wird gelöscht"
#--------------------
-#: ../lib/XXV/MODULES/RECORDS.pm:1725
+#: ../lib/XXV/MODULES/RECORDS.pm:1726
msgid "No recording to delete!"
msgstr "Keine Aufnahme zum Löschen!"
#--------------------
-#: ../lib/XXV/MODULES/RECORDS.pm:1751
+#: ../lib/XXV/MODULES/RECORDS.pm:1752
msgid "No recording defined for editing!"
msgstr "Keine Aufnahme-ID zum Bearbeiten!"
@@ -2870,67 +3015,62 @@ 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:1790 ../lib/XXV/MODULES/RECORDS.pm:2388 ../lib/XXV/MODULES/TIMERS.pm:768
+#: ../lib/XXV/MODULES/RECORDS.pm:1791 ../lib/XXV/MODULES/RECORDS.pm:2389 ../lib/XXV/MODULES/TIMERS.pm:768
msgid "Title of recording"
msgstr "Titel der Aufnahme"
#--------------------
-#: ../lib/XXV/MODULES/RECORDS.pm:1827
+#: ../lib/XXV/MODULES/RECORDS.pm:1828
msgid "Undefined"
msgstr "Unbestimmt"
#--------------------
-#: ../lib/XXV/MODULES/RECORDS.pm:1837 ../lib/XXV/MODULES/TIMERS.pm:652
-msgid "This channel '%s' does not exist!"
-msgstr "Dieser Kanal '%s' existiert nicht in der Datenbank!"
-
-#--------------------
-#: ../lib/XXV/MODULES/RECORDS.pm:1848
+#: ../lib/XXV/MODULES/RECORDS.pm:1849
msgid "Video"
msgstr "Video"
#--------------------
-#: ../lib/XXV/MODULES/RECORDS.pm:1852
+#: ../lib/XXV/MODULES/RECORDS.pm:1853
msgid "Audio"
msgstr "Audio"
#--------------------
-#: ../lib/XXV/MODULES/RECORDS.pm:1857
+#: ../lib/XXV/MODULES/RECORDS.pm:1858
msgid "Cut marks"
msgstr "Schnittmarken"
#--------------------
-#: ../lib/XXV/MODULES/RECORDS.pm:1888 ../lib/XXV/MODULES/RECORDS.pm:1895
+#: ../lib/XXV/MODULES/RECORDS.pm:1889 ../lib/XXV/MODULES/RECORDS.pm:1896
msgid "Couldn't write file '%s' : %s"
msgstr "Konnte Datei '%s' nicht schreiben : %s"
#--------------------
-#: ../lib/XXV/MODULES/RECORDS.pm:1914 ../lib/XXV/MODULES/RECORDS.pm:1932
+#: ../lib/XXV/MODULES/RECORDS.pm:1915 ../lib/XXV/MODULES/RECORDS.pm:1933
msgid "Recording: '%s', couldn't move to '%s' : %s"
msgstr "Aufnahme: '%s', konnte nicht nach '%s' verschoben werden : %s"
#--------------------
-#: ../lib/XXV/MODULES/RECORDS.pm:1928
+#: ../lib/XXV/MODULES/RECORDS.pm:1929
msgid "Recording: '%s', couldn't mkpath: '%s' : %s"
msgstr "Aufnahme: '%s', konnte nicht Verzeichnis '%s' nicht erstellen : %s"
#--------------------
-#: ../lib/XXV/MODULES/RECORDS.pm:1939
+#: ../lib/XXV/MODULES/RECORDS.pm:1940
msgid "Recording: '%s', couldn't remove '%s' : %s"
msgstr "Aufnahme: '%s', konnte nicht '%s' nicht entfernen : %s"
#--------------------
-#: ../lib/XXV/MODULES/RECORDS.pm:1967 ../lib/XXV/MODULES/RECORDS.pm:1969
+#: ../lib/XXV/MODULES/RECORDS.pm:1968 ../lib/XXV/MODULES/RECORDS.pm:1970
msgid "Recording edited!"
msgstr "Aufnahme wurde bearbeitet!"
#--------------------
-#: ../lib/XXV/MODULES/RECORDS.pm:1977
+#: ../lib/XXV/MODULES/RECORDS.pm:1978
msgid "Recording was'nt changed!"
msgstr "Aufnahme wurde nicht verändert!"
#--------------------
-#: ../lib/XXV/MODULES/RECORDS.pm:2016
+#: ../lib/XXV/MODULES/RECORDS.pm:2017
msgid "No reccmds.conf on your system!"
msgstr "Keine reccmds.conf auf dem System!"
@@ -2940,32 +3080,32 @@ msgid "Recording deleted: %s"
msgstr "Aufnahme gelöscht: %s"
#--------------------
-#: ../lib/XXV/MODULES/RECORDS.pm:2021
+#: ../lib/XXV/MODULES/RECORDS.pm:2022
msgid "Please use rconvert 'cmdid_rid'"
msgstr "Bitte verwende rconvert 'cmdid_rid'"
#--------------------
-#: ../lib/XXV/MODULES/RECORDS.pm:2028
+#: ../lib/XXV/MODULES/RECORDS.pm:2029
msgid "Couldn't find this command ID!"
msgstr "Kann diese Kommando-ID nicht finden!"
#--------------------
-#: ../lib/XXV/MODULES/RECORDS.pm:2042
+#: ../lib/XXV/MODULES/RECORDS.pm:2043
msgid "Call %s '%s', standard error output :"
msgstr "Aufruf %s '%s', Standardfehlerausgabe :"
#--------------------
-#: ../lib/XXV/MODULES/RECORDS.pm:2045
+#: ../lib/XXV/MODULES/RECORDS.pm:2046
msgid "Call %s '%s', standard output :"
msgstr "Aufruf %s '%s', Ausgabe :"
#--------------------
-#: ../lib/XXV/MODULES/RECORDS.pm:2049
+#: ../lib/XXV/MODULES/RECORDS.pm:2050
msgid "Sorry! Couldn't call %s '%s'! %s"
msgstr "Entschuldigung! Konnte %s '%s' nicht aufrufen! %s"
#--------------------
-#: ../lib/XXV/MODULES/RECORDS.pm:2053
+#: ../lib/XXV/MODULES/RECORDS.pm:2054
msgid "Back to recording list"
msgstr "Zurück zur Aufnahmeliste"
@@ -2975,37 +3115,37 @@ msgid "Subtitle: %s"
msgstr "Serientitel: %s"
#--------------------
-#: ../lib/XXV/MODULES/RECORDS.pm:2091
+#: ../lib/XXV/MODULES/RECORDS.pm:2092
msgid "%d new recordings since last report time %s"
msgstr "%d neue Aufnahmen seit der letzten Reportzeit %s"
#--------------------
-#: ../lib/XXV/MODULES/RECORDS.pm:2383
+#: ../lib/XXV/MODULES/RECORDS.pm:2384
msgid "There none recoverable recordings!"
msgstr "Es sind keine wiederherstellbaren Aufnahmen vorhanden!"
#--------------------
-#: ../lib/XXV/MODULES/RECORDS.pm:2408
+#: ../lib/XXV/MODULES/RECORDS.pm:2409
msgid "Recover recording"
msgstr "Aufnahme wiederherstellen"
#--------------------
-#: ../lib/XXV/MODULES/RECORDS.pm:2414
+#: ../lib/XXV/MODULES/RECORDS.pm:2415
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:2423
+#: ../lib/XXV/MODULES/RECORDS.pm:2424
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:2435 ../lib/XXV/MODULES/RECORDS.pm:2437
+#: ../lib/XXV/MODULES/RECORDS.pm:2436 ../lib/XXV/MODULES/RECORDS.pm:2438
msgid "Recording recovered!"
msgstr "Aufnahme wiederhergestellt!"
#--------------------
-#: ../lib/XXV/MODULES/RECORDS.pm:2445
+#: ../lib/XXV/MODULES/RECORDS.pm:2446
msgid "None recording was'nt recovered!"
msgstr "Keine Aufnahme wurde wiederhergestellt!"
@@ -3050,7 +3190,7 @@ msgid "Update recording '%s'"
msgstr "Aktualisiere Aufnahme '%s'"
#--------------------
-#: ../lib/XXV/MODULES/RECORDS.pm:602
+#: ../lib/XXV/MODULES/RECORDS.pm:603
msgid "Analyze recording '%s'"
msgstr "Untersuche Aufnahme '%s'"
@@ -3070,17 +3210,17 @@ msgid "None"
msgstr "Keines"
#--------------------
-#: ../lib/XXV/MODULES/RECORDS.pm:704
+#: ../lib/XXV/MODULES/RECORDS.pm:705
msgid "Write %d recordings to the database."
msgstr "Schreibe %d Aufnahmen in die Datenbank."
#--------------------
-#: ../lib/XXV/MODULES/RECORDS.pm:706
+#: ../lib/XXV/MODULES/RECORDS.pm:707
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:743 ../lib/XXV/MODULES/RECORDS.pm:745
+#: ../lib/XXV/MODULES/RECORDS.pm:744 ../lib/XXV/MODULES/RECORDS.pm:746
msgid "Get information on recordings ..."
msgstr "Hole Informationen über Aufnahmen ..."
diff --git a/locale/de/LC_MESSAGES/xxv.mo b/locale/de/LC_MESSAGES/xxv.mo
index aba5c74..380d3d4 100644
--- a/locale/de/LC_MESSAGES/xxv.mo
+++ b/locale/de/LC_MESSAGES/xxv.mo
Binary files differ