src/Eccube/Resource/template/admin/Product/_parts/js_product_other_image.twig line 1

Open in your IDE?
  1. {# コンセプト #}
  2. <script>
  3.     $(document).on('drop dragover', function(e) {
  4.         e.preventDefault();
  5.     });
  6.     $(function() {
  7.         // ファイルアップロード
  8.         // see https://pqina.nl/filepond/
  9.         {% if eccube_config.locale == 'ja' or eccube_config.locale == 'en' %}
  10.         FilePond.setOptions(FilePondLocale_{{ eccube_config.locale }});
  11.         {% endif %}
  12.         {% set conceptFiles = [
  13.             {
  14.                 'fileKey': 'concept_file_pc',
  15.                 'fileNameKey': 'concept_file_name_pc',
  16.             },
  17.             {
  18.                 'fileKey': 'concept_file_sp',
  19.                 'fileNameKey': 'concept_file_name_sp',
  20.             }
  21.         ] %}
  22.         {% for conceptFile in conceptFiles %}
  23.         var inputFileElement = document.querySelector('input[type=file][id="{{ form[conceptFile.fileKey].vars.id }}"]');
  24.         var pondConcept{{ loop.index0 }} = FilePond.create(inputFileElement, {
  25.             allowFileTypeValidation: true,
  26.             acceptedFileTypes: [
  27.                 'image/gif',
  28.                 'image/png',
  29.                 'image/jpeg'
  30.             ],
  31.             allowFileSizeValidation: true,
  32.             maxFileSize: 10000000,
  33.             maxFiles: 1,
  34.             allowBrowse: true,
  35.             labelIdle: '{{ 'admin.common.drag_and_drop_image_description'|trans }}<span class="filepond--label-action">{{ 'admin.common.file_select'|trans }}</span>',
  36.             // 保存されている画像のロード
  37.             files: [
  38.                 {% if form[conceptFile.fileNameKey].vars.value is not empty %}
  39.                 {
  40.                     source: '{{ form[conceptFile.fileNameKey].vars.value }}',
  41.                     options: {
  42.                         type: 'local'
  43.                     }
  44.                 }
  45.                 {% endif %}
  46.             ],
  47.             server: {
  48.                 process: {
  49.                     url: '{{ path('admin_product_image_process_key', { entity_name: '', key_name: conceptFile.fileKey }) }}',
  50.                     headers: {
  51.                         'ECCUBE-CSRF-TOKEN': $('meta[name="eccube-csrf-token"]').attr('content'),
  52.                         'X-Requested-With': 'XMLHttpRequest'
  53.                     }
  54.                 },
  55.                 load: {
  56.                     url: '{{ path('admin_product_image_load') }}?source=',
  57.                     headers: {
  58.                         'X-Requested-With': 'XMLHttpRequest'
  59.                     }
  60.                 },
  61.                 revert: {
  62.                     url: '{{ path('admin_product_image_revert') }}',
  63.                     headers: {
  64.                         'ECCUBE-CSRF-TOKEN': $('meta[name="eccube-csrf-token"]').attr('content'),
  65.                         'X-Requested-With': 'XMLHttpRequest'
  66.                     }
  67.                 }
  68.             }
  69.         });
  70.         pondConcept{{ loop.index0 }}.on('initfile', function() {
  71.             $('#{{ form[conceptFile.fileNameKey].vars.id }}_error').hide();
  72.         });
  73.         pondConcept{{ loop.index0 }}.on('error', function(error, file) {
  74.             var message = '{{ 'admin.common.upload_error'|trans }}';
  75.             if (error.main !== undefined) {
  76.                 message = `${error.main}: ${error.sub}`;
  77.             }
  78.             $('#{{ form[conceptFile.fileNameKey].vars.id }}_error')
  79.                 .show()
  80.                 .find('.form-error-message').text(message);
  81.             // エラーメッセージが表示されてからプレビューエリアのエラーメッセージを非表示にする
  82.             setTimeout(function() {
  83.                 $('.filepond--file-status').hide();
  84.             }, 300);
  85.         });
  86.         // 画像が追加されたらファイル名を追加する
  87.         pondConcept{{ loop.index0 }}.on('processfile', function(error, file) {
  88.             if (error) {
  89.                 console.log(error);
  90.             } else {
  91.                 $('#{{ form[conceptFile.fileNameKey].vars.id }}').val(file.serverId);
  92.             }
  93.         });
  94.         // 画像が削除されたらファイル名を削除する
  95.         pondConcept{{ loop.index0 }}.on('removefile', function(error, file) {
  96.             if (error) {
  97.                 console.log(error);
  98.             } else {
  99.                 $('#{{ form[conceptFile.fileNameKey].vars.id }}').val('');
  100.             }
  101.         });
  102.         {% endfor %}
  103.     });
  104. </script>
  105. {# ムービー&ギャラリー #}
  106. <script>
  107.     $(document).on('drop dragover', function(e) {
  108.         e.preventDefault();
  109.     });
  110.     $(function () {
  111.         // ファイルアップロード
  112.         // see https://pqina.nl/filepond/
  113.         var inputFileElement = document.querySelector('input[type=file][id="admin_product_product_gallery"');
  114.         {% if eccube_config.locale == 'ja' or eccube_config.locale == 'en' %}
  115.         FilePond.setOptions(FilePondLocale_{{ eccube_config.locale }});
  116.         {% endif %}
  117.         FilePond.setOptions();
  118.         var pond = FilePond.create(inputFileElement, {
  119.             allowFileTypeValidation: true,
  120.             acceptedFileTypes: [
  121.                 'image/gif',
  122.                 'image/png',
  123.                 'image/jpeg'
  124.             ],
  125.             allowFileSizeValidation: true,
  126.             maxFileSize: 10000000,
  127.             allowBrowse: true,
  128.             allowDrop: true,
  129.             allowReorder: true,
  130.             labelIdle: '<i class="fa fa-cloud-upload fa-3x text-ec-lightGray mx-3 align-middle" aria-hidden="true" style="font-size: 40px"></i>{{ 'admin.common.drag_and_drop_image_description'|trans }}<span class="filepond--label-action">{{ 'admin.common.file_select'|trans }}</span>',
  131.             styleItemPanelAspectRatio: 0.5625,
  132.             // 保存されている画像のロード
  133.             files: [
  134.                 {% for image in form.gallery_images %}
  135.                 {
  136.                     source: '{{ image.vars.value }}',
  137.                     options: {
  138.                         type: 'local'
  139.                     }
  140.                 },
  141.                 {% endfor %}
  142.                 // 追加してすぐの画像のロード. バリデーションエラーの場合など.
  143.                 {% for add_image in form.gallery_add_images %}
  144.                 {
  145.                     source: '{{ add_image.vars.value }}',
  146.                     options: {
  147.                         type: 'local'
  148.                     }
  149.                 },
  150.                 {% endfor %}
  151.             ],
  152.             server: {
  153.                 process: {
  154.                     url: '{{ path('admin_product_image_process') }}',
  155.                     headers: {
  156.                         'ECCUBE-CSRF-TOKEN': $('meta[name="eccube-csrf-token"]').attr('content'),
  157.                         'X-Requested-With': 'XMLHttpRequest'
  158.                     }
  159.                 },
  160.                 load: {
  161.                     url: '{{ path('admin_product_image_load') }}?source=',
  162.                     headers: {
  163.                         'X-Requested-With': 'XMLHttpRequest'
  164.                     }
  165.                 },
  166.                 revert: {
  167.                     url: '{{ path('admin_product_image_revert') }}',
  168.                     headers: {
  169.                         'ECCUBE-CSRF-TOKEN': $('meta[name="eccube-csrf-token"]').attr('content'),
  170.                         'X-Requested-With': 'XMLHttpRequest'
  171.                     }
  172.                 }
  173.             }
  174.         });
  175.         // 画像が追加されたら gallery_add_images にファイル名を追加する
  176.         var proto_add = '{{ form_widget(form.gallery_add_images.vars.prototype) }}';
  177.         pond.on('processfile', function(error, file) {
  178.             if (error) {
  179.                 console.log(error);
  180.             } else {
  181.                 $('#upload-zone').append(
  182.                     $(proto_add.replace(/__name__/g, file.id))
  183.                         .val(file.serverId)
  184.                         .addClass('gallery_add_images')
  185.                 );
  186.             }
  187.         });
  188.         // 画像が削除されたら gallery_delete_images にファイル名を追加する
  189.         var proto_del = '{{ form_widget(form.gallery_delete_images.vars.prototype) }}';
  190.         pond.on('removefile', function(error, file) {
  191.             if (error) {
  192.                 console.log(error);
  193.             } else {
  194.                 // file.serverId にはアップロードしたファイル名が格納される.
  195.                 if (file.serverId) {
  196.                     $('#upload-zone').append(
  197.                         $(proto_del.replace(/__name__/g, file.id))
  198.                             .val(file.serverId)
  199.                             .addClass('del_images')
  200.                     );
  201.                 }
  202.                 // 追加してすぐ削除した画像があれば削除する
  203.                 $('#upload-zone').find('#admin_product_gallery_add_images_' + file.id).remove(); // 追加してすぐ削除した画像
  204.                 $('#upload-zone').find('.gallery_add_images[value="' + file.filename + '"]').remove(); // 追加後, バリデーションエラーが発生した後に削除した画像
  205.             }
  206.         });
  207.         pond.on('initfile', function() {
  208.             $('#product_image_error').hide();
  209.         });
  210.         pond.on('error', function(error, file) {
  211.             var message = '{{ 'admin.common.upload_error'|trans }}';
  212.             if (error.main !== undefined) {
  213.                 message = `${error.main}: ${error.sub}`;
  214.             }
  215.             $('#product_image_error')
  216.                 .show()
  217.                 .find('.form-error-message').text(message);
  218.             // エラーメッセージが表示されてからプレビューエリアのエラーメッセージを非表示にする
  219.             setTimeout(function() {
  220.                 $('.filepond--file-status').hide();
  221.             }, 300);
  222.         });
  223.         // バリデーションエラーが出た場合に画像を保持するための hidden を追加しておく
  224.         var proto_image = '{{ form_widget(form.gallery_images.vars.prototype) }}';
  225.         {% for image in form.gallery_images %}
  226.             $('#upload-zone').append(
  227.                 $(proto_image.replace(/__name__/g, '{{ loop.index0 }}'))
  228.                     .val('{{ image.vars.value }}')
  229.                     .addClass('gallery_images')
  230.             );
  231.         {% endfor %}
  232.         {% for add_image in form.gallery_add_images %}
  233.             $('#upload-zone').append(
  234.                 $('{{ form_widget(add_image) }}')
  235.                     .val('{{ add_image.vars.value }}')
  236.                     .addClass('gallery_add_images')
  237.             );
  238.         {% endfor %}
  239.         {% for delete_image in form.gallery_delete_images %}
  240.             $('#upload-zone').append(
  241.                 $('{{ form_widget(delete_image) }}').addClass('del_images')
  242.             );
  243.         {% endfor %}
  244.     });
  245. </script>
  246. {# 商品仕様(詳細) #}
  247. <script>
  248.     $(document).on('drop dragover', function(e) {
  249.         e.preventDefault();
  250.     });
  251.     $(function () {
  252.         // ファイルアップロード
  253.         // see https://pqina.nl/filepond/
  254.         var inputFileElement = document.querySelector('input[type=file][id="admin_product_product_detail_image"');
  255.         {% if eccube_config.locale == 'ja' or eccube_config.locale == 'en' %}
  256.         FilePond.setOptions(FilePondLocale_{{ eccube_config.locale }});
  257.         {% endif %}
  258.         FilePond.setOptions();
  259.         var pond = FilePond.create(inputFileElement, {
  260.             allowFileTypeValidation: true,
  261.             acceptedFileTypes: [
  262.                 'image/gif',
  263.                 'image/png',
  264.                 'image/jpeg'
  265.             ],
  266.             allowFileSizeValidation: true,
  267.             maxFileSize: 10000000,
  268.             allowBrowse: true,
  269.             allowDrop: true,
  270.             allowReorder: true,
  271.             labelIdle: '<i class="fa fa-cloud-upload fa-3x text-ec-lightGray mx-3 align-middle" aria-hidden="true" style="font-size: 40px"></i>{{ 'admin.common.drag_and_drop_image_description'|trans }}<span class="filepond--label-action">{{ 'admin.common.file_select'|trans }}</span>',
  272.             styleItemPanelAspectRatio: 0.5625,
  273.             // 保存されている画像のロード
  274.             files: [
  275.                 {% for image in form.detail_images %}
  276.                 {
  277.                     source: '{{ image.vars.value }}',
  278.                     options: {
  279.                         type: 'local'
  280.                     }
  281.                 },
  282.                 {% endfor %}
  283.                 // 追加してすぐの画像のロード. バリデーションエラーの場合など.
  284.                 {% for add_image in form.detail_add_images %}
  285.                 {
  286.                     source: '{{ add_image.vars.value }}',
  287.                     options: {
  288.                         type: 'local'
  289.                     }
  290.                 },
  291.                 {% endfor %}
  292.             ],
  293.             server: {
  294.                 process: {
  295.                     url: '{{ path('admin_product_image_process') }}',
  296.                     headers: {
  297.                         'ECCUBE-CSRF-TOKEN': $('meta[name="eccube-csrf-token"]').attr('content'),
  298.                         'X-Requested-With': 'XMLHttpRequest'
  299.                     }
  300.                 },
  301.                 load: {
  302.                     url: '{{ path('admin_product_image_load') }}?source=',
  303.                     headers: {
  304.                         'X-Requested-With': 'XMLHttpRequest'
  305.                     }
  306.                 },
  307.                 revert: {
  308.                     url: '{{ path('admin_product_image_revert') }}',
  309.                     headers: {
  310.                         'ECCUBE-CSRF-TOKEN': $('meta[name="eccube-csrf-token"]').attr('content'),
  311.                         'X-Requested-With': 'XMLHttpRequest'
  312.                     }
  313.                 }
  314.             }
  315.         });
  316.         // 画像が追加されたら detail_add_images にファイル名を追加する
  317.         var proto_add = '{{ form_widget(form.detail_add_images.vars.prototype) }}';
  318.         pond.on('processfile', function(error, file) {
  319.             if (error) {
  320.                 console.log(error);
  321.             } else {
  322.                 $('#upload-zone').append(
  323.                     $(proto_add.replace(/__name__/g, file.id))
  324.                         .val(file.serverId)
  325.                         .addClass('detail_add_images')
  326.                 );
  327.             }
  328.         });
  329.         // 画像が削除されたら detail_delete_images にファイル名を追加する
  330.         var proto_del = '{{ form_widget(form.detail_delete_images.vars.prototype) }}';
  331.         pond.on('removefile', function(error, file) {
  332.             if (error) {
  333.                 console.log(error);
  334.             } else {
  335.                 // file.serverId にはアップロードしたファイル名が格納される.
  336.                 if (file.serverId) {
  337.                     $('#upload-zone').append(
  338.                         $(proto_del.replace(/__name__/g, file.id))
  339.                             .val(file.serverId)
  340.                             .addClass('del_images')
  341.                     );
  342.                 }
  343.                 // 追加してすぐ削除した画像があれば削除する
  344.                 $('#upload-zone').find('#admin_product_detail_add_images_' + file.id).remove(); // 追加してすぐ削除した画像
  345.                 $('#upload-zone').find('.detail_add_images[value="' + file.filename + '"]').remove(); // 追加後, バリデーションエラーが発生した後に削除した画像
  346.             }
  347.         });
  348.         pond.on('initfile', function() {
  349.             $('#detail_image_error').hide();
  350.         });
  351.         pond.on('error', function(error, file) {
  352.             var message = '{{ 'admin.common.upload_error'|trans }}';
  353.             if (error.main !== undefined) {
  354.                 message = `${error.main}: ${error.sub}`;
  355.             }
  356.             $('#detail_image_error')
  357.                 .show()
  358.                 .find('.form-error-message').text(message);
  359.             // エラーメッセージが表示されてからプレビューエリアのエラーメッセージを非表示にする
  360.             setTimeout(function() {
  361.                 $('.filepond--file-status').hide();
  362.             }, 300);
  363.         });
  364.         // バリデーションエラーが出た場合に画像を保持するための hidden を追加しておく
  365.         var proto_image = '{{ form_widget(form.detail_images.vars.prototype) }}';
  366.         {% for image in form.detail_images %}
  367.             $('#upload-zone').append(
  368.                 $(proto_image.replace(/__name__/g, '{{ loop.index0 }}'))
  369.                     .val('{{ image.vars.value }}')
  370.                     .addClass('detail_images')
  371.             );
  372.         {% endfor %}
  373.         {% for add_image in form.detail_add_images %}
  374.             $('#upload-zone').append(
  375.                 $('{{ form_widget(add_image) }}')
  376.                     .val('{{ add_image.vars.value }}')
  377.                     .addClass('detail_add_images')
  378.             );
  379.         {% endfor %}
  380.         {% for delete_image in form.detail_delete_images %}
  381.             $('#upload-zone').append(
  382.                 $('{{ form_widget(delete_image) }}').addClass('del_images')
  383.             );
  384.         {% endfor %}
  385.     });
  386. </script>
  387. {# 商品仕様(名入れ) #}
  388. <script>
  389.     $(document).on('drop dragover', function(e) {
  390.         e.preventDefault();
  391.     });
  392.     $(function () {
  393.         // ファイルアップロード
  394.         // see https://pqina.nl/filepond/
  395.         var inputFileElement = document.querySelector('input[type=file][id="admin_product_product_naire_image"');
  396.         {% if eccube_config.locale == 'ja' or eccube_config.locale == 'en' %}
  397.         FilePond.setOptions(FilePondLocale_{{ eccube_config.locale }});
  398.         {% endif %}
  399.         FilePond.setOptions();
  400.         var pond = FilePond.create(inputFileElement, {
  401.             allowFileTypeValidation: true,
  402.             acceptedFileTypes: [
  403.                 'image/gif',
  404.                 'image/png',
  405.                 'image/jpeg'
  406.             ],
  407.             allowFileSizeValidation: true,
  408.             maxFileSize: 10000000,
  409.             allowBrowse: true,
  410.             allowDrop: true,
  411.             allowReorder: true,
  412.             labelIdle: '<i class="fa fa-cloud-upload fa-3x text-ec-lightGray mx-3 align-middle" aria-hidden="true" style="font-size: 40px"></i>{{ 'admin.common.drag_and_drop_image_description'|trans }}<span class="filepond--label-action">{{ 'admin.common.file_select'|trans }}</span>',
  413.             styleItemPanelAspectRatio: 0.5625,
  414.             // 保存されている画像のロード
  415.             files: [
  416.                 {% for image in form.naire_images %}
  417.                 {
  418.                     source: '{{ image.vars.value }}',
  419.                     options: {
  420.                         type: 'local'
  421.                     }
  422.                 },
  423.                 {% endfor %}
  424.                 // 追加してすぐの画像のロード. バリデーションエラーの場合など.
  425.                 {% for add_image in form.naire_add_images %}
  426.                 {
  427.                     source: '{{ add_image.vars.value }}',
  428.                     options: {
  429.                         type: 'local'
  430.                     }
  431.                 },
  432.                 {% endfor %}
  433.             ],
  434.             server: {
  435.                 process: {
  436.                     url: '{{ path('admin_product_image_process') }}',
  437.                     headers: {
  438.                         'ECCUBE-CSRF-TOKEN': $('meta[name="eccube-csrf-token"]').attr('content'),
  439.                         'X-Requested-With': 'XMLHttpRequest'
  440.                     }
  441.                 },
  442.                 load: {
  443.                     url: '{{ path('admin_product_image_load') }}?source=',
  444.                     headers: {
  445.                         'X-Requested-With': 'XMLHttpRequest'
  446.                     }
  447.                 },
  448.                 revert: {
  449.                     url: '{{ path('admin_product_image_revert') }}',
  450.                     headers: {
  451.                         'ECCUBE-CSRF-TOKEN': $('meta[name="eccube-csrf-token"]').attr('content'),
  452.                         'X-Requested-With': 'XMLHttpRequest'
  453.                     }
  454.                 }
  455.             }
  456.         });
  457.         // 画像が追加されたら naire_add_images にファイル名を追加する
  458.         var proto_add = '{{ form_widget(form.naire_add_images.vars.prototype) }}';
  459.         pond.on('processfile', function(error, file) {
  460.             if (error) {
  461.                 console.log(error);
  462.             } else {
  463.                 $('#upload-zone').append(
  464.                     $(proto_add.replace(/__name__/g, file.id))
  465.                         .val(file.serverId)
  466.                         .addClass('naire_add_images')
  467.                 );
  468.             }
  469.         });
  470.         // 画像が削除されたら naire_delete_images にファイル名を追加する
  471.         var proto_del = '{{ form_widget(form.naire_delete_images.vars.prototype) }}';
  472.         pond.on('removefile', function(error, file) {
  473.             if (error) {
  474.                 console.log(error);
  475.             } else {
  476.                 // file.serverId にはアップロードしたファイル名が格納される.
  477.                 if (file.serverId) {
  478.                     $('#upload-zone').append(
  479.                         $(proto_del.replace(/__name__/g, file.id))
  480.                             .val(file.serverId)
  481.                             .addClass('del_images')
  482.                     );
  483.                 }
  484.                 // 追加してすぐ削除した画像があれば削除する
  485.                 $('#upload-zone').find('#admin_product_naire_add_images_' + file.id).remove(); // 追加してすぐ削除した画像
  486.                 $('#upload-zone').find('.naire_add_images[value="' + file.filename + '"]').remove(); // 追加後, バリデーションエラーが発生した後に削除した画像
  487.             }
  488.         });
  489.         pond.on('initfile', function() {
  490.             $('#naire_image_error').hide();
  491.         });
  492.         pond.on('error', function(error, file) {
  493.             var message = '{{ 'admin.common.upload_error'|trans }}';
  494.             if (error.main !== undefined) {
  495.                 message = `${error.main}: ${error.sub}`;
  496.             }
  497.             $('#naire_image_error')
  498.                 .show()
  499.                 .find('.form-error-message').text(message);
  500.             // エラーメッセージが表示されてからプレビューエリアのエラーメッセージを非表示にする
  501.             setTimeout(function() {
  502.                 $('.filepond--file-status').hide();
  503.             }, 300);
  504.         });
  505.         // バリデーションエラーが出た場合に画像を保持するための hidden を追加しておく
  506.         var proto_image = '{{ form_widget(form.naire_images.vars.prototype) }}';
  507.         {% for image in form.naire_images %}
  508.             $('#upload-zone').append(
  509.                 $(proto_image.replace(/__name__/g, '{{ loop.index0 }}'))
  510.                     .val('{{ image.vars.value }}')
  511.                     .addClass('naire_images')
  512.             );
  513.         {% endfor %}
  514.         {% for add_image in form.naire_add_images %}
  515.             $('#upload-zone').append(
  516.                 $('{{ form_widget(add_image) }}')
  517.                     .val('{{ add_image.vars.value }}')
  518.                     .addClass('naire_add_images')
  519.             );
  520.         {% endfor %}
  521.         {% for delete_image in form.naire_delete_images %}
  522.             $('#upload-zone').append(
  523.                 $('{{ form_widget(delete_image) }}').addClass('del_images')
  524.             );
  525.         {% endfor %}
  526.     });
  527. </script>
  528. {# 製作者紹介 #}
  529. <script>
  530.     $(document).on('drop dragover', function(e) {
  531.         e.preventDefault();
  532.     });
  533.     $(function() {
  534.         // ファイルアップロード
  535.         // see https://pqina.nl/filepond/
  536.         {% if eccube_config.locale == 'ja' or eccube_config.locale == 'en' %}
  537.         FilePond.setOptions(FilePondLocale_{{ eccube_config.locale }});
  538.         {% endif %}
  539.         var inputFileElement = document.querySelector('input[type=file][id="{{ form.producer_file.vars.id }}"]');
  540.         var pond = FilePond.create(inputFileElement, {
  541.             allowFileTypeValidation: true,
  542.             acceptedFileTypes: [
  543.                 'image/gif',
  544.                 'image/png',
  545.                 'image/jpeg'
  546.             ],
  547.             allowFileSizeValidation: true,
  548.             maxFileSize: 10000000,
  549.             maxFiles: 1,
  550.             allowBrowse: true,
  551.             labelIdle: '{{ 'admin.common.drag_and_drop_image_description'|trans }}<span class="filepond--label-action">{{ 'admin.common.file_select'|trans }}</span>',
  552.             // 保存されている画像のロード
  553.             files: [
  554.                 {% if form.producer_file_name.vars.value is not empty %}
  555.                 {
  556.                     source: '{{ form.producer_file_name.vars.value }}',
  557.                     options: {
  558.                         type: 'local'
  559.                     }
  560.                 }
  561.                 {% endif %}
  562.             ],
  563.             server: {
  564.                 process: {
  565.                     url: '{{ path('admin_product_image_process_key', { key_name: 'producer_file' }) }}',
  566.                     headers: {
  567.                         'ECCUBE-CSRF-TOKEN': $('meta[name="eccube-csrf-token"]').attr('content'),
  568.                         'X-Requested-With': 'XMLHttpRequest'
  569.                     }
  570.                 },
  571.                 load: {
  572.                     url: '{{ path('admin_product_image_load') }}?source=',
  573.                     headers: {
  574.                         'X-Requested-With': 'XMLHttpRequest'
  575.                     }
  576.                 },
  577.                 revert: {
  578.                     url: '{{ path('admin_product_image_revert') }}',
  579.                     headers: {
  580.                         'ECCUBE-CSRF-TOKEN': $('meta[name="eccube-csrf-token"]').attr('content'),
  581.                         'X-Requested-With': 'XMLHttpRequest'
  582.                     }
  583.                 }
  584.             }
  585.         });
  586.         pond.on('initfile', function() {
  587.             $('#{{ form.producer_file_name.vars.id }}_error').hide();
  588.         });
  589.         pond.on('error', function(error, file) {
  590.             var message = '{{ 'admin.common.upload_error'|trans }}';
  591.             if (error.main !== undefined) {
  592.                 message = `${error.main}: ${error.sub}`;
  593.             }
  594.             $('#{{ form.producer_file_name.vars.id }}_error')
  595.                 .show()
  596.                 .find('.form-error-message').text(message);
  597.             // エラーメッセージが表示されてからプレビューエリアのエラーメッセージを非表示にする
  598.             setTimeout(function() {
  599.                 $('.filepond--file-status').hide();
  600.             }, 300);
  601.         });
  602.         // 画像が追加されたらファイル名を追加する
  603.         pond.on('processfile', function(error, file) {
  604.             if (error) {
  605.                 console.log(error);
  606.             } else {
  607.                 $('#{{ form.producer_file_name.vars.id }}').val(file.serverId);
  608.             }
  609.         });
  610.         // 画像が削除されたらファイル名を削除する
  611.         pond.on('removefile', function(error, file) {
  612.             if (error) {
  613.                 console.log(error);
  614.             } else {
  615.                 $('#{{ form.producer_file_name.vars.id }}').val('');
  616.             }
  617.         });
  618.     });
  619. </script>