مدیاویکی:Gadget-close.js: تفاوت میان نسخهها
محتوای حذفشده محتوای افزودهشده
خرابکاری ویرایشگر دیداری ناشی از این بخش است |
تعریف متغیر |
||
(یک نسخهٔ میانیِ ایجادشده توسط همین کاربر نشان داده نشد) | |||
خط ۹: | خط ۹: | ||
if ($.inArray(mw.config.get("wgNamespaceNumber"), [1, 3, 4, 5, 7, 9, 11, 13, 15]) > -1) { |
if ($.inArray(mw.config.get("wgNamespaceNumber"), [1, 3, 4, 5, 7, 9, 11, 13, 15]) > -1) { |
||
$('.mw-editsection').each(function() { |
$('.mw-editsection').each(function() { |
||
⚫ | |||
$(this).find('a').each(function(){ |
|||
var m = $(this).attr('href').match(/section=(\d+)/); |
|||
⚫ | |||
section = $(this).attr('href'); |
|||
} |
|||
}); |
|||
var span = $('<span>', { |
var span = $('<span>', { |
||
class: 'mw-archivesection' |
class: 'mw-archivesection' |
||
خط ۲۳: | خط ۳۰: | ||
}).click(function(e) { |
}).click(function(e) { |
||
e.preventDefault(); |
e.preventDefault(); |
||
⚫ | |||
mw.loader.using(['oojs-ui-core', 'oojs-ui-widgets', 'oojs-ui-windows']).done(function() { |
mw.loader.using(['oojs-ui-core', 'oojs-ui-widgets', 'oojs-ui-windows']).done(function() { |
||
archiveSectionOptions.createCommentWindow(section); |
archiveSectionOptions.createCommentWindow(section); |
||
خط ۳۹: | خط ۴۵: | ||
}).click(function(e) { |
}).click(function(e) { |
||
e.preventDefault(); |
e.preventDefault(); |
||
⚫ | |||
mw.loader.using(['oojs-ui-core', 'oojs-ui-widgets', 'oojs-ui-windows']).done(function() { |
mw.loader.using(['oojs-ui-core', 'oojs-ui-widgets', 'oojs-ui-windows']).done(function() { |
||
archiveSectionOptions.createArchiveWindow(section); |
archiveSectionOptions.createArchiveWindow(section); |
||
خط ۲۶۹: | خط ۲۷۴: | ||
}, |
}, |
||
getQuery: function(section) { |
getQuery: function(section) { |
||
var |
var query = new mw.Uri(section).query; |
||
var query = new mw.Uri(href).query; |
|||
return query; |
return query; |
||
}, |
}, |
نسخهٔ ۲۰ مارس ۲۰۱۸، ساعت ۰۱:۵۷
/*global jQuery, mediaWiki */
(function($, mw) {
'use strict';
var windowManager;
var archiveSection;
var commentInSection;
var archiveSectionOptions = {
install: function() {
if ($.inArray(mw.config.get("wgNamespaceNumber"), [1, 3, 4, 5, 7, 9, 11, 13, 15]) > -1) {
$('.mw-editsection').each(function() {
var section = '';
$(this).find('a').each(function(){
var m = $(this).attr('href').match(/section=(\d+)/);
if (m && m.length == 2 && section == '') {
section = $(this).attr('href');
}
});
var span = $('<span>', {
class: 'mw-archivesection'
}).insertAfter(this);
span.append($('<span>', {
class: 'mw-editsection-bracket',
text: '['
}));
span.append($('<a>', {
href: '#',
title: 'ثبت نظر (موافق/مخالف/شد/...)',
style: 'font-size: smaller;',
text: 'ثبت نظر',
}).click(function(e) {
e.preventDefault();
mw.loader.using(['oojs-ui-core', 'oojs-ui-widgets', 'oojs-ui-windows']).done(function() {
archiveSectionOptions.createCommentWindow(section);
});
}));
span.append($('<span>', {
class: 'mw-editsection-bracket',
text: ' / '
}));
span.append($('<a>', {
href: '#',
title: 'جمعبندی این بخش',
style: 'font-size: smaller;',
text: 'جمعبندی',
}).click(function(e) {
e.preventDefault();
mw.loader.using(['oojs-ui-core', 'oojs-ui-widgets', 'oojs-ui-windows']).done(function() {
archiveSectionOptions.createArchiveWindow(section);
});
}));
span.append($('<span>', {
class: 'mw-editsection-bracket',
text: ']'
}));
// Late pre-loading
mw.loader.load(['oojs-ui-core', 'oojs-ui-widgets', 'oojs-ui-windows']);
});
}
},
createArchiveWindow: function(section) {
var query = archiveSectionOptions.getQuery(section);
archiveSectionOptions.currentSectionId = query.section;
function ArchiveSection(config) {
ArchiveSection.super.call(this, config);
}
OO.inheritClass(ArchiveSection, OO.ui.ProcessDialog);
ArchiveSection.static.name = 'archive';
ArchiveSection.static.title = 'جمعبندی بخش';
ArchiveSection.static.actions = [{
action: 'archive',
label: 'جمعبندی',
flags: 'primary'
}, {
label: 'لغو',
flags: 'safe'
}];
ArchiveSection.prototype.initialize = function() {
var fieldset = [];
ArchiveSection.super.prototype.initialize.apply(this, arguments);
this.panel = new OO.ui.PanelLayout({
padded: true,
expanded: false
});
this.content = new OO.ui.FieldsetLayout();
archiveSectionOptions.switchTop = new OO.ui.ToggleSwitchWidget({
label: 'جمعبندی بالای متن باشد',
value: false,
});
archiveSectionOptions.switchSuccess = new OO.ui.ToggleSwitchWidget({
label: 'بحث در رسیدن به اجماع موفق بود',
value: true,
});
archiveSectionOptions.switchBold = new OO.ui.ToggleSwitchWidget({
label: 'متن جمعبندی ضخیم نمایش داده شود',
value: false,
});
archiveSectionOptions.textSummary = new OO.ui.MultilineTextInputWidget({
placeholder: 'متن جمعبندی را وارد کنید',
rows:6,
});
//archiveSectionOptions.textSummary.setRTL(true);
fieldset.push(new OO.ui.FieldLayout(archiveSectionOptions.switchTop, {
label: 'جمعبندی بالای متن باشد',
align: 'inline',
}));
fieldset.push(new OO.ui.FieldLayout(archiveSectionOptions.switchSuccess, {
label: 'بحث در رسیدن به اجماع موفق بود',
align: 'inline',
}));
fieldset.push(new OO.ui.FieldLayout(archiveSectionOptions.switchBold, {
label: 'متن جمعبندی ضخیم نمایش داده شود',
align: 'inline',
}));
fieldset.push(new OO.ui.FieldLayout(archiveSectionOptions.textSummary, {
label: 'جمعبندی:',
align: 'top'
}));
this.content.addItems(fieldset);
this.panel.$element.append(this.content.$element);
this.$body.append(this.panel.$element);
};
ArchiveSection.prototype.getActionProcess = function(action) {
var dialog = this;
if (action === 'archive') {
archiveSectionOptions.doEdit(archiveSectionOptions.currentSectionId, action);
}
return ArchiveSection.super.prototype.getActionProcess.call(this, action);
};
if (!windowManager) {
windowManager = new OO.ui.WindowManager();
$('body').append(windowManager.$element);
}
if (!archiveSection) {
archiveSection = new ArchiveSection({
size: 'medium'
});
windowManager.addWindows([archiveSection]);
}
windowManager.openWindow(archiveSection);
},
createCommentWindow: function(section) {
var query = archiveSectionOptions.getQuery(section);
archiveSectionOptions.currentSectionId = query.section;
(new mw.Api()).get({
format: 'json',
action: 'query',
titles: mw.config.get("wgPageName"),
rvsection: query.section,
prop: 'revisions',
rvprop: 'content',
}).then(function(data) {
var page = data.query.pages[Object.keys(data.query.pages)[0]];
var current = page.revisions[0]['*'];
function CommentInSection(config) {
CommentInSection.super.call(this, config);
}
OO.inheritClass(CommentInSection, OO.ui.ProcessDialog);
CommentInSection.static.name = 'comment';
CommentInSection.static.title = 'ثبت نظر';
CommentInSection.static.actions = [{
action: 'comment',
label: 'ثبت نظر',
flags: 'primary'
}, {
label: 'لغو',
flags: 'safe'
}];
CommentInSection.prototype.initialize = function() {
var fieldset = [];
CommentInSection.super.prototype.initialize.apply(this, arguments);
this.panel = new OO.ui.PanelLayout({
padded: true,
expanded: false
});
this.content = new OO.ui.FieldsetLayout();
var PingUsers = current.match(/\[\[(?:بحث[_ ]کاربر|[Uu]ser[_ ][tT]alk)\:([^\]]+)\]\]/gi)
if (!PingUsers){
var PingUsers = current.match(/\[\[(?:کاربر|[Uu]ser)\:([^\]]+)\]\]/gi)
}
var uniqueNames = [];
$.each(PingUsers, function(i, el){
if($.inArray(el.split('|')[0].split('#')[0].split(':')[1], uniqueNames) === -1) uniqueNames.push(el.split('|')[0].split('#')[0].split(':')[1]);
});
var finallList=[]
var i;
for (i = 0; i < uniqueNames.length; i++) {
finallList.push({data:uniqueNames[i],lable:'کاربر:'+uniqueNames[i]})
}
archiveSectionOptions.MultiselectPingUser = new OO.ui.MenuTagMultiselectWidget( {
inputPosition: 'outline',
options: finallList,
placeholder: 'از اینجا نام کاربری که قصد پاسخ دارید، انتخاب کنید یا ابتدای نامش را بنویسید',
selected: []
} );
archiveSectionOptions.radioComment = new OO.ui.RadioOptionWidget({
label: 'پیام',
});
archiveSectionOptions.radioDone = new OO.ui.RadioOptionWidget({
label: 'شد',
});
archiveSectionOptions.radioReject = new OO.ui.RadioOptionWidget({
label: 'نشد',
});
archiveSectionOptions.radioSupport = new OO.ui.RadioOptionWidget({
label: 'موافق',
});
archiveSectionOptions.radioOppose = new OO.ui.RadioOptionWidget({
label: 'مخالف',
});
archiveSectionOptions.radioDelete = new OO.ui.RadioOptionWidget({
label: 'حذف شود',
});
archiveSectionOptions.radioKeep = new OO.ui.RadioOptionWidget({
label: 'بماند',
});
fieldset.push(new OO.ui.FieldLayout(archiveSectionOptions.MultiselectPingUser, {
label: 'انتخاب کاربران شرکتکننده در بحث برای پاسخ (پینگ)',
align: 'inline',
}));
archiveSectionOptions.radioCommentType = new OO.ui.RadioSelectWidget({
items: [
archiveSectionOptions.radioComment,
archiveSectionOptions.radioDone,
archiveSectionOptions.radioReject,
archiveSectionOptions.radioSupport,
archiveSectionOptions.radioOppose,
archiveSectionOptions.radioDelete,
archiveSectionOptions.radioKeep
]
});
archiveSectionOptions.radioCommentType.selectItem(archiveSectionOptions.radioComment);
archiveSectionOptions.textComment = new OO.ui.MultilineTextInputWidget({
placeholder: 'متن نظر را وارد کنید',
rows:6,
});
//archiveSectionOptions.textComment.setRTL(true);
fieldset.push(new OO.ui.FieldLayout(archiveSectionOptions.radioCommentType, {
label: 'برچسب قبل از نظر',
align: 'top'
}));
fieldset.push(new OO.ui.FieldLayout(archiveSectionOptions.textComment, {
label: 'متن نظر:',
align: 'top'
}));
this.content.addItems(fieldset);
this.panel.$element.append(this.content.$element);
this.$body.append(this.panel.$element);
};
CommentInSection.prototype.getActionProcess = function(action) {
var dialog = this;
if (action === 'comment') {
archiveSectionOptions.doEdit(archiveSectionOptions.currentSectionId, action);
}
return CommentInSection.super.prototype.getActionProcess.call(this, action);
};
if (!windowManager) {
windowManager = new OO.ui.WindowManager();
$('body').append(windowManager.$element);
}
if (!commentInSection) {
commentInSection = new CommentInSection({
size: 'medium'
});
windowManager.addWindows([commentInSection]);
}
windowManager.openWindow(commentInSection);
});
},
getQuery: function(section) {
var query = new mw.Uri(section).query;
return query;
},
setIndentation: function(text, newText) {
text = text.replace('\r', '')
var lines = text.split('\n');
var lastline = lines[lines.length - 1];
var colons = lastline.match('^:*')[0].length;
var indentation = '';
for (var i = 0; i < colons + 1; i++) {
indentation += ':';
}
text = text + '\n' + indentation + newText.trim();
return text
},
doEdit: function(sectionId, action) {
(new mw.Api()).get({
format: 'json',
action: 'query',
titles: mw.config.get("wgPageName"),
rvsection: sectionId,
prop: 'revisions',
rvprop: 'content',
}).then(function(data) {
var page = data.query.pages[Object.keys(data.query.pages)[0]];
var current = page.revisions[0]['*'];
var header = current.substr(0, current.indexOf('\n'));
var content = current.substr(current.indexOf('\n') + 1);
var newText = '';
var pingtxt = '';
var section_title = (current.match(/^(=+)[^=]*?(\1)$/m) || [''])[0];
section_title = section_title.replace(/\=/g, '');
var editSummary = '/' + '*' + section_title + '*' + '/ ';
if (action == 'archive') {
editSummary += 'جمعبندی: ';
editSummary += archiveSectionOptions.textSummary.getValue();
newText = header + '\n';
// Per Special:Diff/18468612
if (mw.config.get("wgPageName") == "ویکیپدیا:درخواست_انتقال") {
if (archiveSectionOptions.switchSuccess.getValue()) {
content = content.replace(/\{\{وضعیت\|?\}\}/, '{{وضعیت|شد}}');
} else {
content = content.replace(/\{\{وضعیت\|?\}\}/, '{{وضعیت|نشد}}');
}
}
newText += '{{بسته';
if (archiveSectionOptions.switchSuccess.getValue()) {
newText += '}}\n';
} else {
newText += '|ناموفق=بله}}\n';
}
var summaryText = '';
if (archiveSectionOptions.textSummary.getValue()) {
if (archiveSectionOptions.switchBold.getValue()) {
summaryText += "'''";
}
summaryText += archiveSectionOptions.textSummary.getValue();
if (archiveSectionOptions.switchBold.getValue()) {
summaryText += "'''";
}
summaryText += ' ~~' + '~~\n';
}
if (archiveSectionOptions.switchTop.getValue()) {
if (archiveSectionOptions.textSummary.getValue()) {
newText += ':' + summaryText;
}
newText += content;
if (newText.indexOf('{{بسته') > -1) newText += '\n{{پایان بسته}}';
} else {
if (archiveSectionOptions.textSummary.getValue()) {
newText = archiveSectionOptions.setIndentation(newText + content, summaryText);
} else {
newText = newText + content;
}
if (newText.indexOf('{{بسته') > -1) newText += '\n{{پایان بسته}}';
}
return (new mw.Api()).post({
format: 'json',
action: 'edit',
title: mw.config.get("wgPageName"),
section: sectionId,
summary: editSummary,
text: newText,
token: mw.user.tokens.get('editToken')
});
} else {
var currentTxt = current.replace('\r', '')
var prefix = '';
if (currentTxt.search('\n*') > 0) {
prefix = '* ';
} else if (currentTxt.search('\n#') > 0) {
prefix = '# ';
} else {
prefix = '* ';
}
if (archiveSectionOptions.MultiselectPingUser.getValue()) {
var userlist=archiveSectionOptions.MultiselectPingUser.getValue()
var Pingtxt = '{{پینگ|'+archiveSectionOptions.MultiselectPingUser.getValue()+'}}'
Pingtxt=Pingtxt.replace(/\,/g,'|')
var PingtxteditSummary=' + پاسخ به کاربر:'+Pingtxt.replace('{{پینگ|','').replace('}}','').trim().replace(/\|/g ,'، ')
} else {
var Pingtxt = ''
}
if (Pingtxt=='{{پینگ|}}'){
Pingtxt=''
PingtxteditSummary=''
}
if (archiveSectionOptions.radioDone.isSelected()) {
newText = Pingtxt + '{{شد}} ';
editSummary += 'انجام شد'+PingtxteditSummary;
} else if (archiveSectionOptions.radioComment.isSelected()) {
newText = Pingtxt + '';
editSummary += 'پیام'+PingtxteditSummary;
} else if (archiveSectionOptions.radioReject.isSelected()) {
newText = Pingtxt + '{{نشد}} ';
editSummary += 'انجام نشد'+PingtxteditSummary;
} else if (archiveSectionOptions.radioKeep.isSelected()) {
newText = prefix + Pingtxt + ' {{بماند}} ';
editSummary += 'ثبت نظر بماند'+PingtxteditSummary;
} else if (archiveSectionOptions.radioDelete.isSelected()) {
newText = prefix + Pingtxt + ' {{حذف}} ';
editSummary += 'ثبت نظر حذف شود'+PingtxteditSummary;
} else if (archiveSectionOptions.radioSupport.isSelected()) {
newText = prefix + Pingtxt + ' {{موافق}} ';
editSummary += 'ثبت نظر موافق'+PingtxteditSummary;
} else {
newText = prefix + Pingtxt + ' {{مخالف}} ';
editSummary += 'ثبت نظر مخالف'+PingtxteditSummary;
}
newText += archiveSectionOptions.textComment.getValue();
newText += ' ~~' + '~~';
if (archiveSectionOptions.radioSupport.isSelected() ||
archiveSectionOptions.radioOppose.isSelected() ||
archiveSectionOptions.radioDelete.isSelected() ||
archiveSectionOptions.radioKeep.isSelected()) {
newText = current + '\n' + newText;
} else {
newText = archiveSectionOptions.setIndentation(current, newText);
}
return (new mw.Api()).post({
format: 'json',
action: 'edit',
title: mw.config.get("wgPageName"),
section: sectionId,
summary: editSummary,
text: newText,
token: mw.user.tokens.get('editToken')
});
}
}).then(function() {
if (action == 'archive') {
mw.notify('در حال ثبت جمعبندی شما ...');
} else {
mw.notify('در حال ثبت نظر شما ...');
}
location.hash = $('.mw-headline')[sectionId - 1].id;
location.reload(true);
}, function(error) {
mw.notify('ثبت نظر یا جمعبندی ناموفق بود: ' + error, {
type: 'error'
});
})
},
currentSectionId: -1,
};
if (mw.config.get('wgNamespaceNumber') >= 0) {
$(archiveSectionOptions.install);
}
})(jQuery, mediaWiki);