http://www.mediawiki.org/wiki/Special:Code/MediaWiki/95764

Revision: 95764
Author:   catrope
Date:     2011-08-30 12:27:50 +0000 (Tue, 30 Aug 2011)
Log Message:
-----------
RL2: Create the Gadget definition: namespace, and restrict editing, deleting 
and creating in it. Also make in immovable and rename the gadgets-manager-* 
rights

Modified Paths:
--------------
    branches/RL2/extensions/Gadgets/GadgetHooks.php
    branches/RL2/extensions/Gadgets/Gadgets.i18n.php
    branches/RL2/extensions/Gadgets/Gadgets.namespaces.php
    branches/RL2/extensions/Gadgets/Gadgets.php

Modified: branches/RL2/extensions/Gadgets/GadgetHooks.php
===================================================================
--- branches/RL2/extensions/Gadgets/GadgetHooks.php     2011-08-30 12:24:12 UTC 
(rev 95763)
+++ branches/RL2/extensions/Gadgets/GadgetHooks.php     2011-08-30 12:27:50 UTC 
(rev 95764)
@@ -156,6 +156,8 @@
        public static function canonicalNamespaces( &$list ) {
                $list[NS_GADGET] = 'Gadget';
                $list[NS_GADGET_TALK] = 'Gadget_talk';
+               $list[NS_GADGET_DEFINITION] = 'Gadget_definition';
+               $list[NS_GADGET_DEFINITION_TALK] = 'Gadget_definition_talk';
                return true;
        }
        
@@ -165,4 +167,25 @@
                }
                return true;
        }
+       
+       public static function titleIsMovable( $title, &$result ) {
+               if ( $title->getNamespace() == NS_GADGET_DEFINITION ) {
+                       $result = false;
+               }
+               return true;
+       }
+       
+       public static function getUserPermissionsErrors( $title, $user, 
$action, &$result ) {
+               if ( $title->getNamespace() == NS_GADGET_DEFINITION ) {
+                       // Enforce restrictions on the Gadget_definition 
namespace
+                       if ( $action == 'create' && !$user->isAllowed( 
'gadgets-definition-create' ) ) {
+                               $result[] = array( 'gadgets-cant-create' );
+                               return false;
+                       } elseif ( $action == 'delete' && !$user->isAllowed( 
'gadgets-definition-delete' ) ) {
+                               $result[] = array( 'gadgets-cant-delete' );
+                               return false;
+                       }
+               }
+               return true;
+       }
 }

Modified: branches/RL2/extensions/Gadgets/Gadgets.i18n.php
===================================================================
--- branches/RL2/extensions/Gadgets/Gadgets.i18n.php    2011-08-30 12:24:12 UTC 
(rev 95763)
+++ branches/RL2/extensions/Gadgets/Gadgets.i18n.php    2011-08-30 12:27:50 UTC 
(rev 95764)
@@ -64,6 +64,10 @@
        // TODO clean up inconsistencies between gadgetmanager- and 
gadgets-manager- etc
        'gadgets-manager-create-exists' => 'This gadget cannot be created 
because there is an existing gadget with the name $1',
        
+       # permission stuff
+       'gadgets-cant-create' => 'You do not have the right to create new 
Gadgets.',
+       'gadgets-cant-delete' => 'You do not have the right to delete Gadgets.',
+       
        # logging stuff
        'gadgets-gadgetmanlog-page' => 'Gadget manager log',
        'gadgets-gadgetmanlog-text' => 'This is a log of changes made to 
gadgets using the [[Special:GadgetManager|gadget manager]].',
@@ -73,10 +77,9 @@
 
        #rights
        'right-gadgets-edit' => 'Edit pages in the Gadget: namespace',
-       'right-gadgets-manager-create' => 'Create new gadgets',
-       'right-gadgets-manager-delete' => 'Permanently delete gadgets',
-       'right-gadgets-manager-view' => 'View gadget properties',
-       'right-gadgets-manager-modify' => 'Modify gadget properties',
+       'right-gadgets-definition-create' => 'Create new gadgets',
+       'right-gadgets-definition-delete' => 'Delete gadgets',
+       'right-gadgets-definition-edit' => 'Modify gadget properties',
 );
 
 /** Message documentation (Message documentation)

Modified: branches/RL2/extensions/Gadgets/Gadgets.namespaces.php
===================================================================
--- branches/RL2/extensions/Gadgets/Gadgets.namespaces.php      2011-08-30 
12:24:12 UTC (rev 95763)
+++ branches/RL2/extensions/Gadgets/Gadgets.namespaces.php      2011-08-30 
12:27:50 UTC (rev 95764)
@@ -5,9 +5,13 @@
 if ( !defined( 'NS_GADGET' ) ) {
        define( 'NS_GADGET', 2300 );
        define( 'NS_GADGET_TALK', 2301 );
+       define( 'NS_GADGET_DEFINITION', 2302 );
+       define( 'NS_GADGET_DEFINITION_TALK', 2303 );
 }
 
 $namespaceNames['en'] = array(
        NS_GADGET => 'Gadget',
        NS_GADGET_TALK => 'Gadget_talk',
+       NS_GADGET_DEFINITION => 'Gadget_definition',
+       NS_GADGET_DEFINITION_TALK => 'Gadget_definition_talk',
 );

Modified: branches/RL2/extensions/Gadgets/Gadgets.php
===================================================================
--- branches/RL2/extensions/Gadgets/Gadgets.php 2011-08-30 12:24:12 UTC (rev 
95763)
+++ branches/RL2/extensions/Gadgets/Gadgets.php 2011-08-30 12:27:50 UTC (rev 
95764)
@@ -75,14 +75,16 @@
 
 define( 'NS_GADGET', 2300 );
 define( 'NS_GADGET_TALK', 2301 );
+define( 'NS_GADGET_DEFINITION', 2302 );
+define( 'NS_GADGET_DEFINITION_TALK', 2303 );
 
 $wgNamespaceProtection[NS_GADGET][] = 'gadgets-edit';
+$wgNamespaceProtection[NS_GADGET_DEFINITION][] = 'gadgets-definition-edit';
 $wgAvailableRights = array_merge( $wgAvailableRights, array(
        'gadgets-edit',
-       'gadgets-manager-view',
-       'gadgets-manager-create',
-       'gadgets-manager-modify',
-       'gadgets-manager-delete'
+       'gadgets-definition-create',
+       'gadgets-definition-edit',
+       'gadgets-definition-delete'
 ) );
 
 $wgHooks['ArticleSaveComplete'][]           = 
'GadgetHooks::articleSaveComplete';
@@ -92,6 +94,8 @@
 $wgHooks['LoadExtensionSchemaUpdates'][]    = 
'GadgetHooks::loadExtensionSchemaUpdates';
 $wgHooks['ResourceLoaderRegisterModules'][] = 'GadgetHooks::registerModules';
 $wgHooks['TitleIsCssOrJsPage'][]            = 
'GadgetHooks::titleIsCssOrJsPage';
+$wgHooks['TitleIsMovable'][]                = 'GadgetHooks::titleIsMovable';
+$wgHooks['getUserPermissionsErrors'][]      = 
'GadgetHooks::getUserPermissionsErrors';
 //$wgHooks['UnitTestsList'][]                 = 'GadgetHooks::unitTestsList'; 
// FIXME: broken
 
 $dir = dirname(__FILE__) . '/';


_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Reply via email to