custom/plugins/GrimmSurvey/src/Resources/views/storefront/block/cms-block-grimm-survey.html.twig line 1

Open in your IDE?
  1. {% set element = block.slots.getSlot('content') %}
  2. {{ element.translated.config.htmlBefore.value|raw }}
  3. <div class="col-12 wrapper-survey" data-cms-element-id="{{ element.id }}">
  4.     <link rel="stylesheet" href="{{ asset('bundles/grimmsurvey/static/css/survey.css', 'asset') }}" />
  5.     <script src="{{ asset('bundles/grimmsurvey/static/js/lib.js', 'asset') }}"></script>
  6.     <script src="{{ asset('bundles/grimmsurvey/static/js/showdown.min.js', 'asset') }}"></script>
  7.     <script type="text/javascript">
  8.       let surveyJson = {{ element.translated.config.contentHTML.value|raw }};
  9.       jQuery.noConflict();
  10.       (function ($) {
  11.         document.addEventListener('DOMContentLoaded', () => {
  12.           if (typeof surveyJson !== "undefined") {
  13.             Survey.StylesManager.applyTheme("modern");
  14.             var survey = new Survey.Model(surveyJson);
  15.             const converter = new showdown.Converter();
  16.             $("#survey-{{ element.id }}").Survey({
  17.               model: survey,
  18.               onComplete: (survey) => {
  19.                 {%  if element.translated.config.saveResults.value === true %}
  20.                 let surveyData = survey.data;
  21.                 surveyData._csrf_token = "{{sw_csrf("grimm.survey.submit", {"mode": "token"})}}";
  22.                 surveyData.technicalName = "{{ element.translated.config.technicalName.value }}";
  23.                 fetch("{{ path('grimm.survey.submit') }}", {
  24.                   method: "POST",
  25.                   headers: {'Content-Type': 'application/json'},
  26.                   body: JSON.stringify(surveyData)
  27.                 }).then(res => {});
  28.                 {% endif %}
  29.               },
  30.               onTextMarkdown: (survey, options) => {
  31.                 let str = converter.makeHtml(options.text);
  32.                 str = str.substring(3);
  33.                 str = str.substring(0, str.length - 4);
  34.                 options.html = str;
  35.               },
  36.               onAfterRenderSurvey: (survey) => {
  37.                 let url = new URL(window.location)
  38.                 let params = new URLSearchParams(url.search);
  39.                 if(params.get('name')) {
  40.                     let comment = survey.getQuestionByName('comment');
  41.                     comment.value = "Hallo,\nich Interessiere mich für den Artikel: " + params.get('name') + '.';
  42.                     let reason = survey.getQuestionByName('reason');
  43.                     reason.value = "article";
  44.                 }
  45.               }
  46.             });
  47.           }
  48.         });
  49.       })(jQuery);
  50.     </script>
  51.     <div id="survey-{{ element.id }}"></div>
  52. </div>
  53. {{ element.translated.config.htmlAfter.value|raw }}