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

User:Bhsd/edit.js

来自LLWiki
< User:Bhsd
Bhsd讨论 | 贡献2020年9月8日 (二) 07:06的版本
跳转到导航 跳转到搜索

注意:在保存之后,您可能需要清除浏览器缓存才能看到所作出的变更的影响。

  • Firefox或Safari:按住Shift的同时单击刷新,或按Ctrl-F5Ctrl-R(Mac为⌘-R
  • Google Chrome:Ctrl-Shift-R(Mac为⌘-Shift-R
  • Internet Explorer:按住Ctrl的同时单击刷新,或按Ctrl-F5
  • Opera:前往菜单 → 设置(Mac为Opera → Preferences),然后隐私和安全 → 清除浏览数据 → 缓存的图片和文件
(function($, mw) {
    $(function() {
        /* JavaScript编辑界面按tab键空4格 */
        var editBox = $('#wpTextbox1'),
            title = mw.config.get('wgPageName');
        if(mw.config.get('wgPageContentModel') == 'javascript') {
            $('body').on('keydown', '#wpTextbox1, #Wikiplus-Quickedit', function(e){
                if(e.keyCode == 9){
                    e.preventDefault();
                    var position = this.selectionStart,
                        left = this.value.substring(0, position),
                        right = this.value.substring(position),
                        code = left + '    ' + right;
                    this.value = code;
                    this.selectionStart = this.selectionEnd = position + 4;
                }
            });
        }

        /*
        引自[[moegirl:user:東東君/js/contentBackup.js]]
        这是一个保存编辑内容的小插件,载入后将在“显示更改”按钮后生成一个“还原备份”按钮。    
        这个插件将在点击“提交编辑、显示预览、显示更改”中任意一个按钮时备份当前的编辑。当存在备份时,“还原备份”按钮变为可以点击。
        备份会保存7天,7天后自动清除。
        */
        if( !["edit", "submit"].includes(mw.config.get('wgAction')) ) { return; }
        var btns = $('#wpSaveWidget, #wpPreviewWidget, #wpDiffWidget'),
            backupList = JSON.parse(localStorage.getItem('LLWiki-editBackup') || '{}');  
        $.each(backupList, function(key, val) {
            var time = new Date().getTime();
            if(val.expire < time){
                delete backupList[key];
            }
        });
        var backup = backupList[title],
            btn = $('<span class="oo-ui-widget oo-ui-inputWidget oo-ui-buttonElement oo-ui-buttonElement-framed oo-ui-labelElement oo-ui-buttonInputWidget"><input type="button" value="还原备份" class="oo-ui-inputWidget-input oo-ui-buttonElement-button" /></span>');
        if(backup) {
            btn.addClass('oo-ui-widget-enabled')
                .click(function() {
                    editBox.val(backup.content);
                    mw.notify('已还原备份!', { type: 'warn' });
                });
        }
        else {
            btn.addClass('oo-ui-widget-disabled');
        }
        $('#wpDiffWidget').after(btn);
        btns.mousedown(function(e) {
            var content = editBox.val(),
                expire = new Date().getTime() + 1000 * 60 * 60 * 24 * 7;
            backupList[title] = {
                expire : expire,
                content : content
            };
            localStorage.setItem('LLWiki-editBackup', JSON.stringify(backupList));
        });

        // 由于以下代码的奇怪性质,本页面不应频繁修改,至少不能使用移动版皮肤修改
        btns.on('click', function() {
            if(mw.config.get('wgPageContentModel') == 'javascript') { editBox.val(editBox.val().replace(/\t/g, "    ")); }
            if(mw.config.get('skin') == 'vector') { return; }
            editBox.val(editBox.val().replace(/(‘|’)/g,"'"));
            editBox.val(editBox.val().replace(/(“|”)/g,'"'));
        });
    });
})(jQuery, mediaWiki);