From 9b55970ea225ad0192a31737e6f4ab4f3bbab043 Mon Sep 17 00:00:00 2001 From: Julien Moutinho Date: Sat, 15 Mar 2014 07:21:41 +0100 Subject: [PATCH] add &base CGI and form support --- newevent.pm | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/newevent.pm b/newevent.pm index 2d60517..9db731d 100644 --- a/newevent.pm +++ b/newevent.pm @@ -196,7 +196,8 @@ sub sessioncgi ($$) { : 1; my @dow_order = ($week_start_day .. 6, 0 .. $week_start_day-1); - my $page = Encode::decode_utf8($cgi->param("page")); + my $page = Encode::decode_utf8(URI::Escape::uri_unescape(IkiWiki::possibly_foolish_untaint($cgi->param('page')))); + my $newevent_base = Encode::decode_utf8(URI::Escape::uri_unescape(IkiWiki::possibly_foolish_untaint($cgi->param('base')))); my $tags = $typedlinks{$page}{tag}; my $buttons = [qw{Preview Create}]; my ($from_date, $to_date, $end_date, $inc_dur); @@ -204,7 +205,7 @@ sub sessioncgi ($$) { ( action => IkiWiki::cgiurl() , charset => "utf-8" , fields => [qw{ - do + do base from_date from_year from_month from_day from_hour from_minute to_date to_year to_month to_day to_hour to_minute inc_dur inc_year inc_month inc_week inc_day inc_hour inc_minute @@ -225,7 +226,7 @@ sub sessioncgi ($$) { , name => "newevent" , stylesheet => 1 , params => $cgi - , required => [qw{do year month day name from_date to_date end_date inc_dur}] + , required => [qw{do base year month day name from_date to_date end_date inc_dur}] , submit => [qw{Preview Create}] , title => gettext("newevent") , template => { template("newevent.tmpl") } @@ -276,6 +277,7 @@ sub sessioncgi ($$) { } } } , name => '/^.+$/' + , base => '/^.*$/' , end_times => sub { $_[0] =~ m/^\d+$/ and $_[0] >= 0 } , inc_year => sub { $_[0] =~ m/^\d+$/ and $_[0] >= 0 } , inc_month => sub { $_[0] =~ m/^\d+$/ and $_[0] >= 0 } @@ -293,6 +295,8 @@ sub sessioncgi ($$) { ); $form->title(sprintf(gettext("creating new events"), pagetitle(IkiWiki::basename($page)))); $form->field(name => "do", type => "hidden", value => 'newevent', force => 1); + $form->field(name => "base", type => "hidden", force => 1 + , value => ($form->field('base') ? $form->field('base') : $newevent_base)); $form->field(name => "from_date", type => "hidden", value => '1', force => 1); $form->field(name => "to_date", type => "hidden", value => '1', force => 1); $form->field(name => "end_date", type => "hidden", value => '1', force => 1); @@ -345,11 +349,10 @@ sub sessioncgi ($$) { if (($form->submitted eq 'Create' || $form->submitted eq 'Preview') && $form->validate) { #IkiWiki::checksessionexpiry($cgi, $session, $cgi->param('sid')); - my $newevent_base = $cgi->param('base'); - $newevent_base = $config{newevent_base} - unless defined $newevent_base; - $newevent_base = gettext('Agenda') - unless defined $newevent_base; + $newevent_base + = $form->field('base') + ? $form->field('base') + : (defined $config{newevent_base} ? $config{newevent_base} : gettext('Agenda')); my $end_times = $form->field('end_times') == 0 ? undef : $form->field('end_times'); @@ -556,6 +559,7 @@ sub create ($$$$$) { and not -l $config{srcdir}.'/'.$monthfile and not -e _) { my $tmpl_neweventmonth = template("neweventmonth.tmpl"); + $tmpl_neweventmonth->param(base => $newevent_base); $tmpl_neweventmonth->param(year => $event->{from}->year()); $tmpl_neweventmonth->param(month => sprintf('%02d', $event->{from}->month())); $tmpl_neweventmonth->param(monthname => $months->{$event->{from}->month()}); @@ -575,6 +579,7 @@ sub create ($$$$$) { and not -l $config{srcdir}.'/'.$dayfile and not -e _) { my $tmpl_neweventday = template("neweventday.tmpl"); + $tmpl_neweventday->param(base => $newevent_base); $tmpl_neweventday->param(year => $event->{from}->year()); $tmpl_neweventday->param(month => sprintf('%02d', $event->{from}->month())); $tmpl_neweventday->param(monthname => $months->{$event->{from}->month()}); -- 2.20.1