לדלג לתוכן

מדיה ויקי:Gadget-TemplatesExternalLinks.js: הבדלים בין גרסאות בדף

מתוך צפונות ויקי
מ לבקשת קיפוד
מ 166 גרסאות של הדף wikipedia:he:מדיה_ויקי:Gadget-TemplatesExternalLinks.js יובאו
 
(55 גרסאות ביניים של 11 משתמשים אינן מוצגות)
שורה 1: שורה 1:
//Adds wizard for using templates for external links
//Adds wizard for using templates for external links
//Written by [[User:קיפודנחש]]
//Written by [[User:קיפודנחש]]
   
if (($.inArray( mw.config.get( 'wgAction' ), ['edit', 'submit']) + 1) && ( !$('#wpTextbox1').prop( 'readonly' ) ))
function ltw_createTemplate() {
mw.loader.using('jquery.textSelection', function() {
var par = ["{{" + this.templateName];
 
for (var i in this.orderedFields)
function templates(templateName) {
par.push((this.problematic? (parseInt(i)+1) + "=":"") + $.trim(this.orderedFields[i].value));
var constants = ["",
if (this.defParam)
"שם המחבר",
for (var parnum in this.defParam)
"כותרת המאמר",
if (par[parnum] == this.defParam[parnum])
"מספר (כפי שמופיע בקישור)",
par[parnum] = '';
"מידע נוסף, למשל תאריך. נסו לשמור על הפורמט '30 באוגוסט 1958'",
while (par.length && !par[par.length-1].length && this.orderedFields[par.length-2].type) // remove tailing empty ordered params.
"מספר הסדרה",
par.pop();
"נתיב הדף - כמו שמופיע בקישור",
var code = par.join("|");
"מידע נוסף (לא תאריך)",
if (this.namedFields) {
"ספר",
var pairs = ['']; // so we'll get the firs bar
"פרק",
for (j in this.namedFields) {
"פסוק",
var val = $.trim(this.namedFields[j][1].value);
"מסכת",
if (val.length > 0)
"דף",
pairs.push(this.namedFields[j][0] + '=' + val);
"עמוד",
"משנה",
"סימן",
"סעיף",
"הלכות",
"שם",
"מספר הסדרה",
'מספר סדרת "ART"',
"",
"תאריך כתבה (בפורמט 1949/07/25, כפי שמופיע בקישור)",
"סוג הפרסום, כפי שמופיע בקישור אחרי '=EntityId'. בדרך כלל 'Ar' לכתבה רגילה, 'Pc' לתמונה ו־'Ad' לפרסומת",
"שם הספר",
"קידומת סוג הכתבה",
"מזהה נושא הכתבה",
"שם הערך",
"קוד כניסה חינם (כפי שמופיע בקישור)",
"כרך",
"הפניה לכתבה (כפי שמופיע בקישור)",
"הלכה",
"",
"חלק",
"כותרת הדף",
"שם החלל",
"מספר ה-folder כמו שמופיע בקישור",
"כותרת הספר/שם הקהילה",
"מספר גיליון, תאריך פרסום ומספרי עמודים",
"החלק השני של הקישור",
"מספר העמוד, כפי שמופיע באתר",
"שם האיש",
"שם האמן",
"שם העיתון",
"קוד העיתון באתר (שלוש אותיות לטיניות גדולות)",
"שם המין/זן",
"שם הרב",
"שם השיעור",
"השיעור כשם שמופיע בקישור",
"מספר גיליון, תאריך פרסום ומספרי עמודים",
"שם הערך בויקישיבה",
"קידומת הקישור, אם שונה מ-www",
"האותיות שמציינות את המדינה"
];
 
var templatesAr = [
{t: 'קישור כללי', np: [
['הכותב', 'שמות כותבי המאמר', 1],
['כותרת', 'שם המאמר המקושר'],
['כתובת', 'הקישור (כלומר ה-URL) עצמו'],
['תאריך', 'תאריך המאמר, בפורמט "30 באוגוסט 1958"', 1],
['עמודים', 'מספר העמודים', 1],
['מידע נוסף', 'מידע נוסף (לא תאריך)', 1],
['שפה', 'שפה (אם המאמר לא בעברית)', 1],
['ציטוט', 'ציטוט משפט מהדף המקושר (יכול לעזור במציאת הדף בעתיד, אם הקישור ישתנה)', 1]
]},
{t: 'הארץ', p: [1,2,3,4], r: /([.\d]+)$/i, rp: [3], bm: 1, op: [0,3]},
{t: 'דבר'},
{t: 'מעריב'},
{t: 'הצבי'},
{t: 'הצפירה'},
{t: 'המגיד'},
{t: 'חבצלת'},
{t: 'המליץ'},
{t: 'על המשמר'},
{t: 'היינט'},
{t: 'PalPost'},
            {t: 'חרות'},
{t: 'תנ"ך', p: [8,9,10], op:[2]},
{t: 'nrg', p: [1,2,3,4,0,19,20], r: /\/online\/([^\/]+)\/ART([^\/]*)\/([^\.]+).html/i, rp: [6,7,3], bm: 1, op:[3,4,5,6], nopop: 1},
{t: 'Mooma2', p: [42,3], r: /\?ArtistId=(\d+)/i, rp: [2]},
{t: 'בחדרי חרדים', p: [1,2,3,4], r: /\/Article\.aspx\?id=(\d+)/i, rp: [3], bm: 1, op: [3]},
{t: 'CIA factbook', p: [52]},
{t: 'mynet', p: [1,2,3,4,0,5], r: /articles\/(\d+),7340,L-(\d+),00\.html/i, rp: [6,3], op: [3,4,5,6]},
{t: 'NFC', p: [1,2,3,4], r: /Archive\/([^\.]+)\.html/i, rp: [3], op: [3], bm: 1},
{t: 'Onlife', p: [1,2,3,4], r: /onlife\.co\.il\/([^\/]+)\/(.*)/i, rp: [1,3], op: [3]},
{t: 'ynet', p: [1,2,3,4], def: {6: 0, 7: 'articles'}, r: /ynet\.co\.il\/([^\/]+)\/(\d+),7340,L-(\d+),00.html/i, rp: [7,6,3], bm: 1, op: [3,4,5,6]},
{t: 'Xnet', p: [1,2,3,4], def: {6: 0, 7: 'articles'}, r: /([^\/]+)\/(\d+),\d+,L-(\d+),00.html/i, rp: [7,6,3], bm: 1, op: [3,4,5,6]},
{t: 'וואלה!', p: [1,2,3,4,0,26], r: /\?w=\/(\d+)\/(\d+)/i, rp: [6,3], bm: 1, op: [3,4,5]},
{t: 'גלובס', p: [1,2,3,4], r: /\/news\/article.aspx\?did=(\d+)/i, rp: [3], bm: 1, op: [3]},
{t: 'כלכליסט', p: [1,2,3,4], r: /\/articles\/(\d+),7340,L-(\d+),00/i, rp: [6,3], op: [3,4,5,6], bm: 1},
{t: 'נענע10', p: [1,2,3,4,0,26], r: /http:\/\/([a-z]*)\.nana10\.co\.il\/Article\/\?ArticleID=(\d+)/i, rp: [6,3], bm: 1, op: [3,4,5,6]},
{t: 'תדהר', p: [29,13,27], op: [2]},
{t: 'אנשים ישראל', p: [1,2,3,4], r: /.*itemID=(\d+)&/i, rp: [3], op: [3]},
{t: 'אתר חיל האוויר', p: [1,2,3,4], r: /\/([^\/]*)-he\//i, rp: [3], op: [3]},
{t: 'בלדד השוחי', p: [3,2,4], r: /ArticleID(\d*)/i, rp: [1], op: [2]},
{t: 'בשבע', p: [1,2,3,4], r: /Article.aspx\/(\d+)/i, rp: [3], op: [3]},
{t: 'האייל הקורא', p: [1,2,3,4], r: /story(?:_|\?id=)(\d+)/i, rp: [3], op: [3]},
{t: 'הידען', p: [1,2,30,4], r: /hayadan\.org\.il\/([^\/]*)/i, rp: [3], op: [3]},
{t: 'המאסף', p: [1,2,3,4], r: /notimportant\.co\.il\/?p=(\d+)/i, rp: [3], op: [3]},
{t: 'חסקין', p: [3,2], r: /ArticleNum=(\d+)/i, rp: [1]},
{t: 'בבלי', p: [11,12,13], op: [2]},
{t: 'משנה', p: [11,9,14], op: [2]},
{t: 'רמב"ם', p: [8,17,9,31], op: [0,3]},
{t: 'ירושלמי', p: [11,9,31], op: [2]},
{t: 'שולחן ערוך', p: [33,15,16], op: [2]},
{t: 'מטח', p: [1,2,3,4], op: [3]},
{t: 'גלצ', p: [1,2,3,4], r: /NewsArticle\.aspx\?NewsId\=(\d+)/i, rp: [3], op: [3]},
{t: 'ישראל היום', p: [1,2,3,4], r: /newsletter_article\.php\?id=(\d+)/i, rp: [3], bm: 1, op: [3]},
{t: 'מממ', p: [1,2,3,4], r: /data\/pdf\/([^\.])\.pdf/i, rp: [3], op: [3]},
{t: 'נזכור', p: [35,3], r: /HalalKorot\.aspx\?id=(\d+)/i, rp: [2]},
{t: 'סגולה', p: [1,2,3,4], r: /view-article\.asp\?article=(\d+)/i, rp: [3], op: [3]},
{t: 'ספורט 5', p: [1,2,3,36,4], r: /articles\.aspx\?FolderID=(\d+)&docID=(\d+)/i, rp: [4,3], op: [3], op: [0,4]},
{t: 'ספסל', p: [3,18,0], r: /hplayer\.aspx\?id=(\d+)/i, rp: [1]},
{t: 'ספסל מאמן', p: [3,18,0], r: /hstaff\.aspx\?id=(\d+)/i, rp: [1]},
{t: 'ספרי יזכור', p: [1,37,3,4], r: /yizkor\.nypl\.org\/index\.php\?id=(\d+)/i, rp: [3], op: [3]},
{t: 'הספרייה הדיגיטלית', p: [1,24,3,4], r: /nnl\/dig\/books\/([^\.]+)\.html/i, rp: [3], op: [3]},
{t: 'אורות', p: [1,2,3,4], r: /Article\.aspx\?ID=(\d+)/i, rp: [3], op: [3]},
{t: 'הערוץ האקדמי', p: [1,34,3,4], r: /programs\/Item\.aspx\?it=(\d+)/i, rp: [3], bm: 1, op: [3]},
{t: 'עכבר העיר', p: [1,2,3,4], r: /CM\.articles_item,(.*),\.aspx/i, rp: [3], bm: 1, op: [3]},
{t: 'ערוץ7', p: [1,2,3,4], r: /News\.aspx\/(\d+)/i, rp: [3], bm: 1, op: [3]},
{t: 'פעמים', p: [1,2,3,38], r: /dbsAttachedFiles\/Article_(.*)\.pdf/i, rp: [3], op: [3], op: [0,3]},
{t: 'תכלת', p: [1,2,3,4], r: /article\.php\?id=(\d+)/i, rp: [3], op: [3]},
{t: 'אנצ דעת', p: [3,27], r: /value\.asp\?id1=(\d+)/i, rp: [1]},
{t: 'דעת', p: [1,39,2], r: /(?:www\.)?daat\.ac\.il\/(.*)/i, rp: [2]},
{t: 'ויקישיבה', p: [50]},
{t: 'HebrewBooks', p: [1,8,3,4], r: /hebrewbooks\.org\/(\d+)/i, rp: [3], op: [3]},
{t: 'גדולי ישראל', p: [29,40,41,13]},
{t: 'עיתונות יהודית היסטורית 2', p: [43,44,1,2,22,3,7,0,23], def: {9: "Ar"}, r: /(?:Key|BaseHref)=([A-Z]{3})\/(\d{4}\/\d{1,2}\/\d{1,2})(?:.*&EntityId=|\/\d+\/)([A-Z][a-z])(\d+)/i, rp: [2,5,9,6], replace: [[/%2F/gi,'/']], op: [6,8]},
{t: 'Iucnredlist', p: [45,3], r: /details(?:\.php)?\/(\d+)/, rp: [2]},
{t: 'העין השביעית', p: [1,34,6,4,25], r: /the7eye\.org\.il\/([^\/]+)\/Pages\/(.*)\.aspx/, rp: [5,3], bm: 1, op: [3,4]},
{t: 'One', p: [1,2,3,4], r: /(?:Article[\d\-\/,]*\/|id=)([\d\-\/,]*\d)/, rp: [3], bm: 1, op: [3]},
{t: 'קול הלשון - שיעור', p: [46,47,48,4], np: [['וידאו', '"וידאו": רשמו "כן" אם זה שיעור לצפייה'], ['תואר', 'תואר - אם תואר המרצה שונה מ"הרב"']], r: /(?:PathFile=|Source=)([^&]*)/i, rp: [3], op: [3]},
{t: 'ספר פרויקט גוטנברג', np: [["כותב", "שם כותב הספר", 1], ['שם הספר', 'שם הספר (ברירת מחדל: שם הערך)', 1], ['מספר', 'מספר הספר בפרויקט']], r: /ebooks\/(\d+)/i, rp: [3]},
{t: 'imdb title', np: [['id', 'המספר שמופיע בקישור'], ['title', 'הכותרת שתופיע בקישור (אופציונלי: ברירת מחדל - שם הערך', 1]], r: /title\/tt(\d+)/i, rp: [1]},
{t: 'imdb name', np: [['id', 'המספר שמופיע בקישור'], ['name', 'הכותרת שתופיע בקישור (אופציונלי: ברירת מחדל - שם הערך', 1]], r: /name\/nm(\d+)/i, rp: [1]},
{t: 'imdb company', np: [['id', 'המספר שמופיע בקישור'], ['company', 'הכותרת שתופיע בקישור']], r: /company\/co(\d+)/i, rp: [1]},
{t: 'Google book', np: [['מזהה','מזהה הספר באתר גוגל'],['כותב','שם כותב/י הספר', 1],['שם הספר','שם הספר (אופציונלי) - ללא הפרמטר יוצג שם הערך', 1]], r: /id=([^&]*)/, rp: [1]},
{t: 'TheMarker1', p: [1,2,3,4,51], r: /http:\/\/(?:www)?(.*)\.themarker\.com\/([^\?]+)/i, rp: [5,3], op: [3,4], bm: 1},
{t: 'מערכות', p: [1,2,3,49], r: /FILES\/(.*)\.pdf/i, rp: [3], op: [3]},
{t: 'mako', p: [1,2,3,6,4], r: /www\.mako\.co\.il\/(.*?)\/Article-(.*?)\.htm/i, rp: [4,3], bm: 1, op: [4]}
];
 
if (! templateName) {
var en = /^[a-z]/;
function compare(t1, t2) {
var gen = 'קישור כללי', a = t1.t.toLowerCase(), b = t2.t.toLowerCase();
if (a == gen ^ b == gen) return (b == gen) - (a == gen);
if (en.test(a) - en.test(b)) return en.test(a) - en.test(b); // all hebrew before all english
return a > b ? 1 : (a < b ? -1 : 0);
}
templatesAr.sort(compare);
return templatesAr;
}
}
if (pairs.length > 1)
 
code += pairs.join('|');
var template;
for (var i in templatesAr)
if (templatesAr[i].t == templateName)
template = templatesAr[i];
 
var historic = {"דבר": "DAV", "מעריב": "MAR", "הצבי": "HZV", "הצפירה": "HZF", "המגיד": "MGD", "המליץ": "HMZ", "חבצלת": "HZT", "PalPost": "PLS", "על המשמר" : "AHR", "היינט": "HYT", "חרות": "HRT"};
if (historic[template.t]) {
var r = new RegExp('=HISTNAME/(\\d{4}/\\d{1,2}/\\d{1,2})(?:.*&EntityId=|/\\d+/)([A-Z][a-z])(\\d+)'.replace('HISTNAME', historic[template.t]));
$.extend(template, {p: [1,2,22,3,7,0,23], def: {7: "Ar"}, r: r, rp: [3,7,4], replace: [[/%2F/gi, '/']], op: [4,6]});
}
 
for (var i in template.p)
if (typeof template.p[i] == "number")
template.p[i] = constants[template.p[i]];
 
return template;
}
}
code += "}}";
 
if (this.refCheckBox.checked)
function templateDialog(dialog, template, values) {
return "{{הערה|1=" +  code + "}}";
var brainDamage = $.client.profile().name == 'msie' && $.client.profile().versionNumber < 8;
if (this.listCheckBox.checked)
var orderedFields = [],
return "\n* " + code + "\n";
namedFields = [],
return code;
table = $('<table>'),
}
empty = {val: function(){return '';}, hasClass: function(){return 0;}};
 
function ltw_copyAttributes(target, source) {for (key in source)target[key] = source[key];return target;}
function createWikiCode() {
var par = ["{{" + template.t];
for (var i = 0; i < orderedFields.length; i++)
par.push($.trim(orderedFields[i].val()).replace(/\|/g, '{{!}}').replace(/=/g, '{{=}}'));
 
if (template.def)
function ltw_knownLinkTemplates() {
for (var parnum in template.def)
var constants = ["",
if (par[parnum] == template.def[parnum])
"שם המחבר",
par[parnum] = '';
"כותרת  המאמר",
if (! template.nopop)
"מספר (כפי שמופיע בקישור)",
while (par.length && !par[par.length-1].length && orderedFields[par.length-2].length) // last condition is to avoid remving "emptys"
"מידע נוסף (למשל תאריך)",
par.pop();
"מספר הסדרה",
var code = par.join("|");
"נתיב הדף - כמו שמופיע בקישור",
if (namedFields) {
"מידע נוסף (לא תאריך)",
var pairs = [];
"ספר",
for (j in namedFields) {
"פרק",
var val = $.trim(namedFields[j][1].val()).replace(/\|/g, '{{!}}');
"פסוק",
if (val.length)
"מסכת",
pairs.push(namedFields[j][0] + '=' + val);
"דף",
}
"עמוד",
if (pairs.length)
"משנה",
code += '|' + pairs.join('|');
"סימן",
}
"סעיף",
code += "}}";
"הלכות",
if ($('#ltw2_ref').prop('checked'))
"שם",
return "{{הערה|" + code + "}}";
"מספר הסדרה",
if ($('#ltw2_list').prop('checked'))
'מספר סדרת "ART"',
return "\n* " + code + "\n";
"",
return code;
"תאריך כתבה, בצורה 1949/07/25<br/>כפי שמופיע בקישור",
}
"סוג הפרסום, כפי שמופיע בקישור אחרי '=EntityId'. בדרך כלל 'Ar' לכתבה רגילה, 'Pc' לתמונה ו־'Ad' לפרסומת",
 
"שם הספר",
function updatePreview(){
"קידומת סוג הכתבה",
$('#ltw2_preview').text(createWikiCode());
"מזהה נושא הכתבה",
var canOK = 'enable';
"שם הערך",
var f = orderedFields.concat([]); //clone - we don't want to touch orderedFields.
"קוד כניסה חינם (כפי שמופיע בקישור)",
for (var i in namedFields)
"כרך",
f.push(namedFields[i][1]);
"הפניה לכתבה (כפי שמופיע בקישור)",
for (var i in f)
"הלכה",
if (f[i].hasClass('ltw_required') && $.trim(f[i].val()).length == 0)
"",
canOK = 'disable';
"חלק",
$(".ui-dialog-buttonpane button:contains('אישור')").button(canOK);
"כותרת הדף",
$('#ltw2_list').attr('disabled', $('#ltw2_ref').prop('checked'));//disable list if ref
"שם החלל",
$('#ltw2_ref').attr('disabled', $('#ltw2_list').prop('checked'));//disable ref if list
"מספר ה-folder כמו שמופיע בקישור",
if (brainDamage) { //IOW: internet explorer.
"כותרת הספר/שם הקהילה",
var width = $('#ltw_dialog').width() - 12;
"מספר גיליון, תאריך פרסום ומספרי עמודים",
$('.ui-dialog-titlebar').width(width);
"החלק השני של הקישור",
$('.ui-dialog-buttonpane').width(width);
"מספר העמוד, כפי שמופיע באתר",
}
"שם האיש",
}
"שם האמן",
 
"שם העיתון",
function addRow(labelText, paramName, optional) {
"קוד העיתון באתר (שלוש אותיות לטיניות גדולות)",
var inputField = $('<input>', {id: 'ltw2_inputfield_' + paramName, type: 'text', width: 600}).css({width: '28em'}).on('paste cut drop input change', updatePreview);
"שם המין/זן",
if (! (optional || 0))
"שם הרב",
inputField.addClass('ltw_required').css({border: '1px red solid'});
"שם השיעור",
var tr = $('<tr>')
"השיעור כשם שמופיע בקישור",
.append($('<td>').text(labelText).css({maxWidth: '20em'}))
"מספר גיליון, תאריך פרסום ומספרי עמודים (אופציונלי)"
.append($('<td>').css({width: '30em'}).append(inputField));
];
if (typeof paramName == 'number')
orderedFields.push(inputField);
var templatesDic = {
else
'קישור כללי': [],
namedFields.push([paramName, inputField]);
"הארץ": [1, 2, 3, 4],
table.append(tr);
"דבר": [1,2,22,3,7,0,23],
}
"מעריב": [1,2,22,3,7,0,23],
 
"הצבי": [1,2,22,3,7,0,23],
function extractParamsFromURL() {
"הצפירה": [1,2,22,3,7,0,23],
var str = $('#ltw_urlinput').val();
"המגיד": [1,2,22,3,7,0,23],
if (template.replace)
"חבצלת": [1,2,22,3,7,0,23],
for (var r in template.replace)
"המליץ": [1,2,22,3,7,0,23],
str = str.replace(template.replace[r][0], template.replace[r][1]);
"PalPost": [1,2,22,3,7,0,23],
var matches = str.match(template.r);
'תנ"ך': [8,9,10],
"nrg": [1,2,3,4,0,19,20],
"Mooma2": [42,3],
"בחדרי חרדים": [1,2,3,4],
"CIA factbook":["האותיות שמציינות את המדינה"],
"HebrewBooks":[1,8,3,4],
"mynet":[1,2,3,4,0,5],
"NFC":[1,2,3,4],
"Onlife":[1,2,3,4],
"ynet":[1,2,3,4,0,5,25],
"Xnet":[1,2,3,4,0,5,25],
"וואלה!":[1,2,3,4,0,26],
"גלובס":[1,2,3,4],
"כלכליסט":[1,2,3,4,0,19],
"נענע10":[1,2,3,4,0,26],
"אנציקלופדיה ynet":[27,3,28,4],
"תדהר":[29,13,27],
"אנשים ישראל":[1,2,3,4],
"אתר חיל האוויר":[1,2,3,4],
"בלדד השוחי":[3,2,4],
"בשבע":[1,2,3,4],
"האייל הקורא":[1,2,3,4],
"הידען":[1,2,30,4],
"המאסף":[1,2,3,4],
"חסקין":[3,2],
"בבלי":[11,12,13],
"משנה":[11,9,14],
'רמב"ם':[8,17,9,31],
"ירושלמי":[11,9,31],
"שולחן ערוך":[33,15,16],
"מטח":[1,2,3,4],
"גלצ":[1,2,3,4],
"ישראל היום":[1,2,3,4],
"מממ":[1,2,3,4],
"מממ2":[1,2,3,4],
"משנה תורה":[12,3,34],
"נזכור":[35,3],
"סגולה":[1,2,3,4],
"ספורט 5":[1,2,3,36,4],
"ספסל":[3,18,0],
"ספסל מאמן":[3,18,0],
"ספרי יזכור":[1,37,3,4],
"הספרייה הדיגיטלית":[1,24,3,4],
"אורות":[1,2,3,4],
"הערוץ האקדמי":[1,34,3,4],
"עכבר העיר":[1,2,3,4],
"ערוץ7":[1,2,3,4],
"פעמים":[1,2,3,38],
"תכלת":[1,2,3,4],
"אנצ דעת":[3,27],
"דעת":[1,39,2],
"ויקישיבה":["שם הערך בויקישיבה"],
"HebrewBooksPage": [1,8,3,4,40],
"גדולי ישראל": [29,40,41,13],
"עיתונות יהודית היסטורית 2": [43,44,1,2,22,3,7,0,23],
"Iucnredlist": [45,3],
"העין השביעית": [1,34,6,4,25],
"One": [1,2,3,4],
"קול הלשון - שיעור" : [46,47,48,4],
"ספר פרויקט גוטנברג": [],
"imdb title": [],
"imdb name": [],
"imdb company": [],
"Google book": [],
"TheMarker1": [1,2,3,4],
"מערכות": [1,2,3,49],
"mako": [1,2,3,6,4]
};
for (var key in templatesDic)
for (var i in templatesDic[key])
if (typeof(templatesDic[key][i]) == "number")
templatesDic[key][i] = constants[templatesDic[key][i]];
if (typeof privateTemplates === "object")
ltw_copyAttributes(templatesDic, privateTemplates);
return templatesDic;
}
function ltw_namedParams(templateName) {
var allNamedParam = {
'קול הלשון - שיעור': [['וידאו', '"וידאו": רשמו "כן" אם זה שיעור לצפייה'], ['תואר', 'תואר - אם תואר המרצה שונה מ"הרב"']],
"ספר פרויקט גוטנברג": [["כותב", "שם כותב הספר (אופציונלי)"], ['שם הספר', 'שם הספר (ברירת מחדל: שם הערך)'], ['מספר', 'מספר הספר בפרויקט']],
"imdb title": [['id', 'המספר שמופיע בקישור'], ['title', 'הכותרת שתופיע בקישור (אופציונלי: ברירת מחדל - שם הערך']],
"imdb name": [['id', 'המספר שמופיע בקישור'], ['name', 'הכותרת שתופיע בקישור (אופציונלי: ברירת מחדל - שם הערך']],
"imdb company": [['id', 'המספר שמופיע בקישור'], ['company', 'הכותרת שתופיע בקישור']],
"Google book": [['מזהה','מזהה הספר באתר גוגל'],['כותב','שם כותב/י הספר (אופציונלי)'],['שם הספר','שם הספר (אופציונלי) - ללא הפרמטר יוצג שם הערך']],
"TheMarker1": [['5','קידומת הקישור, אם שונה מ-www']],
'קישור כללי': [
['כתובת', 'הקישור (כלומר ה-URL) עצמו'],
['כותרת', 'שם המאמר המקושר'],
['הכותב', 'שמות כותבי המאמר'],
['תאריך', 'תאריך המאמר'],
['עמודים', 'מספר העמודים'],
['שפה', 'שפה (אם המאמר לא בעברית)'],
['פורמט', 'פורמט המאמר, אם אינו HTML (למשל PDF, DOC, וכן הלאה'],
['ציטוט', 'ציטוט משפט מהדף המקושר (יכול לעזור במציאת הדף בעתיד, אם הקישור ישתנה)']
]
};
return allNamedParam[templateName] || [];
}
function ltw_defaultParameters(templateName) { // if parameter has the default value, we omit it
var defs = {
"דבר": {7: "Ar"},
"מעריב": {7: "Ar"},
"הצבי": {7: "Ar"},
"הצפירה": {7: "Ar"},
"המגיד": {7: "Ar"},
"המליץ": {7: "Ar"},
"חבצלת": {7: "Ar"},
"PalPost": {7: "Ar"},
"עיתונות יהודית היסטורית 2": {9: "Ar"},
"ynet": {6: 0, 7: 'articles'},
"Xnet": {6: 0, 7: 'articles'}
}
return defs[templateName] || {};
}
function ltw_templateRegex(templateName) {
var regexes = {
"nrg": {regex: /\/online\/([^\/]+)\/ART([^\/]*)\/([^\.]+).html/i, params:[6,7,3]},
"NFC": {regex: /Archive\/([^\.]+)\.html/i, params:[3]},
"HebrewBooks": {regex: /hebrewbooks\.org\/(\d+)/i, params:[3]},
"mynet": {regex: /articles\/(\d+),7340,L-(\d+),00\.html/i, params:[6,3]},
"Onlife": {regex: /onlife\.co\.il\/([^\/]+)\/(.*)/i, params:[1,3]},
"PalPost": {regex: /BaseHref=PLS\/(\d{4}\/\d{1,2}\/\d{1,2})&EntityId=Ar(\d+)/i, params:[3,4]},
"ynet": {regex: /ynet\.co\.il\/([^\/]+)\/(\d+),7340,L-(\d+),00.html/i, params:[7,6,3]},
"Xnet": {regex: /([^\/]+)\/(\d+),\d+,L-(\d+),00.html/i, params:[7,6,3]},
"Mooma2": {regex: /\?ArtistId=(\d+)/i, params:[2]},
"HebrewBooksPage": {regex: /pdfpager\.aspx\?.*req=(\d+).*&pgnum=(\d+)/i, params:[3,5]},
"בחדרי חרדים" : { regex: /\/Article\.aspx\?id=(\d+)/i, params:[3]},
"וואלה!": {regex: /\?w=\/(\d+)\/(\d+)/i, params:[6,3]},
"גלובס": {regex: /\/news\/article.aspx\?did=(\d+)/i, params:[3]},
"כלכליסט": {regex: /\/articles\/(\d+),7340,L-(\d+),00/i, params:[6,3]},
"נענע10": {regex: /http:\/\/([a-z]*)\.nana10\.co\.il\/Article\/\?ArticleID=(\d+)/i, params:[6,3]},
"אנציקלופדיה ynet": {regex: /\/yaan\/0,7340,L-(\d+)-([^-]*)-FreeYaan,00.html/i, params:[2,3]},
"אנשים ישראל": {regex: /.*itemID=(\d+)&/i, params:[3]},
"אתר חיל האוויר": {regex: /\/([^\/]*)-he\//i, params:[3]},
"בלדד השוחי": {regex: /ArticleID(\d*)/i, params:[1]},
"בשבע": {regex: /Article.aspx\/(\d+)/i, params:[3]},
"האייל הקורא": {regex: /story(?:_|\?id=)(\d+)/i, params:[3]},
"הידען": {regex: /hayadan\.org\.il\/([^\/]*)/i, params:[3]},
"המאסף": {regex: /notimportant\.co\.il\/?p=(\d+)/i, params:[3]},
"חסקין": {regex: /ArticleNum=(\d+)/i, params:[1]},
"הארץ": {regex: /(?:spages\/|itemNo=)(\d+)/i, params:[3]},
"גלצ": {regex: /NewsArticle\.aspx\?NewsId\=(\d+)/i, params:[3]},
"ישראל היום": {regex: /newsletter_article\.php\?id=(\d+)/i, params:[3]},
"מממ": {regex: /data\/pdf\/([^\.])\.pdf/i, params:[3]},
"מממ2": {regex: /data\/docs\/([^\.])\.rtf/i, params:[3]},
"משנה תורה": {regex: /mechon-mamre.org\/\i\/(\d+)\.htm/i, params:[2]},
"נזכור": {regex: /HalalKorot\.aspx\?id=(\d+)/i, params:[2]},
"סגולה": {regex: /view-article\.asp\?article=(\d+)/i, params:[3]},
"ספורט 5": {regex: /articles\.aspx\?FolderID=(\d+)&docID=(\d+)/i, params:[4,3]},
"ספסל": {regex: /hplayer\.aspx\?id=(\d+)/i, params:[1]},
"ספסל מאמן": {regex: /hstaff\.aspx\?id=(\d+)/i, params:[1]},
"ספרי יזכור": {regex: /yizkor\.nypl\.org\/index\.php\?id=(\d+)/i, params:[3]},
"הספרייה הדיגיטלית": {regex: /nnl\/dig\/books\/([^\.]+)\.html/i, params:[3]},
"אורות": {regex: /Article\.aspx\?ID=(\d+)/i, params:[3]},
"הערוץ האקדמי": {regex: /programs\/Item\.aspx\?it=(\d+)/i, params:[3]},
"עכבר העיר": {regex: /CM\.articles_item,(.*),\.aspx/i, params:[3]},
"ערוץ7": {regex: /News\.aspx\/(\d+)/i, params:[3]},
"פעמים": {regex: /dbsAttachedFiles\/Article_(.*)\.pdf/i, params:[3]},
"תכלת": {regex: /article\.php\?id=(\d+)/i, params:[3]},
":אנצ דעת": {regex: /value\.asp\?id1=(\d+)/i, params:[1]},
"דעת": {regex: /(?:www\.)?daat\.ac\.il\/(.*)/i, params:[2], problematic:1},
"עיתונות יהודית היסטורית 2": {regex: /(?:Key|BaseHref)=([A-Z]{3})\/(\d{4}\/\d{1,2}\/\d{1,2})(?:.*&EntityId=|\/\d+\/)([A-Z][a-z])(\d+)/i, params:[2,5,9,6], replace: [[/%2F/gi, '/']]},
"Iucnredlist": {regex: /details(?:\.php)?\/(\d+)/, params: [2]},
"העין השביעית": {regex: /the7eye\.org\.il\/([^\/]+)\/Pages\/(.*)\.aspx/, params: [5,3]},
"One": {regex: /(?:Article[\d\-\/,]*\/|id=)([\d\-\/,]*\d)/, params: [3]},
"קול הלשון - שיעור": {regex: /(?:PathFile=|Source=)([^&]*)/i, params:[3]},
"ספר פרויקט גוטנברג": {regex: /ebooks\/(\d+)/i, params: [3]},
"imdb title": {regex: /title\/tt(\d+)/i, params: [1]},
"imdb name": {regex: /name\/nm(\d+)/i, params: [1]},
"imdb company": {regex: /company\/co(\d+)/i, params: [1]},
"Google book" : {regex: /id=([^&]*)/, params: [1]},
"TheMarker1": {regex: /http:\/\/(?:www)?(.*)\.themarker\.com\/([^\?]+)/i, params: [5,3]},
"מערכות": {regex: /FILES\/(.*)\.pdf/i, params: [3]},
"mako": {regex: /www\.mako\.co\.il\/(.*?)\/Article-(.*?)\.htm/i, params: [4,3]}
}
// these guys are all the same - it's best to handle them as such.
var historic = {"דבר": "DAV", "מעריב": "MAR", "הצבי": "HZV", "הצפירה": "HZF", "המגיד": "MGD", "המליץ": "HMZ", "חבצלת": "HZT", "PalPost": "PLS"};
var histregex = {regex: /=HISTNAME\/(\d{4}\/\d{1,2}\/\d{1,2})(?:.*&EntityId=|\/\d+\/)([A-Z][a-z])(\d+)/i, params:[3,7,4], replace: [[/%2F/gi, '/']]};
for (var template in historic) {
var lr = ltw_copyAttributes({}, histregex);
lr.regex =  new RegExp(lr.regex.source.replace("HISTNAME", historic[template]));
regexes[template] = lr;
}
if (typeof privateRegexes === "object")
ltw_copyAttributes(regexes, privateRegexes);
return regexes[templateName];
}
function ltw_addFiledToTable(doc, table, param) {
var row = table.insertRow(-1) || table[rows[table.rows.length-1]];
var cell = row.insertCell(-1) || row.cells[0];
cell.innerHTML = param;
cell.style.maxWidth = "16em";
var field = ltw_copyAttributes(doc.createElement("input"), {type: "text", maxLength: 120, doc: doc});
field.onkeyup = field.onmouseup = field.onfocus = field.onblur = ltw_updatePreview;
field.style.width = "20em";
cell = row.insertCell(-1) || row.cells[1];
cell.appendChild(field);
return field;
}
function ltw_hasBookMarklet(template) {
return $.inArray(template, ['ynet', 'הארץ', 'nrg', 'וואלה!', 'ערוץ 7', 'נענע10', 'גלובס', 'עכבר העיר', 'הערוץ האקדמי', 'העין השביעית', 'Xnet' ,'One', 'בחדרי חרדים','ישראל היום','mako']) + 1;
}
function ltw_popupPredefinedLinkTemplate(templateName, paramList, regexDict) {
var hasBookmarklet = ltw_hasBookMarklet(templateName);
var namedParamsList = ltw_namedParams(templateName);
var height = 160 + 26 * (paramList.length + namedParamsList.length) + (regexDict ? 60 : 0) + (hasBookmarklet ? 60 : 0);
for (var i in paramList)
height += 18 * Math.floor(paramList[i].length / 33);
for (var i in namedParamsList)
height += 18 * Math.floor(namedParamsList[i][1].length / 33);
var top = (screen.height - height) / 2, left = (screen.width - 550) / 2;
var popup = window.open("", "", "resizable=1,height="+height+",width=550,left="+left+",top="+top);
var doc = popup.document;
doc.write("Fix for FF4");
var body = doc.body;
ltw_copyAttributes(doc, {
title: " הוספת תבנית: " + templateName,
dir: "rtl",
templateName: templateName,
orderedFields: [],
getTemplate: ltw_createTemplate,
updatePreview: function(){this.previewNode.data = this.getTemplate();},
problematic: regexDict && regexDict.problematic,
defParam: ltw_defaultParameters(templateName)
});
body.innerHTML = "";
if (hasBookmarklet) {
var p = doc.createElement("p");
p.style.color = 'red';
p.appendChild(doc.createTextNode('קיים בוקמרקלט שמייצר תבנית זו באופן אוטומטי. אנא שקלו להשתמש בו.'));
body.appendChild(p);
}
if (regexDict) {
body.appendChild(doc.createTextNode('הדביקו את הקישור כאן:'));
var b = doc.createElement("input");
b.urlInput = doc.createElement("input");
ltw_copyAttributes(b.urlInput, { type: "text", maxLength: 600 } );
b.urlInput.style.width = "12em";
body.appendChild(b.urlInput);
ltw_copyAttributes(b, {type: "button", value: "חילוץ פרמטרים מהקישור", regexDict: regexDict, doc: doc, update: ltw_updatePreview });
b.onclick = function() {
var str = this.urlInput.value;
if (this.regexDict.replace)
for (var r in this.regexDict.replace)
str = str.replace(this.regexDict.replace[r][0], this.regexDict.replace[r][1]);
var matches = str.match(this.regexDict.regex);
var orderedFields = this.doc.orderedFields, namedFields = this.doc.namedFields;
var numOrdered = orderedFields.length, numNamed = namedFields.length;
if (matches)
if (matches)
for (var i = 1; i < matches.length; i++) {
for (var i = 1; i < matches.length; i++)
var fieldIndex = this.regexDict.params[i-1] - 1; //parameters are counted from one, we count from 0.
$('#ltw2_inputfield_' + template.rp[i-1]).val(matches[i] || '');
if (fieldIndex < numOrdered)
updatePreview();
orderedFields[fieldIndex].value = matches[i] || '';
}
else if (fieldIndex < numOrdered + numNamed)
 
namedFields[fieldIndex-numOrdered][1].value = matches[i] || '';
$('.ltw_disposable').remove();
 
if (template.bm)
dialog.append($('<p>', {title: 'ראו דף "עזרה:בוקמרקלטים"'}).css({color: 'red', fontWeight: 'bold'})
.text('קיים בוקמרקלט שמייצר תבנית "' + template.t + '" באופן אוטומטי. אנא שקלו להשתמש בו (ראו "עזרה:בוקמרקלטים").'))
.append($('<hr>'));
 
if (template.r)
dialog.append($('<span>').text('הדביקו את הקישור כאן:').css({width: '20em'}))
.append($('<input>', {type: "text", id: 'ltw_urlinput', maxLength: 600}).css({width: '26em'}).on('paste cut drop input change', extractParamsFromURL))
.append($('<hr>'))
 
dialog
.append($('<p>').text('השדות המסומנים באדום הם חובה, השאר אופציונליים'))
.append(table)
.append($('<p>').css({height: '2em'}))
.append($('<label>').text(' הערת שוליים '))
.append($('<input>', {type: 'checkbox', id: 'ltw2_ref'}).change(updatePreview))
.append($('<label>').css({width: '12em'}).text( ' פריט ברשימה '))
.append($('<input>', {type: 'checkbox', id: 'ltw2_list'}).change(updatePreview))
.append($('<p>').css({height: '1.5em'}))
.append($('<p>', {id: 'ltw2_preview'}).css({backgroundColor: "lightGreen", fontSize: '120%', maxWidth: '40em'}));
 
 
for (var i = 0; i < (template.p || []).length; i++)
if (template.p[i].length == 0) // this allow defining an empty parameter. by use of a "pseudo field".
orderedFields.push(empty);
else
addRow(template.p[i], parseInt(i, 10) + 1, template.op && ($.inArray(i, template.op)+1));
 
for (var i in template.np)
addRow(template.np[i][1], template.np[i][0], template.np[i][2]);
 
var valIndex = 0;
while (values && values.length) {
var next = values.shift();
var pair = next.split('=');
if (pair.length > 1) {
if (isNaN(pair[0])) {
for (var named in namedFields)
if (namedFields[named][0] == $.trim(pair[0]))
namedFields[named][1].val(pair[1]);
} else {
valIndex = parseInt(pair[0], 10);
if (valIndex <= orderedFields.length)
orderedFields[valIndex - 1].val(pair[1]);
}
}
this.update();
} else
if (valIndex < orderedFields.length)
orderedFields[valIndex++].val(pair[0]);
}
}
body.appendChild(b);
 
body.appendChild(doc.createElement("hr"));
dialog.dialog('option', 'buttons', {
'ביטול':
function() {
dialog.dialog('close');
},
'אישור':
function() {
$("#wpTextbox1").textSelection( 'encapsulateSelection', {peri: createWikiCode(), replace: true} );
dialog.dialog('close');
}
});
$('.ui-dialog-buttonpane').css({backgroundColor: '#E0E0E0'});
dialog.dialog('option', {
height: 'auto',
width: 'auto',
position: [(window.width - dialog.width()) / 2, (window.height - dialog.height()) / 2]
});
$('.ui-dialog-buttonpane').children().css({float: 'right'});
updatePreview();
}
}
var table = doc.createElement("table");
 
for (var i in paramList) {
function fireDialog() {
var param = paramList[i];
 
if (param.length == 0) { // this allow defining an empty parameter. by use of a "pseudo field".
var killold = $('#ltw_dialog').remove(), // kill existing popup when button is pressed again.
doc.orderedFields.push({value:""});
title = 'יצירת תבנית קישור',
continue;
dialog = $('<div>', {id: 'ltw_dialog'}).css({backgroundColor: '#E8E8E8', maxWidth: '58em'}).dialog({
title: title,
resizable: false,
close: function() {$(this).remove();}
}),
fullList = templates(false),
allTemplates = [];
 
function fromTemplate(text) {
var regex = new RegExp('\\{\\{(' + allTemplates.join('|') + ')([^}]*)');
match = text.match(regex);
if (match) {
template = match[1];
values = match[2].split('|');
values.shift();
templateDialog(dialog, templates(template), values);
return true;
}
return false;
}
}
doc.orderedFields.push(ltw_addFiledToTable(doc, table, param));
 
}
 
doc.namedFields = [];
for (var i in fullList)
for (var i in namedParamsList) {
allTemplates.push(fullList[i].t);
var np = namedParamsList[i];
 
doc.namedFields.push([np[0], ltw_addFiledToTable(doc, table, np[1])]);
if (fromTemplate($("#wpTextbox1").textSelection('getSelection')))
}
return;
body.appendChild(table);
 
body.appendChild(doc.createElement("p"));
var selector = $('<select>', {'class': 'ltw_disposable'}).change(function() { // class in quotes - reserved word.
var p = doc.createElement("p");
if (! this.value) return;
var checkboxes = {refCheckBox: " הערת שוליים:", listCheckBox: " פריט ברשימה:"}
dialog.dialog('option', 'title', title + ' עבור ' + this.value);
for (var box in checkboxes) {
$(this).remove();
p.appendChild(doc.createTextNode(checkboxes[box]));
templateDialog(dialog, templates(this.value));
doc[box] = ltw_copyAttributes(doc.createElement('input'), {type: "checkbox", doc: doc, onchange: ltw_updatePreview});
});
p.appendChild(doc[box]);
selector.append($('<option>', {text: 'בחרו תבנית מהרשימה'}));
}
for (var i in allTemplates)
body.appendChild(p);
selector.append($('<option>', {text: allTemplates[i], value: allTemplates[i]}));
body.appendChild(p = doc.createElement("p"));
dialog.append(selector);
ltw_copyAttributes(p.style, {background: "blue", color: "white", fontSize: "0.85em"} );
dialog.append($('<p>', {'class': 'ltw_disposable'}).text('או הדביקו כאן תבנית לעריכה:'));
p.appendChild(doc.previewNode = doc.createTextNode(' '));
dialog.append($('<input>', {type: 'text', maxLength: 1000, 'class': 'ltw_disposable'}).css({width: '14em'}).on('paste cut drop input change', function() {fromTemplate(this.value);}));
body.appendChild(doc.createElement("p"));
b = ltw_copyAttributes(doc.createElement("input"), {type:"button", value:"אישור", doc: doc, popup: popup});
doc.problematic = regexDict && regexDict.problematic && true;
b.onclick = function() {
insertTags("", this.doc.getTemplate(), "");
this.popup.close();
}
}
body.appendChild(b);
 
b = ltw_copyAttributes(doc.createElement("input"), {type: "button", value: "ביטול", popup: popup, onclick: function(){this.popup.close();}});
if (mw.user.options.get('usebetatoolbar')) {
body.appendChild(b);
var depend = ['ext.wikiEditor'];
doc.refCheckBox.onchange();
mw.loader.using(depend, function() {
}
if(typeof $.wikiEditor != 'undefined')
$(function() {
function ltw_fireLinkTemplatePopup(templateName) {
$('#wpTextbox1').wikiEditor('addToToolbar', {
var linkTemplates = ltw_knownLinkTemplates();
section: 'main',
var templateParams = linkTemplates[templateName];
group: 'insert',
ltw_popupPredefinedLinkTemplate(templateName, templateParams, ltw_templateRegex(templateName));
tools: {
}
'linkTemplatewizard': {
label: 'תבנית קישור',
function ltw_createSortedTemplatesList() {
filters: [ 'body.ns-subject' ],
var fullList = ltw_knownLinkTemplates();
type: 'button',
var names = [], hnames = [];
icon: '//upload.wikimedia.org/wikipedia/commons/thumb/5/5e/Gnome-web-browser.svg/22px-Gnome-web-browser.svg.png',
var first = 'קישור כללי';
action: {type: 'callback', execute: fireDialog}
for (var x in fullList)
}
if (x.match(/^[a-zA-Z]/))
}
names.push(x);
else
if (x != first)
});
hnames.push(x);
$('[rel= "linkTemplatewizard"]').css('float','left');
hnames.sort();
});
names.sort(function(a,b){var la=a.toLowerCase(),lb=b.toLowerCase();return la>lb?1:la<lb?-1:0;});
});
return [first].concat(hnames).concat(names);
}
function ltw_createLinkTemplatesSelections() {
var select = document.createElement("select");
select.onchange = function() {
ltw_fireLinkTemplatePopup(this.value);
this.selectedIndex = 0;
return false;
}
}
select.options.add(new Option("אשף תבניות קישורים", ""));
else
var allnames = ltw_createSortedTemplatesList();
mw.loader.using('mediawiki.toolbar', function() {
for (var i in allnames)
$(function() {
select.options.add(new Option(allnames[i], allnames[i]));
$('div #toolbar').append( // "old style"
var toolbar = document.getElementById("toolbar");
$('<img>', {src: '//upload.wikimedia.org/wikipedia/commons/3/34/Button_LINK_HE1.png', title: 'תבנית קישור', 'class': 'mw-toolbar-editbutton'})
if (toolbar)
.css({cursor: 'pointer'})
toolbar.appendChild(select);
.click(function() {mw.loader.using('jquery.ui', fireDialog);})
}
);
});
function ltw_updatePreview() { this.doc.updatePreview(); }
});
});
function ltw_advancedFire(context) {
ltw_fireLinkTemplatePopup(this.template);
}
function ltw_createAdvanceToolKit() {
    var gadget = {label: 'אשף תבניות קישורים', type: 'select', list: []};
var templatesList = ltw_createSortedTemplatesList();
for (var i in templatesList)
        gadget.list.push({label: templatesList[i], action: {type: 'callback', execute: ltw_advancedFire, template: templatesList[i]}});
$j('#wpTextbox1').wikiEditor('addToToolbar', {
'section': 'advanced',
'group': 'heading',
'tools': {'linkTemplateWizard': gadget}
});
}
if (typeof $j != 'undefined' && typeof $j.fn.wikiEditor != 'undefined')
$j(document).ready(ltw_createAdvanceToolKit);
if (wgAction == 'edit')
hookEvent("load", ltw_createLinkTemplatesSelections);

גרסה אחרונה מ־23:27, 4 בדצמבר 2022

//Adds wizard for using templates for external links
//Written by [[User:קיפודנחש]]
if (($.inArray( mw.config.get( 'wgAction' ), ['edit', 'submit']) + 1)  && ( !$('#wpTextbox1').prop( 'readonly' ) )) 
mw.loader.using('jquery.textSelection', function() {

	function templates(templateName) {
		var constants = ["",
			"שם המחבר",
			"כותרת המאמר",
			"מספר (כפי שמופיע בקישור)",
			"מידע נוסף, למשל תאריך. נסו לשמור על הפורמט '30 באוגוסט 1958'",
			"מספר הסדרה",
			"נתיב הדף - כמו שמופיע בקישור",
			"מידע נוסף (לא תאריך)",
			"ספר",
			"פרק",
			"פסוק",
			"מסכת",
			"דף",
			"עמוד",
			"משנה",
			"סימן",
			"סעיף",
			"הלכות",
			"שם",
			"מספר הסדרה",
			'מספר סדרת "ART"',
			"",
			"תאריך כתבה (בפורמט 1949/07/25, כפי שמופיע בקישור)",
			"סוג הפרסום, כפי שמופיע בקישור אחרי '=EntityId'. בדרך כלל 'Ar' לכתבה רגילה, 'Pc' לתמונה ו־'Ad' לפרסומת",
			"שם הספר",
			"קידומת סוג הכתבה",
			"מזהה נושא הכתבה",
			"שם הערך",
			"קוד כניסה חינם (כפי שמופיע בקישור)",
			"כרך",
			"הפניה לכתבה (כפי שמופיע בקישור)",
			"הלכה",
			"",
			"חלק",
			"כותרת הדף",
			"שם החלל",
			"מספר ה-folder כמו שמופיע בקישור",
			"כותרת הספר/שם הקהילה",
			"מספר גיליון, תאריך פרסום ומספרי עמודים",
			"החלק השני של הקישור",
			"מספר העמוד, כפי שמופיע באתר",
			"שם האיש",
			"שם האמן",
			"שם העיתון",
			"קוד העיתון באתר (שלוש אותיות לטיניות גדולות)",
			"שם המין/זן",
			"שם הרב",
			"שם השיעור",
			"השיעור כשם שמופיע בקישור",
			"מספר גיליון, תאריך פרסום ומספרי עמודים",
			"שם הערך בויקישיבה",
			"קידומת הקישור, אם שונה מ-www",
			"האותיות שמציינות את המדינה"
		];

		var templatesAr = [
			{t: 'קישור כללי', np: [
				['הכותב', 'שמות כותבי המאמר', 1],
				['כותרת', 'שם המאמר המקושר'],
				['כתובת', 'הקישור (כלומר ה-URL) עצמו'],
				['תאריך', 'תאריך המאמר, בפורמט "30 באוגוסט 1958"', 1],
				['עמודים', 'מספר העמודים', 1],
				['מידע נוסף', 'מידע נוסף (לא תאריך)', 1],
				['שפה', 'שפה (אם המאמר לא בעברית)', 1],
				['ציטוט', 'ציטוט משפט מהדף המקושר (יכול לעזור במציאת הדף בעתיד, אם הקישור ישתנה)', 1]
			]},
			{t: 'הארץ', p: [1,2,3,4], r: /([.\d]+)$/i, rp: [3], bm: 1, op: [0,3]},
			{t: 'דבר'},
			{t: 'מעריב'},
			{t: 'הצבי'},
			{t: 'הצפירה'},
			{t: 'המגיד'},
			{t: 'חבצלת'},
			{t: 'המליץ'},
			{t: 'על המשמר'},
			{t: 'היינט'},
			{t: 'PalPost'},
            {t: 'חרות'},
			{t: 'תנ"ך', p: [8,9,10], op:[2]},
			{t: 'nrg', p: [1,2,3,4,0,19,20], r: /\/online\/([^\/]+)\/ART([^\/]*)\/([^\.]+).html/i, rp: [6,7,3], bm: 1, op:[3,4,5,6], nopop: 1},
			{t: 'Mooma2', p: [42,3], r: /\?ArtistId=(\d+)/i, rp: [2]},
			{t: 'בחדרי חרדים', p: [1,2,3,4], r: /\/Article\.aspx\?id=(\d+)/i, rp: [3], bm: 1, op: [3]},
			{t: 'CIA factbook', p: [52]},
			{t: 'mynet', p: [1,2,3,4,0,5], r: /articles\/(\d+),7340,L-(\d+),00\.html/i, rp: [6,3], op: [3,4,5,6]},
			{t: 'NFC', p: [1,2,3,4], r: /Archive\/([^\.]+)\.html/i, rp: [3], op: [3], bm: 1},
			{t: 'Onlife', p: [1,2,3,4], r: /onlife\.co\.il\/([^\/]+)\/(.*)/i, rp: [1,3], op: [3]},
			{t: 'ynet', p: [1,2,3,4], def: {6: 0, 7: 'articles'}, r: /ynet\.co\.il\/([^\/]+)\/(\d+),7340,L-(\d+),00.html/i, rp: [7,6,3], bm: 1, op: [3,4,5,6]},
			{t: 'Xnet', p: [1,2,3,4], def: {6: 0, 7: 'articles'}, r: /([^\/]+)\/(\d+),\d+,L-(\d+),00.html/i, rp: [7,6,3], bm: 1, op: [3,4,5,6]},
			{t: 'וואלה!', p: [1,2,3,4,0,26], r: /\?w=\/(\d+)\/(\d+)/i, rp: [6,3], bm: 1, op: [3,4,5]},
			{t: 'גלובס', p: [1,2,3,4], r: /\/news\/article.aspx\?did=(\d+)/i, rp: [3], bm: 1, op: [3]},
			{t: 'כלכליסט', p: [1,2,3,4], r: /\/articles\/(\d+),7340,L-(\d+),00/i, rp: [6,3], op: [3,4,5,6], bm: 1},
			{t: 'נענע10', p: [1,2,3,4,0,26], r: /http:\/\/([a-z]*)\.nana10\.co\.il\/Article\/\?ArticleID=(\d+)/i, rp: [6,3], bm: 1, op: [3,4,5,6]},
			{t: 'תדהר', p: [29,13,27], op: [2]},
			{t: 'אנשים ישראל', p: [1,2,3,4], r: /.*itemID=(\d+)&/i, rp: [3], op: [3]},
			{t: 'אתר חיל האוויר', p: [1,2,3,4], r: /\/([^\/]*)-he\//i, rp: [3], op: [3]},
			{t: 'בלדד השוחי', p: [3,2,4], r: /ArticleID(\d*)/i, rp: [1], op: [2]},
			{t: 'בשבע', p: [1,2,3,4], r: /Article.aspx\/(\d+)/i, rp: [3], op: [3]},
			{t: 'האייל הקורא', p: [1,2,3,4], r: /story(?:_|\?id=)(\d+)/i, rp: [3], op: [3]},
			{t: 'הידען', p: [1,2,30,4], r: /hayadan\.org\.il\/([^\/]*)/i, rp: [3], op: [3]},
			{t: 'המאסף', p: [1,2,3,4], r: /notimportant\.co\.il\/?p=(\d+)/i, rp: [3], op: [3]},
			{t: 'חסקין', p: [3,2], r: /ArticleNum=(\d+)/i, rp: [1]},
			{t: 'בבלי', p: [11,12,13], op: [2]},
			{t: 'משנה', p: [11,9,14], op: [2]},
			{t: 'רמב"ם', p: [8,17,9,31], op: [0,3]},
			{t: 'ירושלמי', p: [11,9,31], op: [2]},
			{t: 'שולחן ערוך', p: [33,15,16], op: [2]},
			{t: 'מטח', p: [1,2,3,4], op: [3]},
			{t: 'גלצ', p: [1,2,3,4], r: /NewsArticle\.aspx\?NewsId\=(\d+)/i, rp: [3], op: [3]},
			{t: 'ישראל היום', p: [1,2,3,4], r: /newsletter_article\.php\?id=(\d+)/i, rp: [3], bm: 1, op: [3]},
			{t: 'מממ', p: [1,2,3,4], r: /data\/pdf\/([^\.])\.pdf/i, rp: [3], op: [3]},
			{t: 'נזכור', p: [35,3], r: /HalalKorot\.aspx\?id=(\d+)/i, rp: [2]},
			{t: 'סגולה', p: [1,2,3,4], r: /view-article\.asp\?article=(\d+)/i, rp: [3], op: [3]},
			{t: 'ספורט 5', p: [1,2,3,36,4], r: /articles\.aspx\?FolderID=(\d+)&docID=(\d+)/i, rp: [4,3], op: [3], op: [0,4]},
			{t: 'ספסל', p: [3,18,0], r: /hplayer\.aspx\?id=(\d+)/i, rp: [1]},
			{t: 'ספסל מאמן', p: [3,18,0], r: /hstaff\.aspx\?id=(\d+)/i, rp: [1]},
			{t: 'ספרי יזכור', p: [1,37,3,4], r: /yizkor\.nypl\.org\/index\.php\?id=(\d+)/i, rp: [3], op: [3]},
			{t: 'הספרייה הדיגיטלית', p: [1,24,3,4], r: /nnl\/dig\/books\/([^\.]+)\.html/i, rp: [3], op: [3]},
			{t: 'אורות', p: [1,2,3,4], r: /Article\.aspx\?ID=(\d+)/i, rp: [3], op: [3]},
			{t: 'הערוץ האקדמי', p: [1,34,3,4], r: /programs\/Item\.aspx\?it=(\d+)/i, rp: [3], bm: 1, op: [3]},
			{t: 'עכבר העיר', p: [1,2,3,4], r: /CM\.articles_item,(.*),\.aspx/i, rp: [3], bm: 1, op: [3]},
			{t: 'ערוץ7', p: [1,2,3,4], r: /News\.aspx\/(\d+)/i, rp: [3], bm: 1, op: [3]},
			{t: 'פעמים', p: [1,2,3,38], r: /dbsAttachedFiles\/Article_(.*)\.pdf/i, rp: [3], op: [3], op: [0,3]},
			{t: 'תכלת', p: [1,2,3,4], r: /article\.php\?id=(\d+)/i, rp: [3], op: [3]},
			{t: 'אנצ דעת', p: [3,27], r: /value\.asp\?id1=(\d+)/i, rp: [1]},
			{t: 'דעת', p: [1,39,2], r: /(?:www\.)?daat\.ac\.il\/(.*)/i, rp: [2]},
			{t: 'ויקישיבה', p: [50]},
			{t: 'HebrewBooks', p: [1,8,3,4], r: /hebrewbooks\.org\/(\d+)/i, rp: [3], op: [3]},
			{t: 'גדולי ישראל', p: [29,40,41,13]},
			{t: 'עיתונות יהודית היסטורית 2', p: [43,44,1,2,22,3,7,0,23], def: {9: "Ar"}, r: /(?:Key|BaseHref)=([A-Z]{3})\/(\d{4}\/\d{1,2}\/\d{1,2})(?:.*&EntityId=|\/\d+\/)([A-Z][a-z])(\d+)/i, rp: [2,5,9,6], replace: [[/%2F/gi,'/']], op: [6,8]},
			{t: 'Iucnredlist', p: [45,3], r: /details(?:\.php)?\/(\d+)/, rp: [2]},
			{t: 'העין השביעית', p: [1,34,6,4,25], r: /the7eye\.org\.il\/([^\/]+)\/Pages\/(.*)\.aspx/, rp: [5,3], bm: 1, op: [3,4]},
			{t: 'One', p: [1,2,3,4], r: /(?:Article[\d\-\/,]*\/|id=)([\d\-\/,]*\d)/, rp: [3], bm: 1, op: [3]},
			{t: 'קול הלשון - שיעור', p: [46,47,48,4], np: [['וידאו', '"וידאו": רשמו "כן" אם זה שיעור לצפייה'], ['תואר', 'תואר - אם תואר המרצה שונה מ"הרב"']], r: /(?:PathFile=|Source=)([^&]*)/i, rp: [3], op: [3]},
			{t: 'ספר פרויקט גוטנברג', np: [["כותב", "שם כותב הספר", 1], ['שם הספר', 'שם הספר (ברירת מחדל: שם הערך)', 1], ['מספר', 'מספר הספר בפרויקט']], r: /ebooks\/(\d+)/i, rp: [3]},
			{t: 'imdb title', np: [['id', 'המספר שמופיע בקישור'], ['title', 'הכותרת שתופיע בקישור (אופציונלי: ברירת מחדל - שם הערך', 1]], r: /title\/tt(\d+)/i, rp: [1]},
			{t: 'imdb name', np: [['id', 'המספר שמופיע בקישור'], ['name', 'הכותרת שתופיע בקישור (אופציונלי: ברירת מחדל - שם הערך', 1]], r: /name\/nm(\d+)/i, rp: [1]},
			{t: 'imdb company', np: [['id', 'המספר שמופיע בקישור'], ['company', 'הכותרת שתופיע בקישור']], r: /company\/co(\d+)/i, rp: [1]},
			{t: 'Google book', np: [['מזהה','מזהה הספר באתר גוגל'],['כותב','שם כותב/י הספר', 1],['שם הספר','שם הספר (אופציונלי) - ללא הפרמטר יוצג שם הערך', 1]], r: /id=([^&]*)/, rp: [1]},
			{t: 'TheMarker1', p: [1,2,3,4,51], r: /http:\/\/(?:www)?(.*)\.themarker\.com\/([^\?]+)/i, rp: [5,3], op: [3,4], bm: 1},
			{t: 'מערכות', p: [1,2,3,49], r: /FILES\/(.*)\.pdf/i, rp: [3], op: [3]},
			{t: 'mako', p: [1,2,3,6,4], r: /www\.mako\.co\.il\/(.*?)\/Article-(.*?)\.htm/i, rp: [4,3], bm: 1, op: [4]}
			];

		if (! templateName) {
			var en = /^[a-z]/;
			function compare(t1, t2) {
				var gen = 'קישור כללי', a = t1.t.toLowerCase(), b = t2.t.toLowerCase();
				if (a == gen ^ b == gen) return (b == gen) - (a == gen);
				if (en.test(a) - en.test(b)) return en.test(a) - en.test(b); // all hebrew before all english
				return a > b ? 1 : (a < b ? -1 : 0);
			}
			templatesAr.sort(compare);
			return templatesAr;
		}

		var template;
		for (var i in templatesAr)
			if (templatesAr[i].t == templateName)
				template = templatesAr[i];

		var historic = {"דבר": "DAV", "מעריב": "MAR", "הצבי": "HZV", "הצפירה": "HZF", "המגיד": "MGD", "המליץ": "HMZ", "חבצלת": "HZT", "PalPost": "PLS", "על המשמר" : "AHR", "היינט": "HYT", "חרות": "HRT"};
		if (historic[template.t]) {
			var r = new RegExp('=HISTNAME/(\\d{4}/\\d{1,2}/\\d{1,2})(?:.*&EntityId=|/\\d+/)([A-Z][a-z])(\\d+)'.replace('HISTNAME', historic[template.t]));
			$.extend(template, {p: [1,2,22,3,7,0,23], def: {7: "Ar"}, r: r, rp: [3,7,4], replace: [[/%2F/gi, '/']], op: [4,6]});
		}

		for (var i in template.p)
		if (typeof template.p[i] == "number")
			template.p[i] = constants[template.p[i]];

		return template;
	}

	function templateDialog(dialog, template, values) {
		var brainDamage = $.client.profile().name == 'msie' && $.client.profile().versionNumber < 8;
		var	orderedFields = [],
			namedFields = [],
			table = $('<table>'),
			empty = {val: function(){return '';}, hasClass: function(){return 0;}};

		function createWikiCode() {
			var par = ["{{" + template.t];
			for (var i = 0; i < orderedFields.length; i++)
				par.push($.trim(orderedFields[i].val()).replace(/\|/g, '{{!}}').replace(/=/g, '{{=}}'));

			if (template.def)
				for (var parnum in template.def)
					if (par[parnum] == template.def[parnum])
						par[parnum] = '';
			if (! template.nopop)
				while (par.length && !par[par.length-1].length && orderedFields[par.length-2].length) // last condition is to avoid remving "emptys"
					par.pop();
			var code = par.join("|");
			if (namedFields) {
				var pairs = [];
				for (j in namedFields) {
					var val = $.trim(namedFields[j][1].val()).replace(/\|/g, '{{!}}');
					if (val.length)
						pairs.push(namedFields[j][0] + '=' + val);
				}
				if (pairs.length)
					code += '|' + pairs.join('|');
			}
			code += "}}";
			if ($('#ltw2_ref').prop('checked'))
				return "{{הערה|" + code + "}}";
			if ($('#ltw2_list').prop('checked'))
				return "\n* " + code + "\n";
			return code;
		}

		function updatePreview(){
			$('#ltw2_preview').text(createWikiCode());
			var canOK = 'enable';
			var f = orderedFields.concat([]); //clone - we don't want to touch orderedFields.
			for (var i in namedFields)
				f.push(namedFields[i][1]);
			for (var i in f)
				if (f[i].hasClass('ltw_required') && $.trim(f[i].val()).length == 0)
					canOK = 'disable';
			$(".ui-dialog-buttonpane button:contains('אישור')").button(canOK);
			$('#ltw2_list').attr('disabled', $('#ltw2_ref').prop('checked'));//disable list if ref
			$('#ltw2_ref').attr('disabled', $('#ltw2_list').prop('checked'));//disable ref if list
			if (brainDamage) { //IOW: internet explorer.
				var width = $('#ltw_dialog').width() - 12;
				$('.ui-dialog-titlebar').width(width);
				$('.ui-dialog-buttonpane').width(width);
			}
		}

		function addRow(labelText, paramName, optional) {
			var inputField = $('<input>', {id: 'ltw2_inputfield_' + paramName, type: 'text', width: 600}).css({width: '28em'}).on('paste cut drop input change', updatePreview);
			if (! (optional || 0))
				inputField.addClass('ltw_required').css({border: '1px red solid'});
			var tr = $('<tr>')
				.append($('<td>').text(labelText).css({maxWidth: '20em'}))
				.append($('<td>').css({width: '30em'}).append(inputField));
			if (typeof paramName == 'number')
				orderedFields.push(inputField);
			else
				namedFields.push([paramName, inputField]);
			table.append(tr);
		}

		function extractParamsFromURL() {
			var str = $('#ltw_urlinput').val();
			if (template.replace)
				for (var r in template.replace)
					str = str.replace(template.replace[r][0], template.replace[r][1]);
			var matches = str.match(template.r);
			if (matches)
				for (var i = 1; i < matches.length; i++)
					$('#ltw2_inputfield_' + template.rp[i-1]).val(matches[i] || '');
			updatePreview();
		}

		$('.ltw_disposable').remove();

		if (template.bm)
			dialog.append($('<p>', {title: 'ראו דף "עזרה:בוקמרקלטים"'}).css({color: 'red', fontWeight: 'bold'})
				.text('קיים בוקמרקלט שמייצר תבנית "' + template.t + '" באופן אוטומטי. אנא שקלו להשתמש בו (ראו "עזרה:בוקמרקלטים").'))
				.append($('<hr>'));

		if (template.r)
			dialog.append($('<span>').text('הדביקו את הקישור כאן:').css({width: '20em'}))
				.append($('<input>', {type: "text", id: 'ltw_urlinput', maxLength: 600}).css({width: '26em'}).on('paste cut drop input change', extractParamsFromURL))
				.append($('<hr>'))

		dialog
			.append($('<p>').text('השדות המסומנים באדום הם חובה, השאר אופציונליים'))
			.append(table)
			.append($('<p>').css({height: '2em'}))
			.append($('<label>').text(' הערת שוליים '))
			.append($('<input>', {type: 'checkbox', id: 'ltw2_ref'}).change(updatePreview))
			.append($('<label>').css({width: '12em'}).text( ' פריט ברשימה '))
			.append($('<input>', {type: 'checkbox', id: 'ltw2_list'}).change(updatePreview))
			.append($('<p>').css({height: '1.5em'}))
			.append($('<p>', {id: 'ltw2_preview'}).css({backgroundColor: "lightGreen", fontSize: '120%', maxWidth: '40em'}));


		for (var i = 0; i < (template.p || []).length; i++)
			if (template.p[i].length == 0)	// this allow defining an empty parameter. by use of a "pseudo field".
				orderedFields.push(empty);
			else
				addRow(template.p[i], parseInt(i, 10) + 1, template.op && ($.inArray(i, template.op)+1));

		for (var i in template.np)
			addRow(template.np[i][1], template.np[i][0], template.np[i][2]);

		var valIndex = 0;
		while (values && values.length) {
			var next = values.shift();
			var pair = next.split('=');
			if (pair.length > 1) {
				if (isNaN(pair[0])) {
					for (var named in namedFields)
						if (namedFields[named][0] == $.trim(pair[0]))
							namedFields[named][1].val(pair[1]);
				} else {
					valIndex = parseInt(pair[0], 10);
					if (valIndex <= orderedFields.length)
						orderedFields[valIndex - 1].val(pair[1]);
				}
			} else
				if (valIndex < orderedFields.length)
					orderedFields[valIndex++].val(pair[0]);
		}

		dialog.dialog('option', 'buttons', {
			'ביטול':
				function() {
					dialog.dialog('close');
				},
			'אישור':
				function() {
					$("#wpTextbox1").textSelection( 'encapsulateSelection', {peri: createWikiCode(), replace: true} );
					dialog.dialog('close');
				}
		});
		$('.ui-dialog-buttonpane').css({backgroundColor: '#E0E0E0'});
		dialog.dialog('option', {
			height: 'auto',
			width: 'auto',
			position: [(window.width - dialog.width()) / 2, (window.height - dialog.height()) / 2]
		});
		$('.ui-dialog-buttonpane').children().css({float: 'right'});
		updatePreview();
	}

	function fireDialog() {

		var killold = $('#ltw_dialog').remove(), // kill existing popup when button is pressed again.
			title = 'יצירת תבנית קישור',
			dialog = $('<div>', {id: 'ltw_dialog'}).css({backgroundColor: '#E8E8E8', maxWidth: '58em'}).dialog({
				title: title,
				resizable: false,
				close: function() {$(this).remove();}
			}),
			fullList = templates(false),
			allTemplates = [];

		function fromTemplate(text) {
			var regex = new RegExp('\\{\\{(' + allTemplates.join('|') + ')([^}]*)');
			match = text.match(regex);
			if (match) {
				template = match[1];
				values = match[2].split('|');
				values.shift();
				templateDialog(dialog, templates(template), values);
				return true;
			}
			return false;
		}


		for (var i in fullList)
			allTemplates.push(fullList[i].t);

		if (fromTemplate($("#wpTextbox1").textSelection('getSelection')))
			return;

		var selector = $('<select>', {'class': 'ltw_disposable'}).change(function() { // class in quotes - reserved word.
			if (! this.value) return;
			dialog.dialog('option', 'title', title + ' עבור ' + this.value);
			$(this).remove();
			templateDialog(dialog, templates(this.value));
		});
		selector.append($('<option>', {text: 'בחרו תבנית מהרשימה'}));
		for (var i in allTemplates)
			selector.append($('<option>', {text: allTemplates[i], value: allTemplates[i]}));
		dialog.append(selector);
		dialog.append($('<p>', {'class': 'ltw_disposable'}).text('או הדביקו כאן תבנית לעריכה:'));
		dialog.append($('<input>', {type: 'text', maxLength: 1000, 'class': 'ltw_disposable'}).css({width: '14em'}).on('paste cut drop input change', function() {fromTemplate(this.value);}));
	}

	if (mw.user.options.get('usebetatoolbar')) {
		var depend = ['ext.wikiEditor'];
		mw.loader.using(depend, function() {
			if(typeof $.wikiEditor != 'undefined')
				$(function() {
					$('#wpTextbox1').wikiEditor('addToToolbar', {
						section: 'main',
						group: 'insert',
						tools: {
							'linkTemplatewizard': {
								label: 'תבנית קישור',
								filters: [ 'body.ns-subject' ],
								type: 'button',
								icon: '//upload.wikimedia.org/wikipedia/commons/thumb/5/5e/Gnome-web-browser.svg/22px-Gnome-web-browser.svg.png',
								action: {type: 'callback', execute: fireDialog}
							}
						}
						
						
					});
					$('[rel= "linkTemplatewizard"]').css('float','left');
				});
		});
	}
	else
		mw.loader.using('mediawiki.toolbar', function() {
			$(function() {
				$('div #toolbar').append( // "old style"
					$('<img>', {src: '//upload.wikimedia.org/wikipedia/commons/3/34/Button_LINK_HE1.png', title: 'תבנית קישור', 'class': 'mw-toolbar-editbutton'})
					.css({cursor: 'pointer'})
					.click(function() {mw.loader.using('jquery.ui', fireDialog);})
				);
			});
		});
});