<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>https://mcbbs.wiki/index.php?action=history&amp;feed=atom&amp;title=%E7%94%A8%E6%88%B7%3A%E5%9D%91%E8%A7%A6%E5%8F%AF%2Fjs%2FquickSave.js</id>
	<title>用户:坑触可/js/quickSave.js - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://mcbbs.wiki/index.php?action=history&amp;feed=atom&amp;title=%E7%94%A8%E6%88%B7%3A%E5%9D%91%E8%A7%A6%E5%8F%AF%2Fjs%2FquickSave.js"/>
	<link rel="alternate" type="text/html" href="https://mcbbs.wiki/index.php?title=%E7%94%A8%E6%88%B7:%E5%9D%91%E8%A7%A6%E5%8F%AF/js/quickSave.js&amp;action=history"/>
	<updated>2026-05-11T17:24:00Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.40.3</generator>
	<entry>
		<id>https://mcbbs.wiki/index.php?title=%E7%94%A8%E6%88%B7:%E5%9D%91%E8%A7%A6%E5%8F%AF/js/quickSave.js&amp;diff=51109&amp;oldid=prev</id>
		<title>坑触可：​// Edit via Wikiplus</title>
		<link rel="alternate" type="text/html" href="https://mcbbs.wiki/index.php?title=%E7%94%A8%E6%88%B7:%E5%9D%91%E8%A7%A6%E5%8F%AF/js/quickSave.js&amp;diff=51109&amp;oldid=prev"/>
		<updated>2023-07-31T13:15:22Z</updated>

		<summary type="html">&lt;p&gt;// Edit via Wikiplus&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;// From MoegirlPedia. MediaWiki:Gadget-quickSave.js&lt;br /&gt;
&lt;br /&gt;
&amp;quot;use strict&amp;quot;;&lt;br /&gt;
var __extends = (this &amp;amp;&amp;amp; this.__extends) || (function () {&lt;br /&gt;
    var extendStatics = function (d, b) {&lt;br /&gt;
        extendStatics = Object.setPrototypeOf ||&lt;br /&gt;
            ({ __proto__: [] } instanceof Array &amp;amp;&amp;amp; function (d, b) { d.__proto__ = b; }) ||&lt;br /&gt;
            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };&lt;br /&gt;
        return extendStatics(d, b);&lt;br /&gt;
    };&lt;br /&gt;
    return function (d, b) {&lt;br /&gt;
        if (typeof b !== &amp;quot;function&amp;quot; &amp;amp;&amp;amp; b !== null)&lt;br /&gt;
            throw new TypeError(&amp;quot;Class extends value &amp;quot; + String(b) + &amp;quot; is not a constructor or null&amp;quot;);&lt;br /&gt;
        extendStatics(d, b);&lt;br /&gt;
        function __() { this.constructor = d; }&lt;br /&gt;
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());&lt;br /&gt;
    };&lt;br /&gt;
})();&lt;br /&gt;
var __assign = (this &amp;amp;&amp;amp; this.__assign) || function () {&lt;br /&gt;
    __assign = Object.assign || function(t) {&lt;br /&gt;
        for (var s, i = 1, n = arguments.length; i &amp;lt; n; i++) {&lt;br /&gt;
            s = arguments[i];&lt;br /&gt;
            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))&lt;br /&gt;
                t[p] = s[p];&lt;br /&gt;
        }&lt;br /&gt;
        return t;&lt;br /&gt;
    };&lt;br /&gt;
    return __assign.apply(this, arguments);&lt;br /&gt;
};&lt;br /&gt;
var __awaiter = (this &amp;amp;&amp;amp; this.__awaiter) || function (thisArg, _arguments, P, generator) {&lt;br /&gt;
    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }&lt;br /&gt;
    return new (P || (P = Promise))(function (resolve, reject) {&lt;br /&gt;
        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }&lt;br /&gt;
        function rejected(value) { try { step(generator[&amp;quot;throw&amp;quot;](value)); } catch (e) { reject(e); } }&lt;br /&gt;
        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }&lt;br /&gt;
        step((generator = generator.apply(thisArg, _arguments || [])).next());&lt;br /&gt;
    });&lt;br /&gt;
};&lt;br /&gt;
var __generator = (this &amp;amp;&amp;amp; this.__generator) || function (thisArg, body) {&lt;br /&gt;
    var _ = { label: 0, sent: function() { if (t[0] &amp;amp; 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;&lt;br /&gt;
    return g = { next: verb(0), &amp;quot;throw&amp;quot;: verb(1), &amp;quot;return&amp;quot;: verb(2) }, typeof Symbol === &amp;quot;function&amp;quot; &amp;amp;&amp;amp; (g[Symbol.iterator] = function() { return this; }), g;&lt;br /&gt;
    function verb(n) { return function (v) { return step([n, v]); }; }&lt;br /&gt;
    function step(op) {&lt;br /&gt;
        if (f) throw new TypeError(&amp;quot;Generator is already executing.&amp;quot;);&lt;br /&gt;
        while (g &amp;amp;&amp;amp; (g = 0, op[0] &amp;amp;&amp;amp; (_ = 0)), _) try {&lt;br /&gt;
            if (f = 1, y &amp;amp;&amp;amp; (t = op[0] &amp;amp; 2 ? y[&amp;quot;return&amp;quot;] : op[0] ? y[&amp;quot;throw&amp;quot;] || ((t = y[&amp;quot;return&amp;quot;]) &amp;amp;&amp;amp; t.call(y), 0) : y.next) &amp;amp;&amp;amp; !(t = t.call(y, op[1])).done) return t;&lt;br /&gt;
            if (y = 0, t) op = [op[0] &amp;amp; 2, t.value];&lt;br /&gt;
            switch (op[0]) {&lt;br /&gt;
                case 0: case 1: t = op; break;&lt;br /&gt;
                case 4: _.label++; return { value: op[1], done: false };&lt;br /&gt;
                case 5: _.label++; y = op[1]; op = [0]; continue;&lt;br /&gt;
                case 7: op = _.ops.pop(); _.trys.pop(); continue;&lt;br /&gt;
                default:&lt;br /&gt;
                    if (!(t = _.trys, t = t.length &amp;gt; 0 &amp;amp;&amp;amp; t[t.length - 1]) &amp;amp;&amp;amp; (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }&lt;br /&gt;
                    if (op[0] === 3 &amp;amp;&amp;amp; (!t || (op[1] &amp;gt; t[0] &amp;amp;&amp;amp; op[1] &amp;lt; t[3]))) { _.label = op[1]; break; }&lt;br /&gt;
                    if (op[0] === 6 &amp;amp;&amp;amp; _.label &amp;lt; t[1]) { _.label = t[1]; t = op; break; }&lt;br /&gt;
                    if (t &amp;amp;&amp;amp; _.label &amp;lt; t[2]) { _.label = t[2]; _.ops.push(op); break; }&lt;br /&gt;
                    if (t[2]) _.ops.pop();&lt;br /&gt;
                    _.trys.pop(); continue;&lt;br /&gt;
            }&lt;br /&gt;
            op = body.call(thisArg, _);&lt;br /&gt;
        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }&lt;br /&gt;
        if (op[0] &amp;amp; 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };&lt;br /&gt;
    }&lt;br /&gt;
};&lt;br /&gt;
var __read = (this &amp;amp;&amp;amp; this.__read) || function (o, n) {&lt;br /&gt;
    var m = typeof Symbol === &amp;quot;function&amp;quot; &amp;amp;&amp;amp; o[Symbol.iterator];&lt;br /&gt;
    if (!m) return o;&lt;br /&gt;
    var i = m.call(o), r, ar = [], e;&lt;br /&gt;
    try {&lt;br /&gt;
        while ((n === void 0 || n-- &amp;gt; 0) &amp;amp;&amp;amp; !(r = i.next()).done) ar.push(r.value);&lt;br /&gt;
    }&lt;br /&gt;
    catch (error) { e = { error: error }; }&lt;br /&gt;
    finally {&lt;br /&gt;
        try {&lt;br /&gt;
            if (r &amp;amp;&amp;amp; !r.done &amp;amp;&amp;amp; (m = i[&amp;quot;return&amp;quot;])) m.call(i);&lt;br /&gt;
        }&lt;br /&gt;
        finally { if (e) throw e.error; }&lt;br /&gt;
    }&lt;br /&gt;
    return ar;&lt;br /&gt;
};&lt;br /&gt;
var __spreadArray = (this &amp;amp;&amp;amp; this.__spreadArray) || function (to, from, pack) {&lt;br /&gt;
    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i &amp;lt; l; i++) {&lt;br /&gt;
        if (ar || !(i in from)) {&lt;br /&gt;
            if (!ar) ar = Array.prototype.slice.call(from, 0, i);&lt;br /&gt;
            ar[i] = from[i];&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    return to.concat(ar || Array.prototype.slice.call(from));&lt;br /&gt;
};&lt;br /&gt;
var __values = (this &amp;amp;&amp;amp; this.__values) || function(o) {&lt;br /&gt;
    var s = typeof Symbol === &amp;quot;function&amp;quot; &amp;amp;&amp;amp; Symbol.iterator, m = s &amp;amp;&amp;amp; o[s], i = 0;&lt;br /&gt;
    if (m) return m.call(o);&lt;br /&gt;
    if (o &amp;amp;&amp;amp; typeof o.length === &amp;quot;number&amp;quot;) return {&lt;br /&gt;
        next: function () {&lt;br /&gt;
            if (o &amp;amp;&amp;amp; i &amp;gt;= o.length) o = void 0;&lt;br /&gt;
            return { value: o &amp;amp;&amp;amp; o[i++], done: !o };&lt;br /&gt;
        }&lt;br /&gt;
    };&lt;br /&gt;
    throw new TypeError(s ? &amp;quot;Object is not iterable.&amp;quot; : &amp;quot;Symbol.iterator is not defined.&amp;quot;);&lt;br /&gt;
};&lt;br /&gt;
$(function () {&lt;br /&gt;
    var e_1, _a;&lt;br /&gt;
    var wgUserGroups = mw.config.get(&amp;quot;wgUserGroups&amp;quot;);&lt;br /&gt;
    if (!/^讨论:讨论板\/[^存]+$/.test(mw.config.get(&amp;quot;wgPageName&amp;quot;))) {&lt;br /&gt;
        return;&lt;br /&gt;
    }&lt;br /&gt;
    if (!wgUserGroups.includes(&amp;quot;sysop&amp;quot;) &amp;amp;&amp;amp; !wgUserGroups.includes(&amp;quot;patroller&amp;quot;)) {&lt;br /&gt;
        return;&lt;br /&gt;
    }&lt;br /&gt;
    var $body = $(&amp;quot;body&amp;quot;);&lt;br /&gt;
    $(&amp;quot;#mw-notification-area&amp;quot;).appendTo($body);&lt;br /&gt;
    var api = new mw.Api();&lt;br /&gt;
    var Log = (function () {&lt;br /&gt;
        function Log() {&lt;br /&gt;
            this.$element = $(&amp;quot;&amp;lt;li&amp;gt;&amp;quot;);&lt;br /&gt;
            this.$content = $(&amp;quot;&amp;lt;div&amp;gt;&amp;quot;).addClass(&amp;quot;AnnTools_log&amp;quot;).appendTo(this.$element);&lt;br /&gt;
            this.$message = $(&amp;quot;&amp;lt;div&amp;gt;&amp;quot;).addClass(&amp;quot;AnnTools_log_message&amp;quot;).appendTo(this.$content);&lt;br /&gt;
            this.$status = $(&amp;quot;&amp;lt;div&amp;gt;&amp;quot;).addClass(&amp;quot;AnnTools_log_status&amp;quot;).appendTo(this.$content);&lt;br /&gt;
        }&lt;br /&gt;
        Log.prototype.appendMessage = function (str) {&lt;br /&gt;
            this.$message.append($(&amp;quot;&amp;lt;span&amp;gt;&amp;quot;).text(str));&lt;br /&gt;
        };&lt;br /&gt;
        Log.prototype.setStatus = function (status) {&lt;br /&gt;
            if (!status) {&lt;br /&gt;
                this.$content.removeClass(&amp;quot;AnnTools_log-success AnnTools_log-failed&amp;quot;);&lt;br /&gt;
                this.$status.empty();&lt;br /&gt;
            }&lt;br /&gt;
            else if (status === &amp;quot;success&amp;quot;) {&lt;br /&gt;
                this.$content.removeClass(&amp;quot;AnnTools_log-failed&amp;quot;);&lt;br /&gt;
                this.$content.addClass(&amp;quot;AnnTools_log-success&amp;quot;);&lt;br /&gt;
                this.$status.text(Log.statusTexts.SUCCESS);&lt;br /&gt;
            }&lt;br /&gt;
            else if (status === &amp;quot;failed&amp;quot;) {&lt;br /&gt;
                this.$content.removeClass(&amp;quot;AnnTools_log-success&amp;quot;);&lt;br /&gt;
                this.$content.addClass(&amp;quot;AnnTools_log-failed&amp;quot;);&lt;br /&gt;
                this.$status.text(Log.statusTexts.FAILED);&lt;br /&gt;
            }&lt;br /&gt;
        };&lt;br /&gt;
        Log.statusTexts = {&lt;br /&gt;
            SUCCESS: &amp;quot;成功&amp;quot;,&lt;br /&gt;
            FAILED: &amp;quot;失败&amp;quot;&lt;br /&gt;
        };&lt;br /&gt;
        return Log;&lt;br /&gt;
    }());&lt;br /&gt;
    var Progress = (function () {&lt;br /&gt;
        function Progress(steps, dialog) {&lt;br /&gt;
            this.progressBarWidget = new OO.ui.ProgressBarWidget({&lt;br /&gt;
                progress: 0&lt;br /&gt;
            });&lt;br /&gt;
            this.progressLogWidget = new OO.ui.Widget();&lt;br /&gt;
            this.$progressLogList = $(&amp;quot;&amp;lt;ol&amp;gt;&amp;quot;);&lt;br /&gt;
            this.currentStep = 0;&lt;br /&gt;
            this.steps = steps;&lt;br /&gt;
            this.dialog = dialog;&lt;br /&gt;
            this.progressLogWidget.$element.append(this.$progressLogList);&lt;br /&gt;
            this.generateNewLogLine();&lt;br /&gt;
        }&lt;br /&gt;
        Progress.prototype.cleanUp = function () {&lt;br /&gt;
            this.currentStep = 0;&lt;br /&gt;
            this.progressBarWidget.setProgress(0);&lt;br /&gt;
            this.$progressLogList.empty();&lt;br /&gt;
            this.generateNewLogLine();&lt;br /&gt;
        };&lt;br /&gt;
        Progress.prototype.generateNewLogLine = function () {&lt;br /&gt;
            this.logLine = new Log();&lt;br /&gt;
            this.$progressLogList.append(this.logLine.$element);&lt;br /&gt;
        };&lt;br /&gt;
        Progress.prototype.log = function (message) {&lt;br /&gt;
            this.logLine.appendMessage(message);&lt;br /&gt;
        };&lt;br /&gt;
        Progress.prototype.error = function (message) {&lt;br /&gt;
            this.logLine.appendMessage(message);&lt;br /&gt;
            this.logLine.setStatus(&amp;quot;failed&amp;quot;);&lt;br /&gt;
        };&lt;br /&gt;
        Progress.prototype.nextStep = function (newLogLine) {&lt;br /&gt;
            if (newLogLine === void 0) { newLogLine = true; }&lt;br /&gt;
            this.logLine.setStatus(&amp;quot;success&amp;quot;);&lt;br /&gt;
            this.currentStep++;&lt;br /&gt;
            this.progressBarWidget.setProgress(100 * this.currentStep / this.steps);&lt;br /&gt;
            if (newLogLine) {&lt;br /&gt;
                this.generateNewLogLine();&lt;br /&gt;
                this.dialog.delayUpdateSize();&lt;br /&gt;
            }&lt;br /&gt;
        };&lt;br /&gt;
        Progress.prototype.finish = function () {&lt;br /&gt;
            this.currentStep = this.steps - 1;&lt;br /&gt;
            this.nextStep(false);&lt;br /&gt;
        };&lt;br /&gt;
        return Progress;&lt;br /&gt;
    }());&lt;br /&gt;
    var QSWindow = (function (_super) {&lt;br /&gt;
        __extends(QSWindow, _super);&lt;br /&gt;
        function QSWindow(config) {&lt;br /&gt;
            var _this = _super.call(this, config) || this;&lt;br /&gt;
            _this.template = &amp;quot;../&amp;quot;;&lt;br /&gt;
            _this.date = new Date();&lt;br /&gt;
            _this.savePageTitle = &amp;quot;&amp;quot;.concat(mw.config.get(&amp;quot;wgPageName&amp;quot;), &amp;quot;/\u5B58\u6863/&amp;quot;).concat(_this.date.getFullYear(), &amp;quot;\u5E74&amp;quot;).concat(_this.date.getMonth() &amp;lt; 9 ? &amp;quot;0&amp;quot;.concat(_this.date.getMonth() + 1) : _this.date.getMonth() + 1, &amp;quot;\u6708&amp;quot;);&lt;br /&gt;
            _this.panelLayout = new OO.ui.PanelLayout({&lt;br /&gt;
                scrollable: false,&lt;br /&gt;
                expanded: false,&lt;br /&gt;
                padded: true&lt;br /&gt;
            });&lt;br /&gt;
            _this.sectionTitleWidget = new OO.ui.Widget({&lt;br /&gt;
                classes: [&amp;quot;AnnTools_paragraphs&amp;quot;]&lt;br /&gt;
            });&lt;br /&gt;
            _this.progress = new Progress(6, _this);&lt;br /&gt;
            _this.progressBarFieldLayout = new OO.ui.FieldLayout(_this.progress.progressBarWidget, {&lt;br /&gt;
                label: QSWindow.bolbLabel(&amp;quot;执行进度&amp;quot;),&lt;br /&gt;
                align: &amp;quot;top&amp;quot;&lt;br /&gt;
            });&lt;br /&gt;
            _this.progressLogFieldLayout = new OO.ui.FieldLayout(_this.progress.progressLogWidget, {&lt;br /&gt;
                align: &amp;quot;top&amp;quot;&lt;br /&gt;
            });&lt;br /&gt;
            _this.hideProgress();&lt;br /&gt;
            return _this;&lt;br /&gt;
        }&lt;br /&gt;
        Object.defineProperty(QSWindow.prototype, &amp;quot;sectionTitle&amp;quot;, {&lt;br /&gt;
            get: function () {&lt;br /&gt;
                return this.sectionTitleWidget.getData();&lt;br /&gt;
            },&lt;br /&gt;
            enumerable: false,&lt;br /&gt;
            configurable: true&lt;br /&gt;
        });&lt;br /&gt;
        QSWindow.prototype.initialize = function () {&lt;br /&gt;
            var _a;&lt;br /&gt;
            _super.prototype.initialize.call(this);&lt;br /&gt;
            (_a = this.panelLayout.$element).append.apply(_a, __spreadArray([], __read([&lt;br /&gt;
                [this.sectionTitleWidget, &amp;quot;段落标题：&amp;quot;],&lt;br /&gt;
            ].map(function (_a) {&lt;br /&gt;
                var _b = __read(_a, 2), fieldWidget = _b[0], labelText = _b[1];&lt;br /&gt;
                return new OO.ui.FieldLayout(fieldWidget, {&lt;br /&gt;
                    label: QSWindow.bolbLabel(labelText),&lt;br /&gt;
                    align: &amp;quot;top&amp;quot;&lt;br /&gt;
                }).$element;&lt;br /&gt;
            })), false));&lt;br /&gt;
            this.panelLayout.$element.append(this.progressBarFieldLayout.$element, this.progressLogFieldLayout.$element);&lt;br /&gt;
            this.$body.append(this.panelLayout.$element);&lt;br /&gt;
        };&lt;br /&gt;
        QSWindow.prototype.getBodyHeight = function () {&lt;br /&gt;
            return this.panelLayout.$element.outerHeight(true);&lt;br /&gt;
        };&lt;br /&gt;
        QSWindow.prototype.getActionProcess = function (action) {&lt;br /&gt;
            var _this = this;&lt;br /&gt;
            if (action === &amp;quot;cancel&amp;quot;) {&lt;br /&gt;
                return new OO.ui.Process(function () { return _this.close({ action: action }).closed.promise(); }).next(function () {&lt;br /&gt;
                    _this.hideProgress();&lt;br /&gt;
                });&lt;br /&gt;
            }&lt;br /&gt;
            if (action === &amp;quot;submit&amp;quot;) {&lt;br /&gt;
                return new OO.ui.Process($.when((function () { return __awaiter(_this, void 0, void 0, function () {&lt;br /&gt;
                    var toclist, _a, _b, section, e_2;&lt;br /&gt;
                    return __generator(this, function (_c) {&lt;br /&gt;
                        switch (_c.label) {&lt;br /&gt;
                            case 0:&lt;br /&gt;
                                this.showProgress();&lt;br /&gt;
                                this.progress.log(&amp;quot;开始检测段落标题……&amp;quot;);&lt;br /&gt;
                                _b = (_a = Object).fromEntries;&lt;br /&gt;
                                return [4, api.post({&lt;br /&gt;
                                        action: &amp;quot;parse&amp;quot;,&lt;br /&gt;
                                        format: &amp;quot;json&amp;quot;,&lt;br /&gt;
                                        pageid: mw.config.get(&amp;quot;wgArticleId&amp;quot;),&lt;br /&gt;
                                        prop: &amp;quot;sections&amp;quot;&lt;br /&gt;
                                    })];&lt;br /&gt;
                            case 1:&lt;br /&gt;
                                toclist = _b.apply(_a, [(_c.sent()).parse.sections.map(function (_a) {&lt;br /&gt;
                                        var anchor = _a.anchor, index = _a.index;&lt;br /&gt;
                                        return [anchor, index];&lt;br /&gt;
                                    })]);&lt;br /&gt;
                                if (!Reflect.has(toclist, this.sectionTitle)) {&lt;br /&gt;
                                    throw new OO.ui.Error(&amp;quot;小工具无法根据段落标题找到该段落，请移除该段落标题内的模板后再行操作……&amp;quot;, {&lt;br /&gt;
                                        recoverable: false&lt;br /&gt;
                                    });&lt;br /&gt;
                                }&lt;br /&gt;
                                section = toclist[this.sectionTitle];&lt;br /&gt;
                                _c.label = 2;&lt;br /&gt;
                            case 2:&lt;br /&gt;
                                _c.trys.push([2, 4, , 5]);&lt;br /&gt;
                                return [4, this.quickSave({ section: section })];&lt;br /&gt;
                            case 3:&lt;br /&gt;
                                _c.sent();&lt;br /&gt;
                                mw.notify(&amp;quot;即将刷新……&amp;quot;, {&lt;br /&gt;
                                    title: &amp;quot;存档成功&amp;quot;,&lt;br /&gt;
                                    type: &amp;quot;success&amp;quot;,&lt;br /&gt;
                                    tag: &amp;quot;AnnTools_QuickSave&amp;quot;&lt;br /&gt;
                                });&lt;br /&gt;
                                setTimeout(function () { return location.reload(); }, 730);&lt;br /&gt;
                                return [3, 5];&lt;br /&gt;
                            case 4:&lt;br /&gt;
                                e_2 = _c.sent();&lt;br /&gt;
                                console.error(&amp;quot;[QuickSave] Error:&amp;quot;, e_2);&lt;br /&gt;
                                throw new OO.ui.Error(e_2);&lt;br /&gt;
                            case 5: return [2];&lt;br /&gt;
                        }&lt;br /&gt;
                    });&lt;br /&gt;
                }); })()).promise(), this);&lt;br /&gt;
            }&lt;br /&gt;
            return _super.prototype.getActionProcess.call(this, action);&lt;br /&gt;
        };&lt;br /&gt;
        QSWindow.prototype.quickSave = function (_a) {&lt;br /&gt;
            var section = _a.section;&lt;br /&gt;
            return __awaiter(this, void 0, void 0, function () {&lt;br /&gt;
                var sectionContent, sectionTitleRaw, sectionTitleSafe, listResult;&lt;br /&gt;
                return __generator(this, function (_b) {&lt;br /&gt;
                    switch (_b.label) {&lt;br /&gt;
                        case 0:&lt;br /&gt;
                            this.progress.log(&amp;quot;标题存在！&amp;quot;);&lt;br /&gt;
                            this.progress.nextStep();&lt;br /&gt;
                            this.progress.log(&amp;quot;正在获取段落内容……&amp;quot;);&lt;br /&gt;
                            return [4, $.ajax({&lt;br /&gt;
                                    url: &amp;quot;&amp;quot;.concat(mw.config.get(&amp;quot;wgServer&amp;quot;)).concat(mw.config.get(&amp;quot;wgScriptPath&amp;quot;), &amp;quot;/index.php&amp;quot;),&lt;br /&gt;
                                    data: {&lt;br /&gt;
                                        title: mw.config.get(&amp;quot;wgPageName&amp;quot;),&lt;br /&gt;
                                        action: &amp;quot;raw&amp;quot;,&lt;br /&gt;
                                        section: section&lt;br /&gt;
                                    }&lt;br /&gt;
                                })];&lt;br /&gt;
                        case 1:&lt;br /&gt;
                            sectionContent = _b.sent();&lt;br /&gt;
                            sectionTitleRaw = sectionContent.match(/==(.*)==/);&lt;br /&gt;
                            if (sectionTitleRaw &amp;amp;&amp;amp; sectionTitleRaw[1]) {&lt;br /&gt;
                                sectionTitleRaw = sectionTitleRaw[1];&lt;br /&gt;
                            }&lt;br /&gt;
                            else {&lt;br /&gt;
                                sectionTitleRaw = this.sectionTitle;&lt;br /&gt;
                            }&lt;br /&gt;
                            this.progress.nextStep();&lt;br /&gt;
                            this.progress.log(&amp;quot;正在存档该段落内容……&amp;quot;);&lt;br /&gt;
                            return [4, api.postWithToken(&amp;quot;csrf&amp;quot;, {&lt;br /&gt;
                                    action: &amp;quot;edit&amp;quot;,&lt;br /&gt;
                                    format: &amp;quot;json&amp;quot;,&lt;br /&gt;
                                    title: this.savePageTitle,&lt;br /&gt;
                                    text: sectionContent.replace(&amp;quot;==&amp;quot;.concat(sectionTitleRaw, &amp;quot;==&amp;quot;), &amp;quot;&amp;quot;).trim(),&lt;br /&gt;
                                    section: &amp;quot;new&amp;quot;,&lt;br /&gt;
//                                    tags: &amp;quot;快速存档讨论串|Automation tool&amp;quot;,&lt;br /&gt;
                                    sectiontitle: sectionTitleRaw,&lt;br /&gt;
                                    summary: &amp;quot;\u5FEB\u901F\u5B58\u6863\u8BA8\u8BBA\u4E32\uFF1A/* &amp;quot;.concat(this.sectionTitle, &amp;quot; */&amp;quot;)&lt;br /&gt;
                                })];&lt;br /&gt;
                        case 2:&lt;br /&gt;
                            _b.sent();&lt;br /&gt;
                            this.progress.nextStep();&lt;br /&gt;
                            this.progress.log(&amp;quot;正在标记该段落为已存档……&amp;quot;);&lt;br /&gt;
                            sectionTitleSafe = this.sectionTitle;&lt;br /&gt;
                            if (/_\d+$/.test(this.sectionTitle) &amp;amp;&amp;amp; document.getElementById(this.sectionTitle.replace(/_\d+$/, &amp;quot;&amp;quot;))) {&lt;br /&gt;
                                sectionTitleSafe = sectionTitleSafe.replace(/_\d+$/, &amp;quot;&amp;quot;);&lt;br /&gt;
                            }&lt;br /&gt;
                            return [4, api.postWithToken(&amp;quot;csrf&amp;quot;, {&lt;br /&gt;
                                    action: &amp;quot;edit&amp;quot;,&lt;br /&gt;
                                    format: &amp;quot;json&amp;quot;,&lt;br /&gt;
                                    title: mw.config.get(&amp;quot;wgPageName&amp;quot;),&lt;br /&gt;
                                    summary: &amp;quot;\u5FEB\u901F\u5B58\u6863\u8BA8\u8BBA\u4E32\uFF1A/* &amp;quot;.concat(this.sectionTitle, &amp;quot; */&amp;quot;),&lt;br /&gt;
                                    text: &amp;quot;==&amp;quot;.concat(sectionTitleRaw, &amp;quot;==\n{{Saved|link=&amp;quot;).concat(this.savePageTitle, &amp;quot;|title=&amp;quot;).concat(sectionTitleSafe.replace(/\|/g, &amp;quot;{{!}}&amp;quot;), &amp;quot;}}&amp;quot;),&lt;br /&gt;
                                    section: section,&lt;br /&gt;
//                                    tags: &amp;quot;快速存档讨论串|Automation tool&amp;quot;&lt;br /&gt;
                                })];&lt;br /&gt;
                        case 3:&lt;br /&gt;
                            _b.sent();&lt;br /&gt;
                            this.progress.nextStep();&lt;br /&gt;
                            this.progress.log(&amp;quot;正在检查存档页面是否带有档案馆模板……&amp;quot;);&lt;br /&gt;
                            return [4, api.post({&lt;br /&gt;
                                    action: &amp;quot;query&amp;quot;,&lt;br /&gt;
                                    format: &amp;quot;json&amp;quot;,&lt;br /&gt;
                                    prop: &amp;quot;templates&amp;quot;,&lt;br /&gt;
                                    titles: this.savePageTitle,&lt;br /&gt;
                                    tltemplates: &amp;quot;../&amp;quot;&lt;br /&gt;
                                })];&lt;br /&gt;
                        case 4:&lt;br /&gt;
                            listResult = _b.sent();&lt;br /&gt;
                            if (Array.isArray(Object.values(listResult.query.pages)[0].templates) &amp;amp;&amp;amp; Object.values(listResult.query.pages)[0].templates.length &amp;gt; 0) {&lt;br /&gt;
                                this.progress.log(&amp;quot;模板存在！&amp;quot;);&lt;br /&gt;
                                this.progress.finish();&lt;br /&gt;
                                return [2];&lt;br /&gt;
                            }&lt;br /&gt;
                            this.progress.nextStep();&lt;br /&gt;
                            this.progress.log(&amp;quot;正在向存档页添加档案馆模板……&amp;quot;);&lt;br /&gt;
                            return [4, api.postWithToken(&amp;quot;csrf&amp;quot;, {&lt;br /&gt;
                                    action: &amp;quot;edit&amp;quot;,&lt;br /&gt;
                                    format: &amp;quot;json&amp;quot;,&lt;br /&gt;
                                    title: this.savePageTitle,&lt;br /&gt;
                                    prependtext: &amp;quot;{{&amp;quot;.concat(this.template, &amp;quot;}}\n&amp;quot;),&lt;br /&gt;
//                                    tags: &amp;quot;快速存档讨论串|Automation tool&amp;quot;,&lt;br /&gt;
                                    summary: &amp;quot;添加档案馆模板&amp;quot;&lt;br /&gt;
                                })];&lt;br /&gt;
                        case 5:&lt;br /&gt;
                            _b.sent();&lt;br /&gt;
                            this.progress.finish();&lt;br /&gt;
                            return [2];&lt;br /&gt;
                    }&lt;br /&gt;
                });&lt;br /&gt;
            });&lt;br /&gt;
        };&lt;br /&gt;
        QSWindow.prototype.setSectionTitle = function (sectionTitle) {&lt;br /&gt;
            this.sectionTitleWidget.setData(sectionTitle);&lt;br /&gt;
            this.sectionTitleWidget.$element.text(sectionTitle);&lt;br /&gt;
        };&lt;br /&gt;
        QSWindow.prototype.hideProgress = function () {&lt;br /&gt;
            this.progressBarFieldLayout.$element.hide();&lt;br /&gt;
            this.progressLogFieldLayout.$element.hide();&lt;br /&gt;
            this.progress.cleanUp();&lt;br /&gt;
        };&lt;br /&gt;
        QSWindow.prototype.showProgress = function () {&lt;br /&gt;
            this.progressBarFieldLayout.$element.show();&lt;br /&gt;
            this.progressLogFieldLayout.$element.show();&lt;br /&gt;
            this.delayUpdateSize();&lt;br /&gt;
        };&lt;br /&gt;
        QSWindow.prototype.delayUpdateSize = function () {&lt;br /&gt;
            var _this = this;&lt;br /&gt;
            this.updateSize();&lt;br /&gt;
            setTimeout(function () {&lt;br /&gt;
                _this.updateSize();&lt;br /&gt;
            }, 500);&lt;br /&gt;
        };&lt;br /&gt;
        QSWindow.static = __assign(__assign({}, _super.static), { tagName: &amp;quot;div&amp;quot;, name: &amp;quot;AnnTools_QuickSave&amp;quot;, title: &amp;quot;公共讨论页段落存档工具&amp;quot;, actions: [&lt;br /&gt;
                {&lt;br /&gt;
                    action: &amp;quot;cancel&amp;quot;,&lt;br /&gt;
                    label: &amp;quot;取消&amp;quot;,&lt;br /&gt;
                    flags: [&amp;quot;safe&amp;quot;, &amp;quot;close&amp;quot;, &amp;quot;destructive&amp;quot;]&lt;br /&gt;
                },&lt;br /&gt;
                {&lt;br /&gt;
                    action: &amp;quot;submit&amp;quot;,&lt;br /&gt;
                    label: &amp;quot;确认&amp;quot;,&lt;br /&gt;
                    flags: [&amp;quot;primary&amp;quot;, &amp;quot;progressive&amp;quot;]&lt;br /&gt;
                },&lt;br /&gt;
            ] });&lt;br /&gt;
        QSWindow.bolbLabel = function (text) { return $(&amp;quot;&amp;lt;span&amp;gt;&amp;quot;).addClass(&amp;quot;AnnTools_bolb&amp;quot;).text(text); };&lt;br /&gt;
        return QSWindow;&lt;br /&gt;
    }(OO.ui.ProcessDialog));&lt;br /&gt;
    var windowManager = new OO.ui.WindowManager();&lt;br /&gt;
    $body.append(windowManager.$element);&lt;br /&gt;
    var qsDialog = new QSWindow();&lt;br /&gt;
    windowManager.addWindows([qsDialog]);&lt;br /&gt;
    var _loop_1 = function (ele) {&lt;br /&gt;
        var self_1 = $(ele);&lt;br /&gt;
        var content = self_1.nextUntil(&amp;quot;h2&amp;quot;).not(&amp;quot;h2&amp;quot;);&lt;br /&gt;
        if (content.hasClass(&amp;quot;saveNotice&amp;quot;)) {&lt;br /&gt;
            return &amp;quot;continue&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
        var sectionTitle = self_1.find(&amp;quot;.mw-headline&amp;quot;).attr(&amp;quot;id&amp;quot;);&lt;br /&gt;
        var button = $(&amp;quot;&amp;lt;a&amp;gt;&amp;quot;);&lt;br /&gt;
        button.attr(&amp;quot;href&amp;quot;, &amp;quot;javascript:void(0);&amp;quot;).prop(&amp;quot;draggable&amp;quot;, false).addClass(&amp;quot;AnnTools_QuickSave&amp;quot;).text(&amp;quot;快速存档&amp;quot;);&lt;br /&gt;
        self_1.find(&amp;quot;.mw-editsection-bracket&amp;quot;).first()&lt;br /&gt;
            .after(&amp;#039;&amp;lt;span class=&amp;quot;mw-editsection-divider&amp;quot;&amp;gt; | &amp;lt;/span&amp;gt;&amp;#039;)&lt;br /&gt;
            .after(button);&lt;br /&gt;
        button.on(&amp;quot;click&amp;quot;, function () {&lt;br /&gt;
            if (!qsDialog.isVisible()) {&lt;br /&gt;
                qsDialog.setSectionTitle(sectionTitle);&lt;br /&gt;
                windowManager.openWindow(qsDialog);&lt;br /&gt;
            }&lt;br /&gt;
            return false;&lt;br /&gt;
        });&lt;br /&gt;
        var quicksave = self_1.find(&amp;quot;.AnnTools_QuickSave&amp;quot;);&lt;br /&gt;
        if (self_1.find(&amp;quot;.AnnTools_MarkAsResolved&amp;quot;)[0]) {&lt;br /&gt;
            var divider = quicksave.next(&amp;quot;.mw-editsection-divider&amp;quot;);&lt;br /&gt;
            if (divider.length &amp;gt; 0) {&lt;br /&gt;
                self_1.find(&amp;quot;.mw-editsection .mw-editsection-bracket&amp;quot;).first().after(divider).after(quicksave);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    };&lt;br /&gt;
    try {&lt;br /&gt;
        for (var _b = __values($(&amp;quot;#mw-content-text &amp;gt; .mw-parser-output &amp;gt; h2, #mw-content-text &amp;gt; .mw-parser-output &amp;gt; .discussionContainer &amp;gt; h2&amp;quot;)), _c = _b.next(); !_c.done; _c = _b.next()) {&lt;br /&gt;
            var ele = _c.value;&lt;br /&gt;
            _loop_1(ele);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    catch (e_1_1) { e_1 = { error: e_1_1 }; }&lt;br /&gt;
    finally {&lt;br /&gt;
        try {&lt;br /&gt;
            if (_c &amp;amp;&amp;amp; !_c.done &amp;amp;&amp;amp; (_a = _b[&amp;quot;return&amp;quot;])) _a.call(_b);&lt;br /&gt;
        }&lt;br /&gt;
        finally { if (e_1) throw e_1.error; }&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
/* &amp;lt;/pre&amp;gt; */&lt;/div&gt;</summary>
		<author><name>坑触可</name></author>
	</entry>
</feed>