לדלג לתוכן

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

מתוך צפונות ויקי
עוד כמה
מ 166 גרסאות של הדף wikipedia:he:מדיה_ויקי:Gadget-TemplatesExternalLinks.js יובאו
 
(157 גרסאות ביניים של 14 משתמשים אינן מוצגות)
שורה 1: שורה 1:
function createAndInsertLinkTemplate(templateName, fields, isRef) {
//Adds wizard for using templates for external links
var par = ["{{" + templateName];
//Written by [[User:קיפודנחש]]
for (var i = 0; i < fields.length; i++)
if (($.inArray( mw.config.get( 'wgAction' ), ['edit', 'submit']) + 1)  && ( !$('#wpTextbox1').prop( 'readonly' ) ))  
par.push(fields[i].value);
mw.loader.using('jquery.textSelection', function() {
var code = par.join("|") + "}}";
if (isRef)
code = "{{הערה|1=" + code + "}}";
insertTags( "", "", code);
}


function popupPredefinedLinkTemplate(templateName, paramList, regexDict) {
function templates(templateName) {
var height = 100 + 30 * paramList.length + (regexDict ? 60 : 0);
var constants = ["",
for (i in paramList)
"שם המחבר",
height += 20 * (paramList[i].length / 60)
"כותרת המאמר",
var popup = window.open("", "popup", "height=" + height + ",width=500" );
"מספר (כפי שמופיע בקישור)",
var doc = popup.document;
"מידע נוסף, למשל תאריך. נסו לשמור על הפורמט '30 באוגוסט 1958'",
doc.title = " הוספת תבנית: " + templateName;
"מספר הסדרה",
doc.direction = doc.dir = "rtl";
"נתיב הדף - כמו שמופיע בקישור",
doc.templateName = templateName;
"מידע נוסף (לא תאריך)",
doc.allFields = [];
"ספר",
var form = doc.createElement("form");
"פרק",
var body = doc.body;
"פסוק",
if (regexDict) {
"מסכת",
body.appendChild(doc.createTextNode('הדביקו את הקישור כאן:'));
"דף",
var b = doc.createElement("input");
"עמוד",
b.urlInput = doc.createElement("input");
"משנה",
b.urlInput.type = "text";
"סימן",
b.urlInput.maxLength = 600;
"סעיף",
b.urlInput.style.width = "20em";
"הלכות",
body.appendChild(b.urlInput);
"שם",
b.type = "button";
"מספר הסדרה",
b.value = "חילוץ פרמטרים מן הקישור";
'מספר סדרת "ART"',
b.regexDict = regexDict;
"",
b.doc = doc;
"תאריך כתבה (בפורמט 1949/07/25, כפי שמופיע בקישור)",
b.onclick = function() {
"סוג הפרסום, כפי שמופיע בקישור אחרי '=EntityId'. בדרך כלל 'Ar' לכתבה רגילה, 'Pc' לתמונה ו־'Ad' לפרסומת",
var matches = this.urlInput.value.match(this.regexDict.regex);
"שם הספר",
if (matches) {
"קידומת סוג הכתבה",
for (var i = 1; i < matches.length; i++) {
"מזהה נושא הכתבה",
var fieldIndex = this.regexDict.params[i-1]; //parameters are counted from one, we count from 0.
"שם הערך",
if (fieldIndex && this.doc.allFields[fieldIndex-1])
"קוד כניסה חינם (כפי שמופיע בקישור)",
this.doc.allFields[fieldIndex-1].value = matches[i];
"כרך",
"הפניה לכתבה (כפי שמופיע בקישור)",
"הלכה",
"",
"חלק",
"כותרת הדף",
"שם החלל",
"מספר ה-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();
}
}
body.appendChild(b);
 
}
$('.ltw_disposable').remove();
var table = doc.createElement("table");
 
for (i in paramList) {
if (template.bm)
var param = paramList[i];
dialog.append($('<p>', {title: 'ראו דף "עזרה:בוקמרקלטים"'}).css({color: 'red', fontWeight: 'bold'})
if (param.length == 0) { // this allow defining an empty parameter. by use of a "pseudo field".
.text('קיים בוקמרקלט שמייצר תבנית "' + template.t + '" באופן אוטומטי. אנא שקלו להשתמש בו (ראו "עזרה:בוקמרקלטים").'))
doc.allFields.push({value:""});
.append($('<hr>'));
continue;
 
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]);
}
}
var row = table.insertRow(-1);
 
var cell = row.insertCell(-1);
dialog.dialog('option', 'buttons', {
cell.innerHTML = param;
'ביטול':
cell.style.maxWidth = "12em";
function() {
var field = doc.createElement("input");
dialog.dialog('close');
field.type = "text";
},
field.maxLength = 120;
'אישור':
field.style.width = "20em";
function() {
cell = row.insertCell(-1);
$("#wpTextbox1").textSelection( 'encapsulateSelection', {peri: createWikiCode(), replace: true} );
cell.appendChild(field);
dialog.dialog('close');
doc.allFields.push(field);
}
});
$('.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();
}
}
form.appendChild(table);
body.appendChild(form);
body.appendChild(doc.createElement("p"));
var refCheckBox = doc.createElement('input');
refCheckBox.type = "checkbox";
var label = doc.createElement('label');
label.htmlFor = refCheckBox;
label.innerHTML =  "מיקום התבנית בתוך הערת שוליים";
body.appendChild(label);
body.appendChild(refCheckBox);
body.appendChild(doc.createElement("p"));
var button = doc.createElement("input");
button.type = "button";
button.value = "אישור";
button.father = this;
button.doc = doc;
button.popup = popup;
button.refCheckBox = refCheckBox;
button.onclick = function() {
this.father.createAndInsertLinkTemplate(this.doc.templateName, this.doc.allFields, this.refCheckBox.checked);
this.popup.close();
}
body.appendChild(button);
var button = doc.createElement("input");
button.type = "button";
button.value = "ביטול";
button.popup = popup;
button.onclick = function() {
this.popup.close();
}
body.appendChild(button);
}


function createLinkTemplatesSelections() {
function fireDialog() {
var select = document.createElement("select");
select.id = "linkTemplatesList";
select.onchange = function() {
fireLinkTemplatePopup(this.value);
this.selectedIndex = 0;
return false;
}
var fullList = knownLinkTemplates();
var names = [], hnames = [];
var re = /[a-zA-Z]/;
for (x in fullList)
if (re.test(x.charAt(0)))
names.push(x);
else
hnames.push(x);
names.sort(); hnames.sort();
var allnames = hnames.concat(names);
select.options.add(new Option("בחרו קישור להוספה", ""));
for (var i = 0; i < allnames.length; i++)
select.options.add(new Option(allnames[i], allnames[i]));
var toolbar = document.getElementById("toolbar");
if (toolbar)
toolbar.appendChild(select);
}


function fireLinkTemplatePopup(templateName) {
var killold = $('#ltw_dialog').remove(), // kill existing popup when button is pressed again.
var linkTemplates = knownLinkTemplates();
title = 'יצירת תבנית קישור',
var templateParams = linkTemplates[templateName];
dialog = $('<div>', {id: 'ltw_dialog'}).css({backgroundColor: '#E8E8E8', maxWidth: '58em'}).dialog({
if (templateParams && templateParams.constructor == Array && templateParams.length > 0)
title: title,
popupPredefinedLinkTemplate(templateName, templateParams, templateRegex(templateName));
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;


if (wgAction == 'edit')
var selector = $('<select>', {'class': 'ltw_disposable'}).change(function() { // class in quotes - reserved word.
addOnloadHook(createLinkTemplatesSelections);
if (! this.value) return;
function knownLinkTemplates() {
dialog.dialog('option', 'title', title + ' עבור ' + this.value);
var constants = [
$(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);}));
"ספר",
}
"פרק",
"פסוק",
"מסכת",
"דף",
"עמוד",
"משנה",
"סימן",
"סעיף",
"הלכות",
"שם",
"מספר הסדרה",
'מספר סדרת "ART"',
"כותרת הכתבה. כאשר הכתבה משתרעת על פני דפים אחדים, יש לתת לכל חלק שאחר החלק הראשון את הכותרת 'המשך'",
"תאריך כתבה, בצורה 1949/07/25 (כפי שמופיע ב-URL של הכתבה)",
"ערך חלופי לסוג הפרסום, כאשר הקישור הוא לפרסומת או לתמונה ולא לכתבה. פרמטר זה נחוץ רק כאשר ה-URL כולל 'EntityId=Ad' או 'EntityId=Pc' במקום 'EntityId=Ar', והערך שיינתן בו הוא Ad או Pc",
"שם הספר",
"קידומת סוג הכתבה",
"מזהה נושא הכתבה",
"",
"",
"",
"",
"",
"",
];
var templatesDic = {
"ynet": [1,2,3,4,5,0,],
"הארץ": [1, 2, 3, 4],
"דבר": [1,2,22,3,6,23],
'תנ"ך': [8,9,10],
"nrg": [1,2,3,4,0,19,20],
"Mooma": [18],
"בחדרי חרדים": [1,2,3,4],
"CIA factbook":["האותיות שמציינות את המדינה"],
"Google book":["מזהה - מזהה הספר באתר גוגל", 24, 1],
"HebrewBooks":[1,25,3,4],
"mynet":[1,2,3,4,0,5],
"NFC":[1,2,3,4],
"Onlife":[1,2,3,4],
"PalPost":[1,2,12,3,4],
"TheMarker":[1,2,3,4],
"ynet":[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],
/*
"":[],
"":[],
"":[],
"":[],
"":[],
"":[],
"":[],
"":[],
"":[],
"":[],
"":[],
"":[],
"":[],
"":[],
"":[],
"":[],
"":[],
*/
};
for (var key in templatesDic)
for (var i in templatesDic[key])
if (typeof(templatesDic[key][i]) == "number")
templatesDic[key][i] = constants[templatesDic[key][i]];
return templatesDic;
}


function templateRegex(templateName) {
if (mw.user.options.get('usebetatoolbar')) {
var regexes = {
var depend = ['ext.wikiEditor'];
"nrg": {regex: /http:\/\/(?:www\.){0,1}nrg\.co\.il\/online\/([^\/]+)\/ART([^\/]+)\/([^\.]+).html/i, params:[6,7,3]},
mw.loader.using(depend, function() {
"בחדרי חרדים" : { regex: /http:\/\/(?:www\.){0,1}bhol\.co\.il\/Article\.aspx\?id=(\d+)/i, params:[3]},
if(typeof $.wikiEditor != 'undefined')
"Google book": { regex: /http:\/\/books\.google\.com\/books\?id=([^&]+)/i, params:[1]},
$(function() {
"NFC": {regex: /http:\/\/(?:www\.){0,1}news1\.co\.il\/Archive\/([^\.]+)\.html/i, params:[3]},
$('#wpTextbox1').wikiEditor('addToToolbar', {
"HebrewBooks": {regex: /http:\/\/(?:www\.)hebrewbooks\.org\/(\d+)/i, params:[3]},
section: 'main',
"mynet": {regex: /http:\/\/(?:www\.){0,1}mynet\.co\.il\/articles\/(\d+),7340,L-(\d+),00\.html/i, params:[6,3]},
group: 'insert',
"Onlife": {regex: /http:\/\/onlife\.co\.il\/([^\/]+)\/(.*)/i, params:[1,3]},
tools: {
"PalPost": {regex: /http:\/\/(?:www\.){0,1}jpress\.org\.il\/Default\/Scripting\/ArticleWin.asp\?From=Archive&Source=Page&Skin=TAUHe&BaseHref=PLS\/(\d{4}\/\d{1,2}\/\d{1,2})&EntityId=Ar(\d+)/i, params:[3,4]},
'linkTemplatewizard': {
"TheMarker": {regex: /http:\/\/(?:www\.){0,1}themarker\.com\/tmc\/article\.jhtml\?ElementId=([^&\/\.]+)/i, params:[3]},
label: 'תבנית קישור',
"ynet": {regex: /http:\/\/(?:www\.){0,1}ynet\.co\.il\/([^\/]+)\/(\d+),7340,L-(\d+),00.html/i, params:[7,6,3]},
filters: [ 'body.ns-subject' ],
"וואלה!": {regex: /http:\/\/(?:www\.){0,1}news\.walla\.co\.il\/?w=\/(\d+)(?:\/)(\d+)/i, params:[6,2]},
type: 'button',
"גלובס": {regex: /http:\/\/(?:www\.){0,1}globes\.co\.il\/news\/article.aspx\?did=(\d+)/i, params:[3]},
icon: '//upload.wikimedia.org/wikipedia/commons/thumb/5/5e/Gnome-web-browser.svg/22px-Gnome-web-browser.svg.png',
"כלכליסט": {regex: /http:\/\/www.calcalist\.co\.il\/local\/articles\/(\d+),7340,L-(\d+),00/i, params:[6,3]},
action: {type: 'callback', execute: fireDialog}
"נענע10": {regex: /http:\/\/([a-z]*)\.nana10\.co\.il\/Article\/\?ArticleID=(\d+)/i, params:[6,3]},
}
"Mooma": {regex: /http:\/\/(?:www\.){0,1}mooma\.mako\.co\.il\/artist\.asp\?ArtistId=(\d+)/i, params:[1]},
}
/*
"": {regex: //i, params:[]},
"": {regex: //i, params:[]},
});
"": {regex: //i, params:[]},
$('[rel= "linkTemplatewizard"]').css('float','left');
"": {regex: //i, params:[]},
});
"": {regex: //i, params:[]},
});
"": {regex: //i, params:[]},
"": {regex: //i, params:[]},
"": {regex: //i, params:[]},
"": {regex: //i, params:[]},
"": {regex: //i, params:[]},
*/
}
}
return regexes[templateName];
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);})
);
});
});
});

גרסה אחרונה מ־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);})
				);
			});
		});
});