Jump to content

MediaWiki:Asset.js

From Costa Sano MediaWiki
Revision as of 16:27, 18 February 2026 by Mngr (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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)
  • Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5.
$(document).ready(function () {

    function field(name) {
        return $("[name='Asset[" + name + "]']");
    }

    function generateIdentifier() {
        const chapter = field("Chapter").val();
        const place = field("Place").val();
        const org = field("Organisation").val();

        if (!chapter) return;
        if (place && org) {
            alert("Select either a Place OR an Organisation.");
            return;
        }
        if (!place && !org) return;

        new mw.Api().get({
            action: "scribunto-console",
            title: "Module:AssetID",
            question:
                "return require('Module:AssetID').generate{" +
                "Chapter='" + chapter + "'," +
                "Place='" + place + "'," +
                "Organisation='" + org + "'}"
        }).done(function (data) {

            const result = JSON.parse(data.return);
            if (result.error) {
                alert(result.error);
                return;
            }

            // Store hidden values
            field("Label").val(result.identifier);
            field("Sequence").val(result.sequence);

            // Display values
            $("#asset-identifier-display").text(result.identifier);
            $("#asset-sequence-display").text(result.sequence);

            // Override page name
            $("input[name='pfFormPageName']").val(result.identifier);
        });
    }

    field("Chapter").change(generateIdentifier);
    field("Place").change(generateIdentifier);
    field("Organisation").change(generateIdentifier);

    $("input[type='file']").on("change", function () {
        if (!this.files[0]) return;

        const name = this.files[0].name;
        field("OriginalFilename").val(name);
        $("#asset-originalfilename-display").text(name);
    });
});