<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://open-csp.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=3f181944-9694-4c7c-83d3-a6193204adb3</id>
	<title>CSP Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://open-csp.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=3f181944-9694-4c7c-83d3-a6193204adb3"/>
	<link rel="alternate" type="text/html" href="https://open-csp.org/Special:Contributions/3f181944-9694-4c7c-83d3-a6193204adb3"/>
	<updated>2026-05-10T21:39:19Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://open-csp.org/index.php?title=DevOps:Doc/FlexForm/2.5/API/FlexFormOpen&amp;diff=3944</id>
		<title>DevOps:Doc/FlexForm/2.5/API/FlexFormOpen</title>
		<link rel="alternate" type="text/html" href="https://open-csp.org/index.php?title=DevOps:Doc/FlexForm/2.5/API/FlexFormOpen&amp;diff=3944"/>
		<updated>2026-02-23T14:37:51Z</updated>

		<summary type="html">&lt;p&gt;3f181944-9694-4c7c-83d3-a6193204adb3: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Name===&lt;br /&gt;
API&lt;br /&gt;
&lt;br /&gt;
===Type===&lt;br /&gt;
FlexFormOpen (Available since 2.7.1)&lt;br /&gt;
&lt;br /&gt;
===Synopsis===&lt;br /&gt;
Open FlexForm API endpoint for lightweight validation actions.&lt;br /&gt;
&lt;br /&gt;
===Description===&lt;br /&gt;
The &#039;&#039;&#039;FlexFormOpen&#039;&#039;&#039; API provides limited, publicly accessible FlexForm functionality intended for frontend validation use cases. It does not require readapi-rights.&lt;br /&gt;
&lt;br /&gt;
Currently, the available actions are:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;canUserBeCreated&#039;&#039;&#039; – Checks whether a username can be created.&lt;br /&gt;
&lt;br /&gt;
This API is especially useful when implementing [[DevOps:Doc/FlexForm/2.0/CreateUser|CreateUser]] forms. &lt;br /&gt;
&lt;br /&gt;
When paired with JavaScript, it allows real-time username validation (e.g., checking whether a username already exists or is invalid) before form submission.&lt;br /&gt;
&lt;br /&gt;
For security reasons, this API is &#039;&#039;&#039;disabled by default&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
To enable it, set the following configuration option:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$wgFlexFormConfig[&#039;allowFlexFormOpenAPI&#039;] = true;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Parameters===&lt;br /&gt;
&#039;&#039;&#039;ffAction&#039;&#039;&#039; – The FlexFormOpen action to execute.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;canUserBeCreated&#039;&#039;&#039; (required)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;additionalData&#039;&#039;&#039; – Additional data required for the action. &lt;br /&gt;
&lt;br /&gt;
* For &#039;&#039;&#039;canUserBeCreated&#039;&#039;&#039;, this must contain the username to validate. (required)&lt;br /&gt;
&lt;br /&gt;
===Action: canUserBeCreated===&lt;br /&gt;
Checks whether a username:&lt;br /&gt;
&lt;br /&gt;
* Does not already exist&lt;br /&gt;
* Meets MediaWiki username validation requirements&lt;br /&gt;
* Can safely be created&lt;br /&gt;
&lt;br /&gt;
This action does not create the user. It only performs validation.&lt;br /&gt;
&lt;br /&gt;
===Example (JavaScript)===&lt;br /&gt;
Example using MediaWiki&#039;s mw.Api():&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var api = new mw.Api();&lt;br /&gt;
&lt;br /&gt;
api.get({&lt;br /&gt;
    action: &amp;quot;FlexFormOpen&amp;quot;,&lt;br /&gt;
    ffAction: &amp;quot;canUserBeCreated&amp;quot;,&lt;br /&gt;
    additionalData: correctedUsername,&lt;br /&gt;
    formatversion: 2&lt;br /&gt;
}).done(function (data) {&lt;br /&gt;
&lt;br /&gt;
    if (data.canUser === true) {&lt;br /&gt;
        console.log(&amp;quot;Username can be created.&amp;quot;);&lt;br /&gt;
    } else {&lt;br /&gt;
        console.log(&amp;quot;Username cannot be created.&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the API is disabled via configuration (or default):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;error&amp;quot;: {&lt;br /&gt;
        &amp;quot;message&amp;quot;: &amp;quot;FlexFormOpen API is disabled.&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Security Considerations===&lt;br /&gt;
Because this API does not require authentication, it is disabled by default.&lt;br /&gt;
&lt;br /&gt;
It is strongly recommended to:&lt;br /&gt;
&lt;br /&gt;
* Only enable it when necessary&lt;br /&gt;
* Implement frontend throttling or rate limiting if heavy usage is expected&lt;br /&gt;
* Avoid exposing sensitive validation logic&lt;br /&gt;
&lt;br /&gt;
===Future Improvements===&lt;br /&gt;
In future versions, an optional attribute may be introduced on FlexForm input fields that automatically performs username validation without requiring custom JavaScript.&lt;/div&gt;</summary>
		<author><name>3f181944-9694-4c7c-83d3-a6193204adb3</name></author>
	</entry>
	<entry>
		<id>https://open-csp.org/index.php?title=DevOps:Doc/FlexForm/1.1/API/FlexFormOpen&amp;diff=3943</id>
		<title>DevOps:Doc/FlexForm/1.1/API/FlexFormOpen</title>
		<link rel="alternate" type="text/html" href="https://open-csp.org/index.php?title=DevOps:Doc/FlexForm/1.1/API/FlexFormOpen&amp;diff=3943"/>
		<updated>2026-02-23T14:35:27Z</updated>

		<summary type="html">&lt;p&gt;3f181944-9694-4c7c-83d3-a6193204adb3: 3f181944-9694-4c7c-83d3-a6193204adb3 moved page DevOps:Doc/FlexForm/1.1/API/FlexFormOpen to DevOps:Doc/FlexForm/2.5/API/FlexFormOpen: Misspelled title&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[DevOps:Doc/FlexForm/2.5/API/FlexFormOpen]]&lt;/div&gt;</summary>
		<author><name>3f181944-9694-4c7c-83d3-a6193204adb3</name></author>
	</entry>
	<entry>
		<id>https://open-csp.org/index.php?title=DevOps:Doc/FlexForm/2.5/API/FlexFormOpen&amp;diff=3942</id>
		<title>DevOps:Doc/FlexForm/2.5/API/FlexFormOpen</title>
		<link rel="alternate" type="text/html" href="https://open-csp.org/index.php?title=DevOps:Doc/FlexForm/2.5/API/FlexFormOpen&amp;diff=3942"/>
		<updated>2026-02-23T14:35:26Z</updated>

		<summary type="html">&lt;p&gt;3f181944-9694-4c7c-83d3-a6193204adb3: 3f181944-9694-4c7c-83d3-a6193204adb3 moved page DevOps:Doc/FlexForm/1.1/API/FlexFormOpen to DevOps:Doc/FlexForm/2.5/API/FlexFormOpen: Misspelled title&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Name===&lt;br /&gt;
API&lt;br /&gt;
&lt;br /&gt;
===Type===&lt;br /&gt;
FlexFormOpen&lt;br /&gt;
&lt;br /&gt;
===Synopsis===&lt;br /&gt;
Open FlexForm API endpoint for lightweight validation actions.&lt;br /&gt;
&lt;br /&gt;
===Description===&lt;br /&gt;
The &#039;&#039;&#039;FlexFormOpen&#039;&#039;&#039; API provides limited, publicly accessible FlexForm functionality intended for frontend validation use cases. It does not require readapi-rights.&lt;br /&gt;
&lt;br /&gt;
Currently, the available actions are:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;canUserBeCreated&#039;&#039;&#039; – Checks whether a username can be created.&lt;br /&gt;
&lt;br /&gt;
This API is especially useful when implementing [[DevOps:Doc/FlexForm/2.0/CreateUser|CreateUser]] forms. &lt;br /&gt;
&lt;br /&gt;
When paired with JavaScript, it allows real-time username validation (e.g., checking whether a username already exists or is invalid) before form submission.&lt;br /&gt;
&lt;br /&gt;
For security reasons, this API is &#039;&#039;&#039;disabled by default&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
To enable it, set the following configuration option:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$wgFlexFormConfig[&#039;allowFlexFormOpenAPI&#039;] = true;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Parameters===&lt;br /&gt;
&#039;&#039;&#039;ffAction&#039;&#039;&#039; – The FlexFormOpen action to execute.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;canUserBeCreated&#039;&#039;&#039; (required)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;additionalData&#039;&#039;&#039; – Additional data required for the action. &lt;br /&gt;
&lt;br /&gt;
* For &#039;&#039;&#039;canUserBeCreated&#039;&#039;&#039;, this must contain the username to validate. (required)&lt;br /&gt;
&lt;br /&gt;
===Action: canUserBeCreated===&lt;br /&gt;
Checks whether a username:&lt;br /&gt;
&lt;br /&gt;
* Does not already exist&lt;br /&gt;
* Meets MediaWiki username validation requirements&lt;br /&gt;
* Can safely be created&lt;br /&gt;
&lt;br /&gt;
This action does not create the user. It only performs validation.&lt;br /&gt;
&lt;br /&gt;
===Example (JavaScript)===&lt;br /&gt;
Example using MediaWiki&#039;s mw.Api():&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var api = new mw.Api();&lt;br /&gt;
&lt;br /&gt;
api.get({&lt;br /&gt;
    action: &amp;quot;FlexFormOpen&amp;quot;,&lt;br /&gt;
    ffAction: &amp;quot;canUserBeCreated&amp;quot;,&lt;br /&gt;
    additionalData: correctedUsername,&lt;br /&gt;
    formatversion: 2&lt;br /&gt;
}).done(function (data) {&lt;br /&gt;
&lt;br /&gt;
    if (data.canUser === true) {&lt;br /&gt;
        console.log(&amp;quot;Username can be created.&amp;quot;);&lt;br /&gt;
    } else {&lt;br /&gt;
        console.log(&amp;quot;Username cannot be created.&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the API is disabled via configuration (or default):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;error&amp;quot;: {&lt;br /&gt;
        &amp;quot;message&amp;quot;: &amp;quot;FlexFormOpen API is disabled.&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Security Considerations===&lt;br /&gt;
Because this API does not require authentication, it is disabled by default.&lt;br /&gt;
&lt;br /&gt;
It is strongly recommended to:&lt;br /&gt;
&lt;br /&gt;
* Only enable it when necessary&lt;br /&gt;
* Implement frontend throttling or rate limiting if heavy usage is expected&lt;br /&gt;
* Avoid exposing sensitive validation logic&lt;br /&gt;
&lt;br /&gt;
===Future Improvements===&lt;br /&gt;
In future versions, an optional attribute may be introduced on FlexForm input fields that automatically performs username validation without requiring custom JavaScript.&lt;/div&gt;</summary>
		<author><name>3f181944-9694-4c7c-83d3-a6193204adb3</name></author>
	</entry>
	<entry>
		<id>https://open-csp.org/index.php?title=DevOps:Doc/FlexForm/2.0/Installation_of_FlexForm&amp;diff=3937</id>
		<title>DevOps:Doc/FlexForm/2.0/Installation of FlexForm</title>
		<link rel="alternate" type="text/html" href="https://open-csp.org/index.php?title=DevOps:Doc/FlexForm/2.0/Installation_of_FlexForm&amp;diff=3937"/>
		<updated>2026-02-23T14:26:53Z</updated>

		<summary type="html">&lt;p&gt;3f181944-9694-4c7c-83d3-a6193204adb3: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;FlexForm is installed using [https://www.mediawiki.org/wiki/Composer/For_extensions Composer]: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
composer require open-csp/flex-form&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can install FlexForm from [https://github.com/Open-CSP/FlexForm github] by installing it in extensions/FlexForm. You do have to run composer --update inside that folder after installation to get all dependencies. &lt;br /&gt;
&lt;br /&gt;
==== Setup ====&lt;br /&gt;
You can tweak &#039;&#039;&#039;FlexForm&#039;&#039;&#039; to an extent in your &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Will render form that makes no sense when inspected in the browser.&lt;br /&gt;
$wgFlexFormConfig[&#039;secure&#039;] = true;&lt;br /&gt;
&lt;br /&gt;
// A salt key for encryption. Used together with &amp;quot;secure&amp;quot; option. Must be set when using multiple instances of a wiki.&lt;br /&gt;
$wgFlexFormConfig[&#039;sec_key&#039;] = &amp;quot;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// Interval time in ms, defaults to 3 minutes (180000 ms). Form is submitted on each interval regardless of changes.&lt;br /&gt;
$wgFlexFormConfig[&#039;auto_save_interval&#039;] = 30000;&lt;br /&gt;
&lt;br /&gt;
// Time in ms, defaults to 3 seconds (3000 ms). Form is submitted after the specified time, timer starts when there is a change in the form. Timer resets if there is another change before the time has passed.&lt;br /&gt;
$wgFlexFormConfig[&#039;auto_save_after_change&#039;] = 3000;&lt;br /&gt;
&lt;br /&gt;
// Text on the autosave button to toggle on.&lt;br /&gt;
$wgFlexFormConfig[&#039;auto_save_btn_on&#039;] = &#039;Autosave on&#039;;&lt;br /&gt;
&lt;br /&gt;
// Text on the autosave button to toggle off.&lt;br /&gt;
$wgFlexFormConfig[&#039;auto_save_btn_off&#039;] = &#039;Autosave off&#039;;&lt;br /&gt;
&lt;br /&gt;
// Currently the only form.&lt;br /&gt;
$wgFlexFormConfig[&#039;FlexFormDefaultTheme&#039;] = &amp;quot;plain&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// reCaptcha site key.&lt;br /&gt;
$wgFlexFormConfig[&#039;rc_site_key&#039;] = &amp;quot;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// reCaptcha secret key.&lt;br /&gt;
$wgFlexFormConfig[&#039;rc_secret_key&#039;] = &amp;quot;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// Where to store images temporarily that need to be format converted.&lt;br /&gt;
$wgFlexFormConfig[&#039;file_temp_path&#039;] = &amp;quot;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// Defaults to false. Set to yes if FlexForm is allowed to create new users.&lt;br /&gt;
$wgFlexFormConfig[&#039;can_create_user&#039;] = &amp;quot;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// Defaults to false. Will filter all parser arguments to plain text, except value parameters. Will also disallow onClick and onFocus parameter. This feature will most likely be removed in future updates.&lt;br /&gt;
$wgFlexFormConfig[&#039;filter_input_tags&#039;] = false;&lt;br /&gt;
&lt;br /&gt;
// Defaults to what is described by the loadscript form argument. When you change it do a different folder, then loadScript argument will be looking in this folder for its JavaScript file to load with the Form.&lt;br /&gt;
$wgFlexFormConfig[&#039;loadScriptPath&#039;] = &amp;quot;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// Defaults to sysop. Only a user in the allowedGroups is able to edit pages with a FlexForm in the source.&lt;br /&gt;
$wgFlexFormConfig[&#039;allowedGroups&#039;] = [&amp;quot;sysop&amp;quot;,&amp;quot;moderator&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
// Defaults to true. When a user in the allowedGroups creates a form it will become valid and will be rendered. Someone not in the allowedGroups can create a form and save it, but it will never be rendered until a user from the allowedGroups will edit and re-save the page. Only then will a form become valid. The message &amp;quot;FORM CANNOT BE RENDERED, NOT VALIDATED&amp;quot; will be shown instead of the form when it is invalid or depending on the next setting an image stating it cannot be rendered.&lt;br /&gt;
$wgFlexFormConfig[&#039;renderonlyapprovedforms&#039;] = true;&lt;br /&gt;
&lt;br /&gt;
// When a form is invalid, an invalid image will be rendered instead of the form. Set to true to render i18n invalid message.&lt;br /&gt;
$wgFlexFormConfig[&#039;renderi18nErrorInsteadofImageForApprovedForms&#039;] = false;&lt;br /&gt;
&lt;br /&gt;
// Defaults to false. This differs from FlexForm before 2.0. FlexForm will now honor the UserCan functions in MediaWiki. If a form edits or creates a page a user has no rights to, the form will fail.&lt;br /&gt;
$wgFlexFormConfig[&#039;userscaneditallpages&#039;] = false;&lt;br /&gt;
&lt;br /&gt;
// Defaults to true. If a user is not in the allowedGroups then hide edit and editsource menu items for any page containing a FlexForm form.&lt;br /&gt;
$wgFlexFormConfig[&#039;hideEdit&#039;] = true;&lt;br /&gt;
&lt;br /&gt;
// Defaults to false. Will turn titles given to wscreate into url friendly slugs. Creating only latin character and converting spaces and special characters.&lt;br /&gt;
$wgFlexFormConfig[&#039;create-seo-titles&#039;] = true;&lt;br /&gt;
&lt;br /&gt;
// If you have a custom/different version of Pandoc than the one set by your hosting provider, you can add its local path here and FlexForm will use it, instead of the one set by environment variables&lt;br /&gt;
$wgFlexFormConfig[&#039;pandoc-install-path&#039;] = &#039;/bin/pandoc&#039;; // This will look for Pandoc executable in the root/bin of your MediaWiki instalment&lt;br /&gt;
&lt;br /&gt;
// FlexForm will by default always do an extra null edit on a save or an edit. This is mainly due to SMW. Not always this is necessary, so with this option you can turn it off. ( resulting in less handling time )&lt;br /&gt;
$wgFlexFormConfig[&#039;forceNullEdit&#039;] = true; // Default to true for backwards compatibility&lt;br /&gt;
&lt;br /&gt;
// As of version 2.7.1: This will enable FlexFormOpenAPI, making it possible to use API &#039;CanUserBeCreated&#039; which does not require read-rights.&lt;br /&gt;
$wgFlexFormConfig[&#039;allowFlexFormOpenAPI&#039;] = false;&lt;br /&gt;
&lt;br /&gt;
// As of version 2.7.1:  When sending email, should we use MediaWiki mail settings? (When MediaWiki wgSMTP is set, FlexForm will use those settings, if they are not set, FlexForm will not use SMTP)&lt;br /&gt;
$wgFlexFormConfig[&#039;use_mediawiki_mail_settings&#039;] = false;&lt;br /&gt;
&lt;br /&gt;
// When sending email, should we use separate smtp?&lt;br /&gt;
// As off version 2.7.1: If this is set to true AND &#039;use_mediawiki_mail_settings&#039; is also set to true, then &#039;use_mediawiki_mail_settings&#039; is ignored&lt;br /&gt;
$wgFlexFormConfig[&#039;use_smtp&#039;] = false;&lt;br /&gt;
&lt;br /&gt;
$wgFlexFormConfig[&#039;smtp_host&#039;] = &amp;quot;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
$wgFlexFormConfig[&#039;smtp_authentication&#039;] = true;&lt;br /&gt;
&lt;br /&gt;
$wgFlexFormConfig[&#039;smtp_username&#039;] = &amp;quot;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
$wgFlexFormConfig[&#039;smtp_password&#039;] = &amp;quot;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
$wgFlexFormConfig[&#039;smtp_secure&#039;] = &amp;quot;TLS&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
$wgFlexFormConfig[&#039;smtp_port&#039;] = &amp;quot;587&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// If you have very complicated forms and the result is not what you expect, you can turn on Debug and review every step FlexForm makes. The results are not documented and very nerdly. Before version v2.6.3 debug on would not actually create or edit a page. As off 2.6.4 it does, it will show the debug results on the FlexForm Special page.&lt;br /&gt;
// $wgFlexFormConfig[&#039;debug&#039;] = true; // Defaults to false&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
* Add the following line at the end of your &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt; to enable the extension:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
wfLoadExtension( &#039;FlexForm&#039; );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* It is also recommended to turn off the parser cache when using FlexForm:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$wgParserCacheType = CACHE_NONE;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Run the [https://www.mediawiki.org/wiki/Manual:Update.php update script] which will automatically create the necessary database tables that this extension needs. &lt;br /&gt;
* Navigate to Special:Version on your wiki to verify that the extension is successfully installed.&lt;br /&gt;
&lt;br /&gt;
==== Migrate from version 1.x to 2.0 ====&lt;br /&gt;
* Please notice the changes in the config settings.&lt;br /&gt;
* Do not forget to run update.php.&lt;br /&gt;
* Also, by default, the setting &#039;&#039;&#039;renderonlyapprovedforms&#039;&#039;&#039; will be &#039;&#039;&#039;true&#039;&#039;&#039;. Meaning that once you install FlexForm v2.0 all your existing FlexForm forms in your wiki will be shown as unvalidated. Visit [[DevOps:Doc/FlexForm/2.0/Validated Forms|Validated Forms]] to read how to solve this easily.&lt;br /&gt;
&lt;br /&gt;
==== Notification/Messages ====&lt;br /&gt;
FlexForm has a notification system built in. This is used to show possible errors or success/custom messages. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;As of version 2.2.2 this is a default feature&#039;&#039;&#039; and &amp;lt;nowiki&amp;gt;&amp;lt;form showmessage /&amp;gt;&amp;lt;/nowiki&amp;gt; is deprecated.&lt;/div&gt;</summary>
		<author><name>3f181944-9694-4c7c-83d3-a6193204adb3</name></author>
	</entry>
	<entry>
		<id>https://open-csp.org/index.php?title=DevOps:Doc/FlexForm/2.5/API/FlexFormOpen&amp;diff=3935</id>
		<title>DevOps:Doc/FlexForm/2.5/API/FlexFormOpen</title>
		<link rel="alternate" type="text/html" href="https://open-csp.org/index.php?title=DevOps:Doc/FlexForm/2.5/API/FlexFormOpen&amp;diff=3935"/>
		<updated>2026-02-23T14:24:39Z</updated>

		<summary type="html">&lt;p&gt;3f181944-9694-4c7c-83d3-a6193204adb3: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Name===&lt;br /&gt;
API&lt;br /&gt;
&lt;br /&gt;
===Type===&lt;br /&gt;
FlexFormOpen&lt;br /&gt;
&lt;br /&gt;
===Synopsis===&lt;br /&gt;
Open FlexForm API endpoint for lightweight validation actions.&lt;br /&gt;
&lt;br /&gt;
===Description===&lt;br /&gt;
The &#039;&#039;&#039;FlexFormOpen&#039;&#039;&#039; API provides limited, publicly accessible FlexForm functionality intended for frontend validation use cases. It does not require readapi-rights.&lt;br /&gt;
&lt;br /&gt;
Currently, the available actions are:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;canUserBeCreated&#039;&#039;&#039; – Checks whether a username can be created.&lt;br /&gt;
&lt;br /&gt;
This API is especially useful when implementing [[DevOps:Doc/FlexForm/2.0/CreateUser|CreateUser]] forms. &lt;br /&gt;
&lt;br /&gt;
When paired with JavaScript, it allows real-time username validation (e.g., checking whether a username already exists or is invalid) before form submission.&lt;br /&gt;
&lt;br /&gt;
For security reasons, this API is &#039;&#039;&#039;disabled by default&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
To enable it, set the following configuration option:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$wgFlexFormConfig[&#039;allowFlexFormOpenAPI&#039;] = true;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Parameters===&lt;br /&gt;
&#039;&#039;&#039;ffAction&#039;&#039;&#039; – The FlexFormOpen action to execute.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;canUserBeCreated&#039;&#039;&#039; (required)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;additionalData&#039;&#039;&#039; – Additional data required for the action. &lt;br /&gt;
&lt;br /&gt;
* For &#039;&#039;&#039;canUserBeCreated&#039;&#039;&#039;, this must contain the username to validate. (required)&lt;br /&gt;
&lt;br /&gt;
===Action: canUserBeCreated===&lt;br /&gt;
Checks whether a username:&lt;br /&gt;
&lt;br /&gt;
* Does not already exist&lt;br /&gt;
* Meets MediaWiki username validation requirements&lt;br /&gt;
* Can safely be created&lt;br /&gt;
&lt;br /&gt;
This action does not create the user. It only performs validation.&lt;br /&gt;
&lt;br /&gt;
===Example (JavaScript)===&lt;br /&gt;
Example using MediaWiki&#039;s mw.Api():&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var api = new mw.Api();&lt;br /&gt;
&lt;br /&gt;
api.get({&lt;br /&gt;
    action: &amp;quot;FlexFormOpen&amp;quot;,&lt;br /&gt;
    ffAction: &amp;quot;canUserBeCreated&amp;quot;,&lt;br /&gt;
    additionalData: correctedUsername,&lt;br /&gt;
    formatversion: 2&lt;br /&gt;
}).done(function (data) {&lt;br /&gt;
&lt;br /&gt;
    if (data.canUser === true) {&lt;br /&gt;
        console.log(&amp;quot;Username can be created.&amp;quot;);&lt;br /&gt;
    } else {&lt;br /&gt;
        console.log(&amp;quot;Username cannot be created.&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the API is disabled via configuration (or default):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;error&amp;quot;: {&lt;br /&gt;
        &amp;quot;message&amp;quot;: &amp;quot;FlexFormOpen API is disabled.&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Security Considerations===&lt;br /&gt;
Because this API does not require authentication, it is disabled by default.&lt;br /&gt;
&lt;br /&gt;
It is strongly recommended to:&lt;br /&gt;
&lt;br /&gt;
* Only enable it when necessary&lt;br /&gt;
* Implement frontend throttling or rate limiting if heavy usage is expected&lt;br /&gt;
* Avoid exposing sensitive validation logic&lt;br /&gt;
&lt;br /&gt;
===Future Improvements===&lt;br /&gt;
In future versions, an optional attribute may be introduced on FlexForm input fields that automatically performs username validation without requiring custom JavaScript.&lt;/div&gt;</summary>
		<author><name>3f181944-9694-4c7c-83d3-a6193204adb3</name></author>
	</entry>
	<entry>
		<id>https://open-csp.org/index.php?title=DevOps:Doc/FlexForm/2.5/API/FlexFormOpen&amp;diff=3932</id>
		<title>DevOps:Doc/FlexForm/2.5/API/FlexFormOpen</title>
		<link rel="alternate" type="text/html" href="https://open-csp.org/index.php?title=DevOps:Doc/FlexForm/2.5/API/FlexFormOpen&amp;diff=3932"/>
		<updated>2026-02-23T14:12:33Z</updated>

		<summary type="html">&lt;p&gt;3f181944-9694-4c7c-83d3-a6193204adb3: User:3f181944-9694-4c7c-83d3-a6193204adb3&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;fdsfds&lt;/div&gt;</summary>
		<author><name>3f181944-9694-4c7c-83d3-a6193204adb3</name></author>
	</entry>
	<entry>
		<id>https://open-csp.org/index.php?title=DevOps:Doc/FlexForm/2.5/API/FlexFormOpen&amp;diff=3931</id>
		<title>DevOps:Doc/FlexForm/2.5/API/FlexFormOpen</title>
		<link rel="alternate" type="text/html" href="https://open-csp.org/index.php?title=DevOps:Doc/FlexForm/2.5/API/FlexFormOpen&amp;diff=3931"/>
		<updated>2026-02-23T14:12:25Z</updated>

		<summary type="html">&lt;p&gt;3f181944-9694-4c7c-83d3-a6193204adb3: User:3f181944-9694-4c7c-83d3-a6193204adb3&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;fdsfds&lt;/div&gt;</summary>
		<author><name>3f181944-9694-4c7c-83d3-a6193204adb3</name></author>
	</entry>
	<entry>
		<id>https://open-csp.org/index.php?title=DevOps:Doc/FlexForm/2.5/API/FlexFormOpen&amp;diff=3930</id>
		<title>DevOps:Doc/FlexForm/2.5/API/FlexFormOpen</title>
		<link rel="alternate" type="text/html" href="https://open-csp.org/index.php?title=DevOps:Doc/FlexForm/2.5/API/FlexFormOpen&amp;diff=3930"/>
		<updated>2026-02-23T14:12:15Z</updated>

		<summary type="html">&lt;p&gt;3f181944-9694-4c7c-83d3-a6193204adb3: Created page with &amp;quot;fdsfds&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;fdsfds&lt;/div&gt;</summary>
		<author><name>3f181944-9694-4c7c-83d3-a6193204adb3</name></author>
	</entry>
	<entry>
		<id>https://open-csp.org/index.php?title=DevOps:Doc/FlexForm&amp;diff=3922</id>
		<title>DevOps:Doc/FlexForm</title>
		<link rel="alternate" type="text/html" href="https://open-csp.org/index.php?title=DevOps:Doc/FlexForm&amp;diff=3922"/>
		<updated>2026-02-23T14:08:46Z</updated>

		<summary type="html">&lt;p&gt;3f181944-9694-4c7c-83d3-a6193204adb3: User:3f181944-9694-4c7c-83d3-a6193204adb3&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:FlexForm logo.png|frameless|link=]]&lt;br /&gt;
&lt;br /&gt;
=== Unlock Infinite Possibilities with FlexForm: Empower Your MediaWiki! ===&lt;br /&gt;
&#039;&#039;FlexForm, the innovative MediaWiki extension developed for Open CSP, empowers you to unleash the full potential of your wiki. Seamlessly create and customize dynamic forms that cater to your unique requirements, whether it&#039;s gathering user feedback, conducting surveys, or efficiently managing data inputs. Say goodbye to rigid templates and welcome a new era of flexibility! With easy customization and seamless integration, FlexForm simplifies form management, enabling you to maximize productivity and engage your community effortlessly. Take charge of your wiki&#039;s data like never before and discover endless possibilities with FlexForm.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;FlexForm&#039;&#039;&#039; is an enhanced HTML5 Form rendering engine.&lt;br /&gt;
&lt;br /&gt;
It renders HTML5 form elements and allows editing or creating one or more pages with one form.&lt;br /&gt;
&lt;br /&gt;
When you are familiar with creating HTML5 forms you will have no problem using &#039;&#039;&#039;FlexForm&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
To get started for the first time, have a look at the [[DevOps:Doc/FlexForm/1.0/Getting started|getting started]] documentation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;FlexForm&#039;&#039;&#039; is a complete rewrite from the previous &#039;&#039;&#039;WSForm&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Why FlexForm ===&lt;br /&gt;
Currently there are several MediaWiki extensions that help you create Forms for your website.&lt;br /&gt;
&lt;br /&gt;
What makes &#039;&#039;&#039;FlexForm&#039;&#039;&#039; different from the other extensions, is that it is really flexible. You can create a simple form (or a complex one) on any page and in any namespace.&lt;br /&gt;
&lt;br /&gt;
You do not have to use any special page to setup a form or to render it.&lt;br /&gt;
&lt;br /&gt;
It is also not bound to any kind of styling. This means that a simple form will not look very nice by default, but adding some css styling classes to the form gives you all the freedom in styling the form to any and all your needs. For those who are a bit less stylish, &#039;&#039;&#039;FlexForm&#039;&#039;&#039; will be supporting MediaWiki OOUI styling in the future by means of Themes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;FlexForm&#039;&#039;&#039; has Themes support.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;FlexForm&#039;&#039;&#039; is very powerful.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;One&#039;&#039;&#039; single form can:&lt;br /&gt;
&lt;br /&gt;
* create a page in the Wiki&lt;br /&gt;
* create several pages in the Wiki&lt;br /&gt;
* can edit a page in the Wiki&lt;br /&gt;
* can edit several pages in the Wiki&lt;br /&gt;
* can edit Multi Revision Content slots&lt;br /&gt;
* can send an email&lt;br /&gt;
* can upload a file&lt;br /&gt;
* can upload multiple files&lt;br /&gt;
* Convert Word to a Wiki page&lt;br /&gt;
* Convert Excel to JSON&lt;br /&gt;
* Send a message to a Wiki user or users&lt;br /&gt;
&lt;br /&gt;
Or do a combination of all of the above.&lt;br /&gt;
&lt;br /&gt;
There are also Show on Select options, Multiple instances options and submit a form through Ajax (so the user stays on the page without any reload).&lt;br /&gt;
&lt;br /&gt;
If you still want more features, check the documentation on the right.&lt;br /&gt;
&lt;br /&gt;
=== How is it different from PageForms? ===&lt;br /&gt;
Some of the main difference are:&lt;br /&gt;
&lt;br /&gt;
* PageForms will render forms through its Special page. The only exception is the &#039;&#039;autoedit&#039;&#039; parser function that will allow to edit a parameter in a template on a page using Ajax.&lt;br /&gt;
* PageForms renders an edit button on a page. With it you can edit Template parameters on a page.&lt;br /&gt;
* FlexForm can render a form on any page or render several forms on page. It allows for editing multiple Template parameters on a page or different pages.&lt;br /&gt;
* FlexForm will not read the content and template of a page and render an edit form. It does allow for you to create a very simple form that gives you all the freedom to show only relevant information to be edited.&lt;br /&gt;
* FlexForm is designed to handle multiple tasks with one form. Create or edit page(s), send an email, upload one or multiple files or a combination.&lt;br /&gt;
* FlexForm can be combined with the Chameleon skin and Bootstrap (or with custom js/css) to render forms in a popup, tab or collapsible element to create a more user-friendly experience where editing is part of the same page where you are also displaying information.&lt;/div&gt;</summary>
		<author><name>3f181944-9694-4c7c-83d3-a6193204adb3</name></author>
	</entry>
	<entry>
		<id>https://open-csp.org/index.php?title=DevOps:Doc/FlexForm&amp;diff=3921</id>
		<title>DevOps:Doc/FlexForm</title>
		<link rel="alternate" type="text/html" href="https://open-csp.org/index.php?title=DevOps:Doc/FlexForm&amp;diff=3921"/>
		<updated>2026-02-23T14:08:37Z</updated>

		<summary type="html">&lt;p&gt;3f181944-9694-4c7c-83d3-a6193204adb3: User:3f181944-9694-4c7c-83d3-a6193204adb3&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:FlexForm logo.png|frameless|link=]]&lt;br /&gt;
&lt;br /&gt;
=== Unlock Infinite Possibilities with FlexForm: Empower Your MediaWiki! ===&lt;br /&gt;
&#039;&#039;FlexForm, the innovative MediaWiki extension developed for Open CSP, empowers you to unleash the full potential of your wiki. Seamlessly create and customize dynamic forms that cater to your unique requirements, whether it&#039;s gathering user feedback, conducting surveys, or efficiently managing data inputs. Say goodbye to rigid templates and welcome a new era of flexibility! With easy customization and seamless integration, FlexForm simplifies form management, enabling you to maximize productivity and engage your community effortlessly. Take charge of your wiki&#039;s data like never before and discover endless possibilities with FlexForm.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;FlexForm&#039;&#039;&#039; is an enhanced HTML5 Form rendering engine.&lt;br /&gt;
&lt;br /&gt;
It renders HTML5 form elements and allows editing or creating one or more pages with one form.&lt;br /&gt;
&lt;br /&gt;
When you are familiar with creating HTML5 forms you will have no problem using &#039;&#039;&#039;FlexForm&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
To get started for the first time, have a look at the [[DevOps:Doc/FlexForm/1.0/Getting started|getting started]] documentation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;FlexForm&#039;&#039;&#039; is a complete rewrite from the previous &#039;&#039;&#039;WSForm&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Why FlexForm ===&lt;br /&gt;
Currently there are several MediaWiki extensions that help you create Forms for your website.&lt;br /&gt;
&lt;br /&gt;
What makes &#039;&#039;&#039;FlexForm&#039;&#039;&#039; different from the other extensions, is that it is really flexible. You can create a simple form (or a complex one) on any page and in any namespace.&lt;br /&gt;
&lt;br /&gt;
You do not have to use any special page to setup a form or to render it.&lt;br /&gt;
&lt;br /&gt;
It is also not bound to any kind of styling. This means that a simple form will not look very nice by default, but adding some css styling classes to the form gives you all the freedom in styling the form to any and all your needs. For those who are a bit less stylish, &#039;&#039;&#039;FlexForm&#039;&#039;&#039; will be supporting MediaWiki OOUI styling in the future by means of Themes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;FlexForm&#039;&#039;&#039; has Themes support.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;FlexForm&#039;&#039;&#039; is very powerful.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;One&#039;&#039;&#039; single form can:&lt;br /&gt;
&lt;br /&gt;
* create a page in the Wiki&lt;br /&gt;
* create several pages in the Wiki&lt;br /&gt;
* can edit a page in the Wiki&lt;br /&gt;
* can edit several pages in the Wiki&lt;br /&gt;
* can edit Multi Revision Content slots&lt;br /&gt;
* can send an email&lt;br /&gt;
* can upload a file&lt;br /&gt;
* can upload multiple files&lt;br /&gt;
* Convert Word to a Wiki page&lt;br /&gt;
* Convert Excel to JSON&lt;br /&gt;
* Send a message to a Wiki user or users&lt;br /&gt;
&lt;br /&gt;
Or do a combination of all of the above.&lt;br /&gt;
&lt;br /&gt;
There are also Show on Select options, Multiple instances options and submit a form through Ajax (so the user stays on the page without any reload).&lt;br /&gt;
&lt;br /&gt;
If you still want more features, check the documentation on the right.&lt;br /&gt;
&lt;br /&gt;
=== How is it different from PageForms? ===&lt;br /&gt;
Some of the main difference are:&lt;br /&gt;
&lt;br /&gt;
* PageForms will render forms through its Special page. The only exception is the &#039;&#039;autoedit&#039;&#039; parser function that will allow to edit a parameter in a template on a page using Ajax.&lt;br /&gt;
* PageForms renders an edit button on a page. With it you can edit Template parameters on a page.&lt;br /&gt;
* FlexForm can render a form on any page or render several forms on page. It allows for editing multiple Template parameters on a page or different pages.&lt;br /&gt;
* FlexForm will not read the content and template of a page and render an edit form. It does allow for you to create a very simple form that gives you all the freedom to show only relevant information to be edited.&lt;br /&gt;
* FlexForm is designed to handle multiple tasks with one form. Create or edit page(s), send an email, upload one or multiple files or a combination.&lt;br /&gt;
* FlexForm can be combined with the Chameleon skin and Bootstrap (or with custom js/css) to render forms in a popup, tab or collapsible element to create a more user-friendly experience where editing is part of the same page where you are also displaying information.&lt;/div&gt;</summary>
		<author><name>3f181944-9694-4c7c-83d3-a6193204adb3</name></author>
	</entry>
	<entry>
		<id>https://open-csp.org/index.php?title=Open_CSP_Steering_committee&amp;diff=3854</id>
		<title>Open CSP Steering committee</title>
		<link rel="alternate" type="text/html" href="https://open-csp.org/index.php?title=Open_CSP_Steering_committee&amp;diff=3854"/>
		<updated>2025-09-23T13:53:04Z</updated>

		<summary type="html">&lt;p&gt;3f181944-9694-4c7c-83d3-a6193204adb3: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Agenda of the steering committee meetings ==&lt;br /&gt;
&lt;br /&gt;
* Welcome and Recap&lt;br /&gt;
* Project Status and Updates&lt;br /&gt;
* Technical Roadmap&lt;br /&gt;
* Marketing activities&lt;br /&gt;
* Risk Management&lt;br /&gt;
* Open Discussion&lt;br /&gt;
* Action Items and Next Meeting&lt;br /&gt;
== Members ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Name&lt;br /&gt;
!Role/focus&lt;br /&gt;
!Organization&lt;br /&gt;
{{Steering committee member&lt;br /&gt;
|Name=Ad Strack van Schijndel&lt;br /&gt;
|Role=Chairperson&lt;br /&gt;
|Organization=Juggel&lt;br /&gt;
}}{{Steering committee member&lt;br /&gt;
|Name=Charlot Cobben&lt;br /&gt;
|Role=Maintainer&lt;br /&gt;
|Organization=Wikibase Solutions&lt;br /&gt;
}}{{Steering committee member&lt;br /&gt;
|Name=Marijn van Wezel&lt;br /&gt;
|Role=Maintainer&lt;br /&gt;
|Organization=Independent&lt;br /&gt;
}}{{Steering committee member&lt;br /&gt;
|Name=Cindy Cicalese&lt;br /&gt;
|Role=Linking pin MediaWiki&lt;br /&gt;
|Organization=Wikimedia Foundation&lt;br /&gt;
}}{{Steering committee member&lt;br /&gt;
|Name=Jeffrey Wang&lt;br /&gt;
|Role=Linking pin Canasta&lt;br /&gt;
|Organization=MyWikis&lt;br /&gt;
}}{{Steering committee member&lt;br /&gt;
|Name=Rich Evans&lt;br /&gt;
|Role=Ambassador&lt;br /&gt;
|Organization=NASA GRC&lt;br /&gt;
}}{{Steering committee member&lt;br /&gt;
|Name=Bryan Hildebrand&lt;br /&gt;
|Role=Ambassador&lt;br /&gt;
|Organization=Tegnosis Knowledge Management&lt;br /&gt;
}}{{Steering committee member&lt;br /&gt;
|Name=Viktor Schelling&lt;br /&gt;
|Role=tba&lt;br /&gt;
|Organization=Independent&lt;br /&gt;
}} &lt;br /&gt;
|}&lt;br /&gt;
== Meetings ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;container&amp;quot;&amp;gt;&amp;lt;!--&lt;br /&gt;
         --&amp;gt;&amp;lt;div class=&amp;quot;row&amp;quot;&amp;gt;&amp;lt;!--&lt;br /&gt;
            --&amp;gt;&amp;lt;div class=&amp;quot;col&amp;quot;&amp;gt;&amp;lt;!--&lt;br /&gt;
               --&amp;gt;&amp;lt;div class=&amp;quot;timeline-steps aos-init aos-animate&amp;quot; data-aos=&amp;quot;fade-up&amp;quot;&amp;gt;&amp;lt;!--&lt;br /&gt;
                  --&amp;gt;{{#invoke:Timeline|show}}&amp;lt;!--&lt;br /&gt;
               --&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;!--&lt;br /&gt;
            --&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;!--&lt;br /&gt;
        --&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;!--&lt;br /&gt;
   --&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
{{#ifingroup:user|&lt;br /&gt;
{{#ask: [[Class::Meeting report]]&lt;br /&gt;
|?Date&lt;br /&gt;
|?Attendees&lt;br /&gt;
|format=table&lt;br /&gt;
}}}}&lt;br /&gt;
&lt;br /&gt;
{{#ifingroup:user|&lt;br /&gt;
=== Create new meeting report ===&lt;br /&gt;
{{Create meeting form&lt;br /&gt;
|Meeting type=Steering committee&lt;br /&gt;
}}}}&lt;br /&gt;
{{#slot:ws-data}}&lt;br /&gt;
{{#ifingroup:moderator,sysop |&lt;br /&gt;
&lt;br /&gt;
=== Edit Agenda meetings ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;form&amp;gt;&lt;br /&gt;
&amp;lt;_edit target=&amp;quot;{{PAGEID:{{FULLPAGENAME}}}}&amp;quot; format=&amp;quot;json&amp;quot; template=&amp;quot;jsonk|milestones&amp;quot; formfield=&amp;quot;timeline-instance&amp;quot; mwslot=&amp;quot;ws-data&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;_instance name=&amp;quot;timeline-instance&amp;quot; format=&amp;quot;json&amp;quot; default-content=&amp;quot;{{#slotdata:ws-data|{{FULLPAGENAME}} |milestones}}&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;timeline-edit&amp;quot;&amp;gt;&amp;lt;label for=&amp;quot;date&amp;quot;&amp;gt;Date&amp;lt;/label&amp;gt;&amp;lt;input type=&amp;quot;date&amp;quot; name=&amp;quot;date&amp;quot; placeholder=&amp;quot;date&amp;quot; /&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;timeline-edit&amp;quot;&amp;gt;&amp;lt;label for=&amp;quot;title&amp;quot;&amp;gt;Title&amp;lt;/label&amp;gt;&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;title&amp;quot; placeholder=&amp;quot;title&amp;quot; /&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;timeline-edit&amp;quot;&amp;gt;&amp;lt;label for=&amp;quot;link&amp;quot;&amp;gt;Link&amp;lt;/label&amp;gt;&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;link&amp;quot; placeholder=&amp;quot;url&amp;quot; /&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/_instance&amp;gt;&lt;br /&gt;
&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;save&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>3f181944-9694-4c7c-83d3-a6193204adb3</name></author>
	</entry>
	<entry>
		<id>https://open-csp.org/index.php?title=Open_CSP_Steering_committee&amp;diff=3853</id>
		<title>Open CSP Steering committee</title>
		<link rel="alternate" type="text/html" href="https://open-csp.org/index.php?title=Open_CSP_Steering_committee&amp;diff=3853"/>
		<updated>2025-09-23T13:52:54Z</updated>

		<summary type="html">&lt;p&gt;3f181944-9694-4c7c-83d3-a6193204adb3: User:3f181944-9694-4c7c-83d3-a6193204adb3&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>3f181944-9694-4c7c-83d3-a6193204adb3</name></author>
	</entry>
	<entry>
		<id>https://open-csp.org/index.php?title=Open_CSP_Steering_committee&amp;diff=3852</id>
		<title>Open CSP Steering committee</title>
		<link rel="alternate" type="text/html" href="https://open-csp.org/index.php?title=Open_CSP_Steering_committee&amp;diff=3852"/>
		<updated>2025-09-23T13:52:41Z</updated>

		<summary type="html">&lt;p&gt;3f181944-9694-4c7c-83d3-a6193204adb3: Blanked the page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>3f181944-9694-4c7c-83d3-a6193204adb3</name></author>
	</entry>
	<entry>
		<id>https://open-csp.org/index.php?title=Wiki:Testpagina_Jimmy&amp;diff=3847</id>
		<title>Wiki:Testpagina Jimmy</title>
		<link rel="alternate" type="text/html" href="https://open-csp.org/index.php?title=Wiki:Testpagina_Jimmy&amp;diff=3847"/>
		<updated>2025-09-23T13:47:17Z</updated>

		<summary type="html">&lt;p&gt;3f181944-9694-4c7c-83d3-a6193204adb3: Created page with &amp;quot;&amp;lt;form&amp;gt; &amp;lt;_create mwwrite=&amp;quot;Open CSP Steering committee&amp;quot; mwslot=&amp;quot;ws-class-props&amp;quot; mwtemplate=&amp;quot;Csp class properties&amp;quot; mwfields=&amp;quot;Kroket&amp;quot; /&amp;gt; &amp;lt;textarea name=&amp;quot;Kroket&amp;quot;&amp;gt;&amp;lt;/textarea&amp;gt; &amp;lt;input type=&amp;quot;submit&amp;quot; /&amp;gt; &amp;lt;/form&amp;gt;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;form&amp;gt;&lt;br /&gt;
&amp;lt;_create mwwrite=&amp;quot;Open CSP Steering committee&amp;quot; mwslot=&amp;quot;ws-class-props&amp;quot; mwtemplate=&amp;quot;Csp class properties&amp;quot; mwfields=&amp;quot;Kroket&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;textarea name=&amp;quot;Kroket&amp;quot;&amp;gt;&amp;lt;/textarea&amp;gt;&lt;br /&gt;
&amp;lt;input type=&amp;quot;submit&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;/div&gt;</summary>
		<author><name>3f181944-9694-4c7c-83d3-a6193204adb3</name></author>
	</entry>
	<entry>
		<id>https://open-csp.org/index.php?title=Media&amp;diff=3846</id>
		<title>Media</title>
		<link rel="alternate" type="text/html" href="https://open-csp.org/index.php?title=Media&amp;diff=3846"/>
		<updated>2025-09-23T13:44:43Z</updated>

		<summary type="html">&lt;p&gt;3f181944-9694-4c7c-83d3-a6193204adb3: User:3f181944-9694-4c7c-83d3-a6193204adb3&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h2 class=&amp;quot;h2&amp;quot;&amp;gt;Open CSP Media&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#widget:Media page}}&lt;br /&gt;
{{Show SEO in sidebar}}&lt;/div&gt;</summary>
		<author><name>3f181944-9694-4c7c-83d3-a6193204adb3</name></author>
	</entry>
	<entry>
		<id>https://open-csp.org/index.php?title=Media&amp;diff=3845</id>
		<title>Media</title>
		<link rel="alternate" type="text/html" href="https://open-csp.org/index.php?title=Media&amp;diff=3845"/>
		<updated>2025-09-23T13:44:35Z</updated>

		<summary type="html">&lt;p&gt;3f181944-9694-4c7c-83d3-a6193204adb3: User:3f181944-9694-4c7c-83d3-a6193204adb3&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h2 class=&amp;quot;h2&amp;quot;&amp;gt;Open CSP Media&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#widget:Media page}}&lt;br /&gt;
{{Show SEO in sidebar}}&lt;/div&gt;</summary>
		<author><name>3f181944-9694-4c7c-83d3-a6193204adb3</name></author>
	</entry>
	<entry>
		<id>https://open-csp.org/index.php?title=DevOps:Doc/FlexForm&amp;diff=3773</id>
		<title>DevOps:Doc/FlexForm</title>
		<link rel="alternate" type="text/html" href="https://open-csp.org/index.php?title=DevOps:Doc/FlexForm&amp;diff=3773"/>
		<updated>2025-09-02T19:49:12Z</updated>

		<summary type="html">&lt;p&gt;3f181944-9694-4c7c-83d3-a6193204adb3: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:FlexForm logo.png|frameless|link=]]&lt;br /&gt;
&lt;br /&gt;
=== Unlock Infinite Possibilities with FlexForm: Empower Your MediaWiki! ===&lt;br /&gt;
&#039;&#039;FlexForm, the innovative MediaWiki extension developed for Open CSP, empowers you to unleash the full potential of your wiki. Seamlessly create and customize dynamic forms that cater to your unique requirements, whether it&#039;s gathering user feedback, conducting surveys, or efficiently managing data inputs. Say goodbye to rigid templates and welcome a new era of flexibility! With easy customization and seamless integration, FlexForm simplifies form management, enabling you to maximize productivity and engage your community effortlessly. Take charge of your wiki&#039;s data like never before and discover endless possibilities with FlexForm.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;FlexForm&#039;&#039;&#039; is an enhanced HTML5 Form rendering engine.&lt;br /&gt;
&lt;br /&gt;
It renders HTML5 form elements and allows editing or creating one or more pages with one form.&lt;br /&gt;
&lt;br /&gt;
When you are familiar with creating HTML5 forms you will have no problem using &#039;&#039;&#039;FlexForm&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
To get started for the first time, have a look at the [[DevOps:Doc/FlexForm/1.0/Getting started|getting started]] documentation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;FlexForm&#039;&#039;&#039; is a complete rewrite from the previous &#039;&#039;&#039;WSForm&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Why FlexForm ===&lt;br /&gt;
Currently there are several MediaWiki extensions that help you create Forms for your website.&lt;br /&gt;
&lt;br /&gt;
What makes &#039;&#039;&#039;FlexForm&#039;&#039;&#039; different from the other extensions, is that it is really flexible. You can create a simple form (or a complex one) on any page and in any namespace.&lt;br /&gt;
&lt;br /&gt;
You do not have to use any special page to setup a form or to render it.&lt;br /&gt;
&lt;br /&gt;
It is also not bound to any kind of styling. This means that a simple form will not look very nice by default, but adding some css styling classes to the form gives you all the freedom in styling the form to any and all your needs. For those who are a bit less stylish, &#039;&#039;&#039;FlexForm&#039;&#039;&#039; will be supporting MediaWiki OOUI styling in the future by means of Themes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;FlexForm&#039;&#039;&#039; has Themes support.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;FlexForm&#039;&#039;&#039; is very powerful.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;One&#039;&#039;&#039; single form can:&lt;br /&gt;
&lt;br /&gt;
* create a page in the Wiki&lt;br /&gt;
* create several pages in the Wiki&lt;br /&gt;
* can edit a page in the Wiki&lt;br /&gt;
* can edit several pages in the Wiki&lt;br /&gt;
* can edit Multi Revision Content slots&lt;br /&gt;
* can send an email&lt;br /&gt;
* can upload a file&lt;br /&gt;
* can upload multiple files&lt;br /&gt;
* Convert Word to a Wiki page&lt;br /&gt;
* Convert Excel to JSON&lt;br /&gt;
* Send a message to a Wiki user or users&lt;br /&gt;
&lt;br /&gt;
Or do a combination of all of the above.&lt;br /&gt;
&lt;br /&gt;
There are also Show on Select options, Multiple instances options and submit a form through Ajax (so the user stays on the page without any reload).&lt;br /&gt;
&lt;br /&gt;
If you still want more features, check the documentation on the right.&lt;br /&gt;
&lt;br /&gt;
=== How is it different from PageForms? ===&lt;br /&gt;
Some of the main difference are:&lt;br /&gt;
&lt;br /&gt;
* PageForms will render forms through its Special page. The only exception is the &#039;&#039;autoedit&#039;&#039; parser function that will allow to edit a parameter in a template on a page using Ajax.&lt;br /&gt;
* PageForms renders an edit button on a page. With it you can edit Template parameters on a page.&lt;br /&gt;
* FlexForm can render a form on any page or render several forms on page. It allows for editing multiple Template parameters on a page or different pages.&lt;br /&gt;
* FlexForm will not read the content and template of a page and render an edit form. It does allow for you to create a very simple form that gives you all the freedom to show only relevant information to be edited.&lt;br /&gt;
* FlexForm is designed to handle multiple tasks with one form. Create or edit page(s), send an email, upload one or multiple files or a combination.&lt;br /&gt;
* FlexForm can be combined with the Chameleon skin and Bootstrap (or with custom js/css) to render forms in a popup, tab or collapsible element to create a more user-friendly experience where editing is part of the same page where you are also displaying information.&lt;/div&gt;</summary>
		<author><name>3f181944-9694-4c7c-83d3-a6193204adb3</name></author>
	</entry>
	<entry>
		<id>https://open-csp.org/index.php?title=DevOps:Doc/FlexForm/2.5/Form_options&amp;diff=3754</id>
		<title>DevOps:Doc/FlexForm/2.5/Form options</title>
		<link rel="alternate" type="text/html" href="https://open-csp.org/index.php?title=DevOps:Doc/FlexForm/2.5/Form_options&amp;diff=3754"/>
		<updated>2025-08-26T08:16:20Z</updated>

		<summary type="html">&lt;p&gt;3f181944-9694-4c7c-83d3-a6193204adb3: added restrictions parameter&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Name===&lt;br /&gt;
form&lt;br /&gt;
===Type===&lt;br /&gt;
form&lt;br /&gt;
===Synopsis===&lt;br /&gt;
Various FlexForm options&lt;br /&gt;
===Description===&lt;br /&gt;
Parameters you can add to the _form tag.&lt;br /&gt;
===Parameters===&lt;br /&gt;
&lt;br /&gt;
==== action ====&lt;br /&gt;
&lt;br /&gt;
====== Action telling Flexform what this form is for ======&lt;br /&gt;
There are three options :&lt;br /&gt;
* &#039;&#039;&#039;addToWiki&#039;&#039;&#039; : If no action is set, this is the default action. It will expect _create or _edit input telling it what to do with the form&lt;br /&gt;
* &#039;&#039;&#039;get&#039;&#039;&#039; :  Same as addToWiki, except now the page FlexForm is going to after submit will have all form input and values in the url of the page. Handy to e.g. forward to the Wiki Search page.&lt;br /&gt;
* &#039;&#039;&#039;email&#039;&#039;&#039;: Same as addToWiki, except now FlexForm will also look for the email options inside a form&lt;br /&gt;
&lt;br /&gt;
==== formtarget ====&lt;br /&gt;
&lt;br /&gt;
====== Change the html post action to a custom one ======&lt;br /&gt;
In some rare cases you might want to create a FlexForm, but not have FlexForm handle the post data. In that case use formtarget=&amp;quot;your url here&amp;quot; to tell html form where to go when someone submits the data.&lt;br /&gt;
&lt;br /&gt;
See example 1&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note: Keep in mind that this option will completely ignore FlexForm on form submission. No pages will be created or edited.&#039;&#039;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== messageonsuccess ====&lt;br /&gt;
&lt;br /&gt;
====== Show a custom message when form is successfully posted ======&lt;br /&gt;
It&#039;s sometimes handy to show a custom message when a form has been successfully posted, especially when after a post you return to the same form page.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;( new since v2.2.10 )&#039;&#039; The message will also be parsed to check for square bracket form attribute names and replace them with their values.&lt;br /&gt;
&lt;br /&gt;
See example 2&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== attachmessageto ====&lt;br /&gt;
&lt;br /&gt;
====== Where to show the message ======&lt;br /&gt;
By default, except for Ajax form submit, the default &#039;&#039;MediaWiki Message notifier&#039;&#039; is used to show your &#039;&#039;&#039;messageonsuccess&#039;&#039;&#039; or any of the other messages FlexForm might give (e.g. an error). Sometimes it can be handy to control where the notification pops-up, instead of the default right-top. You can use &#039;&#039;&#039;attachmessageto&#039;&#039;&#039; to attach the notification to an id of a certain HTML element. The notification will happen there. E.g. &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;form attachmessageto=&amp;quot;#my-unique-id&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== mwreturn ====&lt;br /&gt;
&lt;br /&gt;
====== Redirect to this page after submitting the form ======&lt;br /&gt;
When a form is submitted FlexForm will return to the page the Form was submitted from. You can change it to go to another page ( like a thank-you page for example ) by setting mwreturn. mwreturn=&amp;quot;Thank-you-page&amp;quot;. Provide a URL (the [https://www.mediawiki.org/wiki/Help:Magic_words#URL_data &amp;lt;code&amp;gt;localurl&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;fullurl&amp;lt;/code&amp;gt; magic words] may come in handy).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== permissions ====&lt;br /&gt;
&lt;br /&gt;
====== Overrule user permission on page edit or page create ======&lt;br /&gt;
&#039;&#039;&#039;Since version 2.1.12&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
FlexForm will check the users permission to edit or create a page. If a user is not allowed to create a page and the user submits a FlexForm that should create a page, a message will show the user has not the correct rights. ( The Wiki admin sets those rights ). Sometimes you do not want to give users ( or user groups ) edit or create rights, but you do want them to be able to e.g. create a new page using a FlexForm. You can then use the permissions argument. The value can be &amp;quot;can-edit&amp;quot;, &amp;quot;can-create&amp;quot; or both &amp;quot;can-edit;can-create&amp;quot;. The user will then be given the edit or create right using this FlexForm only.&lt;br /&gt;
&lt;br /&gt;
Note that the user will also need to be able to view the &#039;&#039;&#039;Special:FlexForm&#039;&#039;&#039; page to be able to submit forms, so this may need to be configured separately. For example if you want to allow anonymous users that are not logged in to use a form while normally they are not allowed to view pages in the wiki, you could add the special page to the $wgWhitelistRead setting.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Since version 2.3.10&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you are using Semantic MediaWiki and the permissions argument, FlexForm will finish it creation or edit process by running the rebuildData function of Semantic MediaWiki for the specific page to make sure properties will be set.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== restrictions ====&lt;br /&gt;
&lt;br /&gt;
====== Render form for anonymous user ======&lt;br /&gt;
By default, a FlexForm form is never rendered for an anonymous user. You can change this by adding a restrictions=&amp;quot;lifted&amp;quot; to a Form tag. This can be useful for e.g. a contact form or questionnaire. Be sure to setup the build-in reCaptcha options in Flexform when allowing anonymous form submit!&lt;br /&gt;
&lt;br /&gt;
When creating a user input in a Form, FlexForm will by default always filter the input for html, JavaScript or malicious code. You can however specify per input what is allowed and what is not. More information here : [[DevOps:Doc/FlexForm/2.0/input/search|Default input HTML attribute]]&lt;br /&gt;
&lt;br /&gt;
Especially when you have a &amp;quot;closed&amp;quot; wiki, where people need to register and will get their rights through user groups, it is a good option just not to show a Form to someone from a user group that is not allowed to use it.&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== no_submit_on_return ====&lt;br /&gt;
&lt;br /&gt;
====== Disable enter key for submitting a form ======&lt;br /&gt;
A HTML form usually gets submitted on pressing enter when there&#039;s like one text field. To disable that use the no_submit_on_return option.&lt;br /&gt;
This will add some JavaScript to the form disabling form submission on typing an enter.&lt;br /&gt;
&lt;br /&gt;
See example 3&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== recaptcha-v3-action ====&lt;br /&gt;
===== recaptcha-action ( since v.2.2.11 ) =====&lt;br /&gt;
&lt;br /&gt;
====== Use reCaptcha Version 3 on a flexform ======&lt;br /&gt;
Have FlexForm use Google reCAPTCHA v3 to prevent spamming in a form.&lt;br /&gt;
&lt;br /&gt;
You need to add you recaptcha key and secret in the configuration.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$wgFlexFormConfig[&#039;rc_site_key&#039;]   = &amp;quot;&amp;quot;; // reCaptcha site key&lt;br /&gt;
$wgFlexFormConfig[&#039;rc_secret_key&#039;] = &amp;quot;&amp;quot;; // reCaptcha secret key&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Then you can use &amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;recaptcha-v3-action=&amp;quot;action name&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Where action name is the name of the action to describe the form. It&#039;s an extra security measurement. You can choose your own name e.g. : contactform&lt;br /&gt;
&lt;br /&gt;
See example 4&lt;br /&gt;
&lt;br /&gt;
Since version 2.2.11 FlexForm supports ReCaptcha version 3, ReCaptcha Enterprise and ReCaptcha V2 (I&#039;m not a robot).&lt;br /&gt;
We have renamed the form argument recaptcha-v3-action to recaptcha--action, but we still support the previous argument for backwards compatibility.&lt;br /&gt;
&lt;br /&gt;
We have also changed the configuration settings to :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$wgFlexFormConfig[&#039;rc_use&#039;] = &amp;quot;enterprise&amp;quot;; // Defaults to v3. Can be v2, v3 and enterprise&lt;br /&gt;
$wgFlexFormConfig[&#039;rc_site_key&#039;] = &amp;quot;&amp;quot;; // for v2 and v3&lt;br /&gt;
$wgFlexFormConfig[&#039;rc_secret_key&#039;] = &amp;quot;&amp;quot;; // for v2 and v3&lt;br /&gt;
$wgFlexFormConfig[&#039;rce_project&#039;] = &amp;quot;&amp;quot;; // for enterprise&lt;br /&gt;
$wgFlexFormConfig[&#039;rce_site_key&#039;] = &amp;quot;&amp;quot;; // for enterprise&lt;br /&gt;
$wgFlexFormConfig[&#039;rce_api_key&#039;] = &amp;quot;&amp;quot;; // for enterprise&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note&#039;&#039;: reCAPTCHA v3 will not work when submitting the form through AJAX (mwidentifier=&amp;quot;ajax&amp;quot;)&amp;lt;hr&amp;gt;&lt;br /&gt;
&#039;&#039;Note&#039;&#039;: Please read the Google reCaptcha documentation on how to get your &#039;&#039;&#039;site key&#039;&#039;&#039; and &#039;&#039;&#039;secret key&#039;&#039;&#039; ( for reCaptcha v2 and v3 ), and read the reCaptcha Enterprise documentation to set and retrieve the &#039;&#039;&#039;Project&#039;&#039;&#039;, &#039;&#039;&#039;Site key&#039;&#039;&#039; and &#039;&#039;&#039;Api key&#039;&#039;&#039;s&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &#039;&#039;&#039;autosave&#039;&#039;&#039; ====&lt;br /&gt;
&lt;br /&gt;
====== &#039;&#039;Auto save forms on interval, after change or both&#039;&#039; ======&lt;br /&gt;
FlexForm autosave function allows for saving the open form in the background while someone is writing in it.&lt;br /&gt;
&lt;br /&gt;
This feature has 3 options:&lt;br /&gt;
&lt;br /&gt;
Save a form in the background on &#039;&#039;&#039;oninterval&#039;&#039;&#039;, on &#039;&#039;&#039;onchange&#039;&#039;&#039; or &#039;&#039;&#039;onboth&#039;&#039;&#039;.&amp;lt;br&amp;gt;&lt;br /&gt;
As of v1.1.28 &#039;&#039;&#039;onintervalafterchange&#039;&#039;&#039; has been added.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It support &amp;quot;normal&amp;quot; forms as well as a form with mwidentifier=&amp;quot;ajax&amp;quot;, meaning a form setup to be posted as an Ajax call. Also tested with TinyMCE ( tinymce extension ).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TinyMCE Note&#039;&#039;&#039;: FlexForm will look for all elements that have a class name starting with &amp;quot;tinymce&amp;quot;, as suggested by TinyMCE.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When using &#039;&#039;onboth&#039;&#039;, &#039;&#039;oninterval&#039;&#039; or &#039;&#039;onintervalafterchange&#039;&#039; a button will be added to the top of the form showing autosave interval is on. Clicking the button will turn interval saving off. When you turn it off and autosave is set to auto, the after change will still autosave. &#039;&#039;onintervalafterchange&#039;&#039; will add this button after a change has been detected.&lt;br /&gt;
&lt;br /&gt;
====== Config ======&lt;br /&gt;
&#039;&#039;The interval time and the after on change time can be set in the config file. When using interval or auto, the text for the button that appears above the form can be set in the config file.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
To style the button to switch off and on the Interval saving classes are added to it in different states:&lt;br /&gt;
&lt;br /&gt;
When on it will have the classes : &#039;&#039;btn btn-primary ws-interval-on&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
When off it will have the classes : &#039;&#039;btn btn ws-interval-off&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====== Parameters ======&lt;br /&gt;
&lt;br /&gt;
On form create tag add autosave as parameter. e.g.&lt;br /&gt;
&lt;br /&gt;
This will set autosave to auto.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;form id=&amp;quot;unique id per form&amp;quot; autosave=&amp;quot;&amp;quot;&amp;gt;&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Set autosave to interval only :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;form id=&amp;quot;unique id per form&amp;quot; autosave=&amp;quot;oninterval&amp;quot;&amp;gt;&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Set autosave to change only :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;form id=&amp;quot;unique id per form&amp;quot; autosave=&amp;quot;onchange&amp;quot;&amp;gt;&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Note: A form needs to have an unique identifier set by its id&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Set autosave to interval after change only :&lt;br /&gt;
This will set the interval saving after a change has been detected. So it is basically the same as &#039;&#039;&#039;oninterval&#039;&#039;&#039;, except it won&#039;t start if there are no changes yet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;form id=&amp;quot;unique id per form&amp;quot; autosave=&amp;quot;onintervalafterchange&amp;quot;&amp;gt;&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Set autosave to &#039;&#039;&#039;none&#039;&#039;&#039; to not have autosave. This can be useful for templates that contain forms, when they should only have autosave in specific situations.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;form id=&amp;quot;test-autosave-form&amp;quot; autosave=&amp;quot;{{#if:...|auto|none}}&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;input type=&amp;quot;text&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;input type=&amp;quot;submit&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
==== &#039;&#039;&#039;setwikicomment&#039;&#039;&#039; ====&lt;br /&gt;
&lt;br /&gt;
====== &#039;&#039;Set the summary text shown in the recent changes and or contributions&#039;&#039; ======&lt;br /&gt;
This can be really handy to describe what form or action was responsible for the changes in the Wiki.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;form setwikicomment=&amp;quot;Edit user preference form&amp;quot; &amp;gt;&lt;br /&gt;
   Your flexform elements here&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
==== &#039;&#039;&#039;loadscript&#039;&#039;&#039; ====&lt;br /&gt;
====== &#039;&#039;Tell FlexForm to load a specific JavaScript with a form&#039;&#039; ======&lt;br /&gt;
Sometimes it can be handy to load a JavaScript to work with a Form. For example for Validation or Realtime look-ups and you only need to load that JavaScript for a specific form, instead of having it always be loaded in e.g. common.js.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;loadscript&#039;&#039;&#039; by default looks into the &#039;&#039;FlexForm/Modules/customJS/loadScripts&#039;&#039; extension folder to find the JavaScript you have entered as value for loadscript. If your JavaScript is called validateForms.js, then you copy that JavaScript into the default folder and add &#039;&#039;&#039;loadscript=&amp;quot;validateForms&amp;quot;&#039;&#039;&#039; to the Form tag.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You can also specify a different default folder using the config setting : &#039;&#039;&#039;$wgFlexFormConfig[&#039;loadScriptPath&#039;]&#039;&#039;&#039; = &amp;lt;path to your scripts&amp;gt;. See also &#039;&#039;Installation of FlexForm&#039;&#039;.&lt;br /&gt;
By request, if the script cannot be found, the form will not be rendered and a message is shown, so there is always a visual check available.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
==== &#039;&#039;&#039;extension&#039;&#039;&#039; ====&lt;br /&gt;
&lt;br /&gt;
====== &#039;&#039;Have an extension do additional tasks with form values&#039;&#039; ======&lt;br /&gt;
You can create an extension for FlexForm that can do additonal tasks to a Form. See extension Docs for more information&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;form extension=&amp;quot;&amp;lt;name of your extension&amp;quot; &amp;gt;&lt;br /&gt;
   Your flexform elements here&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
==== &#039;&#039;&#039;json&#039;&#039;&#039; ====&lt;br /&gt;
FlexForm accepts a certain form of JSON Schema to render a Form. See Form options/JSON for more information an on how to utilize this.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
==== &#039;&#039;&#039;json-type&#039;&#039;&#039; ====&lt;br /&gt;
This argument is used together with the json argument. See Form options/JSON for more information an on how to utilize this.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
==== &#039;&#039;&#039;no_disable_on_submit&#039;&#039;&#039; ====&lt;br /&gt;
When a form is submitted, the submit button will be set to disabled and a spinner is shown. To disable this behavior, you can add the &#039;&#039;&#039;no_disable_on_submit&#039;&#039;&#039; argument.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
==== &#039;&#039;&#039;add-as-job&#039;&#039;&#039; ====&lt;br /&gt;
As of version 2.5.5 you can tell FlexForm to add any &#039;&#039;&#039;_edit&#039;&#039;&#039; actions to MediaWiki jobs. This is especially handy if you have one form doing over 30+ edits to one or several pages. All activity concerning jobs created and ran will be logged to the FlexForm logbook. For information on checking these logs : [[https://www.mediawiki.org/wiki/Manual:$wgDebugLogFile $wgDebugLogFile]] and [[https://www.mediawiki.org/wiki/Manual:$wgDebugLogGroups $wgDebugLogGroups]] and [[https://www.mediawiki.org/wiki/Manual:How_to_debug Manual:How to debug]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
===Examples===&lt;br /&gt;
Example 1 : formtarget&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;form formtarget=&amp;quot;https://example.com/handleform.php&amp;quot; &amp;gt;&lt;br /&gt;
   Your flexform elements here&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Example 2 : messageonsuccess&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;form messageonsuccess=&amp;quot;Information posted, thanks!&amp;quot;&amp;gt;&lt;br /&gt;
    Your flexform elements here&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Example 3 : no_submit_on_return&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;form no_submit_on_return&amp;gt;&lt;br /&gt;
    Your flexform elements here&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Example 4 : reCaptcha v3&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;form recaptcha-v3-action=&amp;quot;contactform&amp;quot;&amp;gt;&lt;br /&gt;
    Your flexform elements here&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Note===&lt;br /&gt;
If you want your form to have at least a bit of styling, you can use FlexForm&#039;s CSS. Simple add class=&amp;quot;simple&amp;quot; to your form tag. This class will only work on FlexForm Forms. Not on any other element in HTML.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;form class=&amp;quot;simple&amp;quot;&amp;gt;&lt;br /&gt;
    Your flexform elements here&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Normal default rendering:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;form action=&amp;quot;get&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;label for=&amp;quot;testnostyle&amp;quot;&amp;gt;My label&amp;lt;/label&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
  &amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;testnostyle&amp;quot; id=&amp;quot;testnostyle&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;ok&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;form action=&amp;quot;get&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;label for=&amp;quot;testnostyle&amp;quot;&amp;gt;My label&amp;lt;/label&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;testnostyle&amp;quot; id=&amp;quot;testnostyle&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;ok&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&lt;br /&gt;
with &#039;&#039;&#039;simple&#039;&#039;&#039; class style:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;form action=&amp;quot;get&amp;quot; class=&amp;quot;simple&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;label for=&amp;quot;teststyle&amp;quot;&amp;gt;My label&amp;lt;/label&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
  &amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;teststyle&amp;quot; id=&amp;quot;teststyle&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;ok&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;form action=&amp;quot;get&amp;quot; class=&amp;quot;simple&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;label for=&amp;quot;teststyle&amp;quot;&amp;gt;My label&amp;lt;/label&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;teststyle&amp;quot; id=&amp;quot;teststyle&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;ok&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Links===&lt;br /&gt;
https://developers.google.com/recaptcha/docs/v3&lt;/div&gt;</summary>
		<author><name>3f181944-9694-4c7c-83d3-a6193204adb3</name></author>
	</entry>
	<entry>
		<id>https://open-csp.org/index.php?title=DevOps:Doc/FlexForm/2.1/input/file&amp;diff=3383</id>
		<title>DevOps:Doc/FlexForm/2.1/input/file</title>
		<link rel="alternate" type="text/html" href="https://open-csp.org/index.php?title=DevOps:Doc/FlexForm/2.1/input/file&amp;diff=3383"/>
		<updated>2025-06-16T08:46:25Z</updated>

		<summary type="html">&lt;p&gt;3f181944-9694-4c7c-83d3-a6193204adb3: Reverted edits by 3f181944-9694-4c7c-83d3-a6193204adb3 (talk) to last revision by Fd4138e7-8b46-4c8f-99bf-d4b738ebc295&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Name===&lt;br /&gt;
file&lt;br /&gt;
===Type===&lt;br /&gt;
input&lt;br /&gt;
===Synopsis===&lt;br /&gt;
Using file uploads&lt;br /&gt;
===Description===&lt;br /&gt;
Use a form to upload one or multiple files.&lt;br /&gt;
===Parameters===&lt;br /&gt;
input type=&amp;quot;file&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;target&#039;&#039;&#039;* : Name of the File page to be created&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;id&#039;&#039;&#039;* : This must always be unique, that is, it can only occur once on a page. Do not include a hyphen (&amp;quot;-&amp;quot;), underscore (&amp;quot;_&amp;quot;), or any special characters (also no spaces).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;action&#039;&#039;&#039;* : defaults to &#039;&#039;&#039;upload&#039;&#039;&#039;. Read more below on using this to convert docx documents to pages in the wiki.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;name&#039;&#039;&#039;* : As with any input field, a name is mandatory&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;pagecontent&#039;&#039;&#039;: Text content to be added on the File Page. If you are using &#039;&#039;&#039;convertfrom&#039;&#039;&#039; then any images uploading during the convert will get the pagecontent.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;comment&#039;&#039;&#039;: Text to show in recent changes or contributions list &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;force &#039;&#039;&#039;: Force images to a certain format (png, jpg or gif). When using this option, any file uploaded that is not supported will be uploaded as is.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;error_id &#039;&#039;&#039;: Id of a DOM Element where error notices will be shown&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;verbose_id &#039;&#039;&#039;: Id of a DOM element where information about the file is shown&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;use_label &#039;&#039;&#039;: Doesn&#039;t require a value. When an input field has a label attached to it, then the label will become the upload button and the input field will be hidden&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dropzone &#039;&#039;&#039;: Doesn&#039;t require a value. Will turn the verbose div into an additional file drop zone. If you also &#039;&#039;&#039;use_label&#039;&#039;&#039;, then the label will become the dropzone.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;parsecontent&#039;&#039;&#039;: Will force FlexForm to insert values from other form fields inside the pagecontent field. Use square brackets, like [fieldname], where values should be inserted.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;template&#039;&#039;&#039; : If you want to store a template call inside the content of the File page, you can &#039;&#039;&#039;template=&amp;lt;name of your template&amp;gt;&#039;&#039;&#039; in combination with &#039;&#039;&#039;parsecontent&#039;&#039;&#039;. [flexform-template] inside your content field will be replaced by &#039;&#039;&#039;{{&amp;lt;name of your template&#039;&#039;&#039; and &#039;&#039;&#039;[/flexform-template]&#039;&#039;&#039; will be replaced by &#039;&#039;&#039;}}&#039;&#039;&#039;. See example 3 on the examples page.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;multiple&#039;&#039;&#039; = multiple&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;*&#039;&#039;&#039;= a required variable&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;target&#039;&#039;&#039; is basically the name you want to use to store the file or files. It recognizes &#039;&#039;&#039;[mwrandom]&#039;&#039;&#039;, &#039;&#039;&#039;[filename]&#039;&#039;&#039; and other form fields, by using their name with square brackets around them (see example). &#039;&#039;&#039;pagecontent&#039;&#039;&#039; can also hold form variables.&lt;br /&gt;
&lt;br /&gt;
=== action=&amp;quot;convertfrom:????&amp;quot; ===&lt;br /&gt;
====Pandoc====&lt;br /&gt;
The &#039;&#039;&#039;action&#039;&#039;&#039; argument defaults to &#039;&#039;upload&#039;&#039;. If you use &#039;&#039;&#039;action=&amp;quot;convertfrom:????&amp;quot;&#039;&#039;&#039; and you have Pandoc installed on your system, FlexForm will convert a document and create it as a page in the Wiki. &#039;&#039;&#039;target&#039;&#039;&#039; will then be used as a Page Title. Depending on your version of Pandoc, the results might differ. &#039;&#039;&#039;convertfrom&#039;&#039;&#039; allows all Pandoc to MediaWiki text conversions. &#039;&#039;&#039;docx&#039;&#039;&#039; would be a good example : action=&amp;quot;convertfrom:docx&amp;quot;. Any images uploaded during the convert can have their content of their filepages be filled using &#039;&#039;&#039;pagecontent&#039;&#039;&#039;. Since version 2.2.9 you can also add an argument &#039;&#039;&#039;slot=&amp;quot;&amp;lt;name of slot&amp;gt;&amp;quot;&#039;&#039;&#039; to have the converted Document be save to a specific slot on the target page, instead of the main slot. Keep in mind, MediaWiki slots need to be defined in your LocalSettings.&lt;br /&gt;
====Excel ( since version 2.2.9 )====&lt;br /&gt;
You can also use &#039;&#039;&#039;action=&amp;quot;convertfrom:xls&amp;quot;&#039;&#039;&#039; or &#039;&#039;&#039;action=&amp;quot;convertfrom:xlsx&amp;quot;&#039;&#039;&#039;. This allows for converting an Excel xls or xlsx file to JSON. Images are not supported. The argument &#039;&#039;&#039;slot&#039;&#039;&#039; is supported. &#039;&#039;This conversion is not done using Pandoc and thus will work without having Pandoc installed&#039;&#039;. (just make sure you run composer update after you update FlexForm).&lt;br /&gt;
&lt;br /&gt;
As off v2.4.0 the Excel convert action has two extra parameters that allow you to choose an Excel Sheet name, if the Excel document has multiple sheets. &#039;&#039;&#039;sheet_by_id&#039;&#039;&#039; and &#039;&#039;&#039;sheet_by_name&#039;&#039;&#039;. If you do not use them, it will work as &#039;&#039;&#039;sheet_by_id=&amp;quot;0&amp;quot;&#039;&#039;&#039; (making it backwards compatible). If you use both arguments, then &#039;&#039;&#039;sheet_by_name&#039;&#039;&#039; will get the priority.&lt;br /&gt;
&lt;br /&gt;
An excel document like this :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;options&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;HitCounter&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;WSStats&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;More&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|$wgDisableCounters&lt;br /&gt;
|automatically show hitcounts on a page and Special page&lt;br /&gt;
|yes&lt;br /&gt;
|no&lt;br /&gt;
|WSStats allows for adding this to a page using parser function&lt;br /&gt;
|-&lt;br /&gt;
|$wgHitcounterUpdateFreq&lt;br /&gt;
|frequency of counters update&lt;br /&gt;
|yes&lt;br /&gt;
|no&lt;br /&gt;
|WSStats uses MW DB abstraction layer to update hitcount. The approach is  different&lt;br /&gt;
|-&lt;br /&gt;
|skip_user_groups&lt;br /&gt;
|Skip certain user groups in counting&lt;br /&gt;
|no&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|count_all_usergroups&lt;br /&gt;
|Count pages independend of a user group&lt;br /&gt;
|no&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
Will result in the following JSON:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;options&amp;quot;: &amp;quot;$wgDisableCounters&amp;quot;,&lt;br /&gt;
        &amp;quot;description&amp;quot;: &amp;quot;automatically show hitcounts on a page and Special page&amp;quot;,&lt;br /&gt;
        &amp;quot;HitCounter&amp;quot;: &amp;quot;yes&amp;quot;,&lt;br /&gt;
        &amp;quot;WSStats&amp;quot;: &amp;quot;no&amp;quot;,&lt;br /&gt;
        &amp;quot;More&amp;quot;: &amp;quot;WSStats allows for adding this to a page using parser function&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;options&amp;quot;: &amp;quot;$wgHitcounterUpdateFreq&amp;quot;,&lt;br /&gt;
        &amp;quot;description&amp;quot;: &amp;quot;frequency of counters update&amp;quot;,&lt;br /&gt;
        &amp;quot;HitCounter&amp;quot;: &amp;quot;yes&amp;quot;,&lt;br /&gt;
        &amp;quot;WSStats&amp;quot;: &amp;quot;no&amp;quot;,&lt;br /&gt;
        &amp;quot;More&amp;quot;: &amp;quot;WSStats uses MW DB abstraction layer to update hitcount. The approach is different&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;options&amp;quot;: &amp;quot;skip_user_groups&amp;quot;,&lt;br /&gt;
        &amp;quot;description&amp;quot;: &amp;quot;Skip certain user groups in counting&amp;quot;,&lt;br /&gt;
        &amp;quot;HitCounter&amp;quot;: &amp;quot;no&amp;quot;,&lt;br /&gt;
        &amp;quot;WSStats&amp;quot;: &amp;quot;yes&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;options&amp;quot;: &amp;quot;count_all_usergroups&amp;quot;,&lt;br /&gt;
        &amp;quot;description&amp;quot;: &amp;quot;Count pages independend of a user group&amp;quot;,&lt;br /&gt;
        &amp;quot;HitCounter&amp;quot;: &amp;quot;no&amp;quot;,&lt;br /&gt;
        &amp;quot;WSStats&amp;quot;: &amp;quot;yes&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===HTMLtoImage===&lt;br /&gt;
You can also use the field input to upload an image created from part of the page shown where the form is rendered.&lt;br /&gt;
&lt;br /&gt;
Basically, you tell FlexForm you want to render a part of your screen as an image and upload it to the wiki.&lt;br /&gt;
&lt;br /&gt;
The syntax is the same as above, but it only needs : target, name and pagecontent. The other arguments are ignored. Additionally it needs an argument called &#039;&#039;&#039;presentor=&amp;quot;canvas&amp;quot;&#039;&#039;&#039; and it needs the ID of the element you want to convert to an image: &#039;&#039;&#039;canvas_source_id&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;By default the image will always be a .jpg file. We plan to support png if this is requested.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For example you have a DIV element with id=&amp;quot;content-to-convert&amp;quot;. Within this DIV you have content you want to convert to an image an upload to the Wiki.&lt;br /&gt;
&lt;br /&gt;
A FlexForm to utilize this would look something like this :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;content-to-convert&amp;quot; style=&amp;quot;width:500px&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;h1&amp;gt;Test Screenshot&amp;lt;/h1&amp;gt;&lt;br /&gt;
  &amp;lt;p&amp;gt;Lots of other content here&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;form&amp;gt;&lt;br /&gt;
  &amp;lt;input type=&amp;quot;file&amp;quot; presentor=&amp;quot;canvas&amp;quot; id=&amp;quot;canvasUpload&amp;quot; target=&amp;quot;testCanvasFile.jpg&amp;quot; pagecontent=&amp;quot;testing&amp;quot; canvas_source_id=&amp;quot;content-to-convert&amp;quot;  /&amp;gt;&lt;br /&gt;
  &amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;upload&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;You cannot use both file uploads in one form.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Note===&lt;br /&gt;
An &#039;&#039;&#039;input type=&amp;quot;file&amp;quot;&#039;&#039;&#039; always needs a unique ID! ( do not use &amp;quot;-&amp;quot;, &amp;quot;_&amp;quot;, any special characters ( also no spaces ) ).&lt;br /&gt;
&lt;br /&gt;
A form that needs to upload files needs this argument : &#039;&#039;&#039;enctype=&amp;quot;multipart/form-data&amp;quot;&#039;&#039;&#039;. The argument needs to be added to the Form tag, not the input tag. See also : https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement/enctype&lt;br /&gt;
&lt;br /&gt;
As FlexForm first handles File Upload, it will add the files processed to use in an _edit or a _create.&lt;br /&gt;
Every file upload field needs a name attribute and once a file has been uploaded you can use them in an edit or create in the following format :&lt;br /&gt;
 &lt;br /&gt;
*&#039;&#039;&#039;FFUploadedFile-UploadName-&#039;&#039;&#039;&#039;&#039;&amp;lt;name attribute of input field&amp;gt;&#039;&#039; : Will hold the original file name uploaded&lt;br /&gt;
*&#039;&#039;&#039;FFUploadedFile-UploadBase-&#039;&#039;&#039;&#039;&#039;&amp;lt;name attribute of input field&amp;gt;&#039;&#039; : Will hold the original file name uploaded without the extension&lt;br /&gt;
*&#039;&#039;&#039;FFUploadedFile-NewName-&#039;&#039;&#039;&#039;&#039;&amp;lt;name attribute of input field&amp;gt;&#039;&#039; : Will hold the name of the file as it is uploaded into the Wiki ( Without the File: prefix )&lt;br /&gt;
&lt;br /&gt;
If you use a multiple file upload, then the above values will all be &#039;&#039;&#039;,&#039;&#039;&#039; separated.&lt;br /&gt;
&lt;br /&gt;
===Links===&lt;br /&gt;
====Tutorial====&lt;br /&gt;
[https://wikibase-solutions.com/developer-logs/flexform-multiple-file-upload Link to a quick tutorial video shows you how to use one FlexForm form to]:&lt;br /&gt;
* upload multiple files. Docs : [https://www.open-csp.org/DevOps:Doc/FlexForm/1.0/input/file input file documentation]&lt;br /&gt;
* add a template to the source of the file pages. Docs : [https://www.open-csp.org/DevOps:Doc/FlexForm/1.0/input/file input file documentation]&lt;br /&gt;
* have form input fields be added to the arguments for the template. Docs : [https://www.open-csp.org/DevOps:Doc/FlexForm/1.0/input/file input file documentation]&lt;br /&gt;
* show a success message after upload. Docs : [https://www.open-csp.org/DevOps:Doc/FlexForm/1.0/Form_options form options]&lt;br /&gt;
* add a comment line to your upload visible in the Contributions list and recent changes. Docs : [https://www.open-csp.org/DevOps:Doc/FlexForm/1.0/Form_options form options]&lt;br /&gt;
* use a dropzone to drag and drop files. Docs : [https://www.open-csp.org/DevOps:Doc/FlexForm/1.0/input/file input file documentation]&lt;br /&gt;
* align form fields using a MW table. Docs : [[mediawikiwiki:Help:Tables|MediaWiki tables]]&lt;br /&gt;
* add current date using Magic Words. Docs : [[mediawikiwiki:Help:Magic_words|MediaWiki magic words]]&lt;br /&gt;
&lt;br /&gt;
====Other links====&lt;br /&gt;
https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement/enctype&lt;br /&gt;
&lt;br /&gt;
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file&lt;br /&gt;
&lt;br /&gt;
https://pandoc.org/&lt;/div&gt;</summary>
		<author><name>3f181944-9694-4c7c-83d3-a6193204adb3</name></author>
	</entry>
	<entry>
		<id>https://open-csp.org/index.php?title=DevOps:Doc/FlexForm/2.1/input/file&amp;diff=3382</id>
		<title>DevOps:Doc/FlexForm/2.1/input/file</title>
		<link rel="alternate" type="text/html" href="https://open-csp.org/index.php?title=DevOps:Doc/FlexForm/2.1/input/file&amp;diff=3382"/>
		<updated>2025-06-16T08:31:16Z</updated>

		<summary type="html">&lt;p&gt;3f181944-9694-4c7c-83d3-a6193204adb3: Added accept attribute which is already supported by file input&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Name===&lt;br /&gt;
file&lt;br /&gt;
===Type===&lt;br /&gt;
input&lt;br /&gt;
===Synopsis===&lt;br /&gt;
Using file uploads&lt;br /&gt;
===Description===&lt;br /&gt;
Use a form to upload one or multiple files.&lt;br /&gt;
===Parameters===&lt;br /&gt;
input type=&amp;quot;file&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;target&#039;&#039;&#039;* : Name of the File page to be created&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;id&#039;&#039;&#039;* : This must always be unique, that is, it can only occur once on a page. Do not include a hyphen (&amp;quot;-&amp;quot;), underscore (&amp;quot;_&amp;quot;), or any special characters (also no spaces).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;action&#039;&#039;&#039;* : defaults to &#039;&#039;&#039;upload&#039;&#039;&#039;. Read more below on using this to convert docx documents to pages in the wiki.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;name&#039;&#039;&#039;* : As with any input field, a name is mandatory&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;pagecontent&#039;&#039;&#039;: Text content to be added on the File Page. If you are using &#039;&#039;&#039;convertfrom&#039;&#039;&#039; then any images uploading during the convert will get the pagecontent.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;comment&#039;&#039;&#039;: Text to show in recent changes or contributions list &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;force &#039;&#039;&#039;: Force images to a certain format (png, jpg or gif). When using this option, any file uploaded that is not supported will be uploaded as is.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;accept&#039;&#039;&#039;: Only accept files of a certain format.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;error_id &#039;&#039;&#039;: Id of a DOM Element where error notices will be shown&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;verbose_id &#039;&#039;&#039;: Id of a DOM element where information about the file is shown&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;use_label &#039;&#039;&#039;: Doesn&#039;t require a value. When an input field has a label attached to it, then the label will become the upload button and the input field will be hidden&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dropzone &#039;&#039;&#039;: Doesn&#039;t require a value. Will turn the verbose div into an additional file drop zone. If you also &#039;&#039;&#039;use_label&#039;&#039;&#039;, then the label will become the dropzone.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;parsecontent&#039;&#039;&#039;: Will force FlexForm to insert values from other form fields inside the pagecontent field. Use square brackets, like [fieldname], where values should be inserted.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;template&#039;&#039;&#039; : If you want to store a template call inside the content of the File page, you can &#039;&#039;&#039;template=&amp;lt;name of your template&amp;gt;&#039;&#039;&#039; in combination with &#039;&#039;&#039;parsecontent&#039;&#039;&#039;. [flexform-template] inside your content field will be replaced by &#039;&#039;&#039;{{&amp;lt;name of your template&#039;&#039;&#039; and &#039;&#039;&#039;[/flexform-template]&#039;&#039;&#039; will be replaced by &#039;&#039;&#039;}}&#039;&#039;&#039;. See example 3 on the examples page.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;multiple&#039;&#039;&#039; = multiple&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;*&#039;&#039;&#039;= a required variable&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;target&#039;&#039;&#039; is basically the name you want to use to store the file or files. It recognizes &#039;&#039;&#039;[mwrandom]&#039;&#039;&#039;, &#039;&#039;&#039;[filename]&#039;&#039;&#039; and other form fields, by using their name with square brackets around them (see example). &#039;&#039;&#039;pagecontent&#039;&#039;&#039; can also hold form variables.&lt;br /&gt;
&lt;br /&gt;
=== action=&amp;quot;convertfrom:????&amp;quot; ===&lt;br /&gt;
====Pandoc====&lt;br /&gt;
The &#039;&#039;&#039;action&#039;&#039;&#039; argument defaults to &#039;&#039;upload&#039;&#039;. If you use &#039;&#039;&#039;action=&amp;quot;convertfrom:????&amp;quot;&#039;&#039;&#039; and you have Pandoc installed on your system, FlexForm will convert a document and create it as a page in the Wiki. &#039;&#039;&#039;target&#039;&#039;&#039; will then be used as a Page Title. Depending on your version of Pandoc, the results might differ. &#039;&#039;&#039;convertfrom&#039;&#039;&#039; allows all Pandoc to MediaWiki text conversions. &#039;&#039;&#039;docx&#039;&#039;&#039; would be a good example : action=&amp;quot;convertfrom:docx&amp;quot;. Any images uploaded during the convert can have their content of their filepages be filled using &#039;&#039;&#039;pagecontent&#039;&#039;&#039;. Since version 2.2.9 you can also add an argument &#039;&#039;&#039;slot=&amp;quot;&amp;lt;name of slot&amp;gt;&amp;quot;&#039;&#039;&#039; to have the converted Document be save to a specific slot on the target page, instead of the main slot. Keep in mind, MediaWiki slots need to be defined in your LocalSettings.&lt;br /&gt;
====Excel ( since version 2.2.9 )====&lt;br /&gt;
You can also use &#039;&#039;&#039;action=&amp;quot;convertfrom:xls&amp;quot;&#039;&#039;&#039; or &#039;&#039;&#039;action=&amp;quot;convertfrom:xlsx&amp;quot;&#039;&#039;&#039;. This allows for converting an Excel xls or xlsx file to JSON. Images are not supported. The argument &#039;&#039;&#039;slot&#039;&#039;&#039; is supported. &#039;&#039;This conversion is not done using Pandoc and thus will work without having Pandoc installed&#039;&#039;. (just make sure you run composer update after you update FlexForm).&lt;br /&gt;
&lt;br /&gt;
As off v2.4.0 the Excel convert action has two extra parameters that allow you to choose an Excel Sheet name, if the Excel document has multiple sheets. &#039;&#039;&#039;sheet_by_id&#039;&#039;&#039; and &#039;&#039;&#039;sheet_by_name&#039;&#039;&#039;. If you do not use them, it will work as &#039;&#039;&#039;sheet_by_id=&amp;quot;0&amp;quot;&#039;&#039;&#039; (making it backwards compatible). If you use both arguments, then &#039;&#039;&#039;sheet_by_name&#039;&#039;&#039; will get the priority.&lt;br /&gt;
&lt;br /&gt;
An excel document like this :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;options&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;HitCounter&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;WSStats&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;More&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|$wgDisableCounters&lt;br /&gt;
|automatically show hitcounts on a page and Special page&lt;br /&gt;
|yes&lt;br /&gt;
|no&lt;br /&gt;
|WSStats allows for adding this to a page using parser function&lt;br /&gt;
|-&lt;br /&gt;
|$wgHitcounterUpdateFreq&lt;br /&gt;
|frequency of counters update&lt;br /&gt;
|yes&lt;br /&gt;
|no&lt;br /&gt;
|WSStats uses MW DB abstraction layer to update hitcount. The approach is  different&lt;br /&gt;
|-&lt;br /&gt;
|skip_user_groups&lt;br /&gt;
|Skip certain user groups in counting&lt;br /&gt;
|no&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|count_all_usergroups&lt;br /&gt;
|Count pages independend of a user group&lt;br /&gt;
|no&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
Will result in the following JSON:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;options&amp;quot;: &amp;quot;$wgDisableCounters&amp;quot;,&lt;br /&gt;
        &amp;quot;description&amp;quot;: &amp;quot;automatically show hitcounts on a page and Special page&amp;quot;,&lt;br /&gt;
        &amp;quot;HitCounter&amp;quot;: &amp;quot;yes&amp;quot;,&lt;br /&gt;
        &amp;quot;WSStats&amp;quot;: &amp;quot;no&amp;quot;,&lt;br /&gt;
        &amp;quot;More&amp;quot;: &amp;quot;WSStats allows for adding this to a page using parser function&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;options&amp;quot;: &amp;quot;$wgHitcounterUpdateFreq&amp;quot;,&lt;br /&gt;
        &amp;quot;description&amp;quot;: &amp;quot;frequency of counters update&amp;quot;,&lt;br /&gt;
        &amp;quot;HitCounter&amp;quot;: &amp;quot;yes&amp;quot;,&lt;br /&gt;
        &amp;quot;WSStats&amp;quot;: &amp;quot;no&amp;quot;,&lt;br /&gt;
        &amp;quot;More&amp;quot;: &amp;quot;WSStats uses MW DB abstraction layer to update hitcount. The approach is different&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;options&amp;quot;: &amp;quot;skip_user_groups&amp;quot;,&lt;br /&gt;
        &amp;quot;description&amp;quot;: &amp;quot;Skip certain user groups in counting&amp;quot;,&lt;br /&gt;
        &amp;quot;HitCounter&amp;quot;: &amp;quot;no&amp;quot;,&lt;br /&gt;
        &amp;quot;WSStats&amp;quot;: &amp;quot;yes&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;options&amp;quot;: &amp;quot;count_all_usergroups&amp;quot;,&lt;br /&gt;
        &amp;quot;description&amp;quot;: &amp;quot;Count pages independend of a user group&amp;quot;,&lt;br /&gt;
        &amp;quot;HitCounter&amp;quot;: &amp;quot;no&amp;quot;,&lt;br /&gt;
        &amp;quot;WSStats&amp;quot;: &amp;quot;yes&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===HTMLtoImage===&lt;br /&gt;
You can also use the field input to upload an image created from part of the page shown where the form is rendered.&lt;br /&gt;
&lt;br /&gt;
Basically, you tell FlexForm you want to render a part of your screen as an image and upload it to the wiki.&lt;br /&gt;
&lt;br /&gt;
The syntax is the same as above, but it only needs : target, name and pagecontent. The other arguments are ignored. Additionally it needs an argument called &#039;&#039;&#039;presentor=&amp;quot;canvas&amp;quot;&#039;&#039;&#039; and it needs the ID of the element you want to convert to an image: &#039;&#039;&#039;canvas_source_id&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;By default the image will always be a .jpg file. We plan to support png if this is requested.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For example you have a DIV element with id=&amp;quot;content-to-convert&amp;quot;. Within this DIV you have content you want to convert to an image an upload to the Wiki.&lt;br /&gt;
&lt;br /&gt;
A FlexForm to utilize this would look something like this :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;content-to-convert&amp;quot; style=&amp;quot;width:500px&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;h1&amp;gt;Test Screenshot&amp;lt;/h1&amp;gt;&lt;br /&gt;
  &amp;lt;p&amp;gt;Lots of other content here&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;form&amp;gt;&lt;br /&gt;
  &amp;lt;input type=&amp;quot;file&amp;quot; presentor=&amp;quot;canvas&amp;quot; id=&amp;quot;canvasUpload&amp;quot; target=&amp;quot;testCanvasFile.jpg&amp;quot; pagecontent=&amp;quot;testing&amp;quot; canvas_source_id=&amp;quot;content-to-convert&amp;quot;  /&amp;gt;&lt;br /&gt;
  &amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;upload&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;You cannot use both file uploads in one form.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Note===&lt;br /&gt;
An &#039;&#039;&#039;input type=&amp;quot;file&amp;quot;&#039;&#039;&#039; always needs a unique ID! ( do not use &amp;quot;-&amp;quot;, &amp;quot;_&amp;quot;, any special characters ( also no spaces ) ).&lt;br /&gt;
&lt;br /&gt;
A form that needs to upload files needs this argument : &#039;&#039;&#039;enctype=&amp;quot;multipart/form-data&amp;quot;&#039;&#039;&#039;. The argument needs to be added to the Form tag, not the input tag. See also : https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement/enctype&lt;br /&gt;
&lt;br /&gt;
As FlexForm first handles File Upload, it will add the files processed to use in an _edit or a _create.&lt;br /&gt;
Every file upload field needs a name attribute and once a file has been uploaded you can use them in an edit or create in the following format :&lt;br /&gt;
 &lt;br /&gt;
*&#039;&#039;&#039;FFUploadedFile-UploadName-&#039;&#039;&#039;&#039;&#039;&amp;lt;name attribute of input field&amp;gt;&#039;&#039; : Will hold the original file name uploaded&lt;br /&gt;
*&#039;&#039;&#039;FFUploadedFile-UploadBase-&#039;&#039;&#039;&#039;&#039;&amp;lt;name attribute of input field&amp;gt;&#039;&#039; : Will hold the original file name uploaded without the extension&lt;br /&gt;
*&#039;&#039;&#039;FFUploadedFile-NewName-&#039;&#039;&#039;&#039;&#039;&amp;lt;name attribute of input field&amp;gt;&#039;&#039; : Will hold the name of the file as it is uploaded into the Wiki ( Without the File: prefix )&lt;br /&gt;
&lt;br /&gt;
If you use a multiple file upload, then the above values will all be &#039;&#039;&#039;,&#039;&#039;&#039; separated.&lt;br /&gt;
&lt;br /&gt;
===Links===&lt;br /&gt;
====Tutorial====&lt;br /&gt;
[https://wikibase-solutions.com/developer-logs/flexform-multiple-file-upload Link to a quick tutorial video shows you how to use one FlexForm form to]:&lt;br /&gt;
* upload multiple files. Docs : [https://www.open-csp.org/DevOps:Doc/FlexForm/1.0/input/file input file documentation]&lt;br /&gt;
* add a template to the source of the file pages. Docs : [https://www.open-csp.org/DevOps:Doc/FlexForm/1.0/input/file input file documentation]&lt;br /&gt;
* have form input fields be added to the arguments for the template. Docs : [https://www.open-csp.org/DevOps:Doc/FlexForm/1.0/input/file input file documentation]&lt;br /&gt;
* show a success message after upload. Docs : [https://www.open-csp.org/DevOps:Doc/FlexForm/1.0/Form_options form options]&lt;br /&gt;
* add a comment line to your upload visible in the Contributions list and recent changes. Docs : [https://www.open-csp.org/DevOps:Doc/FlexForm/1.0/Form_options form options]&lt;br /&gt;
* use a dropzone to drag and drop files. Docs : [https://www.open-csp.org/DevOps:Doc/FlexForm/1.0/input/file input file documentation]&lt;br /&gt;
* align form fields using a MW table. Docs : [[mediawikiwiki:Help:Tables|MediaWiki tables]]&lt;br /&gt;
* add current date using Magic Words. Docs : [[mediawikiwiki:Help:Magic_words|MediaWiki magic words]]&lt;br /&gt;
&lt;br /&gt;
====Other links====&lt;br /&gt;
https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement/enctype&lt;br /&gt;
&lt;br /&gt;
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file&lt;br /&gt;
&lt;br /&gt;
https://pandoc.org/&lt;/div&gt;</summary>
		<author><name>3f181944-9694-4c7c-83d3-a6193204adb3</name></author>
	</entry>
	<entry>
		<id>https://open-csp.org/index.php?title=DevOps:Doc/FlexForm/2.0/input&amp;diff=3354</id>
		<title>DevOps:Doc/FlexForm/2.0/input</title>
		<link rel="alternate" type="text/html" href="https://open-csp.org/index.php?title=DevOps:Doc/FlexForm/2.0/input&amp;diff=3354"/>
		<updated>2025-02-28T09:32:25Z</updated>

		<summary type="html">&lt;p&gt;3f181944-9694-4c7c-83d3-a6193204adb3: lowercase br&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Name===&lt;br /&gt;
input&lt;br /&gt;
===Type===&lt;br /&gt;
input&lt;br /&gt;
===Synopsis===&lt;br /&gt;
Create various input fields&lt;br /&gt;
===Description===&lt;br /&gt;
input is like input in HTML, but can differ sometimes.&lt;br /&gt;
===Parameters===&lt;br /&gt;
All valid HTML attributes can be used, like :&lt;br /&gt;
&lt;br /&gt;
name, value, class, placeholder, required etc..&lt;br /&gt;
&lt;br /&gt;
For possible types you can search the &#039;&#039;&#039;FlexForm&#039;&#039;&#039; docs for all documentation that starts with input.&lt;br /&gt;
&lt;br /&gt;
Some examples for types are : text, url, phone, textarea, password, range, checkboxes, radiobutton, email and more.&lt;br /&gt;
&lt;br /&gt;
There are some &#039;&#039;&#039;FlexForm&#039;&#039;&#039; specific attributes like &#039;&#039;parsepost&#039;&#039; and &#039;&#039;html&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;- parsepost&#039;&#039;&#039; can be used on e.g. a hidden field where the value holds names of other fields to be switched at post processing. e.g.&lt;br /&gt;
&lt;br /&gt;
This will read the form field value with name &amp;quot;title&amp;quot; and replace [title] in the value of the newtitle field&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;TODO: Above needs more details&#039;&#039;&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;input type=&amp;quot;number&amp;quot; name=&amp;quot;Number&amp;quot; /&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;Number with prefix&amp;quot; value=&amp;quot;nr. [Number]&amp;quot; parsepost /&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;- html&#039;&#039;&#039; attribute allows filtering input fields. The options are :&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;default&amp;quot; which is the same as not adding it at all. It will filter by the HTMLPurifier rules (see link below)&lt;br /&gt;
* &amp;quot;all&amp;quot; no filtering will be done (not even XSS hacks)&lt;br /&gt;
* &amp;quot;nohtml&amp;quot; means all HTML will be filtered out&lt;br /&gt;
* &amp;quot;custom&amp;quot; is used like this : &amp;quot;custom=b,u,i&amp;quot;, meaning no html is allowed, except bold, italic and underline&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;- tempex&#039;&#039;&#039; attribute in FlexForm is a custom attribute. This is in its beta status and is being tested and tweaked.&lt;br /&gt;
&lt;br /&gt;
Tempex stands for Template Execute. You can add this attribute to e.g. a text field, textarea, number field, etc.. The value of that field will be determent by the result of an executed/parsed template.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The value for tempex starts with the name of the template, followed by the field names in your form, all devided by a pipe. Those fields will be monitored for changes and when a change is detected the template is parsed and the result will be inserted into the field that has the tempex argument. Example :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;form action=&amp;quot;get&amp;quot; class=&amp;quot;simple&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;label for=&amp;quot;fname&amp;quot;&amp;gt;First name&amp;lt;/label&amp;gt; &amp;lt;input type=&amp;quot;text&amp;quot; id=&amp;quot;fname&amp;quot; name=&amp;quot;First name&amp;quot; /&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;label for=&amp;quot;lname&amp;quot;&amp;gt;Last name&amp;lt;/label&amp;gt;&amp;lt;input type=&amp;quot;text&amp;quot; id=&amp;quot;lname&amp;quot; name=&amp;quot;Last name&amp;quot; /&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;label for=&amp;quot;email&amp;quot;&amp;gt;email address&amp;lt;/label&amp;gt; &amp;lt;input type=&amp;quot;email&amp;quot; id=&amp;quot;email&amp;quot; name=&amp;quot;email&amp;quot; /&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;textarea size=&amp;quot;150&amp;quot; name=&amp;quot;total&amp;quot; class=&amp;quot;tital&amp;quot; tempex=&amp;quot;TestingTempex|First name|Last name|email&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;getsend&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Of course there should be a &#039;&#039;&#039;Template:TestingTempex&#039;&#039;&#039; in your wiki in this example.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;- required&#039;&#039;&#039; attribute in FlexForm differs from the HTML variant.&lt;br /&gt;
&lt;br /&gt;
When a &#039;&#039;&#039;HTML5&#039;&#039;&#039; form field has the word &amp;quot;&#039;&#039;&#039;required&#039;&#039;&#039;&amp;quot; as an attribute, this field will always be required. Even &#039;&#039;&#039;required=&amp;quot;no&amp;quot;&#039;&#039;&#039; will make the field required.&lt;br /&gt;
&lt;br /&gt;
With &#039;&#039;&#039;FlexForm&#039;&#039;&#039; this needs to be &#039;&#039;&#039;required=&amp;quot;required&amp;quot;&#039;&#039;&#039; for an input field to be required. Only required or required=&amp;quot;no&amp;quot; or required=&amp;quot;whatever&amp;quot; will not make the field a required field.&lt;br /&gt;
&lt;br /&gt;
Example on how to use required in FlexForm :&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;input type=&amp;quot;email&amp;quot; name=&amp;quot;emailfield&amp;quot; placeholder=&amp;quot;This is a placeholder&amp;quot; required=&amp;quot;required&amp;quot; /&amp;gt; &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
&lt;br /&gt;
===Note===&lt;br /&gt;
&lt;br /&gt;
===Links===&lt;/div&gt;</summary>
		<author><name>3f181944-9694-4c7c-83d3-a6193204adb3</name></author>
	</entry>
	<entry>
		<id>https://open-csp.org/index.php?title=DevOps:Doc/FlexForm/2.1/input/file&amp;diff=3345</id>
		<title>DevOps:Doc/FlexForm/2.1/input/file</title>
		<link rel="alternate" type="text/html" href="https://open-csp.org/index.php?title=DevOps:Doc/FlexForm/2.1/input/file&amp;diff=3345"/>
		<updated>2025-02-03T09:41:50Z</updated>

		<summary type="html">&lt;p&gt;3f181944-9694-4c7c-83d3-a6193204adb3: Added multiple parameter (documentation)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Name===&lt;br /&gt;
file&lt;br /&gt;
===Type===&lt;br /&gt;
input&lt;br /&gt;
===Synopsis===&lt;br /&gt;
Using file uploads&lt;br /&gt;
===Description===&lt;br /&gt;
Use a form to upload one or multiple files.&lt;br /&gt;
===Parameters===&lt;br /&gt;
input type=&amp;quot;file&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;target&#039;&#039;&#039;* : Name of the File page to be created&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;id&#039;&#039;&#039;* : This must always be unique, that is, it can only occur once on a page. Do not include a hyphen (&amp;quot;-&amp;quot;), underscore (&amp;quot;_&amp;quot;), or any special characters (also no spaces).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;action&#039;&#039;&#039;* : defaults to &#039;&#039;&#039;upload&#039;&#039;&#039;. Read more below on using this to convert docx documents to pages in the wiki.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;name&#039;&#039;&#039;* : As with any input field, a name is mandatory&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;pagecontent&#039;&#039;&#039;: Text content to be added on the File Page. If you are using &#039;&#039;&#039;convertfrom&#039;&#039;&#039; then any images uploading during the convert will get the pagecontent.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;comment&#039;&#039;&#039;: Text to show in recent changes or contributions list &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;force &#039;&#039;&#039;: Force images to a certain format (png, jpg or gif). When using this option, any file uploaded that is not supported will be uploaded as is.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;error_id &#039;&#039;&#039;: Id of a DOM Element where error notices will be shown&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;verbose_id &#039;&#039;&#039;: Id of a DOM element where information about the file is shown&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;use_label &#039;&#039;&#039;: Doesn&#039;t require a value. When an input field has a label attached to it, then the label will become the upload button and the input field will be hidden&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;dropzone &#039;&#039;&#039;: Doesn&#039;t require a value. Will turn the verbose div into an additional file drop zone. If you also &#039;&#039;&#039;use_label&#039;&#039;&#039;, then the label will become the dropzone.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;parsecontent&#039;&#039;&#039;: Will force FlexForm to insert values from other form fields inside the pagecontent field. Use square brackets, like [fieldname], where values should be inserted.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;template&#039;&#039;&#039; : If you want to store a template call inside the content of the File page, you can &#039;&#039;&#039;template=&amp;lt;name of your template&amp;gt;&#039;&#039;&#039; in combination with &#039;&#039;&#039;parsecontent&#039;&#039;&#039;. [flexform-template] inside your content field will be replaced by &#039;&#039;&#039;{{&amp;lt;name of your template&#039;&#039;&#039; and &#039;&#039;&#039;[/flexform-template]&#039;&#039;&#039; will be replaced by &#039;&#039;&#039;}}&#039;&#039;&#039;. See example 3 on the examples page.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;multiple&#039;&#039;&#039; = multiple&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;*&#039;&#039;&#039;= a required variable&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;target&#039;&#039;&#039; is basically the name you want to use to store the file or files. It recognizes &#039;&#039;&#039;[mwrandom]&#039;&#039;&#039;, &#039;&#039;&#039;[filename]&#039;&#039;&#039; and other form fields, by using their name with square brackets around them (see example). &#039;&#039;&#039;pagecontent&#039;&#039;&#039; can also hold form variables.&lt;br /&gt;
&lt;br /&gt;
=== action=&amp;quot;convertfrom:????&amp;quot; ===&lt;br /&gt;
====Pandoc====&lt;br /&gt;
The &#039;&#039;&#039;action&#039;&#039;&#039; argument defaults to &#039;&#039;upload&#039;&#039;. If you use &#039;&#039;&#039;action=&amp;quot;convertfrom:????&amp;quot;&#039;&#039;&#039; and you have Pandoc installed on your system, FlexForm will convert a document and create it as a page in the Wiki. &#039;&#039;&#039;target&#039;&#039;&#039; will then be used as a Page Title. Depending on your version of Pandoc, the results might differ. &#039;&#039;&#039;convertfrom&#039;&#039;&#039; allows all Pandoc to MediaWiki text conversions. &#039;&#039;&#039;docx&#039;&#039;&#039; would be a good example : action=&amp;quot;convertfrom:docx&amp;quot;. Any images uploaded during the convert can have their content of their filepages be filled using &#039;&#039;&#039;pagecontent&#039;&#039;&#039;. Since version 2.2.9 you can also add an argument &#039;&#039;&#039;slot=&amp;quot;&amp;lt;name of slot&amp;gt;&amp;quot;&#039;&#039;&#039; to have the converted Document be save to a specific slot on the target page, instead of the main slot. Keep in mind, MediaWiki slots need to be defined in your LocalSettings.&lt;br /&gt;
====Excel ( since version 2.2.9 )====&lt;br /&gt;
You can also use &#039;&#039;&#039;action=&amp;quot;convertfrom:xls&amp;quot;&#039;&#039;&#039; or &#039;&#039;&#039;action=&amp;quot;convertfrom:xlsx&amp;quot;&#039;&#039;&#039;. This allows for converting an Excel xls or xlsx file to JSON. Images are not supported. The argument &#039;&#039;&#039;slot&#039;&#039;&#039; is supported. &#039;&#039;This conversion is not done using Pandoc and thus will work without having Pandoc installed&#039;&#039;. (just make sure you run composer update after you update FlexForm).&lt;br /&gt;
&lt;br /&gt;
An excel document like this :&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;options&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;description&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;HitCounter&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;WSStats&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;More&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|$wgDisableCounters&lt;br /&gt;
|automatically show hitcounts on a page and Special page&lt;br /&gt;
|yes&lt;br /&gt;
|no&lt;br /&gt;
|WSStats allows for adding this to a page using parser function&lt;br /&gt;
|-&lt;br /&gt;
|$wgHitcounterUpdateFreq&lt;br /&gt;
|frequency of counters update&lt;br /&gt;
|yes&lt;br /&gt;
|no&lt;br /&gt;
|WSStats uses MW DB abstraction layer to update hitcount. The approach is  different&lt;br /&gt;
|-&lt;br /&gt;
|skip_user_groups&lt;br /&gt;
|Skip certain user groups in counting&lt;br /&gt;
|no&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|count_all_usergroups&lt;br /&gt;
|Count pages independend of a user group&lt;br /&gt;
|no&lt;br /&gt;
|yes&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
Will result in the following JSON:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
[&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;options&amp;quot;: &amp;quot;$wgDisableCounters&amp;quot;,&lt;br /&gt;
        &amp;quot;description&amp;quot;: &amp;quot;automatically show hitcounts on a page and Special page&amp;quot;,&lt;br /&gt;
        &amp;quot;HitCounter&amp;quot;: &amp;quot;yes&amp;quot;,&lt;br /&gt;
        &amp;quot;WSStats&amp;quot;: &amp;quot;no&amp;quot;,&lt;br /&gt;
        &amp;quot;More&amp;quot;: &amp;quot;WSStats allows for adding this to a page using parser function&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;options&amp;quot;: &amp;quot;$wgHitcounterUpdateFreq&amp;quot;,&lt;br /&gt;
        &amp;quot;description&amp;quot;: &amp;quot;frequency of counters update&amp;quot;,&lt;br /&gt;
        &amp;quot;HitCounter&amp;quot;: &amp;quot;yes&amp;quot;,&lt;br /&gt;
        &amp;quot;WSStats&amp;quot;: &amp;quot;no&amp;quot;,&lt;br /&gt;
        &amp;quot;More&amp;quot;: &amp;quot;WSStats uses MW DB abstraction layer to update hitcount. The approach is different&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;options&amp;quot;: &amp;quot;skip_user_groups&amp;quot;,&lt;br /&gt;
        &amp;quot;description&amp;quot;: &amp;quot;Skip certain user groups in counting&amp;quot;,&lt;br /&gt;
        &amp;quot;HitCounter&amp;quot;: &amp;quot;no&amp;quot;,&lt;br /&gt;
        &amp;quot;WSStats&amp;quot;: &amp;quot;yes&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;options&amp;quot;: &amp;quot;count_all_usergroups&amp;quot;,&lt;br /&gt;
        &amp;quot;description&amp;quot;: &amp;quot;Count pages independend of a user group&amp;quot;,&lt;br /&gt;
        &amp;quot;HitCounter&amp;quot;: &amp;quot;no&amp;quot;,&lt;br /&gt;
        &amp;quot;WSStats&amp;quot;: &amp;quot;yes&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===HTMLtoImage===&lt;br /&gt;
You can also use the field input to upload an image created from part of the page shown where the form is rendered.&lt;br /&gt;
&lt;br /&gt;
Basically, you tell FlexForm you want to render a part of your screen as an image and upload it to the wiki.&lt;br /&gt;
&lt;br /&gt;
The syntax is the same as above, but it only needs : target, name and pagecontent. The other arguments are ignored. Additionally it needs an argument called &#039;&#039;&#039;presentor=&amp;quot;canvas&amp;quot;&#039;&#039;&#039; and it needs the ID of the element you want to convert to an image: &#039;&#039;&#039;canvas_source_id&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;By default the image will always be a .jpg file. We plan to support png if this is requested.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For example you have a DIV element with id=&amp;quot;content-to-convert&amp;quot;. Within this DIV you have content you want to convert to an image an upload to the Wiki.&lt;br /&gt;
&lt;br /&gt;
A FlexForm to utilize this would look something like this :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div id=&amp;quot;content-to-convert&amp;quot; style=&amp;quot;width:500px&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;h1&amp;gt;Test Screenshot&amp;lt;/h1&amp;gt;&lt;br /&gt;
  &amp;lt;p&amp;gt;Lots of other content here&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;form&amp;gt;&lt;br /&gt;
  &amp;lt;input type=&amp;quot;file&amp;quot; presentor=&amp;quot;canvas&amp;quot; id=&amp;quot;canvasUpload&amp;quot; target=&amp;quot;testCanvasFile.jpg&amp;quot; pagecontent=&amp;quot;testing&amp;quot; canvas_source_id=&amp;quot;content-to-convert&amp;quot;  /&amp;gt;&lt;br /&gt;
  &amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;upload&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;You cannot use both file uploads in one form.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Note===&lt;br /&gt;
An &#039;&#039;&#039;input type=&amp;quot;file&amp;quot;&#039;&#039;&#039; always needs a unique ID! ( do not use &amp;quot;-&amp;quot;, &amp;quot;_&amp;quot;, any special characters ( also no spaces ) ).&lt;br /&gt;
&lt;br /&gt;
A form that needs to upload files needs this argument : &#039;&#039;&#039;enctype=&amp;quot;multipart/form-data&amp;quot;&#039;&#039;&#039;. The argument needs to be added to the Form tag, not the input tag. See also : https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement/enctype&lt;br /&gt;
&lt;br /&gt;
As FlexForm first handles File Upload, it will add the files processed to use in an _edit or a _create.&lt;br /&gt;
Every file upload field needs a name attribute and once a file has been uploaded you can use them in an edit or create in the following format :&lt;br /&gt;
 &lt;br /&gt;
*&#039;&#039;&#039;FFUploadedFile-UploadName-&#039;&#039;&#039;&#039;&#039;&amp;lt;name attribute of input field&amp;gt;&#039;&#039; : Will hold the original file name uploaded&lt;br /&gt;
*&#039;&#039;&#039;FFUploadedFile-UploadBase-&#039;&#039;&#039;&#039;&#039;&amp;lt;name attribute of input field&amp;gt;&#039;&#039; : Will hold the original file name uploaded without the extension&lt;br /&gt;
*&#039;&#039;&#039;FFUploadedFile-NewName-&#039;&#039;&#039;&#039;&#039;&amp;lt;name attribute of input field&amp;gt;&#039;&#039; : Will hold the name of the file as it is uploaded into the Wiki ( Without the File: prefix )&lt;br /&gt;
&lt;br /&gt;
If you use a multiple file upload, then the above values will all be &#039;&#039;&#039;,&#039;&#039;&#039; separated.&lt;br /&gt;
&lt;br /&gt;
===Links===&lt;br /&gt;
====Tutorial====&lt;br /&gt;
[https://wikibase-solutions.com/developer-logs/flexform-multiple-file-upload Link to a quick tutorial video shows you how to use one FlexForm form to]:&lt;br /&gt;
* upload multiple files. Docs : [https://www.open-csp.org/DevOps:Doc/FlexForm/1.0/input/file input file documentation]&lt;br /&gt;
* add a template to the source of the file pages. Docs : [https://www.open-csp.org/DevOps:Doc/FlexForm/1.0/input/file input file documentation]&lt;br /&gt;
* have form input fields be added to the arguments for the template. Docs : [https://www.open-csp.org/DevOps:Doc/FlexForm/1.0/input/file input file documentation]&lt;br /&gt;
* show a success message after upload. Docs : [https://www.open-csp.org/DevOps:Doc/FlexForm/1.0/Form_options form options]&lt;br /&gt;
* add a comment line to your upload visible in the Contributions list and recent changes. Docs : [https://www.open-csp.org/DevOps:Doc/FlexForm/1.0/Form_options form options]&lt;br /&gt;
* use a dropzone to drag and drop files. Docs : [https://www.open-csp.org/DevOps:Doc/FlexForm/1.0/input/file input file documentation]&lt;br /&gt;
* align form fields using a MW table. Docs : [[mediawikiwiki:Help:Tables|MediaWiki tables]]&lt;br /&gt;
* add current date using Magic Words. Docs : [[mediawikiwiki:Help:Magic_words|MediaWiki magic words]]&lt;br /&gt;
&lt;br /&gt;
====Other links====&lt;br /&gt;
https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement/enctype&lt;br /&gt;
&lt;br /&gt;
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file&lt;br /&gt;
&lt;br /&gt;
https://pandoc.org/&lt;/div&gt;</summary>
		<author><name>3f181944-9694-4c7c-83d3-a6193204adb3</name></author>
	</entry>
	<entry>
		<id>https://open-csp.org/index.php?title=Search-documentation&amp;diff=3341</id>
		<title>Search-documentation</title>
		<link rel="alternate" type="text/html" href="https://open-csp.org/index.php?title=Search-documentation&amp;diff=3341"/>
		<updated>2025-02-03T09:03:41Z</updated>

		<summary type="html">&lt;p&gt;3f181944-9694-4c7c-83d3-a6193204adb3: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Search documentation===&lt;br /&gt;
__NOTOC__{{#WikiSearchConfig:&lt;br /&gt;
|default operator=and&lt;br /&gt;
|base query=[[Class::Doc]]&lt;br /&gt;
|aggregation size=50&lt;br /&gt;
|Title&lt;br /&gt;
|Doc subject&lt;br /&gt;
|Doc synopsis&lt;br /&gt;
|Doc parent&lt;br /&gt;
|Subject version&lt;br /&gt;
|Doc target group&lt;br /&gt;
|Tag&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;div class=&amp;quot;main-search&amp;quot;&amp;gt;&lt;br /&gt;
{{#WikiSearchFrontend:size=10&lt;br /&gt;
|facets=4&lt;br /&gt;
|sort=Modification date&lt;br /&gt;
|sort options=Modification date&lt;br /&gt;
|ordertype=Modification date&lt;br /&gt;
|order=desc&lt;br /&gt;
|title=_DTITLE&lt;br /&gt;
|layout=template&lt;br /&gt;
|template=Show_docs_search_result&lt;br /&gt;
|@Doc subject&lt;br /&gt;
|@Subject version&lt;br /&gt;
|@Doc target group&lt;br /&gt;
  #label=Target group&lt;br /&gt;
|@Tag&lt;br /&gt;
  #display=pill&lt;br /&gt;
|?Doc subject&lt;br /&gt;
|?Doc synopsis&lt;br /&gt;
|?Subject version&lt;br /&gt;
|?Doc target group&lt;br /&gt;
|?Doc parent&lt;br /&gt;
|?Title&lt;br /&gt;
|?$title&lt;br /&gt;
|?$snippet &lt;br /&gt;
|?$namespacename&lt;br /&gt;
|?$page&lt;br /&gt;
|?$Modification date#display=date#label=Updated#type=date}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>3f181944-9694-4c7c-83d3-a6193204adb3</name></author>
	</entry>
	<entry>
		<id>https://open-csp.org/index.php?title=DevOps:Doc/FlexForm/1.1/token&amp;diff=3273</id>
		<title>DevOps:Doc/FlexForm/1.1/token</title>
		<link rel="alternate" type="text/html" href="https://open-csp.org/index.php?title=DevOps:Doc/FlexForm/1.1/token&amp;diff=3273"/>
		<updated>2024-10-30T08:29:22Z</updated>

		<summary type="html">&lt;p&gt;3f181944-9694-4c7c-83d3-a6193204adb3: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Name===&lt;br /&gt;
_token&lt;br /&gt;
===Type===&lt;br /&gt;
_token&lt;br /&gt;
===Synopsis===&lt;br /&gt;
Token input field&lt;br /&gt;
===Description===&lt;br /&gt;
Use of select2 tokens&lt;br /&gt;
===Parameters===&lt;br /&gt;
&#039;&#039;&#039;_token&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;name&#039;&#039;&#039; = e.g. tokenfield[]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;separator&#039;&#039;&#039; = token values have by default comma separated values when adding to a Template. You can specify a different separator using this argument . e.g. separator=&amp;quot;;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;allowtags&#039;&#039;&#039; = (no value or (as off version 2.2.19 -&amp;gt;) value of &#039;allowtags&#039;) Allow to create values that do not exist&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;allowsort&#039;&#039;&#039; = (no value or (as off version 2.2.19 -&amp;gt;) value of &#039;allowsort&#039;) Allow user to sort values (drag and drop selected token). &#039;&#039;&#039;Does not work with query source.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;allowclear&#039;&#039;&#039; = (no value or (as off version 2.2.19 -&amp;gt;) value of &#039;allowclear&#039;) allow user to clear his selection. Will only work when you have set a placeholder.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;input-length-trigger&#039;&#039;&#039; = integer number of characters before lookup actually happens, defaults to 3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;id&#039;&#039;&#039; = &#039;&#039;&#039;&#039;&#039;mandatory&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;query&#039;&#039;&#039; = If you have [https://www.semantic-mediawiki.org Semantic MediaWiki] installed, you can do a SMW Ask query here to fill the options list. &lt;br /&gt;
* &#039;&#039;&#039;returntext&#039;&#039;&#039; lets you set a property for the visible label of the token&lt;br /&gt;
* &#039;&#039;&#039;returnid&#039;&#039;&#039; (optional) lets you set a property for the value to be stored. This defaults to the page name.&lt;br /&gt;
* &#039;&#039;&#039;limit&#039;&#039;&#039; (optional) lets you sets the maximum number of pages to be returned by the query&lt;br /&gt;
* &#039;&#039;&#039;fquery&#039;&#039;&#039; (optional) lets you set a SMW Filter query that will be added to the query. Additional you can use [fffield=&#039;&amp;lt;name of a form field&amp;gt;&#039;] inside the fquery to dynamically add a value of a form field in the filter query.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;callback&#039;&#039;&#039; = templateCallBack&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;multiple&#039;&#039;&#039; = multiple&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
Example 1 : Search for pages in the Doc page types.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;form&amp;gt;&lt;br /&gt;
&amp;lt;_token name=&amp;quot;tokenfield[]&amp;quot; id=&amp;quot;tokener&amp;quot; query=&amp;quot;[[Class::Doc]][[Title::!!!]](limit=99999)(returntext=Title)&amp;quot; placeholder=&amp;quot;Search for Documentation Titles&amp;quot; multiple=&amp;quot;multiple&amp;quot; allowclear=&amp;quot;allowclear&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/_token&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;_form restrictions=&amp;quot;lifted&amp;quot; action=&amp;quot;get&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;_token name=&amp;quot;tokenfield[]&amp;quot; id=&amp;quot;tokener&amp;quot; query=&amp;quot;[[Class::Doc]][[Title::!!!]](limit=99999)(returntext=Title)&amp;quot; placeholder=&amp;quot;Search for Documentation Titles&amp;quot; multiple=&amp;quot;multiple&amp;quot; allowclear=&amp;quot;allowclear&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/_token&amp;gt;&lt;br /&gt;
&amp;lt;/_form&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example 2 : Select one or more cars or create a new one&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;form&amp;gt;&lt;br /&gt;
&amp;lt;_token name=&amp;quot;car[]&amp;quot; id=&amp;quot;test-tokens-multiple&amp;quot; multiple=&amp;quot;multiple&amp;quot; allowtags=&amp;quot;allowtags&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;option value=&amp;quot;volvo&amp;quot;&amp;gt;Volvo&amp;lt;/option&amp;gt;&lt;br /&gt;
&amp;lt;option value=&amp;quot;saab&amp;quot; selected=&amp;quot;selected&amp;quot;&amp;gt;Saab&amp;lt;/option&amp;gt;&lt;br /&gt;
&amp;lt;option value=&amp;quot;tesla&amp;quot; selected=&amp;quot;selected&amp;quot;&amp;gt;Tesla&amp;lt;/option&amp;gt;&lt;br /&gt;
&amp;lt;/_token&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;form restrictions=&amp;quot;lifted&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;_token name=&amp;quot;car[]&amp;quot; id=&amp;quot;test-tokens-multiple&amp;quot; multiple=&amp;quot;multiple&amp;quot; allowtags=&amp;quot;allowtags&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;option value=&amp;quot;volvo&amp;quot;&amp;gt;Volvo&amp;lt;/option&amp;gt;&lt;br /&gt;
&amp;lt;option value=&amp;quot;saab&amp;quot; selected=&amp;quot;selected&amp;quot;&amp;gt;Saab&amp;lt;/option&amp;gt;&lt;br /&gt;
&amp;lt;option value=&amp;quot;tesla&amp;quot; selected=&amp;quot;selected&amp;quot;&amp;gt;Tesla&amp;lt;/option&amp;gt;&lt;br /&gt;
&amp;lt;/_token&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 3 : using the &#039;&#039;&#039;selected&#039;&#039;&#039; and &#039;&#039;&#039;options&#039;&#039;&#039; attributes&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;form&amp;gt;&lt;br /&gt;
&amp;lt;_token name=&amp;quot;TestSelected[]&amp;quot; id=&amp;quot;test-tokens-selected&amp;quot; selected=&amp;quot;C&amp;quot; options=&amp;quot;A,B,C,D,E&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;form restrictions=&amp;quot;lifted&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;_token name=&amp;quot;TestSelected[]&amp;quot; id=&amp;quot;test-tokens-selected&amp;quot; selected=&amp;quot;C&amp;quot; options=&amp;quot;A,B,C,D,E&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example 4 : using fquery&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;form&amp;gt;&lt;br /&gt;
&amp;lt;select name=&amp;quot;Version&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;option value=&amp;quot;+&amp;quot;&amp;gt;Any version&amp;lt;/option&amp;gt;&lt;br /&gt;
&amp;lt;option value=&amp;quot;1.0&amp;quot;&amp;gt;1.0&amp;lt;/option&amp;gt;&lt;br /&gt;
&amp;lt;option value=&amp;quot;1.1&amp;quot;&amp;gt;1.1&amp;lt;/option&amp;gt;&lt;br /&gt;
&amp;lt;option value=&amp;quot;2.0&amp;quot;&amp;gt;2.0&amp;lt;/option&amp;gt;&lt;br /&gt;
&amp;lt;option value=&amp;quot;2.1&amp;quot;&amp;gt;2.1&amp;lt;/option&amp;gt;&lt;br /&gt;
&amp;lt;/select&amp;gt;&lt;br /&gt;
&amp;lt;_token name=&amp;quot;Doc page&amp;quot; id=&amp;quot;tokens-with-fquery&amp;quot; query=&amp;quot;[[Class::Doc]][[Doc subject::DevOps:Doc/FlexForm]][[Title::!!!]](limit=99999)(returntext=Title)(fquery=[[Subject version::[fffield=Version] ]])&amp;quot; input-length-trigger=&amp;quot;1&amp;quot; placeholder=&amp;quot;Search for Documentation Titles&amp;quot; multiple=&amp;quot;multiple&amp;quot; allowclear=&amp;quot;allowclear&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/_token&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;form restrictions=&amp;quot;lifted&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;select name=&amp;quot;Version&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;option value=&amp;quot;+&amp;quot;&amp;gt;Any version&amp;lt;/option&amp;gt;&lt;br /&gt;
&amp;lt;option value=&amp;quot;1.0&amp;quot;&amp;gt;1.0&amp;lt;/option&amp;gt;&lt;br /&gt;
&amp;lt;option value=&amp;quot;1.1&amp;quot;&amp;gt;1.1&amp;lt;/option&amp;gt;&lt;br /&gt;
&amp;lt;option value=&amp;quot;2.0&amp;quot;&amp;gt;2.0&amp;lt;/option&amp;gt;&lt;br /&gt;
&amp;lt;option value=&amp;quot;2.1&amp;quot;&amp;gt;2.1&amp;lt;/option&amp;gt;&lt;br /&gt;
&amp;lt;/select&amp;gt;&lt;br /&gt;
&amp;lt;_token name=&amp;quot;Doc page&amp;quot; id=&amp;quot;tokens-with-fquery&amp;quot; query=&amp;quot;[[Class::Doc]][[Doc subject::DevOps:Doc/FlexForm]][[Title::!!!]](limit=99999)(returntext=Title)(fquery=[[Subject version::[fffield=Version] ]])&amp;quot; input-length-trigger=&amp;quot;1&amp;quot; placeholder=&amp;quot;Search for Documentation Titles&amp;quot; multiple=&amp;quot;multiple&amp;quot; allowclear=&amp;quot;allowclear&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/_token&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Note===&lt;br /&gt;
In an SMW query, the &#039;&#039;&#039;!!!&#039;&#039;&#039; will be replaced with whatever the user types.&lt;br /&gt;
&lt;br /&gt;
===Links===&lt;/div&gt;</summary>
		<author><name>3f181944-9694-4c7c-83d3-a6193204adb3</name></author>
	</entry>
</feed>