מדיה ויקי:סקריפטים/78.js
קפיצה לניווט
קפיצה לחיפוש
הערה: לאחר השמירה, ייתכן שיהיה צורך לנקות את זיכרון המטמון (cache) של הדפדפן כדי להבחין בשינויים.
- פיירפוקס / ספארי: להחזיק את המקש Shift בעת לחיצה על טעינה מחדש (Reload), או ללחוץ על צירוף המקשים Ctrl-F5 או Ctrl-R (במחשב מק: ⌘-R).
- גוגל כרום: ללחוץ על צירוף המקשים Ctrl-Shift-R (במחשב מק: ⌘-Shift-R).
- אינטרנט אקספלורר: להחזיק את המקש Ctrl בעת לחיצה על רענן (Refresh), או ללחוץ על צירוף המקשים Ctrl-F5.
- אופרה: לפתוח תפריט ← הגדרות (במחשב מק: Opera ← העדפות) ואז ללחוץ על פרטיות ואבטחה ← מחק היסטוריית גלישה ← Cached images and files.
/* סקריפט לטיפול מהיר בערכים חדשים שנוצרו במרחב הערכים ואינם ראויים לו לסקריפט שני יישומים: * העברה מהירה לדף טיוטה של יוצר הערך: לאחר הזנת הסיבה להעברה, הדף יועבר לטיוטה של המשתמש, תתווסף לו תבנית {{תב|טיוטה פרטית}} וינוטרלו הקטגוריות הקיימות בו. הסקריפט ישלח הודעה למשתמש על כך שהערך הועבר לדף טיוטה וישלח בקשה למפעילים למחוק את הדף המקורי (אם המשתמש הוא מפעיל מערכת, הפעולה האחרונה לא תתבצע) * בקשת מחיקה מהירה: (מיועד בעיקר לערכי הבל או ערכים לא אנציקלופדיים שנכתבו על ידי אנונימים) - שליחת בקשת מחיקה מהירה לדף בקשות ממפעילים, ניתן להזין סיבה למחיקה וישנן כמה הצעות נפוצות לבחירה. נכתב על ידי [[משתמש:קובי כרמל]] version 4.3 */ var pagesCare = { /** VARIABLES **/ currentLocation: 'מדיה ויקי:סקריפטים/78.js', panel: $('<div>', {id: 'pc-panel'}).append( $('<div>', {id: 'pc-titlebar'}).append( $('<span>', {id: 'pc-close', 'class': 'ui-icon ui-icon-closethick', title: 'סגירה'}), $('<div>', {id: 'pc-caption'}) ), $('<span>', {id: 'pc-creator'}), $('<form>', {id: 'pc-form', onsubmit: 'return false'}).append( $('<div>', {'class': 'pc-dialog'}).text('מה לעשות עם הדף הזה?'), $('<div>', {'class': 'pc-action'}).append( $('<input>', {name: 'pc-type', id: 'pca-move', 'class': 'pca-opt', type: 'radio', value: 1}), $('<label>', {'for': 'pca-move'}).text('להעביר אותו לטיוטה') ), $('<dd>', {id: 'pc-custom'}).append( $('<div>', {'class': 'pc-dialog'}).text('איזו הודעה יקבל המשתמש?'), $('<div>', {'class': 'pc-action'}).append( $('<input>', {name: 'pc-msg', id: 'pcm-default', type: 'radio', value: 1, checked: true}), $('<label>', {'for': 'pcm-default'}).text('הודעת ברירת המחדל') ), $('<div>', {'class': 'pc-action'}).append( $('<input>', {name: 'pc-msg', id: 'pcm-custom', type: 'radio', value: 2}), $('<label>', {'for': 'pcm-custom'}).text('הודעה מותאמת אישית') ), $('<textarea>', {placeholder: 'הודעה (ללא חתימה)'}), $('<div>', {'class': 'pc-dialog'}).text('להעביר גם את דף השיחה?'), $('<div>', {'class': 'pc-action'}).append( $('<input>', {name: 'pc-move-talk', id: 'pcm-mty', type: 'radio', checked: true}), $('<label>', {'for': 'pcm-mty'}).text('כן') ), $('<div>', {'class': 'pc-action'}).append( $('<input>', {name: 'pc-move-talk', id: 'pcm-mtn', type: 'radio'}), $('<label>', {'for': 'pcm-mtn'}).text('לא') ) ), $('<div>', {'class': 'pc-action'}).append( $('<input>', {name: 'pc-type', id: 'pca-delete', 'class': 'pca-opt', type: 'radio', value: 2}), $('<label>', {'for': 'pca-delete'}).text('למחוק אותו') ), $('<div>', {id: 'pc-reason'}).append( $('<div>', {'class': 'pc-dialog'}).text('למה?'), $('<input>'), $('<button>').text('אישור'), $('<div>', {id: 'pc-status'}) ) ) ), token: mw.user.tokens.get('csrfToken'), /** METHODS **/ addEvents: function(){ $('.pc-icon').click(pagesCare.showPanel); $('#pc-close').click(pagesCare.destroy); $('.pca-opt').on('click', function(){ if(! this.checked) return; pagesCare.action = this.value; if($.client.profile().name == 'msie') $('#pc-reason').show(); else $('#pc-reason').slideDown(function(){ $(this).children('input').focus(); }); $('#pc-custom').toggle(this.value == 1); }); $('#pc-custom input').on('click', function(){ if(! this.checked) return; $('#pc-custom textarea').toggle(this.value == 2); if($.client.profile().name != 'msie') $('#pc-custom textarea').focus(); }); $('#pc-reason input').on({ keyup: function(){ $(this).next().toggle(!! this.value); }, change: function(){ pagesCare.reason = this.value; } }); $('#pc-custom textarea').on('change', function(){ pagesCare.userMsg = this.value; }); $('#pc-reason button').click(pagesCare.run); }, build: function(){ var li = $('.mw-newpages-time, .newpage, .mw-history-histlinks:last:not(:has(>span:last>a))').parents('li, table'), link = $('<span>', { 'class': 'pc-icon ui-icon ui-icon-transferthick-e-w script78', title: 'טיפול מהיר' }); li.before(link); pagesCare.panel.hide().appendTo('#mw-content-text'); pagesCare.addEvents(); }, deleteQuery: function(){ pagesCare.sysopQuery(function(){ pagesCare.done('בקשתך נשלחה בהצלחה!'); }); }, destroy: function(){ $('#pc-panel, #pc-reason, #pc-reason button, #pc-status, #pc-custom, #pc-custom textarea').hide(); $('#pc-form')[0].reset(); pagesCare.pageName = null; pagesCare.action = null; pagesCare.reason = null; pagesCare.userMsg = null; }, done: function(msg){ mw.notify(msg); pagesCare.destroy(); }, error: function(msg){ pagesCare.updateStatus(msg, 'red', true); }, move: function(){ var self = this, oldPage = pagesCare.pageName, user = pagesCare.user, newPage; if (mw.util.isIPAddress(user)) { newPage = "טיוטה:" + oldPage; } else { newPage = 'משתמש:' + user + '/' + oldPage; } this.error = function(info){ mw.addDialog({ title: 'ההעברה נכשלה', content: [ $('<p>').text('אירעה שגיאה במהלך ביצוע ההעברה.'), $('<h6>').text('פרטי השגיאה:'), $('<p>').css('direction', 'ltr').text(info) ], buttons: {אישור: function(){ $('#mweDialog').dialog('close'); mw.notify('ההעברה נכשלה'); }} }); $('.ui-dialog .ui-dialog-buttonpane') .css('text-align', 'center') .children() .css('float', 'none'); pagesCare.error('אירעה שגיאה'); }; this.notifyUser = function(){ var msg = $('#pcm-custom').is(':checked') ? pagesCare.userMsg : '{{הועבר לארגז חול|' + oldPage + '}}'; if (mw.util.isIPAddress(user)) { msg = $('#pcm-custom').is(':checked') ? pagesCare.userMsg : '{{עבר לטיוטה|' + oldPage + '}}'; } var param = { action: 'edit', appendtext: '\n\n==' + oldPage + '==\n' + msg + ' ~~' + '~~', format: 'json', summary: 'הועבר לארגז חול', title: 'שיחת משתמש:' + user, token: pagesCare.token }; pagesCare.updateStatus('מודיע למשתמש'); $.post('/w/api.php', param, function(){ if($.inArray('sysop', mw.config.get('wgUserGroups')) + 1) // user with sysop rights return pagesCare.done('הערך הועבר בהצלחה!'); pagesCare.sysopQuery(function(){ pagesCare.done('הערך הועבר בהצלחה!'); }, 'הועבר לטיוטה של המשתמש', true); }); }; this.parseDraft = function(){ var param = { action: 'parse', format: 'json', page: newPage, prop: 'wikitext' }; pagesCare.updateStatus('קובע תצורת טיוטה'); $.post('/w/api.php', param, function(res){ var draftTemplate = (mw.util.isIPAddress(user)?'{{טיוטה ציבורית}}\n':'{{טיוטה פרטית}}\n'), parseCat = res.parse.wikitext['*'].replace(/\[\[\s*קטגוריה:\s*/g, '[[:קטגוריה:'); var content = draftTemplate + parseCat; var param = { action: 'edit', summary: '[[' + pagesCare.currentLocation + '|סקריפט טיפול מהיר]]: קביעת תצורת טיוטה', text: content, title: newPage, token: pagesCare.token }; $.post('/w/api.php', param, function(){ self.notifyUser(); }); }, 'json'); }; this.send = function(){ if($('#pcm-custom').is(':checked') && ! pagesCare.userMsg) return pagesCare.error('יש להזין הודעה למשתמש'); var param = { action: 'move', format: 'json', from: oldPage, to: newPage, token: pagesCare.token, reason: '[[' + pagesCare.currentLocation + '|סקריפט טיפול מהיר]]: ' + pagesCare.reason }; if($('#pcm-mty').is(':checked')) param.movetalk = 1; pagesCare.updateStatus('מעביר'); $.post('/w/api.php', param, function(res){ if(res.error) return self.error(res.error.info); self.parseDraft(); }, 'json'); }; }, showPanel: function(){ var top = $(this).offset().top - 135, li = $(this).next(), title = ( (!mw.config.get('wgCanonicalSpecialPageName') && mw.config.get('wgAction')=='history') ? ($('<a>').text(mw.config.get('wgTitle')).attr('href', $('#ca-nstab-main a').attr('href'))): (li.find('.mw-title a, .mw-contributions-title, .mw-newpages-pagename')) ), userLink = (mw.config.get('wgCanonicalSpecialPageName')=='Contributions') ? $('.mw-contributions-user-tools a').first() : li.find('.mw-userlink').last(), user = userLink.text(), gender = userLink.attr('title') && userLink.attr('title').split(':')[0] == 'משתמשת' ? 'יוצרת' : 'יוצר'; pagesCare.destroy(); pagesCare.pageName = title.text(); pagesCare.user = user; $('#pc-caption').html(title.clone()); $('#pc-creator').text(gender + ': ').append(userLink.clone()); pagesCare.panel.show().css('top', top); }, sysopQuery: function(complete, reason, isRedirect){ var article = pagesCare.pageName, hrefType = isRedirect ? '{{בקשת מחיקה|' + article + '|' + (reason || pagesCare.reason) + '|הפניה=כן' + '}}' : '{{בקשת מחיקה|' + article + '|' + (reason || pagesCare.reason) + '}}'; var param = { action : 'edit', appendtext : '\n* ' + hrefType + ' ~~' + '~~', section : 1, summary : '/* בקשות מחיקה */ [[' + article + ']]', title : 'ויקיפדיה:בקשות ממפעילים', token : pagesCare.token }; pagesCare.updateStatus('יוצר בקשת מחיקה'); $.post('/w/api.php', param, complete); }, run: function(){ if(! pagesCare.reason) return pagesCare.error('יש לציין סיבה'); switch(pagesCare.action){ case '1': new pagesCare.move().send(); break; case '2': pagesCare.deleteQuery(); break; default: pagesCare.error('לא נבחרה פעולה'); } }, updateStatus: function(msg, color, stat){ $('#pc-status').show().css('color', color || 'inherit').text(msg + (stat ? '' : '...')); } }; $(function(){ mw.loader.using('jquery.ui', pagesCare.build); mw.hook('wikipage.content').add(pagesCare.build); importStylesheet(pagesCare.currentLocation + '/style.css'); });