User:Sai10ukazuki/common.js

mw.loader.load('//ja.wikipedia.org/w/index.php?title=利用者:Infinite0694/Mass protecting tool ja.js&action=raw&ctype=text/javascript'); mw.loader.load('//ja.wikipedia.org/w/index.php?title=利用者:Infinite0694/Mass RevisionDelete tool/ja.js&action=raw&ctype=text/javascript'); mw.loader.load('//ja.wikipedia.org/w/index.php?title=プロジェクト:ウィキ技術部/スクリプト開発/trunk/MassRevisionDelete.js&action=raw&ctype=text/javascript'); // $(function {

if (mw.config.get('wgAction') !== 'history') return;

var $revisionList = $('ul.mw-contributions-list').children('li'); if ($revisionList.length === 0) return;

var pagetitle = mw.config.get('wgTitle');

var cnt = 0; var revisions = []; $revisionList.each(function {       var id = parseInt($(this).attr('data-mw-revid'));        var name;        revisions.push({ index: ++cnt, id: id, timestamp: $(this).find('a.mw-changeslist-date').text, oldRadioId: 'mw-oldid-' + id, newRadioId: 'mw-diff-' + id, $checkbox: $(this).find('input[type="checkbox"]').filter(function { return (name = $(this).attr('name')) && name.match(/^ids/); }) });   });

// console.log(revisions);

$('head').append(       ' ' +            '.dm-selector label {' +                'display: inline-block;' +                'width: 6ch;' +            '}' +            '.dm-selector select {' +                'margin-right: 0.5em;' +            '}' +        ' '    );

var $checkboxControls = $('.mw-checkbox-toggle-controls'); $checkboxControls.append(       '、' +        '版間'    ); $checkboxControls.each(function(index) {       $(this).after( ' ' +               'モード ' + '' + '新版 ' + '旧版 ' + '版間 ' + ' ' +               'リンク ' + '' + '差分 ' + '固定リンク ' + ' ' +               'パイプ ' + '' + 'なし ' + '時刻 ' + '時刻「の版」 ' + '<option value="ページ名">ページ名 ' + '<option value="ページ名+時刻">ページ名+時刻 ' + '<option value="ページ名+時刻「の版」">ページ名+時刻「の版」 ' + ' ' +               '<label for="dm-revcount-' + index + '">版数 ' + '<select class="dm-revcount" id="dm-revcount-' + index + '">' + '<option value="なし">なし ' + '<option selected value="あり">あり ' + ' ' +           ' ' +            '<input class="dm-input" style="width: 100ch; margin: 0.3em 0; padding: 0.1em;"> ' );   });    $('.dm-input').val(generateLink);

$('ul.mw-contributions-list').find('input[type="radio"]').filter(function {       var id = $(this).prop('id');        return id && id.match(/^mw-(oldid|diff)-/);    }).change(function {        $('.dm-input').val(generateLink);    });

$('.dm-interrevisions').click(function {

var $checkedRadios = $('ul.mw-contributions-list').find('input[type="radio"]').filter(':checked'); var oldRadioId = $checkedRadios.filter(function { return $(this).prop('id').indexOf('mw-oldid-') !== -1; }).prop('id'); var newRadioId = $checkedRadios.filter(function { return $(this).prop('id').indexOf('mw-diff-') !== -1; }).prop('id');

var checking = false; revisions.some(function(obj) {           if (newRadioId === obj.newRadioId) checking = true;            if (checking) obj.$checkbox.prop('checked', true);            if (oldRadioId === obj.oldRadioId) return true;            return false;        });

});

$('.dm-mode, .dm-link, .dm-pipe, .dm-revcount').change(function {

var clss = $(this).attr('class'); var selectedVal = $(this).children('option').filter(':selected').val; $(clss).children('option[value="' + selectedVal + '"]').prop('selected', true); $('.dm-input').val(generateLink);

});

function generateLink {

var $checkedRadios = $('ul.mw-contributions-list').find('input[type="radio"]').filter(':checked'); var oldRadioId = $checkedRadios.filter(function { return $(this).prop('id').indexOf('mw-oldid-') !== -1; }).prop('id'); var newRadioId = $checkedRadios.filter(function { return $(this).prop('id').indexOf('mw-diff-') !== -1; }).prop('id'); var oldRevObj = revisions.filter(function(obj) { return obj.oldRadioId === oldRadioId; })[0]; var newRevObj = revisions.filter(function(obj) { return obj.newRadioId === newRadioId; })[0]; // console.log(oldRevObj, newRevObj);

var mode = $('.dm-mode').eq(0).children('option').filter(':selected').val; var linkType = $('.dm-link').eq(0).children('option').filter(':selected').val; var pipe = $('.dm-pipe').eq(0).children('option').filter(':selected').val; var oldTs = oldRevObj.timestamp; var newTs = newRevObj.timestamp; switch (pipe) { case 'なし': pipe = [, ]; break; case '時刻': pipe = ['|' + oldTs, '|' + newTs]; break; case '時刻「の版」': pipe = ['|' + oldTs + 'の版', '|' + newTs + 'の版']; break; case 'ページ名': pipe = ['|' + pagetitle, '|' + pagetitle]; break; case 'ページ名+時刻': pipe = ['|' + pagetitle + ' (' + oldTs + ')', '|' + pagetitle + ' (' + newTs + ')']; break; case 'ページ名+時刻「の版」': pipe = ['|' + pagetitle + ' (' + oldTs + 'の版)', '|' + pagetitle + ' (' + newTs + 'の版)']; break; }       var revCount = $('.dm-revcount').eq(0).children('option').filter(':selected').val; revCount = revCount === 'あり' ? ' (連続' + (oldRevObj.index - newRevObj.index + 1) + '版)' : '';

var oldRev = '特別:' + linkType + '/' + oldRevObj.id + pipe[0] + ''; var newRev = '特別:' + linkType + '/' + newRevObj.id + pipe[1] + '';

var difftext; switch (mode) { case '新版': difftext = newRev; break; case '旧版': difftext = oldRev; break; case '版間': difftext = oldRev + ' ～ ' + newRev; break; }       difftext += revCount;

return difftext;

}

}); //