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

מ עדכון
TheMarker1 - פרמטר #5.
שורה 2: שורה 2:
//Written by [[User:קיפודנחש]]
//Written by [[User:קיפודנחש]]


function ltw_createTemplate() {
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 ltw_copyAttributes(target, source) {for (key in source)target[key] = source[key];return target;}
function ltw2_copyAttributes(target, source) {for (key in source)target[key] = source[key];return target;}


function ltw_knownLinkTemplates() {
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],
// "TheMarker":[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")
ltw_copyAttributes(templatesDic, privateTemplates);
ltw2_copyAttributes(templatesDic, privateTemplates);
return templatesDic;
return templatesDic;
}
}


function ltw_namedParams(templateName) {
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 ltw_templateRegex(templateName) {
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 = ltw_copyAttributes({}, histregex);
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")
ltw_copyAttributes(regexes, privateRegexes);
ltw2_copyAttributes(regexes, privateRegexes);
return regexes[templateName];
return regexes[templateName];
}
}


function ltw_addFiledToTable(doc, table, param) {
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 = ltw_copyAttributes(doc.createElement("input"), {type: "text", maxLength: 120, doc: doc});
var field = ltw2_copyAttributes(doc.createElement("input"), {type: "text", maxLength: 120, doc: doc});
field.onkeyup = field.onmouseup = field.onfocus = field.onblur = ltw_updatePreview;
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 ltw_popupPredefinedLinkTemplate(templateName, paramList, regexDict) {
function ltw2_popupPredefinedLinkTemplate(templateName, paramList, regexDict) {
var namedParamsList = ltw_namedParams(templateName);
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;
ltw_copyAttributes(doc, {title: " הוספת תבנית: " + templateName, dir: "rtl", templateName: templateName, orderedFields:[], getTemplate:ltw_createTemplate, updatePreview:function(){this.previewNode.data = this.getTemplate();}});
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");
ltw_copyAttributes(b.urlInput, { type: "text", maxLength: 600 } );
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);
ltw_copyAttributes(b, {type: "button", value: "חילוץ פרמטרים מהקישור", regexDict: regexDict, doc: doc, update: ltw_updatePreview });
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(ltw_addFiledToTable(doc, table, param));
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], ltw_addFiledToTable(doc, table, np[1])]);
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] = ltw_copyAttributes(doc.createElement('input'), {type: "checkbox", doc: doc, onchange: ltw_updatePreview});
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"));
ltw_copyAttributes(p.style, {background: "blue", color: "white", fontSize: "0.85em"} );
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 = ltw_copyAttributes(doc.createElement("input"), {type:"button", value:"אישור", doc: doc, popup: popup});
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 = ltw_copyAttributes(doc.createElement("input"), {type: "button", value: "ביטול", popup: popup, onclick: function(){this.popup.close();}});
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 ltw_fireLinkTemplatePopup(templateName) {
function ltw2_fireLinkTemplatePopup(templateName) {
var linkTemplates = ltw_knownLinkTemplates();
var linkTemplates = ltw2_knownLinkTemplates();
var templateParams = linkTemplates[templateName];
var templateParams = linkTemplates[templateName];
ltw_popupPredefinedLinkTemplate(templateName, templateParams, ltw_templateRegex(templateName));
ltw2_popupPredefinedLinkTemplate(templateName, templateParams, ltw2_templateRegex(templateName));
}
}


function ltw_createSortedTemplatesList() {
function ltw2_createSortedTemplatesList() {
var fullList = ltw_knownLinkTemplates();
var fullList = ltw2_knownLinkTemplates();
var names = [], hnames = [];
var names = [], hnames = [];
for (x in fullList)
for (x in fullList)
שורה 363: שורה 363:
}
}


function ltw_createLinkTemplatesSelections() {
function ltw2_createLinkTemplatesSelections() {
var select = document.createElement("select");
var select = document.createElement("select");
select.onchange = function() {
select.onchange = function() {
ltw_fireLinkTemplatePopup(this.value);
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 = ltw_createSortedTemplatesList();
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 ltw_updatePreview() { this.doc.updatePreview(); }
function ltw2_updatePreview() { this.doc.updatePreview(); }


function ltw_advancedFire(context) {
function ltw2_advancedFire(context) {
ltw_fireLinkTemplatePopup(this.template);
ltw2_fireLinkTemplatePopup(this.template);
}
}


function ltw_createAdvanceToolKit() {
function ltw2_createAdvanceToolKit() {
     var gadget = {label: 'אשף תבניות קישורים', type: 'select', list: []};
     var gadget = {label: 'אשף תבניות קישורים', type: 'select', list: []};
var templatesList = ltw_createSortedTemplatesList();
var templatesList = ltw2_createSortedTemplatesList();
for (var i in templatesList)
for (var i in templatesList)
         gadget.list.push({label: templatesList[i], action: {type: 'callback', execute: ltw_advancedFire, template: templatesList[i]}});
         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(ltw_createAdvanceToolKit);
$j(document).ready(ltw2_createAdvanceToolKit);
if (wgAction == 'edit')
if (wgAction == 'edit')
hookEvent("load", ltw_createLinkTemplatesSelections);
hookEvent("load", ltw2_createLinkTemplatesSelections);