问题标签 [mediawiki-extensions]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
321 浏览

php - mediawiki 的 Facebook 扩展仅适用于 Firefox,不适用于 chrome。$facebook->getUser() 返回 0

让我们解释一下这个问题。会有点长,感谢您的耐心等待。

背景
有一个名为 Mediawiki 的框架,被 Wikipedia 使用。还有一个名为 Facebook login 的 3rd-party 扩展,它声称我可以允许人们通过 Facebook 帐户登录到 Mediawiki 网站。

问题
它们都是用 PHP 编写的。我的 Mediawiki 网站环境是

对于 Facebook 登录扩展,我从 github github.com/garbear/facebook-mediawiki 获得了最新版本

它在 Chrome 中不起作用,但在 Firefox 中运行良好。

我的调试故事

首先,官方 Github repo 遗漏了一个名为ExternalUser.php的文件,我从 [path_to_mediawiki]/include 复制它并将其放入此扩展程序中。

http://d.pr/f/F0MC这个链接是我的工作版本。它仅适用于 Firefox,但不适用于 Chrome

为什么我问 facebook->getUser() return 0

我通过打印一些错误日志来检查变量的值来跟踪整个扩展。

Chrome 和 Firefox 之间的唯一区别是:

当我在谷歌浏览器上测试它时,在弹出窗口中输入我的 Facebook 用户名和密码后,单击“登录”按钮。当我刷新 Facebook 网站时,它已经显示为“已登录”状态。但是,在我的 mediawiki 网站中,页面在登录页面中一直自动刷新,并且无法重定向到“已经登录”状态和页面。

所以,我想 Chrome 中的 session/cookies 设置可能有问题。我检查了我的 Chrome 设置,一切都是默认设置。我卸载了 Chome 并重新安装了它,但我仍然遇到同样的问题。

我的下一步是(必须)调试这个扩展。在花了整整 2 天调试这个扩展之后,我假设我找到了与这个问题相关的确切代码。

FacebookInit.php第 46 行

要调试,让我们将其修改为

附加语句将变量写入$facebook->getUser()apache error.log

当我在 Firefox 上尝试这个时,它会返回一个正整数,对于马克扎克伯格来说是 4,对于其他人来说是 12345678。但是当我在 Chrome 上尝试这个时,它总是会返回 0。

我已经尝试了 Stack OverFlow 上的大多数解决方案

如果有人知道我还可以尝试什么,我将不胜感激。

0 投票
1 回答
103 浏览

php - 像 MediaWiki 中的页面一样存储内容

我已经开始使用 MediaWiki 开发一个网站。我设计了一个上传页面(我没有使用MediaWiki的默认上传页面Special:upload)。我手动创建了它,并执行了我的操作,例如在单独的表(不是 MediaWiki 的现有表)中上传图像和存储详细信息。

现在我需要将图像组的详细信息存储在特定页面中,MediaWikidatabase以获取该图像组的历史记录、修订等,我发现上传的图像存储在下表中:

  • 图片——当前版本
  • oldimage — 用于旧版本

和页面存储在下表中:

  • page — 获取当前页面详细信息
  • 修订版——用于旧页面版本

谁能解释一下如何将内容存储到 MediaWiki 数据库中并手动从数据库中获取所有 MediaWiki 功能?

0 投票
0 回答
327 浏览

php - 调试空的 PHP 会话

我正在尝试使用SAMLAuth扩展和 SimpleSAMLPHP 将 SAML 身份验证添加到 MediaWiki 安装。身份验证直接从 SimpleSAMLPHP (/authenticate.php?as=mywiki) 工作,但是当我尝试通过 wiki 登录时,我从 SimpleSAMLPHP 得到“状态信息丢失”。

我正在使用内置的 PHP 状态,这会导致 SimpleSAMLPHP 使用状态 ID 写入 cookie 并$_SESSION用于存储。当我查看 指定的目录时session.phpsession.savepath,我可以看到在成功和失败的情况下都创建了正确 ID 的会话文件。在成功的情况下,会话文件将填充序列化的会话数据。但是,在失败的情况下,会话文件是空的。在随后的请求中,会话显然无法加载。

编写会话的代码是:

我可以通过调试日志确认$session在这两种情况下都填充了 的值。

所以我的问题是:什么会导致会话文件被创建但为空,因为我正在写入$_SESSION并且相同的代码在从不同的文件调用时有效?这可能是由于会话未正确初始化或关闭造成的吗?如果在设置之前写入输出,我会期望看到这种行为$_SESSION吗?

0 投票
1 回答
107 浏览

php - PHP 从 5.2 升级到 5.3 后出现 FlaggedRevs 错误

升级后上传新文件时出现错误:

MediaWiki 版本 1.15.5。

0 投票
1 回答
482 浏览

php - 在 mediawiki 页面上添加下一个和上一个按钮

我有一个包含以下类别的 mediawiki 站点:角色、敌人、武器、盟友。每个类别都有一个页面列表(例如,在字符中,我有 char1、char2 等)。

假设我目前正在查看 char2 页面,我想要一个下一个/上一个按钮,以便我可以直接查看 char3 或 char1。

我可以只使用 [char3|next page] 和 [char1|previous page] 但问题是我有这么多页面,以至于硬编码每个页面以链接到其他页面可能会很乏味和痛苦,如果我决定添加一个页面“new_char “它恰好在列表的中间(mediawiki 以字母数字顺序输出它们 0-9 然后 az),我将不得不再次浏览这些页面并对所有内容进行硬编码。

摘要:我想我正在寻找一种无需硬编码链接即可动态链接到上一页/下一页的方法。

在此站点中,页面按字母顺序排列,因此添加页面并不一定意味着它将转到列表的末尾。

0 投票
1 回答
79 浏览

html - how is that link box called

Sometimes I see boxes in web pages that contain links in different font sizes. The most-often visited links are in bigger fontsize, the "less important" links are in smaller font size. I would call this box the "weighted size link box", but google does not understand this.

I want to have a mediawiki extension for this box, so can you tell me how this box is named?

0 投票
1 回答
61 浏览

php - 有什么方法可以在 MediaWiki 的 ajax 挂钩中获取正确初始化的 wiki 解析器?

在扩展中使用$wgAjaxExportList,是否可以获得适当的 wiki 解析器?

到目前为止,我已经尝试了以下内容:

但是,这不能正常工作。

现在我知道有一个用于解析 wikicode 的 javascript api:http ://www.mediawiki.org/wiki/API:Parsing_wikitext

但我不希望使用它,因为这意味着我将不得不执行多个 ajax 请求。

有没有更好的方法从扩展中的 ajax 请求解析服务器端的 wiki 文本?

0 投票
1 回答
48 浏览

mediawiki - 如何生成 API 索引?

我们将 MediaWiki 用于 C#/Java/Javascript 编程 API 的散文文档。API 方法和属性列在大约 20 个按主题分组的 wiki 页面上(例如前端/客户端-服务器-交互/后端)。

我需要的是类似于Sphinx API Index的所有 API 方法的字母索引。如何做到这一点?

0 投票
1 回答
85 浏览

mediawiki - MediaWiki 扩展的链接回调

从 MediaWiki UI 中的链接回调到扩展的最实用方法是什么?

我有一个扩展,它将在历史和差异页面中添加一个链接(例如“报告”),这需要在我的扩展中运行代码。

是否有可能有一个“通用”回调 URL(例如index.php/PageName?action=report&edit=123)或者我需要创建一个完整的特殊页面(index.php/Special:Report?edit=123`)来处理这个并执行我自己的代码?此后除了报告成功或失败之外,将不再有任何 UI。

0 投票
1 回答
309 浏览

php - Mediawiki SphinxSearch 扩展杀死 Apache

我正在尝试基于 Mediawiki 为我的公司建立知识库。

我已经在我自己的 VDS(debian、apache 2.2.16. php 5.3.3.7)上安装并配置了 Mediawiki 1.21.2 。我使用了 Sphinx 搜索引擎和 SphinxSearch Mediawiki 扩展。

但现在我尝试在生产虚拟服务器(CentOS、apache 2.2.15+nginx 1.0.15、php 5.3.3 和 Mediawiki 1.21.3)上做同样的事情,但在搜索时遇到了一些问题:

当我发出一个应该明确返回一些值的搜索请求时,nginx 显示502 Bad Gateway错误。如果没有要返回的信息,则会显示通常的 MediaWiki 消息。

apache 日志中,我看到以下内容:

站点的错误日志中,只有一些关于 StrictStandart 的警告:

然后转到mediawiki 日志文件:

让我们strace apache:

我的技能太差,无法从中做出决定,所以我很乐意提供任何建议。