From: Julien Moutinho Date: Tue, 8 Apr 2014 22:45:41 +0000 (+0200) Subject: fix preprocess focus X-Git-Url: https://git.cyclocoop.org/%7B%24admin_url%7Dmembres/%40%20%27info_classement_2%27%20=%3E%20%27%C3%82%C2%A0out%20of%20%40liste%40%27%2C%20%27info_code_acces%27%20=%3E%20%27Do%20not%20forget%20your%20own%20access%20codes%21%27%2C%20%27info_compatibilite_html%27%20=%3E%20%27HTML%20norm%20to%20apply%27%2C-%27info_compresseur_gzip%27%20=%3E%20%27It%20is%20advisable%20to%20check%20first%20whether%20your%20hosting%20provider%20already%20systematically%20compresses%20PHP%20scripts.%20To%20do%20this%20you%20can%20use%20a%20service%20such%20as%20%40testgzip%40%27%2C-%27info_compresseur_texte%27%20=%3E%20%27If%20your%20server%20does%20not%20compress%20HTML%20pages%20before%20sending%20them%2C%20you%20can%20attempt%20to%20force%20compression%20in%20order%20to%20reduce%20the%20size%20of%20the%20pages%20transmitted.%3Cb%3EWarning%3C/%40url%40?a=commitdiff_plain;h=d0d09f26ee4f7303bd4fc80003f2233ea5549f22;p=ikiwiki%2Fevents.git fix preprocess focus --- 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'));