Wikivoyage:列表编辑器
这是一个基于表单的列表编辑器,可用于添加和编辑列表。另请参阅 Wikivoyage:Listings。
如何使用
可以通过在列表表单中输入以下信息来描述每个列表。
- 名称:酒店、酒吧、餐厅、博物馆或任何其他事物的名称。推荐。
- 别名:备用名称,可以是当地语言名称或仅是备用名称。可选。
- 网站:此景点的官方网站的 URL(有关更多指南,请参阅 外部链接)。推荐。
- 地址:用于查找景点的街道地址,适用于有意义的地方。推荐。
- 路线:除街道地址外的其他简要路线指示,例如交叉路口、附近的地铁或公交车站。可选。
- 电话:用于预订或获取更多信息的电话号码。推荐。
- 免费电话:如果可用,则为免费电话号码。可选。
- 电子邮件:用于预订或获取更多信息的电子邮件地址。可选。
- 纬度:用于地图输出的十进纬度(GPS 坐标)。推荐。
- 经度:用于地图输出的十进经度(GPS 坐标)。推荐。
- 注意:lat 和 long 应具有相同的小数位数(如有需要,请使用尾随零)。如果其中一个存在,则另一个也应存在。点击链接 GeoMap 可轻松访问基于 OSM 的定位器。强烈不推荐使用 Google Maps 坐标。
- 营业时间:景点的开放时间(如适用)。推荐。
- 价格:房间价格、饮品价格、平均餐食价格或门票价格。推荐。
- Wikidata:景点的 Wikidata 页面(如果存在)。此字段仅应在存在特定地点的记录时使用——例如,链接到 莱佛士酒店 的 Wikidata 记录是合适的,但链接到 麦当劳 公司的 Wikidata 页面则不合适。
- Wikipedia:景点的 Wikipedia 页面(如果存在)。同样,请勿为品牌或公司页面提供值;仅当存在特定景点的 Wikipedia 页面时才提供值。
- 图片:Commons 上的图片,将显示在动态地图上该景点的兴趣点。<span id="geodata">lat; long</span>)。请注意,指定的值应排除图片的“文件:”命名空间(“Example.png”,而不是“File:Example.png”)。与 Wikidata 和 Wikipedia 字段一样,请勿提供通用图片;仅在图片属于特定地点时提供。
- 使用 Wikidata 的值更新共享字段:此链接仅在输入了 Wikidata 值时才出现。如果单击它,它将把标记有 Wikidata 徽标的字段中的任何现有值与共享 Wikidata 记录中的值同步。
- 将列表标记为最新?:如果列表中的信息已验证为最新,请勾选此复选框;这样做将导致列表的“最后编辑”日期更新为当前日期。可选。
- 删除此列表?:如果该企业已停止运营,请勾选此复选框,列表将被从文章中删除。可选。
- 编辑摘要:对所做更改的简要描述,这些描述将被记录在文章历史记录中。推荐。
- 小改动?:一个复选框,可用于指示一项编辑是小改动,例如修复拼写错误。可选。
在 Wikivoyage:Listings 中描述了其他几个参数。
功能


表单对用户来说是熟悉的功能,允许显示或隐藏特定参数,并提供额外的功能,如链接到帮助页面。编辑器允许模板具有灵活性,更多地依赖于 wikitext 而非实际的 HTML 结构。它以 span class="vcard" 及其相应的名称(span class="org")、地址(span class="label")和备用昵称(span class="nickname")为目标。目标地理编码可以通过包含 <span id="geodata">lat; long</span> 在一个单独的 {{geo}} 或 quickbar 模板中实现。
- 为没有“城市”或“其他目的地”的条目的二三级标题添加“[添加列表]”按钮(将向带有“查看”、“做”、“购买”、“用餐”、“住宿”和“连接”标题的主题添加列表,即使是旅游主题)
- 根据标题名称分配类型
- 为列表添加灰色编辑按钮
- 打开一个表单,其中列出了 {{listing}} 模板的参数。
- 自动编辑摘要
Bug 和反馈
请随时在此处报告 bug。尽量描述异常行为,如果可能,请提供出现该行为的示例列表或文章。
- “wrapContent”方法可能会导致标题周围的复杂 HTML 出现问题。例如,请参阅 WV:Votes for deletion#Archving 中的“折叠”链接。
- 在旧版本页面上点击编辑按钮时,会选中错误的列表:如果我查看一个旧的页面副本,该页面后来在我想编辑的列表上方添加了新列表,编辑器会打开错误的列表。也就是说,如果我在旧页面上选择第 n 个列表,编辑器会选择当前页面的第 n 个列表。Peter Chastain(讨论)2016年1月16日 13:36 (UTC)
- 一个有点相关的问题:如果我用列表编辑器开始编辑一个列表,然后其他人编辑并保存了文章,然后我保存我的更改,那么其他编辑者的更改就会丢失。Peter Chastain(讨论)2016年1月16日 20:02 (UTC)
- Template:Go 会破坏列表编辑器。例如,请参阅 Cleveland#By plane - 列表类型未被识别,编辑器无法打开。-- Ryan • (讨论)• 2017年1月26日 02:34 (UTC)
- {{{{go}} 已弃用。ARR8(讨论 | 贡献)2019年4月22日 03:53 (UTC)
- 当点击第一个部分以外的任何后续部分(非列表)时,将显示更靠上的另一个列表的信息,而不是所选列表的信息。保存时会导致“错误:尝试保存列表时遇到未知错误,请重试:无效段”的结果。– Craig Davison(讨论)2018年4月18日 08:27 (UTC)
- 列表中的字符串字面量“$&”会导致输出在保存时替换它,而不是整个列表。请参阅 special:diff/3766113 之后的一系列编辑。ARR8(讨论 | 贡献)2019年4月22日 03:53 (UTC)
- 包含模板或图片且位于“*”和“{{”之间的列表无法正确删除。有关详细信息,请参阅 此更改。
- Wikidata Sync 坐标覆盖了带有引用的声明值,并且没有移除引用,也没有向声明添加 Wikidata 引用,也没有任何指示哪个工具正在进行编辑以追踪问题,如我今天早些时候在 Travers' Pub 上 的报告。我直到现在才找到这个位置来报告这个问题。Wolfgang8741(讨论)2022年3月31日 03:53 (UTC)
功能请求
请在 Wikivoyage talk:Listing editor 讨论功能请求,然后再添加到下面,以便其他人可以提供反馈和建议。
- 移动端支持。允许在移动设备上使用列表编辑器。
- 更好的地理编码。使集成 GeoMap 和输入纬度/经度更加容易,也许可以单行输入而不是两个文本输入框,或者甚至能够启动一个小的 OpenStreetMap 弹出窗口来点击地点。
- 加载时间。列表编辑器的加载时间相当于编辑一个段落的时间,再加上创建和打开表单的额外时间。脚本是顺序运行的,等待 API 返回要编辑的段落,然后创建表单。技术上,表单可以在等待期间而不是之后创建(可能会将加载时间减少 20-30%)。
如何安装
英文 Wikivoyage 已默认安装并激活了该小工具(2023 年工作版本):请在 您的偏好设置 中的小工具列表中查找“2023 列表编辑器”。
在 MediaWiki 命名空间进行全站部署之前,尝试将其作为非默认小工具进行测试。其他项目可以通过以下编辑添加列表编辑器(请仔细遵循这些说明)
* ListingEditor2023[ResourceLoader|default|skins=vector,vector-2022,monobook,timeless,modern,cologneblue|type=general|dependencies=ext.gadget.ListingEditor2023Styles]|ListingEditor2023.js
* ListingEditor2023Styles[ResourceLoader|default|hidden|type=general]|ListingEditor2023.css
* ListingEditorConfig[ResourceLoader|package|hidden]|ListingEditorConfig.js|ListingEditor.json
创建以在“偏好设置”>“小工具”中描述列表编辑器。
importScriptURI('https://wikivoyage.cn/w/load.php?modules=ext.gadget.ListingEditor2023');
@import url('//wikivoyage.cn/w/index.php?title=MediaWiki:Gadget-ListingEditor2023.css&action=raw&ctype=text/css');
复制到您的本地 wiki。请勿编辑。
复制到您的本地 wiki 并根据需要进行编辑。
翻译
目前,翻译需要添加到 代码本身。未来希望这可以连接到 TranslateWiki 的自动翻译。
版本
- de.voy: de:MediaWiki:Gadget-ListingEditor.js - [从 2017/06/28 开始] 适应 Wikivoyage/de(翻译等)。从 Wikidata 获取占位符。从 Wikidata 获取地址、电话、传真、电子邮件等。添加其他列表字段。移除 Wikipedia 字段。用于模板预览的预览按钮。在单击货币符号后将鼠标光标恢复到价格。表格布局替换为 div 布局。添加了标签标题。带有相关颜色样本的类型。接受 lat 字段中逗号分隔的“lat, long”。删除列表时,不执行列表验证。编辑按钮前的管道分隔符不会打印。由于 Gadgets 在移动视图中不起作用,因此通过 Common.js 调用。
- en.voy: MediaWiki:Gadget-ListingEditor.js - 隐藏传真
- it.voy: it:MediaWiki:Gadget-ListingEditor.js - 不隐藏传真
- pt.voy: pt:MediaWiki:Editor.js - 单行模板
- fr.voy: fr:MediaWiki:Gadget-ListingEditor.js - 不隐藏传真、手机、Wikipédia、Facebook、Twitter
- he.voy: he:MediaWiki:ListingEditor.js & he:MediaWiki:ListingEditor.css - 右到左版本的示例
- el.voy: el:MediaWiki:Gadget-ListingEditor.js - 隐藏“添加列表”
- zh.voy: zh:MediaWiki:Gadget-ListingEditor.js - 支持多种语言变体
- fa.voy: fa:MediaWiki:Gadget-ListingEditor.js - 分类、添加加载图标、添加预览支持、使用正则表达式检测模板替代项、通过段落中的索引而不是 ID 或标签或地址编辑模板、调整 RTL(IE 支持)
- bn.voy: bn:MediaWiki:Gadget-ListingEditor.js
- ja.voy: ja:MediaWiki:Gadget-ListingEditor.js - 支持移动版本、标记编辑者、支持专有参数
配置
ListingEditor.Config 模块包含必须为每种语言定制的参数。
- TRANSLATIONS
- 必须翻译成本地语言的字符串。
- MAX_DIALOG_WIDTH
- 列表编辑器允许的最大宽度(以像素为单位)
- ALLOW_UNRECOGNIZED_PARAMETERS
- 一个标志,指示当列表保存时,列表编辑器是否应自动删除其不认识的模板参数。上面“识别”的参数列表在 LISTING_TEMPLATES 配置数组中配置。
- SECTION_TO_TEMPLATE_TYPE
- 数组,指定每个文章段落应使用哪个列表模板。请注意,数组是按段落 ID 匹配的,因此需要使用下划线而不是空格。
- DISALLOW_ADD_LISTING_IF_PRESENT
- 一系列 JQuery 选择器,如果匹配,将阻止列表编辑器向页面上的任何段落添加“添加列表”链接。这对于防止向国家或地区文章添加“添加列表”链接很有用。
- DEFAULT_LISTING_TEMPLATE
- 默认列表模板的名称。在英文 Wikivoyage 上,默认列表模板是 Template:Listing。
- LISTING_TYPE_PARAMETER
- 指示模板类型的列表模板参数。在英文 Wikivoyage 上,这是“type”参数。
- LISTING_CONTENT_PARAMETER
- 指示模板内容的列表模板参数。在英文 Wikivoyage 上,这是“content”参数。
- EDIT_LINK_CONTAINER
- Template:Listing 必须配置一个包含“编辑列表”链接的 HTML 元素,此参数指定一个匹配该 HTML 元素的 JQuery 选择器。
- LISTING_TEMPLATE_PARAMETERS
- 此配置对象将列表编辑器 HTML(如 EDITOR_FORM 配置值中所指定)链接到用作模板参数的 wiki 语法。如果所有列表模板的行为都相同,可以指定一个单独的配置数组,或者可以指定多个数组来支持不同模板的不同行为——例如,在英文 Wikivoyage 上,配置了单独的 SLEEP_TEMPLATE_PARAMETERS 数组,以支持 sleep 模板使用“checkin”和“checkout”而不是“hours”。
- LISTING_TEMPLATES
- 此数组将每个受支持的模板类型与其配置对象链接。例如,模板“listing”使用 LISTING_TEMPLATE_PARAMETERS。
- EDITOR_FORM_SELECTOR
- 一个 JQuery 选择器,它将匹配 EDITOR_FORM 中指定的列表编辑器 UI。
- EDITOR_CLOSED_SELECTOR
- 一个 JQuery 选择器,它将匹配 EDITOR_FORM 中指定的列表编辑器 UI,该 UI 对应于指示列表应从站点中移除的输入。
- EDITOR_SUMMARY
- 一个 JQuery 选择器,它将匹配 EDITOR_FORM 中指定的列表编辑器 UI,该 UI 对应于编辑摘要输入字段。
- EDITOR_MINOR_EDIT
- 一个 JQuery 选择器,它将匹配 EDITOR_FORM 中指定的列表编辑器 UI,该 UI 对应于指示编辑是小改动的复选框。
- EDITOR_FORM
- 用于列表编辑器 UI 的 HTML。
回调
不同的语言版本可能希望实现自定义功能,这可以通过 ListingEditor.Callbacks 模块获得支持。目前支持三种类型的回调
- CREATE_FORM_CALLBACKS
- 在创建列表编辑器 UI 时调用。默认配置包含初始化 geomap 和货币符号功能的事件。
- SUBMIT_FORM_CALLBACKS
- 在提交列表编辑器表单但验证数据之前调用。默认配置包含处理“最后编辑”日期的事件。
- VALIDATE_FORM_CALLBACKS
- 在列表编辑器表单提交并且在调用 submit form 回调之后调用。验证器功能包括验证列表不为空,以及任何输入的电子邮件地址是否有效。如果验证器返回一个非空字符串,则该值将显示给用户,并且表单不会被提交。
更改日志
发布说明可以在 github 上找到。
v3.7.1 更改
- 防止在仅包含空格的字符串后面添加句点
v3.7.0 更改
- 恢复 DMS 格式管理,该格式在 v2.4 中实现
- 修复 Wikidata Sync 弹出窗口中的“自动选择” bug
v3.6.0 更改
v3.4.0 更改
v3.3.1 更改
v3.3.0 更改
v3.0.0 更改
v2.4.2 更改
- 修复在存在“?”或“!”时,“在内容中添加尾随句点”的 bug
v2.4.1 更改
- 在“WD sync”窗口中添加指向 commons 的链接,方便访问、查看和比较图片
- 避免在比较两个图片时出现误报,这两个图片中的本地图片用下划线代替空格
- 十进制格式的坐标不得超过 6 位数(注意:6 位数的精度约为 11 厘米)
v2.4 更改
- 表转换为 div 表单
- 支持 DMS 符号(在 it:voy & de:voy 中使用)
- 恢复 geomap 链接功能并实时更新坐标。在列表和文章坐标之间使用最佳可用坐标
- 关闭 sync 表单时关闭主列表编辑器表单
- 删除请求时跳过验证表单过程
- 在 ADD 阶段也允许编辑摘要,以便提供署名或其他信息
- 修复动态生成的 lint & HTML 错误
- 移除坐标置空链接
- 在内容中添加尾随句点
- WD sync 后更新或正确隐藏 Wikipedia/Commons 链接
- 当列表存在“$&”序列时,防止编辑问题
- 防止第一个列表值没有参数时出现 JS 错误
- Wmflabs -> toolforge URL 迁移,以避免无用的重定向
- 使用全局/局部变量代替硬编码
- CSS & 样式清理
- 小型清理
v2.3 更改
- 从意大利语 Wikivoyage 导入国家货币、国家/地区呼叫代码和本地呼叫代码的快捷方式
- 修复 updateWikidataSharedFields 和旧的 quickUpdateWikidataSharedFields 之间的多语言不兼容问题
- 小型清理
v2.2 更改
- 创建带有引用支持的双向 Wikidata Sync 窗口
- 如果 Alt 为空,则自动填充机场的 IATA 代码
- 与 Wikidata 同步路线
- 修剪价格和地址中的句点
- 从德语 Wikivoyage 导入预览功能
- 添加按钮,通过给定的 Wikipedia 文章获取 Wikidata ID
- 添加按钮将坐标替换为 NA
- 通过用 <br> 替换 <p> 来修复 linterrors
- 清理模板格式
- 在类型选择器中显示颜色
- 检测 alt 字段中的 RTL 文本
- 支持 go 作为列表类型
v2.1 更改
- 添加了 Wikidata & Wikipedia 字段。
- Wikidata、图片和 Wikipedia 字段现在会自动完成,通过搜索相关站点进行查找。
- 通过单击“使用 Wikidata 的值更新共享字段”链接,可以使用 Wikidata 中存储的值填充纬度、经度、官方链接、wikipedia 链接和图片。
- 现在默认显示“图片”字段。
- 对底层代码进行了多项清理。
- 修复了列表类型未以不区分大小写的方式处理的 bug,从而阻止了编辑使用“Do”等类型的模板。
v2.0.x 更改
- 修复了编辑包含换行符的内联列表时无法正常工作的 bug。
- 使 VisualEditor 与列表编辑器兼容 - phab:T122454。
- 修复了非标准“type”属性被删除的 bug(例如:“type=go”)。
- 如果列表前后有换行符,则在删除列表时不要留下多余的换行符。
- 列表编辑摘要应使用正在编辑的段落名称,而不是正在编辑的列表的类型。
- 修复了阻止删除包含重复美元符号(“$$”)的列表的 bug。
- 从“diff”页面编辑将不再在保存编辑时重新加载 diff 页面,而是将用户带到页面的规范 URL,以便他们可以看到自己的更改。
- 修复了当列表是定义列表的一部分时(例如:
*: {{listing}})删除失败的 bug。
v2.0 更改
- 更新列表编辑器对话框 UI,为字段输入提供更多空间,并在小屏幕上响应式地从两列折叠为一列。
- 使用 mw.Api().postWithToken 而不是 $.ajax,以期解决会话令牌过期问题。
- 添加了对多段落列表编辑的支持。
- 当 ALLOW_UNRECOGNIZED_PARAMETERS 标志设置为 true 时,在编辑时不删除未识别的列表模板的非空值(如 wikipedia、phoneextra 等)。
- 如果列表编辑器表单提交失败,请重新显示列表编辑器表单,并保留用户输入的内容,以免丢失工作。
- 将同步 $.ajax 调用替换为异步调用。
- 允许在编辑列表时使用编辑摘要并将编辑标记为小改动。
- 将“添加列表”链接移动到 mw-editsection 块内。
- 自动将列表内容中的换行符替换为 <p> 标签。
- 修复了列表字段中的 HTML 注释阻止编辑的 bug。
- 提供配置选项,以便仅在某些字段具有非空值时显示它们(例如:默认配置中的“fax”)。
- 添加基本的电子邮件地址验证。
- 失败的验证码挑战不再导致后续的验证码尝试失败。
- 重大代码重组。
v1.4.0 更改
- 匿名 IP 添加新外部链接时的 CAPTCHA 对话框
- 根据保护级别显示编辑按钮
v1.3.5 更改
- 添加了移除已关闭列表的功能
- 修复四级标题的故障
- 修复“[添加列表]”在 CSS 中仅显示在屏幕上
- 修复了标签 bug(input-type 而不是 form-type)
- 警告关于外部链接
- 在内容描述中的换行符处添加断行符 <br>
v1.3.3 更改
- 对带有特殊字符的标题进行了微调
v1.3.2 更改
- 针对其他语言的标题和类型进行了调整
v1.3.1 更改
- 对单行列表进行了修正
- 修复了单参数 bug
v1.3.0 更改
- 添加了帮助页面链接
- 为地址/名称添加了 geomap 链接
- 修复了空格 bug
v1.2.8 更改
- 获取未缓存版本
v1.2.6 更改
- 转换为扁平化表单
- 添加了 geomap 链接
- 添加了货币按钮
- 考虑了嵌套模板
v1.1.0 更改
- 添加了“[添加列表]”按钮
v1.0.0 更改
- 初始发布