| مسابقه دانشدخت | |
| اسلامیکال از تاریخ ۱۵ دی تا ۲۰ بهمن، میزبان یک همایه با موضوع زنان است. شما میتوانید در مسابقه مقالهنویسی دانشدخت، شرکت کنید و با نگارش مقاله، از جوایز آن بهرهمند باشید. اگر به موضوعات مربوط با زنان علاقهمندید، این فرصت را از دست ندهید. فهرستی از مقالات پیشنهادی جهت ایجاد یا ویرایش در اینجا وجود دارد. |
مدیاویکی:Gadget-AutoSign.js
نکته: پس از انتشار ممکن است برای دیدن تغییرات نیاز باشد که حافظهٔ نهانی مرورگر خود را پاک کنید.
- فایرفاکس / سافاری: کلید Shift را نگه دارید و روی دکمهٔ Reload کلیک کنید، یا کلیدهای Ctrl-F5 یا Ctrl-R را با هم فشار دهید (در رایانههای اپل مکینتاش کلیدهای ⌘-R)
- گوگل کروم: کلیدهای Ctrl+Shift+R را با هم فشار دهید (در رایانههای اپل مکینتاش کلیدهای ⌘-Shift-R)
- اینترنت اکسپلورر/ Edge: کلید Ctrl را نگهدارید و روی دکمهٔ Refresh کلیک کنید، یا کلیدهای Ctrl-F5 را با هم فشار دهید
- اپرا: Ctrl-F5 را بفشارید.
//https://meta.wikimedia.org/wiki/User:Perhelion/signing.js
/** Description: AUTOMATIC SIGNING: if not sure, warn.
*** aut. signing / (automatische Unterschrift) ***
* @documentation: see [[w:de:User:Perhelion/signing]]
* @revision: 20:41, 15 July 2016 (UTC)
* @authors:
* created 23.04.2006 [[w:de:User:Olliminatore]] version 1.56 13.03.2007
* updated 23.04.2006 [[w:en:User:Ilmari Karonen]]
* updated 19.09.2011 – 29.12.2011 [[User:Perhelion]], FIX for non Gecko
* updated 31.12.2011 [[w:de:User:PerfektesChaos]], some code improvements
* updated 19.06.2014 Perhelion, fixes (code tidy up, jshint) gimmicks added
* updated 09.09.2014 [[w:de:User:Schnark]] (code cosmetic)
* –2016 Perhelion
* tested only on modern browsers <nowiki>
* @license released dual-licensed under the terms of the GFDL v1.2 or the GPL v2.
* required modules: 'jquery.textSelection','mediawiki.language','mediawiki.util', 'mediawiki.action.edit.preview'
todo:
**/
(function($, mw) {
'use strict';
if (!mw.libs || mw.libs.threadSign)
return;
var ns = mw.config.get('wgNamespaceNumber');
var name = 'امضاء کردن';
function useLivePreview() {
if (!Number(mw.user.options.get('uselivepreview')) && (!$('#wpMinoredit').prop('checked') || $('#wpSigning').prop('checked'))) {
mw.user.options.set('uselivepreview', 1);
mw.loader.load('mediawiki.action.edit.preview');
}
}
var threadSign = {
version: '1.91j',
init: function() {
var c = $.extend({
usersignature: (window.usersignature) ? usersignature : '-- ~~\~~',
sigAccessKey: '>',
sigText: null
}, threadSign.config, mw.config.get(['wgDBname', 'wgAction', 'wgContentLanguage', 'wgRelevantUserName', 'wgFormattedNamespaces', 'wgUserName', 'wgPageName', 'wgIsArticle']));
if (!/^(edit|submit)$/.test(c.wgAction))
return;
var newSection = /section=new/.test(location.search);
if (!c.sigText)
c.sigText = c.usersignature;
c.sigText = ' ' + $.trim(c.sigText) + '\n';
var regpages = null,
whitelist = [],
blacklist = [],
p, len;
if (newSection)
c.dSum = '';
if (ns === 4) {
if (c.regpages) {
regpages = c.regpages;
if (!$.isArray(regpages) || typeof regpages[0] !== 'string')
return alert('Config error: "' + regpages + '" must be of type string array.');
}
blacklist = [/\/[Ii]ntro$/, /\/[Hh]eader$/, /\/بایگانی?[ _/]/, /\/[Aa]rchive?[ _/]/, /\/\d{4}\/\d\d\/\d\d$/];
switch (c.wgDBname) {
case 'enwiki':
whitelist = [':Requests for undeletion', ':Requests for adminship/', ':Requests for arbitration/', ':Requests for permissions', ' for deletion', ' for discussion', ':Dispute resolution noticeboard', ':Adminship survey', ':Deletion review', ':Cleanup', ':SVG help', ':Arbitration/', ':Village pump', ':Articles for deletion', '.*noticeboard.*', ':page protection', 'mediation)', ':Bot requests', ':Help desk', ':Editor review', ':Media copyright questions'];
break;
case 'fawiki':
whitelist = [':نظرخواهی.*',':درخواست.*',':قهوهخانه.*',':تابلوی اعلانات.*'];
break;
}
for (p = 0, len = blacklist.length; p < len; p++) {
if (blacklist[p].test(c.wgPageName)) {
whitelist = '';
break;
}
}
regpages = (regpages && whitelist) ? whitelist.concat(regpages) : whitelist;
if (newSection)
regpages = '';
if (whitelist) {
if ($.isArray(regpages))
for (p = 0, len = regpages.length; p < len; p++) {
if (c.wgPageName.indexOf(regpages[p].replace(/ /g, '_')) !== -1) {
regpages = '';
break;
}
}
if (c.wgDBname === 'enwiki') {
$('.hiddencats li').children('a').each(function() {
if (this.text && /Non-talk pages that are automatically signed$/.test(this.text))
regpages = '';
});
}
if (regpages) {
$.when(mw.loader.load('mediawiki.util'), $.ready).then(function() {
$.getJSON(mw.util.wikiScript('api'), {
action: 'query',
prop: 'pageprops',
indexpageids: true,
titles: c.wgPageName,
cache: true,
format: 'json',
timeout: 3000
}).done(function(json) {
if (!json || !json.query || !json.query.pages)
return console.log('could not get page info!');
json = json.query.pages[json.query.pageids];
if (json && json.pageprops && typeof json.pageprops.newsectionlink !== 'undefined') {
if ('Perhelion' === c.wgUserName) alert('Page was still not registered!');
c.regpages = '';
}
}).always(function() {
threadSign.exec(c);
});
});
} else {
c.regpages = '';
return threadSign.exec(c);
}
}
} else {
if (ns % 2 === 1)
regpages = '';
c.regpages = regpages;
if (regpages === '' || ns === 2)
return threadSign.exec(c);
}
},
_cntOcc: function(txt) {
var sig = /~{3}/g,
falseRe = /(\{\{subst\:unsig.*?\}\})|(<nowiki>[\s\S]*?<\/nowiki>)|(<!--[\s\S]*?-->)/g,
count = 0,
cnt2 = 0,
cnt = 0;
while (sig.test(txt))
cnt++;
count = txt.match(falseRe) || [];
for (var i = 0; i < count.length; i++) {
while (sig.test(count[i]))
cnt2++;
}
return [cnt, cnt2];
},
setIndentation: function(e) {
var $textarea = $(e.target);
var txt = $textarea.val();
var pos = $textarea.textSelection('getCaretPosition');
if (!pos)
return;
var txtE = txt.slice(pos);
txt = txt.slice(0, pos);
var lrI = txt.lastIndexOf('\n');
var line = txt.slice(lrI + 1, pos);
this.indent = "";
if (line) {
var lrM = line.match(/^[:*#]+ ?/);
if (lrM) {
var lrLen = lrM[0].length;
if (lrLen) {
$textarea.val(txt + '\n' + lrM[0] + txtE);
this.indent = [pos, lrLen];
lrLen++;
$textarea.textSelection('setSelection', {
start: pos + lrLen
});
e.preventDefault();
}
}
}
return;
},
rmvIndentation: function(e) {
var $textarea = $(e.target);
var txt = $textarea.val();
var pos = this.indent[0];
if (pos) {
pos++;
var txtE = txt.slice(pos + this.indent[1]);
txt = txt.slice(0, pos);
this.indent = "";
$textarea.val(txt + txtE);
$textarea.textSelection('setSelection', {
start: pos
});
return e.preventDefault();
}
},
exec: function(c) {
var $Minoredit = $('#wpMinoredit'),
$editform = $('#editform'),
signTxt = [],
$textarea = $('#wpTextbox1'),
$sum = $editform.find('input#wpSummary, #wpSummary > input'),
n = /\n/,
maxlLength = 40,
bSig = !(c.regpages !== '' || ns === 2);
if (window.wikEd instanceof Object)
return console.log(name, 'is not compatible with wikEd');
if (bSig) useLivePreview();
$textarea.on('keypress', function(e) {
if (e.which === 13)
return threadSign.setIndentation(e);
if (e.which === 8 && threadSign.indent)
return threadSign.rmvIndentation(e);
threadSign.indent = "";
});
if (mw.language && $.inArray('de', mw.language.getFallbackLanguageChain()) !== -1)
signTxt = {
boxTitle: 'Diese Bearbeitung automatisch unterschreiben.',
boxText: 'Signieren',
btnAlt: 'Manuelle Signatur',
confirm: 'Es wurde keine Signierung gefunden. Trotzdem fortfahren?'
};
else
signTxt = {
boxTitle: 'امضای خودکار این متن',
boxText: 'امضاء کردن',
btnAlt: 'امضاء به صورت دستی',
confirm: 'امضایی یافت نشد ادامه دهم؟'
};
signTxt.hi = ($.inArray(c.wgContentLanguage, ['de', 'nn', 'da']) !== -1) ? 'Hallo ' : 'درود';
if (!$editform.length)
return;
threadSign.setPing = function() {
var reUser = getUser();
reUser = (reUser && reUser[1] && reUser[1] !== c.wgRelevantUserName) ? reUser[1] : '';
return $textarea.textSelection('encapsulateSelection', {
pre: '{{پینگ|',
peri: reUser,
post: '}}'
});
};
threadSign.setOutdent = function() {
var txt = $textarea.val();
var outdent = (c.wgDBname === 'fawiki') ? '\n{{تورفتگی}}' : '\n:┘{{padleft:┌|22|─}}\n';
var pos = $textarea.textSelection('getCaretPosition');
if (pos < 0)
pos = txt.length;
if (n.test(txt[pos]) && !n.test(txt[pos - 1]))
pos++;
if (txt[pos + 1] && n.test(txt[pos + 1]))
pos++;
rmvIndent($.trim(txt.slice(0, pos)) + outdent + txt.slice(pos), CmtE);
};
var doSig = threadSign.doSig = function(e, pos) {
var txt = $textarea.val();
var sigText = c.sigText;
if (!pos) {
pos = $textarea.textSelection('getCaretPosition');
sigText = sigText.replace(/\n+$/, '');
} else {
if (pos < 0)
pos = txt.length;
var tmpRe = /\}\}\s*$/;
if (tmpRe.test(txt.slice(pos - 4, pos))) {
var lrIndex = txt.slice(0, pos).replace(/\s+$/, '').lastIndexOf(r);
var tmpTxt = txt.slice(lrIndex, pos);
if (/\|1\s*=[^\n]*(\}\})\s*$/.test(tmpTxt)) {
tmpRe = tmpTxt.search(tmpRe);
pos = lrIndex + tmpRe;
sigText = sigText.replace(/\n+$/, '');
}
}
}
sigText = (pos > maxlLength && !n.test(txt.slice(pos - maxlLength, pos).replace(/\n+$/, ''))) ? sigText : sigText.replace(/white-space:nowrap;?/, '').replace(' style=""', '');
if (n.test(txt[pos]) && !n.test(txt[pos - 1]))
pos++;
if (txt[pos + 1] && n.test(txt[pos + 1]))
pos++;
rmvIndent(txt.slice(0, pos).replace(/\s+$/, '') + sigText + txt.slice(pos), CmtE, pos);
if (c.dSum) {
if (!/^(?:(\/\*.+?\*\/ *))([^ ])|^([^/]+?)(?!\/\*.+?\*\/ *)/.test($sum.val())) {
$sum[0].value += c.dSum;
}
c.dSum = '';
}
return e;
};
var $sigBox = $('<input>', {
type: 'checkbox',
name: 'wpSigning',
id: 'wpSigning',
checked: bSig,
change: function() {
useLivePreview();
$(this).next().toggleClass('usermessage');
},
'class': 'not-patrolled',
accessKey: c.sigAccessKey
});
var cURL = 'https://upload.wikimedia.org/wikipedia/commons/thumb/';
var $sBtn = $('<img>', {
src: cURL + '5/52/Tango_style_insert-signature_icon.svg/22px-Tango_style_insert-signature_icon.svg.png',
title: 'امضاء کردن',
rel: 'امضاء کردن',
alt: signTxt.btnAlt,
width: '22',
onclick: 'mw.libs.threadSign.doSig(event)',
height: '22',
style: 'cursor:pointer',
'class': 'tool'
});
var $pBtn = $sBtn.clone().attr({
src: cURL + 'f/fa/Tango_style_ping_icon.svg/22px-Tango_style_ping_icon.svg.png',
title: 'Ping',
alt: '',
rel: 'Ping',
onclick: 'mw.libs.threadSign.setPing()'
});
var $oBtn = $sBtn.clone().attr({
src: cURL + 'b/bb/Tango_style_outdent_icon.svg/22px-Tango_style_outdent_icon.svg.png',
title: 'Outdent',
alt: '',
rel: 'Outdent',
onclick: 'mw.libs.threadSign.setOutdent()'
});
if (!$('#wpSigning').length) {
$('#wpWatchthis').parent().parent().append($sigBox, $('<label>', {
'for': 'wpSigning',
'class': (bSig) ? 'usermessage' : '',
title: signTxt.boxTitle,
style: 'padding:2px 6px;' + ((!bSig) ? 'border-color:#C00;color:#A00' : ''),
text: signTxt.boxText
}), $sBtn, $oBtn, $pBtn);
}
if ($sigBox.updateTooltipAccessKeys)
$sigBox.updateTooltipAccessKeys();
function stripeCmt(txt) {
var cmtRe = /(<!--[\s\S]*?-->)(?!\n*<!--)/g;
var cmtRight = '';
CmtE = '';
while (cmtRe.test(txt)) {
CmtE = '\n' + RegExp.lastMatch;
}
if (CmtE) {
var cmtEndI = cmtRe.lastIndex;
if (cmtEndI < txt.length && cmtEndI > txtLen) {
cmtRight = txt.slice(cmtEndI);
}
txt = $.trim(txt.slice(0, cmtEndI - CmtE.length));
CmtE += cmtRight;
}
return txt;
}
function rmvIndent(txt, cmtE, pos) {
var lrLi = 0;
if (lrLen) {
if (cmtE) {
txt = stripeCmt(txt);
cmtE = CmtE;
}
lrLi = txt.lastIndexOf(r);
txt = txt.slice(0, lrLi) + txt.slice(lrLi).replace(new RegExp('\\n[:*# ]+ *' + $.trim(reUser) + ' *$'), '') + cmtE;
reUser = '';
lrLen = '';
}
$textarea.val(txt);
if (pos)
$textarea.textSelection('setSelection', {
start: pos
}).textSelection('scrollToCaretPosition').focus();
return txt;
}
function getUser() {
var strRe = new RegExp('\\[\\[(?:' + c.wgFormattedNamespaces[2] + '(?:in)?|' + c.wgFormattedNamespaces[3] + '|User(?:[ _]talk)?): ?([^\\]\\|[]+)(?:\\|([^\\]\[]+))?\\]\\]', 'ig');
var reUser = '';
while (strRe.test(lrR)) {
reUser = [RegExp.lastMatch, RegExp.$1, RegExp.$2];
}
if (reUser) {
if (reUser[2]) {
if (new RegExp(c.wgFormattedNamespaces[3] + '|User[ _]talk', 'i').test(reUser[0]))
reUser.pop();
else {
reUser[2] = $.trim(reUser[2]);
if (reUser[2].indexOf(' ') > 1)
reUser.pop();
}
}
var user = $.trim(reUser[1].replace(strRe, '$1'));
if (user) {
if (user.indexOf('/') !== -1)
user = user.split('/')[0];
else if (user.indexOf('#') !== -1)
user = user.split('#')[0];
}
reUser[1] = (user !== c.wgUserName) ? user : '';
}
return reUser;
}
var txtOld = $.trim($textarea.val()),
CmtE = '',
txt = txtOld,
r = '\n';
if (!txt) {
c.dSum = '';
if (ns === 3 && !$Minoredit.length && c.wgRelevantUserName !== c.wgUserName) {
txt = signTxt.hi + '،\n';
$textarea.val(txt).textSelection('setSelection', {
start: txt.length - 1
}).focus();
}
} else if (/-->$/.test(txt))
txt = stripeCmt(txt);
var txtLen = txt.length,
lrI = txt.lastIndexOf(r) + 1,
lrR = txt.slice(lrI),
lrM = lrR.match(/^[:*#]+/),
lrLen = (lrM) ? lrM[0].length : 0,
txtEndLen = -18 - lrLen,
txtOldEnd = txtOld.slice(txtEndLen),
reUser = '',
txtOldL = txtOld.length;
if (c.wgAction === 'edit') {
if (lrLen && lrI + lrLen + 1 < txtLen) {
lrI = ':';
lrLen++;
if (lrLen === 2 && lrM[0] !== ':') {
lrI = '';
lrLen = 1;
}
$textarea.val(txt + r + lrM[0] + lrI + ' ' + CmtE);
txtLen += lrLen + 2;
} else if (!lrLen && c.autoSalut && txtOldEnd && /\d{4} \((?:CES?T|UTC)\)[^\d]*?$/.test(lrR)) {
lrLen++;
reUser = getUser();
lrI = '';
if (reUser) {
lrI = ': ';
reUser = (reUser[2] && /\w+/.test(reUser[2])) ? reUser[2] : reUser[1];
if (reUser)
reUser = signTxt.hi + reUser.replace(/\d+$/g, '') + ', ';
lrLen += reUser.length;
}
txtLen += lrLen + lrI.length;
$textarea.val(txt + r + lrI + reUser + CmtE);
} else {
lrLen = 0;
if (txt) {
txtLen++;
$textarea.val(txt + r + CmtE);
}
}
}
if (bSig)
$(window).on( 'load', function() {
$textarea.textSelection('setSelection', {
start: txtLen
}).textSelection('scrollToCaretPosition').focus();
});
function offSigBox(e) {
if (e.type === 'click')
e = $(e.target);
e = e.prop('checked');
if (e)
useLivePreview();
$sigBox.prop('disabled', e);
}
if ($Minoredit.length) {
offSigBox($Minoredit);
$Minoredit.click(offSigBox);
}
threadSign.doSign = function(e) {
function _chkEdit(c, pos) {
pos = txt.indexOf(c, pos--);
if (pos > 1) {
var txtEnd = txt.substr(pos, 24).replace(/(^\s+)/, '');
var txtNewEnd = txt.slice(pos - 16, pos);
var oldp = (c === r) ? txtOld.lastIndexOf(txtEnd) : 0;
if (!oldp && /-->$/.test(txtEnd)) {
c = txt.lastIndexOf('<!--');
if (c < pos)
pos = c--;
}
if (oldp !== -1 && oldp < pos - 3 && txtOld.indexOf(txtNewEnd + RegExp.$1 + txtEnd) === -1) {
return pos;
}
}
}
var tolerance = 4;
var $textarea = $('#wpTextbox1');
var txt = $.trim($textarea.val());
if ($('#wpMinoredit').prop('checked') || !$('#wpSigning').prop('checked'))
return rmvIndent(txt, CmtE);
if (!txt)
return;
var cOld = threadSign._cntOcc(txtOld),
cNew = threadSign._cntOcc(txt),
oldp, txtEnd, pos;
if (cNew[0] - cNew[1])
return rmvIndent(txt, CmtE);
if (cNew[0] <= cOld[1]) {
if (!CmtE) {
txtEnd = [txt.substr(txtEndLen - (lrLen ? lrLen + 1 : 0), -txtEndLen), txt.slice(txtEndLen)];
oldp = txtOldL + txtEndLen;
if (!txtOld || $.inArray(txtOldEnd, txtEnd) < 0) {
return doSig(e, -1);
}
}
pos = $textarea.textSelection('getCaretPosition');
pos = _chkEdit(r, pos);
if (pos) {
return doSig(e, pos);
}
txt = rmvIndent(txt, CmtE);
if (txt.length > (txtOldL + tolerance)) {
var lines = txt.match(/.+/gm) || [],
linesOld = txtOld.match(/.+/gm) || [];
if (lines.length > linesOld.length) {
lines = lines.filter(function(x) {
return linesOld.indexOf(x) < 0;
}).pop() || [];
if (lines.length) {
pos = txt.lastIndexOf(lines);
return doSig(e, pos + lines.length);
}
}
}
if (CmtE) {
pos = _chkEdit('<!--', txtLen);
if (pos)
return doSig(e, pos);
}
}
if ('Perhelion' === c.wgUserName && /^wp(Diff|Preview)$/.test(e.target.name)) return console.warn(name + ' main-edit, but no auto signature position found!');
if (e.target.name === 'wpSave') {
$editform.submit(function(e) {
if (!confirm(signTxt.confirm))
return e.preventDefault();
});
}
};
$('#wpSave, #wpPreview, #wpDiff, #wpMinoredit').click(threadSign.doSign);
}
};
mw.libs.threadSign = threadSign;
if (mw.config.get('wgPageContentModel') === 'wikitext') {
$(document).trigger('loadWikiScript', ['Gadget-AutoSign.js', threadSign]);
$.when(mw.loader.using(['jquery.textSelection', 'mediawiki.language', 'user.options']), $.ready).then(threadSign.init);
}
}(jQuery, mediaWiki));