po: favor the type of linking page's masterpage on page creation
authorintrigeri <intrigeri@boum.org>
Fri, 28 Aug 2009 11:12:58 +0000 (13:12 +0200)
committerJoey Hess <joey@gnu.kitenet.net>
Fri, 28 Aug 2009 11:33:53 +0000 (07:33 -0400)
Signed-off-by: intrigeri <intrigeri@boum.org>
IkiWiki/Plugin/po.pm

index b9f59f3e8c84bebcc7c79829f03c48036bd4d3e2..55c1c32c64f24c563b40d17e8249163b2d8b36c5 100644 (file)
@@ -531,10 +531,23 @@ sub formbuilder (@) {
        if ($form->field("do") eq "create") {
                foreach my $field ($form->field) {
                        next unless "$field" eq "type";
-                       if ($field->type eq 'select') {
-                               # remove po from the list of types
-                               my @types = grep { $_->[0] ne 'po' } $field->options;
-                               $field->options(\@types) if @types;
+                       next unless $field->type eq 'select';
+                       my $orig_value = $field->value;
+                       # remove po from the list of types
+                       my @types = grep { $_->[0] ne 'po' } $field->options;
+                       $field->options(\@types) if @types;
+                       # favor the type of linking page's masterpage
+                       if ($orig_value eq 'po') {
+                               my ($from, $type);
+                               if (defined $form->field('from')) {
+                                       ($from)=$form->field('from')=~/$config{wiki_file_regexp}/;
+                                       $from = masterpage($from);
+                               }
+                               if (defined $from && exists $pagesources{$from}) {
+                                       $type=pagetype($pagesources{$from});
+                               }
+                               $type=$config{default_pageext} unless defined $type;
+                               $field->value($type) ;
                        }
                }
        }