]> scripts.mit.edu Git - autoinstallsdev/mediawiki.git/blob - includes/resourceloader/ResourceLoaderJqueryMsgModule.php
MediaWiki 1.30.2
[autoinstallsdev/mediawiki.git] / includes / resourceloader / ResourceLoaderJqueryMsgModule.php
1 <?php
2 /**
3  * ResourceLoader module for mediawiki.jqueryMsg that provides generated data.
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 2 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License along
16  * with this program; if not, write to the Free Software Foundation, Inc.,
17  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18  * http://www.gnu.org/copyleft/gpl.html
19  *
20  * @file
21  */
22
23 /**
24  * ResourceLoader module for mediawiki.jqueryMsg and its generated data
25  */
26 class ResourceLoaderJqueryMsgModule extends ResourceLoaderFileModule {
27
28         /**
29          * @param ResourceLoaderContext $context
30          * @return string JavaScript code
31          */
32         public function getScript( ResourceLoaderContext $context ) {
33                 $fileScript = parent::getScript( $context );
34
35                 $tagData = Sanitizer::getRecognizedTagData();
36                 $parserDefaults = [];
37                 $parserDefaults['allowedHtmlElements'] = array_merge(
38                         array_keys( $tagData['htmlpairs'] ),
39                         array_diff(
40                                 array_keys( $tagData['htmlsingle'] ),
41                                 array_keys( $tagData['htmlsingleonly'] )
42                         )
43                 );
44
45                 $mainDataScript = Xml::encodeJsCall( 'mw.jqueryMsg.setParserDefaults', [ $parserDefaults ] );
46
47                 // Associative array mapping magic words (e.g. SITENAME)
48                 // to their values.
49                 $magicWords = [
50                         'SITENAME' => $this->getConfig()->get( 'Sitename' ),
51                 ];
52
53                 Hooks::run( 'ResourceLoaderJqueryMsgModuleMagicWords', [ $context, &$magicWords ] );
54
55                 $magicWordExtendData = [
56                         'magic' => $magicWords,
57                 ];
58
59                 $magicWordDataScript = Xml::encodeJsCall( 'mw.jqueryMsg.setParserDefaults', [
60                         $magicWordExtendData,
61                         /* deep= */ true
62                 ] );
63
64                 return $fileScript . $mainDataScript . $magicWordDataScript;
65         }
66
67         /**
68          * @param ResourceLoaderContext $context
69          * @return array
70          */
71         public function getScriptURLsForDebug( ResourceLoaderContext $context ) {
72                 // Bypass file module urls
73                 return ResourceLoaderModule::getScriptURLsForDebug( $context );
74         }
75
76         /**
77          * @return bool
78          */
79         public function enableModuleContentVersion() {
80                 return true;
81         }
82 }