利用者:1108-Kiju/AddCatsort.js
ナビゲーションに移動
検索に移動
注意: 保存後、変更を確認するにはブラウザーのキャッシュを消去する必要がある場合があります。
- Firefox / Safari: Shift を押しながら 再読み込み をクリックするか、Ctrl-F5 または Ctrl-R を押してください (Mac では ⌘-R)
- Google Chrome: Ctrl-Shift-R を押してください (Mac では ⌘-Shift-R)
- Internet Explorer / Microsoft Edge: Ctrl を押しながら 最新の情報に更新 をクリックするか、Ctrl-F5 を押してください
- Opera: Ctrl-F5を押してください
/*
デフォルトソート、カテゴリを 追加するためのスクリプト。HotCatとの併用推奨。
create by 1108-Kiju
*/
var pageTitle = mw.config.get('wgPageName');
var namespaceNumber = mw.config.get('wgNamespaceNumber');
if ([0, 4, 14, 10, 12].includes(namespaceNumber)) {
var container = $('<div>').css({
'display': 'none',
'background-color': '#F0F0F0',
'padding': '10px',
'margin': '10px',
'border': '1px solid #CCC'
});
var defaultSortInput = $('<input>').attr('type', 'text').attr('placeholder', 'デフォルトソート');
var categoryInput = $('<input>').attr('type', 'text').attr('placeholder', 'カテゴリ');
var summaryInput = $('<input>').attr('type', 'text').attr('placeholder', '要約');
var editButton = $('<button>').text('保存').click(function() {
var defaultSortValue = defaultSortInput.val().trim();
var categoryValue = categoryInput.val().trim();
var summaryValue = summaryInput.val().trim();
if (summaryValue === '') {
summaryValue = 'カテゴリ/デフォルトソートを追加';
}
var newText = '';
if (defaultSortValue !== '') {
newText += '{{デフォルトソート:' + defaultSortValue + '}}\n';
}
if (categoryValue !== '') {
var categories = categoryValue.split('|');
var categoryText = categories.map(function(category) {
return '[[Category:' + category.trim() + ']]';
}).join('\n');
newText += categoryText + '\n';
}
if (newText !== '') {
summaryValue += ', using AddCatsort';
var postData = {
action: 'edit',
title: pageTitle,
token: mw.user.tokens.get('csrfToken'),
format: 'json',
summary: summaryValue
};
$.get(mw.util.wikiScript('api'), {
action: 'query',
prop: 'revisions',
rvprop: 'content',
titles: pageTitle,
format: 'json'
}).done(function(data) {
var pages = data.query.pages;
var page = pages[Object.keys(pages)[0]];
var content = page.revisions[0]['*'];
var defaultSortPattern = /\{\{\s*デフォルトソート:[^\}]*\}\}/i;
if (defaultSortPattern.test(content)) {
content = content.replace(defaultSortPattern, newText);
} else {
content += '\n' + newText;
}
postData.text = content;
$.post(mw.util.wikiScript('api'), postData, function(data) {
if (data.edit && data.edit.result == 'Success') {
alert('追加しました。');
location.reload();
} else if (data.error) {
alert('エラーが発生しました。エラーコードを控え、作成者に連絡してください。: ' + data.error.info);
} else {
alert('エラーが発生しました。');
}
});
});
} else {
alert('デフォルトソートまたはカテゴリを少なくとも1つ入力してください。');
}
});
var editStartButton = $('<button>').text('フォームを表示').click(function() {
container.show();
editStartButton.hide();
closeButton.show();
});
var closeButton = $('<button>').text('閉じる').click(function() {
container.hide();
editStartButton.show();
closeButton.hide();
});
container.insertAfter('.firstHeading');
container.append(defaultSortInput);
container.append(categoryInput);
container.append(summaryInput);
container.append(editButton);
editStartButton.insertAfter('.firstHeading');
closeButton.insertAfter('.firstHeading');
closeButton.hide();
}