MediaWiki:Gadget-start.js
Xuyakirin
Zanibe: Piştî weşandinê, ji bo dîtina guhartinan dibe ku hewce be "cache"ya geroka xwe paqij bikî.
- Firefox / Safari: Pê li Shift û Reload bike an jî Ctrl-F5 an Ctrl-R bike (ji bo Mac: ⌘-R)
- Google Chrome: Pê li Ctrl-Shift-R (ji bo Mac: ⌘-Shift-R) bike
- Internet Explorer / Edge: Pê li Ctrl û Refresh bike, an jî Ctrl-F5 bike
- Opera: Pê li Ctrl-F5 bike.
// Çavkanî [[vi:MediaWiki:Gadget-start.js]]
//<nowiki>
$(function () {
var ns = mw.config.get("wgNamespaceNumber");
if (ns &&
!(ns === 2 && mw.config.get("wgPageName").match(/\/ceribandin$|\/test$/))) {
return;
}
var action = mw.config.get("wgAction");
if (!(action === "edit" || action === "submit") ||
!$(".mw-newarticletext, .mw-newarticletextanon").length) {
return;
}
if (window.location.href.includes("editintro=User:Balyozxane/creation/intro")) {
return; // Do not run the script
}
String.prototype.wiktviCapitalize = function () {
return this[0].toUpperCase() + this.substr(1);
};
var pageName = mw.config.get("wgPageName").replace(/_/g, " ");
var rowsNimune = [];
if (ns) pageName = pageName.replace(/.*\//, "");
var userLang = mw.config.get("wgUserLanguage");
var chosenOptions = {
width: "20em",
disable_search_threshold: 20,
placeholder_text_single: "Yek hilbijêre",
placeholder_text_multiple: "Hilbijêre",
no_results_text: "Nehat dîtin",
enable_split_word_search: false,
search_contains: true };
var langsByCode = {};
var trRequired = ["ckb", "sdh", "ar", "akk", "fa", "ja", "zh", "ru", "ko", "el", "hy", "ka"];
var steps = {
lang: {
id: "lang",
required: true,
name: "ziman",
question_fmt: "“{{PAGENAME}}” bi çi zimanî ye?",
choices: [
// Languages with 100 or more entries are loaded immediately.
// The rest come in through ext.gadget.headers.
["ku", "kurmancî"],
["de", "almanî"],
["ar", "erebî"],
["fa", "farisî"],
["fr", "fransî"],
["fi", "fînî"],
["en", "îngilîzî"],
["sv", "swêdî"],
["tr", "tirkî"] ],
output: function (values) {
return "== {{ziman|" + values.lang + "}} ==\n\n";
} },
pron: {
id: "pron",
name: "bilêvkirin",
question_fmt: "“{{PAGENAME}}” çawa tê bilêvkirin?",
visible: function (values) {
return false;
},
output: function (values) {
if (values.lang === "ku") {
return "=== Bilêvkirin ===\n* {{ku-IPA}}\n* {{ku-kîte}}\n\n";
}
return "";
} },
pos: {
id: "pos",
required: true,
name: "Cureyê rêzimanî",
question_fmt: "Cureyê rêzimanî ya “{{PAGENAME}}” çi ye?",
visible: function (values) {
return values.lang;
},
choices: [
["navdêr", "Navdêr"],
["navdêr/m", "Navdêra mê"],
["navdêr/n", "Navdêra nêr"],
["navdêr/mn", "Navdêra mê û nêr"],
["navdêr/nt", "Navdêra nêtar"],
["lêker", "Lêker"],
["lêker/gh", "Lêkera gerguhêz"],
["lêker/ngh", "Lêkera negerguhêz"],
["lêker/x", "Lêkera xwerû"],
["lêker/x-gh", "Lêkera xwerû û gerguhêz"],
["lêker/x-ngh", "Lêkera xwerû û nergerguhêz"],
["lêker/p", "Lêkera pêkhatî"],
["lêker/p-gh", "Lêkera pêkhatî û gerguhêz"],
["lêker/p-ngh", "Lêkera pêkhatî û negerguhêz"],
["lêker/b", "Lêkera biwêjî"],
["lêker/b-gh", "Lêkera biwêjî û gerguhêz"],
["lêker/b-ngh", "Lêkera biwêjî û negerguhêz"],
["rengdêr", "Rengdêr"],
["hoker", "Hoker"],
["serenav", "Serenav"],
["serenav/m", "Serenava mê"],
["serenav/n", "Serenava nêr"],
["serenav/mn", "Serenava mê û nêr"],
["serenav/nt", "Serenava nêtar"],
["artîkel", "Artîkel"],
["baneşan", "Baneşan"],
["bazinedaçik", "Bazinedaçek"],
["biwêj", "Biwêj"],
["cînav", "Cînav"],
["daçek", "Daçek"],
["girêdek", "Girêdek"],
["gotineke pêşiyan", "Gotineke pêşiyan"],
["hejmar", "Hejmar"],
["hevok", "Hevok"],
["kurtenav", "Kurtenav"],
["navgir", "Navgir"],
["paşdaçek", "Paşdaçek"],
["paşgir", "Paşgir"],
["pêşdaçek", "Pêşdaçek"],
["pêşgir", "Pêşgir"],
["pirtik", "Pirtik"],
["reh", "Reh"],
["sembol", "Sembol"],
["tîp", "Tîp"] ],
output: function (values) {
// Split values.pos based on hyphen
var posParts = values.pos.split("/");
// Extract the part without gender
var posWithoutGender = posParts[0];
// Extract the gender part
var gender = posParts.length > 1 ? posParts[1] : "";
// Capitalize the first letter of the extracted part
var capitalizedPos = posWithoutGender.wiktviCapitalize();
var outputString = "=== " + capitalizedPos + " ===\n";
const genders = {
'm': 'mê',
'n': 'nêr',
'mn': 'mê û nêr',
};
// Check the conditions for adding "{{ku-tewîn-nav}}"
if (!pageName.includes(" ") && gender && genders[gender] && (posWithoutGender === "navdêr" || posWithoutGender === "serenav") && values.lang === "ku") {
const genderName = genders[gender];
outputString += "{{ku-tewîn-nav|" + pageName + "|" + genderName + "}}\n";
}
outputString += "{{" + posWithoutGender + "|" + values.lang;
if (gender === "nt" && values.lang === "ku") {
gender = "mn";
}
// Add gender to the output string
if (gender) {
if (posWithoutGender === "navdêr" || posWithoutGender === "serenav") {
outputString += "|z=" + gender;
}else if (posWithoutGender === "lêker") {
outputString += "|c=" + gender;
}
}
// Check the conditions for adding "|z=?"
if ((values.pos === "navdêr" || values.pos === "serenav") && values.lang === "ku") {
outputString += "|z=?";
}
// Add values from values.tr to the output string
if (values.tr) {
outputString += "|tr=" + values.tr;
}
// Complete the output string
outputString += "}}\n";
return outputString;
}
},
tr: {
id: "tr",
name: "transkrîpsiyon",
question_fmt: "Transkrîpsiyona peyvê",
multiple: false,
narrow: true,
visible: function (values) {
return values.lang && values.pos && trRequired.includes(values.lang);
},
output: function (values) {
// Store values in the global rowsNimune array
rowsNimune = values.tr;
} },
dfn: {
id: "dfn",
// required: true, ger mane tinebe [[Şablon:mane?]] bi kar bîne
name: "Mane",
question_fmt: "Maneya peyvê di nivîsa sade de bi kurmancî binivîse. Ji bo tercimeyan beşa Wergerê bi kar bîne.",
multiple: true,
ordered: true,
visible: function (values) {
return values.lang && values.pos;
},
example: function (values) {
var examples = {
"navdêr": "Peyvên ji bo tiştan (sêv, heywan, qedeh) yan têgihan (dilşadî, bextiyarî hwd.) di rêzimanê de.",
"lêker": "Peyvên ji bo kirin an bûyînê wekî 'nivîsîn' yan 'xeber dan'.",
"rengdêr": "Peyvên yên ku çawaniya navdêran nîşan didin wekî 'sêva sor' yan 'xwarina şîrîn'.",
"hoker": "Peyvên ku dem, cih yan awayê kirinê diyar dikin wekî 'bi vî awayî' yan 'demkî'.",
"daçek": "Peyvên ku cih, dem yan tevgerê diyar dikin wekî 'di.. de' yan 'ji'.",
"cînav": "Peyvên ku li şûna navdêran tên bikaranîn daku navdêr neyên dubarekirin wekî 'ew' yan 'em'.",
"baneşan": "Peyvên ku hest, deng hwd. derdibirin wekî 'noşî!' yan 'aferîn'.",
"serenav": "Navdêrên ku kesayetiyên ferdî nîşan didin, wek navên kes, cih an rêxistinan nimûne 'London' yan 'Diyarbekir'.",
"gp": "Nimûne 'serê neêşe ne hewceyî destmalê ye'."
};
var transExamples = {
"navdêr": "Peyvên ji bo tiştan (sêv, heywan, qedeh) yan têgihan (dilşadî, bextiyarî hwd.) di rêzimanê de.",
"lêker": "Peyvên ji bo kirin an bûyînê wekî 'nivîsîn' yan 'xeber dan'.",
"rengdêr": "Peyvên yên ku çawaniya navdêran nîşan didin wekî 'sêva sor' yan 'xwarina şîrîn'.",
"hoker": "Peyvên ku dem, cih yan awayê kirinê diyar dikin wekî 'bi vî awayî' yan 'demkî'.",
"daçek": "Peyvên ku cih, dem yan tevgerê diyar dikin wekî 'di.. de' yan 'ji'.",
"cînav": "Peyvên ku li şûna navdêran tên bikaranîn daku navdêr neyên dubarekirin wekî 'ew' yan 'em'.",
"baneşan": "Peyvên ku hest, deng hwd. derdibirin wekî 'noşî!' yan 'aferîn'!",
"pêşgir": "ne-.",
"paşgir": "-van.",
"serenav": "Navdêrên ku kesayetiyên ferdî nîşan didin, wek navên kes, cih an rêxistinan nimûne 'London' yan 'Diyarbekir'.",
"gp": "Serê neêşe ne hewceyî destmalê ye."
};
var pos = values.pos;
return values.lang === "ku" ? examples[pos] : transExamples[pos];
},
getOutput: function (values, callback) {
var text = $.map(values.dfn, function (dfn, i) {
dfn = $.trim(dfn);
if (!dfn) return undefined;
// Capitalize the first word.
if (dfn[0] !== dfn[0].toUpperCase()) {
dfn = dfn.wiktviCapitalize();
}
// Punctuate the definition.
if (!dfn.match(/[.…?!)\]]$/)) dfn += ".";
// Generate the output for dfn
var output = "# " + dfn;
// Get the corresponding nimunes for the current dfn
var nimunes = i === 0 && values.nimune ? values.nimune : [];
// Trim each nimune
nimunes = nimunes.map(function(nimune) {
return $.trim(nimune);
});
if (nimunes && Array.isArray(nimunes) && nimunes.length > 0) {
// Add nimunes
$.each(nimunes, function (index, nimune) {
if (nimune !== "") {
output += "\n#: {{mk|" + values.lang + "|" + nimune.replace(new RegExp("(" + pageName + "([^( |,|;|\?|\.|\!)]+)?)", "ig"), "'''$1'''") + "}}";
}
});
}
// Add bêmînak if nimunes is not available or contains only empty strings
if (!nimunes || (Array.isArray(nimunes) && nimunes.every(function(nimune) {
return nimune.trim() === "";
}))) {
output += "\n#* {{bêmînak|" + values.lang + "}}";
}
return output;
}).join("\n") + "\n\n";
// Check if dfn is not empty before calling $.wiktviLinkify
if ($.trim(values.dfn.join("")) !== "") {
var didTryToLoad = function () {
$.wiktviLinkify(text, callback);
};
mw.loader.using("ext.gadget.linkify", didTryToLoad, didTryToLoad);
} else {
// Use the default value if dfn is empty
text = "# {{mane?|" + values.lang + "}}";
// Get the corresponding nimunes for the current dfn
var nimunes = values.nimune ? values.nimune : [];
// Trim each nimune
nimunes = nimunes.map(function(nimune) {
return $.trim(nimune);
});
// Add nimunes if available
if (nimunes && nimunes.length > 0) {
$.each(nimunes, function (index, nimune) {
if (nimune !== "") {
text += "\n#: {{mk|" + values.lang + "|" + nimune.replace(new RegExp("(" + pageName + "([^( |,|;|\?|\.|\!)]+)?)", "ig"), "'''$1'''") + "}}";
}
});
}
// Add bêmînak if nimunes is not available or contains only empty strings
if (!nimunes || (Array.isArray(nimunes) && nimunes.every(function(nimune) {
return nimune.trim() === "";
}))) {
text += "\n#* {{bêmînak|" + values.lang + "}}";
}
text += "\n\n";
callback(text);
}
} },
nimune: {
id: "nimune",
name: "nimûne",
question_fmt: "Nimûneyên bikaranîna peyvê binivîse (hemû ji bo maneya yekê)",
multiple: true,
ordered: true,
visible: function (values) {
return values.lang && values.pos;
},
output: function (values) {
// Store values in the global rowsNimune array
rowsNimune = values.nimune;
} },
variant: {
id: "variant",
name: "herwiha",
question_fmt: "Guhartoyên peyvê binivîse",
multiple: true,
narrow: true,
visible: function (values) {
return values.lang && values.pos;
},
output: function (values) {
if (!values.variant.join("").length) return "";
return "==== Herwiha ====\n" + $.map(values.variant, function (variant, i) {
return variant ? "* {{g|" + values.lang + "|" + variant + "}}" : undefined;
}).join("\n") + "\n\n";
} },
syn: {
id: "syn",
name: "hevmane",
multiple: true,
narrow: true,
visible: function (values) {
return values.lang && values.pos;
},
output: function (values) {
if (!values.syn.join("").length) return "";
return "==== Hevmane ====\n" + $.map(values.syn, function (syn, i) {
return syn ? "* {{g|" + values.lang + "|" + syn + "}}" : undefined;
}).join("\n") + "\n\n";
} },
ant: {
id: "ant",
name: "dijmane",
multiple: true,
narrow: true,
visible: function (values) {
return values.lang && values.pos;
},
output: function (values) {
if (!values.ant.join("").length) return "";
return "==== Dijmane ====\n" + $.map(values.ant, function (ant, i) {
return ant ? "* {{g|" + values.lang + "|" + ant + "}}" : undefined;
}).join("\n") + "\n\n";
} },
je: {
id: "je",
name: "jê",
question_fmt: "Peyvên jê çêbûyî binivîse",
multiple: true,
narrow: true,
visible: function (values) {
return values.lang && values.pos;
},
output: function (values) {
if (!values.je.join("").length) return "";
return "==== Jê ====\n" + $.map(values.je, function (je, i) {
return je ? "* {{g|" + values.lang + "|" + je + "}}" : undefined;
}).join("\n") + "\n\n";
} },
tekildar: {
id: "tekildar",
name: "têkildar",
question_fmt: "Peyvên têkildarî vê peyvê binivîse",
multiple: true,
narrow: true,
visible: function (values) {
return values.lang && values.pos;
},
output: function (values) {
if (!values.tekildar.join("").length) return "";
return "==== Têkildar ====\n" + $.map(values.tekildar, function (tekildar, i) {
return tekildar ? "* {{g|" + values.lang + "|" + tekildar + "}}" : undefined;
}).join("\n") + "\n\n";
} },
etym: {
id: "etym",
name: "etîmolojî",
visible: function (values) {
return false;
},
output: function (values) {
if (values.lang === "ku") {
return "==== Etîmolojî ====\n{{ji?|ku}}";
}
return "";
} },
trans: {
id: "trans",
name: "werger",
multiple: true,
narrow: true,
keyName: "ziman",
visible: function (values) {
return values.lang === "ku" && values.pos;
},
disabledKeys: {
"navz": true,
"ku": true },
example: function (values) {
var examples = 'Di navbera peyvan de bêhnok "," bi kar bîne.';
return examples;
},
output: function (values) {
var rows = [];
$.each(values.trans, function (lang, words) {
if (words) rows.push([lang, words]);
});
var outputString;
if (values.lang === "ku") {
outputString = "\n\n==== Werger ====\n{{werger-ser}}";
// Check if there are translations
if (rows.length) {
outputString += "\n";
// Sort the rows
rows.sort(function (a, b) {
var aLang = langsByCode[a[0]] || [];
var bLang = langsByCode[b[0]] || [];
return (aLang[2] || "").localeCompare(bLang[2] || "", "ku");
});
// Add the translations
outputString += $.map(rows, function (row, i) {
var words = row[1].replace(/(\s*[,;()]+\s*)/g, "}}$1{{W|" + row[0] + "|");
return "* {{Z|" + row[0] + "}}: {{W|" + row[0] + "|" + words + "}}";
}).join("\n");
}
// Add the closing section header
outputString += "\n{{werger-bin}}\n\n";
}else {
outputString = "";
}
return outputString;
} },
};
steps.trans.keys = steps.lang.choices;
var ordered_steps = [
steps.lang, steps.pron, steps.pos, steps.tr,
steps.dfn, steps.nimune, steps.variant, steps.syn, steps.ant, steps.je, steps.tekildar,
steps.etym, steps.trans];
var continueBtn;
function getValuesForStep(stepId) {
var fields = $("#wiktvi-start-" + stepId + " .wiktvi-start-step-field");
var step = steps[stepId];
if (step.keys) {
var values = {};
fields.each(function (i, field) {
var key = $(field).prevAll(".wiktvi-start-step-keyfield").val();
if (key) values[key] = $(field).val();
});
return values;
}
else if (step.multiple) {
return fields.map(function (i) {
return $(this).val();
}).get();
}
return fields.val();
}
function getValues() {
var values = {};
$.each(steps, function (stepId) {
values[stepId] = getValuesForStep(stepId);
});
return values;
}
function getWikitext(callback) {
var values = getValues();
var entry = steps.lang.output(values);
entry += steps.pron.output(values);
entry += steps.pos.output(values);
steps.dfn.getOutput(values, function (output) {
entry += output;
entry += steps.variant.output(values);
entry += steps.syn.output(values);
entry += steps.ant.output(values);
entry += steps.je.output(values);
entry += steps.tekildar.output(values);
entry += steps.etym.output(values);
entry += steps.trans.output(values);
var summary = "([[Mediawiki:Gadget-start.js|WF:Nû]]) +" + values.lang + ":" + values.pos + ":" + output;
document.getElementById("wpSummary").value = summary;
/* Tag the entry as having come from this tool.
entry += "{{mẫu}}\n"
// Add categories.
var langChoice = $.grep(steps.lang.choices, function (choice, i) {
return choice[0] === values.lang;
})[0];
var posChoice = $.grep(steps.pos.choices, function (choice, i) {
return choice[0] === values.pos;
})[0];
if (langChoice && posChoice) {
entry += "{{catname|" + posChoice[1].wiktviCapitalize() + "|" + langChoice[1] + "}}\n";
}
*/
callback(entry);
});
}
function populateMenus(inputs, choices, disabledValues) {
if (!disabledValues) disabledValues = {};
var vals = inputs.map(function (i, input) {
return $(input).val();
});
inputs.empty();
inputs.append($("<option></option>"));
$.each(choices, function (j, choice) {
var option = $(mw.html.element("option", {
value: choice[0] }, choice[1].wiktviCapitalize()));
if (disabledValues[choice[0]]) option.prop("disabled", true);
inputs.append(option);
});
inputs.val(function (i) {
return vals[i];
});
}
/**
* Returns a bitmap containing the keys that should be disabled for a key
* menu in the given step because they are disabled or already taken by
* another key menu.
*/
function getDisabledKeys(step) {
var occupiedKeys = {};
$("#wiktvi-start-" + step.id + " .wiktvi-start-step-keyfield").each(function (i, select) {
occupiedKeys[$(this).val()] = true;
});
if (step.disabledKeys) $.extend(occupiedKeys, step.disabledKeys);
return occupiedKeys;
}
function buildKeyInput(step) {
if (!step.keys) return undefined;
var input = $(mw.html.element("select", {
"class": "wiktvi-start-step-keyfield wiktvi-start-narrow" }));
input.attr("data-placeholder", "Hilbijêre " + step.keyName);
input.on("chosen:showing_dropdown", function (evt, context) {
$(this).data("wiktvi-defaultValue", $(this).val());
});
input.change(function (evt, context) {
var inputs = $("#wiktvi-start-" + step.id + " .wiktvi-start-step-keyfield").not(this);
var oldValue = $(this).data("wiktvi-defaultValue");
var newValue = context.selected;
inputs.find("option[value='" + oldValue + "']").prop('disabled', false);
inputs.find("option[value='" + newValue + "']").prop('disabled', true);
inputs.trigger("chosen:updated");
});
populateMenus(input, step.keys, getDisabledKeys(step));
return input;
}
/**
* If the current text field has text and there are no more text fields after
* the current text field in the list, add another text field to the list.
*/
function refreshForTextField(currentInput, step) {
currentInput = $(currentInput);
var value = currentInput.val();
var item = currentInput.parent();
if (value && !item.next("li").length) {
var nextInput = $(mw.html.element("input", {
type: "text",
"class": currentInput.attr("class") }));
nextInput.on("input", function (evt) {
refreshForTextField(evt.target, step);
});
var nextKeyInput = buildKeyInput(step);
var nextItem = $("<li></li>").append(nextKeyInput).append(nextInput);
item.parent().append(nextItem);
if (nextKeyInput) nextKeyInput.chosen(chosenOptions);
}
var canContinue = !continueBtn.prop("disabled");
if ((value && !canContinue) || (!value && canContinue)) {
refresh(step);
}
}
function prepareInput(input, step) {
if (!input) return;
if (step.required) input.prop('required', true);
input.change(step, refresh);
}
/**
* Shows and hides all the steps based on whether their prerequisites are met,
* and updates placeholders where applicable.
*/
function refresh(evt) {
var values = getValues();
var changedStep = evt && evt.data;
var didFocus = false;
var canContinue = true;
$.each(steps, function (stepId, step) {
if (typeof(step.visible) === "function" && !step.visible(values)) {
$("#wiktvi-start-" + stepId).slideUp();
// $("#wiktvi-start-" + stepId + " .wiktvi-start-step-field").val("");
}
else {
var stepDiv = $("#wiktvi-start-" + stepId);
if (changedStep !== step && typeof(step.build) === "function") {
prepareInput(step.build(stepDiv, values), step);
}
var input = stepDiv.find(".wiktvi-start-step-field");
if (typeof(step.example) === "function") {
input.attr("placeholder", step.example(values) || "");
}
var didSlideDown;
if (!didFocus && stepDiv.css("display") === "none" && step.required) {
didSlideDown = function (evt) {
input.focus();
};
didFocus = true;
}
stepDiv.slideDown(didSlideDown);
}
if (step.required &&
(values[stepId] === "" ||
(step.multiple && values[stepId].join("") === ""))) {
canContinue = false;
}
});
continueBtn.button(canContinue ? "enable" : "disable");
}
function destroy() {
$("#wiktvi-start-form, .noafterwizard").slideUp(function () {
$(this).remove();
});
$(".noarticletext .nowizard, #editform").slideDown();
$("#ca-edit").removeClass("selected");
$("#ca-wiktvi-nowizard").addClass("selected");
}
function build() {
$(".nowizard, .nowizard .noafterwizard").hide();
var callToAction = $("#wiktvi-calltoaction");
var origCallToActionText = callToAction.text();
$(mw.util.addPortletLink("p-views", "#", "Edîtora çavkaniyê veke",
"ca-wiktvi-nowizard", "Vê rûpelê bi edîtora çavkaniyê çêke",
undefined, "#ca-watch")).click(function (evt) {
evt.preventDefault();
callToAction.text(origCallToActionText);
destroy();
});
callToAction.text(origCallToActionText +
" Forma li jêr ji bo çêkirina gotareke nû bi kar bîne.");
var startForm = $("<form id='wiktvi-start-form'></form>");
var spinner;
startForm.submit(function (evt) {
evt.preventDefault();
continueBtn.button("disable");
spinner.show();
getWikitext(function (wikitext) {
$("#wpTextbox1").val(wikitext);
$("html, body").animate({scrollTop: 0});
callToAction.text("Hindik ma!");
destroy();
});
});
$.each(ordered_steps, function (i, step) {
var stepDiv = $(mw.html.element("div", {
"class": "wiktvi-start-step",
id: "wiktvi-start-" + step.id }));
var name = step.name.wiktviCapitalize();
stepDiv.append($(mw.html.element("h3", {
"class": "wiktvi-start-step-name" }, new mw.html.Raw(mw.html.element("label", {
"for": "wiktvi-start-" + step.id + "-field" }, name)))));
if (step.question_fmt) {
var question = step.question_fmt.replace(/\{\{PAGENAME\}\}/g, pageName);
stepDiv.append($(mw.html.element("label", {
"class": "wiktvi-start-step-question",
"for": "wiktvi-start-" + step.id + "-field" }, question)));
}
var input;
// Menu
if (step.choices) {
input = $(mw.html.element("select", {
"class": "wiktvi-start-step-field",
id: "wiktvi-start-" + step.id + "-field" }));
input.attr("data-placeholder",
step.name.wiktviCapitalize() + " hilbijêre ");
populateMenus(input, step.choices);
if (step.multiple) input.attr("multiple", true);
stepDiv.append(input);
}
// Custom
else if (typeof(step.build) === "function") {
input = step.build(stepDiv);
}
// Text field(s)
else {
input = $(mw.html.element("input", {
type: "text",
"class": "wiktvi-start-step-field",
id: "wiktvi-start-" + step.id + "-field" }));
if (step.narrow) input.addClass("wiktvi-start-narrow");
if (step.multiple) {
input.on("input", function (evt) {
refreshForTextField(evt.target, step);
});
var keyInput = buildKeyInput(step);
var list = $(step.ordered ? "<ol></ol>" : "<ul></ul>")
.append($("<li></li>").append(keyInput).append(input));
stepDiv.append(list);
}
else stepDiv.append(input);
}
prepareInput(input, step);
stepDiv.hide();
startForm.append(stepDiv);
});
var footer = $("<div id='wiktvi-start-footer'></div>");
spinner = $(mw.html.element("img", {
id: "wiktvi-start-spinner",
src: "//upload.wikimedia.org/wikipedia/commons/d/de/Ajax-loader.gif",
alt: "Tê barkirin…",
title: "Tê barkirin…" }));
footer.append(spinner.hide());
continueBtn = $(mw.html.element("button", {
id: "wiktvi-unhide-editform",
type: "submit" }, "Bişîne"));
footer.append(continueBtn);
startForm.append(footer);
$("#editform").hide().before(startForm);
startForm.find("select").chosen(chosenOptions);
continueBtn.button();
refresh();
$.wiktviHeaders.get(function (allHeaders) {
// Replace the initial language list with the complete list.
var headers = $.extend({}, allHeaders);
delete headers.vie;
if (headers.mul) headers.mul.name = "navzimanî";
steps.lang.choices = steps.trans.keys = [];
$.each(headers, function (code, header) {
var match;
if (header.level === 1 && (match = header.name.match(/^(.+)| zimanê$/i))) {
var name = header.name;
if (!name.indexOf("Zimanê ")) name = "zimanê " + match[1];
var choice = [code, name, (match[1] || name)];
steps.lang.choices.push(choice);
langsByCode[code] = choice;
}
});
// Alphabetize the language list by sort key.
steps.lang.choices.sort(function (a, b) {
return a[2].localeCompare(b[2], userLang);
});
// Vietnamese goes first in language lists but is disabled in the
// translation section.
var choice = ["ku", "Kurmancî"];
steps.lang.choices.unshift(choice);
langsByCode.vie = choice;
var langMenu = $("#wiktvi-start-lang-field");
populateMenus(langMenu, steps.lang.choices);
langMenu.trigger("chosen:updated");
var transMenus = $("#wiktvi-start-trans .wiktvi-start-step-keyfield");
populateMenus(transMenus, steps.trans.keys, getDisabledKeys(steps.trans));
transMenus.trigger("chosen:updated");
});
}
mw.loader.using(["jquery.chosen", "jquery.ui", "mediawiki.api", "ext.gadget.headers"],
build);
});
//</nowiki>