Extension:ContactPage

From mediawiki.org
MediaWiki extensions manual
ContactPage
Release status: stable
Implementation Special page , Hook
Description Provides a contact form for visitors
Author(s) Daniel Kinzler, Sam Reed
Latest version Continuous updates
Compatibility policy Snapshots releases along with MediaWiki. Master is not backward compatible.
MediaWiki >= 1.42.0
PHP 5.4+
Database changes No
License GNU General Public License 2.0 or later
Download
README
Example nl.wikipedia.org
  • $wgContactConfig
Quarterly downloads 88 (Ranked 70th)
Translate the ContactPage extension if it is available at translatewiki.net
Vagrant role contactpage
Issues Open tasks · Report a bug

The ContactPage extension implements a contact form for visitors. It creates a special page "Special:Contact", which is similar to "Special:EmailUser", but it has a fixed recipient, and may be used without registering.

Installation and configuration[edit]

  • Download and move the extracted ContactPage folder to your extensions/ directory.
    Developers and code contributors should install the extension from Git instead, using:cd extensions/
    git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/ContactPage
  • Add the following code at the bottom of your LocalSettings.php file:
    wfLoadExtension( 'ContactPage' );
    $wgContactConfig['default'] = [
    	'RecipientUser' => 'WikiUser',  // Must be the name of a valid account which also has a verified e-mail-address added to it.
    	'SenderName' => 'Contact Form on ' . $wgSitename,  // "Contact Form on" needs to be translated
    	'SenderEmail' => null,  // Defaults to $wgPasswordSender, may be changed as required
    	'RequireDetails' => true,  // Either "true" or "false" as required
    	'IncludeIP' => true, // Either "true" or "false" as required
    	'MustBeLoggedIn' => true,  // Check if the user is logged in before rendering the form. Either "true" or "false" as required
        'NameReadonly' => false, // Set to "true" to make the name field read only
        'EmailReadonly' => false, // Set to "true" to make the email address field read only
        'SubjectReadonly' => false, // Set to "true" to make the subject line field read only
        'MustHaveEmail' => false, // Set to "true" to require that the user submitting the form must have an associated email address
    	'AdditionalFields' => [
    		'Text' => [
    			'label-message' => 'emailmessage',
    			'type' => 'textarea',
    			'rows' => 20,
    			'required' => true,  // Either "true" or "false" as required
    		],
    	],
    	'DisplayFormat' => 'table',  // See HTMLForm documentation for available values.
    	'RLModules' => [],  // Resource loader modules to add to the form display page.
    	'RLStyleModules' => []  // Resource loader CSS modules to add to the form display page.
    ];
    
  • See the README file for further options to customize and adapt as it convenes.
  • Yes Done – Navigate to Special:Version on your wiki to verify that the extension is successfully installed.
You can require a CAPTCHA test for the contact page, if you have the ConfirmEdit extension installed. CAPTCHAs are enabled by adding
$wgCaptchaTriggers['contactpage'] = true;
to "LocalSettings.php" below the invocation of both extensions.


Further customization[edit]

Adding a link to special page "Contact" to the footer[edit]

MediaWiki 1.37.0 or later
  1. Add the following code without changing it to your "LocalSettings.php" file:
    $wgHooks['SkinAddFooterLinks'][] = function( Skin $skin, string $key, array &$footerlinks ) {
        if ( $key === 'places' ) {
            $footerlinks['contact'] = Html::element( 'a',
                [
                    'href' => 'https://www.example.org/wiki/Special:Contact',  // URL to "Special:Contact"
                    'rel' => 'noreferrer noopener'  // not required, but recommended for security reasons
                ],
            $skin->msg( 'contactpage-label' )->text()
            );
        };
    };
    
  2. Add the label for "Special:Contact" to system message MediaWiki:Contactpage-label.
MediaWiki 1.36.x or earlier
  1. Add the following code without changing it to your "LocalSettings.php" file:
    $wgHooks['SkinTemplateOutputPageBeforeExec'][] = function( $skin, &$template ) {
    	$contactLink = Html::element( 'a', [ 'href' => $skin->msg( 'contactpage-url' )->escaped() ],
    		$skin->msg( 'contactpage-label' )->text() );
    	$template->set( 'contact', $contactLink );
    	$template->data['footerlinks']['places'][] = 'contact';
    	return true;
    };
    
  2. Add the URL of "Special:Contact" to system message MediaWiki:Contactpage-url and
  3. Add the label for "Special:Contact" to system message MediaWiki:Contactpage-label.

Creating complex forms[edit]

See HTMLForm and related pages for more information on the possibilities available to create more complex forms.

Issues[edit]

Users of some hosting providers such as SiteGround and Amazon SES may get a PHP mail error or one that says that the FROM email address is not configured in the server, despite $wgPasswordSender being configured correctly and other email functionality working as expected. A fix for this issue is described here.

See also[edit]

  • 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