Jump to content

ICT:FinalConfig - ASSET - JAVASCRIPT

From Costa Sano MediaWiki
Revision as of 21:28, 13 February 2026 by Mngr (talk | contribs) (Created page with "<pre> // MediaWiki:DigitalAsset.js $(document).ready(function () { function getField(name) { return $("[name='DigitalAsset[" + name + "]']"); } function generateIdentifier() { const chapter = getField("chapter_id").val(); const place = getField("place_id").val(); const org = getField("organisation_id").val(); // Exclusivity check if (place && org) { alert("Select either a Place OR an Organisation,...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
// MediaWiki:DigitalAsset.js
$(document).ready(function () {

    function getField(name) {
        return $("[name='DigitalAsset[" + name + "]']");
    }

    function generateIdentifier() {
        const chapter = getField("chapter_id").val();
        const place = getField("place_id").val();
        const org = getField("organisation_id").val();

        // Exclusivity check
        if (place && org) {
            alert("Select either a Place OR an Organisation, not both.");
            return;
        }

        if (!chapter || (!place && !org)) {
            return; // Not enough info yet
        }

        // Call Lua module
        new mw.Api().get({
            action: "scribunto-console",
            title: "Module:DigitalAssetID",
            question: "return require('Module:DigitalAssetID').generate{chapter_id='" +
                chapter + "', place_id='" + place + "', organisation_id='" + org + "'}"
        }).done(function (data) {

            const result = JSON.parse(data.return);

            if (result.error) {
                alert(result.error);
                return;
            }

            // Fill fields
            getField("identifier").val(result.identifier).prop("readonly", true);
            getField("sequence_number").val(result.sequence_number);

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

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

                const ext = file.name.split('.').pop();
                const newName = result.identifier + "." + ext;

                $(this).attr("data-filename", newName);
            });
        });
    }

    // Trigger generation when fields change
    getField("chapter_id").change(generateIdentifier);
    getField("place_id").change(generateIdentifier);
    getField("organisation_id").change(generateIdentifier);
});