לדלג לתוכן

משתמש:איסתרק/בקשת עדכון ערך.js

מתוך המכלול, האנציקלופדיה היהודית

לתשומת ליבך: לאחר הפרסום, ייתכן שיהיה צורך לנקות את זיכרון המטמון (cache) של הדפדפן כדי להבחין בשינויים.

  • פיירפוקס / ספארי: להחזיק את המקש Shift בעת לחיצה על טעינה מחדש (Reload) או ללחוץ על צירוף המקשים Ctrl-F5 או Ctrl-R (במחשב מק: ⌘-R).
  • גוגל כרום: ללחוץ על צירוף המקשים Ctrl-Shift-R (במחשב מק: ⌘-Shift-R).
  • אדג': להחזיק את המקש Ctrl בעת לחיצה על רענן (Refresh) או ללחוץ על צירוף המקשים Ctrl-F5.
/*
מועתק מגאדג'ט בקשת עדכון ערך
(מדיה ויקי:Gadget-UpdateRequest.js)
עם התאמה קלה לצרכיי
*/
if(mw.config.get('wgNamespaceNumber') == 0 || 4 || 8 || 10 || 12 ) // not a special page
$(function(){
var linkPage =$( '<div class="mw-notification-content">בקשתך נשמרה בדף <a href="/המכלול:בקשת_עדכון_ערך# ' + mw.config.get("wgPageName") + '"</a>הבקשות.</div>');

function openDialog(code1, reasons, req) {

	var dialog = $("<div>").html("סיבת הבקשה: ").dialog({title: "בקשה ל" + req});
	var select = $("<select>").append($("<option>").append("ערך אקטואלי"));
	dialog.append(select);
	for (var id in reasons) {
		select.append($("<option>").append(reasons[id]));	
	}
	
	$(dialog).keypress(function(event) {
		if (event.key == "Enter") {
			var selectValue = select["0"].value;
			if (selectValue !== "אחר") code1(selectValue);
			
			dialog.dialog('close');
		}
	});
	dialog.dialog('option', 'buttons', {
		'בוצע':
			function(){
				var selectValue = select["0"].value;
				if (selectValue !== "אחר") code1(selectValue);
				dialog.dialog('close');
			},
		'סגור':
			function() {dialog.dialog('close');}
	});
}
function checkRequest() {
	var requestChecker = new $.Deferred();
	new mw.Api().get( {
		action:'query',
		prop: 'links',
		titles: 'המכלול:בקשת עדכון ערך',
		pltitles: mw.config.get('wgPageName'),
		indexpageids: 1
	}).done(function(d) {
		d = d.query;
		if ( d && d.pageids && d.pageids.length ) {
			d = d.pages[d.pageids[0]];
			if ( d.links && d.links.length > 0 )
			{
				if (!confirm('הדף כבר מוזכר בדף הבקשות. האם לשלוח בכל זאת את הבקשה?')) alert(".הדף כבר מוזכר בדף הבקשות. הבקשה לא נשמרה");{
					requestChecker.reject('.הדף כבר מוזכר בדף הבקשות. הבקשה לא נשמרה');
					return;
				}
			}
		}
		requestChecker.resolve();
	});
	return requestChecker;
}

function save(title, summary, content, next) {
	var param = {action: 'edit', title: title, summary: summary.replace(/replaceParam/g, mw.config.get("wgPageName").replace(/_/g, " ")).replace(/replaceUser/g, mw.config.get('wgRelevantUserName')), token: mw.user.tokens.get('csrfToken'),  appendtext: content, format: 'json'};
	$.post(mw.util.wikiScript('api'), param, function(data) {
		if (data && data.error)
			mw.notify('שגיאה בשמירה: ' + data.erro.info);
		else if (data && data.edit && data.edit.result == 'Success' && typeof next == 'function')
			next();
	});
}

function addMenuItem(caption, tooltip, message, accessKey) {
	var a = mw.util.addPortletLink('p-cactions','#',caption,'',tooltip.replace(/replaceParam/g, mw.config.get("wgPageName").replace(/_/g, " ")).replace(/replaceUser/g, mw.config.get('wgRelevantUserName')),(accessKey||''));
	$(a).click(function() {
		checkRequest().fail(function(err){
			mw.notify(err);
		}).done(function(){
			if (message.match(/reason/)) {message = '~~' + '~~'}
else{message += 'reason. ' + '~~' + '~~'}
			message = message.replace(/replaceParam/g, mw.config.get('wgPageName').replace(/_/g, " ")).replace(/replaceUser/g, mw.config.get('wgRelevantUserName'));
			switch (caption) {
				
				case "בקש עדכון":
					openDialog(function(selectValue){save('המכלול:בקשת עדכון ערך','[[replaceParam]]','\n\n== ' + '[[' +mw.config.get('wgPageName').replace(/_/g, " ") + ']]' + ' ==\n' +message.replace(/reason/g, selectValue), function() { mw.notify(linkPage);})},
[
"לא עודכן זמן רב",
"ערך חסום לעדכון בנטפרי",
"אני מעוניין לערוך את הדף, חבל לי שעריכותי יאבדו", 
"הערך בויקיפדיה אנציקלופדי יותר",
"הערך בוויקיפדיה גדול יותר"
], 
"עדכן את הערך מויקיפדיה העברית");
					break;					
			}
		});
	});
}

addMenuItem('בקש עדכון', 'בקשה לעדכון הערך replaceParam','-', 'g');
$( document ).trigger( 'new-portlet-link' );
});