Railgun Wiki
Advertisement
This page describes one or more aspects related to the development of the Railgun script. Developers may find this content helpful, but it may not be very interesting to the average end-user of the script.
Category: Railgun development Template: {{devnotice}}

When coding a module, there are 3 basic things you have to do:

  • Build the HTML base and insert the module into the siderail
  • Attach event handlers to certain parts of the module
  • Place the code that does all of that inside an init() method and register it with the framework to be called later once all modules have loaded

There are 2 other things you might want to do:

  • Stylize the module with CSS
  • Save data/settings between pageloads

Sample Module[]

This sample module demonstrates a basic layout you might want to use to accomplish these tasks. Note: for CSS, you can make a small stylesheet which can be added to your personal modulesCSS file or the Railgun project's MediaWiki:RailgunModules.css file.

This module has a single button that, when you click it, multiplies a number by 2. The number is saved between page loads, so if you reload the page the most recent result will be displayed.

(function () {
    // storage key to save data between pageloads
    var datum = 1;

    // event handler for a button
    function clickHandler () {
        // multiply by 2
        datum *= 2;
        
        // save data to storage
        Railgun.setItem("datum", datum);

        // update DOM
        $('#b-button').html(datum);
    }

    function init () {
        // get data from localStorage when first initialized
        datum = Railgun.getItem("datum") || 1;

        // build HTML base of the module
        var content = '<button id="b-button">' + datum + '</button>';

        // insert module into the siderail
        Railgun.insert('b-example', content, 'Example B');

        // attach event handler to the button
        $('#b-button').click(clickHandler);
    }

    // register the module with the framework
    Railgun.register('b-example', 'Example B', init);
}());
Advertisement