LLWiki正在建设中,欢迎加入我们

“LLWiki:管理员技术手册”的版本间差异

跳转到导航 跳转到搜索
添加2,604字节 、​ 2023年3月17日 (五) 13:29
// 使用Wikiplus小工具快速编辑
→‎jquery.client:​ //使用页面/文本对比查看器快速编辑
(// 使用Wikiplus小工具快速编辑)
标签移动版网页编辑 移动版编辑
 
(未显示2个用户的9个中间版本)
| skin || 皮肤 || 桌面版为“vector”,手机版为“minerva”,这也是区分桌面版和手机版的主要依据
|-
| wgFormattedNamespaces || 储存了所有空间本地化译名的数组,不过目前除了“模块”都是英文 || 可用
|-
| wgNamespaceIds || 储存了所有可接受的中英文空间名称对应的编号,注意英文名称中的空格都显示为下划线 || 可用
|-
| wgScript || <code>/mediawiki/index.php</code>,在LLWiki也可简化为<code>/zh</code>,主要用于不同MediaWiki站点间的代码通用,非必需且不推荐使用 || 可用
| wgCanonicalSpecialPageName || 标准化的特殊页面名,也可被wgPageName取代,主要用于不同MediaWiki站点间的代码通用,非必需 || 可用,而且多了“History”和"MobileDiff"等可能的取值<ref>[[mw:Extension:MobileFrontend/zh|移动前端的扩展说明]]</ref>
|-
| wgCategories || 当前阅读的历史版本所属的分类,不含空间,下划线显示为空格,且总是包含隐藏分类。繁简规则一般遵从实际分类页面,但似乎偶有例外 || 除非已执行[[mediawiki:gadget-MobileCategories.js|MobileCategories小工具]],否则不仅LLWiki可用。另外桌面版的空值为<code>[]</code>,手机版的空值为<code lang="js">null</code>,注意可能的bug
|-
| wgCurRevisionId || 页面最新的版本编号,不存在时值为0 || 在[[special:历史|历史]]和[[special:移动版差异|{{int:diff}}]]页面不可用
| wgIsProbablyEditable || 是否可能可以编辑 || 在[[special:历史|历史]]和[[special:移动版差异|{{int:diff}}]]页面不可用
|-
| wgNamespaceNumber || 空间编号 || 在[[special:历史|历史]]和[[special:移动版差异|{{int:diff}}]]页面会显示为-1
|-
| wgPageContentModel || 页面内容模型,特殊页面为“wikitext” || 由于[[special:历史|历史]]和[[special:移动版差异|{{int:diff}}]]是特殊页面,会错误地显示为“wikitext”
| '''wgRelevantPageIsProbablyEditable''' || 关联的页面是否可能可以编辑 || 可以用于[[special:历史|历史]]和[[special:移动版差异|{{int:diff}}]]页面,此时效果与桌面版一致
|-
| wgRestrictionEdit || 编辑保护,不存在的页面(含受保护的标题)或特殊页面为<code lang="js">null</code>,存在的内容页面受全保护时为<code lang="js">["sysop"]</code>,受半保护时为<code lang="js">["autoconfirmed"]</code>,未保护为<code>[]</code>;不包含空间保护和级联保护 || 在[[special:历史|历史]]和[[special:移动版差异|{{int:diff}}]]页面不可用,另外未保护的内容页面为<code lang="js">["*"]</code>
|-
| wgRestrictionMove || 移动保护,不存在的页面或特殊页面为<code lang="js">null</code>,存在的内容页面受全保护时为<code lang="js">["sysop"]</code>,受半保护时为<code lang="js">["autoconfirmed"]</code>,未保护为<code>[]</code>;不包含空间保护和级联保护 || 在[[special:历史|历史]]和[[special:移动版差异|{{int:diff}}]]页面不可用
|-
| wgRevisionId || 当前显示的页面版本的编号,不存在时值为0。注意和index.php的oldid参数可能不同 || 由于[[special:移动版差异|{{int:diff}}]]页面不可同时显示历史页面,此时不可用
|-
| wgTitle || 不含空间的页面名称,下划线显示为空格 || 在[[special:历史|历史]]和[[special:移动版差异|{{int:diff}}]]页面不可用
|-
| wgUserEditCount || 当前用户的编辑次数 || 可用
|-
| local.comments || 签名时间替换为本地时区
|-
| mobile.menu || 手机版的左侧主菜单加载完成
|-
| to.bottom || 添加滚动至底部的按钮
|-
| transclusion.preview || 用于预览入页面的编辑区加载完成
|-
| wikiplus.dialog || 打开Wikiplus小工具的对话框
 
====mediawiki.Title====
彻底解决关于页面名称或文件名称的各种烦恼,包括大小写、空格/下划线、空间别名等等。通常用法为先使用<code lang="js">const title = new mw.Title(str);</code>的语法构建一个mw.Title对象。与mw.util的很多方法以及<code lang="js">new mw.Uri()</code>不同,<code lang="js">new mw.Title(str)</code>不会以当前页面作为默认参数。因为未统一大小写、空格/下划线等,请勿直接访问title.title属性,而是根据需要使用下列方法。
 
*title.getExtension(),获取文件名的扩展名。
*title.getName(),获取文件名,不含扩展名,首字母大写,空格替换为下划线。
*title.getNameText(),获取文件名,不含扩展名,首字母大写,下划线替换为空格。
*title.getNamespaceId(),获取空间,能识别一切别名。也可以直接使用title.namespace属性访问。
*title.getNamespacePrefix(),获取标准空间前缀,含<code>:</code>。
*title.toString(),获取完整页面名称,空间使用标准前缀,不含<code>#</code>,空格替换为下划线。
*title.toText(),相比title.toString()方法,下划线替换为空格。
*<code>title.getRelativeText(nsid)</code>,相比title.toText()方法,会空间编号匹配时移除空间前缀。
*title.getSubjectPage(),生成讨论页对应的主页面的mw.Title对象。
*title.getTalkPage(),生成对应的讨论页的mw.Title对象。
 
此外,mediawiki.Title还有一些静态方法用于生成mw.Title对象。
*<code>mw.Title.makeTitle(nsid, title)</code>,给定空间编号和标题生成对象。不存在的空间会报错。仅当空间为0时,会根据标题生成正确的空间。
*<code>mw.Title.newFromFileName(filename)</code>,给定文件名生成对象。
*<code>mw.Title.newFromImg(node)</code>,给定<code lang="html"><img></code>节点或对应的jQuery对象生成mw.Title对象。
*<code>mw.Title.newFromText(title, nsid)</code>,相比mw.Title.makeTitle()方法,错误的空间编号也不会报错,且当标题含空间前缀时总是覆盖第二个空间参数。
 
====mediawiki.storage====
| MultilineTextInputWidget || 相当于textarea
|-
| NumberInputWidget || 带增减按钮的输入仅限数字的文本框,由min/max/step/required设置代替validate设置
|-
| PanelLayout || 占据整个父容器的layout
===LLWiki添加的全局變量和方法===
;<code lang="js">window.wgULS(hans, [hant])</code>和<code lang="js">window.wgUCS(hans, [hant])</code><ref name="site-lib">需要加載[[mediawiki:gadget-site-lib.js|site-lib.js]]</ref>
:用于处理繁简文字信息,wgULS()用于界面语言,wgUCS()用于内容语言。为方便维护,在大量使用繁简转换的页面,请将所有繁简文字以mw.messages.set()方法的形式至于代码开头,然后在使用时以mw.msg()方法调用即可。
 
;mw.gadgets
:这个对象储存了小部件的执行情况,防止Ajax预览造成小部件重复执行。
 
;mw.settingsDialog<ref>需要加载[[mediawiki:gadget-SettingsDialog.js|SettingsDialog.js]]</ref>
;mw.windowManager
:这个对象是一个SettingsDialog类,用于小工具设置的图形界面。这个类提供了多种方法,包括:获取小工具名称(getName)、获取小工具对象(getObject)、获取小工具标签页(getPanel)、添加小工具(addTab)、生成设置对象(generateOptions)、将设置保存到localStorage(saveOptions)、还原设置(clearOptions)和导出设置(export)。用法复杂,详见[[mediawiki:gadget-SettingsDialog.js|代码页]]。
:这个对象储存了一个公用的OO.ui.WindowManager对象。
 
;<code>mw.pagenamee()</code><ref name="site-lib" />
:这个方法用于获取转义后的当前页面名称。需要mediawiki.util。
 
;<code>mw.addMobileLinks(linkslink)</code><ref name="site-lib" />
:这个方法生成手机版菜单需要的列表构成的数组,可以随后使用jQuery加入DOM中。linkslink一个对象或对象数组,每一项包含链接地址hrefhref(可选)、FontAwesome图标icon和icon(默认为[https://fontawesome.com/icons/arrow-circle-right 圆圈包裹的一个向右箭头])、文字信息text(需要手动设置繁简转换,优先级低于msg)或mw.messages的键值msg和<code>&lt;li&gt;</code>元素属性attr(可选)
 
;<code>mw.isModule(name, [flag])</code><ref name="site-lib" />
:这个方法用于检测一个模块是否正在或已经加载。name为模块名或小工具名;flag为真时自动在小工具名name前添加前缀<code lang="js">'ext.gadget.'</code>。
 
;<code>mw.apiFailure(reason, topic)</code><ref name="site-lib" />
 
;<code>mw.timedParse(api, params, topic)</code><ref name="site-lib" />
:Ajax使用POST而非GET,因此适合预览大段Wikitext。params的默认设置为<code lang="js">{action: 'parse', prop: 'text', title: mw.config.get( 'wgPageName' ), disablelimitreport: 1, disableeditsection: 1, pst: 1, formatversion: 2}</code>,可以覆盖。需要填入page、pageid或oldid参数时请勿使用此方法,应当选用包含<code lang="js">{action: 'parse'}</code>参数的mw.timedQuery()。topic同样需要手动设置繁简转换。需要mediawiki.api。
 
;<code>mw.standardQuery(api)</code><ref name="site-lib" />
:使用mw.timedQuery()方法提交一个API请求以获取当前版本的全文Wikitext并保存至mw.request。需要mediawiki.api。
 
;<code>mw.sectionQuery(api, section, [force])</code><ref name="site-lib" />
:使用mw.timedQuery()方法提交一个API请求以获取段落Wikitext并保存至mw.sections。section为段落编号,默认为序言;为降低错误编辑历史版本的风险,想要获取历史版本的段落Wikitext时,必须手动添加为真的force参数。需要mediawiki.api。
 
;<code>mw.safeEdit(api, curRevid, params, [flag])</code><ref name="site-lib" />
:检查有无编辑冲突后提交编辑。api为mw.Api对象;curRevid为当前最新版本的编号,默认保险起见未赋初始值,但一般填<code lang="js">mw.config.get( 'wgCurRevisionId' )</code>即可;parmas为API参数,默认为<code lang="js">{action: 'edit'}</code>,可以覆盖,但原则上请勿使用这一方法执行其他操作;flag参数对应是否开启自动备份小工具,这会改变检测到编辑冲突时的应对错误通知。检测到编辑冲突抛出错误<code lang="js">'editConflict'</code>,API请求失败抛出错误<code lang="js">'editFailure'</code>或<code lang="js">'revisionQueryFailure'</code>。需要mediawiki.api。
 
;<code>mw.safeRedirect(api, title, target, [summary])</code><ref name="site-lib" />
:检查繁简转换后的页面是否已经存在后创建新重定向。api为mw.Api对象;title为重定向页标题;target为重定向目标页标题,默认为当前页面;summary为可选摘要。页面已存在时抛出<code lang="js">'pageExists'</code>,API请求失败时抛出<code lang="js">'createFailure'</code>或<code lang="js">'queryFailure'</code>。需要mediawiki.api。
 
;<code>mw.confirm(text, [flags])</code><ref name="site-lib" />
:借助OO.ui.confirm()方法生成一个确认对话框。text为确认提示;flags,可以是字符串或jQuery;flags为确认键的样式数组,可选元素包括<code lang="js">'primary'</code>、<code lang="js">'progressive'</code>和<code lang="js">'destructive'</code>,其中<code lang="js">'primary'</code>不能单独生效。返回值为一个状态为resolve的Promise对象,值为真表示确认。需要oojs-ui-windows。
 
;<code>mw.prompt(text, [flags], [config])</code><ref name="site-lib" />
:借助OO.ui.prompt()方法生成一个prompt对话框。text为文字提示,可以是字符串或jQuery;flags为确认键的样式数组,可选元素包括<code lang="js">'primary'</code>、<code lang="js">'progressive'</code>和<code lang="js">'destructive'</code>,其中<code lang="js">'primary'</code>不能单独生效;config为可选的文本框设置。返回值为一个状态为resolve的Promise对象,值为<code lang="js">null</code>表示取消。需要oojs-ui-windows。
 
;<code>mw.dialog(dialog, actions, $message, [$title])</code><ref name="site-lib" />
:借助OO.ui.MessageDialog对象生成一个更复杂的对话框。dialog为预先准备的OO.ui.MessageDialog对象;actions为OO.ui.ActionWidget对象构成的数组;$message为提示信息,相比mw.confirm()方法的进步之处在于可以使用jQuery或htmlString;$title为对话框标题。返回值为点击按钮时的Promise对象。需要oojs-ui-windows。
 
;<code>mw.tipsy($container, [target], [params], [$content])</code><ref name="site-lib" />
:借助OO.ui.PopupWidget对象生成一个手机版也有效的tooltip。$container为外部容器的jQuery对象,target(不能是body);target为目标元素的选择器,params;params为建立OO.ui.PopupWidget对象时的参数,默认为<code lang="js">{padded: true, width: null, classes: ['mw-tipsy']}</code>,可以覆盖;$content为自定义的tooltip内容,默认为title或data-title属性。需要oojs-ui-core。
 
;<code>mw.menu(options, [config], [unselectable])</code><ref name="site-lib" />
:借助于OO.ui.MenuSelectWidget生成一个浮动菜单。options为选项数组,每一项包含文本text(需要手动设置繁简转换)、FontAwesome图标icon(可选)、数据data(可选)、链接href(可选)和点击事件click(可选);config为菜单设置,默认为<code lang="js">{classes: ['site-menu'], hideWhenOutOfView: false}</code>,可以覆盖;unselectable为真时,菜单不会保留之前最后一次的选择记录。这个UI方法的用法较为复杂,详见[[mediawiki:gadget-site-lib.js#L311|代码页]]。
 
;<code>mw.convertTimezone(then, timezone)</code><ref name="site-lib" />
:改变moment对象的时区。then为待处理的moment对象,默认为现在;timezone为时区的IANA名称或数值表示的UTC偏移量,需要提前检查合法性,默认为本地时区。注意这个方法的返回值不是一个真实存在的时间点,只能用于输出而不能用于进一步运算。需要moment。
 
;mw.resizeLyrics()<ref>需要加載[[user:bhsd/widget/lyrics.js|Widget:Lyrics]]</ref>
}
</pre>
这里重点说明一下第二和第四条规则造成的影响。第二条规则使得表格的外层边框、行边框和单元格边框合并,可能造成一系列关于边框的CSS规则出现不符合预期的表现,尤其是<code>&lt;table&gt;</code>的<code>cellspacing</code>属性会无法生效。因此一般建议避免使用<code>cellspacing</code>这一HTML属性,改为使用CSS中的<code>border-spacing</code>。另外,在需要<code>border-spacing</code>或<code>border-radius</code>等样式时,请同时指定<code langclass="csshljs">border-collapse: separate;</code>以使手机版生效。
 
第四条规则的本意是在窄屏上<code>&lt;table&gt;</code>元素不会将页面撑得过宽,但这同时会造成外层的<code>&lt;table&gt;</code>和内层的<code>&lt;tbody&gt;</code>分离。特别是如果外层<code>&lt;table&gt;</code>规定了边框或背景色时,很容易看出样式的错误。为此一般需要主动指定<code langclass="csshljs">display: table;</code>以修复这一问题,LLWiki有很多预定义的表格CSS类也都添加了这一规则<ref name="site-styles">[[mediawiki:gadget-site-styles.css|全站CSS]]</ref>。但这样修改的话又会重新面临过宽的表格将整个页面撑大的问题。LLWiki现定义了<code>table-wrapper</code>类<ref name="site-styles" />,用于套在宽表格外:<code lang="html"><nowiki><div class="table-wrapper"></nowiki></code>,这个外层容器会在窄屏上通过<code langclass="csshljs">overflow-x: auto;</code>限制里面的表格宽度。
====图片====
====皮肤界面====
16,874

个编辑

导航菜单