summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>2006-07-11 20:41:30 +0000
committerjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>2006-07-11 20:41:30 +0000
commiteecc8af979c860eb6c3a37ce9cc98f06c307835f (patch)
treeffce8ba712830c9376a1db23ebae104db46265f3
parentfcffc462befef45aebdec1111a3287b9fcf6c9a5 (diff)
foo
-rw-r--r--doc/patchqueue/allow_to_select_a_page_type_on_new_file_creations.mdwn244
1 files changed, 122 insertions, 122 deletions
diff --git a/doc/patchqueue/allow_to_select_a_page_type_on_new_file_creations.mdwn b/doc/patchqueue/allow_to_select_a_page_type_on_new_file_creations.mdwn
index 90ec73c17..d1c865598 100644
--- a/doc/patchqueue/allow_to_select_a_page_type_on_new_file_creations.mdwn
+++ b/doc/patchqueue/allow_to_select_a_page_type_on_new_file_creations.mdwn
@@ -1,127 +1,127 @@
From [[Recai]].
-
+
Note that this isn't safe since it needs to check file types from the CGI
against the list of allowed file types. Also, renaming a page won't work so
at least the first cut needs to be changed to only allow changing file type
when crating a new page. -- [[Joey]]
-
-diff -rup ikiwiki.orig/IkiWiki/CGI.pm ikiwiki/IkiWiki/CGI.pm
---- ikiwiki.orig/IkiWiki/CGI.pm 2006-07-08 02:33:07.000000000 +0300
-+++ ikiwiki/IkiWiki/CGI.pm 2006-07-08 18:27:24.000000000 +0300
-@@ -310,7 +310,7 @@ sub cgi_editpage ($$) { #{{{
-
- eval q{use CGI::FormBuilder};
- my $form = CGI::FormBuilder->new(
-- fields => [qw(do rcsinfo subpage from page editcontent comments)],
-+ fields => [qw(do rcsinfo subpage from page type editcontent comments)],
- header => 1,
- charset => "utf-8",
- method => 'POST',
-@@ -337,12 +337,21 @@ sub cgi_editpage ($$) { #{{{
- $page=lc($page);
-
- my $file;
-- if (exists $pagesources{lc($page)}) {
-- $file=$pagesources{lc($page)};
-+ my $type;
-+ if (exists $pagesources{$page}) {
-+ $file=$pagesources{$page};
-+ $type=pagetype($file);
- }
- else {
-- $file=$page.".".$config{default_pageext};
-+ $type=$form->param('type');
-+ if (defined $type && length $type) {
-+ $type=possibly_foolish_untaint($type);
-+ } else {
-+ $type=$config{default_pageext};
-+ }
-+ $file=$page.".".$type;
- }
-+
- my $newfile=0;
- if (! -e "$config{srcdir}/$file") {
- $newfile=1;
-@@ -353,6 +362,7 @@ sub cgi_editpage ($$) { #{{{
- $form->field(name => "rcsinfo", type => 'hidden');
- $form->field(name => "subpage", type => 'hidden');
- $form->field(name => "page", value => "$page", force => 1);
-+ $form->field(name => "type", value => "$type", force => 1, type => 'hidden');
- $form->field(name => "comments", type => "text", size => 80);
- $form->field(name => "editcontent", type => "textarea", rows => 20,
- cols => 80);
-@@ -382,8 +392,7 @@ sub cgi_editpage ($$) { #{{{
- $form->field(name => "comments",
- value => $comments, force => 1);
- $form->tmpl_param("page_preview",
-- htmlize(pagetype($file),
-- linkify($page, $page, $content)));
-+ htmlize($type, linkify($page, $page, $content)));
- }
- else {
- $form->tmpl_param("page_preview", "");
-@@ -395,6 +404,8 @@ sub cgi_editpage ($$) { #{{{
- if ($form->field("do") eq "create") {
- my @page_locs;
- my $best_loc;
-+ my @page_types;
-+ my $best_type;
- my ($from)=$form->param('from')=~/$config{wiki_file_regexp}/;
- if (! defined $from || ! length $from ||
- $from ne $form->param('from') ||
-@@ -435,9 +446,24 @@ sub cgi_editpage ($$) { #{{{
- return;
- }
-
-+ if (exists $hooks{htmlize}) {
-+ @page_types=keys %{$hooks{htmlize}};
-+ }
-+ else {
-+ @page_types=($type);
-+ }
-+
-+ # favor the type of originated page
-+ $best_type=pagetype($pagesources{$from});
-+ if (! defined $best_type || ! length $best_type) {
-+ $best_type=$type;
-+ }
-+
- $form->tmpl_param("page_select", 1);
- $form->field(name => "page", type => 'select',
- options => \@page_locs, value => $best_loc);
-+ $form->field(name => "type", type => 'select',
-+ options => \@page_types, value => $best_type);
- $form->title("creating ".pagetitle($page));
- }
- elsif ($form->field("do") eq "edit") {
-@@ -454,6 +480,7 @@ sub cgi_editpage ($$) { #{{{
- }
- $form->tmpl_param("page_select", 0);
- $form->field(name => "page", type => 'hidden');
-+ $form->field(name => "type", type => 'hidden');
- $form->title("editing ".pagetitle($page));
- }
-
-@@ -503,6 +530,7 @@ sub cgi_editpage ($$) { #{{{
- $form->field("do", "edit)");
- $form->tmpl_param("page_select", 0);
- $form->field(name => "page", type => 'hidden');
-+ $form->field(name => "type", type => 'hidden');
- $form->title("editing $page");
- print $form->render(submit => \@buttons);
- return;
-diff -rup ikiwiki.orig/templates/editpage.tmpl ikiwiki/templates/editpage.tmpl
---- ikiwiki.orig/templates/editpage.tmpl 2006-07-03 03:13:46.000000000 +0300
-+++ ikiwiki/templates/editpage.tmpl 2006-07-08 18:04:48.000000000 +0300
-@@ -28,9 +28,11 @@ confict and commit again to save your ch
- <TMPL_VAR FIELD-RCSINFO>
- <TMPL_IF NAME="PAGE_SELECT">
- Page location: <TMPL_VAR FIELD-PAGE>
-+Page type: <TMPL_VAR FIELD-TYPE>
- <TMPL_ELSE>
- <br />
- <TMPL_VAR FIELD-PAGE>
-+<TMPL_VAR FIELD-TYPE>
- </TMPL_IF>
- <TMPL_VAR FIELD-EDITCONTENT><br />
- <TMPL_IF NAME="CAN_COMMIT">
+
+ diff -rup ikiwiki.orig/IkiWiki/CGI.pm ikiwiki/IkiWiki/CGI.pm
+ --- ikiwiki.orig/IkiWiki/CGI.pm 2006-07-08 02:33:07.000000000 +0300
+ +++ ikiwiki/IkiWiki/CGI.pm 2006-07-08 18:27:24.000000000 +0300
+ @@ -310,7 +310,7 @@ sub cgi_editpage ($$) { #{{{
+
+ eval q{use CGI::FormBuilder};
+ my $form = CGI::FormBuilder->new(
+ - fields => [qw(do rcsinfo subpage from page editcontent comments)],
+ + fields => [qw(do rcsinfo subpage from page type editcontent comments)],
+ header => 1,
+ charset => "utf-8",
+ method => 'POST',
+ @@ -337,12 +337,21 @@ sub cgi_editpage ($$) { #{{{
+ $page=lc($page);
+
+ my $file;
+ - if (exists $pagesources{lc($page)}) {
+ - $file=$pagesources{lc($page)};
+ + my $type;
+ + if (exists $pagesources{$page}) {
+ + $file=$pagesources{$page};
+ + $type=pagetype($file);
+ }
+ else {
+ - $file=$page.".".$config{default_pageext};
+ + $type=$form->param('type');
+ + if (defined $type && length $type) {
+ + $type=possibly_foolish_untaint($type);
+ + } else {
+ + $type=$config{default_pageext};
+ + }
+ + $file=$page.".".$type;
+ }
+ +
+ my $newfile=0;
+ if (! -e "$config{srcdir}/$file") {
+ $newfile=1;
+ @@ -353,6 +362,7 @@ sub cgi_editpage ($$) { #{{{
+ $form->field(name => "rcsinfo", type => 'hidden');
+ $form->field(name => "subpage", type => 'hidden');
+ $form->field(name => "page", value => "$page", force => 1);
+ + $form->field(name => "type", value => "$type", force => 1, type => 'hidden');
+ $form->field(name => "comments", type => "text", size => 80);
+ $form->field(name => "editcontent", type => "textarea", rows => 20,
+ cols => 80);
+ @@ -382,8 +392,7 @@ sub cgi_editpage ($$) { #{{{
+ $form->field(name => "comments",
+ value => $comments, force => 1);
+ $form->tmpl_param("page_preview",
+ - htmlize(pagetype($file),
+ - linkify($page, $page, $content)));
+ + htmlize($type, linkify($page, $page, $content)));
+ }
+ else {
+ $form->tmpl_param("page_preview", "");
+ @@ -395,6 +404,8 @@ sub cgi_editpage ($$) { #{{{
+ if ($form->field("do") eq "create") {
+ my @page_locs;
+ my $best_loc;
+ + my @page_types;
+ + my $best_type;
+ my ($from)=$form->param('from')=~/$config{wiki_file_regexp}/;
+ if (! defined $from || ! length $from ||
+ $from ne $form->param('from') ||
+ @@ -435,9 +446,24 @@ sub cgi_editpage ($$) { #{{{
+ return;
+ }
+
+ + if (exists $hooks{htmlize}) {
+ + @page_types=keys %{$hooks{htmlize}};
+ + }
+ + else {
+ + @page_types=($type);
+ + }
+ +
+ + # favor the type of originated page
+ + $best_type=pagetype($pagesources{$from});
+ + if (! defined $best_type || ! length $best_type) {
+ + $best_type=$type;
+ + }
+ +
+ $form->tmpl_param("page_select", 1);
+ $form->field(name => "page", type => 'select',
+ options => \@page_locs, value => $best_loc);
+ + $form->field(name => "type", type => 'select',
+ + options => \@page_types, value => $best_type);
+ $form->title("creating ".pagetitle($page));
+ }
+ elsif ($form->field("do") eq "edit") {
+ @@ -454,6 +480,7 @@ sub cgi_editpage ($$) { #{{{
+ }
+ $form->tmpl_param("page_select", 0);
+ $form->field(name => "page", type => 'hidden');
+ + $form->field(name => "type", type => 'hidden');
+ $form->title("editing ".pagetitle($page));
+ }
+
+ @@ -503,6 +530,7 @@ sub cgi_editpage ($$) { #{{{
+ $form->field("do", "edit)");
+ $form->tmpl_param("page_select", 0);
+ $form->field(name => "page", type => 'hidden');
+ + $form->field(name => "type", type => 'hidden');
+ $form->title("editing $page");
+ print $form->render(submit => \@buttons);
+ return;
+ diff -rup ikiwiki.orig/templates/editpage.tmpl ikiwiki/templates/editpage.tmpl
+ --- ikiwiki.orig/templates/editpage.tmpl 2006-07-03 03:13:46.000000000 +0300
+ +++ ikiwiki/templates/editpage.tmpl 2006-07-08 18:04:48.000000000 +0300
+ @@ -28,9 +28,11 @@ confict and commit again to save your ch
+ <TMPL_VAR FIELD-RCSINFO>
+ <TMPL_IF NAME="PAGE_SELECT">
+ Page location: <TMPL_VAR FIELD-PAGE>
+ +Page type: <TMPL_VAR FIELD-TYPE>
+ <TMPL_ELSE>
+ <br />
+ <TMPL_VAR FIELD-PAGE>
+ +<TMPL_VAR FIELD-TYPE>
+ </TMPL_IF>
+ <TMPL_VAR FIELD-EDITCONTENT><br />
+ <TMPL_IF NAME="CAN_COMMIT">