Zwii-Modules/sondage/view/config/config.js.php
Fred Tempez 9957d86037 Sondage 1.2
Le module sondage permet d'interroger des membres ou des utilisateurs et d'afficher  réponses des autres membres ce que le module formulaire ne permet pas.
2024-08-16 16:35:50 +02:00

163 lines
4.5 KiB
PHP

/**
* This file is part of Zwii.
*
* For full copyright and license information, please see the LICENSE
* file that was distributed with this source code.
*
* @author Rémi Jean <remi.jean@outlook.com>
* @copyright Copyright (C) 2008-2018, Rémi Jean
* @license GNU General Public License, version 3
* @link http://zwiicms.com/
*/
/**
* Ajout d'un champ
*/
function add(inputUid, input) {
// Nouveau champ
var newInput = $($("#formConfigCopy").html());
// Ajout de l'ID unique aux champs
newInput.find("a, input, select").each(function() {
var _this = $(this);
_this.attr({
id: _this.attr("id").replace("[]", "[" + inputUid + "]"),
name: _this.attr("name").replace("[]", "[" + inputUid + "]")
});
});
newInput.find("label").each(function() {
var _this = $(this);
_this.attr("for", _this.attr("for").replace("[]", "[" + inputUid + "]"));
});
// Attribue les bonnes valeurs
if(input) {
// Nom du champ
newInput.find("[name='formConfigName[" + inputUid + "]']").val(input.name);
// Type de champ
newInput.find("[name='formConfigType[" + inputUid + "]']").val(input.type);
// Largeur du champ
newInput.find("[name='formConfigWidth[" + inputUid + "]']").val(input.width);
// Valeurs du champ
newInput.find("[name='formConfigValues[" + inputUid + "]']").val(input.values);
// Champ obligatoire
newInput.find("[name='formConfigRequired[" + inputUid + "]']").prop("checked", input.required);
}
// Ajout du nouveau champ au DOM
$("#formConfigInputs")
.append(newInput.hide())
.find(".formConfigInput").last().show();
// Cache le texte d'absence de champ
$("#formConfigNoInput:visible").hide();
// Check le type
$(".formConfigType").trigger("change");
// Actualise les positions
position();
}
/**
* Calcul des positions
*/
function position() {
$("#formConfigInputs").find(".formConfigPosition").each(function(i) {
$(this).val(i + 1);
});
}
/**
* Ajout des champs déjà existant
*/
var inputUid = 0;
var inputs = <?php echo json_encode($this->getData(['module', $this->getUrl(0), 'input'])); ?>;
if(inputs) {
var inputsPerPosition = <?php echo json_encode(helper::arraycollumn($this->getData(['module', $this->getUrl(0), 'input']), 'position', 'SORT_ASC')); ?>;
$.each(inputsPerPosition, function(id) {
add(inputUid, inputs[id]);
inputUid++;
});
}
/**
* Afficher/cacher les options supplémentaires
*/
$(document).on("click", ".formConfigMoreToggle", function() {
$(this).parents(".formConfigInput").find(".formConfigMore").slideToggle();
});
/**
* Crée un nouveau champ à partir des champs cachés
*/
$("#formConfigAdd").on("click", function() {
add(inputUid);
inputUid++;
});
/**
* Actions sur les champs
*/
// Tri entre les champs
sortable("#formConfigInputs", {
forcePlaceholderSize: true,
containment: "#formConfigInputs",
handle: ".formConfigMove"
});
$("#formConfigInputs")
// Actualise les positions
.on("sortupdate", function() {
position();
})
// Suppression du champ
.on("click", ".formConfigDelete", function() {
var inputDOM = $(this).parents(".formConfigInput");
// Cache le champ
inputDOM.hide();
// Supprime le champ
inputDOM.remove();
// Affiche le texte d'absence de champ
if($("#formConfigInputs").find(".formConfigInput").length === 0) {
$("#formConfigNoInput").show();
}
// Actualise les positions
position();
})
// Affiche/cache le champ "Valeurs" en fonction des champs cachés
.on("change", ".formConfigType", function() {
var _this = $(this);
if(_this.val() === "select") {
_this.parents(".formConfigInput").find(".formConfigValuesWrapper").slideDown();
}
else {
_this.parents(".formConfigInput").find(".formConfigValuesWrapper").slideUp();
}
});
// Simule un changement de type au chargement de la page
$(".formConfigType").trigger("change");
/**
* Affiche/cache les options de la case à cocher du mail
*/
$("#formConfigMailOptionsToggle").on("change", function() {
if($(this).is(":checked")) {
$("#formConfigMailOptions").slideDown();
}
else {
$("#formConfigMailOptions").slideUp(function() {
$("#formConfigGroup").val("");
$("#formConfigSubject").val("");
$("#formConfigMail").val("");
$("#formConfigUser").val("");
});
}
}).trigger("change");
/**
* Affiche/cache les options de la case à cocher de la redirection
*/
$("#formConfigPageIdToggle").on("change", function() {
if($(this).is(":checked")) {
$("#formConfigPageIdWrapper").slideDown();
}
else {
$("#formConfigPageIdWrapper").slideUp(function() {
$("#formConfigPageId").val("");
});
}
}).trigger("change");