Mediawiki:服务器端处理的带有解析器扩展的DataTables
Mediawiki: Server Side processed DataTables with parser extension
我正在尝试创建一个MediaWiki解析器扩展,该扩展将创建一个表,解析后的参数将在dataTables脚本的ajax URL中使用。
$wgHooks['ParserFirstCallInit'][] = 'AllQuesttableFunction';
$wgExtensionMessagesFiles['AllQuestTable'] = __DIR__ . '/_questtable.i18n.php';
function AllQuesttableFunction( &$parser ) {
$parser->setFunctionHook( 'questtable', 'AllQuestTableParserFunction' );
return true;
}
function AllQuestTableParserFunction( &$parser, $arg1='', $arg2='', $arg3='' ) {
$tableend = '<br><div class="hbody"><table class="lists list_basicitem width_100p" id="serverTable"><thead><tr><th>Area</th><th>Quest Name</th><th>Min<br>Level</th><th style="width:200px !important">Rewards</th></tr></thead></table><div class="cl"></div></div>';
return array( $tableend, 'noparse' => true, 'isHTML' => true );
}
$wgHooks['ParserBeforeTidy'][] = 'wgAddJquery';
function wgAddJquery(&$parser, &$text) {
global $addJqueryScripts, $wgLang;
$code = $wgLang->getCode();
if ($addJqueryScripts === true) return true;
$parser->mOutput->addHeadItem(
' <script type="text/javascript" language="javascript" src="http://mywiki.com/wiki/extensions/DataTables/DataTables-1.10.0/media/js/jquery.js"></script>
<script type="text/javascript" language="javascript" src="http://mywiki.com/wiki/extensions/DataTables/DataTables-1.10.0/media/js/jquery.dataTables.js"></script>
<script type="text/javascript" language="javascript" >
$(document).ready(function() {
var dataTable = $("#serverTable").DataTable( {
"columnDefs": [
{
targets: 0,
className: ''al''
},
{
targets: 1,
className: ''al'',
type: "num-html"
},
{
targets: 2,
className: ''ar''
},
{
targets: 3,
className: ''al''
},
{ targets: ''no-sorting'', orderable: false }
],
"processing": true,
"language": {
"processing": "<img src=''2.gif''>"
},
"serverSide": true,
"order": [[ 2, "desc" ]],
"ajax":{
url :"http://mywiki.com/wiki/extensions/quest_tables/_questtables_ajax.php?lowerlevel=' . $arg1 . '&higherlevel=' . $arg2 . '&race=' . $arg3 . '&lang=en",
type: "post",
}
} );
} );
</script>'
);
$addJqueryScripts = true;
return true;
}
我使用了此处提供的代码Mediawiki扩展在标题中添加Javascript
用于将脚本添加到标头,但是首先,它将它添加到每一页中,我只希望它出现在有神奇单词的页面上。其次,它似乎在AllQuestTableParserFunction之前推动wgAddJquery方式,这意味着我不能在dataTables脚本中使用解析的参数。
tl;博士有一个页面包含{{#magicword:arg1|arg2|arg3}}。所有3个参数都被解析为一个扩展,其中一个函数创建一个表,第二个函数将这3个参数作为ajax url的一部分添加到头中,并且只在这一页上。我在其他地方都不需要这些剧本。
有什么建议吗?或者这是不可能的吗?
您可能应该使用$parser->getOutput()->addModules(...)
,但这不是重点吗?
你为什么需要ParserBeforeTidy钩子?如果您只想在遇到解析器函数时添加脚本,为什么不从解析器函数处理程序方法中添加呢?
相关文章:
- Node.js v6.2.0类扩展不是函数错误
- 扩展移相器按钮类不工作
- chrome扩展中的navigator.geolocation.getCurrentPosition
- chrome扩展:尽管运行了at:documentidle,js脚本还是过早启动
- chrome扩展更改主机/域警告
- TableExport jquery插件:文件名和扩展名问题
- 如何在chrome扩展中重定向到html页面
- 如何通过引用var Using DataTables来进行分页或排序
- Chrome扩展没有't在重新加载之前考虑期权价值
- 扩展SVGTextElement时出现Typescript Uncaught TypeError
- 如何通过自己获得Chrome扩展的用户反馈/错误报告
- Javascript”;类“;带有参数的扩展
- 试图阻止Chrome通过扩展关闭
- Datatables:通过DOM数据源中的名称引用列
- 如何在chrome扩展中存储数据/结果,以及如何使用setTimeout使其只被调用一次
- 表达式引擎扩展开发-向呈现的条目添加自定义javascript
- CSV、PDF、Excel文件在dataTables的导出扩展中作为blob下载
- Mediawiki:服务器端处理的带有解析器扩展的DataTables
- DataTables FixedColumns扩展名-左上角单元格上的额外边框
- jquery-datatables-rails.响应式扩展和移动视图