לדלג לתוכן

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

מתוך צפונות ויקי
יותר טוב ככה: 0 מספר חוקי אבל ה-if יחזיר false...
עוד כמה
שורה 121: שורה 121:
if (toolbar)  
if (toolbar)  
toolbar.appendChild(select);
toolbar.appendChild(select);
}
function templateRegex(templateName) {
var regexes = {
nrg: {regex: /http:\/\/(?:www\.){0,1}nrg\.co\.il\/online\/([^\/]+)\/ART([^\/]+)\/([^\.]+).html/i, params:[6,7,3]},
"בחדרי חרדים" : { regex: /http:\/\/(?:www\.){0,1}bhol\.co\.il\/Article\.aspx\?id=(\d+)/i, params:[3]}
}
return regexes[templateName];
}
}


שורה 138: שורה 129:
popupPredefinedLinkTemplate(templateName, templateParams, templateRegex(templateName));
popupPredefinedLinkTemplate(templateName, templateParams, templateRegex(templateName));
}
}
 
 
 
 
 
if (wgAction == 'edit')
if (wgAction == 'edit')
addOnloadHook(createLinkTemplatesSelections);
addOnloadHook(createLinkTemplatesSelections);
function knownLinkTemplates() {
function knownLinkTemplates() {
var constants = [
var constants = [
שורה 165: שורה 159:
"מספר הסדרה",
"מספר הסדרה",
'מספר סדרת "ART"',
'מספר סדרת "ART"',
"כותרת הכתבה. כאשר הכתבה משתרעת על פני דפים אחדים, יש לתת לכל חלק שאחר החלק הראשון את הכותרת 'המשך'",
"תאריך כתבה, בצורה 1949/07/25 (כפי שמופיע ב-URL של הכתבה)",
"ערך חלופי לסוג הפרסום, כאשר הקישור הוא לפרסומת או לתמונה ולא לכתבה. פרמטר זה נחוץ רק כאשר ה-URL כולל 'EntityId=Ad' או 'EntityId=Pc' במקום 'EntityId=Ar', והערך שיינתן בו הוא Ad או Pc",
"שם הספר",
"קידומת סוג הכתבה",
"מזהה נושא הכתבה",
"",
"",
"",
"",
"",
"",
];
];
שורה 170: שורה 177:
"ynet": [1,2,3,4,5,0,],
"ynet": [1,2,3,4,5,0,],
"הארץ": [1, 2, 3, 4],
"הארץ": [1, 2, 3, 4],
"דבר": [1,2,"תאריך כתבה, בצורה 1949/07/25 (כי שמופיע ב-URL של הכתבה)",3,6,"סוג הפרסום. אם ה-URL כולל 'EntityId=Ad' או 'EntityId=Pc' למלא 'Ad' או 'Pc'"],
"דבר": [1,2,22,3,6,23],
'תנ"ך': [8,9,10],
'תנ"ך': [8,9,10],
"nrg": [1,2,3,4,0,19,20],
"nrg": [1,2,3,4,0,19,20],
"Mooma": [18],
"Mooma": [18],
"בחדרי חרדים": [1,2,3,4]
"בחדרי חרדים": [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 key in templatesDic)
שורה 181: שורה 220:
templatesDic[key][i] = constants[templatesDic[key][i]];
templatesDic[key][i] = constants[templatesDic[key][i]];
return templatesDic;
return templatesDic;
}
function templateRegex(templateName) {
var regexes = {
"nrg": {regex: /http:\/\/(?:www\.){0,1}nrg\.co\.il\/online\/([^\/]+)\/ART([^\/]+)\/([^\.]+).html/i, params:[6,7,3]},
"בחדרי חרדים" : { regex: /http:\/\/(?:www\.){0,1}bhol\.co\.il\/Article\.aspx\?id=(\d+)/i, params:[3]},
"Google book": { regex: /http:\/\/books\.google\.com\/books\?id=([^&]+)/i, params:[1]},
"NFC": {regex: /http:\/\/(?:www\.){0,1}news1\.co\.il\/Archive\/([^\.]+)\.html/i, params:[3]},
"HebrewBooks": {regex: /http:\/\/(?:www\.)hebrewbooks\.org\/(\d+)/i, params:[3]},
"mynet": {regex: /http:\/\/(?:www\.){0,1}mynet\.co\.il\/articles\/(\d+),7340,L-(\d+),00\.html/i, params:[6,3]},
"Onlife": {regex: /http:\/\/onlife\.co\.il\/([^\/]+)\/(.*)/i, params:[1,3]},
"": {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]},
"TheMarker": {regex: /http:\/\/(?:www\.){0,1}themarker\.com\/tmc\/article\.jhtml\?ElementId=([^&\/\.]+)/i, params:[3]},
"ynet": {regex: /http:\/\/(?:www\.){0,1}ynet\.co\.il\/([^\/]+)\/(\d+),7340,L-(\d+),00.html/i, params:[7,6,3]},
"וואלה!": {regex: /http:\/\/(?:www\.){0,1}news\.walla\.co\.il\/?w=\/(\d+)(?:\/)(\d+)/i, params:[6,2]},
"גלובס": {regex: /http:\/\/(?:www\.){0,1}globes\.co\.il\/news\/article.aspx\?did=(\d+)/i, params:[3]},
"כלכליסט": {regex: /http:\/\/www.calcalist\.co\.il\/local\/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: //i, params:[]},
"": {regex: //i, params:[]},
"": {regex: //i, params:[]},
"": {regex: //i, params:[]},
"": {regex: //i, params:[]},
"": {regex: //i, params:[]},
"": {regex: //i, params:[]},
"": {regex: //i, params:[]},
"": {regex: //i, params:[]},
"": {regex: //i, params:[]},
"": {regex: //i, params:[]},
*/
}
return regexes[templateName];
}
}

גרסה מ־22:06, 5 בפברואר 2011

function createAndInsertLinkTemplate(templateName, fields, isRef) {
	var par = ["{{" + templateName];
	for (var i = 0; i < fields.length; i++)
		par.push(fields[i].value);
	var code = par.join("|") + "}}";
	if (isRef)
		code = "{{הערה|1=" + code + "}}";
	insertTags( "", "", code);
}

function popupPredefinedLinkTemplate(templateName, paramList, regexDict) {
	var height = 100 + 30 * paramList.length + (regexDict ? 60 : 0);
	for (i in paramList)
		height += 20 * (paramList[i].length / 60)
	var popup = window.open("", "popup", "height=" + height + ",width=500" );
	var doc = popup.document;
	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 = "חילוץ פרמטרים מן הקישור";
		b.regexDict = regexDict;
		b.doc = doc;
		b.onclick = function() {
			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];
				}
			}
		}
		body.appendChild(b);
	}
	var table = doc.createElement("table");
	for (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);
		var cell = row.insertCell(-1);
		cell.innerHTML = param;
		cell.style.maxWidth = "12em";
		var field = doc.createElement("input");
		field.type = "text";
		field.maxLength = 120;
		field.style.width = "20em";
		cell = row.insertCell(-1);
		cell.appendChild(field);
		doc.allFields.push(field);
	}
	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() {
	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 linkTemplates = knownLinkTemplates();
	var templateParams = linkTemplates[templateName];
	if (templateParams && templateParams.constructor == Array && templateParams.length > 0)
		popupPredefinedLinkTemplate(templateName, templateParams, templateRegex(templateName));
}





if (wgAction == 'edit')
	addOnloadHook(createLinkTemplatesSelections);
function knownLinkTemplates() {
	var constants = [
		"",
		"שם המחבר",
		"כותרת  המאמר",
		"מספר (כפי שמופע בקישור)",
		"מידע נוסף (למשל תאריך)",
		"מספר הסדרה", 
		 "קידומת",
		"מידע נוסף (לא תאריך)",
		"ספר",
		"פרק",
		"פסוק",
		"מסכת",
		"דף",
		"עמוד",
		"משנה",
		"סימן",
		"סעיף",
		"הלכות",
		"שם",
		"מספר הסדרה",
		'מספר סדרת "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) {
	var regexes = {
		"nrg": {regex: /http:\/\/(?:www\.){0,1}nrg\.co\.il\/online\/([^\/]+)\/ART([^\/]+)\/([^\.]+).html/i, params:[6,7,3]},
		"בחדרי חרדים" : { regex: /http:\/\/(?:www\.){0,1}bhol\.co\.il\/Article\.aspx\?id=(\d+)/i, params:[3]},
		"Google book": { regex: /http:\/\/books\.google\.com\/books\?id=([^&]+)/i, params:[1]},
		"NFC": {regex: /http:\/\/(?:www\.){0,1}news1\.co\.il\/Archive\/([^\.]+)\.html/i, params:[3]},
		"HebrewBooks": {regex: /http:\/\/(?:www\.)hebrewbooks\.org\/(\d+)/i, params:[3]},
		"mynet": {regex: /http:\/\/(?:www\.){0,1}mynet\.co\.il\/articles\/(\d+),7340,L-(\d+),00\.html/i, params:[6,3]},
		"Onlife": {regex: /http:\/\/onlife\.co\.il\/([^\/]+)\/(.*)/i, params:[1,3]},
		"": {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]},
		"TheMarker": {regex: /http:\/\/(?:www\.){0,1}themarker\.com\/tmc\/article\.jhtml\?ElementId=([^&\/\.]+)/i, params:[3]},
		"ynet": {regex: /http:\/\/(?:www\.){0,1}ynet\.co\.il\/([^\/]+)\/(\d+),7340,L-(\d+),00.html/i, params:[7,6,3]},
		"וואלה!": {regex: /http:\/\/(?:www\.){0,1}news\.walla\.co\.il\/?w=\/(\d+)(?:\/)(\d+)/i, params:[6,2]},
		"גלובס": {regex: /http:\/\/(?:www\.){0,1}globes\.co\.il\/news\/article.aspx\?did=(\d+)/i, params:[3]},
		"כלכליסט": {regex: /http:\/\/www.calcalist\.co\.il\/local\/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: //i, params:[]},
		"": {regex: //i, params:[]},
		"": {regex: //i, params:[]},
		"": {regex: //i, params:[]},
		"": {regex: //i, params:[]},
		"": {regex: //i, params:[]},
		"": {regex: //i, params:[]},
		"": {regex: //i, params:[]},
		"": {regex: //i, params:[]},
		"": {regex: //i, params:[]},
		"": {regex: //i, params:[]},
		*/
	}
	return regexes[templateName];
}