משתמש:Eladk/common.js
מראה
הערה: לאחר הפרסום, ייתכן שיהיה צורך לנקות את זיכרון המטמון (cache) של הדפדפן כדי להבחין בשינויים.
- פיירפוקס / ספארי: להחזיק את המקש Shift בעת לחיצה על טעינה מחדש (Reload) או ללחוץ על צירוף המקשים Ctrl-F5 או Ctrl-R (במחשב מק: ⌘-R).
- גוגל כרום: ללחוץ על צירוף המקשים Ctrl-Shift-R (במחשב מק: ⌘-Shift-R).
- אדג': להחזיק את המקש Ctrl בעת לחיצה על רענן (Refresh) או ללחוץ על צירוף המקשים Ctrl-F5.
importUserScript(64);
importUserScript(69);
importUserScript(40);
importUserScript(46);
importUserScript(13);
importUserScript(22);
importUserScript(43);
importUserScript(75);
mw.util.addPortletLink('p-tb', mw.util.getUrl('מיוחד:יומנים/patrol'), 'עריכות בדוקות');
importScript('משתמש:Yonidebest/monobook.js/initShowImageLicenses.js');
importScript('משתמש:Yonidebest/scripts/anonRecentEditors.js');
importScript('משתמש:Yonidebest/monobook.js/createSectionLink.js');
importScript('משתמש:Yonidebest/monobook.js/highlightAnon.js');
importScript('משתמש:Yonidebest/monobook.js/move.js');
// הוספת כפתור "בדיקה" שמבצע החלפות נפוצות של בוט ההחלפות וכן מתריע על בעיות סגנון ועיצוב שונות
// נכתב על ידי [[משתמש:ערן]] ו[[משתמש:קיפודנחש]]
// ניתן להגדיר קיצור מקלדת לכפתור הבדיקה באמצעות הגדרת checkToolKey במונובוק האישי (לדוגמה checkToolKey ='a' כשalt+shift+a יהיה קיצור המקלדת)
// את כיתוב הכפתור ניתן לשנות מ"בדיקה" לשם הרצוי באמצעות הגדרת checkToolName במונובוק האישי. למשל checkToolName="בדיקת סגנון"
var chectTyTool = {
textbox: null,
formatReplacesConfig: [{
from: /\[\[(.*?)\|\1([א-ת]*?)\]\]/g,
to: '[[$1]]$2'
}, {
from: /([א-ת]\]?\]?) ?([,\.]) ?(\[?\[?[א-ת]{3})/g,
to: "$1$2 $3"
}, {
from: /([א-ת])\( ?([א-ת])/g,
to: "$1 ($2"
}, {
from: /\t/g,
to: " "
}, {
from: /(\n\n)\n+/g,
to: "$1"
}, {
from: /== ? ?\n\n==/g,
to: "==\n=="
}, {
from: /^ ? ? \n/gm,
to: "\n"
}, {
from: /(?!.{2}\|)[ \t]{2,}/g,
to: ' '
}, ],
regexes: [],
ignoreStrings: [],
run: function () {
if (this != chectTyTool) {
chectTyTool.run();
return;
}
var t = $('#wpTextbox1');
this.textbox = t.length ? t[0] : null;
if (!this.textbox || this.textbox.value.length == 0) return;
if (!($('#checktyResults').length)) $('.editButtons').after('<div id="checktyResults" style="background:#ffEECC">הערות לבדיקה:</div>');
//first call to remote functions than to local
this.build_regexes();
this.checkImages();
this.disambigCheck();
this.formatReplace();
this.languageCheck();
this.refsCheck();
this.writeMsg($('<div>', {
id: 'waitForDisambigs'
}).text('ממתין לרשימת פירושונים מהשרת...'));
},
writeMsg: function (msg) {
if (msg instanceof Array) {
if (msg.length == 0) return;
msg = '<div>' + msg.join('<br/>') + '</div>';
}
var x = $(msg).css('display', 'none').addClass('checktyMsg');
$('#checktyResults').append(x);
x.show('slow');
},
build_regexes: function (data) {
if (/\{\{\s*ללא_בוט\s*\}\}/.test(this.textbox.value)) {
this.writeMsg('<div>הדף מכיל תבנית "ללא בוט" ולכן לא יבוצעו החלפות</div>');
return;
}
if (data) {
var lines = data.split(/\n/);
var clear_nowiki = /\|<nowiki>(.*)<\/nowiki>/;
var matches;
while (lines.length) {
if (!(matches = lines.shift().match(/^\|(\d+)/))) continue;
var num = parseInt(matches[1], 10);
if (!(matches = lines.shift().match(clear_nowiki))) continue;
try {
var regex = new RegExp(matches[1], 'g');
} catch (e) {
//ignore
continue;
}
if (!(matches = lines.shift().match(clear_nowiki))) continue;
this.regexes[num] = [regex, matches[1]];
var ignore = lines.shift().replace(/\||<\/?nowiki>/g, '');
ignore = $.trim(ignore);
if (ignore) this.ignoreStrings.push($.escapeRE(ignore));
}
this.process_page();
} else $.ajax({
url: wgServer + mw.util.wikiScript('index') + '?title=' + mw.util.wikiUrlencode('ויקיפדיה:בוט/בוט_החלפות/רשימת_החלפות_נוכחית') + '&action=raw&ctype=text/x-wiki',
success: function (data, status) {
chectTyTool.build_regexes(data);
}
});
},
process_page: function () {
var t = this.textbox.value,
skip_dict = {},
skip_ar = [],
actual_replaced = [],
skipmatch = t.match(/{{ללא[_ ]בוט\|\s*(\d+)\s*}}/g);
if (skipmatch) for (var i = 0; i < skipmatch.length; i++) {
var matches = skipmatch[i].match(/{{ללא[_ ]בוט\|\s*(\d+)\s*}}/);
skip_dict[parseInt(matches[1], 10)] = true;
skip_ar.push(matches[1]);
}
var specials = [];
var ignoreRegex = new RegExp('(' + this.ignoreStrings.join('|') + ')');
while (true) { //extract inner links, inner templates and inner params - we don't want to sptit those.
var match = t.match(/(\{\{[^\{\}]*\}\}|[^\[\0]\[[^\{\}\[]*\])/);
if (!match || !match.length) match = t.match(ignoreRegex);
if (!match || !match.length) break;
specials.push(match[0]);
t = t.replace(match[0], "\0" + specials.length + "\0");
}
for (var i in this.regexes)
if (!skip_dict[i] && !isNaN(i)) if (this.regexes[i][0].test(t)) {
actual_replaced.push($.trim(this.regexes[i][1].replace(/\$\d*/g, '')));
t = t.replace(this.regexes[i][0], this.regexes[i][1]);
}
while (true) {
var match = t.match(/\0(\d+)\0/);
if (!match || !match.length) break;
t = t.replace(match[0], specials[parseInt(match[1], 10) - 1]);
}
this.textbox.value = t;
var msg = ['ריצת סקריפט ההחלפות הסתיימה. אנא בצעו "הצגת שינויים" לפני שמירה, כדי לוודא שהסקריפט לא גרם נזק.'];
if (skip_ar.length) msg.push('החלפות שלא התבצעו בגלל תבנית "ללא בוט": ' + skip_ar.join(', '));
msg.push('');
msg.push(actual_replaced.length ? 'התבצעו ההחלפות הבאות: ' + actual_replaced.join(' ,') : 'לא התבצעו החלפות - הדף "נקי".');
this.writeMsg(msg);
if (actual_replaced.length && $('#wpSummary').val() == '') $('#wpSummary').val('סקריפט החלפות (' + actual_replaced.join(', ') + ')');
},
formatReplace: function () {
var txt = this.textbox.value;
//תיקוני פורמט ויקי
$(this.formatReplacesConfig).each(function (i, o) {
txt = txt.replace(o.from, o.to);
})
this.textbox.value = txt;
},
disambigCheck: function () {
$.getJSON('//toolserver.org/~dispenser/cgi-bin/dablinks.py?lang=he&format=json&callback=?', {
page: wgPageName
}, function (res) {
$('#waitForDisambigs').remove();
if (!res || !res.query || !res.query.pages || res.query.pages.length == 0 || res.query.pages[0] == null) return;
var disambigs = $('<div id="disambigWarnning">הגרסה השמורה האחרונה של הדף מקשרת לדפי פירושונים. אנא תקנו את הקישורים לדפים הבאים: </div>');
var isFirst = true;
for (var i = 0; i < res.query.pages[0].disambiguationlinks.length; i++) {
var disTitle = res.query.pages[0].disambiguationlinks[i].title;
//ignore purposely links to disambig pages.
if (disTitle == mw.config.get('wgTitle') + ' (פירושונים)') continue;
if (!isFirst) {
disambigs.append(', ');
}
isFirst = false;
disambigs.append($('<a href="' + mw.util.getUrl(disTitle) + '">' + disTitle + '</a>').click(function () {
var disambigName = $(this).text();
$.ajax({
url: mw.util.wikiScript('index'),
data: {
title: disambigName,
action: 'render'
},
success: function (data) {
chectTyTool.resolveDisambig(disambigName, data);
}
});
return false;
}));
}
//ignore disambigs warning if there is no real link to disambigs
if (!isFirst) chectTyTool.writeMsg(disambigs);
});
},
resolveDisambig: function (name, data) {
var offset = 0;
var textbox = this.textbox;
var linkRgx = new RegExp('(?:\\.|^)([^\\.\n]*\\[\\[' + $.escapeRE(name) + '[\\|\\]].*?)[\\.\\n]', 'm');
var cSentence = $('<div>');
var options = $('<div>').append($('li', data).map(function () {
var a = $(this).children('a').get(0);
if (a) {
var storeTitle = $(this).text();
var anchor = '',
h = a.href;
if (h.indexOf('#') + 1) anchor = decodeURI(h.substr(h.indexOf('#')).replace(/\./g, '%').replace(/_/g, ' '))
$(a).text(a.title.replace(" (הדף אינו קיים)", "") + anchor);
a.title = storeTitle;
}
return a || null;
}).click(resolve));
var orgPos = $(textbox).textSelection('getCaretPosition');
var disambigDialog = $('<div>').append('מה הכוונה ב "' + name + '" במשפט: ' + '<hr/>').append(cSentence).append(options.buttonset()).dialog({
title: 'תיקון פירושונים',
close: function () {
$(textbox).textSelection('setSelection', {
start: orgPos
});
}
});
findSentence();
function findSentence() {
var text = textbox.value.substr(offset);
var m = text.match(linkRgx);
if (!m) {
disambigDialog.dialog('close');
return;
}
offset += text.indexOf(m[1]);
var linkIndex = m[1].indexOf('[[' + name) + 2;
var html = m[1].substr(0, linkIndex) + '<big>' + name + '</big>' + m[1].substr(linkIndex + name.length);
cSentence.html(html);
}
function resolve() {
var answer = $(this).text();
var text = textbox.value;
var startLink = text.indexOf('[[' + name, offset);
if (text.charAt(startLink + 2 + name.length) != '|') answer += '|' + name;
offset += answer.length + 2;
text = text.substr(0, startLink + 2) + answer + text.substr(startLink + 2 + name.length);
textbox.value = text;
findSentence();
chectTyTool.addSummary('תיקון קישור לפירושונים');
return false;
}
},
addSummary: function (msg) {
var editSummary = $('#wpSummary').val();
if (editSummary.indexOf(msg) == -1) $('#wpSummary').val(editSummary + (editSummary.length == 0 ? '' : ', ') + msg);
},
checkImages: function (data) {
if (!data) {
var mEn = /\[\[en:(.*?)\]\]/.exec(this.textbox.value);
//suggest adding commons link according to en interwiki
if (mEn && !(/{{מיזמים[\s\S.]*\|ויקישיתוף/m.test(this.textbox.value)) && !(/{{ויקישיתוף בשורה/m.test(this.textbox.value))) {
$.getJSON('//en.wikipedia.org' + mw.util.wikiScript('api') + '?callback=?', {
action: 'query',
prop: 'iwlinks',
titles: mEn[1],
iwprefix: 'commons',
format: 'json'
},
function (data) {
if (data && data.query && data.query.pages) {
for (var pageId in data.query.pages) {
var enPage = data.query.pages[pageId];
if (enPage.iwlinks && enPage.iwlinks[0] && enPage.iwlinks[0]['*']) {
var commonLink = '{{ויקישיתוף בשורה|' + enPage.iwlinks[0]['*'].replace('_',' ') + '}}';
var msg = $('<div>', {
text: 'בערך זה חסר קישור לוויקישיתוף. ניתן להוסיף קישור באמצעות בחירת המקום הנכון להוספתו בערך ולחיצה על הקישור הבא. '
}).append($('<a>', {
href: '#',
text: 'להוספה'
}).click(function () {
mw.toolbar.insertTags(commonLink)
chectTyTool.addSummary('ויקישיתוף בשורה');
}));
chectTyTool.writeMsg(msg);
}
}
}
});
}
//in case there are no images in page
if (!mw.util.getParamValue('section') && !(/\[\[(תמונה|קובץ|File|Image):/i.test(this.textbox.value))) {
var articleName = mw.config.get('wgPageName');
//run fist on english interwiki too if such exist
if (mEn) articleName += '%0D%0A' + mEn[1];
var fistURL = this.fistURL({
datatype: 'articles',
data: articleName
});
var msg = $('<div>', {
text: 'בדף זה אין תמונות. ניתן לחפש תמונות חופשיות ממקורות שונים. '
}).append($('<a>', {
href: decodeURI(fistURL),
text: 'חיפוש תמונות',
target: '_blank'
}));
this.writeMsg(msg);
return;
}
$.getJSON(
mw.util.wikiScript('api'), {
action: 'query',
generator: 'images',
titles: mw.config.get('wgPageName'),
prop: 'templates',
format: 'json'
},
function (data) {
if (data && data.query && data.query.pages) chectTyTool.checkImages(data.query.pages);
});
} else {
var fairUsageTemplates = ['תבנית:שימוש הוגן'];
var fairUseImgs = $.map(data, function (o) {
if (!o.templates) return;
var isFairUsage;
$.each(o.templates, function (k, license) {
if ($.inArray(license.title, fairUsageTemplates) != -1) {
isFairUsage = true;
return false;
}
});
if (isFairUsage) return o.title;
});
if (fairUseImgs.length == 0) return;
//add message with fair usage images
var fistURL = this.fistURL({
data: fairUseImgs.join('\r\n'),
datatype: 'replaceimages'
});
var msg = $('<div>', {
text: 'הדף מכיל תמונות בשימוש הוגן, שמומלץ להחליפן בחלופות חופשיות במידת האפשר. '
}).append($('<a>', {
href: fistURL,
text: 'חיפוש חלופות חופשיות',
target: '_blank'
}));
this.writeMsg(msg);
}
},
fistURL: function (p) {
return 'https://tools.wmflabs.org/fist/fist.php?doit=1&language=he&project=wikipedia¶ms[free_only]=1¶ms[commons_max]=5¶ms[flickr_max]=5¶ms[include_flickr_id]=1¶ms[flickr_new_name_from_article]=1¶ms[default_thumbnail_size]=250¶ms[jpeg]=1¶ms[png]=1¶ms[gif]=1¶ms[svg]=1¶ms[output_format]=out_html¶ms[min_width]=80¶ms[min_height]=80&sources[languagelinks]=1&sources[commons]=1&sources[flickr]=1¶ms[ll_max]=5&' + $.param(p);
},
languageCheck: function () { //בדיקות סגנון ולשון
var remarkSuperlatives = 'ייתכן שהערך כולל סופרלטיבים מיותרים';
var remarkWhereWordStart = 'בערך מופיעות אותיות בכל\"ם בסמוך למילה ';
var remarkWhereWordEnd = '. מומלץ לנסח זאת מחדש עם המילים לאן או מאין';
var remarkUnsuitableExpressionStart = 'בערך מופיע הביטוי ';
var remarkPossibleUnsuitableExpressionStart = 'ייתכן ש' + remarkUnsuitableExpressionStart;
var remarkEmoExpressionEnd = ' שאין מקומו באנציקלופדיה, המביאה מידע בצורה מאוזנת, ואין לערב בה את רגשות הכותבים, גם אם הם מקובלים על הכול (ראו ויקיפדיה:לשון)';
var remarkWrongConditionalExpressionEnd = 'במובן של מילת תנאי. אם זהו משפט תנאי, יש לכתוב במקומו את המילה אם.';
var remarkObviousEnd = ". אם הפרט אכן ידוע לכול, אין טעם לציין זאת, ואם לא אז מעורר תחושת בורות אצל הקוראים (מידע נוסף ב ויקיפדיה:לשון)";
var checks = [{
'test': /במידה ש/,
'remark': remarkPossibleUnsuitableExpressionStart + 'במידה ש' + remarkWrongConditionalExpressionEnd
}, {
'test': /במידה ו/,
'remark': remarkPossibleUnsuitableExpressionStart + 'במידה ו' + remarkWrongConditionalExpressionEnd
}, {
'test': /בגלל ש/,
'remark': remarkPossibleUnsuitableExpressionStart + 'בגלל ש. אם הוא אכן מופיע, מומלץ לשקול להחליפו בכיוון ש, משום ש, מאחר ש או מפני ש (מידע נוסף ב ויקיפדיה:לשון)'
}, {
'test': /עובדה מעניינת היא/,
'remark': 'אין הנחתום מעיד על עיסתו. מומלץ להימנע מהביטוים עובדה מעניינת היא או יש לציין. יש לתת לקוראים להחליט אם העובדה ראויה לציון. (מידע נוסף ב ויקיפדיה:לשון'
}, {
'test': /יש לציין/,
'remark': 'אין הנחתום מעיד על עיסתו. מומלץ להימנע מהביטוים עובדה מעניינת היא או יש לציין. יש לתת לקוראים להחליט אם העובדה ראויה לציון. (מידע נוסף ב ויקיפדיה:לשון'
}, {
'test': /כידוע/,
'remark': remarkUnsuitableExpressionStart + 'כידוע' + remarkObviousEnd
}, {
'test': /כמובן/,
'remark': remarkUnsuitableExpressionStart + 'כמובן' + remarkObviousEnd
}, {
'test': /נולד להוריו/,
'remark': 'בערך מופיע הצירוף "נולד להוריו". מן הסתם נולד להוריו, ואין צורך לציין זאת (מידע נוסף ב ויקיפדיה:לשון)'
}, {
'test': /נולדה להוריה/,
'remark': 'בערך מופיע הצירוף "נולדה להוריה". מן הסתם נולדה להוריה, ואין צורך לציין זאת (מידע נוסף ב ויקיפדיה:לשון)'
}, {
'test': /למרות ש/,
'remark': remarkPossibleUnsuitableExpressionStart + 'למרות ש. אם הוא אכן מופיע, מומלץ לשקול להחליפו באף על פי ש (מידע נוסף ב ויקיפדיה:לשון)'
}, {
'test': /זכה לביקורת/,
'remark': remarkUnsuitableExpressionStart + 'זכה לביקורת. יש להעדיף את הביטוי ספג ביקורת (מידע נוסף ב ויקיפדיה:לשון)'
}, {
'test': /זכתה לביקורת/,
'remark': remarkUnsuitableExpressionStart + 'זכתה לביקורת. יש להעדיף את הביטוי ספגה ביקורת (מידע נוסף ב ויקיפדיה:לשון)'
}, {
'test': /חייו המוקדמים/,
'remark': remarkUnsuitableExpressionStart + 'חייו המוקדמים. יש להעדיף ראשית חייו, ילדותו או נעוריו (מידע נוסף ב ויקיפדיה:לשון)'
}, {
'test': /חייה המוקדמים/,
'remark': remarkUnsuitableExpressionStart + 'חייה המוקדמים. יש להעדיף ראשית חייה, ילדותה או נעוריה (מידע נוסף ב ויקיפדיה:לשון)'
}, {
'test': /כנראה ש/,
'remark': remarkUnsuitableExpressionStart + 'כנראה ש. רצוי להחליפו בנראה ש'
}, {
'test': /להיכן/,
'remark': remarkWhereWordStart + 'היכן' + remarkWhereWordEnd
}, {
'test': /מהיכן/,
'remark': remarkWhereWordStart + 'היכן' + remarkWhereWordEnd
}, {
'test': /לאיפה/,
'remark': remarkWhereWordStart + 'איפה' + remarkWhereWordEnd
}, {
'test': /מאיפה/,
'remark': remarkWhereWordStart + 'איפה' + remarkWhereWordEnd
}, {
'test': /הכי טוב/,
'remark': remarkUnsuitableExpressionStart + 'הכי טוב. כדאי לשקול להחליפו לטוב ביותר (מידע נוסף ב ויקיפדיה:שגיאות תרגום נפוצות)'
}, {
'test': /(נפלא|ללא לאות|מחריד)/,
'remark': remarkSuperlatives
}, {
'test': /[^ס]נהדר/,
'remark': remarkSuperlatives
}, {
'test': /למרבה הצער/,
'remark': remarkUnsuitableExpressionStart + 'למרבה הצער' + remarkEmoExpressionEnd
}, {
'test': /למרבה המזל/,
'remark': remarkUnsuitableExpressionStart + 'למרבה המזל' + remarkEmoExpressionEnd
}, {
'test': /ראה את עצמו/,
'remark': remarkUnsuitableExpressionStart + 'ראה את עצמו. אי אפשר להיכנס לראש של אדם ואי אפשר לדעת איך הוא ראה את עצמו (ראו ויקיפדיה:לשון)'
}, {
'test': /בתקופת תור/,
'remark': remarkUnsuitableExpressionStart + 'בתקופת תור. אם פירוש המילה תור בהקשר זה הוא תקופה, זו כפילות מיותרת (ראו ויקיפדיה:לשון)'
}, {
'test': /כמו לדוגמה/,
'remark': remarkUnsuitableExpressionStart + 'כמו לדוגמה. זו כפילות מיותרת (ראו ויקיפדיה:לשון)'
}, {
'test': /בשנים האחרונות/,
'remark': remarkUnsuitableExpressionStart + 'בשנים האחרונות. ביטוי זה תלוי זמן ויש להחליפו בציון מדויק יותר של זמן (ראו ויקיפדיה:לשון)'
}, {
'test': /בימים אלה/,
'remark': remarkUnsuitableExpressionStart + 'בימים אלה. ביטוי זה תלוי זמן ויש להחליפו בציון מדויק יותר של זמן (ראו ויקיפדיה:לשון)'
}, {
'test': /לאחרונה/,
'remark': remarkUnsuitableExpressionStart + 'לאחרונה. ביטוי זה תלוי זמן ויש להחליפו בציון מדויק יותר של זמן (ראו ויקיפדיה:לשון)'
}, {
'test': /כיום|לאחרונה/,
'remark': remarkUnsuitableExpressionStart + 'כיום/לאחרונה. ביטוי זה תלוי זמן ויש להחליפו בציון מדויק יותר של זמן (ראו ויקיפדיה:לשון)'
}, {
'test': / זצ?\"ל /,
'remark': 'אין להצמיד לאדם את התואר ז\"ל (מידע נוסף ב ויקיפדיה:עקרונות מיוחדים לשפה העברית)'
}, {
'test': /(ש[יו]?חרר.*?(אלבום|תוכנה|סינגל)|(אלבום|תוכנה|סינגל).*?ש[יו]?חרר)/,
'remark': remarkPossibleUnsuitableExpressionStart + 'שחרור במשמעות של הוצאה לאור. זו שגיאת תרגום נפוצה ויש להחליפה בהוציא לאור (מידע נוסף ב ויקיפדיה:לשון)'
}, {
'test': /(ש[יו]?חרר.*?סרט|סרט.*?ש[יו]?חרר)/,
'remark': remarkPossibleUnsuitableExpressionStart + 'שחרור של סרט במשמעות של הוצאה לאור. זו שגיאת תרגום נפוצה ויש לכתוב שהסרט יצא, או שהציג בהקרנת בכורה (מידע נוסף ב ויקיפדיה:לשון)'
}];
var txt = this.textbox.value;
var checkWarnings = $('<div></div>');
var highlightStr = this.highlightString;
var findFunc = function () {
var toFind = eval(unescape($(this).attr('href').substr(1))).exec($('#wpTextbox1').val());
if (toFind) highlightStr(toFind[0]);
return false;
};
for (x in checks) {
if (checks[x]['test'].test(txt)) {
checkWarnings.append($('(<a href="#' + escape(checks[x]['test']) + '">חיפוש</a>)').click(findFunc));
checkWarnings.append(' - ' + checks[x]['remark'] + '<br/>');
}
}
//בדיקות עיצוביות: רוחב אלמנטים בערך
var largeElement = /[6789][0-9][0-9]px/;
if (largeElement.test(txt)) checkWarnings.append('בערך קיים אלמנט גדול, רצוי להקטין כדי שיתאים לרזולוציות נמוכות <br/>');;
var manyLi = RegExp('(?:\n\\*.*){20}');
if (manyLi.test(txt)) checkWarnings.append('נראה כי בערך רשימה של מעל 20 פריטים. כדאי לשקול לפצלה לשני טורים באמצעות תבנית:שני טורים');
if (checkWarnings.html().length) this.writeMsg(checkWarnings);
},
refsCheck: function () { //בדיקת אחידות הערות שוליים
var txt = this.textbox.value,
m;
//remove templates within templates
var specials = [];
while (m = /\{\{(?!הערה\|)[^}]*?\}\}/g.exec(txt)) {
txt = txt.replace(m[0], '/0' + specials.length + '/0')
specials.push(m[0])
}
txt = txt.replace(/(\{\{הערה\|.*?\}\}|<ref>.*?<\/ref>)\s+(?=(\{\{הערה\||<ref>))/g, '$1'); // remove spaces between refs
var refAfter = /([\.\,])\s*((\{\{הערה.*?\}\}|<ref>.*?<\/ref>)+)\.?/g,
refBefore = /\.?((\{\{הערה\|([^\{]|\{(?!\{הערה\|))*\}\}|<ref>([^<]|<(?!\/ref>))*<\/ref>)+)\s*([\.\,])/g
var countAfter = 0,
countBefore = 0;
while (refAfter.exec(txt)) countAfter++;
while (refBefore.exec(txt)) countBefore++;
if (countAfter > 0 && countBefore > 0) {
this.writeMsg($('<div>', {
text: 'חוסר תאימות בהערות שוליים: ' + countAfter + ' הערות אחרי סימן פיסוק, ' + countBefore + ' הערות לפני סימן פיסוק [תיקון: '
}).append($('<a>', {
text: 'אחרי',
href: '#'
}).click(function () {
txt = txt.replace(/([\.\,])\s+(\{\{הערה\||<ref>)/g, '$1$2'); // remove spaces before refs
txt = txt.replace(refBefore, '$5$1');
while (m = specials.pop()) txt = txt.replace('/0' + specials.length + '/0', m);
chectTyTool.textbox.value = txt;
})).append(' | ').append($('<a>', {
text: 'לפני',
href: '#'
}).click(function () {
txt = txt.replace(/(\{\{הערה.*?\}\}|<\/ref>)\s+([\.\,])/g, '$1$2'); // remove spaces after refs
txt = txt.replace(refAfter, '$2$1');
while (m = specials.pop()) txt = txt.replace('/0' + specials.length + '/0', m);
chectTyTool.textbox.value = txt;
})).append(']'));
}
},
//original version from http://code.google.com/p/proveit-js/source/browse/ProveIt_Wikipedia.js#384
//thanks to Georgia Tech Research Corporation. Atlanta, GA 30332-0415
highlightString: function (toFind) {
var txtArea = $('#wpTextbox1');
var nextPlace = txtArea.val().indexOf(toFind, txtArea.textSelection('getCaretPosition') + 1);
if (nextPlace == -1) nextPlace = txtArea.val().indexOf(toFind); //start from begining
if (nextPlace == -1) return; //not found... nothing to do
var origText = txtArea.val();
txtArea.val(origText.substring(0, nextPlace));
txtArea.focus();
txtArea.scrollTop(1000000); //Larger than any real textarea (hopefully)
var curScrollTop = txtArea.scrollTop();
txtArea.val(origText);
if (curScrollTop > 0) {
var HALF_EDIT_BOX_HEIGHT = 200;
txtArea.scrollTop(curScrollTop + HALF_EDIT_BOX_HEIGHT);
}
txtArea.focus().textSelection('setSelection', {
start: nextPlace,
end: nextPlace + toFind.length
});
}
};
if ($.inArray(mw.config.get('wgAction'), ['edit', 'submit']) + 1) $(document).ready(function () {
if (!window.checkToolName) checkToolName = 'בדיקה';
$('#wpPreview').after($('<input type="button" id="btnCheckTool" title="צ\'קטי - כלי לבדיקת בעיות נפוצות ועוד" value="' + checkToolName + '" />').click(chectTyTool.run));
});
var summaries = [
"שימושי",
{title: "תבנית", content: "הוספה, הסרה או שינוי בתבנית"},
{title: "טבלה", content: "הוספה, הסרה או שינוי של טבלה"},
{title: "יצירה", content: "יצירת דף"},
{title: "בקשה", content: "בקשה"},
{title: "הזמנה", content: "הזמנה למיזם, דף וכדומה"},
{title: "שאלה", content: "שאילת שאלה"},
{title: "שינוי", content: "שינוי מידע"},
];
importUserScript(16);
importUserScript(61);
importUserScript(63);
importUserScript(67);
importUserScript(78);
importUserScript(48);