wiki.techinc.nl/includes/resourceloader/ResourceLoaderLanguageDataModule.php
Santhosh Thottingal 931c31c7bd (bug 33658) support for {{GRAMMAR:}} in jqueryMsg
This add GRAMMAR support to the mediawiki.jqueryMsg module:

1. make jqueryMsg understand GRAMMAR(case insensitive)
2. mw.language get convertGrammar, can be overridden per language as in
   php
3. Introduce resourceloader module ResourceLoaderLanguageDataModule
4. Language.php get a method to filter wgGrammerForms for the current
   contentLanguage.
5. Qunit tests
6. This code was originally written in jsgrammar branch of svn and had
   reviewed during the last slush time.

Change-Id: I90dd0b2f0cb30fd30539896c292829adc4fc7364
2012-04-10 11:47:39 +02:00

79 lines
2.2 KiB
PHP

<?php
/**
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
* http://www.gnu.org/copyleft/gpl.html
*
* @file
* @author Santhosh Thottingal
* @author Timo Tijhof
*/
/**
* ResourceLoader module for populating language specific data.
*/
class ResourceLoaderLanguageDataModule extends ResourceLoaderModule {
/**
* Get the grammer forms for the site content language.
*
* @return array
*/
protected function getSiteLangGrammarForms() {
global $wgContLang;
return $wgContLang->getGrammarForms();
}
/**
* @param $context ResourceLoaderContext
* @return string Javascript code
*/
public function getScript( ResourceLoaderContext $context ) {
global $wgContLang;
return Xml::encodeJsCall( 'mw.language.setData', array(
$wgContLang->getCode(),
array( 'grammarForms' => $this->getSiteLangGrammarForms() )
) );
}
/**
* @param $context ResourceLoaderContext
* @return array|int|Mixed
*/
public function getModifiedTime( ResourceLoaderContext $context ) {
$cache = wfGetCache( CACHE_ANYTHING );
$key = wfMemcKey( 'resourceloader', 'langdatamodule', 'changeinfo' );
$forms = $this->getSiteLangGrammarForms();
$hash = md5( serialize( $forms ) );
$result = $cache->get( $key );
if ( is_array( $result ) ) {
if ( $result['hash'] === $hash ) {
return $result['timestamp'];
}
}
$timestamp = wfTimestamp();
$cache->set( $key, array( 'hash' => $hash, 'timestamp' => $timestamp ) );
return $timestamp;
}
/**
* @return array
*/
public function getDependencies() {
return array( 'mediawiki.language' );
}
}