Extension:Talkright

From MediaWiki.org

Jump to: navigation, search

           

Manual on MediaWiki Extensions
List of MediaWiki Extensions
Crystal Clear action run.png
Talkright

Release status: stable

Implementation  User rights
Description This extension makes the editing of talk pages a distinct action from article editing.
Author(s)  P Leveque, Marc Noirot
Last Version  1.1
MediaWiki  1.12, 1.13
License No license specified
Download see below

check usage (experimental)

Contents

[edit] What can this extension do?

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.

[edit] Usage

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] Installation

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

2. Add the following line in the LocalSettings.php file:

require_once("$IP/extensions/talkright.php");

3. Edit tab in talk page : a "view source" button is still existing on talk pages. To fix this problem, modify includes/SkinTemplate.php on line 672 changing :

 
" if ( $this->mTitle->quickUserCan( 'edit' ) && ( $this->mTitle->exists() || $this->mTitle->quickUserCan( 'create' ) ) ) {"
to
" if ( ($this->mTitle->quickUserCan( 'edit' ) || ($this->mTitle->isTalkPage() && $wgUser->isAllowed('talk'))) && ( $this->mTitle->exists() || $this->mTitle->quickUserCan( 'create' ) ) ) {"

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

[edit] History

  • 05 August 2008 -- Version 1.1 -- Added credits for MediaWiki version 1.12, 1.13.
  • 20 June 2006 -- Version 1.0.1 -- Added credits and extension version information.
  • 7 June 2006 -- Version 1.0 -- First release.

[edit] MediaWiki 1.12+ Code

This code has been tested on MediaWiki 1.12 and 1.13.

<?php
/**
 * Talkright MediaWiki extension
 * @version 1.2
 * @author Marc Noirot - marc dot noirot at gmail
 * @author P.Levêque - User:Phillev
 * @link http://www.mediawiki.org/wiki/Extension:Talkright
 *
 * 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.
 *
 * Edit tab in talk page
       a "view source" button is still  existing on talk pages. To fix this problem, modify includes/SkinTemplate.php on line 672 changing :
     " if ( $this->mTitle->quickUserCan( 'edit' ) && ( $this->mTitle->exists() || $this->mTitle->quickUserCan( 'create' ) ) ) {"
      to
     " if ( ($this->mTitle->quickUserCan( 'edit' ) || ($this->mTitle->isTalkPage() && $wgUser->isAllowed('talk'))) && ( $this->mTitle->exists() || $this->mTitle->quickUserCan( 'create' ) ) ) {"
 
*/
 
if (!defined('MEDIAWIKI')) die();
 
$wgExtensionCredits['other'][] = array(
	'name' => 'Talkright',
	'version' => '1.2',
	'author' => array('P.Levêque', 'Marc Noirot'),
	'description' => 'Adds a <tt>talk</tt> permission independent from article edition',
	'url' => 'http://www.mediawiki.org/wiki/Extension:Talkright',
);
 
 
/* Register hooks */
$wgHooks['userCan'][] = 'userCanTalk';
$wgHooks['AlternateEdit'][] = 'alternateEdit';
 
/* Global 'talk' right */
$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, &$user, $action, &$result) {
	if ( $action = 'edit' && $title->isTalkPage() ) {
		$return = $user->isAllowed( 'talk' );
	}
	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;
}

[edit] MediaWiki 1.6.X Code

This code has been tested on MediaWiki 1.6.1 and 1.6.7. DOES NOT WORK FOR MediaWiki 1.12 and 1.13.

<?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

Warning: Default sort key "Talkright" overrides earlier default sort key "TALKRIGHT".