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

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

来自LLWiki
跳转到导航 跳转到搜索
标签移动版网页编辑 移动版编辑
第1行: 第1行:
// 由[[Special:Mypage/common.js]]调用,可以使用ES6语法
// 由[[Special:Mypage/common.js]]调用,可以使用ES6语法
"use strict";
"use strict";
$(function() {
(function() {
const editBox = $('#wpTextbox1'),
const action = mw.config.get('wgAction'),
btns = $('#wpSaveWidget, #wpPreviewWidget, #wpDiffWidget, #wpTemplateSandboxPreview'),
action = mw.config.get('wgAction'),
contentmodel = mw.config.get( 'wgPageContentModel' ),
contentmodel = mw.config.get( 'wgPageContentModel' ),
skin = mw.config.get('skin'),
skin = mw.config.get('skin');
ns = mw.config.get( 'wgNamespaceNumber' );


// 修改WikiEditor的替换文本框
// 修改WikiEditor的替换文本框
第17行: 第14行:
e.stopPropagation();
e.stopPropagation();
const text = ele.val(),
const text = ele.val(),
before = text.substring(0, ele.prop( 'selectionStart' )),
left = text.slice(0, ele.prop( 'selectionStart' )),
after = text.substring(ele.prop( 'selectionEnd' ));
right = text.slice(ele.prop( 'selectionEnd' ));
ele.val(before + '\n' + after);
ele.val(left + '\n' + right);
}
}
});
});
第41行: 第38行:
let backup = "";
let backup = "";
const textarea = $('#Wikiplus-Quickedit');
const textarea = $('#Wikiplus-Quickedit');
dialog = $(`<div class="quickEdit-replace">
dialog = $('<div class="quickEdit-replace"><label>查找:<input type="text" id="quickEdit-replace-pattern"></label><label>替换:<textarea id="quickEdit-replace-val"></textarea></label><label id="quickEdit-replace-regex"><input type="checkbox">正则</label><button id="quickEdit-replace_replaceBtn">替换</button><button id="quickEdit-replace_undoBtn" disabled="true">撤销</button><button id="quickEdit-replace_hideBtn">关闭</button></div>')
.appendTo( '.Wikiplus-InterBox' )
<label>查找:<input type="text" id="quickEdit-replace-pattern"></label>
.on('click', '#quickEdit-replace_hideBtn', e => { $( e.delegateTarget ).hide(); })
<label>替换:<textarea id="quickEdit-replace-val"></textarea></label>
<label id="quickEdit-replace-regex"><input type="checkbox">正则</label>
<button id="quickEdit-replace_replaceBtn">替换</button>
<button id="quickEdit-replace_undoBtn" disabled="true">撤销</button>
<button id="quickEdit-replace_hideBtn">关闭</button>
</div>`).appendTo( '.Wikiplus-InterBox' )
.on('click', '#quickEdit-replace_hideBtn', () => { dialog.hide(); })
.on('click', '#quickEdit-replace_undoBtn', () => { textarea.val(backup); })
.on('click', '#quickEdit-replace_undoBtn', () => { textarea.val(backup); })
.on('click', '#quickEdit-replace_replaceBtn', () => {
.on('click', '#quickEdit-replace_replaceBtn', () => {
第68行: 第71行:
const text = this.value,
const text = this.value,
position = this.selectionStart,
position = this.selectionStart,
left = text.substring(0, position),
left = text.slice(0, position),
right = text.substring( this.selectionEnd );
right = text.slice( this.selectionEnd );
this.value = left + ' ' + right;
this.value = left + ' ' + right;
this.selectionStart = this.selectionEnd = position + 4;
this.selectionStart = this.selectionEnd = position + 4;
第76行: 第79行:
}
}


if (['edit', 'submit'].includes( action )) {
// 修改templateSandbox的默认页面
// 修改templateSandbox的默认页面
$( 'input[name=wpTemplateSandboxPage]' ).val(function() {
$('body').on('click', '#wpTemplateSandboxPreview', () => {
const namespaces = mw.config.get( 'wgFormattedNamespaces' ),
title = mw.config.get('wgTitle');
$( 'input[name=wpTemplateSandboxPage]' ).val(function() {
const namespaces = mw.config.get( 'wgFormattedNamespaces' ),
return $(this).val() || (namespaces[ns] + (ns === 0 ? '' : ':') + title);
ns = mw.config.get( 'wgNamespaceNumber' ),
});
title = mw.config.get('wgTitle');
return $(this).val() || (namespaces[ns] + (ns === 0 ? '' : ':') + title);
});
});


// 自动替换文本。由于以下代码的奇怪性质,本页面不应频繁修改,至少不能使用移动版皮肤修改
btns.on('click', () => {
if (contentmodel == 'javascript') {
if (contentmodel == 'javascript') {
// JS统一使用4个空格缩进
editBox.val(function() { return $(this).val().replace(/\t/g, " "); });
const btns = '#wpSaveWidget, #wpPreviewWidget, #wpDiffWidget, #wpTemplateSandboxPreview';
$('body').on('click', btns, () => {
$( '#wpTextbox1' ).val(function() { return $(this).val().replace(/\t/g, " "); });
});
}
}
}
if (skin == 'vector' || contentmodel == 'wikitext') { return; }
}) ();
editBox.val(function() { return $(this).val().replace(/[‘’]/g, "'").replace(/[“”]/g, '"'); });
});
});

2020年11月22日 (日) 10:51的版本

// 由[[Special:Mypage/common.js]]调用,可以使用ES6语法
"use strict";
(function() {
    const action = mw.config.get('wgAction'),
        contentmodel = mw.config.get( 'wgPageContentModel' ),
        skin = mw.config.get('skin');

    // 修改WikiEditor的替换文本框
    if (['edit', 'submit'].includes( action ) && skin == 'vector') {
        $('body').on('click', 'input#wikieditor-toolbar-replace-replace', function() {
            const ele = $( '<textarea id="wikieditor-toolbar-replace-replace" tabindex="10">' )
                .keydown(e => {
                if (e.keyCode == '13') {
                    e.stopPropagation();
                    const text = ele.val(),
                        left = text.slice(0, ele.prop( 'selectionStart' )),
                        right = text.slice(ele.prop( 'selectionEnd' ));
                    ele.val(left + '\n' + right);
                }
            });
            $(this).replaceWith(ele);
        });
    }

    // 引自[[moegirl:User:東東君/js/Wikiplus-replace.js]]
    if (action == 'view' && mw.config.get( 'wgIsArticle' ) && mw.config.get( 'wgIsProbablyEditable' ) &&
        (mw.loader.getState( 'ext.gadget.Wikiplus' ) == 'ready' || mw.loader.getState( 'ext.gadget.mobile-Wikiplus' ) == 'ready')) {
        mw.hook( 'wikiplus.dialog' ).add(() => {
            if ($( '#Wikiplus-Quickedit-Replace' ).length) { return; }
            console.log( 'Hook: wikiplus.dialog,开始添加替换按钮' );
            $( '<span id="Wikiplus-Quickedit-Replace" class="Wikiplus-Btn">替换</span>' )
                .on('click', () => {
                let dialog = $( '.quickEdit-replace' );
                if (dialog.length) {
                    dialog.show();
                    return;
                }
                let backup = "";
                const textarea = $('#Wikiplus-Quickedit');
                dialog = $(`<div class="quickEdit-replace">
                    <label>查找:<input type="text" id="quickEdit-replace-pattern"></label>
                    <label>替换:<textarea id="quickEdit-replace-val"></textarea></label>
                    <label id="quickEdit-replace-regex"><input type="checkbox">正则</label>
                    <button id="quickEdit-replace_replaceBtn">替换</button>
                    <button id="quickEdit-replace_undoBtn" disabled="true">撤销</button>
                    <button id="quickEdit-replace_hideBtn">关闭</button>
                </div>`).appendTo( '.Wikiplus-InterBox' )
                    .on('click', '#quickEdit-replace_hideBtn', () => { dialog.hide(); })
                    .on('click', '#quickEdit-replace_undoBtn', () => { textarea.val(backup); })
                    .on('click', '#quickEdit-replace_replaceBtn', () => {
                    const ptn = $( '#quickEdit-replace-pattern' ).val(),
                        value = $( '#quickEdit-replace-val' ).val(),
                        isRegex = $('#quickEdit-replace-regex input').prop( 'checked' );
                    backup = textarea.val();
                    $( '#quickEdit-replace_undoBtn' ).prop('disabled', false);
                    mw.loader.using( 'mediawiki.util' ).then(() => {
                        const regexp = new RegExp(isRegex ? ptn : mw.util.escapeRegExp(ptn), 'g');
                        textarea.val( backup.replace(regexp, value) );
                    });
                });
                mw.loader.using( 'jquery.ui' ).then(() => { dialog.draggable(); });
            }).insertAfter( '#Wikiplus-Quickedit-Jump' );
        });
    }
    
    /* JavaScript编辑界面按tab键空4格 */
    if (contentmodel == 'javascript') {
        $('body').on('keydown', '#wpTextbox1, #Wikiplus-Quickedit', function(e) {
            if (e.keyCode == 9) {
                e.preventDefault();
                const text = this.value,
                    position = this.selectionStart,
                    left = text.slice(0, position),
                    right = text.slice( this.selectionEnd );
                this.value = left + '    ' + right;
                this.selectionStart = this.selectionEnd = position + 4;
            }
        });
    }

    if (['edit', 'submit'].includes( action )) {
        // 修改templateSandbox的默认页面
        $('body').on('click', '#wpTemplateSandboxPreview', () => {
            $( 'input[name=wpTemplateSandboxPage]' ).val(function() {
                const namespaces = mw.config.get( 'wgFormattedNamespaces' ),
                    ns = mw.config.get( 'wgNamespaceNumber' ),
                    title = mw.config.get('wgTitle');
                return $(this).val() || (namespaces[ns] + (ns === 0 ? '' : ':') + title);
            });
        });

        if (contentmodel == 'javascript') {
            // JS统一使用4个空格缩进
            const btns = '#wpSaveWidget, #wpPreviewWidget, #wpDiffWidget, #wpTemplateSandboxPreview';
            $('body').on('click', btns, () => {
                $( '#wpTextbox1' ).val(function() { return $(this).val().replace(/\t/g, "    "); });
            });
        }
    }
}) ();