לדלג לתוכן

משתמש:נריה בוט/מצב בדיקת תמונות.js

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

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

  • פיירפוקס / ספארי: להחזיק את המקש Shift בעת לחיצה על טעינה מחדש (Reload) או ללחוץ על צירוף המקשים Ctrl-F5 או Ctrl-R (במחשב מק: ⌘-R).
  • גוגל כרום: ללחוץ על צירוף המקשים Ctrl-Shift-R (במחשב מק: ⌘-Shift-R).
  • אדג': להחזיק את המקש Ctrl בעת לחיצה על רענן (Refresh) או ללחוץ על צירוף המקשים Ctrl-F5.
//<nowiki>
mw.loader.using(['mediawiki.api', 'mediawiki.util']).then(function() {
    $(function() {
        if (mw.config.get('wgPageName') !== "המכלול:בדיקת_תמונות") return;
        importScript("משתמש:נריה בוט/מצב בדיקת תמונות/ניקוי.js"); // ניקוי בקשות שבוצעו

        var isAspaklarya2 = mw.config.get('wgUserGroups').includes('aspaklarya2');
        var userId = mw.config.get('wgUserId');
        var hasAccess = isAspaklarya2 || userId === 8538 || userId === 8589; 

        function addButtons() {
            $('.mw-editsection').each(function() {
                var $section = $(this);
                var sectionNumber = mw.util.getParamValue('section', $section.find('a').attr('href'));
                
                var $buttons = $('<span>')
                    .addClass('image-check-buttons')
                    .css('margin-left', '10px');

                if (hasAccess) {
                    $buttons.append(createButton('רוטשה', 'התמונה נחתכה/עברה עריכה. תיוג המבקש לצורך בדיקת התמונה בנטפרי.', sectionNumber));
                    $buttons.append(createButton('הוסרה', 'התמונה הוסרה', sectionNumber));
                    $buttons.append(createButton('בדיקה חוזרת', 'תיוג המבקש לצורך בקשת בדיקה חוזרת בנטפרי', sectionNumber));
                    $buttons.append(createButton('מחיקת הדיווח', 'מחיקת הדיווח', sectionNumber));
                    $buttons.append(createButton('טקסט חופשי', 'הזנת טקסט חופשי', sectionNumber));
                } else {
                    $buttons.append(createButton('בדיקה חוזרת', 'התמונה נשלחה לבדיקה חוזרת.', sectionNumber));
                    $buttons.append(createButton('חסומה', 'התמונה עדיין חסומה, למרות שעברה ריטוש', sectionNumber));
                    $buttons.append(createButton('פתוחות', 'התמונה או התמונות נפתחו', sectionNumber));
                    $buttons.append(createButton('טקסט חופשי', 'הזנת טקסט חופשי – במקרה שאף אחת מהאפשרויות למעלה אינה מתאימה', sectionNumber));
                }

                $section.append($buttons);
            });
        }

        function createButton(text, title, sectionNumber) {
            return $('<button>')
                .text(text)
                .attr('title', title)
                .css({
                    'margin-right': '5px',
                    'font-size': '0.8em',
                    'padding': '2px 5px'
                })
                .click(function(e) {
                    e.preventDefault();
                    handleClick(text, sectionNumber);
                });
        }

        function handleClick(action, sectionNumber) {
            var api = new mw.Api();
            
            api.get({
                action: 'query',
                prop: 'revisions',
                rvprop: 'content',
                rvlimit: 1,
                titles: mw.config.get('wgPageName'),
                rvsection: sectionNumber,
                format: 'json'
            }).done(function(data) {
                var page = data.query.pages[Object.keys(data.query.pages)[0]];
                var content = page.revisions[0]['*'];
                var newContent = content;

                if (hasAccess) {
                    var userMatch = content.match(/\[\[משתמש:([^|\]]+)/);
                    var pingUser = userMatch ? userMatch[1] : null;

                    if (!pingUser) {
                        pingUser = prompt("לא זוהה משתמש לתיוג. אנא הזן שם משתמש (או השאר ריק לשליחה ללא תיוג):", "");
                    }

                    var taggedMessage = pingUser ? '@{{א|' + pingUser + '}} ' : '';

                    switch(action) {
                        case 'רוטשה':
                            newContent += '\n:' + taggedMessage + 'איך כעת? ~~~~';
                            break;
                        case 'הוסרה':
                            newContent += '\n:' + 'התמונה הוסרה מהערכים. תודה! ~~~~';
                            break;
                        case 'בדיקה חוזרת':
                            newContent += '\n:' + taggedMessage + 'לא רואה בעיה, אפשר לשלוח לבדיקה חוזרת. ~~~~';
                            break;
                        case 'מחיקת הדיווח':
                            if (!confirm('האם אתה בטוח שברצונך למחוק את הדיווח?')) return;
                            newContent = '';
                            break;
                        case 'טקסט חופשי':
                            var customText = prompt('הזן טקסט חופשי:');
                            if (customText === null) return;
                            newContent += '\n:' + taggedMessage + customText + ' ~~~~';
                            break;
                    }
                } else {
                    switch(action) {
                        case 'חסומה':
                            newContent += '\n::התמונה עדיין חסומה. ~~~~';
                            break;
                        case 'פתוחות':
                            newContent += '\n::התמונות פתוחות, תודה! ~~~~';
                            break;
                        case 'בדיקה חוזרת':
                            newContent += '\n::התמונה נשלחה לבדיקה חוזרת. ~~~~';
                            break;
                        case 'טקסט חופשי':
                            var customTextUser = prompt('הזן טקסט חופשי:');
                            if (customTextUser === null) return;
                            newContent += '\n::' + customTextUser + ' ~~~~';
                            break;
                    }
                }

                api.postWithEditToken({
                    action: 'edit',
                    bot: true,
                    minor: true,
                    title: mw.config.get('wgPageName'),
                    section: sectionNumber,
                    text: newContent,
                    summary: 'מצב התמונות: ' + action
                }).done(function() {
                    mw.notify('העריכה נשמרה בהצלחה');
                    if (!window.skipImageCheckReload) {
                        location.reload();
                    }
                }).fail(function() {
                    mw.notify('אירעה שגיאה בשמירת העריכה', {type: 'error'});
                });
            });
        }

        addButtons();
    });
});
//</nowiki>