X-Git-Url: http://git.cyclocoop.org/%22.%24image2.%22?a=blobdiff_plain;f=includes%2Fcontent%2FJavaScriptContentHandler.php;h=9abad3e22aef48589cff553ce71b45f95777aa53;hb=1a614c8dadc543a7998210486a3fed476205f12f;hp=d22189711a376e21e94180bd0ac15f770d983a93;hpb=8c3738e088f377642c540a0ccddb01b16ba7116b;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/content/JavaScriptContentHandler.php b/includes/content/JavaScriptContentHandler.php index d22189711a..9abad3e22a 100644 --- a/includes/content/JavaScriptContentHandler.php +++ b/includes/content/JavaScriptContentHandler.php @@ -32,13 +32,31 @@ class JavaScriptContentHandler extends CodeContentHandler { * @param string $modelId */ public function __construct( $modelId = CONTENT_MODEL_JAVASCRIPT ) { - parent::__construct( $modelId, array( CONTENT_FORMAT_JAVASCRIPT ) ); + parent::__construct( $modelId, [ CONTENT_FORMAT_JAVASCRIPT ] ); } /** * @return string */ protected function getContentClass() { - return 'JavaScriptContent'; + return JavaScriptContent::class; + } + + public function supportsRedirects() { + return true; + } + + /** + * Create a redirect that is also valid JavaScript + * + * @param Title $destination + * @param string $text ignored + * @return JavaScriptContent + */ + public function makeRedirectContent( Title $destination, $text = '' ) { + // The parameters are passed as a string so the / is not url-encoded by wfArrayToCgi + $url = $destination->getFullURL( 'action=raw&ctype=text/javascript', false, PROTO_RELATIVE ); + $class = $this->getContentClass(); + return new $class( '/* #REDIRECT */' . Xml::encodeJsCall( 'mw.loader.load', [ $url ] ) ); } }