ICT:FinalConfig - ASSET - JAVASCRIPT
Appearance
// 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);
});