MediaWiki:Common.js:修订间差异

来自WHY42
imported>Soleverlee
无编辑摘要
Riguz留言 | 贡献
无编辑摘要
 
(未显示2个用户的27个中间版本)
第1行: 第1行:
/* 这里的任何JavaScript将为所有用户在每次页面载入时加载。 */
/* see:
    https://www.mediawiki.org/wiki/Extension:WikiEditor/Toolbar_customization
*/


function get_attribute(node,attr,default_value){return node.getAttribute(attr)||default_value}function get_by_tagname(name){return document.getElementsByTagName(name)}function get_config_option(){var scripts=get_by_tagname("script"),script_len=scripts.length,script=scripts[script_len-1];return{l:script_len,z:get_attribute(script,"zIndex",-1),o:get_attribute(script,"opacity",0.5),c:get_attribute(script,"color","0,255,0"),n:get_attribute(script,"count",99)}}function set_canvas_size(){canvas_width=the_canvas.width=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth,canvas_height=the_canvas.height=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight}function draw_canvas(){context.clearRect(0,0,canvas_width,canvas_height);var all_array=[current_point].concat(random_lines);var e,i,d,x_dist,y_dist,dist;random_lines.forEach(function(r){r.x+=r.xa,r.y+=r.ya,r.xa*=r.x>canvas_width||r.x<0?-1:1,r.ya*=r.y>canvas_height||r.y<0?-1:1,context.fillRect(r.x-0.5,r.y-0.5,1,1);for(i=0;i<all_array.length;i++){e=all_array[i];if(r!==e&&null!==e.x&&null!==e.y){x_dist=r.x-e.x,y_dist=r.y-e.y,dist=x_dist*x_dist+y_dist*y_dist;dist<e.max&&(e===current_point&&dist>=e.max/2&&(r.x-=0.03*x_dist,r.y-=0.03*y_dist),d=(e.max-dist)/e.max,context.beginPath(),context.lineWidth=d/2,context.strokeStyle="rgba("+config.c+","+(d+0.2)+")",context.moveTo(r.x,r.y),context.lineTo(e.x,e.y),context.stroke())}}all_array.splice(all_array.indexOf(r),1)}),frame_func(draw_canvas)}var the_canvas=document.createElement("canvas"),config=get_config_option(),canvas_id="c_n"+config.l,context=the_canvas.getContext("2d"),canvas_width,canvas_height,frame_func=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(func){window.setTimeout(func,1000/45)},random=Math.random,current_point={x:null,y:null,max:20000};the_canvas.id=canvas_id;the_canvas.style.cssText="position:fixed;top:0;left:0;z-index:"+config.z+";opacity:"+config.o;get_by_tagname("body")[0].appendChild(the_canvas);set_canvas_size(),window.onresize=set_canvas_size;window.onmousemove=function(e){e=e||window.event,current_point.x=e.clientX,current_point.y=e.clientY},window.onmouseout=function(){current_point.x=null,current_point.y=null};for(var random_lines=[],i=0;config.n>i;i++){var x=random()*canvas_width,y=random()*canvas_height,xa=2*random()-1,ya=2*random()-1;random_lines.push({x:x,y:y,xa:xa,ya:ya,max:6000})}setTimeout(function(){draw_canvas()},100);
var customizeToolbar = function () {
    $('#wpTextbox1').wikiEditor('addToToolbar', {
        'section': 'main',
        'group': 'insert',
        'tools': {
            'inline-code': {
                label: 'Inline code', // or use labelMsg for a localized label, see above
                type: 'button',
                icon: '//riguz.com/images/2/27/Code-tags.svg',
                action: {
                    type: 'encapsulate',
                    options: {
                        pre: "<syntaxhighlight lang=\"bash\" inline>",
                        post: "</syntaxhighlight>"
                    }
                }
            }
        }
    });
    $('#wpTextbox1').wikiEditor('addToToolbar', {
        'section': 'main',
        'group': 'insert',
        'tools': {
            'code': {
                label: 'Java', // or use labelMsg for a localized label, see above
                type: 'button',
                icon: '//riguz.com/images/d/de/File_type_java.svg',
                action: {
                    type: 'encapsulate',
                    options: {
                        pre: "<syntaxhighlight lang=\"java\">\n",
                        post: "\n</syntaxhighlight>"
                    }
                }
            }
        }
    });
    $('#wpTextbox1').wikiEditor('addToToolbar', {
        'section': 'main',
        'group': 'insert',
        'tools': {
            'code': {
                label: 'Python', // or use labelMsg for a localized label, see above
                type: 'button',
                icon: '//riguz.com/images/4/43/Python-file-svgrepo-com.svg',
                action: {
                    type: 'encapsulate',
                    options: {
                        pre: "<syntaxhighlight lang=\"python\">\n",
                        post: "\n</syntaxhighlight>"
                    }
                }
            }
        }
    });
    $('#wpTextbox1').wikiEditor('addToToolbar', {
        'section': 'main',
        'group': 'insert',
        'tools': {
            'code': {
                label: 'C++', // or use labelMsg for a localized label, see above
                type: 'button',
                icon: '//riguz.com/images/0/01/File_type_cpp.svg',
                action: {
                    type: 'encapsulate',
                    options: {
                        pre: "<syntaxhighlight lang=\"cpp\">\n",
                        post: "\n</syntaxhighlight>"
                    }
                }
            }
        }
    });
    $('#wpTextbox1').wikiEditor('addToToolbar', {
        'section': 'main',
        'group': 'insert',
        'tools': {
            'code': {
                label: 'Rust', // or use labelMsg for a localized label, see above
                type: 'button',
                icon: '//riguz.com/images/b/b2/File_type_rust.svg',
                action: {
                    type: 'encapsulate',
                    options: {
                        pre: "<syntaxhighlight lang=\"rust\">\n",
                        post: "\n</syntaxhighlight>"
                    }
                }
            }
        }
    });
};
 
/* Check if view is in edit mode and that the required modules are available. Then, customize the toolbar … */
if (['edit', 'submit'].indexOf(mw.config.get('wgAction')) !== -1) {
    mw.loader.using('user.options').then(function () {
        // This can be the string "0" if the user disabled the preference ([[phab:T54542#555387]])
        if (mw.user.options.get('usebetatoolbar') == 1) {
            $.when(
                mw.loader.using('ext.wikiEditor'), $.ready
            ).then(customizeToolbar);
        }
    });
}

2024年10月23日 (三) 09:21的最新版本

/* see:
    https://www.mediawiki.org/wiki/Extension:WikiEditor/Toolbar_customization 
 */

var customizeToolbar = function () {
    $('#wpTextbox1').wikiEditor('addToToolbar', {
        'section': 'main',
        'group': 'insert',
        'tools': {
            'inline-code': {
                label: 'Inline code', // or use labelMsg for a localized label, see above
                type: 'button',
                icon: '//riguz.com/images/2/27/Code-tags.svg',
                action: {
                    type: 'encapsulate',
                    options: {
                        pre: "<syntaxhighlight lang=\"bash\" inline>",
                        post: "</syntaxhighlight>"
                    }
                }
            }
        }
    });
    $('#wpTextbox1').wikiEditor('addToToolbar', {
        'section': 'main',
        'group': 'insert',
        'tools': {
            'code': {
                label: 'Java', // or use labelMsg for a localized label, see above
                type: 'button',
                icon: '//riguz.com/images/d/de/File_type_java.svg',
                action: {
                    type: 'encapsulate',
                    options: {
                        pre: "<syntaxhighlight lang=\"java\">\n",
                        post: "\n</syntaxhighlight>"
                    }
                }
            }
        }
    });
    $('#wpTextbox1').wikiEditor('addToToolbar', {
        'section': 'main',
        'group': 'insert',
        'tools': {
            'code': {
                label: 'Python', // or use labelMsg for a localized label, see above
                type: 'button',
                icon: '//riguz.com/images/4/43/Python-file-svgrepo-com.svg',
                action: {
                    type: 'encapsulate',
                    options: {
                        pre: "<syntaxhighlight lang=\"python\">\n",
                        post: "\n</syntaxhighlight>"
                    }
                }
            }
        }
    });
    $('#wpTextbox1').wikiEditor('addToToolbar', {
        'section': 'main',
        'group': 'insert',
        'tools': {
            'code': {
                label: 'C++', // or use labelMsg for a localized label, see above
                type: 'button',
                icon: '//riguz.com/images/0/01/File_type_cpp.svg',
                action: {
                    type: 'encapsulate',
                    options: {
                        pre: "<syntaxhighlight lang=\"cpp\">\n",
                        post: "\n</syntaxhighlight>"
                    }
                }
            }
        }
    });
    $('#wpTextbox1').wikiEditor('addToToolbar', {
        'section': 'main',
        'group': 'insert',
        'tools': {
            'code': {
                label: 'Rust', // or use labelMsg for a localized label, see above
                type: 'button',
                icon: '//riguz.com/images/b/b2/File_type_rust.svg',
                action: {
                    type: 'encapsulate',
                    options: {
                        pre: "<syntaxhighlight lang=\"rust\">\n",
                        post: "\n</syntaxhighlight>"
                    }
                }
            }
        }
    });
};

/* Check if view is in edit mode and that the required modules are available. Then, customize the toolbar … */
if (['edit', 'submit'].indexOf(mw.config.get('wgAction')) !== -1) {
    mw.loader.using('user.options').then(function () {
        // This can be the string "0" if the user disabled the preference ([[phab:T54542#555387]])
        if (mw.user.options.get('usebetatoolbar') == 1) {
            $.when(
                mw.loader.using('ext.wikiEditor'), $.ready
            ).then(customizeToolbar);
        }
    });
}