vendor/monsieurbiz/sylius-rich-editor-plugin/src/Resources/views/Admin/app.html.twig line 1

Open in your IDE?
  1. {% include '@SyliusUi/_javascripts.html.twig' with {'path': 'bundles/monsieurbizsyliusricheditorplugin/js/rich-editor.js'} %}
  2. {% include '@SyliusUi/_stylesheets.html.twig' with {'path': 'bundles/monsieurbizsyliusricheditorplugin/css/rich-editor.css'} %}
  3. <div class="ui small basic modal" id="monsieurbiz-rich-editor-confirmation-modal">
  4.     <div class="ui icon header">
  5.         <i class="warning sign icon"></i>
  6.         {{ 'sylius.ui.confirm_your_action'|trans }}
  7.     </div>
  8.     <div class="content">
  9.         <p>{{ 'sylius.ui.are_your_sure_you_want_to_perform_this_action'|trans }}</p>
  10.     </div>
  11.     <div class="actions">
  12.         <div class="ui red basic cancel inverted button">
  13.             <i class="remove icon"></i>
  14.             {{ 'sylius.ui.no_label'|trans }}
  15.         </div>
  16.         <div class="ui green ok inverted button" id="monsieurbiz-rich-editor-confirmation-button">
  17.             <i class="checkmark icon"></i>
  18.             {{ 'sylius.ui.yes_label'|trans }}
  19.         </div>
  20.     </div>
  21. </div>
  22. <div class="ui small basic modal" id="monsieurbiz-rich-editor-confirmation-modal">
  23.     <div class="ui icon header">
  24.         <i class="warning sign icon"></i>
  25.         {{ 'sylius.ui.confirm_your_action'|trans }}
  26.     </div>
  27.     <div class="content">
  28.         <p>{{ 'sylius.ui.are_your_sure_you_want_to_perform_this_action'|trans }}</p>
  29.     </div>
  30.     <div class="actions">
  31.         <div class="ui red basic cancel inverted button">
  32.             <i class="remove icon"></i>
  33.             {{ 'sylius.ui.no_label'|trans }}
  34.         </div>
  35.         <div class="ui green ok inverted button" id="monsieurbiz-rich-editor-confirmation-button">
  36.             <i class="checkmark icon"></i>
  37.             {{ 'sylius.ui.yes_label'|trans }}
  38.         </div>
  39.     </div>
  40. </div>
  41. <script id="monsieurbiz-rich-editor-actions" type="x-tmpl-mustache">
  42. {% verbatim %}
  43. <div class="ui horizontal divider">
  44.     <div class="ui compact tiny menu">
  45.         <a data-position="{{position}}" class="item js-uie-add" type="button">
  46.             <i class="plus square icon"></i>
  47.             {% endverbatim %}{{ "monsieurbiz_richeditor_plugin.form.add"|trans }}{% verbatim %}
  48.         </a>
  49.         <a data-position="{{position}}" class="item js-uie-paste disabled" type="button">
  50.             <i class="paste icon"></i>
  51.             {% endverbatim %}{{ "monsieurbiz_richeditor_plugin.form.paste_from_clipboard"|trans }}{% verbatim %}
  52.         </a>
  53.     </div>
  54. </div>
  55. {% endverbatim %}
  56. </script>
  57. <script id="monsieurbiz-rich-editor-ui-element" type="x-tmpl-mustache">
  58. {% verbatim %}
  59.     <div class="ui segment js-uie-element">
  60.         <div
  61.             class="uie-flex uie-flex-cross-center uie-flex-main-between uie-w-full uie-mb-sm sm:uie-flex-column">
  62.             <h3 class="header uie-m-0">
  63.                 <i class="{{icon}} icon"></i>
  64.                 {{title}}
  65.                 {{#disabled}}<span class="ui label">{% endverbatim %}{{ 'monsieurbiz_richeditor_plugin.ui.disabled'|trans }}{% verbatim %}</span>{{/disabled}}
  66.             </h3>
  67.             <div class="ui small basic icon buttons sm:uie-mt-xs">
  68.                 <button class="ui button js-uie-delete" type="button" data-tooltip="{% endverbatim %}{{ 'monsieurbiz_richeditor_plugin.form.delete'|trans }}{% verbatim %}" data-inverted>
  69.                     <i class="trash alternate outline icon"></i>
  70.                 </button>
  71.                 <button class="ui button js-uie-edit" type="button" data-tooltip="{% endverbatim %}{{ 'monsieurbiz_richeditor_plugin.form.edit'|trans }}{% verbatim %}" data-inverted>
  72.                     <i class="pencil alternate icon"></i>
  73.                 </button>
  74.                 <button class="ui button js-uie-up" type="button" data-tooltip="{% endverbatim %}{{ 'monsieurbiz_richeditor_plugin.form.move_up'|trans }}{% verbatim %}" data-inverted>
  75.                     <i class="arrow up icon"></i>
  76.                 </button>
  77.                 <button class="ui button js-uie-down" type="button" data-tooltip="{% endverbatim %}{{ 'monsieurbiz_richeditor_plugin.form.move_down'|trans }}{% verbatim %}" data-inverted>
  78.                     <i class="arrow down icon"></i>
  79.                 </button>
  80.                 <button class="ui button js-uie-copy" type="button" data-alternate-text="{% endverbatim %}{{ 'monsieurbiz_richeditor_plugin.form.copied'|trans }}{% verbatim %}" data-tooltip="{% endverbatim %}{{ 'monsieurbiz_richeditor_plugin.form.copy'|trans }}{% verbatim %}" data-inverted>
  81.                     <i class="copy icon"></i>
  82.                 </button>
  83.             </div>
  84.         </div>
  85.         <div class="ui fluid js-uie-preview">{{{preview}}}</div>
  86.     </div>
  87. {% endverbatim %}
  88. </script>
  89. <script id="monsieurbiz-rich-editor-ui-elements-container" type="x-tmpl-mustache">
  90.     <div class="ui">
  91.         <div class="uie-flex uie-flex-cross-right">
  92.             <div class="ui buttons">
  93.                 <button class="ui icon button js-uie-tools-copy-all" type="button" data-alternate-text="{{ 'monsieurbiz_richeditor_plugin.form.copied'|trans }}" data-tooltip="{{ "monsieurbiz_richeditor_plugin.form.copy_all_from_clipboard"|trans }}">
  94.                     <i class="copy icon"></i>
  95.                 </button>
  96.                 <button class="ui icon button js-uie-tools-paste-all" type="button" disabled data-tooltip="{{ "monsieurbiz_richeditor_plugin.form.paste_all_from_clipboard"|trans }}">
  97.                     <i class="paste icon"></i>
  98.                 </button>
  99.                  <button class="ui icon button js-uie-tools-trash-all" type="button" data-tooltip="{{ "monsieurbiz_richeditor_plugin.form.trash_all"|trans }}">
  100.                     <i class="trash icon"></i>
  101.                 </button>
  102.             </div>
  103.         </div>
  104.         <div class="ui segment js-uie-container">
  105.         </div>
  106.     </div>
  107. </script>
  108. <script id="monsieurbiz-rich-editor-ui-element-card" type="x-tmpl-mustache">
  109. {% verbatim %}
  110. <div class="ui link card uie-card js-uie-new">
  111.     <div class="content left aligned">
  112.         <div class="header">
  113.             <i class="{{icon}} icon"></i>
  114.             {{title}}
  115.         </div>
  116.         <div class="description">
  117.             {{#description}}
  118.             {{description}}
  119.             {{/description}}
  120.         </div>
  121.         {{#wireframe}}
  122.             <div class="wireframe">
  123.                 {{& wireframeHtml }}
  124.             </div>
  125.         {{/wireframe}}
  126.     </div>
  127.     <div class="extra content right aligned">
  128.         {{#tags}}
  129.         <span class="ui basic tiny label">{{.}}</span>
  130.         {{/tags}}
  131.     </div>
  132. </div>
  133. {% endverbatim %}
  134. </script>
  135. <script id="monsieurbiz-rich-editor-panels" type="x-tmpl-mustache">
  136. {% verbatim %}
  137. <div class="uie-panels js-uie-panels-{{uid}}">
  138.     <div class="uie-panels__content js-uie-panels-selector-{{uid}}">
  139.         <div class="uie-flex uie-flex-main-between uie-w-full uie-mb-md">
  140.             <h2 class="ui header uie-heading uie-m-0" id="uie-heading-{{uid}}">
  141.                 {% endverbatim %}{{ 'monsieurbiz_richeditor_plugin.form.select_ui_element'|trans }}{% verbatim %}
  142.             </h2>
  143.             <div class="uie-ml-md">
  144.                 <button class="ui button icon js-uie-panels-close-{{uid}}" type="button">
  145.                     <i class="close icon"></i>
  146.                     {% endverbatim %}{{ 'monsieurbiz_richeditor_plugin.form.close'|trans }}{% verbatim %}
  147.                 </button>
  148.             </div>
  149.         </div>
  150.         <div class="ui cards uie-cards js-uie-cards-container">
  151.         </div>
  152.         <div class="uie-panels__new js-uie-panels-new-{{uid}}">
  153.         </div>
  154.     </div>
  155. </div>
  156. {% endverbatim %}
  157. </script>
  158. <script id="monsieurbiz-rich-editor-panels-edit" type="x-tmpl-mustache">
  159. {% verbatim %}
  160. <div class="uie-panels js-uie-panels-edit-{{uid}}">
  161.     <div class="uie-panels__content js-uie-content">
  162.     </div>
  163. </div>
  164. {% endverbatim %}
  165. </script>
  166. <script type="text/javascript">
  167.     document.addEventListener('DOMContentLoaded', () => {
  168.         let editors = document.querySelectorAll('[data-component="rich-editor"]');
  169.         let uielements = {{ monsieurbiz_richeditor_list_elements() }};
  170.         let fallBackLocale = '{{ app.request.locale | default(app.request.defaultLocale) | default(sylius_base_locale) | escape('js') }}';
  171.         function setupRichEditor(editor, tags, locale) {
  172.             let config = new MonsieurBizRichEditorConfig(
  173.                 editor,
  174.                 uielements,
  175.                 document.getElementById('monsieurbiz-rich-editor-ui-elements-container').innerHTML,
  176.                 document.getElementById('monsieurbiz-rich-editor-actions').innerHTML,
  177.                 document.getElementById('monsieurbiz-rich-editor-ui-element').innerHTML,
  178.                 document.getElementById('monsieurbiz-rich-editor-ui-element-card').innerHTML,
  179.                 document.getElementById('monsieurbiz-rich-editor-panels').innerHTML,
  180.                 document.getElementById('monsieurbiz-rich-editor-panels-edit').innerHTML,
  181.                 '{{ "monsieurbiz_richeditor_plugin.form.confirm_delete" |trans|e('js') }}',
  182.                 '{{ url("monsieurbiz_richeditor_admin_form_create", {"code": "__CODE__"})|e('js') }}',
  183.                 '{{ url("monsieurbiz_richeditor_admin_form_edit", {"code": "__CODE__"})|e('js') }}',
  184.                 '{{ url("monsieurbiz_richeditor_admin_form_render_elements")|e('js') }}',
  185.                 '{{ monsieurbiz_richeditor_get_default_element() }}',
  186.                 '{{ monsieurbiz_richeditor_get_default_element_data_field() }}',
  187.                 '{{ 'monsieurbiz_richeditor_plugin.error.ajax_error'|trans|e('js') }}',
  188.                 '{{ 'monsieurbiz_richeditor_plugin.error.unallowed_uielement'|trans|e('js') }}'
  189.             );
  190.             editor.manager = new MonsieurBizRichEditorManager(config, tags, locale);
  191.         }
  192.         editors.forEach(function (editor) {
  193.             let tags = editor.dataset.tags.length === 0 ? [] : editor.dataset.tags.split(',')
  194.             let locale = editor.dataset.locale ? editor.dataset.locale : fallBackLocale;
  195.             setupRichEditor(editor, tags, locale);
  196.         });
  197.         // JQuery event triggered by @SyliusUiBundle/Resources/private/js/sylius-form-collection.js
  198.         $(document).on('collection-form-add', (event, addedElement) => {
  199.             document.dispatchEvent(new CustomEvent('rich-editor:reload', {
  200.                 detail: {
  201.                     target: addedElement[0],
  202.                 }
  203.             }));
  204.         });
  205.         document.addEventListener('monsieurBizRichEditorInitForm', (e) => {
  206.             // Init dynamic editors
  207.             let editors = document.querySelectorAll('[data-component="rich-editor"]:not([data-rich-editor-uid])');
  208.             let manager = e.detail.manager;
  209.             editors.forEach(function (editor) {
  210.                 setupRichEditor(editor, manager.tags, manager.locale); // Retrieve tags and locale from the parent manager
  211.             });
  212.             let form = e.detail.form;
  213.             $(form).find('[data-form-type="collection"]').CollectionForm();
  214.             $(form).find('.sylius-autocomplete').autoComplete();
  215.         });
  216.     });
  217.     function monsieurBizRichEditorRemoveFile(inputName) {
  218.         let input = document.querySelector('input[name="' + inputName + '"]');
  219.         let fileInput = document.querySelector('input[name="change_' + inputName + '"]');
  220.         input.parentElement.remove();
  221.         fileInput.style.display = 'inline';
  222.         fileInput.name = inputName;
  223.     }
  224. </script>