מדיה ויקי:Gadget-TemplatesExternalLinks.js: הבדלים בין גרסאות בדף
מ עדכון |
TheMarker1 - פרמטר #5. |
||
| שורה 2: | שורה 2: | ||
//Written by [[User:קיפודנחש]] | //Written by [[User:קיפודנחש]] | ||
function | function ltw2_createTemplate() { | ||
var par = ["{{" + this.templateName]; | var par = ["{{" + this.templateName]; | ||
for (var i in this.orderedFields) | for (var i in this.orderedFields) | ||
| שורה 25: | שורה 25: | ||
} | } | ||
function | function ltw2_copyAttributes(target, source) {for (key in source)target[key] = source[key];return target;} | ||
function | function ltw2_knownLinkTemplates() { | ||
var constants = ["", | var constants = ["", | ||
"שם המחבר", | "שם המחבר", | ||
| שורה 98: | שורה 98: | ||
"NFC":[1,2,3,4], | "NFC":[1,2,3,4], | ||
"Onlife":[1,2,3,4], | "Onlife":[1,2,3,4], | ||
"ynet":[1,2,3,4,0,5,25], | "ynet":[1,2,3,4,0,5,25], | ||
"וואלה!":[1,2,3,4,0,26], | "וואלה!":[1,2,3,4,0,26], | ||
| שורה 161: | שורה 160: | ||
templatesDic[key][i] = constants[templatesDic[key][i]]; | templatesDic[key][i] = constants[templatesDic[key][i]]; | ||
if (typeof privateTemplates === "object") | if (typeof privateTemplates === "object") | ||
ltw2_copyAttributes(templatesDic, privateTemplates); | |||
return templatesDic; | return templatesDic; | ||
} | } | ||
function | function ltw2_namedParams(templateName) { | ||
var allNamedParam = { | var allNamedParam = { | ||
'קול הלשון - שיעור': [['וידאו', '"וידאו": רשמו "כן" אם זה שיעור לצפייה'], ['תואר', 'תואר - אם תואר המרצה שונה מ"הרב"']], | 'קול הלשון - שיעור': [['וידאו', '"וידאו": רשמו "כן" אם זה שיעור לצפייה'], ['תואר', 'תואר - אם תואר המרצה שונה מ"הרב"']], | ||
| שורה 172: | שורה 171: | ||
"imdb name": [['id', 'המספר שמופיע בקישור'], ['name', 'הכותרת שתופיע בקישור (אופציונלי: ברירת מחדל - שם הערך']], | "imdb name": [['id', 'המספר שמופיע בקישור'], ['name', 'הכותרת שתופיע בקישור (אופציונלי: ברירת מחדל - שם הערך']], | ||
"imdb company": [['id', 'המספר שמופיע בקישור'], ['company', 'הכותרת שתופיע בקישור']], | "imdb company": [['id', 'המספר שמופיע בקישור'], ['company', 'הכותרת שתופיע בקישור']], | ||
"Google book": [['מזהה','מזהה הספר באתר גוגל'],['כותב','שם כותב/י הספר (אופציונלי)'],['שם הספר','שם הספר (אופציונלי) - ללא הפרמטר יוצג שם הערך']] | "Google book": [['מזהה','מזהה הספר באתר גוגל'],['כותב','שם כותב/י הספר (אופציונלי)'],['שם הספר','שם הספר (אופציונלי) - ללא הפרמטר יוצג שם הערך']], | ||
"TheMarker1": [['5','קידומת הקישור, אם שונה מ-www']] | |||
}; | }; | ||
return allNamedParam[templateName] || []; | return allNamedParam[templateName] || []; | ||
} | } | ||
function | function ltw2_templateRegex(templateName) { | ||
var regexes = { | var regexes = { | ||
"nrg": {regex: /\/online\/([^\/]+)\/ART([^\/]*)\/([^\.]+).html/i, params:[6,7,3]}, | "nrg": {regex: /\/online\/([^\/]+)\/ART([^\/]*)\/([^\.]+).html/i, params:[6,7,3]}, | ||
| שורה 235: | שורה 235: | ||
"imdb company": {regex: /company\/co(\d+)/i, params: [1]}, | "imdb company": {regex: /company\/co(\d+)/i, params: [1]}, | ||
"Google book" : {regex: /id=([^&]*)/, params: [1]}, | "Google book" : {regex: /id=([^&]*)/, params: [1]}, | ||
"TheMarker1": {regex: /themarker\.com\/([^\?]+)/i, params: [3]} | "TheMarker1": {regex: /http:\/\/(?:www)?(.*)\.themarker\.com\/([^\?]+)/i, params: [5,3]} | ||
} | } | ||
| שורה 242: | שורה 242: | ||
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, '/']]}; | 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) { | for (var template in historic) { | ||
var lr = | var lr = ltw2_copyAttributes({}, histregex); | ||
lr.regex = new RegExp(lr.regex.source.replace("HISTNAME", historic[template])); | lr.regex = new RegExp(lr.regex.source.replace("HISTNAME", historic[template])); | ||
regexes[template] = lr; | regexes[template] = lr; | ||
} | } | ||
if (typeof privateRegexes === "object") | if (typeof privateRegexes === "object") | ||
ltw2_copyAttributes(regexes, privateRegexes); | |||
return regexes[templateName]; | return regexes[templateName]; | ||
} | } | ||
function | function ltw2_addFiledToTable(doc, table, param) { | ||
var row = table.insertRow(-1) || table[rows[table.rows.length-1]]; | var row = table.insertRow(-1) || table[rows[table.rows.length-1]]; | ||
var cell = row.insertCell(-1) || row.cells[0]; | var cell = row.insertCell(-1) || row.cells[0]; | ||
cell.innerHTML = param; | cell.innerHTML = param; | ||
cell.style.maxWidth = "16em"; | cell.style.maxWidth = "16em"; | ||
var field = | var field = ltw2_copyAttributes(doc.createElement("input"), {type: "text", maxLength: 120, doc: doc}); | ||
field.onkeyup = field.onmouseup = field.onfocus = field.onblur = | field.onkeyup = field.onmouseup = field.onfocus = field.onblur = ltw2_updatePreview; | ||
field.style.width = "20em"; | field.style.width = "20em"; | ||
cell = row.insertCell(-1) || row.cells[1]; | cell = row.insertCell(-1) || row.cells[1]; | ||
| שורה 264: | שורה 264: | ||
} | } | ||
function | function ltw2_popupPredefinedLinkTemplate(templateName, paramList, regexDict) { | ||
var namedParamsList = | var namedParamsList = ltw2_namedParams(templateName); | ||
var height = 160 + 20 * (paramList.length + namedParamsList.length) + (regexDict ? 60 : 0); | var height = 160 + 20 * (paramList.length + namedParamsList.length) + (regexDict ? 60 : 0); | ||
for (i in paramList) | for (i in paramList) | ||
| שורה 273: | שורה 273: | ||
var doc = popup.document; | var doc = popup.document; | ||
doc.problematic = regexDict && regexDict.problematic; | doc.problematic = regexDict && regexDict.problematic; | ||
ltw2_copyAttributes(doc, {title: " הוספת תבנית: " + templateName, dir: "rtl", templateName: templateName, orderedFields:[], getTemplate:ltw2_createTemplate, updatePreview:function(){this.previewNode.data = this.getTemplate();}}); | |||
var body = doc.body; | var body = doc.body; | ||
if (regexDict) { | if (regexDict) { | ||
| שורה 279: | שורה 279: | ||
var b = doc.createElement("input"); | var b = doc.createElement("input"); | ||
b.urlInput = doc.createElement("input"); | b.urlInput = doc.createElement("input"); | ||
ltw2_copyAttributes(b.urlInput, { type: "text", maxLength: 600 } ); | |||
b.urlInput.style.width = "12em"; | b.urlInput.style.width = "12em"; | ||
body.appendChild(b.urlInput); | body.appendChild(b.urlInput); | ||
ltw2_copyAttributes(b, {type: "button", value: "חילוץ פרמטרים מהקישור", regexDict: regexDict, doc: doc, update: ltw2_updatePreview }); | |||
b.onclick = function() { | b.onclick = function() { | ||
var str = this.urlInput.value; | var str = this.urlInput.value; | ||
| שורה 295: | שורה 295: | ||
var fieldIndex = this.regexDict.params[i-1] - 1; //parameters are counted from one, we count from 0. | var fieldIndex = this.regexDict.params[i-1] - 1; //parameters are counted from one, we count from 0. | ||
if (fieldIndex < numOrdered) | if (fieldIndex < numOrdered) | ||
orderedFields[fieldIndex].value = matches[i]; | orderedFields[fieldIndex].value = matches[i] || ''; | ||
else if (fieldIndex < numOrdered + numNamed) | else if (fieldIndex < numOrdered + numNamed) | ||
namedFields[fieldIndex-numOrdered][1].value = matches[i]; | namedFields[fieldIndex-numOrdered][1].value = matches[i] || ''; | ||
} | } | ||
this.update(); | this.update(); | ||
| שורה 311: | שורה 311: | ||
continue; | continue; | ||
} | } | ||
doc.orderedFields.push( | doc.orderedFields.push(ltw2_addFiledToTable(doc, table, param)); | ||
} | } | ||
doc.namedFields = []; | doc.namedFields = []; | ||
for (var i in namedParamsList) { | for (var i in namedParamsList) { | ||
var np = namedParamsList[i]; | var np = namedParamsList[i]; | ||
doc.namedFields.push([np[0], | doc.namedFields.push([np[0], ltw2_addFiledToTable(doc, table, np[1])]); | ||
} | } | ||
body.appendChild(table); | body.appendChild(table); | ||
| שורה 324: | שורה 324: | ||
for (var box in checkboxes) { | for (var box in checkboxes) { | ||
p.appendChild(doc.createTextNode(checkboxes[box])); | p.appendChild(doc.createTextNode(checkboxes[box])); | ||
doc[box] = | doc[box] = ltw2_copyAttributes(doc.createElement('input'), {type: "checkbox", doc: doc, onchange: ltw2_updatePreview}); | ||
p.appendChild(doc[box]); | p.appendChild(doc[box]); | ||
} | } | ||
body.appendChild(p); | body.appendChild(p); | ||
body.appendChild(p = doc.createElement("p")); | body.appendChild(p = doc.createElement("p")); | ||
ltw2_copyAttributes(p.style, {background: "blue", color: "white", fontSize: "0.85em"} ); | |||
p.appendChild(doc.previewNode = doc.createTextNode(' ')); | p.appendChild(doc.previewNode = doc.createTextNode(' ')); | ||
body.appendChild(doc.createElement("p")); | body.appendChild(doc.createElement("p")); | ||
b = | b = ltw2_copyAttributes(doc.createElement("input"), {type:"button", value:"אישור", doc: doc, popup: popup}); | ||
doc.problematic = regexDict && regexDict.problematic && true; | doc.problematic = regexDict && regexDict.problematic && true; | ||
b.onclick = function() { | b.onclick = function() { | ||
| שורה 339: | שורה 339: | ||
} | } | ||
body.appendChild(b); | body.appendChild(b); | ||
b = | b = ltw2_copyAttributes(doc.createElement("input"), {type: "button", value: "ביטול", popup: popup, onclick: function(){this.popup.close();}}); | ||
body.appendChild(b); | body.appendChild(b); | ||
doc.refCheckBox.onchange(); | doc.refCheckBox.onchange(); | ||
} | } | ||
function | function ltw2_fireLinkTemplatePopup(templateName) { | ||
var linkTemplates = | var linkTemplates = ltw2_knownLinkTemplates(); | ||
var templateParams = linkTemplates[templateName]; | var templateParams = linkTemplates[templateName]; | ||
ltw2_popupPredefinedLinkTemplate(templateName, templateParams, ltw2_templateRegex(templateName)); | |||
} | } | ||
function | function ltw2_createSortedTemplatesList() { | ||
var fullList = | var fullList = ltw2_knownLinkTemplates(); | ||
var names = [], hnames = []; | var names = [], hnames = []; | ||
for (x in fullList) | for (x in fullList) | ||
| שורה 363: | שורה 363: | ||
} | } | ||
function | function ltw2_createLinkTemplatesSelections() { | ||
var select = document.createElement("select"); | var select = document.createElement("select"); | ||
select.onchange = function() { | select.onchange = function() { | ||
ltw2_fireLinkTemplatePopup(this.value); | |||
this.selectedIndex = 0; | this.selectedIndex = 0; | ||
return false; | return false; | ||
} | } | ||
select.options.add(new Option("אשף תבניות קישורים", "")); | select.options.add(new Option("אשף תבניות קישורים", "")); | ||
var allnames = | var allnames = ltw2_createSortedTemplatesList(); | ||
for (var i in allnames) | for (var i in allnames) | ||
select.options.add(new Option(allnames[i], allnames[i])); | select.options.add(new Option(allnames[i], allnames[i])); | ||
| שורה 379: | שורה 379: | ||
} | } | ||
function | function ltw2_updatePreview() { this.doc.updatePreview(); } | ||
function | function ltw2_advancedFire(context) { | ||
ltw2_fireLinkTemplatePopup(this.template); | |||
} | } | ||
function | function ltw2_createAdvanceToolKit() { | ||
var gadget = {label: 'אשף תבניות קישורים', type: 'select', list: []}; | var gadget = {label: 'אשף תבניות קישורים', type: 'select', list: []}; | ||
var templatesList = | var templatesList = ltw2_createSortedTemplatesList(); | ||
for (var i in templatesList) | for (var i in templatesList) | ||
gadget.list.push({label: templatesList[i], action: {type: 'callback', execute: | gadget.list.push({label: templatesList[i], action: {type: 'callback', execute: ltw2_advancedFire, template: templatesList[i]}}); | ||
$j('#wpTextbox1').wikiEditor('addToToolbar', { | $j('#wpTextbox1').wikiEditor('addToToolbar', { | ||
'section': 'advanced', | 'section': 'advanced', | ||
| שורה 398: | שורה 398: | ||
if (typeof $j != 'undefined' && typeof $j.fn.wikiEditor != 'undefined') | if (typeof $j != 'undefined' && typeof $j.fn.wikiEditor != 'undefined') | ||
$j(document).ready( | $j(document).ready(ltw2_createAdvanceToolKit); | ||
if (wgAction == 'edit') | if (wgAction == 'edit') | ||
hookEvent("load", | hookEvent("load", ltw2_createLinkTemplatesSelections); | ||