fix preprocess focus
authorJulien Moutinho <julm+ikiwiki+events@autogeree.net>
Tue, 8 Apr 2014 22:45:41 +0000 (00:45 +0200)
committerJulien Moutinho <julm+ikiwiki+events@autogeree.net>
Tue, 8 Apr 2014 22:45:41 +0000 (00:45 +0200)
events.pm

index 6e0d1da..e892d10 100644 (file)
--- 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'));