「MediaWiki:Common.js/MoveEditsection.js」の版間の差分

提供: ひつじ小屋別館2代目
移動先: 案内検索
(個人設定→編集画面→「セクション編集用リンクを有効にする」を無効にしたときの動作変更に対応。詳しくはノートで。)
 
(1版)
 
(相違点なし)

2013年8月4日 (日) 19:32時点における最新版

/*
 * moveEditsection
 *
 * dbenzhuser (de:Benutzer:Dbenzhuser)
 * modified by: [[ja:User:Mizusumashi]]
 */
 
function moveEditsection(span)
{
    var parent = span.parentNode;
    parent.removeChild(span);
    span.className = span.className.replace('editsection',
                                            'editsection editsection-moved');
    parent.appendChild(document.createTextNode(' '));
    parent.appendChild(span);
}

function getHeadLine(span)
{
    for(var next = span.parentNode.nextSibling; next; next = next.nextSibling){
        if (typeof next.tagName != 'string'){
            continue;
        }

        var tag = next.tagName.toLowerCase();
        if( tag == 'h1'
            || tag == 'h2'
            || tag == 'h3'
            || tag == 'h4'
            || tag == 'h5'
            || tag == 'h6'){
            return next;
        }
    }

    return null;
}

function moveEditsectionExpands(span)
{
    var headline = getHeadLine(span);
    if ( ! headline){
        return;
    }

    span.parentNode.removeChild(span);
    span.className = span.className.replace('editsection-expands', 
                                            'editsection editsection-expands-moved');
    headline.appendChild(span);
}

function checkClass(span, cssClass)
{
    array = span.className.split(' ');
    
    for(var i = 0; i < array.length; i++){
        if(array[i] == cssClass){
            return true;
        }
    }
    
    return false;
}

function moveEditsectionMain()
{
    if (typeof moveEditsectionDisable != 'undefined'
        && moveEditsectionDisable){
        return;
    }

    var spans = document.getElementsByTagName('span');
    var editsection_array = new Array();
    var editsection_expands_array = new Array();
    
    for (var i = 0; i < spans.length; i++) {
        var span = spans[i];
        if(checkClass(span, 'editsection')){
            editsection_array.push(span);
        }else if(checkClass(span, 'editsection-expands')){
            editsection_expands_array.push(span);
        }
    }

    for (var i = 0; i < editsection_array.length; i++) {
        moveEditsection(editsection_array[i]);
    }

    for (var i = 0; i < editsection_expands_array.length; i++) {
        moveEditsectionExpands(editsection_expands_array[i]);
    }
}

addOnloadHook(moveEditsectionMain);