Manual:Forms

From mediawiki.org



Within the Mediawiki ecosystem the concept of "form" can have 3 different meanings:

  • built-in forms included in the Mediawiki software by which users can sign-in/login, edit the wikitext of pages, and even to perform structured searches through a large set of Special pages
  • input forms to provide WIKIs administrators with data entered by visitors, located in standard wiki articles or Special Pages
  • forms located either in standard wiki articles and Special pages by which users can enter structured data in order to create a new wiki article and to "preload" such article with the entered data (these kind of forms are known as "page forms")

Built-in forms[edit]

Out-of-the-box MediaWiki uses form-based data entry for a variety of page maintenance and administrative functions. MediaWiki articles themselves are created using free-form wikitext. Like most other features of MediaWiki, there are numerous customization possibilities available.

Customizing built-in forms[edit]

Please see the following articles:

Input forms[edit]

Input forms are standard forms placed either in wiki articles or in Special pages where visitors can enter structured data (for instance contact information) and administrators can access submissions easily and securely. Because out-of-the-box MediaWiki does not provide this functionality, here is a list of extensions which implement it:

  • Extension:ContactPage - implements a simple contact form within a fixed special page
  • Extension:EmailPage - Allows sending fully rendered articles with embedded CSS to users, groups, or contact lists
  • Extension:CIForms - Forms with auto-validation, multiple choice questions and cloze tests
  • FlexForm - lets users define forms for creating and editing pages, and sending emails
  • Extension:FormMailer - sends harcoded forms in the WIKI's articles to be sent to a specific email address. It might be used with the $wgRawHtml enabled
  • Extension:QuickSurveys - surveys appearing on articles based on a PHP configuration
  • LimeSurvey - it might be a paid service, running on an external environment

Page forms[edit]

"Page forms" are forms located either in standard wiki articles, or in Special pages, by which users can enter structured data in order to create and/or edit wiki articles, and to "preload" such articles with the entered data. The difference, compared to "input forms", is that input forms either send the data directly to a provided email address (usually the system administrator) or store submissions in the database, where they can be accessed by authorized users. By contrast, "page forms" use form submissions to fill a standard wiki article (publicly accessible on the wiki) with some structured data.

This is a list of extensions implementing this functionality:

  • Extension:InputBox - Extension to create, move pages, insert comments and search for text
  • Extension:Page Forms - Extension to create and edit pages with infobox-style templates through forms
  • FlexForm - lets users define forms for creating and editing pages, and sending emails
  • Extension:Form - Extension that lets users create new articles with a form
  • Extension:VisualData - full-fledged metadata management framework based on json-schema able to easily record, organize and query collection of data on your wiki

Please see Extension:Page_Forms/Related_extensions for more information on this kind of forms.

Creating/editing articles with structured data[edit]

Some articles contain a mix of structured data and free form text. For example, an article that holds a description of a marketing contact or a bug report would normally have a set of questions that must always be answered to create a complete article. In this case, a form or an article with some preloaded wiki text might be more appropriate. For more information on this approach, please see Manual:Creating pages with preloaded text .

Taking over the editing process[edit]

If you are an extension developer, and you want your extension to intercept the editing process, you might want to check the following hooks: