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

Revision: 95755
Author:   nikerabbit
Date:     2011-08-30 11:37:07 +0000 (Tue, 30 Aug 2011)
Log Message:
-----------
Introduced TranslateHooks and moved some code from Translate.php to it

Modified Paths:
--------------
    trunk/extensions/Translate/Translate.php
    trunk/extensions/Translate/_autoload.php

Added Paths:
-----------
    trunk/extensions/Translate/TranslateHooks.php

Modified: trunk/extensions/Translate/Translate.php
===================================================================
--- trunk/extensions/Translate/Translate.php    2011-08-30 11:22:56 UTC (rev 
95754)
+++ trunk/extensions/Translate/Translate.php    2011-08-30 11:37:07 UTC (rev 
95755)
@@ -48,9 +48,10 @@
 $wgExtensionMessagesFiles['TranslateGroupDescriptions'] = $dir . 
'TranslateGroupDescriptions.i18n.php';
 $wgExtensionAliasesFiles['Translate'] = $dir . 'Translate.alias.php';
 
-// Register initialization hook
-$wgExtensionFunctions[] = 'efTranslateInit';
-$wgHooks['CanonicalNamespaces'][] = 'efTranslateNamespaces';
+// Register initialization code
+$wgExtensionFunctions[] = 'TranslateHooks::setupTranslate';
+$wgHooks['CanonicalNamespaces'][] = 'TranslateHooks::setupNamespaces';
+$wgHooks['UnitTestsList'][] = 'TranslateHooks::setupUnitTests';
 
 // Register special pages into MediaWiki
 $wgSpecialPages['Translate'] = 'SpecialTranslate';
@@ -118,8 +119,6 @@
 
 $wgHooks['LinkBegin'][] = 'SpecialMyLanguage::linkfix';
 
-$wgHooks['UnitTestsList'][] = 'efTranslateAppendTestsToVariable';
-
 // New rights
 $wgAvailableRights[] = 'translate';
 $wgAvailableRights[] = 'translate-import';
@@ -507,160 +506,6 @@
 $wgTranslateYamlLibrary = 'spyc';
 
 
-# Startup code
-function efTranslateNamespaces( &$list ) {
-       global $wgPageTranslationNamespace;
-       if ( !defined( 'NS_TRANSLATIONS' ) ) {
-               define( 'NS_TRANSLATIONS', $wgPageTranslationNamespace );
-               define( 'NS_TRANSLATIONS_TALK', $wgPageTranslationNamespace + 1 
);
-       }
-       $list[NS_TRANSLATIONS]      = 'Translations';
-       $list[NS_TRANSLATIONS_TALK] = 'Translations_talk';
-       return true;
-}
-
-/**
- * Initialises the extension.
- * Does late-initialization that is not possible at file level,
- * because it depends on user configuration.
- * @private
- */
-function efTranslateInit() {
-       global $wgTranslatePHPlot, $wgAutoloadClasses, $wgHooks;
-
-       if ( $wgTranslatePHPlot ) {
-               $wgAutoloadClasses['PHPlot'] = $wgTranslatePHPlot;
-       }
-
-       global $wgReservedUsernames, $wgTranslateFuzzyBotName;
-       $wgReservedUsernames[] = $wgTranslateFuzzyBotName;
-
-       // Hook for database schema.
-       $wgHooks['LoadExtensionSchemaUpdates'][] = 
'PageTranslationHooks::schemaUpdates';
-
-       // Fuzzy tags for speed.
-       $wgHooks['ArticleSaveComplete'][] = 'TranslateEditAddons::onSave';
-
-       // Page translation setup check and init if enabled.
-       if ( $wgEnablePageTranslation ) {
-               // Special page and the right to use it
-               global $wgSpecialPages, $wgAvailableRights, 
$wgSpecialPageGroups;
-               $wgSpecialPages['PageTranslation'] = 'SpecialPageTranslation';
-               $wgSpecialPageGroups['PageTranslation'] = 'pagetools';
-               $wgSpecialPages['PageTranslationDeletePage'] = 
'SpecialPageTranslationDeletePage';
-               $wgSpecialPageGroups['PageTranslationDeletePage'] = 'pagetools';
-               $wgAvailableRights[] = 'pagetranslation';
-
-               global $wgLogNames, $wgLogActionsHandlers, $wgLogTypes, 
$wgLogHeaders;
-               $wgLogTypes[] = 'pagetranslation';
-               $wgLogHeaders['pagetranslation'] = 'pt-log-header';
-               $wgLogNames['pagetranslation'] = 'pt-log-name';
-               $wgLogActionsHandlers['pagetranslation/mark'] = 
'PageTranslationHooks::formatLogEntry';
-               $wgLogActionsHandlers['pagetranslation/unmark'] = 
'PageTranslationHooks::formatLogEntry';
-               $wgLogActionsHandlers['pagetranslation/moveok'] = 
'PageTranslationHooks::formatLogEntry';
-               $wgLogActionsHandlers['pagetranslation/movenok'] = 
'PageTranslationHooks::formatLogEntry';
-               $wgLogActionsHandlers['pagetranslation/deletelok'] = 
'PageTranslationHooks::formatLogEntry';
-               $wgLogActionsHandlers['pagetranslation/deletefok'] = 
'PageTranslationHooks::formatLogEntry';
-               $wgLogActionsHandlers['pagetranslation/deletelnok'] = 
'PageTranslationHooks::formatLogEntry';
-               $wgLogActionsHandlers['pagetranslation/deletefnok'] = 
'PageTranslationHooks::formatLogEntry';
-
-
-               global $wgJobClasses;
-               $wgJobClasses['RenderJob'] = 'RenderJob';
-               $wgJobClasses['MoveJob'] = 'MoveJob';
-               $wgJobClasses['DeleteJob'] = 'DeleteJob';
-
-               // Namespaces
-               global $wgPageTranslationNamespace, $wgExtraNamespaces;
-               global $wgNamespacesWithSubpages, $wgNamespaceProtection;
-               global $wgTranslateMessageNamespaces, $wgVersion;
-
-               // Define constants for more readable core
-               if ( !defined( 'NS_TRANSLATIONS' ) ) {
-                       define( 'NS_TRANSLATIONS', $wgPageTranslationNamespace 
);
-                       define( 'NS_TRANSLATIONS_TALK', 
$wgPageTranslationNamespace + 1 );
-               }
-
-               if ( version_compare( $wgVersion, '1.17alpha', '<' ) ) {
-                       efTranslateNamespaces( $wgExtraNamespaces );
-               }
-
-               $wgNamespacesWithSubpages[NS_TRANSLATIONS]      = true;
-               $wgNamespacesWithSubpages[NS_TRANSLATIONS_TALK] = true;
-
-               // Standard protection and register it for filtering
-               $wgNamespaceProtection[NS_TRANSLATIONS] = array( 'translate' );
-               $wgTranslateMessageNamespaces[] = NS_TRANSLATIONS;
-
-               /// Page translation hooks
-
-               /// @todo Register our css, is there a better place for this?
-               $wgHooks['OutputPageBeforeHTML'][] = 
'PageTranslationHooks::injectCss';
-
-               // Add transver tags and update translation target pages
-               $wgHooks['ArticleSaveComplete'][] = 
'PageTranslationHooks::onSectionSave';
-
-               // Register \<languages/>
-               $wgHooks['ParserFirstCallInit'][] = 'efTranslateInitTags';
-
-               // Strip \<translate> tags etc. from source pages when rendering
-               $wgHooks['ParserBeforeStrip'][] = 
'PageTranslationHooks::renderTagPage';
-
-               // Check syntax for \<translate>
-               $wgHooks['ArticleSave'][] = 
'PageTranslationHooks::tpSyntaxCheck';
-               $wgHooks['EditFilterMerged'][] = 
'PageTranslationHooks::tpSyntaxCheckForEditPage';
-
-               // Set the page content language
-               $wgHooks['PageContentLanguage'][] = 
'PageTranslationHooks::onPageContentLanguage';
-
-               // Add transtag to page props for discovery
-               $wgHooks['ArticleSaveComplete'][] = 
'PageTranslationHooks::addTranstag';
-
-               // Prevent editing of unknown pages in Translations namespace
-               $wgHooks['getUserPermissionsErrorsExpensive'][] = 
'PageTranslationHooks::preventUnknownTranslations';
-               // Prevent editing of translation pages directly
-               $wgHooks['getUserPermissionsErrorsExpensive'][] = 
'PageTranslationHooks::preventDirectEditing';
-
-               // Locking during page moves
-               $wgHooks['getUserPermissionsErrorsExpensive'][] = 
'PageTranslationHooks::lockedPagesCheck';
-
-               // Our custom header for translation pages
-               $wgHooks['ArticleViewHeader'][] = 'PageTranslationHooks::test';
-
-               // Our tables are needed for parser tests
-               $wgHooks['ParserTestTables'][] = 
'PageTranslationHooks::parserTestTables';
-
-               // Prevent section pages appearing in categories
-               $wgHooks['LinksUpdate'][] = 
'PageTranslationHooks::preventCategorization';
-
-               // Custom move page that can move all the associated pages too
-               $wgHooks['SpecialPage_initList'][] = 
'PageTranslationHooks::replaceMovePage';
-
-               // Replace subpage logic behaviour
-               $wgHooks['SkinSubPageSubtitle'][] = 
'PageTranslationHooks::replaceSubtitle';
-
-               // Disable action=delete
-               $wgHooks['ArticleConfirmDelete'][] = 
'PageTranslationHooks::disableDelete';
-       }
-}
-
-/**
- * Registers \<languages> tag with the parser.
- * @param $parser Parser
- * @return \bool true
- */
-function efTranslateInitTags( $parser ) {
-       // For nice language list in-page
-       $parser->setHook( 'languages', array( 'PageTranslationHooks', 
'languages' ) );
-       return true;
-}
-
-function efTranslateAppendTestsToVariable( &$files ) {
-       $testDir = dirname( __FILE__ ) . '/tests/';
-       $files[] = $testDir . 'MessageGroupBaseTest.php';
-       return true;
-}
-
 /** @cond cli_support */
 if ( !defined( 'TRANSLATE_CLI' ) ) {
        function STDOUT() { }

Added: trunk/extensions/Translate/TranslateHooks.php
===================================================================
--- trunk/extensions/Translate/TranslateHooks.php                               
(rev 0)
+++ trunk/extensions/Translate/TranslateHooks.php       2011-08-30 11:37:07 UTC 
(rev 95755)
@@ -0,0 +1,169 @@
+<?php
+/**
+ * Contains class with basic non-feature specific hooks.
+ *
+ * @file
+ * @author Niklas Laxström
+ * @copyright Copyright © 2011, Niklas Laxström
+ * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 
2.0 or later
+ */
+
+/**
+ * Some hooks for Translate extension.
+ */
+class TranslateHooks {
+       /// Hook: CanonicalNamespaces
+       public static function setupNamespaces( &$list ) {
+               global $wgPageTranslationNamespace;
+               if ( !defined( 'NS_TRANSLATIONS' ) ) {
+                       define( 'NS_TRANSLATIONS', $wgPageTranslationNamespace 
);
+                       define( 'NS_TRANSLATIONS_TALK', 
$wgPageTranslationNamespace + 1 );
+               }
+               $list[NS_TRANSLATIONS]      = 'Translations';
+               $list[NS_TRANSLATIONS_TALK] = 'Translations_talk';
+               return true;
+       }
+
+       /**
+        * Initialises the extension.
+        * Does late-initialization that is not possible at file level,
+        * because it depends on user configuration.
+        */
+       public static function setupTranslate() {
+               global $wgTranslatePHPlot, $wgAutoloadClasses, $wgHooks;
+
+               if ( $wgTranslatePHPlot ) {
+                       $wgAutoloadClasses['PHPlot'] = $wgTranslatePHPlot;
+               }
+
+               global $wgReservedUsernames, $wgTranslateFuzzyBotName;
+               $wgReservedUsernames[] = $wgTranslateFuzzyBotName;
+
+               // Hook for database schema.
+               $wgHooks['LoadExtensionSchemaUpdates'][] = 
'PageTranslationHooks::schemaUpdates';
+
+               // Fuzzy tags for speed.
+               $wgHooks['ArticleSaveComplete'][] = 
'TranslateEditAddons::onSave';
+
+               // Page translation setup check and init if enabled.
+               global $wgEnablePageTranslation;
+               if ( $wgEnablePageTranslation ) {
+                       // Special page and the right to use it
+                       global $wgSpecialPages, $wgAvailableRights, 
$wgSpecialPageGroups;
+                       $wgSpecialPages['PageTranslation'] = 
'SpecialPageTranslation';
+                       $wgSpecialPageGroups['PageTranslation'] = 'pagetools';
+                       $wgSpecialPages['PageTranslationDeletePage'] = 
'SpecialPageTranslationDeletePage';
+                       $wgSpecialPageGroups['PageTranslationDeletePage'] = 
'pagetools';
+                       $wgAvailableRights[] = 'pagetranslation';
+
+                       global $wgLogNames, $wgLogActionsHandlers, $wgLogTypes, 
$wgLogHeaders;
+                       $wgLogTypes[] = 'pagetranslation';
+                       $wgLogHeaders['pagetranslation'] = 'pt-log-header';
+                       $wgLogNames['pagetranslation'] = 'pt-log-name';
+                       $wgLogActionsHandlers['pagetranslation/mark'] = 
'PageTranslationHooks::formatLogEntry';
+                       $wgLogActionsHandlers['pagetranslation/unmark'] = 
'PageTranslationHooks::formatLogEntry';
+                       $wgLogActionsHandlers['pagetranslation/moveok'] = 
'PageTranslationHooks::formatLogEntry';
+                       $wgLogActionsHandlers['pagetranslation/movenok'] = 
'PageTranslationHooks::formatLogEntry';
+                       $wgLogActionsHandlers['pagetranslation/deletelok'] = 
'PageTranslationHooks::formatLogEntry';
+                       $wgLogActionsHandlers['pagetranslation/deletefok'] = 
'PageTranslationHooks::formatLogEntry';
+                       $wgLogActionsHandlers['pagetranslation/deletelnok'] = 
'PageTranslationHooks::formatLogEntry';
+                       $wgLogActionsHandlers['pagetranslation/deletefnok'] = 
'PageTranslationHooks::formatLogEntry';
+
+
+                       global $wgJobClasses;
+                       $wgJobClasses['RenderJob'] = 'RenderJob';
+                       $wgJobClasses['MoveJob'] = 'MoveJob';
+                       $wgJobClasses['DeleteJob'] = 'DeleteJob';
+
+                       // Namespaces
+                       global $wgPageTranslationNamespace, $wgExtraNamespaces;
+                       global $wgNamespacesWithSubpages, 
$wgNamespaceProtection;
+                       global $wgTranslateMessageNamespaces, $wgVersion;
+
+                       // Define constants for more readable core
+                       if ( !defined( 'NS_TRANSLATIONS' ) ) {
+                               define( 'NS_TRANSLATIONS', 
$wgPageTranslationNamespace );
+                               define( 'NS_TRANSLATIONS_TALK', 
$wgPageTranslationNamespace + 1 );
+                       }
+
+                       if ( version_compare( $wgVersion, '1.17alpha', '<' ) ) {
+                               efTranslateNamespaces( $wgExtraNamespaces );
+                       }
+
+                       $wgNamespacesWithSubpages[NS_TRANSLATIONS]      = true;
+                       $wgNamespacesWithSubpages[NS_TRANSLATIONS_TALK] = true;
+
+                       // Standard protection and register it for filtering
+                       $wgNamespaceProtection[NS_TRANSLATIONS] = array( 
'translate' );
+                       $wgTranslateMessageNamespaces[] = NS_TRANSLATIONS;
+
+                       /// Page translation hooks
+
+                       /// @todo Register our css, is there a better place for 
this?
+                       $wgHooks['OutputPageBeforeHTML'][] = 
'PageTranslationHooks::injectCss';
+
+                       // Add transver tags and update translation target pages
+                       $wgHooks['ArticleSaveComplete'][] = 
'PageTranslationHooks::onSectionSave';
+
+                       // Register \<languages/>
+                       $wgHooks['ParserFirstCallInit'][] = 
'TranslateHooks::setupParserHooks';
+
+                       // Strip \<translate> tags etc. from source pages when 
rendering
+                       $wgHooks['ParserBeforeStrip'][] = 
'PageTranslationHooks::renderTagPage';
+
+                       // Check syntax for \<translate>
+                       $wgHooks['ArticleSave'][] = 
'PageTranslationHooks::tpSyntaxCheck';
+                       $wgHooks['EditFilterMerged'][] = 
'PageTranslationHooks::tpSyntaxCheckForEditPage';
+
+                       // Set the page content language
+                       $wgHooks['PageContentLanguage'][] = 
'PageTranslationHooks::onPageContentLanguage';
+
+                       // Add transtag to page props for discovery
+                       $wgHooks['ArticleSaveComplete'][] = 
'PageTranslationHooks::addTranstag';
+
+                       // Prevent editing of unknown pages in Translations 
namespace
+                       $wgHooks['getUserPermissionsErrorsExpensive'][] = 
'PageTranslationHooks::preventUnknownTranslations';
+                       // Prevent editing of translation pages directly
+                       $wgHooks['getUserPermissionsErrorsExpensive'][] = 
'PageTranslationHooks::preventDirectEditing';
+
+                       // Locking during page moves
+                       $wgHooks['getUserPermissionsErrorsExpensive'][] = 
'PageTranslationHooks::lockedPagesCheck';
+
+                       // Our custom header for translation pages
+                       $wgHooks['ArticleViewHeader'][] = 
'PageTranslationHooks::test';
+
+                       // Our tables are needed for parser tests
+                       $wgHooks['ParserTestTables'][] = 
'PageTranslationHooks::parserTestTables';
+
+                       // Prevent section pages appearing in categories
+                       $wgHooks['LinksUpdate'][] = 
'PageTranslationHooks::preventCategorization';
+
+                       // Custom move page that can move all the associated 
pages too
+                       $wgHooks['SpecialPage_initList'][] = 
'PageTranslationHooks::replaceMovePage';
+
+                       // Replace subpage logic behaviour
+                       $wgHooks['SkinSubPageSubtitle'][] = 
'PageTranslationHooks::replaceSubtitle';
+
+                       // Disable action=delete
+                       $wgHooks['ArticleConfirmDelete'][] = 
'PageTranslationHooks::disableDelete';
+               }
+       }
+
+       /**
+        * Hook: ParserFirstCallInit
+        * Registers \<languages> tag with the parser.
+        */
+       public static function setupParserHooks( $parser ) {
+               // For nice language list in-page
+               $parser->setHook( 'languages', array( 'PageTranslationHooks', 
'languages' ) );
+               return true;
+       }
+
+       /// Hook: UnitTestsList
+       public static function setupUnitTests( &$files ) {
+               $testDir = dirname( __FILE__ ) . '/tests/';
+               $files[] = $testDir . 'MessageGroupBaseTest.php';
+               return true;
+       }
+
+}


Property changes on: trunk/extensions/Translate/TranslateHooks.php
___________________________________________________________________
Added: svn:eol-style
   + native

Modified: trunk/extensions/Translate/_autoload.php
===================================================================
--- trunk/extensions/Translate/_autoload.php    2011-08-30 11:22:56 UTC (rev 
95754)
+++ trunk/extensions/Translate/_autoload.php    2011-08-30 11:37:07 UTC (rev 
95755)
@@ -22,6 +22,8 @@
 $wgAutoloadClasses['TranslateUtils'] = $dir . 'TranslateUtils.php';
 $wgAutoloadClasses['HTMLSelector'] = $dir . 'TranslateUtils.php';
 
+$wgAutoloadClasses['TranslateHooks'] = $dir . 'TranslateHooks.php';
+
 $wgAutoloadClasses['MessageChecker'] = $dir . 'MessageChecks.php';
 
 $wgAutoloadClasses['MessageGroup'] = $dir . 'Groups.php';


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

Reply via email to