מדיה ויקי:סקריפטים/67.js
הערה: לאחר הפרסום, ייתכן שיהיה צורך לנקות את זיכרון המטמון (cache) של הדפדפן כדי להבחין בשינויים.
- פיירפוקס / ספארי: להחזיק את המקש Shift בעת לחיצה על טעינה מחדש (Reload) או ללחוץ על צירוף המקשים Ctrl-F5 או Ctrl-R (במחשב מק: ⌘-R).
- גוגל כרום: ללחוץ על צירוף המקשים Ctrl-Shift-R (במחשב מק: ⌘-Shift-R).
- אדג': להחזיק את המקש Ctrl בעת לחיצה על רענן (Refresh) או ללחוץ על צירוף המקשים Ctrl-F5.
// :סקריפט 67 נכתב על ידי [[משתמש:RoyTek]], נערך על ידי [[משתמש:קיפודנחש]]. // הקוד של יצירת הטולטיפ הועבר באמצעות שימוש ב- // Extract Method Design Pattern // לגאדג'ט מוסתר חדש, [[MediaWiki:Gadget-tooltip.js]] // כדי לאפשר שימוש גם בגאדג'טים וסקריפטים נוספים, מה שנקרא reuse. if(mw.config.get('wgNamespaceNumber')==2 || mw.config.get('wgNamespaceNumber')==3) mw.loader.using([ 'ext.gadget.tooltip', 'mediawiki.util'], function() { var user=mw.config.get('wgTitle').replace(/\/.*$/, ''); if (!user) return; function tsToDate(rc) { var date = new Date(rc.timestamp); if (isNaN(date)) {// all sane browsers can just do new Date(rc.timestanp). only IE refuses. dar = rc.timestamp.split(/[^\d]/); // timestamp looks like so: "2011-05-05T18:56:27Z" var month = parseInt(dar[1],10) - 1; // "Date" expexts months in the range of 0..11, timestamp is more conventional. var minutes = parseInt(dar[4], 10) - new Date().getTimezoneOffset();//ts is UTC, but new Date(y,M,d,h,m,s) assumes local TZ date = new Date(dar[0],month,dar[2],dar[3],minutes,dar[5]); } return date; } function ago(ms) { var s = ms / 1000; if (s < 100) return 'ברגע זה'; var ranges = [ {r: 60, t: 'דקות', s: 'דקה', d: 'שתי דקות'}, {r: 60, t: 'שעות', s: 'שעה', d: 'שעתיים'}, {r: 24, t: 'ימים', s: 'יממה', d: 'יומיים'}, {r: 7, t: 'שבועות', s: 'שבוע', d: 'שבועיים'}, {r: 52, t: 'שנים', s: 'שנה', d: 'שנתיים'} ]; var est = '', num; for (var i = 0; i < ranges.length; i++) { var range = ranges[i]; s /= range.r; if (s < 1) break; num = ''; if (s < 2) est = range.s; else if (s < 3 && range.d) est = range.d; else { num = '-' + Math.floor(s) + ' '; est = range.t; } } return 'לפני כ' + num + est; } function pic(recent) { return recent ? '//upload.wikimedia.org/wikipedia/commons/thumb/e/e7/Dialog-information_on.svg/15px-Dialog-information_on.svg.png' : '//upload.wikimedia.org/wikipedia/commons/thumb/1/11/Dialog-information_red.svg/15px-Dialog-information_red.svg.png'; } $.getJSON(mw.util.wikiScript('api'), {action: 'query', list: 'usercontribs', ucuser: user, uclimit: '1', format:'json'}, function (data) { if (data && data.query && data.query.usercontribs && data.query.usercontribs.length) { var lastEditTime = tsToDate(data.query.usercontribs[0]), timeSinceEdit = new Date() - lastEditTime, recent = timeSinceEdit < 1000 * 60 * 20, page = data.query.usercontribs[0].title, pageLink = $('<a>', {href: mw.util.getUrl(page), text: page}), userLinkTitle = 'השאר ל' + user + ' הודעה חדשה בדף השיחה', userLink = $('<a>', {href: mw.util.getUrl('User Talk:' + user) + '?action=edit§ion=new', title: userLinkTitle, text: user}), div = $('<div>') .append('העריכה האחרונה של ').append(userLink).append('<br />') .append('הייתה ' + ago(timeSinceEdit) + '<br />') .append('בדף: ').append(pageLink), timer = null, img = $('<img>',{src: pic(recent)}) .css({float: 'left'}) .createtooltip(div.html()); $('#firstHeading').prepend(img); } } ); });