User:SSethi (WMF)/Sandbox/MyEditCount.js

From mediawiki.org

Note: After publishing, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
  • Opera: Press Ctrl-F5.
/**
 * MyEditCount.js
 * 
 * Counts edits made in the past year by a logged in user on a wiki
 * 
 * @source https://www.mediawiki.org/wiki/User:SSethi_(WMF)/Sandbox/MyEditCount.js
 * @licstart The following is the entire license notice for the JavaScript code on this page.
 * 
 * Copyright (C) 2019 Srishti Sethi <https://meta.wikimedia.org/wiki/User:SSethi_(WMF)> and contributors
 * 
 * The JavaScript code in this page is free software: you can
 * redistribute it and/or modify it under the terms of the GNU
 * General Public License (GNU GPL) as published by the Free Software
 * Foundation, either version 3 of the License, or (at your option)
 * any later version.  The code is distributed WITHOUT ANY WARRANTY;
 * without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE.  See the GNU GPL for more details.
 * 
 * As additional permission under GNU GPL version 3 section 7, you
 * may distribute non-source (e.g., minimized or compacted) forms of
 * that code without the copy of the GNU GPL normally required by
 * section 4, provided you include this license notice and a URL
 * through which recipients can access the Corresponding Source.
 * 
 * @licend  The above is the entire license notice for the JavaScript code in this gadget.
 */
(function ($) {
    'use strict';

    mw.loader.using( 'oojs-ui-core' ).done( function () {
        var totalEdits = 0,
            lastYearDate = getLastYearDate(),
            api = new mw.Api();
    
        api.get( {
            action: 'query', 
            list: 'usercontribs',
            ucuser: mw.config.get('wgUserName'),
            uclimit: 500,
            ucend: lastYearDate,
        } ).done( function ( data ) {
            totalEdits = data.query.usercontribs.length;
            showGadgetUI();
        } );

        function getLastYearDate() {
            var date = new Date(),
                pastYear = date.getFullYear() - 1;

            date.setFullYear(pastYear);
            return date.toISOString(); 
        }

        function showGadgetUI() {
            var button = new OO.ui.PopupButtonWidget( {
                icon: 'menu',
                label: 'Your contributions to MediaWiki in the last year',
                popup: {
                    $content: $( '<p> You made <b>' + totalEdits + ' edits </b> last year!</p>' ),
                    padded: true,
                    anchor: false,
                    align: 'forwards'
                }
            } );

            $( '#mw-content-text' ).prepend( button.$element );
        }

    } );
}(jQuery));