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