app/template/default/JoolenDisplayPoints4/Resource/template/default/Product/detail_js.twig line 1

Open in your IDE?
  1. {#
  2. Plugin Name: JoolenDisplayPoints4
  3. Copyright(c) joolen inc. All Rights Reserved.
  4. https://www.joolen.co.jp/
  5. For the full copyright and license information, please view the LICENSE
  6. file that was distributed with this source code.
  7. #}
  8. {% block javascript %}
  9. <script>
  10.     $(function () {
  11.         eccube.displayPoints = {{ display_point_json | raw }};
  12.         // -----------------------------------
  13.         // 画面描画時に獲得予定ポイントを表示する
  14.         // -----------------------------------
  15.         // 設定>店舗設定>基本設定のポイント機能の有効/無効を取得する
  16.         let is_option_point = '{{ BaseInfo.isOptionPoint }}';
  17.         if ( is_option_point ) {
  18.             let product_id = $('#product_id').val();
  19.             let point_display_container = $('div').find('.point-display-container');
  20.             let min_point = eccube.displayPoints[product_id]['min_point'];
  21.             let max_point = eccube.displayPoints[product_id]['max_point'];
  22.             let is_no_point_flag = eccube.displayPoints[product_id]['is_no_point_flag'];
  23.             if (is_no_point_flag) {
  24.                 point_display_container.html(`<span class="ec-color-red">{{ 'joolendisplaypoints4.front.no_point_flag.message' | trans }}</span>`);
  25.                 point_display_container.show();
  26.                 return;
  27.             }
  28.             if (min_point !== 0 && max_point !== 0) {
  29.                 let point;
  30.                 if (min_point === max_point) {
  31.                     point = min_point;
  32.                 } else {
  33.                     point = min_point + ' 〜 ' + max_point;
  34.                 }
  35.                 point_display_container.data('dafault-point', point);
  36.                 setPointContainer(point_display_container, ':' + point + 'pt', '.point-display');
  37.             }
  38.         }
  39.         // -----------------------------------
  40.         // 規格1選択時
  41.         // -----------------------------------
  42.         $('select[name=classcategory_id1]')
  43.             .change(function() {
  44.                 if ( !is_option_point ) {
  45.                     return;
  46.                 }
  47.                 let $form = $(this).parents('form');
  48.                 let product_id = $('#product_id').val();
  49.                 let $sele1 = $(this);
  50.                 let $sele2 = $form.find('select[name=classcategory_id2]');
  51.                 let classcat_id1 = $sele1.val();
  52.                 let classcat_id2 = $sele2.val() ? $sele2.val() : '';
  53.                 let point_display_container = $('div').find('.point-display-container');
  54.                 let is_no_point_flag = eccube.displayPoints[product_id]['is_no_point_flag'];
  55.                 // 規格1が未選択状態に戻った場合
  56.                 if (classcat_id1 === '__unselected') {
  57.                     let point = point_display_container.data('dafault-point');
  58.                     setPointContainer(point_display_container, ':' + point + 'pt', '.point-display');
  59.                     return;
  60.                 }
  61.                 // ポイント付与が無効の場合
  62.                 if(is_no_point_flag) {
  63.                     let message = `<span class="ec-color-red">{{ 'joolendisplaypoints4.front.no_point_flag.message' | trans }}</span>`;
  64.                     setPointContainer(point_display_container, message);
  65.                     return;
  66.                 }
  67.                 // 規格1のみの場合だけ獲得可能ポイントを表示する
  68.                 if (!$sele2.length) {
  69.                     let point = eccube.displayPoints[product_id][classcat_id1]['#' + classcat_id2]['point'];
  70.                     setPointContainer(point_display_container, ':' + point + 'pt', '.point-display');
  71.                 } else {
  72.                     // 規格2が未選択の場合
  73.                     let message = `<span class="ec-color-red">{{ 'joolendisplaypoints4.front.no_select_class_category2.message' | trans }}。</span>`;
  74.                     setPointContainer(point_display_container, message, '.point-display');
  75.                 }
  76.             });
  77.         // -----------------------------------
  78.         // 規格2選択時
  79.         // -----------------------------------
  80.         $('select[name=classcategory_id2]')
  81.             .change(function () {
  82.                 if ( !is_option_point ) {
  83.                     return;
  84.                 }
  85.                 let $form = $(this).parents('form');
  86.                 let product_id = $form.find('input[name=product_id]').val();
  87.                 let $sele1 = $form.find('select[name=classcategory_id1]');
  88.                 let $sele2 = $(this);
  89.                 let point_display_container = $('div').find('.point-display-container');
  90.                 let eccube = window.eccube;
  91.                 let classcat_id1 = $sele1.val();
  92.                 let classcat_id2 = $sele2.val() ? $sele2.val() : '';
  93.                 let is_no_point_flag = eccube.displayPoints[product_id]['is_no_point_flag'];
  94.                 // ポイント付与が無効の場合
  95.                 if(is_no_point_flag) {
  96.                     let message = `<span class="ec-color-red">{{ 'joolendisplaypoints4.front.no_point_flag.message' | trans }}</span>`;
  97.                     setPointContainer(point_display_container, message);
  98.                     return;
  99.                 }
  100.                 // 規格2が未選択の場合
  101.                 if (!classcat_id2 ) {
  102.                     let message = `<span class="ec-color-red">{{ 'joolendisplaypoints4.front.no_select_class_category2.message' | trans }}。</span>`;
  103.                     setPointContainer(point_display_container, message, '.point-display');
  104.                     return;
  105.                 }
  106.                 let classcat2 = eccube.displayPoints[product_id][classcat_id1]['#' + classcat_id2];
  107.                 let point = classcat2['point'];
  108.                 setPointContainer(point_display_container, ':' + point + 'pt', '.point-display');
  109.             });
  110.         function setPointContainer(point_display_container, container_data, children_class_name = null,)
  111.         {
  112.             if(!children_class_name) {
  113.                 point_display_container.html(container_data);
  114.             } else {
  115.                 point_display_container.children(children_class_name).html(container_data);
  116.             }
  117.             point_display_container.show();
  118.         }
  119.     });
  120. </script>
  121. {% endblock %}