diff options
author | intrigeri <intrigeri@boum.org> | 2009-08-28 13:12:58 +0200 |
---|---|---|
committer | Joey Hess <joey@gnu.kitenet.net> | 2009-08-28 07:33:53 -0400 |
commit | 5136c22eed0527bce976c76205c6ccb2ddb0b062 (patch) | |
tree | bf928127c233f3b7e5494efdca007893a4f463ca /IkiWiki/Plugin | |
parent | 18ddf727d1fb30e3a3022fa8a73077c4c75dd262 (diff) |
po: favor the type of linking page's masterpage on page creation
Signed-off-by: intrigeri <intrigeri@boum.org>
Diffstat (limited to 'IkiWiki/Plugin')
-rw-r--r-- | IkiWiki/Plugin/po.pm | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/IkiWiki/Plugin/po.pm b/IkiWiki/Plugin/po.pm index b9f59f3e8..55c1c32c6 100644 --- a/IkiWiki/Plugin/po.pm +++ b/IkiWiki/Plugin/po.pm @@ -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) ; } } } |