diff --git a/IkiWiki/Plugin/po.pm b/IkiWiki/Plugin/po.pm index 61331edeb..68fd69283 100644 --- a/IkiWiki/Plugin/po.pm +++ b/IkiWiki/Plugin/po.pm @@ -44,6 +44,7 @@ sub import { hook(type => "canrename", id => "po", call => \&canrename); hook(type => "editcontent", id => "po", call => \&editcontent); hook(type => "formbuilder_setup", id => "po", call => \&formbuilder_setup); + hook(type => "formbuilder", id => "po", call => \&formbuilder); $origsubs{'bestlink'}=\&IkiWiki::bestlink; inject(name => "IkiWiki::bestlink", call => \&mybestlink); @@ -452,6 +453,31 @@ sub formbuilder_setup (@) { $form->tmpl_param(message => $template->output); } +# Do not allow to create pages of type po: they are automatically created. +# The main reason to do so is to bypass the "favor the type of linking page +# on page creation" logic, which is unsuitable when a broken link is clicked +# on a slave (PO) page. +sub formbuilder (@) { + my %params=@_; + my $form=$params{form}; + my $q=$params{cgi}; + + return unless (defined $form->field("do") && $form->field("do") eq "create"); + + for my $field ($form->field) { + next unless "$field" eq "type"; + if ($field->type eq 'select') { + # remove po from the types list + my @types = grep { $_ ne 'po' } $field->options; + $field->options(\@types) if scalar @types; + } + else { + # make sure the default value is not po; + # does this case actually happen? + debug "po(formbuilder) type field is not select - not implemented yet"; + } + } +} # ,---- # | Injected functions diff --git a/doc/plugins/po.mdwn b/doc/plugins/po.mdwn index ed740c394..f06fd40c6 100644 --- a/doc/plugins/po.mdwn +++ b/doc/plugins/po.mdwn @@ -541,13 +541,6 @@ a more complete translation than the existing one. Note: committing to the underlying repository is a way to bypass this check. -Creating new pages on the web ------------------------------ - -* Page creation initiated by clicking a broken link on a translation - page defaults to po as new page type. It must default to the master - page's type instead. - Robustness tests ----------------