From d0d09f26ee4f7303bd4fc80003f2233ea5549f22 Mon Sep 17 00:00:00 2001 From: Julien Moutinho Date: Wed, 9 Apr 2014 00:45:41 +0200 Subject: [PATCH] fix preprocess focus --- events.pm | 74 +++++++++++++++++++++++++++---------------------------- 1 file changed, 36 insertions(+), 38 deletions(-) diff --git a/events.pm b/events.pm index 6e0d1da..e892d10 100644 --- a/events.pm +++ b/events.pm @@ -516,47 +516,45 @@ sub preprocess (@) { ? $config{events_base} : gettext('Agenda'); } - if (defined $params{day}) { - if ($params{day} =~ m/^([+-])(\d+)$/) { - my ($sign, $days) = ($1, $2); - my $duration = DateTime::Duration->new(days => $days, end_of_month => 'limit'); - $params{focus} - = $sign eq '+' - ? $params{focus}->add_duration($duration) - : $params{focus}->subtract_duration($duration); - } - else { - $params{focus}->set(day => $params{day}); - } + + my %focus_set; + if (defined $params{day} and $params{day} =~ m/^(\d+)$/) { + my ($day) = ($1); + $focus_set{day} = $day; } - else { - #$params{focus}->set(day => 1); + if (defined $params{month} and $params{month} =~ m/^(\d+)$/) { + my ($month) = ($1); + $focus_set{month} = $month; } - if (defined $params{month}) { - if ($params{month} =~ m/^([+-])(\d+)$/) { - my ($sign, $months) = ($1, $2); - my $duration = DateTime::Duration->new(months => $months, end_of_month => 'limit'); - $params{focus} - = $sign eq '+' - ? $params{focus}->add_duration($duration) - : $params{focus}->subtract_duration($duration); - } - else { - $params{focus}->set(month => $params{month}); - } + if (defined $params{year} and $params{year} =~ m/^(\d+)$/) { + my ($year) = ($1); + $focus_set{year} = $year; } - if (defined $params{year}) { - if ($params{year} =~ m/^([+-])(\d+)$/) { - my ($sign, $years) = ($1, $2); - my $duration = DateTime::Duration->new(years => $years, end_of_month => 'limit'); - $params{focus} - = $sign eq '+' - ? $params{focus}->add_duration($duration) - : $params{focus}->subtract_duration($duration); - } - else { - $params{focus}->set(year => $params{year}); - } + $params{focus}->set(%focus_set); + + if (defined $params{day} and $params{day} =~ m/^([+-])(\d+)$/) { + my ($sign, $days) = ($1, $2); + my $duration = DateTime::Duration->new(days => $days, end_of_month => 'limit'); + $params{focus} + = $sign eq '+' + ? $params{focus}->add_duration($duration) + : $params{focus}->subtract_duration($duration); + } + if (defined $params{month} and $params{month} =~ m/^([+-])(\d+)$/) { + my ($sign, $months) = ($1, $2); + my $duration = DateTime::Duration->new(months => $months, end_of_month => 'limit'); + $params{focus} + = $sign eq '+' + ? $params{focus}->add_duration($duration) + : $params{focus}->subtract_duration($duration); + } + if (defined $params{year} and $params{year} =~ m/^([+-])(\d+)$/) { + my ($sign, $years) = ($1, $2); + my $duration = DateTime::Duration->new(years => $years, end_of_month => 'limit'); + $params{focus} + = $sign eq '+' + ? $params{focus}->add_duration($duration) + : $params{focus}->subtract_duration($duration); } #debug("events: focus=".$params{focus}->strftime('%Y-%m-%d_%H-%M-%S')); -- 2.20.1