【问题标题】:How do I write a Marvin extension for my MediaWiki installation?如何为我的 MediaWiki 安装编写 Marvin 扩展?
【发布时间】:2015-02-18 19:41:22
【问题描述】:

Marvin JS(从http://dl.chemaxon.com/marvinjs/15.2.16/marvinjs-15.2.16-all.zip 下载)是一个基于 JavaScript 的化学结构编辑程序,我希望能够将它嵌入到我本地服务器上的 MediaWiki 文章中。我已经阅读了https://www.mediawiki.org/wiki/Manual:Developing_extensions,但我对 PHP 的理解非常初级,所以它并不是特别有用。

我想要这样一个扩展来创建以下解析器扩展标签:

<marvin src = URL width = W height = H></marvin>

其中 URL 是 Marvin JS 程序正在加载的文件的位置(在本地服务器上),W 是小程序的宽度,H 是它的高度。

我迄今为止通过其他方式将 Marvin JS 添加到文章中的努力

我已经看到了几个如何将这个小程序嵌入 HTML 页面的示例,并且我知道,由于我缺乏 PHP 知识,编写扩展程序对我来说非常困难,我确实尝试将这个小程序作为一个小部件嵌入,并通过AddScriptCss 扩展,两者都让我失望了。

AddScriptCss

对于我添加的扩展安装后的AddScriptCss:

<addScript src = "Marvin/js/lib/jquery-1.9.1.min.js"></addScript>
<addScript src="Marvin/js/lib/rainbow/rainbow-custom.min.js"></addScript>
<addScript src="Marvin/gui/lib/promise-0.1.1.min.js"></addScript>
<addScript src="Marvin/js/marvinjslauncher.js"></addScript>

到一篇文章并在我保存后在页面上收到此输出:

UNIQ5d2750bb5e9527b2-addScript-00000004-QINU UNIQ5d2750bb5e9527b2-addScript-00000005-QINU UNIQ5d2750bb5e9527b2-addScript-00000006-QINU UNIQ5d2750bb5e9527b2-addScript-00000007-QINU

将 URL 的其余部分添加到 src 字段(例如,http://127.0.0.1/mediawiki/)似乎无法解决此问题。打开“开发者工具”(我使用的是 Chrome)显示两个错误:

Uncaught SyntaxError: Unexpected string (@ index.php line 154. Which is a WikEd line)
http://ads.dfgio.com/loader.js?client=topaz0001 Failed to load resource: net::ERR_BLOCKED_BY_CLIENT

我也看到了这个Mediawiki Extension add Javascript in Header stackoverflow 问题,所以我尝试按照第二个答案 (Mediawiki Extension add Javascript in Header) 并在将 script 替换为 addHeadItem 并保存页面后,我剩下的只是我原来的 wikitext,除了 URL超链接。

小部件

就小部件而言,我尝试添加:

<includeonly><script type = "text/javascript" src="http://127.0.0.1/mediawiki/Marvin/gui/lib/promise-0.1.1.min.js"></script>
<script type = "text/javascript" src="http://127.0.0.1/mediawiki/Marvin/js/marvinjslauncher.js"></script></includeonly>

到 Widget:Marvin,然后我将 {{#widget:Marvin}} 添加到一个没有结果的页面中(字面意思;当我在保存此编辑后加载页面时,那里什么都没有)。这是一个屏幕截图,显示了在此页面上打开开发人员工具时出现的屏幕。

【问题讨论】:

    标签: javascript mediawiki mediawiki-extensions


    【解决方案1】:

    试试Gadgets 扩展。这是维基百科使用的;维护良好且相当容易使用。

    或者,这是一个本地 wiki,只有您可以访问,并且您根本不关心安全性,您可以通过 $wgRawHtml 在 wikitext 中启用任意 HTML。

    【讨论】:

    • 如何使用小工具?我阅读了 MediaWiki 页面,并将 marvinjslauncher.js 保存在 MediaWiki:Gadget-marvin.js 并将行添加* marvin|marvin.js 到 MediaWiki:Gadgets-definition 并在我的 Special:Preferences 页面中单击它旁边的框以启用它,但是现在我该怎么办?
    • 这就是在每篇文章上加载 marvinjslauncher 所需要做的一切。我想您还需要加载其他脚本。
    • 好吧,它并没有为我在每篇文章中加载它,我也不希望它在每篇文章中加载它,因为只有一些文章需要 Marvin。另外,我希望能够控制它在每个页面上加载哪些文件。
    • 您可以将是否加载的逻辑放入javascript中。您可以将每个文件定义为单独的小工具,将ResourceLoader 添加到小工具定义中(如:* marvin[ResourceLoader]|marvin.js),然后您可以使用mw.loader.using( 'ext.gadget.&lt;name of your gadget&gt;', function () { /* code to run after file has loaded */ } ); 加载它们。
    • 好的,我用 &lt;addscript&gt; 解析器标签中的 mw 代码将 &lt;name of your gadget&gt; 替换为 marvin 并且为简单起见省略了 , function() {... 并在提交此编辑后我被定向到否则为空白页,上面有这一行:[c3aab38b] 2015-02-22 16:07:00: Fatal exception of type MWException
    猜你喜欢
    • 1970-01-01
    • 2019-08-21
    • 1970-01-01
    • 1970-01-01
    • 2013-05-14
    • 1970-01-01
    • 1970-01-01
    • 2018-05-20
    • 2014-11-14
    相关资源
    最近更新 更多