Hi,

On 12/29/2015 12:59 PM, Daniel Barrett wrote:
> tl;dr:  What's the right way for a tag extension to execute JavaScript 
> provided by the user? (On a private wiki without Internet access.)
> 
> Details:
> I run a private wiki for developers (not accessible from the Internet) that 
> lets any wiki page author run JavaScript on a page by adding a tag:
> 
> <javascript> alert("hi"); </javascript>
> 
> (We understand  the security implications, which is why the wiki isn't 
> accessible by the world.) When we upgraded to MediaWiki 1.26 (from 1.24), a 
> problem occurred: the <javascript> tag stopped recognizing the "mediawiki" 
> and "mw" objects, but otherwise works. The following code reports an 
> undefined variable "mw":
> 
> <javascript> mw.loader.using(....) </javascript>
> 
> I assume this is because the <javascript> extension builds a <script> tag as 
> a string and uses the SkinAfterBottomScripts hook to add it to the page, 
> rather than using ResourceLoader. However, I cannot figure out how to use 
> ResourceLoader to add JavaScript provided on the wiki page like my small 
> examples above. We can't use the array $wgResourceModules[$name]['scripts']  
> because the JavaScript isn't in a static file.

You should use ResourceLoader::makeInlineScript(), which will wrap it in
a closure and adds it to the window.RLQ global to be executed once
mediawiki.js and stuff are set up.

-- Legoktm

_______________________________________________
Wikitech-l mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/wikitech-l

Reply via email to