לדלג לתוכן

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

מתוך צפונות ויקי
מבצע חילוץ דרמטי - תבנית "דבר"ץ האם כל כוחותינו שבו בשלום לבסיסם?
מ 166 גרסאות של הדף wikipedia:he:מדיה_ויקי:Gadget-TemplatesExternalLinks.js יובאו
 
(94 גרסאות ביניים של 14 משתמשים אינן מוצגות)
שורה 1: שורה 1:
//אשף תבניות קישורים
//Adds wizard for using templates for external links
function createTemplate(doc) {
//Written by [[User:קיפודנחש]]
var par = ["{{" + doc.templateName];
if (($.inArray( mw.config.get( 'wgAction' ), ['edit', 'submit']) + 1) && ( !$('#wpTextbox1').prop( 'readonly' ) ))  
for (var i in doc.allFields)
mw.loader.using('jquery.textSelection', function() {
par.push((doc.problematic? (parseInt(i)+1) + "=":"") + doc.allFields[i].value);
var code = par.join("|") + "}}";
if (doc.refCheckBox.checked)
return "{{הערה|1=" +  code + "}}";
if (doc.listCheckBox.checked)
return "\n* " + code + "\n";
return code;
}
function copyAttributes(target, source) {
for (key in source)
target[key] = source[key];
return target;
}


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


var templatesDic = {
var templatesAr = [
"הארץ": [1, 2, 3, 4],
{t: 'קישור כללי', np: [
"דבר": [1,2,22,3,7,23],
['הכותב', 'שמות כותבי המאמר', 1],
'תנ"ך': [8,9,10],
['כותרת', 'שם המאמר המקושר'],
"nrg": [1,2,3,4,0,19,20],
['כתובת', 'הקישור (כלומר ה-URL) עצמו'],
"Mooma2": [42,3],
['תאריך', 'תאריך המאמר, בפורמט "30 באוגוסט 1958"', 1],
"בחדרי חרדים": [1,2,3,4],
['עמודים', 'מספר העמודים', 1],
"CIA factbook":["האותיות שמציינות את המדינה"],
['מידע נוסף', 'מידע נוסף (לא תאריך)', 1],
"Google book":["מזהה - מזהה הספר באתר גוגל", 24, 1],
['שפה', 'שפה (אם המאמר לא בעברית)', 1],
"HebrewBooks":[1,8,3,4],
['ציטוט', 'ציטוט משפט מהדף המקושר (יכול לעזור במציאת הדף בעתיד, אם הקישור ישתנה)', 1]
"mynet":[1,2,3,4,0,5],
]},
"NFC":[1,2,3,4],
{t: 'הארץ', p: [1,2,3,4], r: /([.\d]+)$/i, rp: [3], bm: 1, op: [0,3]},
"Onlife":[1,2,3,4],
{t: 'דבר'},
"PalPost":[1,2,12,3,4],
{t: 'מעריב'},
"TheMarker":[1,2,3,4],
{t: 'הצבי'},
"ynet":[1,2,3,4,0,5,25],
{t: 'הצפירה'},
"וואלה!":[1,2,3,4,0,26],
{t: 'המגיד'},
"גלובס":[1,2,3,4],
{t: 'חבצלת'},
"כלכליסט":[1,2,3,4,0,19],
{t: 'המליץ'},
"נענע10":[1,2,3,4,0,26],
{t: 'על המשמר'},
"אנציקלופדיה ynet":[27,3,28,4],
{t: 'היינט'},
"תדהר":[29,13,27],
{t: 'PalPost'},
"אנשים ישראל":[1,2,3,4],
            {t: 'חרות'},
"אתר חיל האוויר":[1,2,3,4],
{t: 'תנ"ך', p: [8,9,10], op:[2]},
"בלדד השוחי":[3,2,4],
{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},
"בשבע":[1,2,3,4],
{t: 'Mooma2', p: [42,3], r: /\?ArtistId=(\d+)/i, rp: [2]},
"האייל הקורא":[1,2,3,4],
{t: 'בחדרי חרדים', p: [1,2,3,4], r: /\/Article\.aspx\?id=(\d+)/i, rp: [3], bm: 1, op: [3]},
"הידען":[1,2,30,4],
{t: 'CIA factbook', p: [52]},
"המאסף":[1,2,3,4],
{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]},
"חסקין":[3,2],
{t: 'NFC', p: [1,2,3,4], r: /Archive\/([^\.]+)\.html/i, rp: [3], op: [3], bm: 1},
"בבלי":[11,12,13],
{t: 'Onlife', p: [1,2,3,4], r: /onlife\.co\.il\/([^\/]+)\/(.*)/i, rp: [1,3], op: [3]},
"משנה":[11,9,14],
{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]},
'רמב"ם':[8,17,9,31],
{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]},
"ירושלמי":[11,9,31],
{t: 'וואלה!', p: [1,2,3,4,0,26], r: /\?w=\/(\d+)\/(\d+)/i, rp: [6,3], bm: 1, op: [3,4,5]},
"שולחן ערוך":[33,15,16],
{t: 'גלובס', p: [1,2,3,4], r: /\/news\/article.aspx\?did=(\d+)/i, rp: [3], bm: 1, op: [3]},
"מטח":[1,2,3,4],
{t: 'כלכליסט', p: [1,2,3,4], r: /\/articles\/(\d+),7340,L-(\d+),00/i, rp: [6,3], op: [3,4,5,6], bm: 1},
"גלצ":[1,2,3,4],
{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]},
"ישראל היום":[1,2,3,4],
{t: 'תדהר', p: [29,13,27], op: [2]},
"מממ":[1,2,3,4],
{t: 'אנשים ישראל', p: [1,2,3,4], r: /.*itemID=(\d+)&/i, rp: [3], op: [3]},
"מממ2":[1,2,3,4],
{t: 'אתר חיל האוויר', p: [1,2,3,4], r: /\/([^\/]*)-he\//i, rp: [3], op: [3]},
"משנה תורה":[12,3,34],
{t: 'בלדד השוחי', p: [3,2,4], r: /ArticleID(\d*)/i, rp: [1], op: [2]},
"נזכור":[35,3],
{t: 'בשבע', p: [1,2,3,4], r: /Article.aspx\/(\d+)/i, rp: [3], op: [3]},
"סגולה":[1,2,3,4],
{t: 'האייל הקורא', p: [1,2,3,4], r: /story(?:_|\?id=)(\d+)/i, rp: [3], op: [3]},
"ספורט 5":[1,2,3,36,4],
{t: 'הידען', p: [1,2,30,4], r: /hayadan\.org\.il\/([^\/]*)/i, rp: [3], op: [3]},
"ספסל":[3,18,0],
{t: 'המאסף', p: [1,2,3,4], r: /notimportant\.co\.il\/?p=(\d+)/i, rp: [3], op: [3]},
"ספסל מאמן":[3,18,0],
{t: 'חסקין', p: [3,2], r: /ArticleNum=(\d+)/i, rp: [1]},
"ספרי יזכור":[1,37,3,4],
{t: 'בבלי', p: [11,12,13], op: [2]},
"הספרייה הדיגיטלית":[1,24,3,4],
{t: 'משנה', p: [11,9,14], op: [2]},
"אורות":[1,2,3,4],
{t: 'רמב"ם', p: [8,17,9,31], op: [0,3]},
"הערוץ האקדמי":[1,34,3,4],
{t: 'ירושלמי', p: [11,9,31], op: [2]},
"עכבר העיר":[1,2,3,4],
{t: 'שולחן ערוך', p: [33,15,16], op: [2]},
"ערוץ7":[1,2,3,4],
{t: 'מטח', p: [1,2,3,4], op: [3]},
"פעמים":[1,2,3,38],
{t: 'גלצ', p: [1,2,3,4], r: /NewsArticle\.aspx\?NewsId\=(\d+)/i, rp: [3], op: [3]},
"תכלת":[1,2,3,4],
{t: 'ישראל היום', p: [1,2,3,4], r: /newsletter_article\.php\?id=(\d+)/i, rp: [3], bm: 1, op: [3]},
"אנצ דעת":[3,27],
{t: 'מממ', p: [1,2,3,4], r: /data\/pdf\/([^\.])\.pdf/i, rp: [3], op: [3]},
"דעת":[1,39,2],
{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]},
"HebrewBooksPage": [1,8,3,4,40],
{t: 'ספורט 5', p: [1,2,3,36,4], r: /articles\.aspx\?FolderID=(\d+)&docID=(\d+)/i, rp: [4,3], op: [3], op: [0,4]},
"גדולי ישראל": [29,40,41,13],
{t: 'ספסל', p: [3,18,0], r: /hplayer\.aspx\?id=(\d+)/i, rp: [1]},
"פנאי פלוס": [1,2,3,4,0,5,25]
{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) {
for (var key in templatesDic)
var en = /^[a-z]/;
for (var i in templatesDic[key])
function compare(t1, t2) {
if (typeof(templatesDic[key][i]) == "number")
var gen = 'קישור כללי', a = t1.t.toLowerCase(), b = t2.t.toLowerCase();
templatesDic[key][i] = constants[templatesDic[key][i]];
if (a == gen ^ b == gen) return (b == gen) - (a == gen);
return templatesDic;
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;
}


function templateRegex(templateName) {
var template;
var regexes = {
for (var i in templatesAr)
"nrg": {regex: /\/online\/([^\/]+)\/ART([^\/]+)\/([^\.]+).html/i, params:[6,7,3]},
if (templatesAr[i].t == templateName)
"Google book": { regex: /\/books\?id=([^&]+)/i, params:[1]},
template = templatesAr[i];
"NFC": {regex: /Archive\/([^\.]+)\.html/i, params:[3]},
 
"HebrewBooks": {regex: /hebrewbooks\.org\/(\d+)/i, params:[3]},
var historic = {"דבר": "DAV", "מעריב": "MAR", "הצבי": "HZV", "הצפירה": "HZF", "המגיד": "MGD", "המליץ": "HMZ", "חבצלת": "HZT", "PalPost": "PLS", "על המשמר" : "AHR", "היינט": "HYT", "חרות": "HRT"};
"mynet": {regex: /articles\/(\d+),7340,L-(\d+),00\.html/i, params:[6,3]},
if (historic[template.t]) {
"Onlife": {regex: /onlife\.co\.il\/([^\/]+)\/(.*)/i, params:[1,3]},
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]));
"PalPost": {regex: /BaseHref=PLS\/(\d{4}\/\d{1,2}\/\d{1,2})&EntityId=Ar(\d+)/i, params:[3,4]},
$.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]});
"TheMarker": {regex: /http:\/\/(?:www\.){0,1}themarker\.com\/tmc\/article\.jhtml\?ElementId=([^&\/\.]+)/i, params:[3]},
}
"ynet": {regex: /ynet\.co\.il\/([^\/]+)\/(\d+),7340,L-(\d+),00.html/i, params:[7,6,3]},
 
"Mooma2": {regex: /\?ArtistId=(\d+)/i, params:[2]},
for (var i in template.p)
"HebrewBooksPage": {regex: /pdfpager\.aspx\?.*req=(\d+).*&pgnum=(\d+)/i, params:[3,5]},
if (typeof template.p[i] == "number")
"בחדרי חרדים" : { regex: /\/Article\.aspx\?id=(\d+)/i, params:[3]},
template.p[i] = constants[template.p[i]];
"וואלה!": {regex: /\?w=\/(\d+)\/(\d+)/i, params:[6,3]},
 
"גלובס": {regex: /\/news\/article.aspx\?did=(\d+)/i, params:[3]},
return template;
"כלכליסט": {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]},
"דבר": {regex: /=DAV\/(\d{4}\/\d{1,2}\/\d{1,2})(?:.*&EntityId=|\/\d+\/)(Ar|Ad|Pc)(\d+)/i, params:[3,6,4]},
"אנציקלופדיה 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\/(\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},
"פנאי פלוס": {regex: /ynet\.co\.il\/([^\/]+)\/(\d+),7340,L-(\d+),00\.html/i, params:[7,6,3]}
}
}
return regexes[templateName];
}


function popupPredefinedLinkTemplate(templateName, paramList, regexDict) {
function templateDialog(dialog, template, values) {
var height = 160 + 20 * paramList.length + (regexDict ? 60 : 0);
var brainDamage = $.client.profile().name == 'msie' && $.client.profile().versionNumber < 8;
for (i in paramList)
var orderedFields = [],
height += 16 * Math.floor(paramList[i].length / 24);
namedFields = [],
var top = (screen.height - height) / 2, left = (screen.width - 550) / 2;
table = $('<table>'),
var popup = window.open("", "", "resizable=1,height="+height+",width=550,left="+left+",top="+top);
empty = {val: function(){return '';}, hasClass: function(){return 0;}};
var doc = popup.document;
 
doc.problematic = regexDict && regexDict.problematic;
function createWikiCode() {
copyAttributes(doc, { title: " הוספת תבנית: " + templateName, dir: "rtl", templateName: templateName, allFields:[] } );
var par = ["{{" + template.t];
var body = doc.body;
for (var i = 0; i < orderedFields.length; i++)
if (regexDict) {
par.push($.trim(orderedFields[i].val()).replace(/\|/g, '{{!}}').replace(/=/g, '{{=}}'));
body.appendChild(doc.createTextNode('הדביקו את הקישור כאן:'));
 
var b = doc.createElement("input");
if (template.def)
b.urlInput = doc.createElement("input");
for (var parnum in template.def)
copyAttributes(b.urlInput, { type: "text", maxLength: 600 } );
if (par[parnum] == template.def[parnum])
b.urlInput.style.width = "12em";
par[parnum] = '';
body.appendChild(b.urlInput);
if (! template.nopop)
copyAttributes(b, {type: "button", value: "חילוץ פרמטרים מהקישור", regexDict: regexDict, doc: doc, update: updatePreview });
while (par.length && !par[par.length-1].length && orderedFields[par.length-2].length) // last condition is to avoid remving "emptys"
b.onclick = function() {
par.pop();
var matches = this.urlInput.value.match(this.regexDict.regex);
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)
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]; //parameters are counted from one, we count from 0.
$('#ltw2_inputfield_' + template.rp[i-1]).val(matches[i] || '');
if (fieldIndex && this.doc.allFields[fieldIndex-1])
updatePreview();
this.doc.allFields[fieldIndex-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) {
var param = paramList[i];
if (param.length == 0) { // this allow defining an empty parameter. by use of a "pseudo field".
doc.allFields.push({value:""});
continue;
}
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 = copyAttributes(doc.createElement("input"), { type: "text", maxLength: 120, doc: doc });
field.onkeyup = field.onmouseup = field.onfocus = field.onblur = updatePreview;
field.style.width = "20em";
cell = row.insertCell(-1) || row.cells[1];
cell.appendChild(field);
doc.allFields.push(field);
}
body.appendChild(table);
body.appendChild(doc.createElement("p"));
p = doc.createElement("p");
p.appendChild(doc.createTextNode(" הערת שוליים:"));
doc.refCheckBox = copyAttributes(doc.createElement('input'), {type: "checkbox", doc: doc, onchange: updatePreview});
p.appendChild(doc.refCheckBox);
p.appendChild(doc.createTextNode(" פריט ברשימה:"));
doc.listCheckBox = copyAttributes(doc.createElement('input'), {type: "checkbox", doc: doc, onchange: updatePreview});
p.appendChild(doc.listCheckBox);
body.appendChild(p);
p = doc.createElement("p");
copyAttributes(p.style, {background: "blue", color: "white", fontSize: "0.85em"} );
p.appendChild(doc.previewNode = doc.createTextNode(' '));
body.appendChild(p);
body.appendChild(doc.createElement("p"));
b = copyAttributes(doc.createElement("input"), {type:"button", value:"אישור", doc: doc, popup: popup});
doc.problematic = regexDict && regexDict.problematic && true;
b.onclick = function() {
insertTags("", createTemplate(this.doc), "");
this.popup.close();
}
body.appendChild(b);
b = copyAttributes(doc.createElement("input"), {type: "button", value: "ביטול", popup: popup, onclick: function(){this.popup.close();}});
body.appendChild(b);
doc.refCheckBox.onchange();
}


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


function createSortedTemplatesList() {
function fromTemplate(text) {
var fullList = knownLinkTemplates();
var regex = new RegExp('\\{\\{(' + allTemplates.join('|') + ')([^}]*)');
var names = [], hnames = [];
match = text.match(regex);
for (x in fullList)
if (match) {
if (x.match(/^[a-zA-Z]/))
template = match[1];
names.push(x);
values = match[2].split('|');
else
values.shift();
hnames.push(x);
templateDialog(dialog, templates(template), values);
hnames.sort();
return true;
names.sort(function(a,b){var la=a.toLowerCase(),lb=b.toLowerCase();return la>lb?1:la<lb?-1:0;});
}
return hnames.concat(names);
return false;
}
}


function createLinkTemplatesSelections() {
var select = document.createElement("select");
select.onchange = function() {
fireLinkTemplatePopup(this.value);
this.selectedIndex = 0;
return false;
}
select.options.add(new Option("אשף תבניות קישורים", ""));
var allnames = createSortedTemplatesList();
for (var i in allnames)
select.options.add(new Option(allnames[i], allnames[i]));
var toolbar = document.getElementById("toolbar");
if (toolbar)
toolbar.appendChild(select);
}


function updatePreview() { this.doc.previewNode.data = createTemplate(this.doc); }
for (var i in fullList)
allTemplates.push(fullList[i].t);


function advancedFire(context) {
if (fromTemplate($("#wpTextbox1").textSelection('getSelection')))
fireLinkTemplatePopup(this.template);
return;
}


function createAdvanceToolKit() {
var selector = $('<select>', {'class': 'ltw_disposable'}).change(function() { // class in quotes - reserved word.
    var gadget = {label: 'אשף תבניות קישורים', type: 'select', list: []};
if (! this.value) return;
var templatesList = createSortedTemplatesList();
dialog.dialog('option', 'title', title + ' עבור ' + this.value);
for (var i in templatesList)
$(this).remove();
        gadget.list.push({label: templatesList[i], action: {type: 'callback', execute: advancedFire, template: templatesList[i]}});
templateDialog(dialog, templates(this.value));
$j('#wpTextbox1').wikiEditor('addToToolbar', {
});
'section': 'advanced',
selector.append($('<option>', {text: 'בחרו תבנית מהרשימה'}));
'group': 'heading',
for (var i in allTemplates)
'tools': {'linkTemplateWizard': gadget}
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 (typeof $j != 'undefined' && typeof $j.fn.wikiEditor != 'undefined')
if (mw.user.options.get('usebetatoolbar')) {
$j(document).ready(createAdvanceToolKit);
var depend = ['ext.wikiEditor'];
if (wgAction == 'edit')
mw.loader.using(depend, function() {
hookEvent("load", createLinkTemplatesSelections);
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);})
);
});
});
});

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