Manual:Hooks/EditPage::showEditForm:initial

From Linux Web Expert

The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
EditPage::showEditForm:initial
<translate> Available from <tvar name=1><translate> version <tvar </tvar></translate>
Called just before the preview and edit form are rendered
<translate> Define function:</translate>
public static function onEditPage_showEditForm_initial( EditPage $editPage, OutputPage $output ) { ... }
<translate> Attach hook:</translate> <translate> In <tvar name=1>extension.json</tvar>:</translate>
{
	"Hooks": {
		"EditPage::showEditForm:initial": "MediaWiki\\Extension\\MyExtension\\Hooks::onEditPageshowEditForminitial"
	}
}
<translate> Called from:</translate> <translate> File(s):</translate> EditPage.php
<translate> Interface:</translate> EditPage__showEditForm_initialHook.php

<translate> For more information about attaching hooks, see <tvar name=1>Manual:Hooks </tvar>.</translate>
<translate> For examples of extensions using this hook, see <tvar name=cat>Category:EditPage::showEditForm:initial extensions</tvar>.</translate>

Details

  • $editPage: the current EditPage object.
  • $output: the OutputPage object (added in version 1.20.0).

Notes

You can do something like:

if( $editPage->formtype == 'preview' ) {
    // performing a preview.
}

to only take action on certain types of edits.

Inject HTML

There are many locations within EditPage::showEditForm:initial that allow a user to inject HTML. These hook locations are represented by member variables of the EditPage object. (Note that it is not clear how you are able to inject text using this hook prior to MW 1.9!)

$editPage->editFormPageTop                 // MW >= 1.9
$editPage->editFormTextTop                 // MW >= 1.9
$editPage->editFormTextBeforeContent       // MW >= 1.12
$editPage->editFormTextAfterWarn           // MW >= 1.9
$editPage->editFormTextAfterTools          // MW >= 1.9
$editPage->editFormTextBottom              // MW >= 1.9	

To inject your HTML, append your HTML to one of the aforementioned member variables, e.g.

$editPage->editFormPageTop .= "<span>Hello World!</span>";

Some hook locations are inside forms; some not. Those inside the form allow you to inject HTML form elements.

  • Inside form
    • editFormTextBeforeContent
    • editFormTextAfterWarn
    • editFormTextAfterTools
    • editFormTextBottom
  • Outside form
    • editFormPageTop
    • editFormTextTop

Normally, we use EditPage::showEditForm:fields for form elements, but there may be some circumstances for which it is necessary to use the aforementioned hook locations.

Readonly

In readonly mode, there is a similar EditPage::showReadOnlyForm:initial-hook