炽焰天穹wiki
wiki.17173.com/hbr
首页
角色图鉴
风格图鉴
卡池图鉴
其他图鉴
饰品图鉴
芯片图鉴
增幅器图鉴
任务图鉴
活动剧情图鉴
管理
刷新本页缓存
页面操作
编辑
历史
短链
移动
删除
保护
监视
取消监视
链入页面
链出更改
常用功能
沙盒
所有页面
特殊页面
Cargo表
Cargo查询
创建模板
文件列表
更改审核
最近更改
用户权限
用户组权限
评论管理
更改审核
全站配置
配置导航栏
配置整站通告
配置小组件
配置全局CSS
配置全局JS
全局测试CSS
全局测试js
JS/CSS版本
全站设置
组件使用帮助
新建页面提示
修改页面提示
删除页面原因
编辑版权警示
修改页面摘要
上传文件提示
上传文件协议
上传文件说明
编辑器上传文件说明
删除文件原因
其他
创建
攻略审核
WIKI贡献榜
WIKI反馈区
WIKI运维
首页
角色图鉴
风格图鉴
卡池图鉴
其他图鉴
饰品图鉴
芯片图鉴
增幅器图鉴
任务图鉴
活动剧情图鉴
管理
刷新本页缓存
页面操作
编辑
历史
短链
移动
删除
保护
监视
取消监视
链入页面
链出更改
常用功能
沙盒
所有页面
特殊页面
Cargo表
Cargo查询
创建模板
文件列表
更改审核
最近更改
用户权限
用户组权限
评论管理
更改审核
全站配置
配置导航栏
配置整站通告
配置小组件
配置全局CSS
配置全局JS
全局测试CSS
全局测试js
JS/CSS版本
全站设置
组件使用帮助
新建页面提示
修改页面提示
删除页面原因
编辑版权警示
修改页面摘要
上传文件提示
上传文件协议
上传文件说明
编辑器上传文件说明
删除文件原因
其他
创建
攻略审核
WIKI贡献榜
WIKI反馈区
WIKI运维
查看“微件:BatchCreateByTemplate”的源代码
WIKI功能
阅读
查看源代码
查看历史
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您没有权限编辑
微件
命名空间内的页面。
您可以查看和复制此页面的源代码。
<includeonly><div class="BCBT"> <div class="title"> <span>从Excel中复制粘贴↓</span> <div class="modeOption"> 模式: <label><input type="radio" name="bcbtMode" value="text" checked><b>新建</b>页面/<b>覆盖</b>已有页面</label> <label><input type="radio" name="bcbtMode" value="prependtext">在页面<b>开头</b>追加内容</label> <label><input type="radio" name="bcbtMode" value="appendtext">在页面<b>末尾</b>追加内容</label> </div> </div> <textarea class="input"></textarea> <div class="display row"></div> <button class="submit">提交</button> </div> <style> .BCBT .title { display: flex; } .BCBT .title .modeOption { margin-left: 2em; display: flex; } .BCBT .title .modeOption { margin-left: 2em; } .BCBT .title .modeOption label { margin-right: 0.5em; font-weight: normal; } .BCBT .display pre.created { background: #5CB85C; } .BCBT .input { width: 100%; height: 300px; } .BCBT .submit, .BCBT .reset { padding: 0.5em 1em; } </style> <script> class BCBT { state = "ready" option = { mode: "text" } data = { template: "", key: [], page: {}, } promise = Promise.resolve() constructor(dom, wiki) { this.dom = $(dom) this.dom.data("BCBT", this) this.wiki = wiki || mw.config.values.wgScriptPath } update() { this.parse() let $display = this.dom.find(".display") $display.empty() for (let key in this.data.page) { let $pre = $(`<pre class="col-md-3" data-title="${encodeURIComponent(key)}">`) $pre.append(`[[<a href="${this.wiki}/${encodeURIComponent(key)}" title="${key}" target="_blank">${key}</a>]]`) $pre.append("<hr>") $pre.append(this.stringify(`${key}`).replace(new RegExp(`^{{${this.data.template}\n`), `{{<a href="${this.wiki}/${encodeURIComponent(`模板:${this.data.template}`)}" title="${this.data.template}" target="_blank">${this.data.template}</a>\n`)) $display.append($pre) } } parse() { let text = this.dom.find(".input").val() let pages = text.split("\n") let key = pages.shift().split("\t") key.forEach((e, i, a) => { a[i] = e.trim() }) this.data.template = key.shift() this.data.key = key this.data.page = {} pages.forEach((e) => { let value = e.split("\t") value.forEach((e, i, a) => { a[i] = e.trim() }) let page = value.shift() if (!page) { return } this.data.page[page] = value }) } stringify(page) { let str = `{{${this.data.template}` this.data.key.forEach((e, i) => { str += `\n|${e ? `${e}=` : ""}${this.data.page[page][i] || ""}` }) str += "\n}}" return str } submit() { this.state = "busy" this.dom.find(".input,.modeOption input").attr("disabled", true) let url = `${this.wiki}/api.php` for (let key in this.data.page) { this.promise = this.promise.finally(() => { return new Promise((resolve, reject) => { checkToken().then((token) => { $.ajax({ url: url, type: "POST", data: { token: token, action: "edit", title: key, summary: "通过批量创建工具BCBT创建/编辑", [this.option.mode]: this.stringify(key) }, success: () => { $.get(`${this.wiki}${decodeURI(key)}`, () => { this.dom.find(`.display pre[data-title="${encodeURIComponent(key)}"]`).addClass("created") resolve() }) } }) }) }) }) } this.promise = this.promise.finally(() => { if (confirm("创建完毕,是否重置?")) { this.reset() } else { this.dom.find(".submit") .removeClass("submit") .addClass("reset") .html("重置") } }) function checkToken() { return new Promise((resolve, reject) => { $.ajax({ url: url, type: "GET", data: { action: "query", meta: "tokens", format: "json" }, success(data) { resolve(data.query.tokens.csrftoken) } }) }) } } reset() { this.state = "ready" this.dom.find(".input,.modeOption input").attr("disabled", false) this.dom.find(".input").val("") this.update() this.dom.find(".reset") .removeClass("reset") .addClass("submit") .html("提交") } } (window.RLQ = window.RLQ || []).push(["jquery", () => { let bcbt = $(".BCBT") if (mw.config.get('wgUserGroups').indexOf("sysop") === -1) { bcbt.html("你无权使用这个功能。") return } bcbt.each((i, e) => { new BCBT(e) }) $(document).on("input", ".BCBT .input", function () { $(this).closest(".BCBT").data("BCBT").update() }) $(document).on("input", `.BCBT .modeOption input[name="bcbtMode"]`, function () { $(this).closest(".BCBT").data("BCBT").option.mode = $(this).val() }) $(document).on("click", `.BCBT .submit`, function () { let bcbt = $(this).closest(".BCBT").data("BCBT") if (bcbt.state === "ready" && confirm("真的确认了吗?")) { bcbt.submit() } }) $(document).on("click", `.BCBT .reset`, function () { $(this).closest(".BCBT").data("BCBT").reset() }) }]) </script> </includeonly> <noinclude>批量创建页面,在Excel里建表格复制进来 {|class="wikitable |模板名||参数1名||参数2名||…… |- |页面1名||参数1||参数2||…… |- |页面2名||参数1||参数2||…… |- |colspan=4|…… |} {{#widget:BatchCreateByTemplate}}</noinclude>
返回
微件:BatchCreateByTemplate
。