Installation

Grab in instance from https://github.com/WikibaseSolutions/FlexForm.

Create a "FlexForm" folder in your Wiki extensions folder and extract the files there.

Setup

You can tweak FlexForm to an extent in your Localsettings.php

$wgFlexFormConfig['secure'] = true; //( default is true ). Will render form that make no sense when inspected in the browser

$wgFlexFormConfig['sec_key'] = ""; // A salt key for encryption. Used together with "secure" option. Must be set when using multiple instances of a wiki

$wgFlexFormConfig['auto_save_interval'] = 30000; // Interval time in ms, defaults to 3 minutes (180000 ms). Form is submitted on each interval regardless of changes.

$wgFlexFormConfig['auto_save_after_change'] = 3000; // 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.

$wgFlexFormConfig['auto_save_btn_on'] = 'Autosave on'; // text on the autosave button to toggle on

$wgFlexFormConfig['auto_save_btn_off'] = 'Autosave off'; // text on the autosave button to toggle off

$wgFlexFormConfig['FlexFormDefaultTheme'] = "plain"; // Currently the only form

$wgFlexFormConfig['rc_site_key'] = ""; // reCaptcha site key

$wgFlexFormConfig['rc_secret_key'] = ""; // reCaptcha secret key

$wgFlexFormConfig['file_temp_path'] = ""; // Where to store images temporarily that need to be format converted

$wgFlexFormConfig['can_create_user'] = ""; // Defaults to false. Set to yes if FlexForm is allowed to create new users

$wgFlexFormConfig['filter_input_tags'] = false; // 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.

$wgFlexFormConfig['CreateAndEditForms']['allowedGroups'] = ["sysop","moderator"]; // Defaults to sysop. Only a user in the allowedGroups is able to edit pages with a FlexForm in the source.

$wgFlexFormConfig['CreateAndEditForms']['renderonlyapprovedforms'] = true; // 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 "FORM CANNOT BE RENDERED, NOT VALIDATED" will be shown instead of the form when it is invalid.

$wgFlexFormConfig['CreateAndEditForms']['userscaneditallpages'] = false; // 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.

$wgFlexFormConfig['CreateAndEditForms']['hideEdit'] = true; // 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.

$wgFlexFormConfig['create-seo-titles'] = true; // Defaults to false. Will turn titles given to wscreate into url friendly slugs. Creating only latin character and converting spaces and special characters.

Finally

Add the following line at the end of your LocalSettings.php to enable the extension :

wfLoadExtension( 'FlexForm' );

It is also a good idea to turn off parsing cache when using dynamic forms like FlexForm.

$wgParserCacheType = CACHE_NONE;

Notification/Messages

FlexForm has a notification system build in. This is used to show possible errors or success / custom messages.

To enable this.. add to your header page :

<_form showmessages />