2012-10-21 47 views
2

嗨,我的问题是,我不能加载一些JavaScript文件@我的特殊页面扩展名。 我尝试过用addscript和其他一些方法,但唯一发生的事情是javascript被取消导致了mediawiki软件的no-js。Mediawiki扩展在标题中添加Javascript

在我的扩展名的文件夹中是一个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, e.g. 
      $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); 
       } 

    } 


} 
?> 

我希望你能帮助我。

+0

在哪里你的代码是否包含任何添加JS的方法? – Bergi

+0

你知道[RessourceLoader](http://www.mediawiki.org/wiki/ResourceLoader/Developing_with_ResourceLoader)? – Bergi

回答

2

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; 

} 
+0

你把这个AddHeadItem放在哪里?在皮肤中? –

+0

in LocalSettings.php – hlcs

+0

只是一个附录:根据较新的插件约定,你可以在MyExtention.hooks中将钩子注册放置在MyExtention.php中,像这样:$ wgHooks ['ParserBeforeTidy'] [] ='MyExtention :: wgAddJquery';'和函数'wgAddJQuery()'作为静态方法。 php'。这适用于我,我没有改变'LocalSettings.php',也没有绑定到特定的皮肤。 –

0

我补充它在皮肤文件中,在函数功能setupSkinUserCss $ OUT-> addHeadItem( 'maketree.js',”

<script type='text/javascript' src='/js/mktree.js'></script>");