<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://dogcraft.net/wiki/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AGadget-discordintegrator.js</id>
	<title>MediaWiki:Gadget-discordintegrator.js - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://dogcraft.net/wiki/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AGadget-discordintegrator.js"/>
	<link rel="alternate" type="text/html" href="https://dogcraft.net/wiki/index.php?title=MediaWiki:Gadget-discordintegrator.js&amp;action=history"/>
	<updated>2026-04-20T13:55:16Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.2</generator>
	<entry>
		<id>https://dogcraft.net/wiki/index.php?title=MediaWiki:Gadget-discordintegrator.js&amp;diff=14596&amp;oldid=prev</id>
		<title>Domino: Copied Fandom DiscordIntegrator code</title>
		<link rel="alternate" type="text/html" href="https://dogcraft.net/wiki/index.php?title=MediaWiki:Gadget-discordintegrator.js&amp;diff=14596&amp;oldid=prev"/>
		<updated>2020-12-30T00:41:43Z</updated>

		<summary type="html">&lt;p&gt;Copied Fandom DiscordIntegrator code&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;/**&lt;br /&gt;
 * This gadget was copied from Fandom. &lt;br /&gt;
 * You can find the original code at: https://dev.fandom.com/wiki/MediaWiki:DiscordIntegrator/code.js&lt;br /&gt;
 * And the original description at: https://dev.fandom.com/wiki/DiscordIntegrator&lt;br /&gt;
 */&lt;br /&gt;
/**&lt;br /&gt;
 * Name:        DiscordIntegrator&lt;br /&gt;
 * Author:      KockaAdmiralac &amp;lt;1405223@gmail.com&amp;gt;&lt;br /&gt;
 * Description: Allows intergration with Discord [https://discord.com]&lt;br /&gt;
 */&lt;br /&gt;
(function() {&lt;br /&gt;
    'use strict';&lt;br /&gt;
    var mconfig = mw.config.get([&lt;br /&gt;
        'wgUserLanguage',&lt;br /&gt;
        'wgUserName'&lt;br /&gt;
    ]);&lt;br /&gt;
    if (window.DiscordIntegratorLoaded) {&lt;br /&gt;
        return;&lt;br /&gt;
    }&lt;br /&gt;
    window.DiscordIntegratorLoaded = true;&lt;br /&gt;
    /**&lt;br /&gt;
     * Main object&lt;br /&gt;
     * @static&lt;br /&gt;
     */&lt;br /&gt;
    var DiscordIntegrator = {&lt;br /&gt;
        /**&lt;br /&gt;
         * Configuration for the plugin&lt;br /&gt;
         * @property config&lt;br /&gt;
         * @type {Object}&lt;br /&gt;
         */&lt;br /&gt;
        config: (window.DiscordIntegratorConfig || {}).siderail || {},&lt;br /&gt;
        /**&lt;br /&gt;
         * Preloads translations.&lt;br /&gt;
         */&lt;br /&gt;
        hook: function(i18n) {&lt;br /&gt;
            $.when(&lt;br /&gt;
                i18n.loadMessages('DiscordIntegrator'),&lt;br /&gt;
                mw.loader.using('mediawiki.api')&lt;br /&gt;
            ).then($.proxy(this.preload, this));&lt;br /&gt;
        },&lt;br /&gt;
        /**&lt;br /&gt;
         * Preload resources&lt;br /&gt;
         */&lt;br /&gt;
        preload: function(i18n) {&lt;br /&gt;
            this.i18n = i18n;&lt;br /&gt;
            mw.hook('wikipage.content').add($.proxy(this.insertToContent, this));&lt;br /&gt;
            this.api = new mw.Api();&lt;br /&gt;
            this.api.get({&lt;br /&gt;
                action: 'query',&lt;br /&gt;
                meta: 'allmessages',&lt;br /&gt;
                ammessages: [&lt;br /&gt;
                    'id',&lt;br /&gt;
                    'title',&lt;br /&gt;
                    'moduleHeight',&lt;br /&gt;
                    'theme',&lt;br /&gt;
                    'width',&lt;br /&gt;
                    'height',&lt;br /&gt;
                    'text',&lt;br /&gt;
                    'logged-in',&lt;br /&gt;
                    'footer',&lt;br /&gt;
                    'username'&lt;br /&gt;
                ].map(function(el) {&lt;br /&gt;
                    return 'Custom-DiscordIntegrator-config-' + el;&lt;br /&gt;
                }).join('|'),&lt;br /&gt;
                amlang: mconfig.wgUserLanguage,&lt;br /&gt;
                smaxage: 300,&lt;br /&gt;
                maxage: 300&lt;br /&gt;
            }).done($.proxy(function(d) {&lt;br /&gt;
                if (!d.error) {&lt;br /&gt;
                    d.query.allmessages.forEach(function(el) {&lt;br /&gt;
                        if(el['*']) {&lt;br /&gt;
                            this.config[el.name.substring(32)] = el['*'];&lt;br /&gt;
                        }&lt;br /&gt;
                    }, this);&lt;br /&gt;
                    this._loading = 0;&lt;br /&gt;
                    ['text', 'title', 'footer'].forEach(this.parse, this);&lt;br /&gt;
                    if (this._loading === 0) {&lt;br /&gt;
                        this.init();&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }, this));&lt;br /&gt;
        },&lt;br /&gt;
        /**&lt;br /&gt;
         * Parse the configuration that needs to be parsed&lt;br /&gt;
         */&lt;br /&gt;
        parse: function(msg) {&lt;br /&gt;
            if (this.config[msg]) {&lt;br /&gt;
                ++this._loading;&lt;br /&gt;
                this.api.get({&lt;br /&gt;
                    action: 'parse',&lt;br /&gt;
                    text: this.config[msg]&lt;br /&gt;
                }).done($.proxy(function(d) {&lt;br /&gt;
                    if (!d.error) {&lt;br /&gt;
                        this.config[msg] = d.parse.text['*'];&lt;br /&gt;
                        if (--this._loading === 0) {&lt;br /&gt;
                            this.init();&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                }, this));&lt;br /&gt;
            }&lt;br /&gt;
        },&lt;br /&gt;
        /**&lt;br /&gt;
         * Initializing&lt;br /&gt;
         */&lt;br /&gt;
        init: function() {&lt;br /&gt;
            if (this.config.id &amp;amp;&amp;amp; $('#WikiaRail').length &amp;gt; 0) {&lt;br /&gt;
                var clas = $('#WikiaRail').attr('class');&lt;br /&gt;
                if (clas) {&lt;br /&gt;
                    var classSplit = clas.split(/\s+/);&lt;br /&gt;
                    if (classSplit.indexOf('loaded') === -1 &amp;amp;&amp;amp; classSplit.indexOf('is-ready') === -1) {&lt;br /&gt;
                        $('#WikiaRail').on('afterLoad.rail', $.proxy(this.insertToSiderail, this));&lt;br /&gt;
                    } else {&lt;br /&gt;
                        this.insertToSiderail();&lt;br /&gt;
                    }&lt;br /&gt;
                } else {&lt;br /&gt;
                    this.insertToSiderail();&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        },&lt;br /&gt;
        /**&lt;br /&gt;
         * Inserting the widget to siderail&lt;br /&gt;
         */&lt;br /&gt;
        insertToSiderail: function() {&lt;br /&gt;
            var filter = $('#top-right-boxad-wrapper, #top-boxad-wrapper, #NATIVE_TABOOLA_RAIL, .content-review-module').last(),&lt;br /&gt;
            // TODO: Insert some user configuration here&lt;br /&gt;
                el = $('&amp;lt;div&amp;gt;', { class: 'DiscordIntegratorModule rail-module' });&lt;br /&gt;
            if (this.config.title) {&lt;br /&gt;
                el.append(&lt;br /&gt;
                    $('&amp;lt;h2&amp;gt;', {&lt;br /&gt;
                        'class': 'activity-heading',&lt;br /&gt;
                        html: this.config.title.trim()&lt;br /&gt;
                    })&lt;br /&gt;
                );&lt;br /&gt;
            }&lt;br /&gt;
            if (this.config.text) {&lt;br /&gt;
                el.append(&lt;br /&gt;
                    $('&amp;lt;p&amp;gt;', {&lt;br /&gt;
                        id: 'DiscordIntegratorModuleText',&lt;br /&gt;
                        html: this.config.text&lt;br /&gt;
                    })&lt;br /&gt;
                );&lt;br /&gt;
            }&lt;br /&gt;
            el.append(this.generateContent(this.config));&lt;br /&gt;
            if(this.config.footer) {&lt;br /&gt;
                el.append(&lt;br /&gt;
                    $('&amp;lt;p&amp;gt;', {&lt;br /&gt;
                        id: 'DiscordIntegratorModuleFooter',&lt;br /&gt;
                        html: this.config.footer&lt;br /&gt;
                    })&lt;br /&gt;
                );&lt;br /&gt;
            }&lt;br /&gt;
            if (filter.length &amp;gt; 0) {&lt;br /&gt;
                el.insertAfter(filter);&lt;br /&gt;
            } else {&lt;br /&gt;
                $('#WikiaRail').prepend(el);&lt;br /&gt;
            }&lt;br /&gt;
            if (this.config.moduleHeight) {&lt;br /&gt;
                mw.util.addCSS('.DiscordIntegratorModule { height: ' + Number(this.config.moduleHeight) + 'px; }');&lt;br /&gt;
            }&lt;br /&gt;
            mw.hook('DiscordIntegrator.added').fire(el);&lt;br /&gt;
        },&lt;br /&gt;
        /**&lt;br /&gt;
         * Finding the designated places in content&lt;br /&gt;
         * in which to place the widget and placing it&lt;br /&gt;
         */&lt;br /&gt;
        insertToContent: function($content) {&lt;br /&gt;
            $content.find('.DiscordIntegrator:not(.loaded)').each($.proxy(function(cabbage, el) {&lt;br /&gt;
                el = $(el);&lt;br /&gt;
                el.html(this.generateContent(el.data()))&lt;br /&gt;
                  .addClass('loaded');&lt;br /&gt;
            }, this));&lt;br /&gt;
        },&lt;br /&gt;
        /**&lt;br /&gt;
         * Generating widget content from an object&lt;br /&gt;
         * @todo i18n&lt;br /&gt;
         * @return [String] content of the widget&lt;br /&gt;
         */&lt;br /&gt;
        generateContent: function(config) {&lt;br /&gt;
            return config.id ?&lt;br /&gt;
                (&lt;br /&gt;
                    (&lt;br /&gt;
                        config.loggedIn === true ||&lt;br /&gt;
                        (&lt;br /&gt;
                            Boolean(config['logged-in']) === true &amp;amp;&amp;amp;&lt;br /&gt;
                            config['logged-in'] !== 'false' &amp;amp;&amp;amp;&lt;br /&gt;
                            config['logged-in'] !== '{{{loggedIn}}}'&lt;br /&gt;
                        )&lt;br /&gt;
                    ) &amp;amp;&amp;amp;&lt;br /&gt;
                    !mconfig.wgUserName&lt;br /&gt;
                ) ?&lt;br /&gt;
            this.i18n.msg('login').parse() :&lt;br /&gt;
            mw.html.element('iframe', {&lt;br /&gt;
                src: 'https://discord.com/widget?id=' +&lt;br /&gt;
                     config.id +&lt;br /&gt;
                     '&amp;amp;theme=' +&lt;br /&gt;
                     (config.theme === 'light' ? 'light' : 'dark') +&lt;br /&gt;
                     '&amp;amp;username=' + encodeURIComponent(&lt;br /&gt;
                         config.username === '@disabled' ?&lt;br /&gt;
                         '' :&lt;br /&gt;
                         config.username === '@function' &amp;amp;&amp;amp;&lt;br /&gt;
                         typeof window.DiscordIntegratorGetUsername === 'function' ?&lt;br /&gt;
                             window.DiscordIntegratorGetUsername() :&lt;br /&gt;
                             config.username || mconfig.wgUserName&lt;br /&gt;
                     ),&lt;br /&gt;
                width: config.width || '100%',&lt;br /&gt;
                height: config.height || '400px',&lt;br /&gt;
                allowtransparency: 'true',&lt;br /&gt;
                frameborder: '0'&lt;br /&gt;
            }) : this.i18n.msg('error').escape();&lt;br /&gt;
        }&lt;br /&gt;
    };&lt;br /&gt;
    mw.hook('dev.i18n').add($.proxy(DiscordIntegrator.hook, DiscordIntegrator));&lt;br /&gt;
 &lt;br /&gt;
    if (!window.dev || !window.dev.i18n) {&lt;br /&gt;
        if (mw.config.get('wgVersion') === '1.19.24') {&lt;br /&gt;
            importArticle({&lt;br /&gt;
                type: 'script',&lt;br /&gt;
                article: 'u:dev:MediaWiki:I18n-js/code.js'&lt;br /&gt;
            });&lt;br /&gt;
        } else {&lt;br /&gt;
            mw.loader.load('https://dev.fandom.com/load.php?mode=articles&amp;amp;articles=u:dev:MediaWiki:I18n-js/code.js&amp;amp;only=scripts');&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>Domino</name></author>
	</entry>
</feed>