Page MenuHomePhabricator

"#forminput" raises error for multiple forms: HTML attribute data-possible-forms can not contain a list of values
Closed, ResolvedPublic

Description

"#forminput" does not work for multiple forms

I create a page with content:

{{#forminput:form=Form1,Form2}}

Page save fails with:

[d1717fd78275c362aeedafa8] /hoo/index.php?title=TestoFormo&action=submit MWException from line 545 of D:\Program Files\XAMPP\htdocs\hoo\includes\Html.php: HTML attribute data-possible-forms can not contain a list of values

Backtrace:

#0 D:\Program Files\XAMPP\htdocs\hoo\includes\Html.php(305): Html::expandAttributes(array)
#1 D:\Program Files\XAMPP\htdocs\hoo\includes\Html.php(210): Html::openElement(string, array)
#2 D:\Program Files\XAMPP\htdocs\hoo\includes\Html.php(235): Html::rawElement(string, array, string)
#3 D:\Program Files\XAMPP\htdocs\hoo\extensions\PageForms\includes\PF_ParserFunctions.php(402): Html::element(string, array, NULL)
#4 D:\Program Files\XAMPP\htdocs\hoo\includes\parser\Parser.php(3340): PFParserFunctions::renderFormInput(Parser, string)
#5 D:\Program Files\XAMPP\htdocs\hoo\includes\parser\Parser.php(3047): Parser->callParserFunction(PPFrame_Hash, string, array)
#6 D:\Program Files\XAMPP\htdocs\hoo\includes\parser\PPFrame_Hash.php(253): Parser->braceSubstitution(array, PPFrame_Hash)
#7 D:\Program Files\XAMPP\htdocs\hoo\includes\parser\Parser.php(2887): PPFrame_Hash->expand(PPNode_Hash_Tree, integer)
#8 D:\Program Files\XAMPP\htdocs\hoo\includes\parser\Parser.php(1556): Parser->replaceVariables(string)
#9 D:\Program Files\XAMPP\htdocs\hoo\includes\parser\Parser.php(651): Parser->internalParse(string)
#10 D:\Program Files\XAMPP\htdocs\hoo\includes\content\WikitextContent.php(374): Parser->parse(string, Title, ParserOptions, boolean, boolean, integer)
#11 D:\Program Files\XAMPP\htdocs\hoo\includes\content\AbstractContent.php(590): WikitextContent->fillParserOutput(Title, integer, ParserOptions, boolean, ParserOutput)
#12 D:\Program Files\XAMPP\htdocs\hoo\includes\Revision\RenderedRevision.php(263): AbstractContent->getParserOutput(Title, integer, ParserOptions, boolean)
#13 D:\Program Files\XAMPP\htdocs\hoo\includes\Revision\RenderedRevision.php(235): MediaWiki\Revision\RenderedRevision->getSlotParserOutputUncached(WikitextContent, boolean)
#14 D:\Program Files\XAMPP\htdocs\hoo\includes\Revision\RevisionRenderer.php(215): MediaWiki\Revision\RenderedRevision->getSlotParserOutput(string)
#15 D:\Program Files\XAMPP\htdocs\hoo\includes\Revision\RevisionRenderer.php(152): MediaWiki\Revision\RevisionRenderer->combineSlotOutput(MediaWiki\Revision\RenderedRevision, array)
#16 [internal function]: MediaWiki\Revision\RevisionRenderer->MediaWiki\Revision\{closure}(MediaWiki\Revision\RenderedRevision, array)
#17 D:\Program Files\XAMPP\htdocs\hoo\includes\Revision\RenderedRevision.php(197): call_user_func(Closure, MediaWiki\Revision\RenderedRevision, array)
#18 D:\Program Files\XAMPP\htdocs\hoo\includes\Storage\DerivedPageDataUpdater.php(1315): MediaWiki\Revision\RenderedRevision->getRevisionParserOutput()
#19 D:\Program Files\XAMPP\htdocs\hoo\includes\Storage\PageUpdater.php(752): MediaWiki\Storage\DerivedPageDataUpdater->getCanonicalParserOutput()
#20 D:\Program Files\XAMPP\htdocs\hoo\includes\page\WikiPage.php(2015): MediaWiki\Storage\PageUpdater->saveRevision(CommentStoreComment, integer)
#21 D:\Program Files\XAMPP\htdocs\hoo\includes\EditPage.php(2457): WikiPage->doEditContent(WikitextContent, CommentStoreComment, integer, boolean, User, string, array, integer)
#22 D:\Program Files\XAMPP\htdocs\hoo\includes\EditPage.php(1724): EditPage->internalAttemptSave(array, boolean)
#23 D:\Program Files\XAMPP\htdocs\hoo\includes\EditPage.php(680): EditPage->attemptSave(array)
#24 D:\Program Files\XAMPP\htdocs\hoo\includes\actions\EditAction.php(71): EditPage->edit()
#25 D:\Program Files\XAMPP\htdocs\hoo\includes\actions\SubmitAction.php(38): EditAction->show()
#26 D:\Program Files\XAMPP\htdocs\hoo\includes\MediaWiki.php(527): SubmitAction->show()
#27 D:\Program Files\XAMPP\htdocs\hoo\includes\MediaWiki.php(313): MediaWiki->performAction(Article, Title)
#28 D:\Program Files\XAMPP\htdocs\hoo\includes\MediaWiki.php(940): MediaWiki->performRequest()
#29 D:\Program Files\XAMPP\htdocs\hoo\includes\MediaWiki.php(543): MediaWiki->main()
#30 D:\Program Files\XAMPP\htdocs\hoo\index.php(53): MediaWiki->run()
#31 D:\Program Files\XAMPP\htdocs\hoo\index.php(46): wfIndexMain()
#32 {main}

If I understand it correctly, it can be fixed via small patch of PF_ParserFunctions.php

diff --git a/includes/PF_ParserFunctions.php b/includes/PF_ParserFunctions.php
index 97c28a8a..f8414cc0 100644
--- a/includes/PF_ParserFunctions.php
+++ b/includes/PF_ParserFunctions.php
@@ -380,7 +380,7 @@ class PFParserFunctions {
 			$inFormName = str_replace( '\,', ',', $inFormName );
 			$formContents .= Html::hidden( "form", $inFormName );
 		} else {
-			$formInputAttrs['data-possible-forms'] = $listOfForms;
+			$formInputAttrs['data-possible-forms'] = implode( '|', $listOfForms );
 		}
 
 		// Recreate the passed-in query string as a set of hidden

But after that we still would have empty first element

image.png (287×837 px, 14 KB)

Probably that can be solved easily as well. Not sure why empty element was added in the first place

diff --git a/libs/PF_formInput.js b/libs/PF_formInput.js
index 3ba6d4e0..a01417e9 100644
--- a/libs/PF_formInput.js
+++ b/libs/PF_formInput.js
@@ -13,7 +13,7 @@
 		var autocompleteWidgetConfig = {};
 		var possibleFormsStr = this.attr('data-possible-forms');
 		if ( possibleFormsStr !== undefined ) {
-			var menuOptions = [ {} ];
+			var menuOptions = [ ];
 			var possibleForms = possibleFormsStr.split('|');
 			for ( var possibleForm of possibleForms ) {
 				menuOptions.push( {

Event Timeline

Aklapper renamed this task from "#forminput" raises errror for multiple forms: HTML attribute data-possible-forms can not contain a list of values to "#forminput" raises error for multiple forms: HTML attribute data-possible-forms can not contain a list of values.Mar 4 2021, 8:33 PM

Change 670358 had a related patch set uploaded (by Yaron Koren; owner: Yaron Koren):
[mediawiki/extensions/PageForms@master] Fix for c9e5092a103c - fix #forminput support for multiple forms

https://gerrit.wikimedia.org/r/670358

Change 670358 merged by jenkins-bot:
[mediawiki/extensions/PageForms@master] Fix for c9e5092a103c - fix #forminput support for multiple forms

https://gerrit.wikimedia.org/r/670358

Yaron_Koren claimed this task.
Yaron_Koren subscribed.

@Urfiner - thank you for the patch! And sorry about the problem.