X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/4745391360cf0843e376676479fee306d0a8312d..df512e55dfbbb912cdf4aee5db48622301bb29ac:/IkiWiki/Plugin/edittemplate.pm?ds=sidebyside

diff --git a/IkiWiki/Plugin/edittemplate.pm b/IkiWiki/Plugin/edittemplate.pm
index 6689b9a5c..b7651ce02 100644
--- a/IkiWiki/Plugin/edittemplate.pm
+++ b/IkiWiki/Plugin/edittemplate.pm
@@ -21,7 +21,8 @@ sub needsbuild (@) { #{{{
 
 	foreach my $page (keys %pagestate) {
 		if (exists $pagestate{$page}{edittemplate}) {
-			if (grep { $_ eq $pagesources{$page} } @$needsbuild) {
+			if (exists $pagesources{$page} && 
+			    grep { $_ eq $pagesources{$page} } @$needsbuild) {
 				# remove state, it will be re-added
 				# if the preprocessor directive is still
 				# there during the rebuild
@@ -52,29 +53,20 @@ sub preprocess (@) { #{{{
 sub formbuilder (@) { #{{{
 	my %params=@_;
 	my $form=$params{form};
-	
-	return if $form->title ne "editpage"
-	          || $form->field("do") ne "create";
-	
+
+	return if $form->field("do") ne "create";
 	my $page=$form->field("page");
-	my $from=$form->field("from");
 	
 	# The tricky bit here is that $page is probably just the base
 	# page name, without any subdir, but the pagespec for a template
 	# probably does include the subdir (ie, "bugs/*"). We don't know
-	# what subdir the user will pick to put the page in. So, generate
-	# an ordered list and the first template to match will be used.
-	#
-	# This code corresponds to the code in editpage() that generates
-	# the list of possible page names, unfortunatly, that code runs
-	# later, so that list can't be simply reused.
+	# what subdir the user will pick to put the page in. So, try them
+	# all, starting with the one that was made default.
 	my @page_locs=$page;
-	if (defined $from) {
-		push @page_locs, "$from/$page";
-		my $dir=$from.="/";
-		while (length $dir) {
-			$dir=~s![^/]+/+$!!;
-			push @page_locs, $dir.$page;
+	foreach my $field ($form->field) {
+		if ($field eq 'page') {
+			@page_locs=$field->def_value;
+			push @page_locs, $field->options;
 		}
 	}