r95764 MediaWiki - Code Review archive

Repository:MediaWiki
Revision:r95763‎ | r95764 | r95765 >
Date:12:27, 30 August 2011
Author:catrope
Status:ok
Tags:
Comment:
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 (modified) (history)
  • /branches/RL2/extensions/Gadgets/Gadgets.i18n.php (modified) (history)
  • /branches/RL2/extensions/Gadgets/Gadgets.namespaces.php (modified) (history)
  • /branches/RL2/extensions/Gadgets/Gadgets.php (modified) (history)

Diff [purge]

Index: branches/RL2/extensions/Gadgets/Gadgets.i18n.php
@@ -64,6 +64,10 @@
6565 // TODO clean up inconsistencies between gadgetmanager- and gadgets-manager- etc
6666 'gadgets-manager-create-exists' => 'This gadget cannot be created because there is an existing gadget with the name $1',
6767
 68+ # permission stuff
 69+ 'gadgets-cant-create' => 'You do not have the right to create new Gadgets.',
 70+ 'gadgets-cant-delete' => 'You do not have the right to delete Gadgets.',
 71+
6872 # logging stuff
6973 'gadgets-gadgetmanlog-page' => 'Gadget manager log',
7074 'gadgets-gadgetmanlog-text' => 'This is a log of changes made to gadgets using the [[Special:GadgetManager|gadget manager]].',
@@ -73,10 +77,9 @@
7478
7579 #rights
7680 'right-gadgets-edit' => 'Edit pages in the Gadget: namespace',
77 - 'right-gadgets-manager-create' => 'Create new gadgets',
78 - 'right-gadgets-manager-delete' => 'Permanently delete gadgets',
79 - 'right-gadgets-manager-view' => 'View gadget properties',
80 - 'right-gadgets-manager-modify' => 'Modify gadget properties',
 81+ 'right-gadgets-definition-create' => 'Create new gadgets',
 82+ 'right-gadgets-definition-delete' => 'Delete gadgets',
 83+ 'right-gadgets-definition-edit' => 'Modify gadget properties',
8184 );
8285
8386 /** Message documentation (Message documentation)
Index: branches/RL2/extensions/Gadgets/Gadgets.namespaces.php
@@ -5,9 +5,13 @@
66 if ( !defined( 'NS_GADGET' ) ) {
77 define( 'NS_GADGET', 2300 );
88 define( 'NS_GADGET_TALK', 2301 );
 9+ define( 'NS_GADGET_DEFINITION', 2302 );
 10+ define( 'NS_GADGET_DEFINITION_TALK', 2303 );
911 }
1012
1113 $namespaceNames['en'] = array(
1214 NS_GADGET => 'Gadget',
1315 NS_GADGET_TALK => 'Gadget_talk',
 16+ NS_GADGET_DEFINITION => 'Gadget_definition',
 17+ NS_GADGET_DEFINITION_TALK => 'Gadget_definition_talk',
1418 );
Index: branches/RL2/extensions/Gadgets/Gadgets.php
@@ -75,14 +75,16 @@
7676
7777 define( 'NS_GADGET', 2300 );
7878 define( 'NS_GADGET_TALK', 2301 );
 79+define( 'NS_GADGET_DEFINITION', 2302 );
 80+define( 'NS_GADGET_DEFINITION_TALK', 2303 );
7981
8082 $wgNamespaceProtection[NS_GADGET][] = 'gadgets-edit';
 83+$wgNamespaceProtection[NS_GADGET_DEFINITION][] = 'gadgets-definition-edit';
8184 $wgAvailableRights = array_merge( $wgAvailableRights, array(
8285 'gadgets-edit',
83 - 'gadgets-manager-view',
84 - 'gadgets-manager-create',
85 - 'gadgets-manager-modify',
86 - 'gadgets-manager-delete'
 86+ 'gadgets-definition-create',
 87+ 'gadgets-definition-edit',
 88+ 'gadgets-definition-delete'
8789 ) );
8890
8991 $wgHooks['ArticleSaveComplete'][] = 'GadgetHooks::articleSaveComplete';
@@ -92,6 +94,8 @@
9395 $wgHooks['LoadExtensionSchemaUpdates'][] = 'GadgetHooks::loadExtensionSchemaUpdates';
9496 $wgHooks['ResourceLoaderRegisterModules'][] = 'GadgetHooks::registerModules';
9597 $wgHooks['TitleIsCssOrJsPage'][] = 'GadgetHooks::titleIsCssOrJsPage';
 98+$wgHooks['TitleIsMovable'][] = 'GadgetHooks::titleIsMovable';
 99+$wgHooks['getUserPermissionsErrors'][] = 'GadgetHooks::getUserPermissionsErrors';
96100 //$wgHooks['UnitTestsList'][] = 'GadgetHooks::unitTestsList'; // FIXME: broken
97101
98102 $dir = dirname(__FILE__) . '/';
Index: branches/RL2/extensions/Gadgets/GadgetHooks.php
@@ -156,6 +156,8 @@
157157 public static function canonicalNamespaces( &$list ) {
158158 $list[NS_GADGET] = 'Gadget';
159159 $list[NS_GADGET_TALK] = 'Gadget_talk';
 160+ $list[NS_GADGET_DEFINITION] = 'Gadget_definition';
 161+ $list[NS_GADGET_DEFINITION_TALK] = 'Gadget_definition_talk';
160162 return true;
161163 }
162164
@@ -165,4 +167,25 @@
166168 }
167169 return true;
168170 }
 171+
 172+ public static function titleIsMovable( $title, &$result ) {
 173+ if ( $title->getNamespace() == NS_GADGET_DEFINITION ) {
 174+ $result = false;
 175+ }
 176+ return true;
 177+ }
 178+
 179+ public static function getUserPermissionsErrors( $title, $user, $action, &$result ) {
 180+ if ( $title->getNamespace() == NS_GADGET_DEFINITION ) {
 181+ // Enforce restrictions on the Gadget_definition namespace
 182+ if ( $action == 'create' && !$user->isAllowed( 'gadgets-definition-create' ) ) {
 183+ $result[] = array( 'gadgets-cant-create' );
 184+ return false;
 185+ } elseif ( $action == 'delete' && !$user->isAllowed( 'gadgets-definition-delete' ) ) {
 186+ $result[] = array( 'gadgets-cant-delete' );
 187+ return false;
 188+ }
 189+ }
 190+ return true;
 191+ }
169192 }

Sign-offs

UserFlagDate
Krinkleinspected20:14, 30 August 2011

Follow-up revisions

RevisionCommit summaryAuthorDate
r95768Followup r95764, also mark Gadget definition: pages as JS/CSS pages for synta...catrope12:38, 30 August 2011

Status & tagging log