{% extends 'base.html.twig' %} {% block title %}Creation d'une enquête{% endblock %} {% block localstyle %} .center { display: flex; justify-content: center; align-items: center; } .hourdel, .guestdel { position: absolute; top: 0px; right: 13px; } #addGuestMail { position: absolute; top: 33px; right: 13px; } // CSS timepicki non insérer en asset car le natif est en contradiction avec d'autres CSS de lib .ti_tx, .mi_tx, .mer_tx { width: 100%; text-align: center; margin: 10px 0; } .time, .mins, .meridian { width: 60px; float: left; margin: 0 10px; font-size: 20px; color: #2d2e2e; font-family: arial; font-weight: 700; text-align: center; } .timepicker_wrap .prev, .timepicker_wrap .next { cursor: pointer; padding: 18px; width: 42px; border: 1px solid #ccc; margin: auto; border-radius: 5px; height:40px; } .timepicker_wrap .prev:after { content: '\f077'; font-family: 'Font Awesome 5 Free'; position: relative; top: -12px; left: -6px; } .timepicker_wrap .next:after { content: '\f078'; font-family: 'Font Awesome 5 Free'; position: relative; top: -12px; left: -6px; } .timepicker_wrap .prev:hover, .timepicker_wrap .next:hover { background-color: #ccc; } .timepicker_wrap .next { background-position: 50% 150%; } .timepicker_wrap .prev { background-position: 50% -50%; } .time_pick { position: relative; } .timepicker_wrap { padding: 10px; border-radius: 5px; z-index: 998; display: none; box-shadow: 2px 2px 5px 0 rgba(50,50,50,0.35); background: #f6f6f6; border: 1px solid #ccc; float: left; position: absolute; top: 27px; left: 0; } .arrow_top { position: absolute; top: -10px; left: 20px; background: url("") no-repeat; width: 18px; height: 10px; z-index: 999; } input.timepicki-input { background: none repeat scroll 0 0 #FFFFFF; border: 1px solid #CCCCCC; border-radius: 5px 5px 5px 5px; float: none; margin: 0; text-align: center; width: 70%; } a.reset_time { float: left; margin-top: 5px; color: #000; width: 100%; text-align: center; } {% endblock %} {% block body %} {% set submitaction = "Créer une Enquête" %} {% if id is defined %} {% set submitaction = "Modifier l'Enquête" %} {% endif %}
{% if id is defined %} {{ form_start(form, {'action': path(app.request.attributes.get('_route'), {id:id} | craue_removeDynamicStepNavigationParameters(flow))}) }} {% else %} {{ form_start(form, {'action': path(app.request.attributes.get('_route'), app.request.query.all | craue_removeDynamicStepNavigationParameters(flow))}) }} {% endif %}

{% if id is defined %} Modification d'une Enquête {% else %} Création d'une Enquête {% endif %}

{% if app.session.flashbag.has('error') %}
Erreur
{% for flashMessage in app.session.flashbag.get('error') %} {{ flashMessage }}
{% endfor %}
{% endif %} {% if app.session.flashbag.has('notice') %}
Information
{% for flashMessage in app.session.flashbag.get('notice') %} {{ flashMessage }}
{% endfor %}
{% endif %} {% include 'Quest/step.html.twig' %} {% include '@CraueFormFlow/FormFlow/buttons.html.twig' with { craue_formflow_button_class_next: 'btn btnnextstep btn-primary', craue_formflow_button_class_back: 'btn btn-secondary mr-3', craue_formflow_button_class_finish: 'btn btn-primary', craue_formflow_button_label_next: 'Étape suivante', craue_formflow_button_label_back: 'Étape précédente', craue_formflow_button_label_finish: submitaction, craue_formflow_button_render_reset: false, } %} {% if flow.getCurrentStepNumber() == 1 %}
{{ form_row(form.title) }} {{ form_row(form.private) }} {{ form_row(form.anonymous) }} {{ form_row(form.notification) }} {{ form_row(form.description) }}
{% endif %} {% if flow.getCurrentStepNumber() == 2 %} {{ form_row(form.jsonquestoptions) }}
{% endif %} {% if flow.getCurrentStepNumber() == 3 %} {{ form_row(form.jsonquestguests) }} {% if not quest.private %}
Cette enquête étant public, vous devez gérer vous même l'envoi des invitations. Vous pouvez copier/coller le message type ci-dessous qui contient l'adresse à laquelle vos invités pourront répondre.

Bonjour,
Je vous invite à répondre à l'enquête suivante : {{quest.title}}.
Pour ce faire, veuillez cliquer sur le lien ci-après: accéder à l'enquête.
Attention n'envoyez le mail qu'après avoir finaliser l'enregistrement de votre enquête.
{% endif %} {% endif %} {% if flow.getCurrentStepNumber() == 4 %} {{ form_row(form.jsonquestoptions) }} {{ form_row(form.jsonquestguests) }}
{% if id is defined %} La modification de l'enquête est presque terminée. Vérifiez les informations et cliquez sur "Modifier l'enquête". {% else %} La création de l'enquête est presque terminée. Vérifiez les informations et cliquez sur "Créer l'enquête". {% endif %}
TITRE = {{ quest.title }}
TYPE = {% if quest.private %} Privé {% else %} Public {% endif %}
ANONYME = {% if quest.anonymous %} oui {% else %} non {% endif %}
NOTIFICATION = {% if quest.notification %} oui {% else %} non {% endif %}
{% if not quest.private %}
Cette enquête étant public, vous devez gérer vous même l'envoi des invitations. Vous pouvez copier/coller le message type ci-dessous qui contient l'adresse à laquelle vos invités pourront répondre.

Bonjour,
Je vous invite à répondre à l'enquête suivante : {{quest.title}}.
Pour ce faire, veuillez cliquer sur le lien ci-après: accéder à l'enquête.
Attention n'envoyez le mail qu'après avoir finaliser l'enregistrement de votre enquête. {% endif %}
{% endif %} {% include '@CraueFormFlow/FormFlow/buttons.html.twig' with { craue_formflow_button_class_next: 'btn btnnextstep btn-primary', craue_formflow_button_class_back: 'btn btn-secondary mr-3', craue_formflow_button_class_finish: 'btn btn-primary', craue_formflow_button_label_next: 'Étape suivante', craue_formflow_button_label_back: 'Étape précédente', craue_formflow_button_label_finish: submitaction, craue_formflow_button_render_reset: false, } %} {{ form_end(form) }}
{% endblock %} {% block localjavascript %} $(document).ready(function() { var stepper = new Stepper($('.bs-stepper')[0]); html='Annuler'; $(".craue_formflow_buttons").prepend(html); }); {% if flow.getCurrentStepNumber() == 2 %} $(document).ready(function() { if ($("#questoptions_jsonquestoptions").val() == ''||$("#questoptions_jsonquestoptions").val()=='[]'){ $("#questoptions_jsonquestoptions").val('[]'); } var obj = JSON.parse($("#questoptions_jsonquestoptions").val()); initOptions(obj); }); function initOptions(json) { $.each(json, function(i, option) { addBlockOption(option); }); addBtnOption(); $( "#options" ).sortable({ axis: "y", handle: ".fa-arrows-alt-v", }); } function addBlockOption(option) { strdata='data-id="'+option.id+'" data-code="'+option.code+'"'; html ='
'; html+='
'; html+='
'; html+=' '; html+='Question'; html+=''; html+='
'; html+='
'; html+='
'; html+=''; html+=''; html+='
'; html+='
'; html+=''; html+=''; html+='
'; html+='
'; html+=''; html+=''; html+='
'; html+='
'; html+=''; html+=''; html+='
'; html+='
'; html+=''; html+=''; html+='
'; html+='
'; html+='
'; html+='
'; $("#options").append(html); if(option.required) option.required=1; else option.required=0; $('#optionrequired'+option.code).val(option.required); $('#optiontype'+option.code).val(option.type); if(option.type==110) $('#blockoptionparameters'+option.code).show(); else $('#blockoptionparameters'+option.code).hide(); $('#optionname'+option.code).focus(); } function addBtnOption(){ html ='
'; html+='
'; html+=''; html+='
'; html+='
'; $("#options").append(html); } function addOption() { // On supprime le bouton adddate $("#addoption").remove(); // boucler sur l'ensemble des block pour déterminer le prochain code et roworder libre code=1; roworder=1; $(".optioncontainer").each(function() { if($(this).data("code")>=code) code=$(this).data("code")+1; if($(this).data("roworder")>=roworder) roworder=$(this).data("roworder")+1; }); // Chaine vide var option = JSON.parse('{"id":"","code":"'+code+'","roworder":"'+roworder+'", "name":"" , "required":1, "type":"10", "parameters":"" }'); // Construction d'un bloc de option vide addBlockOption(option); // On regen le bouton add option addBtnOption(); } $('#options').on('change', '.optiontype', function(event) { code=$(this).attr("data-code"); type=$('#optiontype'+code).val(); if(type==110) $('#blockoptionparameters'+code).show(); else $('#blockoptionparameters'+code).hide(); }); $('#options').on('click', '.optiondel', function(event) { code=$(this).attr("data-code"); $("#optioncontainer"+code).remove(); }); $('#mycontent').on('click', '.btnnextstep', function(event) { // Construction du tableau des horaires en fusionnant les potentiels doublons var tboptions=[]; roworder=0; $(".optioncontainer").each(function() { roworder=roworder+1; id=$(this).data("id") code=$(this).data("code"); name=$("#optionname"+code).val(); required=$("#optionrequired"+code).val(); type=$("#optiontype"+code).val(); parameters=$("#optionparameters"+code).val(); tboptions[roworder]=[]; tboptions[roworder]["id"]=id; tboptions[roworder]["code"]=code; tboptions[roworder]["roworder"]=roworder; tboptions[roworder]["name"]=name; tboptions[roworder]["required"]=required; tboptions[roworder]["type"]=type; tboptions[roworder]["parameters"]=parameters; }); // On recalcul la chaine json options=""; for (const [key, option] of Object.entries(tboptions)) { if(options!="") options+=','; if(options=="") options='['; options+='{ "id":"'+option["id"]+'", "code":"'+option["code"]+'", "roworder":"'+option["roworder"]+'", "name":"'+option["name"]+'", "required":"'+option["required"]+'", "type":"'+option["type"]+'", "parameters":"'+option["parameters"]+'"}'; } if(options!="") options+=']'; if(options=="") options="[]"; var ordered = JSON.parse(options); // Valoriser le formulaire $("#questoptions_jsonquestoptions").val(JSON.stringify(ordered)); //event.preventDefault(); }); {% endif %} {% if flow.getCurrentStepNumber() == 3 %} $(document).ready(function() { if ("{{ quest.private }}"=="1"){ $("#gueststools").show(); var tbmails = JSON.parse($("#questguests_jsonquestguests").val()); var toshow=false; tbmails.forEach(function(mail) { addGuest(mail); toshow=true; }); if(toshow) $("#guests").show(); } else { $("#gueststools").hide(); $("#guests").hide(); } }); $('#questguests_user').on('select2:select', function (e) { // récupérer l'id du user id=$(this).val(); if(id) { // Récupérer les infomations de l'utilisateur selectionné $.ajax({ method: "POST", url: "{{ path('app_user_info') }}", data: "id="+id, success: function(data, dataType) { addGuest(data.email) }, }); $('#questguests_user').val(null).trigger('change'); } }); $('#questguests_group').on('select2:select', function (e) { // récupérer l'id du group id=$(this).val(); if(id) { // Récupérer les infomations du groupe selectionné $.ajax({ method: "POST", url: "{{ path('app_group_info') }}", data: "id="+id, success: function(data, dataType) { users=data.users; users.forEach(function(user) { addGuest(user.email); }); }, }); $('#questguests_group').val(null).trigger('change'); } }); function addGuest(email) { if(!$('*[data-email="'+email+'"]').length) { html =''; html+='
'; html+='
'; html+=''; html+=''; html+='
'; html+='
'; $("#guests .card-body .row").append(html); $("#guests").show(); } } $( "#addGuestMail" ).click(function() { lstmails=$("#guestmail").val(); tbmails =lstmails.split(","); tbmails.forEach(function(mail) { addGuest(mail); }); }); function delGuest(id) { $("[data-id='container-"+id+"']").remove(); } $('#mycontent').on('click', '.btnnextstep', function(event) { {% if quest.private %} // Construction du tableau des horaires en fusionnant les potentiels doublons var tbmails=[]; $(".guest").each(function() { if($(this).val()!="") { tbmails.push($(this).val()); } }); tbmails.sort(); // Valoriser le formulaire $("#questguests_jsonquestguests").val(JSON.stringify(tbmails)); {% endif %} }); {% endif %} {% if flow.getCurrentStepNumber() == 4 %} $(document).ready(function() { if ("{{ quest.private }}"=="1"){ var tbmails = JSON.parse($("#createQuest_jsonquestguests").val()); tbmails.forEach(function(mail,index) { addRecapGuest(mail,index); }); } var tboptions = JSON.parse($("#createQuest_jsonquestoptions").val()); html ='

{{ quest.title }}

'; html+='{{ quest.description|escape("js")}}'; $("#containeroptions").append(html); tboptions.forEach(function(option,index) { addRecapOption(option); }); }); function addRecapGuest(mail,index) { html =""; if(index>0) html+="- "; else html+="
LISTE DES INVITES
"; html+=mail+" "; $("#containerguests").append(html); } function addRecapOption(option) { html =""; html+="
"; html+=""+option.name; if(option.required) html+=" *"; html+="
"; switch(option.type) { case "10": html+=''; break; case "20": html+=''; break; case "30": html+=''; break; case "40": html+=''; break; case "50": html+=''; html+=''; break; case "60": html+='note sur 5'; html+=''; break; case "70": html+='note sur 10'; html+=''; break; case "80": html+='note sur 20'; html+=''; break; case "90": html+=''; break; case "100": html+=''; break; case "110": console.log(option.parameters); tbparameters=option.parameters.split(';'); html+='