{% extends 'base.html.twig' %} {% block title %}Creation d'un sondage{% 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 le Sondage" %} {% if id is defined %} {% set submitaction = "Modifier le Sondage" %} {% 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'un Sondage {% else %} Création d'un Sondage {% 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 'Survey/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.notification) }} {{ form_row(form.description) }}
{% endif %} {% if flow.getCurrentStepNumber() == 2 %} {{ form_row(form.jsonoptions) }}
{% endif %} {% if flow.getCurrentStepNumber() == 3 %} {{ form_row(form.jsonguests) }} {% if not survey.private %}
Ce sondage é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 au sondage suivant : {{survey.title}}.
Pour ce faire, veuillez cliquer sur le lien ci-après: accéder au sondage.
Attention n'envoyez le mail qu'après avoir finaliser l'enregistrement de votre sondage.
{% endif %} {% endif %} {% if flow.getCurrentStepNumber() == 4 %} {{ form_row(form.jsonoptions) }} {{ form_row(form.jsonguests) }}
{% if id is defined %} La modification du sondage est presque terminée. Vérifiez les informations et cliquez sur "Modifier le sondage". {% else %} La création du sondage est presque terminée. Vérifiez les informations et cliquez sur "Créer le sondage". {% endif %}
TITRE = {{ survey.title }}
TYPE = {% if survey.private %} Privé {% else %} Public {% endif %}
NOTIFICATION = {% if survey.notification %} oui {% else %} non {% endif %}
{% if not survey.private %}
Ce sondage é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 au sondage suivant : {{survey.title}}.
Pour ce faire, veuillez cliquer sur le lien ci-après: accéder au sondage.
Attention n'envoyez le mail qu'après avoir finaliser l'enregistrement de votre sondage. {% 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 %} var timeoptions = { show_meridian:false, step_size_minutes:5, //reset: true, min_hour_value:0, max_hour_value:23, start_time: ["", "00"], increase_direction:'up' }; $(document).ready(function() { if ($("#surveyoptions_jsonoptions").val() == ''||$("#surveyoptions_jsonoptions").val()=='[]'){ $("#surveyoptions_jsonoptions").val('[{"date":"" , "hours":["",""] }, { "date":"" , "hours":["",""] } ]'); } var obj = JSON.parse($("#surveyoptions_jsonoptions").val()); initDates(obj); }); function initDates(json) { $.each(json, function(i, date) { addBlockDate(i,date); }); addBtnDate(); } function addBlockDate(i,date) { html ='
'; html+='
'; html+='
'; html+='Date'; html+=''; html+='
'; html+='
'; html+=''; html+='
'; html+='
'; $.each(date.hours, function(j, hour) { html+=addBlockHour(i,j,hour); }); html+='
'; html+=addBtnHour(i); html+='
'; html+='
'; html+='
'; $("#options").append(html); $('.timepicker').timepicki(timeoptions); } function addBlockHour(i,j,hour) { if(hour!="") { tbhour=hour.replace(' ','').split(':'); data='data-timepicki-tim="'+tbhour[0]+'" data-timepicki-mini="00"'; } else { data='data-timepicki-tim="10" data-timepicki-mini="00"'; } html ='
'; html+=''; html+=''; html+=''; html+=''; html+='
'; return html; } function addBtnDate(){ html ='
'; html+='
'; html+=''; html+='
'; html+='
'; $("#options").append(html); } function addBtnHour(i){ html ='
'; html+='
'; html+=''; html+='
'; html+='
'; return html; } function addDate() { // On supprime le bouton adddate $("#adddate").remove(); // Recherche du dernier blockdate généré var i = $(".datecontainer").last().data("id") + 1; // Chaine vide var date = JSON.parse('{"date":"" , "hours":["",""] }'); // Construction d'un bloc de date vide addBlockDate(i,date); // On regen le bouton add date addBtnDate(); } function addHour(i) { // Recherche du dernier blockdate généré var j = $(".hourcontainer"+i).last().data("id") + 1; // Récupéer le code html html=addBlockHour(i,j,""); // Ajouter le code au conteneur $("#hourcontainer"+i).append(html); $('.timepicker').timepicki(timeoptions); } $('#options').on('click', '.datedel', function(event) { id=$(this).attr("data-id"); $("#datecontainer"+id).remove(); }); $('#options').on('click', '.hourdel', function(event) { id=$(this).attr("data-id"); $("#hourcontainer"+id).remove(); }); $('#mycontent').on('click', '.btnnextstep', function(event) { // Construction du tableau des horaires en fusionnant les potentiels doublons var tbdates=[]; $(".dateinput").each(function() { if($(this).val()!="") { keydate=$(this).val(); var pos = tbdates.indexOf($(this).val()); if(tbdates[keydate]==undefined) { tbdates[keydate]=[]; tbdates[keydate]["date"]=keydate; tbdates[keydate]["int"]=parseInt(keydate.replace("-","")); tbdates[keydate]["hours"]=[]; } $(".hourinput"+$(this).data("id")).each(function() { if($(this).val()!="") { var pos = tbdates[keydate]["hours"].indexOf($(this).val()); if(pos==-1) { tbdates[keydate]["hours"].push($(this).val()); } } }); // Trier par heure tbdates[keydate]["hours"].sort(); } }); // On recalcul la chaine json dates=""; for (const [keydate, date] of Object.entries(tbdates)) { hours=""; intdate=date["int"]; date["hours"].forEach(function(vlhour) { if(hours!="") hours+=','; if(hours=="") hours=',"hours":['; hours+='"'+vlhour+'"'; }); if(hours!="") { hours+=']'; if(dates!="") dates+=','; if(dates=="") dates='['; dates+='{ "date":"'+keydate+'"'+hours+'}'; } } if(dates!="") dates+=']'; if(dates=="") dates="[]"; // Trier par date var ordered = JSON.parse(dates); ordered.sort(function(a, b){ if(a.date < b.date) { return -1; } if(a.date > b.date) { return 1; } return 0; }) // Valoriser le formulaire $("#surveyoptions_jsonoptions").val(JSON.stringify(ordered)); }); {% endif %} {% if flow.getCurrentStepNumber() == 3 %} $(document).ready(function() { if ("{{ survey.private }}"=="1"){ $("#gueststools").show(); var tbmails = JSON.parse($("#surveyguests_jsonguests").val()); var toshow=false; tbmails.forEach(function(mail) { addGuest(mail); toshow=true; }); if(toshow) $("#guests").show(); } else { $("#gueststools").hide(); $("#guests").hide(); } }); $('#surveyguests_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) }, }); $('#surveyguests_user').val(null).trigger('change'); } }); $('#surveyguests_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); }); }, }); $('#surveyguests_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); }); }); $('#mycontent').on('click', '.btnnextstep', function(event) { {% if survey.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 $("#surveyguests_jsonguests").val(JSON.stringify(tbmails)); {% endif %} }); {% endif %} {% if flow.getCurrentStepNumber() == 4 %} $(document).ready(function() { var tbdates = JSON.parse($("#createSurvey_jsonoptions").val()); tbdates.forEach(function(date,indexdate) { date.hours.forEach(function(hour,indexhour) { addRecapOption(date.date, hour,indexdate, indexhour); }); }); if ("{{ survey.private }}"=="1"){ var tbmails = JSON.parse($("#createSurvey_jsonguests").val()); tbmails.forEach(function(mail,index) { addRecapGuest(mail,index); }); } }); function addRecapOption(date, hour,indexdate, indexhour) { html =""; if(indexdate>0||indexhour>0) html+="
"; else html+="
LISTE DES OPTIONS
"; html+=date+" "+hour; $("#containeroptions").append(html); } function addRecapGuest(mail,index) { html =""; if(index>0) html+="- "; else html+="
LISTE DES INVITES
"; html+=mail+" "; $("#containerguests").append(html); } {% endif %} {% endblock %}