לדלג לתוכן

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

מתוך צפונות ויקי
+ישראל היום, תיקון כותרות לתבניות בבלי, משנה, ירושלמי, שו"ע, ורמב"ם
זוטות
שורה 12: שורה 12:
var height = 100 + 30 * paramList.length + (regexDict ? 60 : 0);
var height = 100 + 30 * paramList.length + (regexDict ? 60 : 0);
for (i in paramList)
for (i in paramList)
height += 20 * (paramList[i].length / 40)
height += 20 * Math.floor(paramList[i].length / 20);
var popup = window.open("", "popup", "height=" + height + ",width=500" );
var top = (screen.height - height) / 2, left = (screen.width - 500) / 2;
var popup = window.open(""," הוספת תבנית: " + templateName,"resizable=1,height="+height+",width=500,left="+left+",top="+top);
popup.location
var doc = popup.document;
var doc = popup.document;
doc.title =  " הוספת תבנית: " + templateName;
doc.title =  " הוספת תבנית: " + templateName;
שורה 54: שורה 57:
var cell = row.insertCell(-1);
var cell = row.insertCell(-1);
cell.innerHTML = param;
cell.innerHTML = param;
cell.style.maxWidth = "12em";
cell.style.maxWidth = "16em";
var field = doc.createElement("input");
var field = doc.createElement("input");
field.type = "text";
field.type = "text";
שורה 157: שורה 160:
"מספר הסדרה",
"מספר הסדרה",
'מספר סדרת "ART"',
'מספר סדרת "ART"',
"כותרת הכתבה. כאשר הכתבה משתרעת על פני דפים אחדים, יש לתת לכל חלק שאחר החלק הראשון את הכותרת 'המשך'",
"כותרת הכתבה. אם הכתבה משתרעת על פני דפים אחדים יש לתת לכל חלק פרט לראשון את הכותרת 'המשך'",
"תאריך כתבה, בצורה 1949/07/25 (כפי שמופיע ב-URL של הכתבה)",
"תאריך כתבה, בצורה <br/>1949/07/25כפי שמופיע בקישור",
"ערך חלופי לסוג הפרסום, כשהקישור הוא לפרסומת או לתמונה ולא לכתבה. אם ה-URL כולל 'EntityId=Ad' או 'EntityId=Pc', יש למלא Ad או Pc",
"ערך חלופי לסוג הפרסום, כשהקישור הוא לפרסומת או לתמונה ולא לכתבה.<br/>אם הקישור כולל 'EntityId=Ad' או 'EntityId=Pc', יש למלא Ad או Pc",
"שם הספר",
"שם הספר",
"קידומת סוג הכתבה",
"קידומת סוג הכתבה",
שורה 166: שורה 169:
"קוד כניסה חינם (כפי שמופיע ב־URL)",
"קוד כניסה חינם (כפי שמופיע ב־URL)",
"כרך",
"כרך",
"הפניה לכתבה (כפי שמופיע ב-URL של הכתבה)",
"הפניה לכתבה (כפי שמופיע בקישור)",
"הלכה",
"הלכה",
"טור",
"טור",
שורה 226: שורה 229:
"ישראל היום":[1,2,3,4],
"ישראל היום":[1,2,3,4],
/*
/*
"":[],
"":[],
"":[],
"":[],
"":[],
"":[],
"":[],
"":[],
"":[],
"":[],
"":[],
"":[],
"":[],
"":[],
"":[],
"":[],
"":[],
"":[],
*/
*/
שורה 254: שורה 241:
function templateRegex(templateName) {
function templateRegex(templateName) {
var regexes = {
var regexes = {
"nrg": {regex: /http:\/\/(?:www\.){0,1}nrg\.co\.il\/online\/([^\/]+)\/ART([^\/]+)\/([^\.]+).html/i, params:[6,7,3]},
"nrg": {regex: /\/online\/([^\/]+)\/ART([^\/]+)\/([^\.]+).html/i, params:[6,7,3]},
"בחדרי חרדים" : { regex: /http:\/\/(?:www\.){0,1}bhol\.co\.il\/Article\.aspx\?id=(\d+)/i, params:[3]},
"בחדרי חרדים" : { regex: /\/Article\.aspx\?id=(\d+)/i, params:[3]},
"Google book": { regex: /http:\/\/books\.google\.com\/books\?id=([^&]+)/i, params:[1]},
"Google book": { regex: /\/books\?id=([^&]+)/i, params:[1]},
"NFC": {regex: /http:\/\/(?:www\.){0,1}news1\.co\.il\/Archive\/([^\.]+)\.html/i, params:[3]},
"NFC": {regex: /Archive\/([^\.]+)\.html/i, params:[3]},
"HebrewBooks": {regex: /http:\/\/(?:www\.)hebrewbooks\.org\/(\d+)/i, params:[3]},
"HebrewBooks": {regex: /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]},
"mynet": {regex: /articles\/(\d+),7340,L-(\d+),00\.html/i, params:[6,3]},
"Onlife": {regex: /http:\/\/onlife\.co\.il\/([^\/]+)\/(.*)/i, params:[1,3]},
"Onlife": {regex: /onlife\.co\.il\/([^\/]+)\/(.*)/i, params:[1,3]},
"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]},
"PalPost": {regex: /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]},
"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]},
"ynet": {regex: /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: /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: /\/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]},
"כלכליסט": {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]},
"נענע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]},
"Mooma": {regex: /\?ArtistId=(\d+)/i, params:[1]},
"דבר": {regex: /http:\/\/(?:www\.){0,1}jpress\.org\.il\/Default\/Scripting\/ArticleWin.asp\?.*=DAV\/(\d{4}\/\d{1,2}\/\d{1,2})&EntityId=(Ar|Ad|Pc)(\d+)/i, params:[3,6,4]},
"דבר": {regex: /=DAV\/(\d{4}\/\d{1,2}\/\d{1,2})&EntityId=(Ar|Ad|Pc)(\d+)/i, params:[3,6,4]},
"אנציקלופדיה ynet": {regex: /http:\/\/(?:www\.){0,1}ynet\.co\.il\/yaan\/0,7340,L-(\d+)-([^-]*)-FreeYaan,00.html/i, params:[2,3]},
"אנציקלופדיה ynet": {regex: /\/yaan\/0,7340,L-(\d+)-([^-]*)-FreeYaan,00.html/i, params:[2,3]},
"אנשים ישראל": {regex: /.*itemID=(\d+)&/i, params:[3]},
"אנשים ישראל": {regex: /.*itemID=(\d+)&/i, params:[3]},
"אתר חיל האוויר": {regex: /\/([^\/]*)-he\//i, params:[3]},
"אתר חיל האוויר": {regex: /\/([^\/]*)-he\//i, params:[3]},
שורה 283: שורה 270:
"": {regex: /newsletter_article\.php\?id=(\d+)/i, params:[3]},
"": {regex: /newsletter_article\.php\?id=(\d+)/i, params:[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:[]},
"": {regex: //i, params:[]},
*/
*/

גרסה מ־13:59, 6 בפברואר 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 * Math.floor(paramList[i].length / 20);
	var top = (screen.height - height) / 2, left = (screen.width - 500) / 2;
	
	var popup = window.open(""," הוספת תבנית: " + templateName,"resizable=1,height="+height+",width=500,left="+left+",top="+top);
	popup.location
	var doc = popup.document;
	doc.title =  " הוספת תבנית: " + templateName;
	doc.direction = doc.dir = "rtl";	
	doc.templateName = templateName;
	doc.allFields = [];
	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 = "16em";
		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);
	}
	body.appendChild(table);
	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"',
		"כותרת הכתבה. אם הכתבה משתרעת על פני דפים אחדים יש לתת לכל חלק פרט לראשון את הכותרת 'המשך'",
		"תאריך כתבה, בצורה <br/>1949/07/25כפי שמופיע בקישור",
		"ערך חלופי לסוג הפרסום, כשהקישור הוא לפרסומת או לתמונה ולא לכתבה.<br/>אם הקישור כולל 'EntityId=Ad' או 'EntityId=Pc', יש למלא Ad או Pc",
		"שם הספר",
		"קידומת סוג הכתבה",
		"מזהה נושא הכתבה",
		"שם הערך",
		"קוד כניסה חינם (כפי שמופיע ב־URL)",
		"כרך",
		"הפניה לכתבה (כפי שמופיע בקישור)",
		"הלכה",
		"טור",
		"חלק",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		"",
		
	];
	
	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],
		"אנציקלופדיה ynet":[27,3,28,4],
		"תדהר":[29,13,27],
		"אנשים ישראל":[1,2,3,4],
		"אתר חיל האוויר":[1,2,3,4],
		"בלדד השוחי":[3,2],
		"בשבע":[1,2,3,4],
		"האייל הקורא":[1,2,3,4],
		"הידען":[1,2,30,4],
		"המאסף":[1,2,3,4],
		"חסקין":[3,2],
		"בבלי":[11,12,13],
		"משנה":[11,9,14],
		'רמב"ם':[8,17,9,31],
		"ירושלמי":[11,9,31],
		"שולחן ערוך":[33,15,16],
		"מטח":[1,2,3,4],
		"גלצ":[1,2,3,4],
		"ישראל היום":[1,2,3,4],
		/*
		"":[],
		*/
	};
	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: /\/online\/([^\/]+)\/ART([^\/]+)\/([^\.]+).html/i, params:[6,7,3]},
		"בחדרי חרדים" : { regex: /\/Article\.aspx\?id=(\d+)/i, params:[3]},
		"Google book": { regex: /\/books\?id=([^&]+)/i, params:[1]},
		"NFC": {regex: /Archive\/([^\.]+)\.html/i, params:[3]},
		"HebrewBooks": {regex: /hebrewbooks\.org\/(\d+)/i, params:[3]},
		"mynet": {regex: /articles\/(\d+),7340,L-(\d+),00\.html/i, params:[6,3]},
		"Onlife": {regex: /onlife\.co\.il\/([^\/]+)\/(.*)/i, params:[1,3]},
		"PalPost": {regex: /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: /ynet\.co\.il\/([^\/]+)\/(\d+),7340,L-(\d+),00.html/i, params:[7,6,3]},
		"וואלה!": {regex: /news\.walla\.co\.il\/?w=\/(\d+)(?:\/)(\d+)/i, params:[6,2]},
		"גלובס": {regex: /\/news\/article.aspx\?did=(\d+)/i, params:[3]},
		"כלכליסט": {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]},
		"Mooma": {regex: /\?ArtistId=(\d+)/i, params:[1]},
		"דבר": {regex: /=DAV\/(\d{4}\/\d{1,2}\/\d{1,2})&EntityId=(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_(\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: //i, params:[]},
		*/
	}
	return regexes[templateName];
}