Extension:Talkright

From MediaWiki.org

Jump to: navigation, search
Manual on MediaWiki Extensions
List of MediaWiki Extensions
Talkright

Release status: unknown

Implementation User rights
Description This extension makes the editing of talk pages a distinct action from article editing.
Author(s) Marc Noirot
Version 1.0.1
MediaWiki 1.6+
Download see below
Added rights talk

Talkright extension makes the editing of talk pages a distinct action from the editing of articles to create finer permissions, by adding the talk right.

Contents

[edit] Usage

Copy the code below in a file named talkright.php in MediaWiki's extensions folder.

Add the following line in the LocalSettings.php file:

include_once("extensions/talkright.php");


Now you can use the talk right within the group user rights.

[edit] Example

The following example creates a group whose users can comment on articles but not edit their contents:

$wgGroupPermissions['commentators']['edit'] = false;
$wgGroupPermissions['commentators']['talk'] = true;

[edit] Code

This code has been tested on MediaWiki 1.6.1 and 1.6.7.

History:

  • 20 June 2006 -- Version 1.0.1 -- Added credits and extension version information.
  • 7 June 2006 -- Version 1.0 -- First release.
<?php
/*
    Talkright MediaWiki Extension
    By Marc Noirot - marc dot noirot at gmail
 
    This extension makes the editing of talk pages a distinct action from
    the editing of articles, to create finer permissions by adding the 'talk' right.
*/
 
if (!defined('MEDIAWIKI')) die();
 
$wgExtensionCredits['other'][] = array(
    'name' => 'talkright',
    'description' => 'adds a talk permission independant from article edition',
    'url' => 'http://www.mediawiki.org/wiki/Extension:Talkright',
    'author' => 'Marc Noirot',
    'version' => '1.0.1'
);
 
/*
    global 'talk' right
*/
array_push($wgAvailableRights, 'talk');
 
/**
 * Can user edit the given page if it's a talk page ?
 * @param &$title the concerned page
 * @param &$wgUser the current mediawiki user
 * @param $action the action performed
 * @param &$result (out) true or false, or null if we don't care about the parameters
 */
function userCanTalk(&$title, &$wgUser, $action, &$result) {
    if ($action == 'edit' && $title->isTalkPage()) {
        if (!$wgUser->isAllowed('talk')) {
            $result = false;
            return false;
        }
    }
    return true;
}
 
/**
 * Bypass edit restriction when editing pages if user can talk and page is a comment.
 * @param $&editPage the page edition object
 * @return true to resume edition to normal operation
 */
function alternateEdit(&$editPage) {
    global $wgOut, $wgUser, $wgRequest, $wgTitle;
 
    if ($wgTitle->isTalkPage() && $wgUser->isAllowed('talk')) {
        array_push($wgUser->mRights, 'edit');
    }
    return true;
}
 
/*
    register global hooks
*/
$wgHooks['userCan'][] = 'userCanTalk';
$wgHooks['AlternateEdit'][] = 'alternateEdit';

[edit] See Also

Personal tools