מדיה ויקי:סקריפטים/98.js

מתוך אקו-ויקי, מקום מפגש בנושאי אקולוגיה, חברה וכלכלה.
קפיצה לניווט קפיצה לחיפוש

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

  • פיירפוקס / ספארי: להחזיק את המקש Shift בעת לחיצה על טעינה מחדש (Reload), או ללחוץ על צירוף המקשים Ctrl-F5 או Ctrl-R (במחשב מק: ⌘-R).
  • גוגל כרום: ללחוץ על צירוף המקשים Ctrl-Shift-R (במחשב מק: ⌘-Shift-R).
  • אינטרנט אקספלורר: להחזיק את המקש Ctrl בעת לחיצה על רענן (Refresh), או ללחוץ על צירוף המקשים Ctrl-F5.
  • אופרה: לפתוח תפריט ← הגדרות (במחשב מק: Opera ← העדפות) ואז ללחוץ על פרטיות ואבטחה ← מחק היסטוריית גלישה ← Cached images and files.
if (!mw.config.get('wgPageName').match(/יחסי\s/)) {
    mw.loader.using(['mediawiki.util']).done(function() {
        var firstSectionText = $('p:first', mw.util.$content).text();
        var newDescription = / (?:הוא|היא|היה|הייתה) (.+?\ישראלית?)/.exec(firstSectionText);
        if (!newDescription){
            return
        }
        newDescription = newDescription[1];
        if (!newDescription){
            return
        }

        console.log('newDescription: ' + newDescription)

        var title = mw.config.get('wgTitle');
        $.ajax({
            url: '//www.wikidata.org/w/api.php',
            data: {
                'format': 'json',
                'action': 'wbgetentities',
                'sites': mw.config.get('wgDBname'),
                'titles': title,
                'props': 'descriptions',
                'languages': mw.config.get('wgPageContentLanguage')
            },
            dataType: 'jsonp',
            success: function(data) {
                if (data.success) {
                    var lang = mw.config.get('wgPageContentLanguage');
                    if (Object.keys(data.entities).length == 0){
                        console.log('entity not exists')
                        return
                    }
                    if (Object.keys(data.entities).length != 1){
                        console.log('ambiguous entity') //more than one entity with this name on wikidata
                        return
                    }
                    var item = data.entities[Object.keys(data.entities)[0]];
                    // no wikidata item associated
                    if (!item.descriptions) {
                        return;
                    }
                    if(item.descriptions[lang]){
                        console.log('description already exists in wikidata: ', item.descriptions[lang].value)
                        return // description already exists in wikidata
                    }
                    newDescription = prompt("אנא אשרו את התיאור שייתווסף בוויקינתונים. ביכולתכם לערכו.", newDescription);
                    
                    if (!newDescription) {
                        return
                    }

                    var wikidataApi = new mw.ForeignApi('https://www.wikidata.org/w/api.php')
                    wikidataApi.postWithToken('csrf',{
                        action: 'wbsetdescription', id:item.id, value:newDescription, language:'he', baseRevId:0,
                    }).done(function(d){
                        if (d.success) mw.notify('התיאור נשמר!');
                    })
                    mw.util.$content.prepend(
                        $('<span>')
                        .css( { 'font-size': '125%', border: '1px solid black', 'border-radius': '3px' } )
                        .text(newDescription)
                    );
                }
            }
        });
    });
}