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

“User:Bhsd/edit.js”的版本间差异

来自LLWiki
跳转到导航 跳转到搜索
第3行: 第3行:
/*
/*
引自[[moegirl:user:東東君/js/contentBackup.js]]
引自[[moegirl:user:東東君/js/contentBackup.js]]

这是一个保存编辑内容的小插件,载入后将在“显示更改”按钮后生成一个“还原备份”按钮。
这是一个保存编辑内容的小插件,载入后将在“显示更改”按钮后生成一个“还原备份”按钮。
这个插件将在点击“提交编辑、显示预览、显示更改”中任意一个按钮时备份当前的编辑。当存在备份时,“还原备份”按钮变为可以点击。
这个插件将在点击“提交编辑、显示预览、显示更改”中任意一个按钮时备份当前的编辑。当存在备份时,“还原备份”按钮变为可以点击。
第9行: 第8行:
*/
*/
if( !["edit", "submit"].includes(mw.config.get('wgAction')) ) { return; }
if( !["edit", "submit"].includes(mw.config.get('wgAction')) ) { return; }

var editBox = $('#wpTextbox1'),
var editBox = $('#wpTextbox1'),
btns = $('#wpSaveWidget, #wpPreviewWidget, #wpDiffWidget'),
btns = $('#wpSaveWidget, #wpPreviewWidget, #wpDiffWidget'),
title = mw.config.get('wgPageName'),
title = mw.config.get('wgPageName'),
backupList = JSON.parse(localStorage.getItem('LLWiki-editBackup') || '{}');
backupList = JSON.parse(localStorage.getItem('LLWiki-editBackup') || '{}');
$.each(backupList, function(key, val) {
$.each(backupList, function(key, val) {
var time = new Date().getTime();
var time = new Date().getTime();
第21行: 第18行:
}
}
});
});

var backup = backupList[title],
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>');
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>');
第35行: 第31行:
}
}
$('#wpDiffWidget').after(btn);
$('#wpDiffWidget').after(btn);

btns.mousedown(function(e) {
btns.mousedown(function(e) {
var content = editBox.val(),
var content = editBox.val(),
第46行: 第41行:
});
});


/* 普通编辑界面按tab键空4格 */
/* JavaScript编辑界面按tab键空4格 */
editBox.keydown(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;
}
});
if(title.endsWith('.js')) {
if(title.endsWith('.js')) {
editBox.keydown(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;
}
});
editBox.val(editBox.val().replace(/\t/g, " "));
editBox.val(editBox.val().replace(/\t/g, " "));
}
}

2020年9月7日 (一) 07:47的版本

(function($, mw) {
    $(function() {
        /*
        引自[[moegirl:user:東東君/js/contentBackup.js]]
        这是一个保存编辑内容的小插件,载入后将在“显示更改”按钮后生成一个“还原备份”按钮。    
        这个插件将在点击“提交编辑、显示预览、显示更改”中任意一个按钮时备份当前的编辑。当存在备份时,“还原备份”按钮变为可以点击。
        备份会保存7天,7天后自动清除。
        */
        if( !["edit", "submit"].includes(mw.config.get('wgAction')) ) { return; }
        var editBox = $('#wpTextbox1'),
            btns = $('#wpSaveWidget, #wpPreviewWidget, #wpDiffWidget'),
            title = mw.config.get('wgPageName'),
            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));
        });

        /* JavaScript编辑界面按tab键空4格 */
        if(title.endsWith('.js')) {
            editBox.keydown(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;
                }
            });
            editBox.val(editBox.val().replace(/\t/g, "    "));
        }

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