משתמש:Mod/common.js
מראה
הערה: לאחר הפרסום, ייתכן שיהיה צורך לנקות את זיכרון המטמון (cache) של הדפדפן כדי להבחין בשינויים.
- פיירפוקס / ספארי: להחזיק את המקש Shift בעת לחיצה על טעינה מחדש (Reload) או ללחוץ על צירוף המקשים Ctrl-F5 או Ctrl-R (במחשב מק: ⌘-R).
- גוגל כרום: ללחוץ על צירוף המקשים Ctrl-Shift-R (במחשב מק: ⌘-Shift-R).
- אדג': להחזיק את המקש Ctrl בעת לחיצה על רענן (Refresh) או ללחוץ על צירוף המקשים Ctrl-F5.
window.script64Watch = 'unwatch';
if (mw.config.get('wgTitle') == "Mod/אחר" && mw.config.get('wgAction') == 'purge') {
$('form[action*="action=purge"]').submit();
}
//importScript('משתמש:1Or/patrol.js');
extraSpaces();
markCategories();
clickForUndo();
addFixButton();
// add info about extra spaces
function extraSpaces () {
var x = document.getElementsByClassName('mw-parser-output')[0],
newLine = 0,
doubleSpace = 0,
check1,
check2;
if (x && document.title.indexOf(':') == -1) {
for (var i = 0; i < x.children.length; ++i) {
var cur = x.children[i];
if (cur.tagName == 'P') {
check1 = cur.innerHTML.match(/ \n/g);
check2 = cur.innerHTML.match(/ /g);
if (check1 || check2) {
newLine += check1 ? check1.length : 0;
doubleSpace += check2 ? check2.length : 0;
}
}
}
var elem = document.createElement('p');
elem.innerText='New line:' + newLine + '\nDouble space:' + doubleSpace;
elem.style.cssText = 'position: absolute; left: 0px; text-align: left; font-size: 13px; direction: ltr;';
document.body.insertBefore(elem, document.body.children[0]);
}
}
// marks categories with sub-pages
function markCategories () {
if (mw.config.get('wgCanonicalNamespace') == 'Category' || mw.config.get('wgTitle') == "Mod/אחר") {
var cats = document.getElementsByClassName('CategoryTreeItem');
for (var i = 0; i < cats.length; ++i) {
if (cats[i].children[2]) {
if (cats[i].children[2].innerText != "(ריקה)") {
cats[i].children[2].style.backgroundColor = 'yellow';
} else if (['קטגוריות ציטוט לריקון מיידי', 'שגיאות פרמטריות לפי תבנית'].includes(mw.config.get('wgTitle'))) {
cats[i].parentElement.parentElement.parentElement.removeChild(cats[i].parentElement.parentElement);
--i; // return i back as the child was removed
}
}
}
}
}
// gives the option to click a diff line to undo it, works only for small changes
function clickForUndo () {
var table = document.querySelector('.diff > tbody');
if (table && table.children && table.children.length > 1) {
table.childNodes.forEach(function (row) {
if (row.children && row.children.length == 4) {
row.children[1].onclick = function() {
var oldText = this.parentElement.children[1].innerText,
newText = this.parentElement.children[3].innerText,
textBox = document.getElementById('wpTextbox1'),
text = textBox.textContent;
text = text.replace(newText, oldText);
textBox.textContent = text;
};
}
});
}
}
// add a 'fix spaces' button between 'show changes' and 'cancel'
function addFixButton () {
var cancel = document.getElementById('mw-editform-cancel');
if (cancel && (mw.config.get('wgAction') == 'edit' || mw.config.get('wgAction') == 'submit')) {
var span = document.createElement('span'),
input = document.createElement('input');
span.id = 'wpFixSpaces';
span.className = 'oo-ui-widget oo-ui-widget-enabled oo-ui-inputWidget oo-ui-buttonElement oo-ui-buttonElement-framed oo-ui-labelElement oo-ui-buttonInputWidget';
span.title = 'תיקון כללי';
input.className = 'oo-ui-inputWidget-input oo-ui-buttonElement-button';
input.value = 'תיקון כללי';
input.style.width = '96px';
span.appendChild(input);
cancel.parentElement.parentElement.insertBefore(span, cancel.parentElement);
document.getElementById('wpFixSpaces').onclick = function () {
var textBox = document.getElementById('wpTextbox1'),
name = document.getElementById('firstHeadingTitle').innerText,
clearName = name.replace(/ \(.*/, ''),
strImg = document.querySelector("meta[property='og:image']") || { content: '/' },
splitImg = strImg.content.split('/'),
artImg = window.decodeURI(splitImg[splitImg.length-(strImg.content.indexOf('/thumb/') > 0 ? 2 : 1)]), // get image info
text = textBox.textContent.replace(/\-\-\>/g, 'arrowleft'); // weird bugfix
if ((text.indexOf('בעבודה}}') == -1 && text.indexOf('{{מקצרמר למובחר') == -1) ? true : confirm('הערך בעבודה. האם להמשיך?')) {
text = text.replace(/[\u200A\u200B\u200E\u200F\u2028\u202A\u202B\u202C\u202D\u202E\uFEFF]/g, ''); // remove invisible Unicode control characters
text = text.replace(/ /g, ' '); //special space to space
text = text.replace(/\t/g, ' ').replace(/ {2,}/g, ' ').replace(/(?<!\=) \n/g, '\n'); // tabs and double spaces to space
text = text.replace(/ ([\.\,])(?!\.)/g, '$1'); // double punctuation
text = text.replace(/\s\-(?!\-)(\S)/g, ' - $1').replace(/(קטגוריה:) /g, '$1').replace(/ \-([A-z\d\u0590-\u05FF\[\]\(\)])/g, ' - $1').replace(/([A-z\d\u0590-\u05FF\[\]\(\)])- /g, '$1 - ').replace(/([\u0590-\u05FF]) \: /g, '$1: ').replace(/ (<ref|{{הערה)/g, '$1').replace(/\( ?(.*?) ?\)/g, '($1)'); // spaces
text = text.replace(/([\n ])([בהוכלמ])\s?\-\s?('?'?'?\"?\"?\[?\[?[\dA-z])/g, '$1$2-$3').replace(/([\n ])([בהוכלמ])(\[?\[?\d)/g, '$1$2-$3').replace(/([\n ])([בהוכלמ]) ('?'?'?\"?\"?\[?\[?[\dA-z])/g, '$1$2-$3').replace(/(\d{4}\]\] )-( \[\[\d{1,2})/g, '$1–$2'); // dash
text = text.replace(/"/g, "\"").replace(/ /g, ' ').replace(/&[mn]dash;/g, '-').replace(/–/g, '-').replace(/&[rl]squo;/g, "\'"); // html codes to chars
text = text.replace(/([א-ת])״([א-ת]+(?:[\|\]\)\} ]|$))/g, '$1"$2').replace(/([א-ת])׳([א-ת]+(?:[\|\]\)\} ]|$))/g, "$1'$2"); // fix quotation mark as part of acronyms
text = text.replace(/\[\[(.+)\|('''?'?'?|")\1\2]]/g, '$2[[$1]]$2'); // bad bold\quotation full
text = text.replace(/('''?'?'?|")\[\[(.+)\|\2\1]]/g, '$1[[$2]]$1'); // bad bold\quotation partly start
text = text.replace(/\[\[(.+)\|('''?'?'?|")\1]]\2/g, '$2[[$1]]$2'); // bad bold\quotation partly end
text = text.replace(/\[\[(.+)\|(ו?[בהכלמש])\1]]/g, '$2[[$1]]'); // THE inside
text = text.replace(/\[\[(.+)\|(\(?)\1(\)?)]]/g, '$2[[$1]]$3'); // bad brackets
text = text.replace(/\[\[(.+)\|\1([,\.:])]]/g, '[[$1]]$2'); // bad punctuation
text = text.replace(/\[\[(.+)\|\1]]/g, '[[$1]]'); // identical text
text = text.replace(/ ([-–]) ''' /g, '\'\'\' $1 '); // wrong - location
text = text.replace(/<nowiki>''<\/nowiki>/g, '"').replace(/<\/?nowiki\/?>/g, ''); // remove nowiki
text = text.replaceAll("[[" + name +"]]", name).replaceAll("[[" + name + "|" + clearName + "]]", clearName); // self-linked
text = text.replace(/\n ?\*\s*\n/g, '\n'); // unneeded list child
text = text.replace(/<cite.*?<\/cite>/ig, ''); // badly copied cite from automated translate
text = text.replace(/(\|(author|editor)\d?-?link\d? ?= ?[A-z].*?)(?=[\||}])/g, ''); // author/editor links copied from automated translate
text = text.replace(/({{Cite .*?\|.*?\|.*? ?= ?)(\[\[).*?\|?([A-Za-zæéá \-\(\)\'\.,&]+)(\]\])(.*?}})/ig, '$1$3$5');
text = text.replace(/<small.*?\[\[:?en:(.*?)\|.*?>/g, '{{אנ|$1}}').replace(/\(\[\[:?en:(.*?)\|.*?\)/g, '{{אנ|$1}}').replace(/\[\[:?en:(.*?)\|(.*?)]]/g, '$2 {{אנ|$1}}'); // use template for redirecting to wikien
text = text.replace(/<ref>{{צ-מאמר\|שם=(.*?)\|.*https:\/\/en\.wikipedia\.org.*?<\/ref>/g, ' {{אנ|$1}}'); // fix bad call to wikien
text = text.replace(/<\/?u\/?>/g, ''); // remove underline
// text = text.replace(/<\/?big\/?>/g, ''); // remove big
text = text.replace(/(ISBN|ISSN|PMID): ?(\d)/g, '$1 $2').replace(/(ISBN|ISSN|PMID) <bdi>(.*?)<\/bdi>/g, '$1 $2').replace(/ISBN (\d+.?\d+.?\d+.?\d+.?\d+-?X?)/g, '{{מ'+'סת"ב|$1|אנגלית=כן}}').replace(/ISSN (\d+).?(\d+)/g, '{{I'+'SSN|$1-$2}}').replace(/PMID (\d+)/g, '{{P'+'MID|$1}}').replace(/RFC (\d+)/g, '{{R'+'FC|$1}}'); // ISBN, ISSN, PMID
text = text.replace(/(\[\[(?:קובץ|תמונה):.*?\|)(קישור=.*?\|)(.*]])/g, '$1$3'); // remove unneeded url in file/picture
if (text.indexOf('קטגוריה:דפים עם כיתוב ללא תמונה בתבניות') > 0 && artImg) { // use media image when caption exists with no image
text = text.replace(/\| ?תמונה ?=\n/g, '').replaceAll('\[\[קטגוריה:דפים עם כיתוב ללא תמונה בתבניות\]\]\n', '');
text = text.replaceAll('|כיתוב', '| תמונה = ' + artImg + '\n|כיתוב').replaceAll('| כיתוב', '| תמונה = ' + artImg + '\n| כיתוב');
}
text = text.replace(/}}\n\n'''/g, '}}\n\'\'\''); // space after template
text = text.replace(/תאריך (לידה|פטירה) ?= ?(\d+ .*) (\d+)/g, 'תאריך $1 = [[$2]] [[$3]]'); // date in template
text = text.replace(/(נולדה? ב-)(\d+ [א-ת]+) (\d+)\)/g, '$1[[$2]] [[$3]])').replace(/(\d+ [א-ת]+) (\d+) [-–] (\d+ [א-ת]+) (\d+)\)/g, '[[$1]] [[$2]] – [[$3]] [[$4]])'); // birth date in header
text = text.replace(/\| ?{{כ}} ?(\d)/g, '|$1'); // clear date
// text = text.replaceAll('|כיוון=ימין', ''); // temporary
text = text.replace(/ - וואלה!? [א-ת]+/g, ''); // walla
text = text.replace(/\|language=iw/g, ''); // non existing language
// text = text.replace(/,? '?'?et al\.?'?'?/g, ''); // explicit use of et al
textBox.textContent = text.replace(/arrowleft/g, '-->'); // second part of the weird bugfix
}
};
}
}