Привет, моя проблема в том, что я не могу загрузить некоторый javascript-файл @ мое специальное расширение страницы. Я попробовал это с помощью addcript и некоторых других методов, но единственное, что произошло, это то, что javascript был отменен, вызывая не-js программного обеспечения mediawiki.
В папке моего расширения есть файл new.js, который я хочу получить только на моей специальной странице.
Вот некоторый код (большая часть этого примера специальных страниц).
MyExentions.php
<?php if (!defined('MEDIAWIKI')) { echo <<<EOT To install my extension, put the following line in LocalSettings.php: require_once( "$IP/extensions/MyExtension/MyExtension.php" ); EOT; exit( 1 ); } $wgExtensionCredits['specialpage'][] = array( 'path' => __FILE__, 'name' => '-', 'author' => 'Thomas Döring', 'descriptionmsg' => '-', 'version' => '0.0.1', ); $dir = dirname(__FILE__) . '/'; $wgAutoloadClasses['SpecialMyExtension'] = $dir . 'SpecialMyExtension.php'; $wgExtensionMessagesFiles['MyExtension'] = $dir . 'MyExtension.i18n.php'; $wgExtensionMessagesFiles['MyExtensionAlias'] = $dir . 'MyExtension.alias.php'; $wgSpecialPages['MyExtension'] = 'SpecialMyExtension';
SpecialMyExtension.php
<?php class SpecialMyExtension extends SpecialPage { function __construct() { parent::__construct( 'MyExtension' ); } function execute( $par ) { $request = $this->getRequest(); $output = $this->getOutput(); $this->setHeaders(); # Get request data from, eg $param = $request->getText('param'); # Do stuff # ... if(file_exists("extensions/TimeLine/TimeLine/data.xml")) { $data = simplexml_load_file("extensions/TimeLine/TimeLine/data.xml"); foreach($data->event as $event) { $html.="<tr><td>".$event['title']."</td><td>".$event['start']."</td></tr>"; } $html.="</table>"; $html.="<a href=\"javascript:hello()\">klick</a>"; $output->addHTML($html); } else { $wikitext = 'Datei nicht gefunden!'; $output->addWikiText( $wikitext ); } } } ?>
Я надеюсь, что вы можете мне помочь.
addScript работает в версии 1.16 и ранее. В версии 1.17 и выше вы должны использовать addHeadItem:
$wgHooks['ParserBeforeTidy'][] = 'wgAddJquery'; function wgAddJquery(&$parser, &$text) { global $addJqueryScripts; if ($addJqueryScripts === true) return true; $parser->mOutput->addHeadItem( '<script language="JavaScript" src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js" type="text/javascript"></script>' ); $addJqueryScripts = true; return true; }
Я добавил его в файл скина, в функции function setupSkinUserCss $ out-> addHeadItem ('maketree.js', "
<script type='text/javascript' src='/js/mktree.js'></script>");