diff --git a/README.md b/README.md index fe6ec0646..98cd231af 100644 --- a/README.md +++ b/README.md @@ -1,73 +1,32 @@ -# EC-CUBE 4.0 +# EC-CUBE 4.0 VI Version -[![Build Status](https://travis-ci.com/EC-CUBE/ec-cube.svg?branch=4.0)](https://travis-ci.com/EC-CUBE/ec-cube) -[![Build status](https://ci.appveyor.com/api/projects/status/lg3uh1539cwln2g6/branch/4.0?svg=true)](https://ci.appveyor.com/project/ECCUBE/ec-cube/branch/4.0) -[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/EC-CUBE/ec-cube/badges/quality-score.png?b=4.0)](https://scrutinizer-ci.com/g/EC-CUBE/ec-cube/?branch=4.0) -[![Coverage Status](https://coveralls.io/repos/github/EC-CUBE/ec-cube/badge.svg?branch=4.0)](https://coveralls.io/github/EC-CUBE/ec-cube?branch=4.0) +## Cách cài đặt EC-CUBE 4.0 -[![Slack](http://img.shields.io/badge/slack-join%5fchat-brightgreen.svg?style=flat)](https://www.ec-cube.net/rd.php?aid=join-slack) +Vui lòng cài đặt theo quy trình về [cách cài đặt](http://docs.ec-cube.vn/?p=253) ở tài liệu phát triển. -[![Deploy](https://www.herokucdn.com/deploy/button.png)](https://heroku.com/deploy) +## Cách chỉnh sửa / xây dựng CSS +Nó được mô tả bằng [Sass](http://sass-lang.com). +Mã nguồn Sass được đặt trong `html/template/{admin,default}/assets/scss`. +Vui lòng cài đặt [nodejs](https://nodejs.org/en/) để chạy Sass -+ 本ドキュメントはEC-CUBEの開発者を主要な対象者としております。 -+ パッケージ版は正式リリース後に[EC-CUBEオフィシャルサイト](http://www.ec-cube.net)で配布します。 -+ カスタマイズやEC-CUBEの利用、仕様に関しては[開発コミュニティ](http://xoops.ec-cube.net)をご利用ください。 -+ 本体開発にあたって不明点などあれば[Issue](https://github.com/EC-CUBE/ec-cube/wiki/Issues%E3%81%AE%E5%88%A9%E7%94%A8%E6%96%B9%E6%B3%95)をご利用下さい。 -+ EC-CUBE 3.0系のについては、masterブランチにて開発を行っております。 -+ EC-CUBE 2.13系の保守については、[EC-CUBE/eccube-2_13](https://github.com/EC-CUBE/eccube-2_13/)にて開発を行っております。 - -## インストール - -### EC-CUBE 4.0のインストール方法 - -開発ドキュメントの [インストール方法](http://doc4.ec-cube.net/quickstart_install) の手順に従ってインストールしてください。 - -### CSS の編集・ビルド方法 - -[Sass](http://sass-lang.com) を使用して記述されています。 -Sass のソースコードは `html/template/{admin,default}/assets/scss` にあります。 -前提として [https://nodejs.org/ja/] より、 Node.js をインストールしておいてください。 - -以下のコマンドでビルドすることで、 `html/template/{admin,default}/assets/css` に CSS ファイルが出力されます。 +Cách chạy nodejs ```shell -npm install # 初回のみ -npm run build # Sass のビルド +npm install +npm run build ``` -### 動作確認環境 +## Môi trường xác nhận hoạt động -* Apache/2.4.x (mod_rewrite / mod_ssl 必須) +* Apache/2.4.x (mod_rewrite / mod_ssl) * PHP7.1.20 * PostgreSQL 9.2.1 -* ブラウザー:Google Chrome - -詳しくは開発ドキュメントの [システム要件](http://doc4.ec-cube.net/quickstart_requirement) をご確認ください。 - -## ドキュメント - -### [EC-CUBE 4.0 開発ドキュメント@doc4.ec-cube.net](http://doc4.ec-cube.net/) - - -EC-CUBE 4.0 の仕様や手順、開発Tipsに関するドキュメントを掲載しています。 -修正や追記、新規ドキュメントの作成をいただく場合、以下のレポジトリからPullRequestをお送りください。 -[https://github.com/EC-CUBE/ec-cube.github.io](https://github.com/EC-CUBE/ec-cube.github.io) - -## 開発への参加 - -EC-CUBE 4.0の不具合の修正、機能のブラッシュアップを目的として、継続的に開発を行っております。 -コードのリファクタリング、不具合修正以外のPullRequestを送る際は、Pull Requestのコメントなどに意図を明確に記載してください。 - -Pull Requestの送信前に、Issueにて提議いただく事も可能です。 -Issuesの利用方法については、[こちら](https://github.com/EC-CUBE/ec-cube/wiki/Issues%E3%81%AE%E5%88%A9%E7%94%A8%E6%96%B9%E6%B3%95)をご確認ください。 - -[Slack](https://www.ec-cube.net/rd.php?aid=join-slack)でも本体の開発に関する意見交換などを行っております。 - +Vui lòng kiểm tra các [yêu cầu hệ thống](http://docs.ec-cube.vn/?p=80) của tài liệu phát triển để biết chi tiết. -### コピーライトポリシーへの同意 +## Tài liệu +http://docs.ec-cube.vn/ -コードの提供・追加、修正・変更その他「EC-CUBE」への開発の御協力(Issue投稿、PullRequest投稿など、GitHub上での活動)を行っていただく場合には、 -[EC-CUBEのコピーライトポリシー](https://github.com/EC-CUBE/ec-cube/blob/50de4ac511ab5a5577c046b61754d98be96aa328/LICENSE.txt)をご理解いただき、ご了承いただく必要がございます。 -Issueの投稿やPullRequestを送信する際は、EC-CUBEのコピーライトポリシーに同意したものとみなします。 +## Cộng đồng FB +https://www.facebook.com/groups/eccube.vn/ diff --git a/app/config/eccube/packages/eccube.yaml b/app/config/eccube/packages/eccube.yaml index 96e26f651..4ce22241c 100644 --- a/app/config/eccube/packages/eccube.yaml +++ b/app/config/eccube/packages/eccube.yaml @@ -58,7 +58,7 @@ parameters: plugin_realdir: '%kernel.project_dir%/app/Plugin' plugin_data_realdir: '%kernel.project_dir%/app/PluginData' plugin_temp_realdir: /PATH/TO/WEB_ROOT/src/Eccube/Repository/Master/upload/temp_plugin/ # upload_tmp_dir に任せればよい? - eccube_price_len: 8 # 最大値で制御したい + eccube_price_len: 16 # 最大値で制御したい eccube_search_pmax: 10 eccube_stext_len: 255 eccube_sltext_len: 500 @@ -71,9 +71,12 @@ parameters: # CSVの区切り文字(タブ区切りにしたい場合は'\t'ではなく' 'で設定する eccube_csv_export_separator: , # 出力エンコーディング - eccube_csv_export_encoding: SJIS-win + # ja: SJIS-win + # vi: Windows-1258 - alias: CP1258 use iconv function + # ref: https://symfony.com/doc/3.4/components/polyfill_iconv.html + eccube_csv_export_encoding: 'UTF-8' # 日付のフォーマット - eccube_csv_export_date_format: 'Y-m-d H:i:s' + eccube_csv_export_date_format: 'H:i:s d-m-Y' # 複数データの区切り文字 eccube_csv_export_multidata_separator: , eccube_csv_import_delimiter: , @@ -81,13 +84,13 @@ parameters: eccube_csv_import_escape: \ eccube_info_url: 'https://www.ec-cube.net/info/4/' eccube_owners_store_url: '%env(ECCUBE_OWNERS_STORE_URL)%' - eccube_official_site_url: https://www.ec-cube.net - eccube_community_site_url: https://xoops.ec-cube.net - eccube_document_url: http://doc4.ec-cube.net - eccube_name_len: 16 + eccube_official_site_url: http://ec-cube.vn + eccube_community_site_url: https://www.facebook.com/groups/eccube.vn/ + eccube_document_url: http://docs.ec-cube.vn/ + eccube_name_len: 20 eccube_kana_len: 25 - eccube_address1_len: 32 - eccube_address2_len: 32 + eccube_address1_len: 50 + eccube_address2_len: 50 eccube_birth_max: 110 eccube_product_order_price_lower: 1 eccube_product_order_newer: 2 @@ -118,8 +121,16 @@ parameters: # {random,桁数}: ランダムな数値を桁数分作成 # {random_alnum,桁数} : ランダムな半角英数大文字を桁数分作成 eccube_order_no_format: '' - eccube_order_pdf_message_len: 30 + eccube_order_pdf_message_len: 50 + # Font for print pdf file: + # ja: kozminproregular + # vi: dejavusans + eccube_order_pdf_font: 'dejavusans' eccube_news_start_year: 2000 eccube_result_cache_lifetime: 3600 # doctrineのresult cacheのlifetime. eccube_result_cache_lifetime_short: 10 # doctrineのresult cacheのlifetime. 商品一覧画面など長期間キャッシュできない箇所で使用する. eccube_content_maintenance_file_path: '%kernel.project_dir%/.maintenance' + eccube_form_date_format: 'dd-MM-yyyy' + eccube_form_date_format_js_calendar: 'dd-mm-yyyy' + eccube_space: ' ' + diff --git a/app/config/eccube/services.yaml b/app/config/eccube/services.yaml index f32c19895..87dd5cf73 100644 --- a/app/config/eccube/services.yaml +++ b/app/config/eccube/services.yaml @@ -5,9 +5,9 @@ parameters: container.dumper.inline_class_loader: true # ec-cube parameters - env(ECCUBE_LOCALE): 'ja' - env(ECCUBE_TIMEZONE): 'Asia/Tokyo' - env(ECCUBE_CURRENCY): 'JPY' + env(ECCUBE_LOCALE): 'vi' + env(ECCUBE_TIMEZONE): 'Asia/Ho_Chi_Minh' + env(ECCUBE_CURRENCY): 'VND' locale: '%env(ECCUBE_LOCALE)%' timezone: '%env(ECCUBE_TIMEZONE)%' currency: '%env(ECCUBE_CURRENCY)%' @@ -164,6 +164,8 @@ services: Symfony\Component\HttpFoundation\ParameterBag: +# Eccube\Common\EccubeConfig\LocalUtil: + Eccube\Twig\Extension\IgnoreRoutingNotFoundExtension: # Symfony\Bridge\Twig\Extension\RoutingExtensionの後に登録するため, # autoconfigureはfalseにし, CompilerPassで追加する. diff --git a/app/template/admin/Customer/delivery_edit.twig b/app/template/admin/Customer/delivery_edit.twig new file mode 100644 index 000000000..21c49b372 --- /dev/null +++ b/app/template/admin/Customer/delivery_edit.twig @@ -0,0 +1,185 @@ +{# +This file is part of EC-CUBE + +Copyright(c) LOCKON CO.,LTD. All Rights Reserved. + +http://www.lockon.co.jp/ + +For the full copyright and license information, please view the LICENSE +file that was distributed with this source code. +#} + +{% extends '@admin/default_frame.twig' %} + +{% set menus = ['customer', 'customer_edit'] %} + +{% block title %}{{ 'admin.customer.customer_address_registration'|trans }}{% endblock %} +{% block sub_title %}{{ 'admin.customer.customer_management'|trans }}{% endblock %} + +{% form_theme form '@admin/Form/bootstrap_4_horizontal_layout.html.twig' %} + +{% block javascript %} + +{% endblock javascript %} + +{% block main %} + +
+ {{ form_widget(form._token) }} + +
+
+
+
+
+ {{ 'admin.customer.customer_address_info'|trans }} +
+
+ {% if CustomerAddress.id %} +
+
+ {{ 'admin.common.id'|trans }} +
+
+ {{ CustomerAddress.id }} +
+
+ {% endif %} + +
+
+ {{ 'admin.common.name'|trans }} +
+
+
+
+ {{ form_widget(form.name.name01) }} + {{ form_errors(form.name.name01) }} +
+
+ {{ form_widget(form.name.name02) }} + {{ form_errors(form.name.name02) }} +
+
+
+
+ {{ form_widget(form.kana.kana01, { type : 'hidden', attr : { value: 'カナ'}}) }} + {{ form_widget(form.kana.kana02, { type : 'hidden', attr : { value: 'カナ'}}) }} +
+
+ {{ 'admin.common.company_name'|trans }} +
+
+ {{ form_widget(form.company_name) }} + {{ form_errors(form.company_name) }} +
+
+ +
+
+ {{ 'admin.common.address'|trans }} +
+
+
+
{{ 'admin.common.postal_symbol'|trans }}
+
+ {{ form_widget(form.postal_code) }} + {{ form_errors(form.postal_code) }} +
+
+
+
+ +
+
+   +
+
+ {{ form_widget(form.address.pref) }} + {{ form_errors(form.address.pref) }} +
+
+ +
+
+   +
+
+ {{ form_widget(form.address.addr01) }} + {{ form_errors(form.address.addr01) }} +
+
+ +
+
+   +
+
+ {{ form_widget(form.address.addr02) }} + {{ form_errors(form.address.addr02) }} +
+
+ +
+
+ {{ 'admin.common.phone_number'|trans }} +
+
+ {{ form_widget(form.phone_number) }} + {{ form_errors(form.phone_number) }} +
+
+ + {# エンティティ拡張の自動出力 #} + {% for f in form if f.vars.eccube_form_options.auto_render %} + {% if f.vars.eccube_form_options.form_theme %} + {% form_theme f f.vars.eccube_form_options.form_theme %} + {{ form_row(f) }} + {% else %} +
+
+ {{ f.vars.label|trans }} +
+
+ {{ form_widget(f) }} + {{ form_errors(f) }} +
+
+ {% endif %} + {% endfor %} + +
+
+
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+
+
+
+
+ +{% endblock %} diff --git a/app/template/admin/Customer/edit.twig b/app/template/admin/Customer/edit.twig new file mode 100644 index 000000000..15fcede27 --- /dev/null +++ b/app/template/admin/Customer/edit.twig @@ -0,0 +1,477 @@ +{# +This file is part of EC-CUBE + +Copyright(c) LOCKON CO.,LTD. All Rights Reserved. + +http://www.lockon.co.jp/ + +For the full copyright and license information, please view the LICENSE +file that was distributed with this source code. +#} + +{% extends '@admin/default_frame.twig' %} + +{% set menus = ['customer', 'customer_edit'] %} + +{% block title %}{{ 'admin.customer.customer_registration'|trans }}{% endblock %} +{% block sub_title %}{{ 'admin.customer.customer_management'|trans }}{% endblock %} + +{% form_theme form '@admin/Form/bootstrap_4_horizontal_layout.html.twig' %} + +{% block javascript %} + +{% endblock javascript %} + +{% block main %} +
+ + {{ form_widget(form._token) }} +
+
+
+
+
+
+
{{ 'admin.customer.customer_info'|trans }} +
+
+ +
+
+
+
+
+ {% if Customer.id %} +
+
+
+ {{ 'admin.customer.customer_id'|trans }} + +
+
+
+

{{ Customer.id }}

+
+
+ {% endif %} +
+
+ {{ 'admin.common.name'|trans }} + {{ 'admin.common.required'|trans }} +
+
+
+
+ {{ form_widget(form.name.name01) }} +
+
+ {{ form_widget(form.name.name02) }} +
+
+
+
+ {{ form_errors(form.name.name01) }} +
+
+ {{ form_errors(form.name.name02) }} +
+
+
+
+ {{ form_widget(form.kana.kana01, { type : 'hidden', attr : { value: 'カナ'}}) }} + {{ form_widget(form.kana.kana02, { type : 'hidden', attr : { value: 'カナ'}}) }} +
+
+ {{ 'admin.common.company_name'|trans }} +
+
+ {{ form_widget(form.company_name) }} + {{ form_errors(form.company_name) }} +
+
+
+
{{ 'admin.common.address'|trans }}{{ 'admin.common.required'|trans }} +
+
+
+
+
{{ 'admin.common.postal_symbol'|trans }}
+
+ {{ form_widget(form.postal_code) }} + +
+
+
+
+ {{ form_errors(form.postal_code) }} +
+
+
+
+
+
+ {{ form_widget(form.address.pref) }} + {{ form_errors(form.address.pref) }} +
+
+
+
+ {{ form_widget(form.address.addr01, { attr : { placeholder : 'admin.common.address_sample_01' }} ) }} + {{ form_errors(form.address.addr01) }} +
+
+ {{ form_widget(form.address.addr02, { attr : { placeholder : 'admin.common.address_sample_02' }}) }} + {{ form_errors(form.address.addr02) }} +
+
+
+
+
+ {{ 'admin.common.mail_address'|trans }} + {{ 'admin.common.required'|trans }} +
+
+ {{ form_widget(form.email) }} + {{ form_errors(form.email) }} +
+
+
+
+ {{ 'admin.common.phone_number'|trans }} + {{ 'admin.common.required'|trans }} +
+
+ {{ form_widget(form.phone_number) }} + {{ form_errors(form.phone_number) }} +
+
+
+
+ {{ 'admin.common.password'|trans }} + {{ 'admin.common.required'|trans }} +
+
+ {{ form_widget(form.password.first, { type : 'password'}) }} + {{ form_errors(form.password.first) }} +
+
+
+
+ {{ 'admin.common.password_for_confirmation'|trans }} + {{ 'admin.common.required'|trans }} +
+
+ {{ form_widget(form.password.second, { type : 'password'}) }} + {{ form_errors(form.password.second) }} +
+
+
+
+ {{ 'admin.common.gender'|trans }} +
+
+ {{ form_widget(form.sex, {'label_attr': {'class': 'radio-inline'}}) }} + {{ form_errors(form.sex) }} +
+
+
+
+ {{ 'admin.common.job'|trans }} +
+
+ {{ form_widget(form.job) }} + {{ form_errors(form.job) }} +
+
+
+
+ {{ 'admin.common.birth_day'|trans }} +
+
+ {{ form_widget(form.birth) }} + {{ form_errors(form.birth) }} +
+
+
+
+ {{ 'admin.common.point'|trans }} +
+
+ {{ form_widget(form.point) }} + {{ form_errors(form.point) }} +
+
+ + {# エンティティ拡張の自動出力 #} + {% for f in form if f.vars.eccube_form_options.auto_render %} + {% if f.vars.eccube_form_options.form_theme %} + {% form_theme f f.vars.eccube_form_options.form_theme %} + {{ form_row(f) }} + {% else %} +
+
+ {{ f.vars.label|trans }} +
+
+ {{ form_widget(f) }} + {{ form_errors(f) }} +
+
+ {% endif %} + {% endfor %} + +
+
+
+ + {% if Customer.id %} +
+
+
+
+
+ + {{ 'admin.customer.customer_address'|trans }} + + +
+
+
+ +
+
+
+
+ {% if Customer.CustomerAddresses|length > 0 %} +
+ + + + + + + + + {% for CustomerAddress in Customer.CustomerAddresses %} + + + + + + + {% endfor %} + +
{{ 'admin.common.name'|trans }}{{ 'admin.common.address'|trans }}{{ 'admin.common.phone_number'|trans }}
+ {{ CustomerAddress.name01 }} {{ CustomerAddress.name02 }} + + + {{ format_address(CustomerAddress.addr01, CustomerAddress.addr02, CustomerAddress.Pref, CustomerAddress.postal_code) }} + + + {{ CustomerAddress.phone_number }} + +
+ + + +
+ +
+ + {# TODO: 新規追加ボタンと文言のデザインを整える #} + {% if Customer.CustomerAddresses|length < eccube_config.eccube_deliv_addr_max %} + + {% else %} + + {{ 'admin.customer.customer_address_count_is_over'|trans({"%eccube_deliv_addr_max%":eccube_config.eccube_deliv_addr_max}) }} + + {% endif %} +
+ {% else %} +
+
+ {{ 'admin.customer.no_customer_address'|trans }} +
+ + + +
+ {% endif %} +
+
+ {% endif %} + + {% if Customer.id %} +
+
+
+
+
+ + {{ 'admin.customer.purchase_history'|trans }} + + +
+
+
+ +
+
+
+
+ {% if Customer.Orders|length > 0 %} + {# TODO IN_PROGRESS と RETURNED の色を決める #} + {% set cssClassStatus = { + (constant('Eccube\\Entity\\Master\\OrderStatus::NEW')): "badge-ec-blue", + (constant('Eccube\\Entity\\Master\\OrderStatus::CANCEL')): "badge-ec-glay", + (constant('Eccube\\Entity\\Master\\OrderStatus::DELIVERED')): "badge-ec-glay", + (constant('Eccube\\Entity\\Master\\OrderStatus::PAID')): "badge-ec-green", + (constant('Eccube\\Entity\\Master\\OrderStatus::PENDING')): "badge-ec-yellow", + (constant('Eccube\\Entity\\Master\\OrderStatus::PROCESSING')): "badge-ec-yellow", + (constant('Eccube\\Entity\\Master\\OrderStatus::IN_PROGRESS')): "badge-ec-yellow", + (constant('Eccube\\Entity\\Master\\OrderStatus::RETURNED')): "badge-ec-yellow" + } %} +
+ + + + + + + + + {% for Order in Customer.Orders %} + + + + + + + {% endfor %} + +
{{ 'admin.order.order_date'|trans }}{{ 'admin.order.order_no'|trans }}{{ 'admin.order.purchase_price'|trans }}{{ 'admin.order.order_status'|trans }}
{{ Order.order_date|date_min }} + + {{ Order.order_no }} + + {{ Order.total|price }} + {{ Order.OrderStatus }} +
+
+ {% else %} +
+
+ + {{ 'admin.customer.no_purchase_history'|trans }} + +
+
+ {% endif %} +
+
+ {% endif %} + +
+
+
+
+
+ {{ 'admin.common.shop_memo'|trans }} + +
+
+
+ +
+
+
+
+
+ {{ form_widget(form.note, { 'attr': { 'row': 8 }}) }} + {{ form_errors(form.note) }} +
+
+
+
+
+
+ +
+
+
+ +
+
+
+ {{ form_widget(form.status) }} + {{ form_errors(form.status) }} +
+
+ +
+
+
+
+
+
+
+{% endblock %} diff --git a/app/template/admin/Customer/index.twig b/app/template/admin/Customer/index.twig new file mode 100644 index 000000000..9e8dedde6 --- /dev/null +++ b/app/template/admin/Customer/index.twig @@ -0,0 +1,388 @@ +{# +This file is part of EC-CUBE + +Copyright(c) LOCKON CO.,LTD. All Rights Reserved. + +http://www.lockon.co.jp/ + +For the full copyright and license information, please view the LICENSE +file that was distributed with this source code. +#} +{% extends '@admin/default_frame.twig' %} + +{% set menus = ['customer', 'customer_master'] %} + +{% block title %}{{ 'admin.customer.customer_list'|trans }}{% endblock %} +{% block sub_title %}{{ 'admin.customer.customer_management'|trans }}{% endblock %} + +{% form_theme searchForm '@admin/Form/bootstrap_4_horizontal_layout.html.twig' %} + +{% block stylesheet %} + + +{% endblock stylesheet %} + +{% block main %} +
+ {{ form_widget(searchForm._token) }} +
+
+
+
+
+ + {{ form_widget(searchForm.multi) }} + {{ form_errors(searchForm.multi) }} +
+ +
+
+
+
+
+
+
+
+

{{ 'admin.customer.customer_status'|trans }}

+ {{ form_widget(searchForm.customer_status, { 'label_attr': { 'class': 'checkbox-inline'}}) }} + {{ form_errors(searchForm.customer_status) }} +
+
+
+
+
+ + {{ form_widget(searchForm.buy_product_name) }} + {{ form_errors(searchForm.buy_product_name) }} +
+
+
+
+
+
+
+

{{ 'admin.common.gender'|trans }}

+ {{ form_widget(searchForm.sex, { 'label_attr': { 'class': 'checkbox-inline'}}) }} + {{ form_errors(searchForm.sex) }} +
+
+
+
+
+ +
+
+ {{ form_widget(searchForm.buy_total_start) }} + {{ form_errors(searchForm.buy_total_start) }} +
+
{{ 'admin.common.separator__range'|trans }}
+
+ {{ form_widget(searchForm.buy_total_end) }} + {{ form_errors(searchForm.buy_total_end) }} +
+
+
+
+
+
+
+
+ +
+
+ {{ form_widget(searchForm.birth_month) }} + {{ form_errors(searchForm.birth_month) }} +
+
+
+
+
+
+
+ +
+
+ {{ form_widget(searchForm.buy_times_start) }} + {{ form_errors(searchForm.buy_times_start) }} +
+
{{ 'admin.common.separator__range'|trans }}
+
+ {{ form_widget(searchForm.buy_times_end) }} + {{ form_errors(searchForm.buy_times_end) }} +
+
+
+
+
+
+
+
+ +
+
+ {{ form_widget(searchForm.birth_start) }} + {{ form_errors(searchForm.birth_start) }} +
+
{{ 'admin.common.separator__range'|trans }}
+
+ {{ form_widget(searchForm.birth_end) }} + {{ form_errors(searchForm.birth_end) }} +
+
+
+
+
+
+ +
+
+ {{ form_widget(searchForm.create_date_start) }} + {{ form_errors(searchForm.create_date_start) }} +
+
{{ 'admin.common.separator__range'|trans }}
+
+ {{ form_widget(searchForm.create_date_end) }} + {{ form_errors(searchForm.create_date_end) }} +
+
+
+
+
+
+
+
+ +
+
+ {{ form_widget(searchForm.pref) }} + {{ form_errors(searchForm.pref) }} +
+
+
+
+
+
+
+ +
+
+ {{ form_widget(searchForm.update_date_start) }} + {{ form_errors(searchForm.update_date_start) }} +
+
{{ 'admin.common.separator__range'|trans }}
+
+ {{ form_widget(searchForm.update_date_end) }} + {{ form_errors(searchForm.update_date_end) }} +
+
+
+
+
+
+
+
+ + {{ form_widget(searchForm.phone_number) }} + {{ form_errors(searchForm.phone_number) }} +
+
+
+
+ +
+
+ {{ form_widget(searchForm.last_buy_start) }} + {{ form_errors(searchForm.last_buy_start) }} +
+
{{ 'admin.common.separator__range'|trans }}
+
+ {{ form_widget(searchForm.last_buy_end) }} + {{ form_errors(searchForm.last_buy_end) }} +
+
+
+
+
+ + {# エンティティ拡張の自動出力 #} + {% for f in searchForm if f.vars.eccube_form_options.auto_render %} + {# TODO 1項目1行になるのを改善 #} +
+ {% if f.vars.eccube_form_options.form_theme %} + {% form_theme f f.vars.eccube_form_options.form_theme %} + {{ form_row(f) }} + {% else %} +
+
+ + {{ form_widget(f) }} + {{ form_errors(f) }} +
+
+ {% endif %} +
+ {% endfor %} +
+
+
+ + {% if pagination %} + {{ 'admin.common.search_result'|trans({'%count%':pagination.totalItemCount}) }} + {% endif %} +
+
+ {{ include('@admin/search_items.twig', { 'form': searchForm }, ignore_missing = true) }} +
+
+
+
+ {% if pagination and pagination.totalItemCount %} +
+
+ +
+ {#Dropdown page count#} +
+ +
+ + +
+
+
+
+ + + + + + + + + + + + + {% for Customer in pagination %} + + + + + + + + + {% endfor %} + +
{{ 'admin.customer.customer_id'|trans }}{{ 'admin.common.name'|trans }}{{ 'admin.common.phone_number'|trans }}{{ 'admin.common.mail_address'|trans }}  
{{ Customer.id }}{{ Customer.name01 }} {{ Customer.name02 }}{{ Customer.phone_number }}{{ Customer.email }} +
+ {% if Customer.Status.id == constant('Eccube\\Entity\\Master\\CustomerStatus::PROVISIONAL') %} +
+ + + +
+ + {% endif %} +
+ + + +
+ +
+
+
+ {% if pagination.totalItemCount > 0 %} + {% include "@admin/pager.twig" with { 'pages' : pagination.paginationData, 'routes' : 'admin_customer_page' } %} + {% endif %} +
+
+
+ {% elseif has_errors %} +
+
+
{{ 'admin.common.search_invalid_condition'|trans }}
+
{{ 'admin.common.search_try_change_condition'|trans }}
+
+
+ {% else %} +
+
+
{{ 'admin.common.search_no_result'|trans }}
+
{{ 'admin.common.search_try_change_condition'|trans }}
+
{{ 'admin.common.search_try_advanced_search'|trans }}
+
+
+ {% endif %} +
+
+
+
+{% endblock %} diff --git a/app/template/admin/Order/confirmationModal_js.twig b/app/template/admin/Order/confirmationModal_js.twig new file mode 100644 index 000000000..3b19a3dbb --- /dev/null +++ b/app/template/admin/Order/confirmationModal_js.twig @@ -0,0 +1,280 @@ + diff --git a/app/template/admin/Order/csv_shipping.twig b/app/template/admin/Order/csv_shipping.twig new file mode 100644 index 000000000..1dcd1b845 --- /dev/null +++ b/app/template/admin/Order/csv_shipping.twig @@ -0,0 +1,138 @@ +{# +This file is part of EC-CUBE + +Copyright(c) LOCKON CO.,LTD. All Rights Reserved. + +http://www.lockon.co.jp/ + +For the full copyright and license information, please view the LICENSE +file that was distributed with this source code. +#} +{% extends '@admin/default_frame.twig' %} + +{% set menus = ['order', 'shipping_csv_import'] %} + +{% block title %}{{ 'admin.order.shipping_csv_upload'|trans }}{% endblock %} +{% block sub_title %}{{ 'admin.order.order_management'|trans }}{% endblock %} + +{% form_theme form '@admin/Form/bootstrap_4_horizontal_layout.html.twig' %} +{% block javascript %} + + +{% endblock javascript %} + +{% block main %} +
+
+
+ +
+
+
+ {{'admin.common.csv_upload'|trans}} + +
+
+
+
+
+ {{ 'admin.common.csv_select'|trans }} +
+
+ +
+ {{ form_widget(form._token) }} +
+ {{ 'admin.common.file_select'|trans }} + {{ 'admin.common.file_select_empty'|trans }} + {{ form_widget(form.import_file, {'attr': {'accept': 'text/csv,text/tsv', 'class': 'd-none'}}) }} + {{ form_errors(form.import_file) }} +
+ + {% for error in errors %} +
{{ error }}
+ {% endfor %} +
+
+
+
+
+
+ +
+
+
+
+
+ {{ 'admin.common.csv_format'|trans }} + +
+
+ + +
+
+
+ + + {% for header in headers %} + + + + + {% endfor %} + +
+ {{ header.name }} + {% if header.required %} + {{ 'admin.common.required'|trans }} + {% endif %} + {{ header.description }}
+
+
+
+
+
+{% endblock %} diff --git a/app/template/admin/Order/edit.twig b/app/template/admin/Order/edit.twig new file mode 100644 index 000000000..bef2a8273 --- /dev/null +++ b/app/template/admin/Order/edit.twig @@ -0,0 +1,1029 @@ +{# +This file is part of EC-CUBE + +Copyright(c) LOCKON CO.,LTD. All Rights Reserved. + +http://www.lockon.co.jp/ + +For the full copyright and license information, please view the LICENSE +file that was distributed with this source code. +#} +{% extends '@admin/default_frame.twig' %} + +{% set menus = ['order', 'order_edit'] %} + +{% block title %}{{ 'admin.order.order_registration'|trans }}{% endblock %} +{% block sub_title %}{{ 'admin.order.order_management'|trans }}{% endblock %} + +{% form_theme form '@admin/Form/bootstrap_4_horizontal_layout.html.twig' %} +{% form_theme searchCustomerModalForm '@admin/Form/bootstrap_4_horizontal_layout.html.twig' %} +{% form_theme searchProductModalForm '@admin/Form/bootstrap_4_horizontal_layout.html.twig' %} + +{% block javascript %} + + +{% endblock javascript %} + +{% block main %} + {# 決済処理中/購入処理中ステータスは登録・更新等の操作を無効にする #} + {% set action_disabled = false %} + {% if Order.OrderStatus is not empty and Order.OrderStatus.id in [ + constant('Eccube\\Entity\\Master\\OrderStatus::PROCESSING'), constant('Eccube\\Entity\\Master\\OrderStatus::PENDING')] -%} + {% set action_disabled = true %} + {%- endif %} + + +
+ + + {{ form_widget(form._token) }} + {{ form_widget(form.return_link) }} +
+
+
+
+
+
+
+
{{ 'admin.order.order_info'|trans }}
+
+
+
+
+
+
+
+
+
+
{{ 'admin.order.order_no'|trans }}
+
{{ Order.order_no }}
+
+
+ +
+ {% if Order.id is not empty %} + {{ form_widget(form.OrderStatus) }} + {{ form_errors(form.OrderStatus) }} + {% endif %} +
+
+
+ +
+ {{ form_widget(form.Payment) }} + {{ form_errors(form.Payment) }} +

{{ 'admin.order.change_payment_method_message'|trans }}

+
+
+
+
+
+
{{ 'admin.order.order_date'|trans }}
+
{{ Order.order_date ? Order.order_date|date_sec : '' }}
+
+
+
{{ 'admin.order.payment_date'|trans }}
+
{{ Order.payment_date ? Order.payment_date|date_sec : '' }}
+
+ {% if not Order.isMultiple %} +
+
{{ 'admin.order.shipping_date'|trans }}
+
+ {{ Order.Shippings[0].shipping_date|date_sec }} +
+
+ {% endif %} +
+
{{ 'admin.common.update_date'|trans }}
+
{{ Order.update_date ? Order.update_date|date_sec : '' }}
+
+
+
{{ 'admin.common.device_type'|trans }}
+
{{ Order.device_type }}
+
+
+
{{ 'admin.order.message'|trans }}
+
{{ Order.message ? Order.message|nl2br : '' }}
+
+
+
+ + {# エンティティ拡張の自動出力 #} + {% for f in form if f.vars.eccube_form_options.auto_render %} + {% if f.vars.eccube_form_options.form_theme %} + {% form_theme f f.vars.eccube_form_options.form_theme %} + {{ form_row(f) }} + {% else %} +
+
+
+
+ {{ f.vars.label|trans }} +
+
+ {{ form_widget(f) }} + {{ form_errors(f) }} +
+
+
+
+ {% endif %} + {% endfor %} + +
+
+
+
+
+
+
+
{{ 'admin.order.orderer'|trans }}
+
+
{% if id %}{% if form.Customer.vars.value is empty %}{{ 'admin.order.non_member'|trans }}{% else %}{{ form.Customer.vars.value }}{% endif %} + {{ Order.full_name }} {{ format_address(Order.addr01, Order.addr02, Order.pref, Order.postal_code) }} {{ Order.email }}{% endif %}
+
+
+
+
+ +
+ {% if Order.id is empty %} + + + + {% endif %} +
+
+
+ +
+

{% if form.Customer.vars.value is empty %}{{ 'admin.order.non_member'|trans }}{% else %}{{ form.Customer.vars.value }}{% endif %}

+ {{ form_widget(form.Customer) }} + {{ form_errors(form.Customer) }} +
+
+
+ +
+
+
+ {{ form_widget(form.name.name01) }} + {{ form_errors(form.name.name01) }} +
+
+ {{ form_widget(form.name.name02) }} + {{ form_errors(form.name.name02) }} +
+
+
+
+ {{ form_widget(form.kana.kana01, { type : 'hidden', attr : { value: 'カナ'}}) }} + {{ form_widget(form.kana.kana02, { type : 'hidden', attr : { value: 'カナ'}}) }} +
+ +
+
+
+ {{ 'admin.common.postal_symbol'|trans }} + {{ form_widget(form.postal_code) }} + {{ form_errors(form.postal_code) }} +
+
+
+
+ {{ form_widget(form.address.pref) }} + {{ form_errors(form.address.pref) }} +
+
+
+
+ {{ form_widget(form.address.addr01, { attr: { placeholder: 'admin.common.address_sample_01'|trans}}) }} + {{ form_errors(form.address.addr01, { attr: { placeholder: 'admin.common.address_sample_02'|trans}}) }} +
+
+
+
+ {{ form_widget(form.address.addr02) }} + {{ form_errors(form.address.addr02) }} +
+
+
+
+
+ +
+
+ +
+ {{ form_widget(form.email) }} + {{ form_errors(form.email) }} +
+
+
+ +
+ {{ form_widget(form.phone_number) }} + {{ form_errors(form.phone_number) }} +
+
+
+ +
+ {{ form_widget(form.company_name) }} + {{ form_errors(form.company_name) }} +
+
+
+ +
+ {{ form_widget(form.message, { attr : {'rows': 8 }}) }} + {{ form_errors(form.message) }} +
+
+
+
+ +
+
+
+
+
+
+
+
{{ 'admin.order.shipping_info'|trans }}
+
+
+
+
+
+
+ {% if Order.isMultiple %} + {# 複数配送の場合は配送先の表示のみ #} +
+ {{ 'admin.order.edit_multiple_shipping'|trans }} + {{ 'admin.order.edit_multiple_shipping_description'|trans }} +
+ {% for shipping in Order.Shippings %} +
+ {{ 'admin.order.delivery'|trans }}({{ loop.index }}) + {% set shipping_name = shipping.full_name ~ shipping.company_name is not null ? shipping.company_name : '' %} + {% set shipping_addr = format_address(shipping.addr01, shipping.addr02, shipping.pref, shipping.postal_code) %} + {% set shipping_date = shipping.shipping_date is not null ? shipping.shipping_date|date_day : '' %} + {{ shipping_name }} {{ shipping_addr }} {{ shipping.phone_number }} {{ shipping_date }} +
+ {% endfor %} + {% else %} + {# 単数配送の場合は配送先の編集が可能 #} +
+
+ + {% if Order.id is not empty %} + {{ 'admin.order.output_delivery_note'|trans }} + {% endif %} +
+ {% if Order.id is not empty %} + + {% endif %} +
+
+ +
+
+ +
+
+
+ {{ form_widget(form.Shipping.name.name01) }} + {{ form_errors(form.Shipping.name.name01) }} +
+
+ {{ form_widget(form.Shipping.name.name02) }} + {{ form_errors(form.Shipping.name.name02) }} +
+
+
+
+ {{ form_widget(form.Shipping.kana.kana01, { type : 'hidden', attr : { value: 'カナ'}}) }} + {{ form_widget(form.Shipping.kana.kana02, { type : 'hidden', attr : { value: 'カナ'}}) }} +
+ +
+
+
+ {{ 'admin.common.postal_symbol'|trans }} + {{ form_widget(form.Shipping.postal_code) }} + {{ form_errors(form.Shipping.postal_code) }} +
+
+
+
+ {{ form_widget(form.Shipping.address.pref) }} + {{ form_errors(form.Shipping.address.pref) }} +
+
+
+
+ {{ form_widget(form.Shipping.address.addr01) }} + {{ form_errors(form.Shipping.address.addr01) }} +
+
+
+
+ {{ form_widget(form.Shipping.address.addr02) }} + {{ form_errors(form.Shipping.address.addr02) }} +
+
+
+
+
+
+
+ +
+ {{ form_widget(form.Shipping.phone_number) }} + {{ form_errors(form.Shipping.phone_number) }} +
+
+ +
+ +
+ {{ form_widget(form.Shipping.company_name) }} + {{ form_errors(form.Shipping.company_name) }} +
+
+
+
+
+
+
+
+ +
+ {{ form_widget(form.Shipping.tracking_number) }} + {{ form_errors(form.Shipping.tracking_number) }} +
+
+
+ +
+ {{ form_widget(form.Shipping.Delivery) }} + {{ form_errors(form.Shipping.Delivery) }} +
+
+
+ +
+ {{ form_widget(form.Shipping.note) }} + {{ form_errors(form.Shipping.note) }} +
+
+
+
+
+ +
+ {{ form_widget(form.Shipping.shipping_delivery_date) }} + {{ form_errors(form.Shipping.shipping_delivery_date) }} +
+
+
+ +
+ {{ form_widget(form.Shipping.DeliveryTime) }} + {{ form_errors(form.Shipping.DeliveryTime) }} +
+
+
+ + {% for fs in form.Shipping if fs.vars.eccube_form_options.auto_render %} + {% if fs.vars.eccube_form_options.form_theme %} + {#{{ dump(fs) }}#} + {% form_theme fs fs.vars.eccube_form_options.form_theme %} + {{ form_row(fs) }} + {% else %} +
+
+
+
+ {{ fs.vars.label|trans }} +
+
+ {{ form_widget(fs) }} + {{ form_errors(fs) }} +
+
+
+
+ {% endif %} + {% endfor %} + +
+ {% endif %} +
+
+
+
+
+
+
+
{{ 'admin.order.product_info'|trans }}
+
+
+
+
+
+
+
+
+ {# 複数配送の場合は商品追加できない #} + {% if not Order.isMultiple %} + {{ 'admin.order.add_product_item'|trans }} + + {% endif %} + {{ 'admin.order.add_other_item'|trans }} + + {{ form_errors(form.OrderItemsErrors) }} +
+
+ +
+
+ + + + + + + + + + + + + + {% for orderItemForm in form.OrderItems %} + {% set OrderItem = orderItemForm.vars.data %} + + {# hidden values #} + {{ form_widget(orderItemForm.ProductClass) }} + {{ form_widget(orderItemForm.order_item_type) }} + + + + + + + + + + + + + + + {% endfor %} + +
{{ 'admin.product.product_name_and_code'|trans }} +
{{ 'admin.order.amount'|trans }}
+
+
{{ 'admin.order.quantity'|trans }}
+
+
{{ 'admin.order.tax_rate'|trans }}
+
+
{{ 'admin.order.tax_type'|trans }}
+
+
{{ 'admin.order.subtotal'|trans }}
+
+

+ {# 商品とポイント値引きは名前変更できない #} + {% if OrderItem.isProduct or OrderItem.isPoint %} + {% if OrderItem.isProduct %} + + {{ OrderItem.product_name }} + + {% else %} + {{ OrderItem.product_name }} + {% endif %} + {{ form_widget(orderItemForm.product_name, { 'type': 'hidden' }) }} + {% else %} + {{ form_widget(orderItemForm.product_name) }} + {% endif %} +

+ + {{ OrderItem.product_code }} + {% if OrderItem.class_category_name1 is not empty %} + / ( + {{ OrderItem.class_name1 }}: + {{ OrderItem.class_category_name1 }} + {% if OrderItem.class_category_name2 is not empty %} + / + {{ OrderItem.class_name2 }}: + {{ OrderItem.class_category_name2 }} + {% endif %} + ) + {% endif %} + + {{ form_errors(orderItemForm.product_name) }} +
+
+ {# ポイント値引きは価格変更できない #} + {% if OrderItem.isPoint %} + {{ form_widget(orderItemForm.price, {'attr': { 'readonly': 'readonly', 'class': 'pointPrice' } }) }} + {% else %} + {{ form_widget(orderItemForm.price) }} + {% endif %} +
({{ OrderItem.TaxDisplayType }})
+ {{ form_errors(orderItemForm.price) }} +
+
+
+ {# 複数配送の場合は商品の個数を変更できない、ポイントの場合も個数を変更できない #} + {% if (Order.isMultiple and OrderItem.isProduct) or OrderItem.isPoint %} + {{ form_widget(orderItemForm.quantity, { 'attr': { 'readonly': 'readonly' } }) }} + {% else %} + {{ form_widget(orderItemForm.quantity) }} + {% endif %} + {{ form_errors(orderItemForm.quantity) }} +
+
+
+ {{ OrderItem.tax_rate }}% +
+
+
+ {{ OrderItem.tax_type }} +
+
+
+ {{ OrderItem.total_price|price }} +
+
+
+ {# 複数配送の場合は商品を削除できない #} + {% if (Order.isMultiple and OrderItem.isProduct) or OrderItem.isPoint %} +
+
+ + + +
+
+ {% else %} +
+
+ + + +
+ + +
+ {% endif %} +
+
+
+ +
+
{{ 'admin.order.subtotal'|trans }}
+
{{ Order.subtotal|price }}
+
+ +
+
{{ 'admin.order.discount'|trans }}
+
{{ (0 - Order.discount)|price }}
+
+ +
+
{{ 'admin.order.delivery_fee'|trans }}
+
{{ Order.delivery_fee_total|price }}
+
+ +
+
{{ 'admin.common.charge'|trans }}
+
{{ Order.charge|price }}
+
+ +
+
{{ 'admin.order.add_point'|trans }}
+
+ + {{ form.vars.value.addpoint|number_format }} + +
+
+ +
+
{{ 'admin.order.use_point'|trans }}
+
+ + {# ポイント機能が有効かつ会員の場合のみポイントを編集可能とする #} + {% if BaseInfo.isOptionPoint and Order.Customer is not null %} + {{ form_widget(form.use_point) }} + {% else %} + {{ form_widget(form.use_point, {'attr': { 'readonly': 'readonly' } }) }} + {% endif %} + {{ form_errors(form.use_point) }} + +
+
+ +
+ +
+
{{ 'admin.order.total'|trans }}
+
{{ Order.total|price }}
+
+ +
+
{{ 'admin.order.payment_total'|trans }}
+
{{ Order.payment_total|price }}
+
+
+
+
+ +
+
+
+
+
{{ 'admin.common.shop_memo'|trans }}
+
+
+
+
+
+
+ {{ form_widget(form.note, {'attr': {'rows': 8}}) }} +
+
+
+ + {% if id is not null %} +
+
+
+
+
{{ 'admin.order.mail_history'|trans }}
+
+
+
+
+
+
+ + + + + + + + + {% for MailHistory in Order.MailHistories %} + + + + + {% endfor %} + +
{{ 'admin.order.mail_send_date'|trans }}{{ 'admin.order.mail_subject'|trans }}
{{ MailHistory.send_date|date_min }} + {{ MailHistory.mail_subject }} + +
+ +
+
+
+ {% endif %} +
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+
+
+
+
+{% endblock %} diff --git a/app/template/admin/Order/index.twig b/app/template/admin/Order/index.twig new file mode 100644 index 000000000..0f282dbb5 --- /dev/null +++ b/app/template/admin/Order/index.twig @@ -0,0 +1,698 @@ +{# +This file is part of EC-CUBE + +Copyright(c) LOCKON CO.,LTD. All Rights Reserved. + +http://www.lockon.co.jp/ + +For the full copyright and license information, please view the LICENSE +file that was distributed with this source code. +#} +{% extends '@admin/default_frame.twig' %} +{% set menus = ['order', 'order_master'] %} + +{% block title %}{{ 'admin.order.order_list'|trans }}{% endblock %} +{% block sub_title %}{{ 'admin.order.order_management'|trans }}{% endblock %} + +{% form_theme searchForm '@admin/Form/bootstrap_4_layout.html.twig' %} + +{% block stylesheet %} + + +{% endblock stylesheet %} + +{% block javascript %} + + +{{ include('@admin/Order/confirmationModal_js.twig') }} +{% endblock javascript %} + +{% block main %} + +
+
+
+
+
+ {{ form_widget(searchForm._token) }} +
+ + {{ form_widget(searchForm.multi) }} + {{ form_errors(searchForm.multi) }} +
+
+
+ +
+ {% set statusForm = searchForm.status %} + + {% for status_id, child in statusForm.children %} +
+ + + {%- if statusForm.vars.order_count[status_id].display -%} + ({{ statusForm.vars.order_count[status_id].count }}) + {%- endif %} +
+ {% endfor %} +
+ {{ form_errors(searchForm.status) }} +
+
+ +
+
+
+
+
+
+ + {{ form_widget(searchForm.name) }} + {{ form_errors(searchForm.name) }} +
+
+
+
+

{{ 'admin.common.payment_method'|trans }}

+ {{ form_widget(searchForm.payment, { 'label_attr': { 'class': 'checkbox-inline'}}) }} + {{ form_errors(searchForm.payment) }} +
+
+
+
+
+
+

{{ 'admin.order.shipping_mail'|trans }}

+ {{ form_widget(searchForm.shipping_mail, { 'label_attr': { 'class': 'checkbox-inline' }}) }} + {{ form_errors(searchForm.shipping_mail) }} +
+ + {{ form_widget(searchForm.kana) }} + {{ form_errors(searchForm.kana) }} +
+
+
+ +
+
+ {{ form_widget(searchForm.order_date_start) }} + {{ form_errors(searchForm.order_date_start) }} +
+
{{ 'admin.common.separator__range'|trans }}
+
+ {{ form_widget(searchForm.order_date_end) }} + {{ form_errors(searchForm.order_date_end) }} +
+
+
+
+
+
+ + {{ form_widget(searchForm.company_name) }} + {{ form_errors(searchForm.company_name) }} +
+
+ +
+
+ {{ form_widget(searchForm.payment_date_start) }} + {{ form_errors(searchForm.payment_date_start) }} +
+
{{ 'admin.common.separator__range'|trans }}
+
+ {{ form_widget(searchForm.payment_date_end) }} + {{ form_errors(searchForm.payment_date_end) }} +
+
+
+
+
+
+ + {{ form_widget(searchForm.email) }} + {{ form_errors(searchForm.email) }} +
+
+ +
+
+ {{ form_widget(searchForm.update_date_start) }} + {{ form_errors(searchForm.update_date_start) }} +
+
{{ 'admin.common.separator__range'|trans }}
+
+ {{ form_widget(searchForm.update_date_end) }} + {{ form_errors(searchForm.update_date_end) }} +
+
+
+
+
+
+ + {{ form_widget(searchForm.phone_number) }} + {{ form_errors(searchForm.phone_number) }} +
+
+ +
+
+
+ {{ form_widget(searchForm.shipping_delivery_date_start) }} + {{ form_errors(searchForm.shipping_delivery_date_start) }} +
+
+
{{ 'admin.common.separator__range'|trans }}
+
+
+ {{ form_widget(searchForm.shipping_delivery_date_end) }} + {{ form_errors(searchForm.shipping_delivery_date_end) }} +
+
+
+
+
+
+
+ + {{ form_widget(searchForm.order_no) }} + {{ form_errors(searchForm.order_no) }} +
+
+ +
+
+
+ {{ form_widget(searchForm.payment_total_start) }} + {{ form_errors(searchForm.payment_total_start) }} +
+
+
{{ 'admin.common.separator__range'|trans }}
+
+
+ {{ form_widget(searchForm.payment_total_end) }} + {{ form_errors(searchForm.payment_total_end) }} +
+
+
+
+
+
+
+
+
+

{{ 'admin.order.tracking_number'|trans }}

+ {{ form_widget(searchForm.tracking_number) }} + {{ form_errors(searchForm.tracking_number) }} +
+
+
+
+ + {{ form_widget(searchForm.buy_product_name) }} + {{ form_errors(searchForm.buy_product_name) }} +
+
+ + {#
#} + {#
#} + {#
#} + {#
#} + {#

{{ 'admin.order.shipping_mail'|trans }}

#} + {#{{ form_widget(searchForm.shipping_mail, { 'label_attr': { 'class': 'checkbox-inline' }}) }}#} + {#{{ form_errors(searchForm.shipping_mail) }}#} + {#
#} + {#
#} + {#
#} + {#
#} + {#
#} + + {# エンティティ拡張の自動出力 #} + {% for f in searchForm if f.vars.eccube_form_options.auto_render %} + {# TODO 1項目1行になるのを改善 #} +
+ {% if f.vars.eccube_form_options.form_theme %} + {% form_theme f f.vars.eccube_form_options.form_theme %} + {{ form_row(f) }} + {% else %} +
+
+ + {{ form_widget(f) }} + {{ form_errors(f) }} +
+
+ {% endif %} +
+ {% endfor %} +
+
+
+
+
+ + {% if pagination %} + {{ 'admin.common.search_result'|trans({"%count%":pagination.totalItemCount})|raw }} + {% endif %} +
+
+
+
+
+ {{ include('@admin/search_items.twig', { 'form': searchForm }, ignore_missing = true) }} +
+
+
+ + +
+
+
+ {% if pagination and pagination.totalItemCount %} + +
+ +
+
+
+
+ + + + {# TODO 削除処理は将来バージョンで対応 #} +
+
+
+ +
+ +
+
+
+
+
+ +
+
+
+
+ + +
+ +
+ + +
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + {% for Order in pagination %} + {% for Shipping in Order.Shippings %} + + + + + + + + + + + + + {% endfor %} + {% endfor %} + +
+ + {{ 'admin.order.orderer'|trans }}{{ 'admin.common.payment_method'|trans }}{{ 'admin.order.order_status'|trans }}{{ 'admin.order.purchase_price'|trans }}{{ 'admin.order.message_short'|trans }}{{ 'admin.order.shipping_status'|trans }}{{ 'admin.order.tracking_number'|trans }}{{ 'admin.order.delivery'|trans }}
+ + + {{ Order.order_no }} +
+ {{ Order.name01|format_name(Order.name02) }}
{{ Order.order_date|date_min }}
+
+ {{ Order.payment_method }} + + {{ Order.OrderStatus }} + + {{ Order.payment_total|price }}
+ {{ Order.payment_date ? Order.payment_date|date_day : 'admin.order.not_payment'|trans }} +
+ {% if Order.message is not empty %} + + + + {% elseif Order.note is not empty %} + + + + {% endif %} + + {% if Order.is_multiple %} + + {% if Shipping.shipping_date %} + {{ Shipping.shipping_date|date_day }} + {% else %} + {{ 'admin.order.unshipped'|trans }} + {% endif %} + + {% else %} + {{ Shipping.shipping_date ? Shipping.shipping_date|date_day : 'admin.order.unshipped'|trans }} + {% endif %} + {% if Shipping.mail_send_date %} + {% set send_mail_date = Shipping.mail_send_date|date_min %} + + {% endif %} + +
+ + + + +
+
+ {{ Shipping.name01|format_name(Shipping.name02) }}
+ {{ Shipping.Pref.name }} +
+
+
+ + + +
+
+ + + +
+
+ + + +
+
+
+
+
+
+ {% if pagination.totalItemCount > 0 %} + {% include "@admin/pager.twig" with { 'pages' : pagination.paginationData, 'routes' : 'admin_order_page' } %} + {% endif %} +
+
+
+ {# 検索条件エラー時 #} + {% elseif has_errors %} +
+
+
{{ 'admin.common.search_invalid_condition'|trans }}
+
{{ 'admin.common.search_try_change_condition'|trans }}
+
+
+ {# 検索結果なし #} + {% else %} +
+
+
{{ 'admin.common.search_no_result'|trans }}
+
{{ 'admin.common.search_try_change_condition'|trans }}
+
{{ 'admin.common.search_try_advanced_search'|trans }}
+
+
+ {% endif %} + + + + + + + +
+
+
+{% endblock %} \ No newline at end of file diff --git a/app/template/admin/Order/mail.twig b/app/template/admin/Order/mail.twig new file mode 100644 index 000000000..cc61fac47 --- /dev/null +++ b/app/template/admin/Order/mail.twig @@ -0,0 +1,166 @@ +{# +This file is part of EC-CUBE + +Copyright(c) LOCKON CO.,LTD. All Rights Reserved. + +http://www.lockon.co.jp/ + +For the full copyright and license information, please view the LICENSE +file that was distributed with this source code. +#} +{% extends '@admin/default_frame.twig' %} + +{% set menus = ['order', 'order_edit'] %} + +{% block title %}{{ 'admin.order.mail'|trans }}{% endblock %} +{% block sub_title %}{{ 'admin.order.order_management'|trans }}{% endblock %} + +{% form_theme form '@admin/Form/bootstrap_4_horizontal_layout.html.twig' %} + +{% block javascript %} + + + +{% endblock javascript %} + +{% block main %} +
+
+
+
+
+
+
+
{{ 'admin.order.mail_destination_info'|trans }}
+
+
+
+
+
+
+
+
{{ 'admin.order.order_no'|trans }}
+
{{ Order.id }}
+
{{ 'admin.order.purchase_price'|trans }}
+
{{ Order.payment_total|price }}
+
+
+
{{ 'admin.order.orderer'|trans }}
+
{{ Order.name01 }} {{ Order.name02 }}({{ Order.kana01 }} {{ Order.kana02 }})
{{ format_address(Order.addr01, Order.addr02, Order.pref, Order.postal_code) }}
+
{{ 'admin.order.purchase_product'|trans }}
+
+ {% if Order.productOrderItems %} + {{ Order.productOrderItems[0].productName }} + {% if Order.productOrderItems|length > 2 %} + {{ 'admin.order.mail_purchase_product_count'|trans({'%count%':Order.productOrderItems|length - 1})|raw }} + {% endif %} + {% endif %} +
+
+
+
{{ 'admin.order.order_status'|trans }}
+
{{ Order.OrderStatus }}
+
+
+
+
+ +
+ {{ form_widget(form._token) }} + + +
+
+
+
{{ 'admin.order.mail_mail_info'|trans }}
+
+
+
+
+
+
+
+
+ {{ 'admin.order.mail_template'|trans }} +
+
+
+ {{ form_widget(form.template, {'id': 'template-change'}) }} + {{ form_errors(form.template) }} +
+
+
+
+
+ {{ 'admin.order.mail_subject'|trans }} +
+ {{ 'admin.common.required'|trans }} +
+
+ {{ form_widget(form.mail_subject) }} + {{ form_errors(form.mail_subject) }} +
+
+
+
{{ 'admin.order.mail_body'|trans }}
+
+
+ {{ form_label(form.tpl_data) }} +
+
{{ form_widget(form.tpl_data) }}
+ {{ form_errors(form.tpl_data) }} +
+
+
+
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+ +{% endblock %} diff --git a/app/template/admin/Order/mail_confirm.twig b/app/template/admin/Order/mail_confirm.twig new file mode 100644 index 000000000..fee77cbb7 --- /dev/null +++ b/app/template/admin/Order/mail_confirm.twig @@ -0,0 +1,141 @@ +{# +This file is part of EC-CUBE + +Copyright(c) LOCKON CO.,LTD. All Rights Reserved. + +http://www.lockon.co.jp/ + +For the full copyright and license information, please view the LICENSE +file that was distributed with this source code. +#} +{% extends '@admin/default_frame.twig' %} + +{% set menus = ['order', 'order_master'] %} + +{% block title %}{{'admin.order.mail'|trans}}{% endblock %} +{% block sub_title %}{{'admin.order.order_management'|trans}}{% endblock %} + +{% form_theme form '@admin/Form/bootstrap_4_horizontal_layout.html.twig' %} + +{% block javascript %} + +{% endblock javascript %} + +{% block main %} +
+
+
+
+
+
+
+
{{ 'admin.order.mail_destination_info'|trans }}
+
+
+
+
+
+
+
+
{{ 'admin.order.order_no'|trans }}
+
{{ Order.id }}
+
{{ 'admin.order.purchase_price'|trans }}
+
{{ Order.payment_total|price }}
+
+
+
{{ 'admin.order.orderer'|trans }}
+
{{ Order.name01 }} {{ Order.name02 }}({{ Order.kana01 }} {{ Order.kana02 }})
{{ format_address(Order.addr01, Order.addr02, Order.pref, Order.postal_code) }}
+
{{ 'admin.order.purchase_product'|trans }}
+
+ {% if Order.productOrderItems %} + {{ Order.productOrderItems[0].productName }} + {% if Order.productOrderItems|length > 2 %} + {{ 'admin.order.mail_purchase_product_count'|trans({'%count%':Order.productOrderItems|length - 1})|raw }} + {% endif %} + {% endif %} +
+
+
+
{{ 'admin.order.order_status'|trans }}
+
{{ Order.OrderStatus }}
+
+
+
+
+ +
+ {{ form_widget(form._token) }} + + +
+
+
+
{{ 'admin.order.mail_mail_info'|trans }}
+
+
+
+
+
+
+
+
{{ 'admin.order.mail_template'|trans }}
+
+
+ {{ form.template.vars.data }} + {{ form_widget(form.template, { type : 'hidden' }) }} +
+
+
+
{{ 'admin.order.mail_subject'|trans }}{{ 'admin.common.required'|trans }}
+
+ {{ form.mail_subject.vars.data }} + {{ form_widget(form.mail_subject, { type : 'hidden' }) }} +
+
+
+
{{ 'admin.order.mail_body'|trans }}
+
+
+ {{ form.tpl_data.vars.data|trans|raw|nl2br }} +
{{ form_widget(form.tpl_data) }}
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+{% endblock %} diff --git a/app/template/admin/Order/mail_view.twig b/app/template/admin/Order/mail_view.twig new file mode 100644 index 000000000..09bd7b6d4 --- /dev/null +++ b/app/template/admin/Order/mail_view.twig @@ -0,0 +1,32 @@ +{# +This file is part of EC-CUBE + +Copyright(c) LOCKON CO.,LTD. All Rights Reserved. + +http://www.lockon.co.jp/ + +For the full copyright and license information, please view the LICENSE +file that was distributed with this source code. +#} + + +{% if html_body|length > 0 %} + {{ html_body|trans|raw }} +{% else %} + {{ body|raw|nl2br }} +{% endif %} diff --git a/app/template/admin/Order/order_item_prototype.twig b/app/template/admin/Order/order_item_prototype.twig new file mode 100644 index 000000000..9d806c1d6 --- /dev/null +++ b/app/template/admin/Order/order_item_prototype.twig @@ -0,0 +1,20 @@ +{# +This file is part of EC-CUBE + +Copyright(c) LOCKON CO.,LTD. All Rights Reserved. + +http://www.lockon.co.jp/ + +For the full copyright and license information, please view the LICENSE +file that was distributed with this source code. +#} + + + + {{ form_widget(orderItemForm.product_name) }} + {{ form_widget(orderItemForm.ProductClass) }} + {{ form_widget(orderItemForm.order_item_type) }} + {{ form_widget(orderItemForm.price) }} + {{ form_widget(orderItemForm.quantity) }} + + diff --git a/app/template/admin/Order/order_item_type.twig b/app/template/admin/Order/order_item_type.twig new file mode 100644 index 000000000..6d07f91a6 --- /dev/null +++ b/app/template/admin/Order/order_item_type.twig @@ -0,0 +1,58 @@ +{# +This file is part of EC-CUBE + +Copyright(c) LOCKON CO.,LTD. All Rights Reserved. + +http://www.lockon.co.jp/ + +For the full copyright and license information, please view the LICENSE +file that was distributed with this source code. +#} + + + + + + + + + + + + + {% for OrderItemType in OrderItemTypes %} + + + + + + + {% endfor %} + +
{{ 'admin.order.order_item_type'|trans }}
{{ OrderItemType.name }} + +
+ diff --git a/app/template/admin/Order/order_pdf.twig b/app/template/admin/Order/order_pdf.twig new file mode 100644 index 000000000..0e715c5fc --- /dev/null +++ b/app/template/admin/Order/order_pdf.twig @@ -0,0 +1,190 @@ +{# +This file is part of EC-CUBE + +Copyright(c) LOCKON CO.,LTD. All Rights Reserved. + +http://www.lockon.co.jp/ + +For the full copyright and license information, please view the LICENSE +file that was distributed with this source code. +#} +{% extends '@admin/default_frame.twig' %} + +{% set menus = ['order', 'order_master'] %} + +{% block title %}{{ 'admin.order.output_delivery_note_short'|trans }}{% endblock %} +{% block sub_title %}{{ 'admin.order.order_management'|trans }}{% endblock %} + +{% form_theme form '@admin/Form/bootstrap_4_horizontal_layout.html.twig' %} + +{% block stylesheet %} + + +{% endblock stylesheet %} + +{% block javascript %} + +{% endblock %} + +{% block main %} +
+ {{ form_widget(form._token) }} +
+
+
+
+
+

{{ 'admin.order.output_delivery_note'|trans }}

+
+ +
+
+ + {{ form_widget(form.issue_date) }} + {{ form_errors(form.issue_date) }} +
+ +
+ + {{ form_widget(form.ids) }} + {{ form_errors(form.ids) }} +
+ +
+ + {{ form_widget(form.title) }} + {{ form_errors(form.title) }} +
+ +
+ + {{ form_widget(form.download_kind) }} + {{ form_errors(form.download_kind) }} +
+ +
{{ 'admin.order.delivery_note_message'|trans }}
+ +
+ + {{ form_widget(form.message1) }} + {{ form_errors(form.message1) }} +
+ +
+ + {{ form_widget(form.message2) }} + {{ form_errors(form.message2) }} +
+ +
+ + {{ form_widget(form.message3) }} + {{ form_errors(form.message3) }} +
+ +
{{ 'admin.order.delivery_note_memo'|trans }}
+
+ + {{ form_widget(form.note1) }} + {{ form_errors(form.note1) }} +
+ +
+ + {{ form_widget(form.note2) }} + {{ form_errors(form.note2) }} +
+ +
+ + {{ form_widget(form.note3) }} + {{ form_errors(form.note3) }} +
+ +
+ {{ form_widget(form.default) }} + {{ form_errors(form.default) }} +
+ +
+
+
+
+
+ +
+
+
+
+
+ +
+
+
+
+
+ +
+
+
+
+
+
+
+{% endblock %} diff --git a/app/template/admin/Order/search_customer.twig b/app/template/admin/Order/search_customer.twig new file mode 100644 index 000000000..b1cc2cfe8 --- /dev/null +++ b/app/template/admin/Order/search_customer.twig @@ -0,0 +1,90 @@ +{# +This file is part of EC-CUBE + +Copyright(c) LOCKON CO.,LTD. All Rights Reserved. + +http://www.lockon.co.jp/ + +For the full copyright and license information, please view the LICENSE +file that was distributed with this source code. +#} + + + + + + + + + + + + + + {% for Customer in data %} + + + + + + + + {% endfor %} + +
{{ 'admin.common.id'|trans }}{{ 'admin.common.name'|trans }}{{ 'admin.common.phone_number'|trans }}{{ 'admin.common.mail_address'|trans }} 
{{ Customer.id }}{{ Customer.name }}{{ Customer.phone_number }}{{ Customer.email }} +
+ +
+
+{% if pagination.totalItemCount > 0 %} +
+ {% include '@admin/pager.twig' with {'pages': pagination.paginationData, 'routes': 'admin_order_search_customer_html_page'} %} +
+{% endif %} diff --git a/app/template/admin/Order/search_product.twig b/app/template/admin/Order/search_product.twig new file mode 100644 index 000000000..a7aba804e --- /dev/null +++ b/app/template/admin/Order/search_product.twig @@ -0,0 +1,192 @@ +{# +This file is part of EC-CUBE + +Copyright(c) LOCKON CO.,LTD. All Rights Reserved. + +http://www.lockon.co.jp/ + +For the full copyright and license information, please view the LICENSE +file that was distributed with this source code. +#} + + + + + + + + + + + + + + {% for Product in pagination %} + + {% set form = forms[Product.id] %} + + + + + + + + {% endfor %} + +
{{ 'admin.product.product_id'|trans }}{{ 'admin.product.product_name_and_code'|trans }}{{ 'admin.product.product_class__short'|trans }}
+ {{ Product.id }} + +

{{ Product.name }}

+ + {% if Product.hasProductClass %} + {{ Product.code_min }}~{{ Product.code_max }} + {% else %} + {{ Product.code_min }} + {% endif %} + +
+ {% if form.classcategory_id1 is defined %} +
+
{{ form_label(form.classcategory_id1) }}
+
+ {{ form_widget(form.classcategory_id1, { attr : { 'onchange' : "fnSetClassCategory2(this," ~ Product.id ~ ")" } } ) }} +
+
+ {% endif %} + {% if form.classcategory_id2 is defined %} +
+
{{ form_label(form.classcategory_id2) }}
+
+ {{ form_widget(form.classcategory_id2, {'id': ''}) }} +
+
+ {% endif %} +
+ +
+{% if pagination.totalItemCount > 0 %} +
+ {% include "@admin/pager.twig" with {'pages': pagination.paginationData, 'routes': 'admin_order_search_product_page'} %} +
+{% endif %} + diff --git a/app/template/admin/Order/shipping.twig b/app/template/admin/Order/shipping.twig new file mode 100644 index 000000000..195b99d19 --- /dev/null +++ b/app/template/admin/Order/shipping.twig @@ -0,0 +1,710 @@ +{# +This file is part of EC-CUBE + +Copyright(c) LOCKON CO.,LTD. All Rights Reserved. + +http://www.lockon.co.jp/ + +For the full copyright and license information, please view the LICENSE +file that was distributed with this source code. +#} +{% extends '@admin/default_frame.twig' %} + +{% set menus = ['order', 'order_edit'] %} + +{% block title %}{{ 'admin.order.shipping_registration'|trans }}{% endblock %} +{% block sub_title %}{{ 'admin.order.order_management'|trans }}{% endblock %} + +{% form_theme form '@admin/Form/bootstrap_4_horizontal_layout.html.twig' %} +{% form_theme searchProductModalForm '@admin/Form/bootstrap_4_horizontal_layout.html.twig' %} + +{% block javascript %} + + + + + {{ include('@admin/Order/confirmationModal_js.twig') }} + +{% endblock javascript %} + +{% block main %} +
+ {{ form_widget(form._token) }} + {{ form_widget(form.add_shipping) }} + + + + + + + +
+
+
+ {% for shippingForm in form.shippings %} +
+ + +
+
+
+
+ {{ 'admin.order.shipping__card_title'|trans }}({{ loop.index }}) +
+
+
+ {% if form.shippings|length > 1 %} + + + + {{ 'admin.order.delete_shipping'|trans }} + + + {% endif %} + +
+
+
+
+
+
+
+ {% if shippingForm.vars.value.id %} + {# ボタンは登録済みの出荷のみ表示する #} + + {{ 'admin.order.output_delivery_note'|trans }} + + + {% else %} + {# 未登録の出荷 #} + {% endif %} +
+
+ +
+
+
+ +
+
+
+ {{ form_widget(shippingForm.name.name01) }} + {{ form_errors(shippingForm.name.name01) }} +
+
+ {{ form_widget(shippingForm.name.name02) }} + {{ form_errors(shippingForm.name.name02) }} +
+
+
+
+ {{ form_widget(shippingForm.kana.kana01, { type : 'hidden', attr : { value: 'カナ'}}) }} + {{ form_widget(shippingForm.kana.kana02, { type : 'hidden', attr : { value: 'カナ'}}) }} +
+ +
+
+
+ {{ 'admin.common.postal_symbol'|trans }} + {{ form_widget(shippingForm.postal_code) }} + {{ form_errors(shippingForm.postal_code) }} +
+
+
+
+ {{ form_widget(shippingForm.address.pref) }} + {{ form_errors(shippingForm.address.pref) }} +
+
+
+
+ {{ form_widget(shippingForm.address.addr01) }} + {{ form_errors(shippingForm.address.addr01) }} +
+
+
+
+ {{ form_widget(shippingForm.address.addr02) }} + {{ form_errors(shippingForm.address.addr02) }} +
+
+
+
+
+
+
+ +
+ {{ form_widget(shippingForm.phone_number) }} + {{ form_errors(shippingForm.phone_number) }} +
+
+ +
+ +
+ {{ form_widget(shippingForm.company_name) }} + {{ form_errors(shippingForm.company_name) }} +
+
+
+
+
+
+
+
+
+
+ +
+ {{ form_widget(shippingForm.tracking_number) }} + {{ form_errors(shippingForm.tracking_number) }} +
+
+
+ +
+ {{ form_widget(shippingForm.Delivery) }} + {{ form_errors(shippingForm.Delivery) }} +
+
+
+
+
+ +
+ {{ form_widget(shippingForm.shipping_delivery_date) }} + {{ form_errors(shippingForm.shipping_delivery_date) }} +
+
+
+ +
+ {{ form_widget(shippingForm.DeliveryTime) }} + {{ form_errors(shippingForm.DeliveryTime) }} +
+
+
+ +
+ {% if shippingForm.vars.value.shipping_date %} + {# 登録済みの出荷で出荷日が設定されている場合は出荷日を表示する #} + {{ shippingForm.vars.value.shipping_date|date_min }} + {% elseif shippingForm.vars.value.id %} + {# 登録済みの出荷で出荷日が設定されていない場合 #} + + + {% else %} + {# 未登録の出荷 #} + {% endif %} +
+
+
+ +
+ {{ shippingForm.vars.value.id ? shippingForm.vars.value.update_date|date_min }} +
+
+
+ +
+ {{ shippingForm.vars.value.id ? shippingForm.vars.value.creator }} +
+
+
+
+
+
+
+ + {% for fs in shippingForm if fs.vars.eccube_form_options.auto_render %} + {% if fs.vars.eccube_form_options.form_theme %} + {% form_theme fs fs.vars.eccube_form_options.form_theme %} + {{ form_row(fs) }} + {% else %} +
+
+
+
+ {{ fs.vars.label|trans }} +
+
+ {{ form_widget(fs) }} + {{ form_errors(fs) }} +
+
+
+
+ {% endif %} + {% endfor %} + + +
+
+ + + + {{ 'admin.order.add_other_item'|trans }} + {# 明細行のエラー表示 #} + {{ form_errors(shippingForm.OrderItemsErrors) }} +
+
+ +
+ + + + + + + + + + + + + + {% set shippingNo = loop.index0 %} + {% for orderItemForm in shippingForm.OrderItems %} + {% set OrderItem = orderItemForm.vars.data %} + + {# hidden values #} + {{ form_widget(orderItemForm.ProductClass) }} + {{ form_widget(orderItemForm.order_item_type) }} + + + + + + + + + {% endfor %} + +
{{ 'admin.product.product_name_and_code'|trans }} +
{{ 'admin.order.amount'|trans }}
+
+
{{ 'admin.order.quantity'|trans }}
+
+
{{ 'admin.order.tax_rate'|trans }}
+
+
{{ 'admin.order.tax_type'|trans }}
+
+
{{ 'admin.order.subtotal'|trans }}
+
+

+ {% if OrderItem.OrderItemType.isProduct %} + {{ OrderItem.product_name }} + {{ form_widget(orderItemForm.product_name, { 'type': 'hidden' }) }} + {% else %} + {{ form_widget(orderItemForm.product_name) }} + {% endif %} +

+ + {{ OrderItem.product_code }} + {% if OrderItem.class_category_name1 is not empty %} + / ( + {{ OrderItem.class_name1 }}: + {{ OrderItem.class_category_name1 }} + {% if OrderItem.class_category_name2 is not empty %} + / + {{ OrderItem.class_name2 }}: + {{ OrderItem.class_category_name2 }} + {% endif %} + ) + {% endif %} + + {{ form_errors(orderItemForm.product_name) }} +
+
+ {{ form_widget(orderItemForm.price, {'attr': { 'readonly': 'readonly' } }) }} +
({{ OrderItem.TaxDisplayType }})
+ {{ form_errors(orderItemForm.price) }} +
+
+
+ {{ form_widget(orderItemForm.quantity) }} + {{ form_errors(orderItemForm.quantity) }} +
+
+
+ {{ OrderItem.tax_rate }}% +
+
+
+ {{ OrderItem.tax_type }} +
+
+
+ {{ OrderItem.total_price|price }} +
+
+
+
+
+ + + +
+ + +
+
+
+
+
+
+
+ +
+
+
+ +
+ {{ form_widget(shippingForm.note, { attr: { rows: 8 }}) }} + {{ form_errors(shippingForm.note) }} +
+
+
+
+
+
+
+ {% endfor %} + +
+ +
+
+
+
+ + +
+
+
+ + + +
+
+
+ +
+
+
+
+
+
+
+{% endblock %} diff --git a/app/template/admin/Product/category.twig b/app/template/admin/Product/category.twig new file mode 100644 index 000000000..b4389b35e --- /dev/null +++ b/app/template/admin/Product/category.twig @@ -0,0 +1,379 @@ +{# +This file is part of EC-CUBE + +Copyright(c) LOCKON CO.,LTD. All Rights Reserved. + +http://www.lockon.co.jp/ + +For the full copyright and license information, please view the LICENSE +file that was distributed with this source code. +#} +{% extends '@admin/default_frame.twig' %} + +{% set menus = ['product', 'class_category'] %} + +{% block title %}{{ 'admin.product.category_management'|trans }}{% endblock %} +{% block sub_title %}{{ 'admin.product.product_management'|trans }}{% endblock %} + +{% form_theme form '@admin/Form/bootstrap_4_horizontal_layout.html.twig' %} + +{% block javascript %} + + + + + +{% endblock %} + +{% block stylesheet %} + {#TODO: Move to css file#} + +{% endblock %} + +{% block main %} +
+
+
+
+ +
+ +
+
+
+
+
+
+
+
+
+
    +
  • +
    + {% if TargetCategory.hierarchy < eccube_config.eccube_category_nest_level %} + {{ form_widget(form._token) }} +
    +
    + {{ form_widget(form.name) }} + {{ form_errors(form.name) }} +
    +
    + +
    +
    + {# エンティティ拡張の自動出力 #} + {% for f in form if f.vars.eccube_form_options.auto_render %} + {% if f.vars.eccube_form_options.form_theme %} + {% form_theme f f.vars.eccube_form_options.form_theme %} + {{ form_row(f) }} + {% else %} +
    +
    + {{ f.vars.label|trans }} +
    +
    + {{ form_widget(f) }} + {{ form_errors(f) }} +
    +
    + {% endif %} + {% endfor %} + {% endif %} +
    +
  • +
  • +
    +
     
    +
    {{ 'admin.common.id'|trans }}
    +
    {{ 'admin.product.category'|trans }}
    +
    +
  • + {% if Categories|length > 0 %} + {% for Category in Categories %} +
  • + {% if Category.id != TargetCategory.id %} +
    +
    +
    {{ Category.id }}
    + + +
    +
    + {{ form_widget(forms[Category.id]._token) }} +
    + {{ form_widget(forms[Category.id].name, {'attr': {'data-origin-value': forms[Category.id].name.vars.value}}) }} + {{ form_errors(forms[Category.id].name) }} +
    +
    + +
    +
    + +
    + {# エンティティ拡張の自動出力 #} + {% for f in forms[Category.id] if f.vars.eccube_form_options.auto_render %} +
    +
    +
    + {{ f.vars.label|trans }} +
    +
    + {{ form_widget(f) }} + {{ form_errors(f) }} +
    +
    +
    + {% endfor %} +
    + {% endif %} +
  • + {% endfor %} + {% endif %} +
+ + +
+
+
+

{{ 'admin.common.drag_and_drop_description'|trans }}

+
+
+ + {% macro tree(Category, TargetId, level, Ids) %} + {% import _self as selfMacro %} + {% set level = level + 1 %} +
  • + + + {{ Category.name }} + ({{ Category.children|length }}) + {% if Category.children|length > 0 %} + + {% endif %} +
  • + {% endmacro %} + +
    +
    +
    + +
    +
    + {% import _self as renderMacro %} + {% for TopCategory in TopCategories %} +
      + {{ renderMacro.tree(TopCategory, TargetCategory.Parent.id | default(null), 0, Ids) }} +
    + {% endfor %} +
    +
    +
    +
    +
    +
    +{% endblock %} diff --git a/app/template/admin/Product/class_category.twig b/app/template/admin/Product/class_category.twig new file mode 100644 index 000000000..e28f4cbc1 --- /dev/null +++ b/app/template/admin/Product/class_category.twig @@ -0,0 +1,287 @@ +{# +This file is part of EC-CUBE + +Copyright(c) LOCKON CO.,LTD. All Rights Reserved. + +http://www.lockon.co.jp/ + +For the full copyright and license information, please view the LICENSE +file that was distributed with this source code. +#} +{% extends '@admin/default_frame.twig' %} + +{% set menus = ['product', 'class_name'] %} + +{% block title %}{{ 'admin.product.class_category_management'|trans }}{% endblock %} +{% block sub_title %}{{ 'admin.product.product_management'|trans }}{% endblock %} + +{% form_theme form '@admin/Form/bootstrap_4_horizontal_layout.html.twig' %} + +{% block stylesheet %} + +{% endblock stylesheet %} +{% block javascript %} + + + + + +{% endblock %} + +{% block main %} +
    +
    +
    +
    +
    +
    +
    {{ 'admin.product.class_name'|trans }}
    +
    +
    +
    +
    +
    {{ 'admin.product.class_name'|trans }}
    +
    {{ ClassName.name }}
    +
    +
    +
    {{ 'admin.product.class_name__backend_name'|trans }}
    +
    {{ ClassName.backend_name }}
    +
    +
    +
    +
    +
    {{ 'admin.product.class_category'|trans }}
    +
    +
    + +
      +
    • +
      +
      {{ 'admin.product.class_category_name__short'|trans }}
      +
      + {{ form_widget(form._token) }} + {{ form_widget(form.name) }} + {{ form_errors(form.name) }} +
      +
      {{ 'admin.product.class_category__backend_name'|trans }}
      +
      + {{ form_widget(form.backend_name) }} + {{ form_errors(form.backend_name) }} +
      +
      + +
      +
      +
    • +
    • +
      +
       
      +
      {{ 'admin.common.id'|trans }}
      +
      {{ 'admin.product.class_category'|trans }}
      +
      +
    • + {% for ClassCategory in ClassCategories %} +
    • +
      +
      +
      {{ ClassCategory.id }}
      +
      {{ ClassCategory.name }} [{{ 'admin.product.class_category__backend_name'|trans }}{{ 'admin.common.separator__colon'|trans }}{{ ClassCategory.backend_name }}]
      + +
      +
      + {{ form_widget(forms[ClassCategory.id]._token) }} +
      + {{ form_widget(forms[ClassCategory.id].name, {'attr': {'data-origin-value': forms[ClassCategory.id].name.vars.value}}) }} + {{ form_errors(forms[ClassCategory.id].name) }} +
      +
      {{ 'admin.product.class_category__backend_name'|trans }}
      +
      + {{ form_widget(forms[ClassCategory.id].backend_name, {'attr': {'data-origin-value': forms[ClassCategory.id].backend_name.vars.value}}) }} + {{ form_errors(forms[ClassCategory.id].backend_name) }} +
      + {{ form_widget(forms[ClassCategory.id].visible, {'attr': {'class': 'd-none'}}) }} +
      + +
      +
      + +
      +
      +
    • + {% endfor %} +
    + + +
    +
    +
    +

    {{ 'admin.common.drag_and_drop_description'|trans }}

    +
    +
    +
    + +
    +
    +{% endblock %} diff --git a/app/template/admin/Product/class_name.twig b/app/template/admin/Product/class_name.twig new file mode 100644 index 000000000..c4e753ded --- /dev/null +++ b/app/template/admin/Product/class_name.twig @@ -0,0 +1,265 @@ +{# +This file is part of EC-CUBE + +Copyright(c) LOCKON CO.,LTD. All Rights Reserved. + +http://www.lockon.co.jp/ + +For the full copyright and license information, please view the LICENSE +file that was distributed with this source code. +#} +{% extends '@admin/default_frame.twig' %} + +{% set menus = ['product', 'class_name'] %} + +{% block title %}{{ 'admin.product.class_management'|trans }}{% endblock %} +{% block sub_title %}{{ 'admin.product.product_management'|trans }}{% endblock %} + +{% form_theme form '@admin/Form/bootstrap_4_horizontal_layout.html.twig' %} +{% block stylesheet %} + +{% endblock stylesheet %} + +{% block javascript %} + + + + + + +{% endblock %} + +{% block main %} +
    +
    +
    +
    +
    +
    +
      +
    • +
      +
      {{ 'admin.product.class_name'|trans }}
      +
      + {{ form_widget(form._token) }} + {{ form_widget(form.name) }} + {{ form_errors(form.name) }} +
      +
      + {{ 'admin.product.class_name__backend_name'|trans }} + +
      +
      + {{ form_widget(form.backend_name) }} + {{ form_errors(form.backend_name) }} +
      +
      + +
      +
      +
    • +
    • +
      +
       
      +
      {{ 'admin.common.id'|trans }}
      +
      {{ 'admin.product.class_management'|trans }}
      +
      +
    • + {% for ClassName in ClassNames %} +
    • + +
      + {{ form_widget(forms[ClassName.id]._token) }} +
      {{ 'admin.product.class_name'|trans }}
      +
      + {{ form_widget(forms[ClassName.id].name, {'attr': {'data-origin-value': forms[ClassName.id].name.vars.value}}) }} + {{ form_errors(forms[ClassName.id].name) }} +
      +
      {{ 'admin.product.class_name__backend_name'|trans }}
      +
      + {{ form_widget(forms[ClassName.id].backend_name, {'attr': {'data-origin-value': forms[ClassName.id].backend_name.vars.value}}) }} + {{ form_errors(forms[ClassName.id].backend_name) }} +
      +
      + +
      +
      + +
      +
      +
    • + {% endfor %} +
    + + +
    +
    +
    +

    {{ 'admin.common.drag_and_drop_description'|trans }}

    +
    +
    +
    +{% endblock %} diff --git a/app/template/admin/Product/csv_category.twig b/app/template/admin/Product/csv_category.twig new file mode 100644 index 000000000..49c0a0b65 --- /dev/null +++ b/app/template/admin/Product/csv_category.twig @@ -0,0 +1,129 @@ +{# +This file is part of EC-CUBE + +Copyright(c) LOCKON CO.,LTD. All Rights Reserved. + +http://www.lockon.co.jp/ + +For the full copyright and license information, please view the LICENSE +file that was distributed with this source code. +#} +{% extends '@admin/default_frame.twig' %} + +{% set menus = ['product', 'category_csv_import'] %} + +{% block title %}{{ 'admin.product.category_csv_upload'|trans }}{% endblock %} +{% block sub_title %}{{ 'admin.product.product_management'|trans }}{% endblock %} + +{% form_theme form '@admin/Form/bootstrap_4_horizontal_layout.html.twig' %} + +{% block javascript %} + + +{% endblock javascript %} +{% block main %} +
    +
    +
    +
    +
    +
    {{ 'admin.common.csv_upload'|trans }}
    +
    +
    +
    +
    {{ 'admin.common.csv_select'|trans }}
    +
    +
    + {{ form_widget(form._token) }} +
    + {{ 'admin.common.file_select'|trans }} + {{ 'admin.common.file_select_empty'|trans }} + {{ form_widget(form.import_file, {'attr': {'accept': 'text/csv,text/tsv', 'class': 'd-none'}}) }} + {{ form_errors(form.import_file) }} +
    + + {% for error in errors %} +
    {{ error }}
    + {% endfor %} +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    {{ 'admin.common.csv_format'|trans }}
    +
    + +
    +
    +
    + + + {% for header, key in headers %} + + + + + {% endfor %} + +
    {{ header }} + {% if key.required %} + {{ 'admin.common.required'|trans }} + {% endif %} + + {% if key.description %} + {{ key.description|trans|raw }} + {% endif %} +
    +
    +
    +
    +
    +
    +{% endblock %} diff --git a/app/template/admin/Product/csv_product.twig b/app/template/admin/Product/csv_product.twig new file mode 100644 index 000000000..9c2f47fe0 --- /dev/null +++ b/app/template/admin/Product/csv_product.twig @@ -0,0 +1,128 @@ +{# +This file is part of EC-CUBE + +Copyright(c) LOCKON CO.,LTD. All Rights Reserved. + +http://www.lockon.co.jp/ + +For the full copyright and license information, please view the LICENSE +file that was distributed with this source code. +#} +{% extends '@admin/default_frame.twig' %} + +{% set menus = ['product', 'product_csv_import'] %} + +{% block title %}{{ 'admin.product.product_csv_upload'|trans }}{% endblock %} +{% block sub_title %}{{ 'admin.product.product_management'|trans }}{% endblock %} + +{% form_theme form '@admin/Form/bootstrap_4_horizontal_layout.html.twig' %} + +{% block javascript %} + + +{% endblock javascript %} + +{% block main %} +
    +
    +
    +
    +
    +
    {{ 'admin.common.csv_upload'|trans }}
    +
    +
    +
    +
    {{ 'admin.common.csv_select'|trans }}
    +
    +
    + {{ form_widget(form._token) }} +
    + {{ 'admin.common.file_select'|trans }} + {{ 'admin.common.file_select_empty'|trans }} + {{ form_widget(form.import_file, {'attr': {'accept': 'text/csv,text/tsv', 'class': 'd-none'}}) }} + {{ form_errors(form.import_file) }} +
    + + {% for error in errors %} +
    {{ error }}
    + {% endfor %} +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    {{ 'admin.common.csv_format'|trans }}
    +
    + +
    +
    +
    + + + {% for header, key in headers %} + + + + + {% endfor %} + +
    {{ header }} + {% if key.required %} + {{ 'admin.common.required'|trans }} + {% endif %} + + {% if key.description %} + {{ key.description|trans|raw }} + {% endif %} +
    +
    +
    +
    +
    +
    +{% endblock %} diff --git a/app/template/admin/Product/index.twig b/app/template/admin/Product/index.twig new file mode 100644 index 000000000..f63ffbd2b --- /dev/null +++ b/app/template/admin/Product/index.twig @@ -0,0 +1,528 @@ +{# +This file is part of EC-CUBE + +Copyright(c) LOCKON CO.,LTD. All Rights Reserved. + +http://www.lockon.co.jp/ + +For the full copyright and license information, please view the LICENSE +file that was distributed with this source code. +#} +{% extends '@admin/default_frame.twig' %} + +{% set menus = ['product', 'product_master'] %} + +{% block title %}{{ 'admin.product.product_list'|trans }}{% endblock %} +{% block sub_title %}{{ 'admin.product.product_management'|trans }}{% endblock %} + +{% form_theme searchForm '@admin/Form/bootstrap_4_layout.html.twig' %} + +{% block stylesheet %} + + +{% endblock stylesheet %} + +{% block javascript %} + +{% endblock javascript %} + +{% block main %} +
    +
    + {{ form_widget(searchForm._token) }} +
    +
    + +
    +
    + + {{ form_widget(searchForm.id) }} + {{ form_errors(searchForm.id) }} +
    + +
    +
    +
    +
    +
    +
    +
    +
    + + {{ form_widget(searchForm.category_id) }} + {{ form_errors(searchForm.category_id) }} +
    +
    +
    +
    +

    {{ 'admin.product.display_status'|trans }}

    + {{ form_widget(searchForm.status, {'label_attr': {'class': 'checkbox-inline'}}) }} + {{ form_errors(searchForm.status, {'label_attr': {'class': 'checkbox-inline'}}) }} +
    +
    +
    +
    +

    {{ 'admin.product.stock__short'|trans }}

    + {{ form_widget(searchForm.stock, {'label_attr': {'class': 'checkbox-inline'}}) }} + {{ form_errors(searchForm.stock) }} +
    +
    +
    +
    +
    + +
    +
    + {# TODO: カレンダー表示の調整 #} + {{ form_widget(searchForm.create_date_start) }} + {{ form_errors(searchForm.create_date_start) }} +
    +
    {{ 'admin.common.separator__range'|trans }} +
    +
    + {{ form_widget(searchForm.create_date_end) }} + {{ form_errors(searchForm.create_date_end) }} +
    +
    +
    +
    + +
    +
    + {# TODO: カレンダー表示の調整 #} + {{ form_widget(searchForm.update_date_start) }} + {{ form_errors(searchForm.update_date_start) }} +
    +
    {{ 'admin.common.separator__range'|trans }}
    +
    + {{ form_widget(searchForm.update_date_end) }} + {{ form_errors(searchForm.update_date_end) }} +
    +
    +
    +
    +
    + {# エンティティ拡張の自動出力 #} + {% for f in searchForm if f.vars.eccube_form_options.auto_render %} + {# TODO 1項目1行になるのを改善 #} +
    + {% if f.vars.eccube_form_options.form_theme %} + {% form_theme f f.vars.eccube_form_options.form_theme %} + {{ form_row(f) }} + {% else %} +
    +
    + + {{ form_widget(f) }} + {{ form_errors(f) }} +
    +
    + {% endif %} +
    + {% endfor %} +
    +
    + + {% if pagination %} + {{ 'admin.common.search_result'|trans({"%count%":pagination.totalItemCount})|raw }} + {% endif %} +
    +
    + {{ include('@admin/search_items.twig', { 'form': searchForm }, ignore_missing = true) }} +
    +
    +
    +
    +
    +
    + {% if pagination and pagination.totalItemCount %} +
    +
    +
    +
    + +
    + + +
    + + +
    +
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + {% for Product in pagination %} + + + + {# TODO: 画像のサイズをベタ指定しているので、styleguide側を直す #} + + + + + + + + + + + {% endfor %} + + +
    + + {{ 'admin.product.product_id__short'|trans }}{{ 'admin.product.image__short'|trans }}{{ 'admin.product.name'|trans }}{{ 'admin.product.product_code__short'|trans }}{{ 'admin.product.price'|trans }}{{ 'admin.product.stock'|trans }}{{ 'admin.product.display_status__short'|trans }}{{ 'admin.common.create_date'|trans }}{{ 'admin.common.update_date'|trans }}
    + + {{ Product.id }} + + + + {{ Product.name }} + + {{ Product.code_min }} + {% if Product.code_min != Product.code_max %}{{ 'admin.common.separator__range'|trans }}{{ Product.code_max }} + {% endif %} + + {{ Product.price02_min|price }} + {% if Product.price02_min != Product.price02_max %}{{ 'admin.common.separator__range'|trans }}{{ Product.price02_max|price }} + {% endif %} + + {% if Product.hasProductClass %} + + {% else %} + {# 規格なし商品 は在庫数を表示 #} + {% if Product.stockunlimited_min %} + {{ 'admin.product.stock_unlimited__short'|trans }} + {% else %} + {{ Product.stock_min }} + {% endif %} + {% endif %} + + {{ Product.status.name }} + + {{ Product.create_date|date_min }} + + {{ Product.update_date|date_min }} + +
    +
    +
    + + + +
    +
    +
    +
    + {% if pagination.totalItemCount > 0 %} +
    + {% include "@admin/pager.twig" with { 'pages' : pagination.paginationData, 'routes' : 'admin_product_page' } %} +
    + {% endif %} +
    +
    + {% elseif has_errors %} +
    +
    +
    {{ 'admin.common.search_invalid_condition'|trans }}
    +
    {{ 'admin.common.search_try_change_condition'|trans }}
    +
    +
    + {% else %} +
    +
    +
    {{ 'admin.common.search_no_result'|trans }}
    +
    {{ 'admin.common.search_try_change_condition'|trans }}
    +
    {{ 'admin.common.search_try_advanced_search'|trans }}
    +
    +
    + {% endif %} +
    + + + + +
    +
    + + +{% endblock %} + diff --git a/app/template/admin/Product/product.twig b/app/template/admin/Product/product.twig new file mode 100644 index 000000000..05abf805a --- /dev/null +++ b/app/template/admin/Product/product.twig @@ -0,0 +1,934 @@ +{# +This file is part of EC-CUBE + +Copyright(c) LOCKON CO.,LTD. All Rights Reserved. + +http://www.lockon.co.jp/ + +For the full copyright and license information, please view the LICENSE +file that was distributed with this source code. +#} +{% extends '@admin/default_frame.twig' %} + +{% set menus = ['product', 'product_edit'] %} + +{% block title %}{{ 'admin.product.product_registration'|trans }}{% endblock %} +{% block sub_title %}{{ 'admin.product.product_management'|trans }}{% endblock %} + +{% form_theme form '@admin/Form/bootstrap_4_horizontal_layout.html.twig' %} + +{% block stylesheet %} + + + + +{% endblock stylesheet %} + +{% block javascript %} + + + + + + + + +{% endblock javascript %} + +{% block main %} + + +
    + {{ form_widget(form._token) }} + {{ form_widget(form.return_link) }} +
    +
    +
    +
    +
    +
    +
    +
    + + {{ 'admin.product.product__card_title'|trans }} + +
    +
    +
    + +
    +
    +
    +
    +
    + {% if Product.id %} +
    +
    +
    + {{ 'admin.product.product_id'|trans }} + +
    +
    +
    +

    {{ Product.id }}

    +
    +
    + {% endif %} +
    +
    +
    + {{ 'admin.product.name'|trans }} + + {{ 'admin.common.required'|trans }} + +
    +
    +
    + {{ form_widget(form.name) }} + {{ form_errors(form.name) }} +
    +
    + {% if has_class == false %} +
    +
    +
    + {{ 'admin.product.sale_type'|trans }} + + + {{ 'admin.common.required'|trans }} + +
    +
    +
    + {{ form_widget(form.class.sale_type) }} +
    +
    + {% endif %} +
    +
    +
    + {{ 'admin.product.image'|trans }} + +
    {{ 'admin.product.image_size'|trans }} +
    +
    +
    + +
    +

    +
    +
    + + {{ 'admin.common.drag_and_drop_image_description'|trans }} + {{ form_widget(form.product_image, { attr : { accept : 'image/*', style : 'display:none;' } }) }} + {{ form_errors(form.product_image) }} + + {{ 'admin.common.file_select'|trans }} + +
    +
    +
    +
    +
    +
    +
    + {{ 'admin.product.description_detail'|trans }} + +
    +
    +
    + {{ form_widget(form.description_detail, { attr : { rows : "8"} }) }} + {{ form_errors(form.description_detail) }} + +
    +
    +
    +
    +
    +
    + {{ 'admin.product.description_list'|trans }} + +
    +
    +
    +
    + {{ form_widget(form.description_list, { attr : { rows : "4"} }) }} + {{ form_errors(form.description_list) }} +
    +
    +
    +
    + {% if has_class == false %} +
    +
    +
    + {{ 'admin.product.sale_price'|trans }} + + {{ 'admin.common.required'|trans }} + +
    +
    +
    +
    + {{ form_widget(form.class.price02) }} + {{ form_errors(form.class.price02) }} +
    +
    +
    +
    +
    +
    + {{ 'admin.product.normal_price'|trans }} + +
    +
    +
    +
    + {{ form_widget(form.class.price01) }} + {{ form_errors(form.class.price01) }} +
    +
    +
    +
    +
    +
    + {{ 'admin.product.stock'|trans }} + + {{ 'admin.common.required'|trans }} + +
    +
    +
    +
    + {{ form_widget(form.class.stock) }} + {{ form_errors(form.class.stock) }} + {# TODO: form_layoutの調整 #} + {#
    #} + {##} + {##} + {#
    #} + {{ form_widget(form.class.stock_unlimited) }} +
    +
    +
    + {% endif %} +
    +
    +
    + {{ 'admin.product.search_word'|trans }} + +
    +
    +
    +
    + {{ form_widget(form.search_word) }} + {{ form_errors(form.search_word) }} +
    +
    +
    + + {% if has_class == false %} +
    +
    +
    + {{ 'admin.product.product_code'|trans }} + +
    +
    +
    +
    + {{ form_widget(form.class.code) }} + {{ form_errors(form.class.code) }} +
    +
    +
    +
    +
    +
    + {{ 'admin.product.sale_limit'|trans }} + +
    +
    +
    +
    + {{ form_widget(form.class.sale_limit) }} + {{ form_errors(form.class.sale_limit) }} +
    +
    +
    +
    +
    +
    + {{ 'admin.product.delivery_duration'|trans }} + +
    +
    +
    +
    + {{ form_widget(form.class.delivery_duration) }} + {{ form_errors(form.class.delivery_duration) }} +
    +
    +
    + + {% if BaseInfo.option_product_delivery_fee %} +
    +
    +
    + {{ 'admin.product.delivery_fee'|trans }} +
    +
    +
    +
    + {{ form_widget(form.class.delivery_fee) }} + {{ form_errors(form.class.delivery_fee) }} +
    +
    +
    + {% endif %} + {% if BaseInfo.option_product_tax_rule %} +
    +
    +
    + {{ 'admin.product.tax_rate'|trans }} +
    +
    +
    +
    + {{ form_widget(form.class.tax_rate) }} + {{ form_errors(form.class.tax_rate) }} +
    +
    +
    + {% endif %} + {% endif %} + + {# エンティティ拡張の自動出力 #} + {% for f in form if f.vars.eccube_form_options.auto_render %} + {% if f.vars.eccube_form_options.form_theme %} + {% form_theme f f.vars.eccube_form_options.form_theme %} + {{ form_row(f) }} + {% else %} +
    +
    + {{ f.vars.label|trans }} +
    +
    +
    + {{ form_widget(f) }} + {{ form_errors(f) }} +
    +
    +
    + {% endif %} + {% endfor %} + + {% if has_class == false %} + {% for f in form.class if f.vars.eccube_form_options.auto_render %} + {% if f.vars.eccube_form_options.form_theme %} + {% form_theme f f.vars.eccube_form_options.form_theme %} + {{ form_row(f) }} + {% else %} +
    +
    + {{ f.vars.label|trans }} +
    +
    +
    + {{ form_widget(f) }} + {{ form_errors(f) }} +
    +
    +
    + {% endif %} + {% endfor %} + {% endif %} + +
    +
    +
    + {% if id is not null %} +
    +
    +
    +
    +
    + + {{ 'admin.product.product_class__card_title'|trans }} + + +
    +
    +
    + +
    +
    +
    +
    +
    + {% if has_class == true %} + + + + + + + + + + {% for Class in Product.ProductClasses %} + {% if Class.visible == 1 %} + + + + + + + + {% endif %} + {% endfor %} + +
    {{ 'admin.product.class_category1__short'|trans }}{{ 'admin.product.class_category2__short'|trans }}{{ 'admin.product.product_code__short'|trans }}{{ 'admin.product.stock'|trans }}{{ 'admin.product.price'|trans }}
    {% if Class.hasClassCategory1 %}{{ Class.ClassCategory1.name }}{% endif %}{% if Class.hasClassCategory2 %}{{ Class.ClassCategory2.name }}{% endif %}{{ Class.code }}{% if Class.stock_unlimited %}{{ 'admin.product.stock_unlimited__short'|trans }}{% else %}{{ Class.stock }}{% endif %}{{ Class.price02|price }}
    + {% endif %} + + +
    +
    +
    + {% endif %} +
    +
    +
    +
    +
    + {{ 'admin.product.free_area__card_title'|trans }} + +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + {{ 'admin.product.free_area'|trans }} +
    +
    +
    + {{ form_widget(form.free_area, {id: 'wysiwyg-area', attr : { rows : "8"} }) }} + {{ form_errors(form.free_area) }} +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    + {% if id is not null %} + + {% endif %} +
    +
    +
    +
    +
    + {{ 'admin.product.category__product_card_title'|trans }} +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + + +
    + +
    +
    +
    +
    + + {% macro tree(ChoicedIds, Category, form) %} + {% import _self as selfMacro %} +
  • + + +
      + {% for child,ChildCategory in Category.children %} + {{ selfMacro.tree(ChoicedIds, ChildCategory, form) }} + {% endfor %} +
    +
  • + {% endmacro %} + +
    + {% import _self as renderMacro %} + {% for TopCategory in TopCategories %} +
      + {{ renderMacro.tree(ChoicedCategoryIds, TopCategory, form.Category) }} +
    + {% endfor %} + {{ form_errors(form.Category) }} +
    + +
    +
    +
    +
    +
    +
    +
    +
    + + {{ 'admin.product.tag__product_card_title'|trans }} + +
    +
    +
    + +
    +
    +
    + +
    +
    + {% if(Tags|length > 0) %} + {% for Tag in Tags %} +
    + +
    + {% endfor %} + {% endif %} + + +
    +
    + {{ form_widget(form.Tag) }} +
    + {% if(TagsList|length > 0) %} + {% for Tag in TagsList %} +
    + +
    + {% endfor %} + {% endif %} + + +
    + + +
    +
    +
    +
    +
    +
    +
    + {{ 'admin.product.create_date__card_title'|trans }} +
    +
    + +
    +
    +
    +
    +
    +
    +
    + + {{ 'admin.common.create_date'|trans }} +
    +
    + :{{ Product.create_date|date_min }} +
    +
    +
    +
    + + {{ 'admin.common.update_date'|trans }} +
    +
    + :{{ Product.update_date|date_min }} +
    +
    +
    +
    + + {{ 'admin.common.last_updater'|trans }} +
    +
    + :{{ Product.Creator ? Product.Creator.name }} +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + {{ 'admin.common.shop_memo'|trans }} + + +
    +
    +
    + +
    +
    +
    +
    +
    + {{ form_widget(form.note, { attr : { rows : "8"} }) }} + {{ form_errors(form.note) }} +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    + {{ form_widget(form.Status) }} + {{ form_errors(form.Status) }} +
    +
    + +
    +
    +
    +
    +
    +
    +
    +{% endblock %} diff --git a/app/template/admin/Product/product_class.twig b/app/template/admin/Product/product_class.twig new file mode 100644 index 000000000..f1a91f99e --- /dev/null +++ b/app/template/admin/Product/product_class.twig @@ -0,0 +1,422 @@ +{# +This file is part of EC-CUBE + +Copyright(c) LOCKON CO.,LTD. All Rights Reserved. + +http://www.lockon.co.jp/ + +For the full copyright and license information, please view the LICENSE +file that was distributed with this source code. +#} +{% extends '@admin/default_frame.twig' %} + +{% set menus = ['product', 'product_edit'] %} + +{% block title %}{{ 'admin.product.product_class_registration'|trans }}{% endblock %} +{% block sub_title %}{{ 'admin.product.product_management'|trans }}{% endblock %} + +{% form_theme form '@admin/Form/bootstrap_4_horizontal_layout.html.twig' %} +{% form_theme clearForm '@admin/Form/bootstrap_4_horizontal_layout.html.twig' %} + +{% block javascript %} + +{% endblock javascript %} + + +{% block main %} +
    +
    +
    +
    + {% if Product.hasProductClass %} + + {# 規格あり商品 #} +
    +
    +
    + {{ Product.name }} +
    +
    + {# 規格の初期化ボタン #} + + {# 規格の初期化モーダル #} + +
    +
    +
    +
    +
    +
    +
    + {{ 'admin.product.class_category1__short'|trans }} +
    +
    + {{ ClassName1.name }} [{{ 'admin.product.class_name__backend_name'|trans }}{{ 'admin.common.separator__colon'|trans }}{{ ClassName1.backend_name }}] +
    +
    +
    + {% if ClassName2 %} +
    +
    +
    + {{ 'admin.product.class_category2__short'|trans }} +
    +
    + {{ ClassName2.name }} [{{ 'admin.product.class_name__backend_name'|trans }}{{ 'admin.common.separator__colon'|trans }}{{ ClassName2.backend_name }}] +
    +
    +
    + {% endif %} +
    + {% else %} + {# 規格なし商品 #} +
    + +
    +
    +
    + {{ Product.name }} +
    +
    + {# 商品規格の設定ボタン #} + +
    +
    +
    +
    +
    + {{ form_widget(form.class_name1) }} + {{ form_errors(form.class_name1) }} +
    +
    + {{ form_widget(form.class_name2) }} + {{ form_errors(form.class_name2) }} +
    +
    +
    + {% endif %} +
    + + {% if form.product_classes|length > 0 %} +
    + + + +
    +
    +
    +
    + + {{ 'admin.product.procuct_class_count'|trans({ + '%count%' : form.product_classes|length + }) }} + {{ form_errors(form.product_classes) }} +
    +
    + +
    +
    +
    +
    + + + + + + + + + + + {% if BaseInfo.option_product_delivery_fee %} + + {% endif %} + {% if BaseInfo.option_product_tax_rule %} + + {% endif %} + + + + {# エンティティ拡張の自動出力 #} + {% for product_class_form in form.product_classes %} + {# product_class_formはcollection typeなので, 1行目だけ出力する #} + {% if loop.first %} + {% for f in product_class_form if f.vars.eccube_form_options.auto_render %} + + {% endfor %} + {% endif %} + {% endfor %} + + + {% for product_class_form in form.product_classes %} + + + + + + + + + + {% if BaseInfo.option_product_delivery_fee %} + + {% endif %} + {% if BaseInfo.option_product_tax_rule %} + + {% endif %} + + + {# エンティティ拡張の自動出力 #} + {% for f in product_class_form if f.vars.eccube_form_options.auto_render %} + {% if f.vars.eccube_form_options.form_theme %} + {% form_theme f f.vars.eccube_form_options.form_theme %} + {{ form_row(f) }} + {% else %} + + {% endif %} + {% endfor %} + + {% endfor %} +
    + + {{ ClassName1 ? ClassName1.name }}{{ ClassName2 ? ClassName2.name }}{{ 'admin.product.product_code__short'|trans }}{{ 'admin.product.stock__short'|trans }}{{ 'admin.product.sale_limit'|trans }}{{ 'admin.product.normal_price'|trans }}{{ 'admin.product.sale_price'|trans }}{{ 'admin.product.delivery_fee'|trans }}{{ 'admin.product.tax_rate'|trans }}{{ 'admin.product.delivery_duration'|trans }}{{ 'admin.product.sale_type'|trans }}{{ f.vars.label|trans }}
    + {{ form_widget(product_class_form.checked) }} + + {{ product_class_form.vars.value.ClassCategory1 }} + {{ form_widget(product_class_form.ClassCategory1) }} + + {{ product_class_form.vars.value.ClassCategory2 }} + {{ form_widget(product_class_form.ClassCategory2) }} + + {{ form_widget(product_class_form.code) }} + {{ form_errors(product_class_form.code) }} + +
    +
    + {{ form_widget(product_class_form.stock) }} + {{ form_errors(product_class_form.stock) }} +
    +
    +
    + {{ form_widget(product_class_form.stock_unlimited) }} +
    +
    +
    +
    +
    +
    + {{ form_widget(product_class_form.sale_limit) }} + {{ form_errors(product_class_form.sale_limit) }} +
    +
    +
    + {{ form_widget(product_class_form.price01) }} + {{ form_errors(product_class_form.price01) }} + + {{ form_widget(product_class_form.price02) }} + {{ form_errors(product_class_form.price02) }} + + {{ form_widget(product_class_form.delivery_fee) }} + {{ form_errors(product_class_form.delivery_fee) }} + + {{ form_widget(product_class_form.tax_rate) }} + {{ form_errors(product_class_form.tax_rate) }} + + {{ form_widget(product_class_form.delivery_duration) }} + {{ form_errors(product_class_form.delivery_duration) }} + + {{ form_widget(product_class_form.sale_type) }} + {{ form_errors(product_class_form.sale_type) }} + + {{ form_widget(f) }} + {{ form_errors(f) }} +
    +
    +
    +
    +
    +
    + +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + + {% else %} +
    +
    +
    + +
    +
    +
    + {% endif %} + +
    +
    +
    +{% endblock %} diff --git a/app/template/admin/Product/product_class_popup.twig b/app/template/admin/Product/product_class_popup.twig new file mode 100644 index 000000000..edc7e99ae --- /dev/null +++ b/app/template/admin/Product/product_class_popup.twig @@ -0,0 +1,32 @@ +{# +This file is part of EC-CUBE + +Copyright(c) LOCKON CO.,LTD. All Rights Reserved. + +http://www.lockon.co.jp/ + +For the full copyright and license information, please view the LICENSE +file that was distributed with this source code. +#} + + + + + + + + + + + + {% for Class in data %} + + + + + + + + {% endfor %} + +
    {{ 'admin.product.class_category1__short'|trans }}{{ 'admin.product.class_category2__short'|trans }}{{ 'admin.product.product_code__short'|trans }}{{ 'admin.product.stock'|trans }}{{ 'admin.product.price'|trans }}
    {% if Class.hasClassCategory1 %}{{ Class.ClassCategory1.name }}{% endif %}{% if Class.hasClassCategory2 %}{{ Class.ClassCategory2.name }}{% endif %}{{ Class.code }}{% if Class.stock_unlimited %}{{ 'admin.product.stock_unlimited__short'|trans }}{% else %}{{ Class.stock }}{% endif %}{{ Class.price02|price }}
    \ No newline at end of file diff --git a/app/template/admin/Product/tag.twig b/app/template/admin/Product/tag.twig new file mode 100644 index 000000000..1cf6770b4 --- /dev/null +++ b/app/template/admin/Product/tag.twig @@ -0,0 +1,243 @@ +{# +This file is part of EC-CUBE + +Copyright(c) LOCKON CO.,LTD. All Rights Reserved. + +http://www.lockon.co.jp/ + +For the full copyright and license information, please view the LICENSE +file that was distributed with this source code. +#} +{% extends '@admin/default_frame.twig' %} + +{% set menus = ['product', 'product_tag'] %} + +{% block title %}{{ 'admin.product.tag_management'|trans }}{% endblock %} +{% block sub_title %}{{ 'admin.product.product_management'|trans }}{% endblock %} + +{% block stylesheet %} + +{% endblock stylesheet %} +{% block javascript %} + + + + + +{% endblock %} + +{% block main %} +
    +
    +
    +
    +
    +
    +
      +
    • +
      + {{ form_widget(form._token) }} +
      + {{ form_widget(form.name) }} + {{ form_errors(form.name) }} +
      +
      + +
      +
      +
    • +
    • +
      +
       
      +
      {{ 'admin.common.id'|trans }}
      +
      {{ 'admin.product.tag'|trans }}
      +
      +
    • + {% for Tag in Tags %} +
    • +
      +
      +
      {{ Tag.id }}
      + + +
      +
      + {{ form_widget(forms[Tag.id]._token) }} +
      + {{ form_widget(forms[Tag.id].name, {'attr': {'data-origin-value': forms[Tag.id].name.vars.value }}) }} + {{ form_errors(forms[Tag.id].name) }} +
      +
      + +
      +
      + +
      +
      +
    • + {% endfor %} +
    + + +
    +
    +
    +

    {{ 'admin.common.drag_and_drop_description'|trans }}

    +
    +
    +
    + +{% endblock %} diff --git a/app/template/admin/Setting/Shop/csv.twig b/app/template/admin/Setting/Shop/csv.twig new file mode 100644 index 000000000..5855ec305 --- /dev/null +++ b/app/template/admin/Setting/Shop/csv.twig @@ -0,0 +1,203 @@ +{# +This file is part of EC-CUBE + +Copyright(c) LOCKON CO.,LTD. All Rights Reserved. + +http://www.lockon.co.jp/ + +For the full copyright and license information, please view the LICENSE +file that was distributed with this source code. +#} +{% extends '@admin/default_frame.twig' %} + +{% set menus = ['setting', 'shop', 'shop_csv'] %} + +{% block title %}{{ 'admin.setting.shop.csv_setting'|trans }}{% endblock %} +{% block sub_title %}{{ 'admin.setting.shop'|trans }}{% endblock %} + +{% form_theme form '@admin/Form/bootstrap_4_horizontal_layout.html.twig' %} + +{% block javascript %} + +{% endblock javascript %} + +{% block main %} +
    + +
    +
    +
    +
    +
    +
    + {{ 'admin.setting.shop.csv.csv_columns'|trans }} +
    +
    +
    +
    +
    +
    + {{ 'admin.setting.shop.csv.csv_type'|trans }} + +
    +
    +
    + {{ form_widget(form.csv_type, {'id': 'csv-type'}) }} +
    +
    +
    +
    +
    +
    + + {{ form_widget(form.csv_not_output, {'id': 'csv-not-output', 'attr': {'size': '30'}}) }} +
    +
    +
    +
    +
    {{ 'admin.setting.shop.csv.operation'|trans }}
    +
    +
    +
    +
     {{ 'admin.setting.shop.csv.operation__output'|trans }} +
    +
    +
    +
    +
    +
     {{ 'admin.setting.shop.csv.operation__release'|trans }} +
    +
    +
    +
    +
    +
     {{ 'admin.setting.shop.csv.operation__all_output'|trans }} +
    +
    +
    +
    +
    +
     {{ 'admin.setting.shop.csv.operation__all_release'|trans }} +
    +
    +
    +
    +
    +
    + + {{ form_widget(form.csv_output, {'id': 'csv-output', 'attr': {'size': '30'}}) }} +
    +
    +
    +
    +
    {{ 'admin.setting.shop.csv.order'|trans }}
    +
    +
    +
    +
     {{ 'admin.setting.shop.csv.order__up'|trans }} +
    +
    +
    +
    +
    +
     {{ 'admin.setting.shop.csv.order__down'|trans }} +
    +
    +
    +
    +
    +
     {{ 'admin.setting.shop.csv.order__top'|trans }} +
    +
    +
    +
    +
    +
     {{ 'admin.setting.shop.csv.order__bottom'|trans }} +
    +
    +
    +
    +
    +

    + {{ 'admin.setting.shop.csv.how_to_use'|trans|nl2br }} +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +{% endblock %} diff --git a/app/template/admin/Setting/Shop/delivery.twig b/app/template/admin/Setting/Shop/delivery.twig new file mode 100644 index 000000000..df50b36a3 --- /dev/null +++ b/app/template/admin/Setting/Shop/delivery.twig @@ -0,0 +1,194 @@ +{# +This file is part of EC-CUBE + +Copyright(c) LOCKON CO.,LTD. All Rights Reserved. + +http://www.lockon.co.jp/ + +For the full copyright and license information, please view the LICENSE +file that was distributed with this source code. +#} +{% extends '@admin/default_frame.twig' %} + +{% set menus = ['setting', 'shop', 'shop_delivery'] %} + +{% block title %}{{ 'admin.setting.shop.delivery_list'|trans }}{% endblock %} +{% block sub_title %}{{ 'admin.setting.shop'|trans }}{% endblock %} + +{% block javascript %} + + + + + +{% endblock %} + +{% block main %} +
    +
    +
    +
    + +
    +
    +
    + + + +
    +
    +
    +

    {{ 'admin.common.drag_and_drop_description'|trans }}

    +
    +
    +
    +
    + +{% endblock %} diff --git a/app/template/admin/Setting/Shop/delivery_edit.twig b/app/template/admin/Setting/Shop/delivery_edit.twig new file mode 100644 index 000000000..12b81b413 --- /dev/null +++ b/app/template/admin/Setting/Shop/delivery_edit.twig @@ -0,0 +1,412 @@ +{# +This file is part of EC-CUBE + +Copyright(c) LOCKON CO.,LTD. All Rights Reserved. + +http://www.lockon.co.jp/ + +For the full copyright and license information, please view the LICENSE +file that was distributed with this source code. +#} +{% extends '@admin/default_frame.twig' %} + +{% set menus = ['setting', 'shop', 'shop_delivery'] %} + +{% block title %}{{ 'admin.setting.shop.delivery_setting'|trans }}{% endblock %} +{% block sub_title %}{{ 'admin.setting.shop'|trans }}{% endblock %} + +{% form_theme form '@admin/Form/bootstrap_4_horizontal_layout.html.twig' %} + + +{% block javascript %} + + + + + + +{% endblock javascript %} + +{% block main %} +
    + {{ form_widget(form._token) }} +
    +
    +
    +
    +
    {{ 'admin.setting.shop.delivery.base_info'|trans }}
    +
    +
    +
    {{ 'admin.setting.shop.delivery.delivery_name'|trans }}
    +
    + {{ form_widget(form.name) }} + {{ form_errors(form.name) }} +
    +
    +
    +
    {{ 'admin.setting.shop.delivery.delivery_sevice_name'|trans }}
    +
    + {{ form_widget(form.service_name) }} + {{ form_errors(form.service_name) }} +
    +
    +
    +
    +
    + {{ 'admin.setting.shop.delivery.tracking_number_url'|trans }} +
    +
    +
    + {{ form_widget(form.confirm_url) }} + {{ form_errors(form.confirm_url) }} +
    +
    +
    +
    +
    + {{ 'admin.setting.shop.delivery.sale_type'|trans }} + +
    +
    +
    + {{ form_widget(form.sale_type) }} + {{ form_errors(form.sale_type) }} +
    +
    + {# エンティティ拡張の自動出力 #} + {% for f in form if f.vars.eccube_form_options.auto_render %} + {% if f.vars.eccube_form_options.form_theme %} + {% form_theme f f.vars.eccube_form_options.form_theme %} + {{ form_row(f) }} + {% else %} +
    +
    {{ f.vars.label|trans }}
    +
    + {{ form_widget(f) }} + {{ form_errors(f) }} +
    +
    + {% endif %} + {% endfor %} +
    +
    +
    +
    {{ 'admin.setting.shop.delivery.payment_method'|trans }}
    +
    +
    + {{ form_widget(form.payments, {'label_attr': {'class': 'checkbox-inline'}}) }} + {{ form_errors(form.payments) }} +
    +
    +
    +
    +
    {{ 'admin.setting.shop.delivery.delivery_time_setting'|trans }}
    +
    +
    +
      +
    • +
      +
      + +
      +
      + +
      +
      +
    • + {% for child in form.delivery_times %} + {{ include('@admin/Setting/Shop/delivery_time_prototype.twig', {'form': child}) }} + {% endfor %} +
    +
    +
    +
    +

    {{ 'admin.common.drag_and_drop_description'|trans }}

    +
    +
    {{ 'admin.setting.shop.delivery.delivery_fee_by_pref'|trans }}
    +
    +
      +
    • +
      +
      +
      {{ 'admin.setting.shop.delivery.apply_to_pref__title'|trans }}
      +
      +
      + {{ form_widget(form.free_all) }} + {{ form_errors(form.free_all) }} +
      +
      + +
      +
      +
    • +
    • + {% for child in form.delivery_fees %} + {% if loop.index % 2 != 0 %}
      {% endif %} +
      +
      +
      + +
      +
      + {{ form_widget(child.fee) }} + {{ form_errors(child.fee) }} +
      +
      +
      + {% if loop.index % 2 == 0 or loop.last %}
      {% endif %} + {% endfor %} +
    • +
    +
    +
    +
    +
    +
    +
    +
    + {{ 'admin.common.shop_memo'|trans }}
    +
    +
    +
    +
    +
    +
    +
    + {{ form_widget(form.description, {'attr': {'rows': 8}}) }} + {{ form_errors(form.description) }} +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    + {{ form_widget(form.visible) }} + {{ form_errors(form.visible) }} +
    +
    + +
    +
    +
    +
    +
    +
    +
    +{% endblock %} diff --git a/app/template/admin/Setting/Shop/delivery_time_prototype.twig b/app/template/admin/Setting/Shop/delivery_time_prototype.twig new file mode 100644 index 000000000..1bd09c4ea --- /dev/null +++ b/app/template/admin/Setting/Shop/delivery_time_prototype.twig @@ -0,0 +1,70 @@ +{# +This file is part of EC-CUBE + +Copyright(c) LOCKON CO.,LTD. All Rights Reserved. + +http://www.lockon.co.jp/ + +For the full copyright and license information, please view the LICENSE +file that was distributed with this source code. +#} +{% set DeliveryTime = form.vars.value %} +
  • +
    +
    + +
    + +
    + + + + + + + + + + {% if DeliveryTime is empty %} + + + + {% else %} + + + + {% endif %} + + + +
    +
    +
    +
    +
    +
    + {{ form_widget(form.delivery_time, {'attr': {'data-origin-value': form.vars.value }}) }} +
    +
    + +
    +
    + +
    + {{ form_errors(form.delivery_time) }} + {{ form_widget(form.sort_no, {'attr': {'class': "sort-no" }}) }} + {{ form_errors(form.sort_no) }} + {{ form_widget(form.visible, {'attr': {'class': "visible d-none" }}) }} + {{ form_errors(form.visible) }} +
    +
    +
    +
  • diff --git a/app/template/admin/Setting/Shop/mail.twig b/app/template/admin/Setting/Shop/mail.twig new file mode 100644 index 000000000..e315badf7 --- /dev/null +++ b/app/template/admin/Setting/Shop/mail.twig @@ -0,0 +1,230 @@ +{# +This file is part of EC-CUBE + +Copyright(c) LOCKON CO.,LTD. All Rights Reserved. + +http://www.lockon.co.jp/ + +For the full copyright and license information, please view the LICENSE +file that was distributed with this source code. +#} +{% extends '@admin/default_frame.twig' %} + +{% set menus = ['setting', 'shop', 'shop_mail'] %} + +{% block title %}{{ 'admin.setting.shop.mail_setting'|trans }}{% endblock %} +{% block sub_title %}{{ 'admin.setting.shop'|trans }}{% endblock %} + +{% form_theme form '@admin/Form/bootstrap_4_horizontal_layout.html.twig' %} + +{% block javascript %} + + + +{% endblock javascript %} + +{% block main %} +
    + {{ form_widget(form._token) }} +
    +
    +
    +
    +
    {{ 'admin.setting.shop.mail.mail_template_edit'|trans }}
    +
    +
    +
    +
    + {{ 'admin.setting.shop.mail.mail_template'|trans }} +
    +
    +
    + {{ form_widget(form.template) }} + {{ form_errors(form.template) }} +
    +
    +
    +
    {{ 'admin.setting.shop.mail.mail_subject'|trans }}{{ 'admin.common.required'|trans }}
    +
    + {{ form_widget(form.mail_subject) }} + {{ form_errors(form.mail_subject) }} +
    +
    +
    +
    {{ 'admin.setting.shop.mail.mail_body'|trans }}{{ 'admin.common.required'|trans }}
    +
    + {# タブ表示 #} + {% if id is not null %} + + {% endif %} +
    +
    + {{ form_label(form.tpl_data) }} +
    +
    {{ form_widget(form.tpl_data) }}
    + {{ form_errors(form.tpl_data) }} +
    + {% if form.html_tpl_data.vars.value %} +
    + {{ form_label(form.html_tpl_data) }} +
    +
    {{ form_widget(form.html_tpl_data) }}
    + {{ form_errors(form.html_tpl_data) }} +
    + {% endif %} +
    +
    +
    + {# エンティティ拡張の自動出力 #} + {% for f in form if f.vars.eccube_form_options.auto_render %} + {% if f.vars.eccube_form_options.form_theme %} + {% form_theme f f.vars.eccube_form_options.form_theme %} + {{ form_row(f) }} + {% else %} +
    +
    {{ f.vars.label|trans }}
    +
    + {{ form_widget(f) }} + {{ form_errors(f) }} +
    +
    + {% endif %} + {% endfor %} +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + + + +{% endblock %} diff --git a/app/template/admin/Setting/Shop/mail_view.twig b/app/template/admin/Setting/Shop/mail_view.twig new file mode 100644 index 000000000..161e3ce53 --- /dev/null +++ b/app/template/admin/Setting/Shop/mail_view.twig @@ -0,0 +1,28 @@ +{# +This file is part of EC-CUBE + +Copyright(c) LOCKON CO.,LTD. All Rights Reserved. + +http://www.lockon.co.jp/ + +For the full copyright and license information, please view the LICENSE +file that was distributed with this source code. +#} + + +{{ html_body|trans|raw }} diff --git a/app/template/admin/Setting/Shop/payment.twig b/app/template/admin/Setting/Shop/payment.twig new file mode 100644 index 000000000..bce18c2bb --- /dev/null +++ b/app/template/admin/Setting/Shop/payment.twig @@ -0,0 +1,234 @@ +{# +This file is part of EC-CUBE + +Copyright(c) LOCKON CO.,LTD. All Rights Reserved. + +http://www.lockon.co.jp/ + +For the full copyright and license information, please view the LICENSE +file that was distributed with this source code. +#} +{% extends '@admin/default_frame.twig' %} + +{% set menus = ['setting', 'shop', 'shop_payment'] %} + +{% block title %}{{ 'admin.setting.shop.payment_list'|trans }}{% endblock %} +{% block sub_title %}{{ 'admin.setting.shop'|trans }}{% endblock %} + +{% block stylesheet %} + +{% endblock %} + +{% block javascript %} + + + + + +{% endblock %} + +{% block main %} +
    +
    +
    + +
    +
    +
      +
    • +
      +
         
      +
      {{ 'admin.setting.shop.payment.payment_id'|trans }}
      +
      {{ 'admin.common.payment_method'|trans }}
      +
      {{ 'admin.common.charge'|trans }}
      +
      {{ 'admin.setting.shop.payment.terms_of_use'|trans }}
      +
      +
    • + {% for Payment in Payments %} +
    • +
      +
      +
      {{ Payment.id }}
      + +
      {{ Payment.charge|price }}
      +
      + + {% if Payment.rule_min > 0 %} + {{ Payment.rule_min|price }} + {% else %} + {{ 0|price }} + {% endif %} + + {% if Payment.rule_max > 0 %} + {{ 'admin.common.separator__range'|trans }} {{ Payment.rule_max|price }} + {% elseif Payment.rule_max is null %} + {{ 'admin.common.separator__range'|trans }} {{ 'admin.setting.shop.payment.unlimited'|trans }} + {% endif %} + +
      + +
      +
    • + {% endfor %} +
    + + +
    +
    +

    {{ 'admin.common.drag_and_drop_description'|trans }}

    +
    +
    +
    +{% endblock %} diff --git a/app/template/admin/Setting/Shop/payment_edit.twig b/app/template/admin/Setting/Shop/payment_edit.twig new file mode 100644 index 000000000..053df2f5b --- /dev/null +++ b/app/template/admin/Setting/Shop/payment_edit.twig @@ -0,0 +1,243 @@ +{# +This file is part of EC-CUBE + +Copyright(c) LOCKON CO.,LTD. All Rights Reserved. + +http://www.lockon.co.jp/ + +For the full copyright and license information, please view the LICENSE +file that was distributed with this source code. +#} +{% extends '@admin/default_frame.twig' %} + +{% set menus = ['setting', 'shop', 'shop_payment'] %} + +{% block title %}{{ 'admin.setting.shop.payment_setting'|trans }}{% endblock %} +{% block sub_title %}{{ 'admin.setting.shop'|trans }}{% endblock %} + +{% form_theme form '@admin/Form/bootstrap_4_horizontal_layout.html.twig' %} + +{% block stylesheet %} + + + +{% endblock stylesheet %} + +{% block javascript %} + + + + + + + + +{% endblock %} + +{% block main %} +
    + {{ form_widget(form._token) }} + {{ form_widget(form.fixed) }} +
    +
    +
    +
    +
    {{ 'admin.common.payment_method'|trans }}
    +
    +
    +
    {{ 'admin.setting.shop.payment.payment_name'|trans }}
    +
    + {{ form_widget(form.method) }} + {{ form_errors(form.method) }} +
    +
    +
    +
    {{ 'admin.common.charge'|trans }}
    +
    + {{ form_widget(form.charge) }} + {{ form_errors(form.charge) }} +
    +
    +
    +
    {{ 'admin.setting.shop.payment.terms_of_use'|trans }}
    +
    +
    +
    + {{ form_widget(form.rule_min) }} + {{ form_errors(form.rule_min) }} +
    +
    {{ 'admin.common.separator__range'|trans }}
    +
    + {{ form_widget(form.rule_max) }} + {{ form_errors(form.rule_max) }} +
    +
    +
    +
    + +
    +
    +
    + {{ 'admin.setting.shop.payment.logo_image'|trans }} +
    {{ 'admin.setting.shop.payment.logo_image_size'|trans }} +
    +
    +
    + +
    + {{ form_widget(form.payment_image, { attr : { style : 'display:none;' } }) }} +
    +
    + + {{ 'admin.common.drag_and_drop_image_description'|trans }} + {{ form_widget(form.payment_image_file, { attr : { accept : 'image/*', style : 'display:none;' } }) }} + {{ form_errors(form.payment_image) }} + + {{ 'admin.common.file_select'|trans }} + +
    +
    +
    +
    + {# エンティティ拡張の自動出力 #} + {% for f in form if f.vars.eccube_form_options.auto_render %} + {% if f.vars.eccube_form_options.form_theme %} + {% form_theme f f.vars.eccube_form_options.form_theme %} + {{ form_row(f) }} + {% else %} +
    +
    {{ f.vars.label|trans }}
    +
    + {{ form_widget(f) }} + {{ form_errors(f) }} +
    +
    + {% endif %} + {% endfor %} +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    + {{ form_widget(form.visible) }} + {{ form_errors(form.visible) }} +
    +
    + +
    +
    +
    +
    +
    +
    +
    +{% endblock %} diff --git a/app/template/admin/Setting/Shop/shop_master.twig b/app/template/admin/Setting/Shop/shop_master.twig new file mode 100644 index 000000000..d823323db --- /dev/null +++ b/app/template/admin/Setting/Shop/shop_master.twig @@ -0,0 +1,337 @@ +{# +This file is part of EC-CUBE + +Copyright(c) LOCKON CO.,LTD. All Rights Reserved. + +http://www.lockon.co.jp/ + +For the full copyright and license information, please view the LICENSE +file that was distributed with this source code. +#} +{% extends '@admin/default_frame.twig' %} + +{% set menus = ['setting', 'shop', 'shop_index'] %} + +{% block title %}{{ 'admin.setting.shop.shop_setting'|trans }}{% endblock %} +{% block sub_title %}{{ 'admin.setting.shop'|trans }}{% endblock %} + +{% form_theme form '@admin/Form/bootstrap_4_horizontal_layout.html.twig' %} + +{% block javascript %} + +{% endblock %} + +{% block main %} +
    + + + {{ form_widget(form._token) }} + +
    +
    +
    +
    +
    {{ 'admin.setting.shop.shop.base_info'|trans }}
    +
    +
    +
    {{ 'admin.common.company_name'|trans }}
    +
    + {{ form_widget(form.company_name) }} + {{ form_errors(form.company_name) }} +
    +
    + {{ form_widget(form.company_kana, {type: 'hidden'}) }} +
    +
    {{ 'admin.setting.shop.shop.shop_name'|trans }}{{ 'admin.common.required'|trans }}
    +
    + {{ form_widget(form.shop_name) }} + {{ form_errors(form.shop_name) }} +
    +
    + {{ form_widget(form.shop_kana, {type: 'hidden'}) }} + {{ form_widget(form.shop_name_eng, {type: 'hidden'}) }} +
    +
    {{ 'admin.common.address'|trans }}
    +
    +
    +
    +
    {{ 'admin.common.postal_symbol'|trans }}
    +
    + {{ form_widget(form.postal_code) }} +
    + {{ form_errors(form.postal_code) }} +
    +
    +
    +
    +
    + {{ form_widget(form.address.pref) }} + {{ form_errors(form.address.pref) }} +
    +
    +
    +
    + {{ form_widget(form.address.addr01) }} + {{ form_errors(form.address.addr01) }} +
    +
    + {{ form_widget(form.address.addr02) }} + {{ form_errors(form.address.addr02) }} +
    +
    +
    +
    +
    {{ 'admin.common.phone_number'|trans }}
    +
    + {{ form_widget(form.phone_number) }} + {{ form_errors(form.phone_number) }} +
    +
    +
    +
    {{ 'admin.setting.shop.shop.business_hour'|trans }}
    +
    + {{ form_widget(form.business_hour) }} + {{ form_errors(form.business_hour) }} +
    +
    +
    +
    +
    {{ 'admin.setting.shop.shop.email_from'|trans }}
    + {{ 'admin.common.required'|trans }} +
    +
    + {{ form_widget(form.email01) }} + {{ form_errors(form.email01) }} +
    +
    +
    +
    +
    {{ 'admin.setting.shop.shop.email_for_inquiries'|trans }}
    + {{ 'admin.common.required'|trans }} +
    +
    + {{ form_widget(form.email02) }} + {{ form_errors(form.email02) }} +
    +
    +
    +
    +
    {{ 'admin.setting.shop.shop.email_reply_to'|trans }}
    + {{ 'admin.common.required'|trans }} +
    +
    + {{ form_widget(form.email03) }} + {{ form_errors(form.email03) }} +
    +
    +
    +
    +
    {{ 'admin.setting.shop.shop.email_return_path'|trans }}
    + {{ 'admin.common.required'|trans }} +
    +
    + {{ form_widget(form.email04) }} + {{ form_errors(form.email04) }} +
    +
    +
    +
    +
    {{ 'admin.setting.shop.shop.good_traded'|trans }}
    +
    +
    + {{ form_widget(form.good_traded) }} + {{ form_errors(form.good_traded) }} +
    +
    +
    +
    +
    {{ 'admin.setting.shop.shop.message'|trans }}
    +
    +
    + {{ form_widget(form.message) }} + {{ form_errors(form.message) }} +
    +
    + {# エンティティ拡張の自動出力 #} + {% for f in form if f.vars.eccube_form_options.auto_render %} + {% if f.vars.eccube_form_options.form_theme %} + {% form_theme f f.vars.eccube_form_options.form_theme %} + {{ form_row(f) }} + {% else %} +
    +
    {{ f.vars.label|trans }}
    +
    + {{ form_widget(f) }} + {{ form_errors(f) }} +
    +
    + {% endif %} + {% endfor %} +
    +
    +
    +
    {{ 'admin.setting.shop.shop.option_delivery_fee'|trans }}
    +
    +
    +
    +
    {{ 'admin.setting.shop.shop.option_delivery_fee_free_amount'|trans }}
    +
    +
    + {{ form_widget(form.delivery_free_amount) }} + {{ form_errors(form.delivery_free_amount) }} +
    +
    +
    +
    +
    +
    {{ 'admin.setting.shop.shop.option_delivery_fee_free_quantity'|trans }}
    +
    +
    + {{ form_widget(form.delivery_free_quantity) }} + {{ form_errors(form.delivery_free_quantity) }} +
    +
    +
    +
    +
    +
    {{ 'admin.setting.shop.shop.option_delivery_fee_by_product'|trans }}
    +
    +
    + {{ form_widget(form.option_product_delivery_fee) }} + {{ form_errors(form.option_product_delivery_fee) }} +
    +
    +
    +
    +
    +
    {{ 'admin.setting.shop.shop.option_customer'|trans }}
    +
    +
    +
    +
    {{ 'admin.setting.shop.shop.option_customer_activate'|trans }}
    +
    +
    + {{ form_widget(form.option_customer_activate) }} + {{ form_errors(form.option_customer_activate) }} +
    +
    +
    +
    + {{ 'admin.setting.shop.shop.option_mypage_order_status_display'|trans }} +
    +
    + {{ form_widget(form.option_mypage_order_status_display) }} + {{ form_errors(form.option_mypage_order_status_display) }} +
    +
    +
    +
    +
    {{ 'admin.setting.shop.shop.option_favorite_product'|trans }}
    +
    +
    + {{ form_widget(form.option_favorite_product) }} + {{ form_errors(form.option_favorite_product) }} +
    +
    +
    +
    +
    {{ 'admin.setting.shop.shop.option_remember_me'|trans }}
    +
    +
    + {{ form_widget(form.option_remember_me) }} + {{ form_errors(form.option_remember_me) }} +
    +
    +
    +
    +
    +
    {{ 'admin.setting.shop.shop.option_product'|trans }}
    +
    +
    +
    {{ 'admin.setting.shop.shop.nostock_hidden'|trans }}
    +
    + {{ form_widget(form.option_nostock_hidden) }} + {{ form_errors(form.option_nostock_hidden) }} +
    +
    +
    +
    +
    +
    {{ 'admin.setting.shop.shop.option_tax'|trans }}
    +
    +
    +
    +
    {{ 'admin.setting.shop.shop.option_product_tax'|trans }}
    +
    +
    + {{ form_widget(form.option_product_tax_rule) }} + {{ form_errors(form.option_product_tax_rule) }} +
    +
    +
    +
    +
    +
    {{ 'admin.setting.shop.shop.option_point'|trans }}
    +
    +
    +
    +
    {{ 'admin.setting.shop.shop.option_point_enabled'|trans }}
    +
    +
    + {{ form_widget(form.option_point) }} + {{ form_errors(form.option_point) }} +
    +
    +
    +
    +
    {{ 'admin.setting.shop.shop.option_point_rate'|trans }}
    +
    +
    +
    +
    + {{ form_widget(form.basic_point_rate) }} +
    + % +
    + {{ form_errors(form.basic_point_rate) }} +
    +
    +
    +
    +
    +
    +
    {{ 'admin.setting.shop.shop.option_point_conversion_rate'|trans }}
    +
    +
    +
    +
    + {{ form_widget(form.point_conversion_rate) }} + {{ form_errors(form.point_conversion_rate) }} +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +{% endblock %} \ No newline at end of file diff --git a/app/template/admin/Setting/Shop/tax_rule.twig b/app/template/admin/Setting/Shop/tax_rule.twig new file mode 100644 index 000000000..ed3b1089e --- /dev/null +++ b/app/template/admin/Setting/Shop/tax_rule.twig @@ -0,0 +1,223 @@ +{# +This file is part of EC-CUBE + +Copyright(c) LOCKON CO.,LTD. All Rights Reserved. + +http://www.lockon.co.jp/ + +For the full copyright and license information, please view the LICENSE +file that was distributed with this source code. +#} +{% extends '@admin/default_frame.twig' %} + +{% set menus = ['setting', 'shop', 'shop_tax'] %} + +{% block title %}{{ 'admin.setting.shop.tax_setting'|trans }}{% endblock %} +{% block sub_title %}{{ 'admin.setting.shop'|trans }}{% endblock %} + +{% form_theme form '@admin/Form/bootstrap_4_horizontal_layout.html.twig' %} + +{% block stylesheet %} + +{% endblock stylesheet %} + +{% block javascript %} + +{% endblock javascript %} + +{% block main %} +
    +
    +
    +
    +
    +
    + {{ 'admin.setting.shop.tax_setting'|trans }} + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + {{ form_widget(form._token) }} + + + + + + + + + + {% for TaxRule in TaxRules %} + + + {{ form_widget(forms[TaxRule.id]._token) }} + + + + + + + + + + + {% endfor %} + +
    {{ 'admin.common.id'|trans }}{{ 'admin.setting.shop.tax.tax_rate'|trans }}{{ 'admin.setting.shop.tax.rounding_type'|trans }}{{ 'admin.setting.shop.tax.apply_date'|trans }}
    +
    + {{ form_widget(form.tax_rate, {attr: {class: 'col-auto text-right'}}) }} +
    + % +
    + {{ form_errors(form.tax_rate) }} +
    +
    + {{ form_widget(form.rounding_type) }} + {{ form_errors(form.rounding_type) }} + + {{ form_widget(form.apply_date) }} + {{ form_errors(form.apply_date) }} + +
    + +
    +
    {{ TaxRule.id }} +
    +
    + {{ form_widget(forms[TaxRule.id].tax_rate, {attr: {class: 'col-auto text-right'}}) }} +
    + % +
    + {{ form_errors(forms[TaxRule.id].tax_rate) }} +
    +
    +
    + {{ TaxRule.tax_rate }}% +
    +
    +
    + {{ form_widget(forms[TaxRule.id].rounding_type) }} +
    +
    + {{ TaxRule.rounding_type }} +
    +
    +
    + {% if TaxRule.default_tax_rule %} + {{ 'admin.setting.shop.tax.base_rate_setting'|trans }} + {% else %} + {{ form_widget(forms[TaxRule.id].apply_date) }} + {{ form_errors(forms[TaxRule.id].apply_date) }} + {% endif %} +
    +
    + {{ TaxRule.default_tax_rule ? 'admin.setting.shop.tax.base_rate_setting'|trans : TaxRule.apply_date|date_min }} +
    +
    +
    + + +
    +
    +
    +
    +
    + +
    + {% if not TaxRule.default_tax_rule %} +
    + + + +
    + + + {% endif %} +
    +
    +
    +
    +
    +
    +
    +
    +
    +{% endblock %} diff --git a/app/template/admin/Setting/System/authority.twig b/app/template/admin/Setting/System/authority.twig new file mode 100644 index 000000000..fb14aeda7 --- /dev/null +++ b/app/template/admin/Setting/System/authority.twig @@ -0,0 +1,106 @@ +{# +This file is part of EC-CUBE + +Copyright(c) LOCKON CO.,LTD. All Rights Reserved. + +http://www.lockon.co.jp/ + +For the full copyright and license information, please view the LICENSE +file that was distributed with this source code. +#} +{% extends '@admin/default_frame.twig' %} + +{% set menus = ['setting', 'system', 'authority'] %} + +{% block title %}{{ 'admin.setting.system.authority_management'|trans }}{% endblock %} +{% block sub_title %}{{ 'admin.setting.system'|trans }}{% endblock %} + +{% form_theme form '@admin/Form/bootstrap_4_layout.html.twig' %} + +{% block javascript %} + +{% endblock javascript %} + +{% block main %} +
    +
    +
    +
    + {{ form_widget(form._token) }} +
    +
    + {{ 'admin.setting.system.authority__card_title'|trans }} +
    +
    +

    {{ 'admin.setting.system.authority.description'|trans({'%url%':app.request.baseUrl ~ '/' ~ eccube_config.eccube_admin_route}) }}

    +

    {{ 'admin.setting.system.authority.example'|trans|raw }}

    +
    + + + + + + + + + + {% for form in form.AuthorityRoles %} + {{ include('@admin/Setting/System/authority_prototype.twig', {'form': form }) }} + {% endfor %} + +
    {{ 'admin.setting.system.authority.authority'|trans }}{{ 'admin.setting.system.authority.deny_url'|trans }}
    +
    +

    + +

    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +{% endblock %} diff --git a/app/template/admin/Setting/System/authority_prototype.twig b/app/template/admin/Setting/System/authority_prototype.twig new file mode 100644 index 000000000..7cb58dc09 --- /dev/null +++ b/app/template/admin/Setting/System/authority_prototype.twig @@ -0,0 +1,23 @@ +{# +This file is part of EC-CUBE + +Copyright(c) LOCKON CO.,LTD. All Rights Reserved. + +http://www.lockon.co.jp/ + +For the full copyright and license information, please view the LICENSE +file that was distributed with this source code. +#} + + + {{ form_widget(form.Authority) }} + {{ form_errors(form.Authority) }} + + + {{ form_widget(form.deny_url) }} + {{ form_errors(form.deny_url) }} + + + + + diff --git a/app/template/admin/Setting/System/log.twig b/app/template/admin/Setting/System/log.twig new file mode 100644 index 000000000..9e7ec07ca --- /dev/null +++ b/app/template/admin/Setting/System/log.twig @@ -0,0 +1,57 @@ +{# +This file is part of EC-CUBE + +Copyright(c) LOCKON CO.,LTD. All Rights Reserved. + +http://www.lockon.co.jp/ + +For the full copyright and license information, please view the LICENSE +file that was distributed with this source code. +#} + +{% extends '@admin/default_frame.twig' %} + +{% set menus = ['setting', 'system', 'log'] %} + +{% block title %}{{ 'admin.setting.system.log_display'|trans }}{% endblock %} +{% block sub_title %}{{ 'admin.setting.system'|trans }}{% endblock %} + +{% block main %} +
    +
    +
    +
    +
    + {{ 'admin.setting.system.log_display'|trans }} +
    +
    +
    +
    + {{ form_widget(form._token) }} +
    +
    + {{ form_widget(form.files) }} +
    +
    + {{ form_widget(form.line_max) }} + {{ 'admin.setting.system.log.line_number'|trans }} +
    +
    + +
    + {{ form_errors(form.line_max) }} +
    +
    +
    + +
    +
    +
    +
    +
    +{% endblock %} diff --git a/app/template/admin/Setting/System/masterdata.twig b/app/template/admin/Setting/System/masterdata.twig new file mode 100644 index 000000000..f914d308c --- /dev/null +++ b/app/template/admin/Setting/System/masterdata.twig @@ -0,0 +1,106 @@ +{# +This file is part of EC-CUBE + +Copyright(c) LOCKON CO.,LTD. All Rights Reserved. + +http://www.lockon.co.jp/ + +For the full copyright and license information, please view the LICENSE +file that was distributed with this source code. +#} + +{% extends '@admin/default_frame.twig' %} + +{% set menus = ['setting', 'system', 'masterdata'] %} + +{% block title %}{{ 'admin.setting.system.master_data_management'|trans }}{% endblock %} +{% block sub_title %}{{ 'admin.setting.system'|trans }}{% endblock %} + +{% block main %} +
    +
    +
    +
    + {{ form_widget(form._token) }} +
    +
    +
    + {{ 'admin.setting.system.master_data_management'|trans }}
    +
    +
    +
    +
    + {{ form_widget(form.masterdata) }} + {{ form_errors(form.masterdata) }} +
    +
    + +
    +
    +
    +
    +
    + + {% if form2.data is not empty %} +
    + {{ form_widget(form2.masterdata_name) }} + {{ form_widget(form2._token) }} +
    +
    +
    + {{ 'admin.setting.system.master_data.description'|trans|nl2br }} +
    +
    +
    + + + + + + + + + {% for data in form2.data %} + + + + + {% endfor %} + +
    + {{ 'admin.setting.system.master_data.id'|trans }} + + {{ 'admin.setting.system.master_data.name'|trans }} +
    + {{ form_widget(data.id) }} + {{ form_errors(data.id) }} + + {{ form_widget(data.name) }} + {{ form_errors(data.name) }} +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + {% endif %} +
    +
    +
    +{% endblock %} diff --git a/app/template/admin/Setting/System/member.twig b/app/template/admin/Setting/System/member.twig new file mode 100644 index 000000000..8e2536d0a --- /dev/null +++ b/app/template/admin/Setting/System/member.twig @@ -0,0 +1,182 @@ +{# +This file is part of EC-CUBE + +Copyright(c) LOCKON CO.,LTD. All Rights Reserved. + +http://www.lockon.co.jp/ + +For the full copyright and license information, please view the LICENSE +file that was distributed with this source code. +#} +{% extends '@admin/default_frame.twig' %} + +{% set menus = ['setting', 'system', 'member'] %} + +{% block title %}{{ 'admin.setting.system.member_management'|trans }}{% endblock %} +{% block sub_title %}{{ 'admin.setting.system'|trans }}{% endblock %} + +{% form_theme form 'Form/bootstrap_4_layout.html.twig' %} + +{% block javascript %} + +{% endblock %} + +{% block main %} +
    +
    +
    + +
    +
    +
    + + + + + + + + + + + + {% for Member in Members %} + + + + + + + + {% endfor %} + +
    + {{ 'admin.setting.system.member.name'|trans }} + + {{ 'admin.setting.system.member.department'|trans }} + + {{ 'admin.common.authority'|trans }} + + {{ 'admin.setting.system.member.work'|trans }} +
    + {{ Member.name }} + + {{ Member.department }} + + {{ Member.Authority.name }} + + {{ Member.Work.name }} + +
    +
    + + + +
    +
    + + + +
    +
    + + + +
    +
    + {% if Member.id == app.user.id %} + + + + {% else %} +
    + + + +
    + + {% endif %} +
    +
    +
    +
    +
    +
    +
    +
    +
    +{% endblock %} \ No newline at end of file diff --git a/app/template/admin/Setting/System/member_edit.twig b/app/template/admin/Setting/System/member_edit.twig new file mode 100644 index 000000000..ada1ae18f --- /dev/null +++ b/app/template/admin/Setting/System/member_edit.twig @@ -0,0 +1,191 @@ +{# +This file is part of EC-CUBE + +Copyright(c) LOCKON CO.,LTD. All Rights Reserved. + +http://www.lockon.co.jp/ + +For the full copyright and license information, please view the LICENSE +file that was distributed with this source code. +#} +{% extends '@admin/default_frame.twig' %} + +{% set menus = ['setting', 'system', 'member'] %} + +{% block title %}{{ 'admin.setting.system.member.member_registration'|trans }}{% endblock %} +{% block sub_title %}{{ 'admin.setting.system'|trans }}{% endblock %} + +{% form_theme form '@admin/Form/bootstrap_4_horizontal_layout.html.twig' %} + +{% block main %} +
    + {{ form_widget(form._token) }} +
    +
    +
    +
    +
    +
    +
    {{ 'admin.setting.system.member.member_registration'|trans }}
    +
    + +
    +
    +
    +
    +
    +
    +
    + {{ 'admin.setting.system.member.name'|trans }} + {{ 'admin.common.required'|trans }} +
    +
    +
    +
    + {{ form_widget(form.name) }} +
    + {{ form_errors(form.name) }} +
    +
    +
    + +
    +
    + {{ 'admin.setting.system.member.department'|trans }} + {{ 'admin.common.required'|trans }} +
    +
    +
    +
    + {{ form_widget(form.department) }} +
    + {{ form_errors(form.department) }} +
    +
    +
    +
    +
    + {{ 'admin.setting.system.member.login_id'|trans }} + {{ 'admin.common.required'|trans }} +
    +
    +
    +
    + {{ form_widget(form.login_id) }} +
    + {{ form_errors(form.login_id) }} +
    +
    +
    +
    +
    + {{ 'admin.setting.system.member.password'|trans }} + {{ 'admin.common.required'|trans }} +
    +
    +
    +
    + {{ form_widget(form.password.first, { type : 'password'}) }} +
    + {{ form_errors(form.password.first) }} +
    +
    +
    +
    +
    + {{ 'admin.setting.system.member.password_confirm'|trans }} + {{ 'admin.common.required'|trans }} +
    +
    +
    +
    + {{ form_widget(form.password.second, { type : 'password'}) }} +
    + {{ form_errors(form.password.second) }} +
    +
    +
    +
    +
    +
    + {{ 'admin.common.authority'|trans }} + +
    + {{ 'admin.common.required'|trans }} +
    +
    +
    +
    + {{ form_widget(form.Authority) }} +
    + {{ form_errors(form.Authority) }} +
    +
    +
    +
    +
    +
    + {{ 'admin.setting.system.member.work'|trans }} + +
    + {{ 'admin.common.required'|trans }} +
    +
    + {{ form_widget(form.Work, {'attr': {'class': 'form-check-inline'}}) }} + {{ form_errors(form.Work) }} +
    +
    + {# エンティティ拡張の自動出力 #} + {% for f in form if f.vars.eccube_form_options.auto_render %} + {% if f.vars.eccube_form_options.form_theme %} + {% form_theme f f.vars.eccube_form_options.form_theme %} + {{ form_row(f) }} + {% else %} +
    +
    + {{ f.vars.label|trans }} +
    +
    + {{ form_widget(f) }} + {{ form_errors(f) }} +
    +
    + {% endif %} + {% endfor %} +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +{% endblock %} + + + + diff --git a/app/template/admin/Setting/System/security.twig b/app/template/admin/Setting/System/security.twig new file mode 100644 index 000000000..567986b52 --- /dev/null +++ b/app/template/admin/Setting/System/security.twig @@ -0,0 +1,119 @@ +{# +This file is part of EC-CUBE + +Copyright(c) LOCKON CO.,LTD. All Rights Reserved. + +http://www.lockon.co.jp/ + +For the full copyright and license information, please view the LICENSE +file that was distributed with this source code. +#} +{% extends '@admin/default_frame.twig' %} + +{% set menus = ['setting', 'system', 'security'] %} + +{% block title %}{{ 'admin.setting.system.security_management'|trans }}{% endblock %} +{% block sub_title %}{{ 'admin.setting.system'|trans }}{% endblock %} + +{% form_theme form '@admin/Form/bootstrap_4_layout.html.twig' %} + +{% block stylesheet %} + +{% endblock %} + +{% block main %} +
    + {{ form_widget(form._token) }} +
    +
    +
    +
    +
    +
    +
    + {{ 'admin.setting.system.security__card_title'|trans }} +
    +
    + +
    +
    +
    +
    +
    + +
    +
    +
    + {{ 'admin.setting.system.security.admin_url'|trans }} +
    +
    +
    + {{ form_widget(form.admin_route_dir) }} + {{ form_errors(form.admin_route_dir) }} +
    +
    + +
    +
    +
    + {{ 'admin.setting.system.security.ip_limit'|trans }} +
    +
    +
    + {{ form_widget(form.admin_allow_hosts, { 'attr': { 'rows': '8', 'placeholder': 'admin.setting.system.security.ip_limit_sample'|trans }}) }} + {{ form_errors(form.admin_allow_hosts) }} +

    {{ 'admin.setting.system.security.ip_limit_description'|trans|nl2br }}

    +
    +
    + +
    +
    +
    + {{ 'admin.setting.system.security.force_ssl'|trans }} +
    +
    +
    + {% if app.request.secure %} + {{ form_widget(form.force_ssl) }} + {{ form_errors(form.force_ssl) }} + {% else %} + {{ form_widget(form.force_ssl, { 'attr': { 'disabled': 'disabled' }}) }} + {{ form_errors(form.force_ssl) }} +

    {{ 'admin.setting.system.security.force_ssl_description'|trans }}

    + {% endif %} +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    + +
    +
    +{% endblock %} diff --git a/app/template/admin/Setting/System/system.twig b/app/template/admin/Setting/System/system.twig new file mode 100644 index 000000000..66097d3a3 --- /dev/null +++ b/app/template/admin/Setting/System/system.twig @@ -0,0 +1,83 @@ +{# +This file is part of EC-CUBE + +Copyright(c) LOCKON CO.,LTD. All Rights Reserved. + +http://www.lockon.co.jp/ + +For the full copyright and license information, please view the LICENSE +file that was distributed with this source code. +#} + +{% extends '@admin/default_frame.twig' %} + +{% set menus = ['setting', 'system', 'system_index'] %} + +{% block title %}{{ 'admin.setting.system.system_info'|trans }}{% endblock %} +{% block sub_title %}{{ 'admin.setting.system'|trans }}{% endblock %} + +{% block main %} +
    +
    +
    +
    +
    +
    +
    +
    + {{ 'admin.setting.system.system_info'|trans }} + +
    +
    +
    + +
    +
    +
    +
    +
    + {% for key, item in info %} +
    +
    + {{item.title}} +
    +
    +
    +
    + {{item.value}} +
    +
    +
    +
    + {% endfor %} +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    + {{ 'admin.setting.system.system.php_info'|trans }} + +
    +
    +
    +
    +
    + +
    + +
    +
    + +
    +
    + +{% endblock %} \ No newline at end of file diff --git a/app/template/admin/Store/authentication_setting.twig b/app/template/admin/Store/authentication_setting.twig new file mode 100644 index 000000000..ef1918552 --- /dev/null +++ b/app/template/admin/Store/authentication_setting.twig @@ -0,0 +1,158 @@ +{# +This file is part of EC-CUBE + +Copyright(c) LOCKON CO.,LTD. All Rights Reserved. + +http://www.lockon.co.jp/ + +For the full copyright and license information, please view the LICENSE +file that was distributed with this source code. +#} +{% extends '@admin/default_frame.twig' %} + +{% set menus = ['store', 'authentication_setting'] %} + +{% block title %}{{ 'admin.store.setting'|trans }}{% endblock %} +{% block sub_title %}{{ 'admin.store'|trans }}{% endblock %} + +{% form_theme form '@admin/Form/bootstrap_4_horizontal_layout.html.twig' %} + +{% block stylesheet %} + +{% endblock %} + +{% block javascript %} + +{% endblock %} + + +{% block main %} +
    + {{ form_widget(form._token) }} +
    +
    +
    +
    +
    + {{'admin.store.setting.api_key_setting'|trans}} +
    + +
    +
    +
    +
    + {{ form.authentication_key.vars.label|trans }} + +
    +
    +
    + {{ form_widget(form.authentication_key) }} +
    + + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + + +{% endblock %} \ No newline at end of file diff --git a/app/template/admin/Store/plugin.twig b/app/template/admin/Store/plugin.twig new file mode 100644 index 000000000..ba0568d8f --- /dev/null +++ b/app/template/admin/Store/plugin.twig @@ -0,0 +1,62 @@ +{# +This file is part of EC-CUBE + +Copyright(c) LOCKON CO.,LTD. All Rights Reserved. + +http://www.lockon.co.jp/ + +For the full copyright and license information, please view the LICENSE +file that was distributed with this source code. +#} + +{% extends '@admin/default_frame.twig' %} + +{% set menus = ['store', 'plugin', 'plugin_list'] %} + +{% block title %}{{'admin.store.plugin.809'|trans}}{% endblock %} +{% block sub_title %}{{'admin.store.plugin.810'|trans}}{% endblock %} + +{% block javascript %} + +{% endblock javascript %} + +{% block sheetsheet %} + +{% endblock %} + +{% block main %} +
    +
    +
    +
    +
    + {{ 'admin.store.plugin.811'|trans }} +
    {{ 'admin.store.plugin.812'|trans }}
    +
    + {{ include('@admin/Store/plugin_table_official.twig', {'Plugins': officialPlugins}) }} + +
    + +
    +
    + {{ 'admin.store.plugin.813'|trans }} +
    {{ 'admin.store.plugin.814'|trans }}
    +
    + {{ include('@admin/Store/plugin_table.twig', {'Plugins': unofficialPlugins}) }} +
    +
    +
    +
    +{% endblock %} \ No newline at end of file diff --git a/app/template/admin/Store/plugin_confirm.twig b/app/template/admin/Store/plugin_confirm.twig new file mode 100644 index 000000000..8e1a80f5c --- /dev/null +++ b/app/template/admin/Store/plugin_confirm.twig @@ -0,0 +1,257 @@ +{# +This file is part of EC-CUBE + +Copyright(c) LOCKON CO.,LTD. All Rights Reserved. + +http://www.lockon.co.jp/ + +For the full copyright and license information, please view the LICENSE +file that was distributed with this source code. +#} +{% extends '@admin/default_frame.twig' %} + +{% set menus = ['store', 'plugin', 'plugin_list'] %} + +{% block title %} + {% if is_update %} + {{'admin.store.plugin_confirm.title.upgrade'|trans}} + {% else %} + {{'admin.store.plugin_confirm.title'|trans}} + {% endif %} +{% endblock %} +{% block sub_title %} + {{'admin.store.plugin_confirm.subtitle'|trans}} +{% endblock %} + +{% block javascript %} + +{% endblock %} + +{% block main %} +
    +
    +
    +
    +
    + + {% if is_update %} + {{ 'admin.store.plugin_confirm.header.upgrade'|trans }} + {% else %} + {{'admin.store.plugin_confirm.header'|trans}} + {% endif %} + +
    +
    +
    + {{ include('@admin/Store/plugin_confirm_panel.twig') }} +
    + +
    +
    + + {% if is_update %} + + {% else %} + + {% endif %} +
    +
    +
    +
    + + {% if is_update == false and requires|length > 0 %} +
    +
    + {{ 'admin.store.plugin_confirm.require.header'|trans({'%name%': item.name}) }} +
    +
    + {% for plugin in requires %} +
      +
    • {{ plugin.description }} {{ plugin.versions }}
    • +
    + {#{% include '@admin/Store/plugin_confirm_panel.twig' with {'item': plugin, 'is_update': is_update} only %}#} + {% endfor %} +
    +
    + {% endif %} +
    +
    +
    + + +{% endblock %} \ No newline at end of file diff --git a/app/template/admin/Store/plugin_confirm_panel.twig b/app/template/admin/Store/plugin_confirm_panel.twig new file mode 100644 index 000000000..1abfcf7df --- /dev/null +++ b/app/template/admin/Store/plugin_confirm_panel.twig @@ -0,0 +1,42 @@ +{# +This file is part of EC-CUBE + +Copyright(c) LOCKON CO.,LTD. All Rights Reserved. + +http://www.lockon.co.jp/ + +For the full copyright and license information, please view the LICENSE +file that was distributed with this source code. +#} +
    + + +
    +
    +
    +
    + {{ item.name }} +
    +
    {{ item.short_description }}
    + {% if is_update == false %} +

    {{ 'admin.store.plugin.price'|trans }} {{ item.price|price }} ({{ 'common.tax_include'|trans }})

    + {% endif %} +
    +
    + {{ include('@admin/Store/plugin_detail_info.twig') }} +
    +
    +
    + {% set version_check = item.version_check %} + {% if version_check == false %} +
    +
    +
    +

    + {{ 'admin.store.plugin_owners_search.modal.note'|trans({'%version%': constant('Eccube\\Common\\Constant::VERSION')}) }} +

    +
    +
    +
    + {% endif %} +
    diff --git a/app/template/admin/Store/plugin_confirm_uninstall.twig b/app/template/admin/Store/plugin_confirm_uninstall.twig new file mode 100644 index 000000000..f826f4642 --- /dev/null +++ b/app/template/admin/Store/plugin_confirm_uninstall.twig @@ -0,0 +1,61 @@ +{# +This file is part of EC-CUBE + +Copyright(c) LOCKON CO.,LTD. All Rights Reserved. + +http://www.lockon.co.jp/ + +For the full copyright and license information, please view the LICENSE +file that was distributed with this source code. +#} +{% extends '@admin/default_frame.twig' %} + +{% set menus = ['store', 'plugin', 'plugin_list'] %} + +{% block title %}{{ 'admin.store.plugin.delete.title'|trans }}{% endblock %} +{% block sub_title %}{{ 'admin.home.recommend_plugins.owner_store'|trans }}{% endblock %} + +{% block stylesheet %} + +{% endblock %} + +{% block main %} +
    +
    +
    +
    +
    + {{ 'admin.store.plugin.delete.confirm'|trans }} +
    +
    +
    +
    + +
    +
    +
    +
    + {{ 'admin.store.plugin.payment'|trans }} {{ 'admin.store.plugin.payment.last-version'|trans }} +
    + {{ 'admin.store.plugin.payment.introduction'|trans }} +
    +
    +
    + +
    +
    +
    +
    +
    +{% endblock %} diff --git a/app/template/admin/Store/plugin_confirm_uninstall_panel.twig b/app/template/admin/Store/plugin_confirm_uninstall_panel.twig new file mode 100644 index 000000000..f9dc7e178 --- /dev/null +++ b/app/template/admin/Store/plugin_confirm_uninstall_panel.twig @@ -0,0 +1,48 @@ +{# +This file is part of EC-CUBE + +Copyright(c) LOCKON CO.,LTD. All Rights Reserved. + +http://www.lockon.co.jp/ + +For the full copyright and license information, please view the LICENSE +file that was distributed with this source code. +#} +{% set is_supported_eccube_version = item.is_supported_eccube_version %} +
    + +
    + +
    + {{ item.summary }} +
    +
    + {% if item.promotion == 1 %} + {{ item.description|ellipsis(500) }} + {% else %} + {{ item.description|ellipsis(400) }} + {% endif %} +
    +
    +
    +
    +
    +
    {{ 'admin.product.price'|trans }}
    {{ item.price|price }}
    +
    {{ 'admin.store.plugin_owners_confirm.844'|trans }}
    {{ item.download_number }}
    +
    {{ 'admin.store.plugin_owners_panel.863'|trans }}
    {{ item.version }}
    +
    {{ 'admin.common.last_update_date'|trans }}
    {{ item.last_update_date|time_ago }}
    +
    {{ 'admin.store.plugin.detail.support'|trans }}
    {% for version in item.eccube_version %}{{ version }} {%- if loop.last == false%}, {% endif -%}{% endfor %}
    +
    {{ 'admin.store.plugin.detail.license'|trans }}
    {{ item.licence }}
    +
    + {% if is_supported_eccube_version == 0 %} +

    {{ 'admin.store.plugin.intro'|trans }} {{ constant('Eccube\\Common\\Constant::VERSION') }} {{ 'admin.store.plugin.unsupport-version'|trans }}

    + {% endif %} +

    + {{ 'admin.store.plugin.detail.develop'|trans }} : {% if item.developer_url is not null %}{{ item.developer }}{% else %}{{ item.developer }}{% endif %} +

    +
    +
    diff --git a/app/template/admin/Store/plugin_detail_info.twig b/app/template/admin/Store/plugin_detail_info.twig new file mode 100644 index 000000000..09c33a2ad --- /dev/null +++ b/app/template/admin/Store/plugin_detail_info.twig @@ -0,0 +1,28 @@ +{# +This file is part of EC-CUBE + +Copyright(c) LOCKON CO.,LTD. All Rights Reserved. + +http://www.lockon.co.jp/ + +For the full copyright and license information, please view the LICENSE +file that was distributed with this source code. +#} + + \ No newline at end of file diff --git a/app/template/admin/Store/plugin_detail_modal.twig b/app/template/admin/Store/plugin_detail_modal.twig new file mode 100644 index 000000000..28c08b79f --- /dev/null +++ b/app/template/admin/Store/plugin_detail_modal.twig @@ -0,0 +1,74 @@ + \ No newline at end of file diff --git a/app/template/admin/Store/plugin_handler.twig b/app/template/admin/Store/plugin_handler.twig new file mode 100644 index 000000000..464732ff5 --- /dev/null +++ b/app/template/admin/Store/plugin_handler.twig @@ -0,0 +1,97 @@ +{# +This file is part of EC-CUBE + +Copyright(c) LOCKON CO.,LTD. All Rights Reserved. + +http://www.lockon.co.jp/ + +For the full copyright and license information, please view the LICENSE +file that was distributed with this source code. +#} + +{% extends '@admin/default_frame.twig' %} + +{% set menus = ['store', 'plugin', 'plugin_handler'] %} + +{% block title %}{{'admin.store.plugin_handler.828'|trans}}{% endblock %} +{% block sub_title %}{{'admin.store.plugin_handler.829'|trans}}{% endblock %} + +{% block main %} + + + {% if handlersPerEvent|length > 0 %} + {% for event, handlersPerType in handlersPerEvent %} + {% for type,handlers in handlersPerType %} +
    +
    +
    +
    + {{ event }} / {{ type }} +
    +
    +
    +
    + + + + + + + + + + {% for handler in handlers %} + + + + + + + + + {% endfor %} +
    {{'admin.store.plugin_handler.830'|trans}}{{'admin.store.plugin_handler.831'|trans}}{{'admin.store.plugin_handler.832'|trans}}{{'admin.store.plugin_handler.833'|trans}}
    + {{ handler.plugin.name }} + + {{ handler.handler }} + + {{ handler.priority }} + + +
    +
    +
    +
    +
    + +
    + +
    + {% endfor %} + {% endfor %} + {% else %} +
    +
    +
    +
    + {{'admin.store.plugin_handler.836'|trans}} +
    +
    +

    {{'admin.store.plugin_handler.837'|trans}}

    +
    +
    +
    +
    + {% endif %} +{% endblock %} + diff --git a/app/template/admin/Store/plugin_install.twig b/app/template/admin/Store/plugin_install.twig new file mode 100644 index 000000000..3ecae5b3e --- /dev/null +++ b/app/template/admin/Store/plugin_install.twig @@ -0,0 +1,46 @@ +{# +This file is part of EC-CUBE + +Copyright(c) LOCKON CO.,LTD. All Rights Reserved. + +http://www.lockon.co.jp/ + +For the full copyright and license information, please view the LICENSE +file that was distributed with this source code. +#} +{% extends '@admin/default_frame.twig' %} + +{% set menus = ['store', 'plugin', 'plugin_list'] %} + +{% block title %}{{ 'admin.plugin.install.upload.title'|trans }}{% endblock %} +{% block sub_title %}{{ 'admin.store.plugin'|trans }}{% endblock %} + +{% block main %} +
    + {{ form_widget(form._token) }} +
    +
    +
    +
    +
    +
    {{ 'admin.store.plugin.upload'|trans }}
    +
    + +
    +
    + +
    + {{ form_widget(form.plugin_archive, {'attr': {'accept': 'application/zip,application/x-tar,application/x-gzip'}}) }} + {% for error in errors %} +
    {{ error.message|trans }}
    + {% endfor %} + +
    +
    +
    +
    +
    +
    +
    +
    +{% endblock %} \ No newline at end of file diff --git a/app/template/admin/Store/plugin_search.twig b/app/template/admin/Store/plugin_search.twig new file mode 100644 index 000000000..52aa8a636 --- /dev/null +++ b/app/template/admin/Store/plugin_search.twig @@ -0,0 +1,111 @@ +{# +This file is part of EC-CUBE + +Copyright(c) LOCKON CO.,LTD. All Rights Reserved. + +http://www.lockon.co.jp/ + +For the full copyright and license information, please view the LICENSE +file that was distributed with this source code. +#} + +{% extends '@admin/default_frame.twig' %} + +{% set menus = ['store', 'plugin', 'plugin_owners_search'] %} + +{% block title %}{{'admin.store.plugin_search.885'|trans}}{% endblock %} +{% block sub_title %}{{'admin.store.plugin_search.884'|trans}}{% endblock %} + +{% block stylesheet %} + +{% endblock %} +{% block main %} +
    +
    +
    + {% if Categories|length > 0 %} +
    +
    +
    +
    + {% for key,category in Categories %} + {{ category }} + {% endfor %} +
    +
    +
    +
    + {% endif %} + + + +
    +
    +
    {{ 'admin.store.plugin_owners_search.search_results'|trans({'%number%': pagination|length, '%total%' : total}) }}
    +
    +
    + {% if pagination|length > 0%} + {% for item in pagination %} +
    + {{ include('@admin/Store/plugin_search_panel.twig') }} +
    + {% endfor %} + {% endif %} +
    + + {% if pagination.totalItemCount > 0 %} +
    + {% include "@admin/pager.twig" with { 'pages' : pagination.paginationData, 'routes' : 'admin_store_plugin_owners_search_page' } %} +
    + {% endif %} +
    +
    +
    +
    +{% endblock %} diff --git a/app/template/admin/Store/plugin_search_panel.twig b/app/template/admin/Store/plugin_search_panel.twig new file mode 100644 index 000000000..146758a13 --- /dev/null +++ b/app/template/admin/Store/plugin_search_panel.twig @@ -0,0 +1,64 @@ +{# +This file is part of EC-CUBE + +Copyright(c) LOCKON CO.,LTD. All Rights Reserved. + +http://www.lockon.co.jp/ + +For the full copyright and license information, please view the LICENSE +file that was distributed with this source code. +#} + +
    + + {{ item.name }} + +
    +
    +
    +
    + {{ item.name }}({{ 'admin.store.plugin_owners_search.latest'|trans }}{{ item.version }}) +
    +
    {{ item.short_description }}
    +
    +
    +
    +

    {{ 'admin.store.plugin.price'|trans }} {{ item.price|price }} ({{ 'common.tax_include'|trans }})

    +
    +
    + {% if not item.price %} +
    +
    {{'admin.store.plugin_owners_search.dl'|trans}} {{ item.downloads|number_format }}
    +
    + {% endif %} +
    +
    +
    +
    {{ 'admin.store.plugin_owners_search.support'|trans }} {% for version in item.supported_versions %}{{ version }} {%- if loop.last == false%}, {% endif -%}{% endfor %}
    +
    +
    +
    +
    +
    +
    + {{'admin.store.plugin_owners_search.detail'|trans}} + {% if item.update_status == 1 %} + + {{ 'admin.store.plugin_owners_search.install.free'|trans }} + + {% elseif item.update_status == 2 %} + {{ 'admin.store.plugin.installed'|trans }} + {% elseif item.update_status == 3 %} + + {{ 'admin.store.plugin.update'|trans }} + + {% elseif item.update_status == 4 %} + + + + {% endif %} +
    +
    + + +{{ include('@admin/Store/plugin_detail_modal.twig') }} \ No newline at end of file diff --git a/app/template/admin/Store/plugin_table.twig b/app/template/admin/Store/plugin_table.twig new file mode 100644 index 000000000..9cd55b012 --- /dev/null +++ b/app/template/admin/Store/plugin_table.twig @@ -0,0 +1,156 @@ +{# +This file is part of EC-CUBE + +Copyright(c) LOCKON CO.,LTD. All Rights Reserved. + +http://www.lockon.co.jp/ + +For the full copyright and license information, please view the LICENSE +file that was distributed with this source code. +#} + +{% if Plugins|length > 0 %} +
    + + + + + + + + + + + + + {% for Plugin in Plugins %} + {% set form = plugin_forms[Plugin.id] %} + + + + + + + + + + + {% endfor %} + +
    {{ 'admin.store.plugin_table.887'|trans }}{{ 'admin.store.plugin_table.888'|trans }}{{ 'admin.store.plugin_table.889'|trans }}{{ 'admin.store.plugin_table.901'|trans }}{{ 'admin.store.plugin_table.890'|trans }} 
    + {{ Plugin.name }} + {{ Plugin.version }}{{ Plugin.code }} + {#TODO: readme of plugin #} + {#{% if attribute(app.config[Plugin.code].const, 'readme') is defined %} +
    + {{ 'admin.store.plugin_table.897'|trans }} + {% endif %}#} +
    + {% if Plugin.enabled %} + {{ 'common.enabled'|trans }} + {% else %} + {{ 'common.disabled'|trans }} + {% endif %} + + {% if Plugin.source == 0 %} + {{ form_widget(form._token) }} + {{ form_widget(form.plugin_id) }} + {{ form_widget(form.plugin_archive, {'attr': {'accept': 'application/zip,application/x-tar,application/x-gzip'}}) }} + {{ form_errors(form.plugin_archive) }} + + + {% endif %} + +
    +
    + {% if Plugin.enabled == false %} +
    + + + +
    + {% endif %} + {% if Plugin.enabled %} +
    + + + +
    + {% else %} +
    + + + +
    + {% endif %} + {% if configPages[Plugin.code] is defined %} +
    + + +
    + {% endif %} +
    +
    +
    +
    +{% else %} +
    +
    + {{ 'admin.store.plugin_table.900'|trans }} +
    +
    +{% endif %} + + diff --git a/app/template/admin/Store/plugin_table_official.twig b/app/template/admin/Store/plugin_table_official.twig new file mode 100644 index 000000000..b7dca2e2f --- /dev/null +++ b/app/template/admin/Store/plugin_table_official.twig @@ -0,0 +1,196 @@ +{# +This file is part of EC-CUBE + +Copyright(c) LOCKON CO.,LTD. All Rights Reserved. + +http://www.lockon.co.jp/ + +For the full copyright and license information, please view the LICENSE +file that was distributed with this source code. +#} + +{% if Plugins|length > 0 %} +
    + + + + + + + + + + + + + {% for key,Plugin in Plugins %} + {% set pluginDetail = officialPluginsDetail[key]|default(NULL) %} + + + + + + + + + {% endfor %} + +
    {{ 'admin.store.plugin_table_official.901'|trans }}{{ 'admin.store.unregistered_plugin_table.942'|trans }}{{ 'admin.store.unregistered_plugin_table.943'|trans }}{{ 'admin.store.plugin_table.901'|trans }}{{ 'admin.store.plugin_table_official.905'|trans }} 
    + + + + {{ Plugin.name }} + {{ Plugin.version }}

    {{ Plugin.code }}

    + {% if Plugin.id %} + {% if Plugin.enabled %} + {{ 'common.enabled'|trans }} + {% else %} + {{ 'common.disabled'|trans }} + {% endif %} + {% endif %} + + {% if Plugin.id and pluginDetail %} + {% if pluginDetail.update_status == 3 %} + {{ 'admin.store.plugin_table_official.916'|trans }} +
      +
    • {{ 'admin.store.plugin_table_official.917'|trans({'%version%' : pluginDetail.version}) }}
    • +
    • + {% set versions = '' %} + {% for version in pluginDetail.supported_versions %} + {% set versions = versions ~ version %} + {%- if loop.last == false%}{% set versions = versions ~ ',' %}{% endif -%} + {% endfor %} + {{ 'admin.store.plugin_table_official.918'|trans({'%versions%' : versions}) }} +
    • +
    • {{ 'admin.store.plugin_table_official.919'|trans({'%update_date%' : pluginDetail.update_date|time_ago}) }}
    • +
    + {% else %} +

    {{ 'admin.store.plugin_table_official.920'|trans }}。

    + {% endif %} + {% endif %} +
    + {% if Plugin.id %} +
    +
    +
    + {% if Plugin.enabled == false %} + + + + + {% endif %} +
    +
    + {% if Plugin.enabled %} + + + + {% else %} + + + + {% endif %} +
    +
    + {% if configPages[Plugin.code] is defined %} + + + + {% endif %} +
    +
    +
    + {% endif %} +
    +
    + {% if officialPluginsDetail|length == 0 %} +

    {{ 'admin.store.plugin.help'|trans }}

    + {% endif %} +{% else %} +
    +
    + {{ 'admin.store.plugin_table_official.923'|trans }} +
    +
    +{% endif %} + + diff --git a/app/template/admin/Store/template.twig b/app/template/admin/Store/template.twig new file mode 100644 index 000000000..76009fcd3 --- /dev/null +++ b/app/template/admin/Store/template.twig @@ -0,0 +1,131 @@ +{# +This file is part of EC-CUBE + +Copyright(c) LOCKON CO.,LTD. All Rights Reserved. + +http://www.lockon.co.jp/ + +For the full copyright and license information, please view the LICENSE +file that was distributed with this source code. +#} +{% extends '@admin/default_frame.twig' %} + +{% set menus = ['store', 'template', 'template_list'] %} + +{% block title %}{{ 'admin.store.template.template_list'|trans }}{% endblock %} +{% block sub_title %}{{ 'admin.store'|trans }}{% endblock %} + +{% form_theme form '@admin/Form/bootstrap_4_horizontal_layout.html.twig' %} + +{% block javascript %} + +{% endblock javascript %} + +{% block main %} +
    + {{ form_widget(form._token) }} + {{ form_widget(form.selected) }} +
    +
    +
    + +
    +
    {{ 'admin.store.template.template_list'|trans }}
    +
    + + + + + + + + + + + {% for Template in Templates %} + + + + + + + {% endfor %} + +
    {{ 'admin.store.template.select'|trans }}{{ 'admin.store.template.template_name'|trans }}{{ 'admin.store.template.save_path'|trans }}
    + + {{ Template.name }} +
      +
    • app/template/{{Template.code }}
    • +
    • html/template/{{ Template.code }}
    • +
    +
    +
    +
    + + + +
    +
    +
    + + +
    + +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +{% endblock %} diff --git a/app/template/admin/Store/template_add.twig b/app/template/admin/Store/template_add.twig new file mode 100644 index 000000000..0db56dffe --- /dev/null +++ b/app/template/admin/Store/template_add.twig @@ -0,0 +1,81 @@ +{# +This file is part of EC-CUBE + +Copyright(c) LOCKON CO.,LTD. All Rights Reserved. + +http://www.lockon.co.jp/ + +For the full copyright and license information, please view the LICENSE +file that was distributed with this source code. +#} +{% extends '@admin/default_frame.twig' %} + +{% set menus = ['store', 'template', 'template_install'] %} + +{% block title %}{{ 'admin.store.template.template_install__page_title'|trans }}{% endblock %} +{% block sub_title %}{{ 'admin.store'|trans }}{% endblock %} + +{% form_theme form '@admin/Form/bootstrap_4_horizontal_layout.html.twig' %} + +{% block main %} +
    + {{ form_widget(form._token) }} +
    +
    +
    +
    +
    {{ 'admin.store.template.upload_new_template'|trans }}
    +
    +
    +
    {{ 'admin.store.template.template_code'|trans }}
    +
    + {{ form_widget(form.code) }} + {{ form_errors(form.code) }} +
    +
    + +
    +
    {{ 'admin.store.template.template_name'|trans }}
    +
    + {{ form_widget(form.name) }} + {{ form_errors(form.name) }} +
    +
    + +
    +
    {{ 'admin.store.template.template_file'|trans }} +
    {{ 'admin.store.template.file_format'|trans }} +
    +
    + {{ form_widget(form.file, {'attr': {'accept': 'application/zip,application/x-tar,application/x-gzip'}}) }} + {{ form_errors(form.file) }} +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +{% endblock %} diff --git a/app/template/admin/Store/unregisterd_plugin_table.twig b/app/template/admin/Store/unregisterd_plugin_table.twig new file mode 100644 index 000000000..e03cd43ae --- /dev/null +++ b/app/template/admin/Store/unregisterd_plugin_table.twig @@ -0,0 +1,64 @@ +{# +This file is part of EC-CUBE + +Copyright(c) LOCKON CO.,LTD. All Rights Reserved. + +http://www.lockon.co.jp/ + +For the full copyright and license information, please view the LICENSE +file that was distributed with this source code. +#} +
    + + + + + + + + + + + + {% for Plugin in Plugins %} + + + {% if Plugin.name is defined %} + + {% else %} + + {% endif %} + {% if Plugin.version is defined %} + + {% else %} + + {% endif %} + {% if Plugin.code is defined %} + + {% else %} + + {% endif %} + + + + + {% endfor %} + +
    {{'admin.store.unregistered_plugin_table.941'|trans}}{{'admin.store.unregistered_plugin_table.942'|trans}}{{'admin.store.unregistered_plugin_table.943'|trans}}{{'admin.store.unregistered_plugin_table.944'|trans}}{{'admin.store.unregistered_plugin_table.945'|trans}}
    + {{ Plugin.name }} + + {{'admin.store.unregistered_plugin_table.946'|trans}} + {{ Plugin.version }}{{'admin.store.unregistered_plugin_table.947'|trans}}

    {{ Plugin.code }}

    + {% if attribute(app.config[Plugin.code].const, 'readme') is defined %} + {{ 'admin.store.plugin_table.897'|trans }} + {% endif %} +
    {{'admin.store.unregistered_plugin_table.949'|trans}} +  -  + + {% if unregisteredPluginsConfigPages[Plugin.code] is defined %} + {{'admin.store.unregistered_plugin_table.950'|trans}} + {% else %} +  -  + {% endif %} +
    +
    diff --git a/app/template/admin/login.twig b/app/template/admin/login.twig new file mode 100644 index 000000000..fbd7fd095 --- /dev/null +++ b/app/template/admin/login.twig @@ -0,0 +1,49 @@ +{# +This file is part of EC-CUBE + +Copyright(c) LOCKON CO.,LTD. All Rights Reserved. + +http://www.lockon.co.jp/ + +For the full copyright and license information, please view the LICENSE +file that was distributed with this source code. +#} +{% extends '@admin/login_frame.twig' %} + +{% form_theme form '@admin/Form/bootstrap_4_horizontal_layout.html.twig' %} + +{% block main %} + +
    +
    +
    +
    + {{ include('@admin/alert.twig') }} +
    + +

    +
    + {{ form_widget(form.login_id, {'id': 'login_id', 'attr': {'placeholder': 'admin.login.login_id', 'autofocus': true}}) }} +
    +
    + {{ form_widget(form.password, {'attr': {'placeholder': 'admin.login.password'}}) }} +
    + {% if error %} +
    + {{ error.messageKey|trans(error.messageData, 'validators')|nl2br }} +
    + {% endif %} + + {{ form_rest(form) }} +
    +
    +
    +
    +

    + {{ 'common.copyright'|trans }} 2000-{{ "now"|date("Y") }} LOCKON CO.,LTD +

    +
    +
    +
    + +{% endblock %} diff --git a/app/template/default/Block/cart.twig b/app/template/default/Block/cart.twig new file mode 100644 index 000000000..b88061301 --- /dev/null +++ b/app/template/default/Block/cart.twig @@ -0,0 +1,54 @@ + +{% set Carts = get_all_carts() %} +{% set totalPrice = get_carts_total_price() %} +{% set totalQuantity = get_carts_total_quantity() %} + +
    + + {{ totalQuantity|number_format }} + {{ totalPrice|price }} +
    +{% if totalQuantity > 0 %} +
    + {% for Cart in Carts %} + {% for CartItem in Cart.CartItems %} + {% set ProductClass = CartItem.ProductClass %} + {% set Product = ProductClass.Product %} +
    + {# Image #} + {% include "Components/product/image.twig" with {'product': Product, 'imgClass': 'product-thumb mr-3'} %} + +
    +
    + {# Name #} + {% include "Components/product/name.twig" with {'product': Product} %} +
    + + {# Options #} + {% include "Components/product/options.twig" with {'productClass': ProductClass, class: 'mini-product-options'} %} + + {# Price #} + {% include "Components/product/price.twig" with {'product': CartItem, 'type': 'mini' } %} +
    + {{ 'common.quantity'|trans }} {{ CartItem.quantity|number_format }} +
    +
    +
    + {% endfor %} + {% endfor %} +
    + + {{ 'front.block.cart.go_to_cart'|trans }} + + + {{ 'common.cancel'|trans }} + +
    +
    +{% else %} +
    + +
    +{% endif %} \ No newline at end of file diff --git a/app/template/default/Block/category.twig b/app/template/default/Block/category.twig new file mode 100644 index 000000000..37e73817c --- /dev/null +++ b/app/template/default/Block/category.twig @@ -0,0 +1,37 @@ +
    +
    +

    + {{ 'front.block.category.category__en'|trans }} +

    + + + +
    +
    diff --git a/app/template/default/Block/category_nav_pc.twig b/app/template/default/Block/category_nav_pc.twig new file mode 100644 index 000000000..b65d3bb5c --- /dev/null +++ b/app/template/default/Block/category_nav_pc.twig @@ -0,0 +1,33 @@ + +{% set Categories = repository('Eccube\\Entity\\Category').getList() %} + +{% macro tree(Category) %} + {% from _self import tree %} + + {{ Category.name }} + + {% if Category.children|length > 0 %} + + {% endif %} +{% endmacro %} + +{# @see https://github.com/bolt/bolt/pull/2388 #} +{% from _self import tree %} + +
    +
    + +
    +
    diff --git a/app/template/default/Block/category_nav_sp.twig b/app/template/default/Block/category_nav_sp.twig new file mode 100644 index 000000000..6ed2758c7 --- /dev/null +++ b/app/template/default/Block/category_nav_sp.twig @@ -0,0 +1,65 @@ + +{% set Categories = repository('Eccube\\Entity\\Category').getList() %} + +{% macro tree(Category) %} + {% from _self import tree %} + + + {{ Category.name }} + + {% if Category.children|length > 0 %} + {% for ChildCategory in Category.children %} + {{ tree(ChildCategory) }} + {% endfor %} + {% endif %} + + {# {% if Category.children|length > 0 %} + + {{ Category.name }} + +
    + {% for ChildCategory in Category.children %} + {% if ChildCategory.children|length > 0 %} +
    +
    + +
    +
    + {{ tree(ChildCategory) }} +
    +
    + {% else %} + + {{ ChildCategory.name }} + + {% endif %} + {% endfor %} +
    + {% endif %} #} +{% endmacro %} + +{# @see https://github.com/bolt/bolt/pull/2388 #} +{% from _self import tree %} + +
    + + {% for Category in Categories %} +
    +
    + +
    +
    + {{ tree(Category) }} +
    +
    + {% endfor %} +
    + diff --git a/app/template/default/Block/eyecatch.twig b/app/template/default/Block/eyecatch.twig new file mode 100644 index 000000000..ec022c150 --- /dev/null +++ b/app/template/default/Block/eyecatch.twig @@ -0,0 +1,13 @@ +
    +
    +
    + {{ 'front.block.eyecatch.title__en'|trans }} +

    {{ 'front.block.eyecatch.title__ja'|trans }}

    +

    {{ 'front.block.eyecatch.descriptiron'|trans|nl2br }}

    + {{ 'front.block.eyecatch.view_list'|trans }} +
    +
    + +
    +
    +
    \ No newline at end of file diff --git a/app/template/default/Block/footer.twig b/app/template/default/Block/footer.twig new file mode 100644 index 000000000..97bbd5439 --- /dev/null +++ b/app/template/default/Block/footer.twig @@ -0,0 +1,35 @@ +
    +
    + +
    +
    diff --git a/app/template/default/Block/header.twig b/app/template/default/Block/header.twig new file mode 100644 index 000000000..28a0bca7e --- /dev/null +++ b/app/template/default/Block/header.twig @@ -0,0 +1,18 @@ +
    +
    +
    + + {{ include('Block/nav_sp.twig') }} +
    +
    +
    + {{ include('Block/login.twig') }} +
    +
    + {{ include('Block/cart.twig') }} +
    +
    +
    +
    diff --git a/app/template/default/Block/login.twig b/app/template/default/Block/login.twig new file mode 100644 index 000000000..1039e4879 --- /dev/null +++ b/app/template/default/Block/login.twig @@ -0,0 +1,45 @@ + diff --git a/app/template/default/Block/login_sp.twig b/app/template/default/Block/login_sp.twig new file mode 100644 index 000000000..a49e23c51 --- /dev/null +++ b/app/template/default/Block/login_sp.twig @@ -0,0 +1,41 @@ +
    + + + {{ 'front.block.login.to_cart'|trans }} + + {% if is_granted('ROLE_USER') %} + + + {{ 'front.block.login.mypage'|trans }} + + {% if BaseInfo.option_favorite_product %} + + + {{ 'front.block.login.favorite'|trans }} + + {% endif %} + + + {{ 'front.block.login.logout'|trans }} + + {% else %} + + + {{ 'front.block.login.customer_registration'|trans }} + + {% if BaseInfo.option_favorite_product %} + + + {{ 'front.block.login.favorite'|trans }} + + {% endif %} + + + {{ 'front.block.login.login'|trans }} + + {% endif %} + + + {{ 'front.block.login.to_home'|trans }} + +
    diff --git a/app/template/default/Block/logo.twig b/app/template/default/Block/logo.twig new file mode 100644 index 000000000..4a68e96d7 --- /dev/null +++ b/app/template/default/Block/logo.twig @@ -0,0 +1,11 @@ + diff --git a/app/template/default/Block/nav_sp.twig b/app/template/default/Block/nav_sp.twig new file mode 100644 index 000000000..280b1d6f5 --- /dev/null +++ b/app/template/default/Block/nav_sp.twig @@ -0,0 +1,3 @@ +
    + +
    \ No newline at end of file diff --git a/app/template/default/Block/new_item.twig b/app/template/default/Block/new_item.twig new file mode 100644 index 000000000..ba1f43be9 --- /dev/null +++ b/app/template/default/Block/new_item.twig @@ -0,0 +1,41 @@ + +
    +
    +

    + {{ 'front.block.new_item.title__en'|trans }} +

    + +
    +
    diff --git a/app/template/default/Block/news.twig b/app/template/default/Block/news.twig new file mode 100644 index 000000000..95ee97c49 --- /dev/null +++ b/app/template/default/Block/news.twig @@ -0,0 +1,38 @@ + +{% set NewsList = repository('Eccube\\Entity\\News').getList() %} + +
    +
    +

    + {{ 'front.block.news.title__en'|trans }} +

    +
    + {% set firstItem = NewsList|first %} + {% for News in NewsList %} +
    +
    +

    + {% if News.description or News.url %} + + {% else %} + {{ News.publish_date|date_day }} - {{ News.title }} + {% endif %} +

    +
    + +
    +
    +

    {{ News.description|raw|nl2br }}

    + {% if News.url %} + {{ 'front.block.news.see_details'|trans }} + {% endif %} +
    +
    +
    + {% endfor %} +
    +
    +
    diff --git a/app/template/default/Block/search_product.twig b/app/template/default/Block/search_product.twig new file mode 100644 index 000000000..113989279 --- /dev/null +++ b/app/template/default/Block/search_product.twig @@ -0,0 +1,12 @@ + +{% form_theme form 'Form/form_div_layout.twig' %} +
    +
    + {{ form_widget(form.category_id, {'id': null, 'attr': {'aria-label': 'Danh mục'} }) }} + {{ form_label(form.name, '', { 'label_attr': { 'class': 'd-none' }}) }} + {{ form_widget(form.name, {'id': null, 'attr': {'class': 'form-control rounded-right', 'placeholder' : 'common.search_keyword', 'aria-label': 'Nhập từ khóa' }} ) }} + +
    +
    diff --git a/app/template/default/Block/topic.twig b/app/template/default/Block/topic.twig new file mode 100644 index 000000000..f43f120ab --- /dev/null +++ b/app/template/default/Block/topic.twig @@ -0,0 +1,27 @@ +
    +
    +

    + {{ 'front.block.topic.topic__en'|trans }} +

    +
    +
    +
    +
    + + + +
    {{ 'front.block.topic.title__gelato'|trans }}
    +
    +
    +
    +
    + + + +
    {{ 'front.block.topic.title__ice'|trans }}
    +
    +
    +
    +
    +
    +
    diff --git a/app/template/default/Cart/index.twig b/app/template/default/Cart/index.twig new file mode 100644 index 000000000..85f7153ab --- /dev/null +++ b/app/template/default/Cart/index.twig @@ -0,0 +1,173 @@ + +{% extends 'default_frame.twig' %} + +{% set body_class = 'cart_page' %} + +{% block main %} + {% include "Components/heading.twig" with {'title': 'front.cart.title' } %} + + {% include "Components/checkout/progress-bar.twig" with {'step1': 'is-complete' } %} + + {% set productStr = app.session.flashbag.get('eccube.front.request.product') %} + {% for error in app.session.flashbag.get('eccube.front.request.error') %} + {% set idx = loop.index0 %} +
    +
    +
    + + {% if productStr[idx] is defined %} + {{ error|trans({'%product%':productStr[idx]})|nl2br }} + {% else %} + {{ error|trans|nl2br }} + {% endif %} +
    +
    +
    + {% endfor %} + {% for error in app.session.flashbag.get('eccube.front.cart.error') %} + {% include "Components/error.twig" with {'message': error} %} + {% endfor %} + {% if totalQuantity > 0 %} + {% if Carts|length > 1 %} + {% include "Components/error.twig" with {'message': 'front.cart.divide_cart'} %} + {% endif %} + +
    + {% for CartIndex,Cart in Carts %} + {% set cartKey = Cart.cart_key %} + {% for error in app.session.flashbag.get('eccube.front.cart.' ~ cartKey ~ '.request.error') %} + {% include "Components/error.twig" with {'message': error} %} + {% endfor %} +
    +
    +
    + {{ 'front.cart.delete'|trans }} +
    +
    + {{ 'front.cart.product'|trans }} +
    +
    + {{ 'common.quantity'|trans }} +
    +
    + {{ 'common.subtotal'|trans }} +
    +
    +
    + + {% for CartItem in Cart.CartItems %} + {% set ProductClass = CartItem.ProductClass %} + {% set Product = ProductClass.Product %} +
    +
    +
    + + + +
    +
    +
    + {# Image #} + {% include "Components/product/image.twig" with {'product': Product, 'type': 'link', 'linkClass': 'align-self-center mr-3', 'imgClass': 'product-small'} %} + +
    +
    + {# Name #} + {% include "Components/product/name.twig" with {'product': Product} %} +
    + + {# Options #} + {% include "Components/product/options.twig" with {'productClass': ProductClass, class: 'cart-item__options'} %} + + {# Price #} + {% include "Components/product/price.twig" with {'product': CartItem, type: 'cart'} %} + +
    + {{ 'common.subtotal__with_separator'|trans }} {{ CartItem.total_price|price }} +
    +
    +
    +
    +
    +
    + {% if CartItem.quantity > 1 %} + + + + {% else %} +
    + +
    + {% endif %} +
    {{ CartItem.quantity|number_format }}
    + + + +
    +
    +
    + {{ CartItem.total_price|price }} +
    +
    +
    + {% endfor %} + +
    + {% if BaseInfo.delivery_free_amount and BaseInfo.delivery_free_quantity %} + {% if is_delivery_free[cartKey] %} + + {% else %} + + {% endif %} + {% elseif BaseInfo.delivery_free_amount %} + {% if is_delivery_free[cartKey] %} + + {% else %} + + {% endif %} + {% elseif BaseInfo.delivery_free_quantity %} + {% if is_delivery_free[cartKey] %} + + {% else %} + + {% endif %} + {% endif %} +
    +
    +
    +
    + {{ 'common.total__with_separator'|trans }} + {{ Cart.totalPrice|price }} +
    + {{ 'front.cart.checkout'|trans }} + + {% if loop.last %} + {{ 'front.cart.continue'|trans }} + {% endif %} +
    +
    + {% endfor %} +
    + {% else %} + {% for CartIndex,Cart in Carts %} + {% set cartKey = Cart.cart_key %} + {% for error in app.session.flashbag.get('eccube.front.cart.' ~ cartKey ~ '.request.error') %} + {% include "Components/error.twig" with {'message': error} %} + {% endfor %} + {% endfor %} + {% include "Components/error.twig" with {'message': 'front.cart.no_items'} %} + {% endif %} + +{% endblock %} diff --git a/app/template/default/Components/checkout/order-summary.twig b/app/template/default/Components/checkout/order-summary.twig new file mode 100644 index 000000000..2ab5d8da5 --- /dev/null +++ b/app/template/default/Components/checkout/order-summary.twig @@ -0,0 +1,49 @@ +
    +
    + + +
    +
    \ No newline at end of file diff --git a/app/template/default/Components/checkout/progress-bar.twig b/app/template/default/Components/checkout/progress-bar.twig new file mode 100644 index 000000000..0afda57d2 --- /dev/null +++ b/app/template/default/Components/checkout/progress-bar.twig @@ -0,0 +1,39 @@ +
    +
    + +
    +
    \ No newline at end of file diff --git a/app/template/default/Components/error.twig b/app/template/default/Components/error.twig new file mode 100644 index 000000000..4e5016835 --- /dev/null +++ b/app/template/default/Components/error.twig @@ -0,0 +1,8 @@ +
    +
    +
    + + {{ message|trans|nl2br }} +
    +
    +
    \ No newline at end of file diff --git a/app/template/default/Components/form/address.twig b/app/template/default/Components/form/address.twig new file mode 100644 index 000000000..0a853f49f --- /dev/null +++ b/app/template/default/Components/form/address.twig @@ -0,0 +1,27 @@ +{% extends 'Components/form/base_input.twig' %} +{% set custom_class = customClass|default('') %} + +{% block formLabel %} + {{ form_label(form.address, 'common.address', { 'label_attr': { 'class': 'col-form-label' }}) }} +{% endblock %} + +{% block formContent %} +
    +
    + {{ form_widget(form.address.pref, { 'attr': {'class': 'form-control w-auto' }}) }} + {{ form_errors(form.address.pref) }} +
    +
    +
    +
    + {{ form_widget(form.address.addr01, { 'attr': { 'placeholder': 'common.address_sample_01', 'class': 'form-control' }}) }} + {{ form_errors(form.address.addr01) }} +
    +
    +
    +
    + {{ form_widget(form.address.addr02, { 'attr': { 'placeholder': 'common.address_sample_02', 'class': 'form-control' }}) }} + {{ form_errors(form.address.addr02) }} +
    +
    +{% endblock %} \ No newline at end of file diff --git a/app/template/default/Components/form/base_input.twig b/app/template/default/Components/form/base_input.twig new file mode 100644 index 000000000..6b8e018b3 --- /dev/null +++ b/app/template/default/Components/form/base_input.twig @@ -0,0 +1,8 @@ +
    +
    + {% block formLabel %} {% endblock %} +
    +
    + {% block formContent %} {% endblock %} +
    +
    \ No newline at end of file diff --git a/app/template/default/Components/form/birthday.twig b/app/template/default/Components/form/birthday.twig new file mode 100644 index 000000000..62130a1ba --- /dev/null +++ b/app/template/default/Components/form/birthday.twig @@ -0,0 +1,25 @@ +{% extends 'Components/form/base_input.twig' %} +{% set custom_class = customClass|default('') %} + +{% block formLabel %} + {{ form_label(form.birth, 'common.birth_day', { 'label_attr': { 'class': 'col-form-label' }}) }} +{% endblock %} + +{% block formContent %} +
    +
    +
    +
    + {{ form_widget(form.birth.day, { 'attr': { 'class': 'form-control' }}) }} +
    +
    + {{ form_widget(form.birth.month, { 'attr': { 'class': 'form-control' }}) }} +
    +
    + {{ form_widget(form.birth.year, { 'attr': { 'class': 'form-control' }}) }} +
    +
    + {{ form_errors(form.birth) }} +
    +
    +{% endblock %} \ No newline at end of file diff --git a/app/template/default/Components/form/company.twig b/app/template/default/Components/form/company.twig new file mode 100644 index 000000000..51be6f4fa --- /dev/null +++ b/app/template/default/Components/form/company.twig @@ -0,0 +1,15 @@ +{% extends 'Components/form/base_input.twig' %} +{% set custom_class = customClass|default('') %} + +{% block formLabel %} + {{ form_label(form.company_name, 'common.company_name', { 'label_attr': { 'class': 'col-form-label' }}) }} +{% endblock %} + +{% block formContent %} +
    +
    + {{ form_widget(form.company_name, { 'attr': { 'class': 'form-control' }}) }} + {{ form_errors(form.company_name) }} +
    +
    +{% endblock %} \ No newline at end of file diff --git a/app/template/default/Components/form/email.twig b/app/template/default/Components/form/email.twig new file mode 100644 index 000000000..8e3fca67b --- /dev/null +++ b/app/template/default/Components/form/email.twig @@ -0,0 +1,21 @@ +{% extends 'Components/form/base_input.twig' %} +{% set custom_class = customClass|default('') %} + +{% block formLabel %} + {{ form_label(form.email, 'common.mail_address', { 'label_attr': { 'class': 'col-form-label' }}) }} +{% endblock %} + +{% block formContent %} +
    +
    + {{ form_widget(form.email.first, { 'attr': { 'placeholder': 'common.mail_address_sample', 'class': 'form-control' }}) }} + {{ form_errors(form.email.first) }} +
    +
    +
    +
    + {{ form_widget(form.email.second, { 'attr': { 'placeholder': 'common.repeated_confirm', 'class': 'form-control' }}) }} + {{ form_errors(form.email.second) }} +
    +
    +{% endblock %} \ No newline at end of file diff --git a/app/template/default/Components/form/gender.twig b/app/template/default/Components/form/gender.twig new file mode 100644 index 000000000..34569d321 --- /dev/null +++ b/app/template/default/Components/form/gender.twig @@ -0,0 +1,15 @@ +{% extends 'Components/form/base_input.twig' %} +{% set custom_class = customClass|default('') %} + +{% block formLabel %} + {{ form_label(form.sex, 'common.gender', { 'label_attr': { 'class': 'col-form-label' }}) }} +{% endblock %} + +{% block formContent %} +
    +
    + {{ form_widget(form.sex, { 'attr': { 'class': 'form-control' }}) }} + {{ form_errors(form.sex) }} +
    +
    +{% endblock %} \ No newline at end of file diff --git a/app/template/default/Components/form/input.twig b/app/template/default/Components/form/input.twig new file mode 100644 index 000000000..6bc5bdd78 --- /dev/null +++ b/app/template/default/Components/form/input.twig @@ -0,0 +1,24 @@ +{% extends 'Components/form/base_input.twig' %} +{% set custom_class = customClass|default('') %} + +{% block formLabel %} + {{ form_label(form[field], label, { 'label_attr': { 'class': 'col-form-label' }}) }} +{% endblock %} + +{% block formContent %} +
    +
    + {{ form_widget(form[field], { 'attr': + { + 'class': 'form-control', + 'placeholder' : placeholder|default('')|trans + } + }) + }} + {{ form_errors(form[field]) }} + {% if help|default('false') %} + {{ helpText|default('')|trans }} + {% endif %} +
    +
    +{% endblock %} \ No newline at end of file diff --git a/app/template/default/Components/form/job.twig b/app/template/default/Components/form/job.twig new file mode 100644 index 000000000..2b1109c3e --- /dev/null +++ b/app/template/default/Components/form/job.twig @@ -0,0 +1,15 @@ +{% extends 'Components/form/base_input.twig' %} +{% set custom_class = customClass|default('') %} + +{% block formLabel %} + {{ form_label(form.job, 'common.job', { 'label_attr': { 'class': 'col-form-label' }}) }} +{% endblock %} + +{% block formContent %} +
    +
    + {{ form_widget(form.job, { 'attr': { 'class': 'form-control' }}) }} + {{ form_errors(form.job) }} +
    +
    +{% endblock %} \ No newline at end of file diff --git a/app/template/default/Components/form/name.twig b/app/template/default/Components/form/name.twig new file mode 100644 index 000000000..743e4d021 --- /dev/null +++ b/app/template/default/Components/form/name.twig @@ -0,0 +1,21 @@ +{% extends 'Components/form/base_input.twig' %} +{% set custom_class = customClass|default('') %} + +{% block formLabel %} + {{ form_label(form.name, 'common.name', { 'label_attr': { 'class': ' col-form-label' }}) }} +{% endblock %} + +{% block formContent %} +
    +
    + {{ form_widget(form.name.name01, { 'attr': { 'placeholder': 'common.last_name', 'class': 'form-control' }}) }} + {{ form_errors(form.name.name01) }} +
    +
    + {{ form_widget(form.name.name02, { 'attr': { 'placeholder': 'common.first_name', 'class': 'form-control' }}) }} + {{ form_errors(form.name.name02) }} +
    +
    + {{ form_widget(form.kana.kana01, { type : 'hidden', value: 'カナ'}) }} + {{ form_widget(form.kana.kana02, { type : 'hidden', value: 'カナ'}) }} +{% endblock %} \ No newline at end of file diff --git a/app/template/default/Components/form/options_render.twig b/app/template/default/Components/form/options_render.twig new file mode 100644 index 000000000..07b7350eb --- /dev/null +++ b/app/template/default/Components/form/options_render.twig @@ -0,0 +1,20 @@ +{% for f in form if f.vars.eccube_form_options.auto_render %} + {% if f.vars.eccube_form_options.form_theme %} + {% form_theme f f.vars.eccube_form_options.form_theme %} + {{ form_row(f) }} + {% else %} +
    +
    + {{ form_label(f, { 'label_attr': { 'class': 'col-form-label' }}) }} +
    +
    +
    +
    + {{ form_widget(f, { 'attr': { 'class': 'form-control' }}) }} + {{ form_errors(f) }} +
    +
    +
    +
    + {% endif %} +{% endfor %} \ No newline at end of file diff --git a/app/template/default/Components/form/password.twig b/app/template/default/Components/form/password.twig new file mode 100644 index 000000000..a5ed48e79 --- /dev/null +++ b/app/template/default/Components/form/password.twig @@ -0,0 +1,27 @@ +{% extends 'Components/form/base_input.twig' %} +{% set custom_class = customClass|default('') %} + +{% block formLabel %} + {{ form_label(form.password, 'common.password', { 'label_attr': { 'class': 'col-form-label' }}) }} +{% endblock %} + +{% block formContent %} +
    +
    + {{ form_widget(form.password.first, { + 'attr': { 'class': 'form-control', 'placeholder': 'common.password_sample'|trans({ '%min%': eccube_config.eccube_password_min_len, '%max%': eccube_config.eccube_password_max_len }) }, + 'type': 'password' + }) }} + {{ form_errors(form.password.first) }} +
    +
    +
    +
    + {{ form_widget(form.password.second, { + 'attr': { 'class': 'form-control', 'placeholder': 'common.repeated_confirm'|trans }, + 'type': 'password' + }) }} + {{ form_errors(form.password.second) }} +
    +
    +{% endblock %} \ No newline at end of file diff --git a/app/template/default/Components/form/phone.twig b/app/template/default/Components/form/phone.twig new file mode 100644 index 000000000..e2d78e036 --- /dev/null +++ b/app/template/default/Components/form/phone.twig @@ -0,0 +1,15 @@ +{% extends 'Components/form/base_input.twig' %} +{% set custom_class = customClass|default('') %} + +{% block formLabel %} + {{ form_label(form.phone_number, 'common.phone_number', { 'label_attr': { 'class': 'col-form-label' }}) }} +{% endblock %} + +{% block formContent %} +
    +
    + {{ form_widget(form.phone_number, { 'attr': { 'class': 'form-control' }}) }} + {{ form_errors(form.phone_number) }} +
    +
    +{% endblock %} \ No newline at end of file diff --git a/app/template/default/Components/form/policy.twig b/app/template/default/Components/form/policy.twig new file mode 100644 index 000000000..84d36f9b6 --- /dev/null +++ b/app/template/default/Components/form/policy.twig @@ -0,0 +1,18 @@ +{% extends 'Components/form/base_input.twig' %} +{% set custom_class = customClass|default('') %} + +{% block formLabel %}{% endblock %} + +{% block formContent %} +
    +
    +
    + {{ form_widget(form.user_policy_check, { 'attr': { 'class': 'form-check-input' }}) }} + + {{ form_errors(form.user_policy_check) }} +
    +
    +
    +{% endblock %} \ No newline at end of file diff --git a/app/template/default/Components/form/postcode.twig b/app/template/default/Components/form/postcode.twig new file mode 100644 index 000000000..592bc456c --- /dev/null +++ b/app/template/default/Components/form/postcode.twig @@ -0,0 +1,23 @@ +{% extends 'Components/form/base_input.twig' %} +{% set custom_class = customClass|default('') %} + +{% block formLabel %} + {{ form_label(form.postal_code, 'common.postal_code', { 'label_attr': { 'class': 'col-form-label' }}) }} +{% endblock %} + +{% block formContent %} +
    +
    +
    +
    + {{ form_widget(form.postal_code, { 'attr': { 'class': 'form-control' }}) }} + {{ form_errors(form.postal_code) }} +
    + +
    +
    +
    +{% endblock %} \ No newline at end of file diff --git a/app/template/default/Components/heading.twig b/app/template/default/Components/heading.twig new file mode 100644 index 000000000..8774006cd --- /dev/null +++ b/app/template/default/Components/heading.twig @@ -0,0 +1,7 @@ +
    +
    +

    + {{ title|trans }}{% if subTitle is defined %} / {{subTitle|trans}}{% endif %} +

    +
    +
    \ No newline at end of file diff --git a/app/template/default/Components/modal.twig b/app/template/default/Components/modal.twig new file mode 100644 index 000000000..ecc67a658 --- /dev/null +++ b/app/template/default/Components/modal.twig @@ -0,0 +1,18 @@ + \ No newline at end of file diff --git a/app/template/default/Components/product/add-to-cart.twig b/app/template/default/Components/product/add-to-cart.twig new file mode 100644 index 000000000..478499e0f --- /dev/null +++ b/app/template/default/Components/product/add-to-cart.twig @@ -0,0 +1,33 @@ +
    + {% if product.stock_find %} + {% if form.classcategory_id1 is defined %} +
    + {{ form_widget(form.classcategory_id1, {'attr': {'class': 'classcategory_id1', 'aria-label': 'Tùy chọn 1'}}) }} + {{ form_errors(form.classcategory_id1) }} +
    + {% if form.classcategory_id2 is defined %} +
    + {{ form_widget(form.classcategory_id2, {'attr': {'class': 'classcategory_id2', 'aria-label': 'Tùy chọn 2'}}) }} + {{ form_errors(form.classcategory_id2) }} +
    + {% endif %} + {% endif %} +
    + {{ form_label(form.quantity, 'common.quantity', { 'label_attr': { 'class': 'col-form-label' }}) }} + {{ form_widget(form.quantity, {'attr': {'class': 'quantity'}}) }} + {{ form_errors(form.quantity) }} +
    +
    + +
    + {% else %} +
    + +
    + {% endif %} + {{ form_rest(form) }} +
    \ No newline at end of file diff --git a/app/template/default/Components/product/breadcrumb.twig b/app/template/default/Components/product/breadcrumb.twig new file mode 100644 index 000000000..da3bdd1f6 --- /dev/null +++ b/app/template/default/Components/product/breadcrumb.twig @@ -0,0 +1,21 @@ + \ No newline at end of file diff --git a/app/template/default/Components/product/category.twig b/app/template/default/Components/product/category.twig new file mode 100644 index 000000000..02a35138b --- /dev/null +++ b/app/template/default/Components/product/category.twig @@ -0,0 +1,17 @@ +{% if product.ProductCategories is not empty %} +
    + +
    +{% endif %} \ No newline at end of file diff --git a/app/template/default/Components/product/code.twig b/app/template/default/Components/product/code.twig new file mode 100644 index 000000000..969d6becf --- /dev/null +++ b/app/template/default/Components/product/code.twig @@ -0,0 +1,8 @@ +{% if product.code_min is not empty %} +
    + {{ 'front.product.code'|trans }}: + + {{ product.code_min }}{% if product.code_min != product.code_max %} ~ {{ product.code_max }}{% endif %} + +
    +{% endif %} \ No newline at end of file diff --git a/app/template/default/Components/product/description_detail.twig b/app/template/default/Components/product/description_detail.twig new file mode 100644 index 000000000..b9e687d4f --- /dev/null +++ b/app/template/default/Components/product/description_detail.twig @@ -0,0 +1,11 @@ +{% if product.description_detail %} +
    + {% if truncate is defined %} + {{ product.description_detail|raw|nl2br|length > 90 ? + product.description_detail|raw|nl2br|slice(0, 90) ~ '...' : + product.description_detail|raw|nl2br }} + {% else %} + {{ product.description_detail|raw|nl2br }} + {% endif %} +
    +{% endif %} \ No newline at end of file diff --git a/app/template/default/Components/product/description_list.twig b/app/template/default/Components/product/description_list.twig new file mode 100644 index 000000000..27abf1415 --- /dev/null +++ b/app/template/default/Components/product/description_list.twig @@ -0,0 +1,11 @@ +{% if product.description_list %} +
    + {% if truncate is defined %} + {{ product.description_list|raw|nl2br|length > 90 ? + product.description_list|raw|nl2br|slice(0, 90) ~ '...' : + product.description_list|raw|nl2br }} + {% else %} + {{ product.description_list|raw|nl2br }} + {% endif %} +
    +{% endif %} \ No newline at end of file diff --git a/app/template/default/Components/product/favorite.twig b/app/template/default/Components/product/favorite.twig new file mode 100644 index 000000000..1c9fd4323 --- /dev/null +++ b/app/template/default/Components/product/favorite.twig @@ -0,0 +1,15 @@ +{% if BaseInfo.option_favorite_product %} +
    +
    + {% if is_favorite == false %} + + {% else %} + + {% endif %} +
    +
    +{% endif %} \ No newline at end of file diff --git a/app/template/default/Components/product/freearea.twig b/app/template/default/Components/product/freearea.twig new file mode 100644 index 000000000..0dee59b43 --- /dev/null +++ b/app/template/default/Components/product/freearea.twig @@ -0,0 +1,11 @@ +{% if product.freearea %} +
    + {% if truncate is defined %} + {{ product.freearea|raw|nl2br|length > 90 ? + product.freearea|raw|nl2br|slice(0, 90) ~ '...' : + product.freearea|raw|nl2br }} + {% else %} + {{ product.freearea|raw|nl2br }} + {% endif %} +
    +{% endif %} \ No newline at end of file diff --git a/app/template/default/Components/product/image.twig b/app/template/default/Components/product/image.twig new file mode 100644 index 000000000..c12489fe3 --- /dev/null +++ b/app/template/default/Components/product/image.twig @@ -0,0 +1,7 @@ +{% if type is defined and type == 'link' %} + + {{ product.name }} + +{% else %} + {{ product.name }} +{% endif %} \ No newline at end of file diff --git a/app/template/default/Components/product/name.twig b/app/template/default/Components/product/name.twig new file mode 100644 index 000000000..42c40b3f4 --- /dev/null +++ b/app/template/default/Components/product/name.twig @@ -0,0 +1,9 @@ +{% if type is defined and type == 'text' %} +

    + {{ product.name }} +

    +{% else %} + + {{ product.name }} + +{% endif %} \ No newline at end of file diff --git a/app/template/default/Components/product/options.twig b/app/template/default/Components/product/options.twig new file mode 100644 index 000000000..b1fd6ca34 --- /dev/null +++ b/app/template/default/Components/product/options.twig @@ -0,0 +1,29 @@ +{% if type is defined and type == 'order-history' %} + {# Order history #} + {% if productClass.class_category_name1 is not empty or productClass.class_category_name2 is not empty %} +
    + + {{ productClass.class_category_name1 }} + {% if productClass.class_category_name2 is not empty %} + {{ '/ ' ~ productClass.class_category_name2 }} + {% endif %} + +
    + {% endif %} +{% else %} + {# Other case #} + {% if productClass.ClassCategory1 is not null or productClass.ClassCategory1 is not null %} +
    + {% if productClass.ClassCategory1 and productClass.ClassCategory1.id %} + + {{ productClass.ClassCategory1.ClassName.name }}: {{ productClass.ClassCategory1 }} + + {% endif %} + {% if productClass.ClassCategory2 and productClass.ClassCategory2.id %} + + {{ productClass.ClassCategory2.ClassName.name }}: {{ productClass.ClassCategory2 }} + + {% endif %} +
    + {% endif %} +{% endif %} diff --git a/app/template/default/Components/product/pdp-images.twig b/app/template/default/Components/product/pdp-images.twig new file mode 100644 index 000000000..ed0479405 --- /dev/null +++ b/app/template/default/Components/product/pdp-images.twig @@ -0,0 +1,18 @@ +
    + {% for ProductImage in product.ProductImage %} +
    + {{ product.name }} +
    + {% else %} +
    + {{ product.name }} +
    + {% endfor %} +
    +
    + {% for ProductImage in product.ProductImage %} +
    + {{ product.name }} +
    + {% endfor %} +
    \ No newline at end of file diff --git a/app/template/default/Components/product/price.twig b/app/template/default/Components/product/price.twig new file mode 100644 index 000000000..9bdd4d2b2 --- /dev/null +++ b/app/template/default/Components/product/price.twig @@ -0,0 +1,73 @@ +{% if type is defined and type == 'detail' %} + {# FOR PRODUCT DETAIL #} +
    + {% if product.hasProductClass -%} + + {% if product.getPrice01Min is not null and product.getPrice01IncTaxMin == product.getPrice01IncTaxMax %} + + {{ 'front.product.normal_price'|trans }}: {{ product.getPrice01IncTaxMin|price }} + + {{ 'common.tax_include'|trans }} + {% elseif product.getPrice01Min is not null and product.getPrice01Max is not null %} + + {{ 'front.product.normal_price'|trans }}: {{ product.getPrice01IncTaxMin|price }} ~ {{ product.getPrice01IncTaxMax|price }} + + {{ 'common.tax_include'|trans }} + {% endif %} + + {% else %} + {% if product.getPrice01Max is not null %} + + {{ 'front.product.normal_price'|trans }}: {{ product.getPrice01IncTaxMin|price }} + {{ 'common.tax_include'|trans }} + + {% endif %} + {% endif %} + + {% if product.hasProductClass -%} + {% if product.getPrice02IncTaxMin == product.getPrice02IncTaxMax %} +
    + {{ product.getPrice02IncTaxMin|price }} + {{ 'common.tax_include'|trans }} +
    + {% else %} +
    + {{ product.getPrice02IncTaxMin|price }} ~ {{ product.getPrice02IncTaxMax|price }} + {{ 'common.tax_include'|trans }} +
    + {% endif %} + {% else %} +
    + {{ product.getPrice02IncTaxMin|price }} + {{ 'common.tax_include'|trans }} +
    + {% endif %} +
    +{% elseif type is defined and type == 'list' %} + {# FOR PRODUCT LIST #} +
    + {% if product.hasProductClass %} + {% if product.getPrice02Min == product.getPrice02Max %} + {{ product.getPrice02IncTaxMin|price }} + {% else %} + {{ product.getPrice02IncTaxMin|price }} ~ {{ product.getPrice02IncTaxMax|price }} + {% endif %} + {% else %} + {{ product.getPrice02IncTaxMin|price }} + {% endif %} +
    +{% elseif type is defined and type == 'mini' %} + {# FOR MINI CART #} +
    + {{ product.price|price }} + {{ 'common.tax_include'|trans }} +
    +{% elseif type is defined and type == 'checkout' %} + {# FOR CHECKOUT AND ORDER HISTORY #} +
    + {{ product.priceIncTax|price }} × {{ product.quantity|number_format }} +
    +{% elseif type is defined and type == 'cart' %} + {# FOR CART #} +
    {{ product.price|price }}
    +{% endif %} \ No newline at end of file diff --git a/app/template/default/Components/product/sort.twig b/app/template/default/Components/product/sort.twig new file mode 100644 index 000000000..4e88ae511 --- /dev/null +++ b/app/template/default/Components/product/sort.twig @@ -0,0 +1,15 @@ + \ No newline at end of file diff --git a/app/template/default/Components/product/tabs.twig b/app/template/default/Components/product/tabs.twig new file mode 100644 index 000000000..0ad5641f3 --- /dev/null +++ b/app/template/default/Components/product/tabs.twig @@ -0,0 +1,47 @@ + +
    + {% if product.description_detail %} +
    + {# Product Detail #} + {% include "Components/product/description_detail.twig" with {'product': product} %} +
    + {% endif %} + + {% if product.description_list %} +
    + {# Product Description #} + {% include "Components/product/description_list.twig" with {'product': product} %} +
    + {% endif %} + + {% if product.freearea %} +
    + {# Product Freearea #} + {% include "Components/product/freearea.twig" with {'product': product} %} +
    + {% endif %} +
    \ No newline at end of file diff --git a/app/template/default/Components/product/tags.twig b/app/template/default/Components/product/tags.twig new file mode 100644 index 000000000..67057b4ed --- /dev/null +++ b/app/template/default/Components/product/tags.twig @@ -0,0 +1,7 @@ +{% if product.Tags is not empty %} +
    + {% for Tag in product.Tags %} + {{ Tag }} + {% endfor %} +
    +{% endif %} \ No newline at end of file diff --git a/app/template/default/Contact/complete.twig b/app/template/default/Contact/complete.twig new file mode 100644 index 000000000..738177c5a --- /dev/null +++ b/app/template/default/Contact/complete.twig @@ -0,0 +1,16 @@ + +{% extends 'default_frame.twig' %} + +{% block main %} + {% include "Components/heading.twig" with {'title': 'front.contact.complete_title' } %} +
    +
    +
    +

    {{ 'front.contact.complete_message__title'|trans }}

    +

    {{ 'front.contact.complete_message__body'|trans }}

    +
    + {{'common.go_to_top'|trans}} +
    +
    +
    +{% endblock %} diff --git a/app/template/default/Contact/confirm.twig b/app/template/default/Contact/confirm.twig new file mode 100644 index 000000000..3a6cca2e1 --- /dev/null +++ b/app/template/default/Contact/confirm.twig @@ -0,0 +1,136 @@ + +{% extends 'default_frame.twig' %} + +{% form_theme form 'Form/form_div_layout.twig' %} + +{% block main %} + {% include "Components/heading.twig" with {'title': 'front.contact.title' } %} +
    +
    +
    +
    + {{ form_widget(form._token) }} + +
      +
    • + {{ 'common.go_to_confirm'|trans }} +
    • +
    • +
      +
      + {{ form_label(form.name, 'common.name') }} +
      +
      + {{ form.name.name01.vars.data }} + {{ form.name.name02.vars.data }} + {{ form_widget(form.name.name01, { type : 'hidden' }) }} + {{ form_widget(form.name.name02, { type : 'hidden' }) }} + {{ form_widget(form.kana.kana01, { type : 'hidden' }) }} + {{ form_widget(form.kana.kana02, { type : 'hidden' }) }} +
      +
      +
    • +
    • +
      +
      + {{ form_label(form.postal_code, 'common.postal_code') }} +
      +
      + {{ 'common.postal_symbol'|trans }}{{ form.postal_code.vars.data }} + {{ form_widget(form.postal_code, { type : 'hidden' }) }} +
      +
      +
    • +
    • +
      +
      + {{ form_label(form.address, 'common.address') }} +
      +
      + {{ format_address(form.address.addr01.vars.data, form.address.addr02.vars.data, form.address.pref.vars.data) }} + {{ form_widget(form.address.pref, { type : 'hidden' }) }} + {{ form_widget(form.address.addr01, { type : 'hidden' }) }} + {{ form_widget(form.address.addr02, { type : 'hidden' }) }} +
      +
      +
    • +
    • +
      +
      + {{ form_label(form.phone_number, 'common.phone_number') }} +
      +
      + {{ form.phone_number.vars.data }} + {{ form_widget(form.phone_number, { type : 'hidden' }) }} +
      +
      +
    • +
    • +
      +
      + {{ form_label(form.email, 'common.mail_address') }} +
      +
      + {{ form.email.vars.data }} + {{ form_widget(form.email, { type : 'hidden' }) }} +
      +
      +
    • +
    • +
      +
      + {{ form_label(form.contents, 'front.contact.inquiry_contents') }} +
      +
      + {{ form.contents.vars.data|nl2br }} + {{ form_widget(form.contents, { type : 'hidden' }) }} +
      +
      +
    • + {% for f in form if f.vars.eccube_form_options.auto_render %} + {% if f.vars.eccube_form_options.form_theme %} + {% form_theme f f.vars.eccube_form_options.form_theme %} + {{ form_row(f) }} + {% else %} +
    • +
      +
      + {{ form_label(f) }} +
      +
      +
      +
      + {{ form_widget(f, { 'attr': { 'class': 'form-control' }}) }} + {{ form_errors(f) }} +
      +
      +
      +
      +
    • + {% endif %} + {% endfor %} +
    • +
      +
      +
      + + +
      +
      +
    • +
    +
    +
    +
    +
    +{% endblock %} diff --git a/app/template/default/Contact/index.twig b/app/template/default/Contact/index.twig new file mode 100644 index 000000000..c7e215f04 --- /dev/null +++ b/app/template/default/Contact/index.twig @@ -0,0 +1,62 @@ + +{% extends 'default_frame.twig' %} + +{% form_theme form 'Form/form_div_layout.twig' %} + +{% block main %} + {% include "Components/heading.twig" with {'title': 'front.contact.title' } %} +
    +
    +
    +
    + {{ form_widget(form._token) }} + + {# Name #} + {% include "Components/form/name.twig" with {'form': form} %} + + {# Postcode #} + {% include "Components/form/postcode.twig" with {'form': form} %} + + {# Address #} + {% include "Components/form/address.twig" with {'form': form} %} + + {# Phone #} + {% include "Components/form/phone.twig" with {'form': form} %} + + {# Email #} + {% include "Components/form/input.twig" + with { + 'form': form, + 'field': 'email', + 'label': 'common.mail_address' + } + %} + + {# Content/Textarea #} + {% include "Components/form/input.twig" + with { + 'form': form, + 'field': 'contents', + 'label': 'front.contact.inquiry_contents', + 'help': true, + 'helpText': 'front.contact.order_notice' + } + %} + + {# Options Render #} + {% include "Components/form/options_render.twig" with {'form': form} %} + +
    +
    +
    + +
    +
    +
    +
    +
    +
    +{% endblock %} diff --git a/app/template/default/Entry/complete.twig b/app/template/default/Entry/complete.twig new file mode 100644 index 000000000..887db8b86 --- /dev/null +++ b/app/template/default/Entry/complete.twig @@ -0,0 +1,18 @@ + +{% extends 'default_frame.twig' %} + +{% set body_class = 'registration_page' %} + +{% block main %} + {% include "Components/heading.twig" with {'title': 'front.entry.complete_title__temporary' } %} +
    +
    +
    +

    {{ 'front.entry.complete_message__title'|trans }}

    +

    {{ 'front.entry.complete_message__temporary'|trans|nl2br }}

    +
    + {{ 'common.go_to_top'|trans }} +
    +
    +
    +{% endblock %} diff --git a/app/template/default/Entry/confirm.twig b/app/template/default/Entry/confirm.twig new file mode 100644 index 000000000..a8d8bce07 --- /dev/null +++ b/app/template/default/Entry/confirm.twig @@ -0,0 +1,153 @@ + +{% extends 'default_frame.twig' %} + +{% set body_class = 'registration_page' %} + +{% form_theme form 'Form/form_div_layout.twig' %} + +{% block main %} + {% include "Components/heading.twig" with {'title': 'front.entry.confirm_title' } %} +
    +
    +
    +
    + {{ form_widget(form._token) }} +

    {{ 'front.entry.confirm_message'|trans|nl2br }}

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {% for f in form if f.vars.eccube_form_options.auto_render %} + {% if f.vars.eccube_form_options.form_theme %} + {% form_theme f f.vars.eccube_form_options.form_theme %} + {{ form_row(f) }} + {% else %} + + + + + {% endif %} + {% endfor %} + + +
    + {{ form_label(form.name, 'common.name') }} + + {{ form.name.name01.vars.data }} + {# form.vars.value = form.vars.data = Customer #} + {{ form.name.name02.vars.data }} + {{ form_widget(form.name.name01, { type : 'hidden' }) }} + {{ form_widget(form.name.name02, { type : 'hidden' }) }} + + {{ form_widget(form.kana.kana01, { type : 'hidden' }) }} + {{ form_widget(form.kana.kana02, { type : 'hidden' }) }} +
    + {{ form_label(form.company_name, 'common.company_name') }} + + {{ form.company_name.vars.data }} + {{ form_widget(form.company_name, { type : 'hidden' }) }} +
    + {{ form_label(form.postal_code) }} + + {{ 'common.postal_symbol'|trans }}{{ form.postal_code.vars.data }} + {{ form_widget(form.postal_code, { type : 'hidden' }) }} +
    + {{ form_label(form.address, 'common.address') }} + + {{ format_address(form.address.addr01.vars.data, form.address.addr02.vars.data, form.address.pref.vars.data) }} + {{ form_widget(form.address.pref, { type : 'hidden' }) }} + {{ form_widget(form.address.addr01, { type : 'hidden' }) }} + {{ form_widget(form.address.addr02, { type : 'hidden' }) }} +
    + {{ form_label(form.phone_number, 'common.phone_number') }} + + {{ form.phone_number.vars.data }} + {{ form_widget(form.phone_number, { type : 'hidden' }) }} +
    + {{ form_label(form.email, 'common.mail_address') }} + + {{ form.email.vars.data }} + {{ form_widget(form.email.first, { type : 'hidden' }) }} + {{ form_widget(form.email.second, { type : 'hidden' }) }} +
    + {{ form_label(form.password, 'common.password') }} + + ******** + {{ form_widget(form.password.first, { type : 'hidden' }) }} + {{ form_widget(form.password.second, { type : 'hidden' }) }} +
    + {{ form_label(form.birth, 'common.birth_day') }} + + {{ form.birth.vars.data ? form.birth.vars.data|date_day() }} + {{ form_widget(form.birth.day, { type : 'hidden' }) }} + {{ form_widget(form.birth.month, { type : 'hidden' }) }} + {{ form_widget(form.birth.year, { type : 'hidden' }) }} +
    + {{ form_label(form.sex, 'common.gender') }} + + {{ form.sex.vars.data }} + {{ form_widget(form.sex, { type: 'hidden'}) }} +
    + {{ form_label(form.job, 'common.job') }} + + {{ form.job.vars.data }} + {{ form_widget(form.job, { type: 'hidden'}) }} + + {{ form_widget(form.user_policy_check, { type: 'hidden'}) }} +
    + {{ form_label(f) }} + + {{ f.vars.data }} + {{ form_widget(f, { type: 'hidden'}) }} +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    +{% endblock %} diff --git a/app/template/default/Entry/index.twig b/app/template/default/Entry/index.twig new file mode 100644 index 000000000..090c178b3 --- /dev/null +++ b/app/template/default/Entry/index.twig @@ -0,0 +1,67 @@ + +{% extends 'default_frame.twig' %} + +{% set body_class = 'registration_page' %} + +{% form_theme form 'Form/form_div_layout.twig' %} + +{% block main %} + {% include "Components/heading.twig" with {'title': 'front.entry.title' } %} +
    +
    +
    +
    + {{ form_widget(form._token) }} + + {# Name #} + {% include "Components/form/name.twig" with {'form': form} %} + + {# Company Name #} + {% include "Components/form/company.twig" with {'form': form} %} + + {# Postcode #} + {% include "Components/form/postcode.twig" with {'form': form} %} + + {# Address #} + {% include "Components/form/address.twig" with {'form': form} %} + + {# Phone #} + {% include "Components/form/phone.twig" with {'form': form} %} + + {# Email #} + {% include "Components/form/email.twig" with {'form': form} %} + + {# Password #} + {% include "Components/form/password.twig" with {'form': form} %} + + {# Birthday #} + {% include "Components/form/birthday.twig" with {'form': form} %} + + {# Gender #} + {% include "Components/form/gender.twig" with {'form': form} %} + + {# Job #} + {% include "Components/form/job.twig" with {'form': form} %} + + {# Options Render #} + {% include "Components/form/options_render.twig" with {'form': form} %} + + {# Policy #} + {% include "Components/form/policy.twig" with {'form': form} %} + +
    +
    +
    +
    +
    + + {{ 'front.entry.disagree'|trans }} +
    +
    +
    +
    +
    +
    +
    +
    +{% endblock %} \ No newline at end of file diff --git a/app/template/default/Forgot/complete.twig b/app/template/default/Forgot/complete.twig new file mode 100644 index 000000000..f4bdad447 --- /dev/null +++ b/app/template/default/Forgot/complete.twig @@ -0,0 +1,16 @@ + +{% extends 'default_frame.twig' %} + +{% block main %} + {% include "Components/heading.twig" with {'title': 'front.forgot.complete_title' } %} +
    +
    + +
    +
    +{% endblock %} + + diff --git a/app/template/default/Forgot/index.twig b/app/template/default/Forgot/index.twig new file mode 100644 index 000000000..f795f9bb8 --- /dev/null +++ b/app/template/default/Forgot/index.twig @@ -0,0 +1,35 @@ + +{% extends 'default_frame.twig' %} + +{% form_theme form 'Form/form_div_layout.twig' %} + +{% block main %} + {% include "Components/heading.twig" with {'title': 'front.forgot.title' } %} +
    +
    +
    + {{ form_widget(form._token) }} +
    +

    {{ 'front.forgot.message1'|trans }}

    +

    {{ 'front.forgot.message2'|trans }}

    +
    + + {# Email #} + {% include "Components/form/input.twig" + with { + 'form': form, + 'field': 'login_email', + 'label': 'common.mail_address' + } + %} +
    +
    + +
    +
    +
    +
    +
    +{% endblock %} + + diff --git a/app/template/default/Forgot/reset.twig b/app/template/default/Forgot/reset.twig new file mode 100644 index 000000000..cdbba6cd7 --- /dev/null +++ b/app/template/default/Forgot/reset.twig @@ -0,0 +1,74 @@ +{# +This file is part of EC-CUBE + +Copyright(c) LOCKON CO.,LTD. All Rights Reserved. + +http://www.lockon.co.jp/ + +For the full copyright and license information, please view the LICENSE +file that was distributed with this source code. +#} +{% extends 'default_frame.twig' %} + +{% form_theme form 'Form/form_div_layout.twig' %} + +{% block main %} +
    +
    +

    {{ 'front.forgot.reset_title'|trans }}

    +
    +
    +
    +
    + {{ form_widget(form._token) }} +
    +
    +
    + {{ form_label(form.login_email, 'common.mail_address', { 'label_attr': { 'class': 'ec-label' }}) }} +
    +
    +
    + {{ form_widget(form.login_email) }} + {{ form_errors(form.login_email) }} + {% if error %} +

    {{ error }}

    + {% endif %} +
    +
    +
    +
    +
    + {{ form_label(form.password, 'common.password', { 'label_attr': {'class': 'ec-label' }}) }} +
    +
    +
    + {{ form_widget(form.password.first, { + 'attr': { 'placeholder': 'common.password_sample'|trans({ '%min%': eccube_config.eccube_password_min_len, '%max%': eccube_config.eccube_password_max_len }) }, + 'type': 'password' + }) }} + {{ form_errors(form.password.first) }} +
    +
    + {{ form_widget(form.password.second, { + 'attr': { 'placeholder': 'common.repeated_confirm'|trans }, + 'type': 'password' + }) }} + {{ form_errors(form.password.second) }} +
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +{% endblock %} + diff --git a/app/template/default/Help/about.twig b/app/template/default/Help/about.twig new file mode 100644 index 000000000..a120d3a1e --- /dev/null +++ b/app/template/default/Help/about.twig @@ -0,0 +1,61 @@ + +{% extends 'default_frame.twig' %} + +{% block main %} + +{% include "Components/heading.twig" with {'title': 'front.about.title' } %} + +
    +
    +
    + + + {% if BaseInfo.shop_name|default is not empty %} + + + + + {% endif %} + {% if BaseInfo.company_name|default is not empty %} + + + + + {% endif %} + {% if BaseInfo.postal_code|default is not empty %} + + + + + {% endif %} + {% if BaseInfo.phone_number|default is not empty %} + + + + + {% endif %} + {% if BaseInfo.business_hour|default is not empty %} + + + + + {% endif %} + {% if BaseInfo.good_traded|default is not empty %} + + + + + {% endif %} + {% if BaseInfo.message|default is not empty %} + + + + + {% endif %} + +
    {{ BaseInfo.shop_name }}
    {{ BaseInfo.company_name }}
    {{ format_address(BaseInfo.addr01, BaseInfo.addr02, BaseInfo.pref, BaseInfo.postal_code) }}
    {{ BaseInfo.phone_number }}
    {{ BaseInfo.business_hour }}
    {{ BaseInfo.good_traded|nl2br }}
    {{ BaseInfo.message|nl2br }}
    +
    +
    +
    + +{% endblock %} diff --git a/app/template/default/Help/agreement.twig b/app/template/default/Help/agreement.twig new file mode 100644 index 000000000..e5227a5a6 --- /dev/null +++ b/app/template/default/Help/agreement.twig @@ -0,0 +1,108 @@ + +{% extends 'default_frame.twig' %} + +{% block main %} +{% include "Components/heading.twig" with {'title': 'front.agreement.title' } %} + +
    +
    +
    +{% set agreement = ' 1. Hướng dẫn sử dụng Website +- Khi truy cập vào '~ BaseInfo.shop_name ~', khách hàng phải có độ tuổi từ 18 tuổi trở lên hoặc truy cập dưới sự giám sát của cha mẹ hay người giám hộ hợp pháp. +- Chúng tôi cấp quyền sử dụng và truy cập Website để bạn có thể mua sắm trên Website theo các điều khoản và điều kiện quy định tại Website. +- Nghiêm cấm sử dụng bất kỳ phần nào của Website với mục đích thương mại hoặc nhân danh bất kỳ đối tác thứ ba nào nếu không được '~ BaseInfo.shop_name ~' cho phép bằng văn bản. Nếu vi phạm bất cứ +điều nào trong đây, chúng tôi có quyền ngay lập tức thu hồi quyền sử dụng và/hoặc khóa quyền truy cập Website của khách hàng bằng bất kỳ hình thức hợp pháp nào mà không cần thông báo trước. +- Các thông tin sản phẩm được đăng tải trên Website để khách hàng có thể tham khảo trước khi quyết định mua hàng. '~ BaseInfo.shop_name ~' không phải nhà sản xuất nên những nhận xét hiển thị trên Website là ý kiến cá nhân và/hoặc chủ quan của khách hàng, không phải là phát ngôn chính thức từ '~ BaseInfo.shop_name ~'. +- Khách hàng phải đăng ký tài khoản với thông tin xác thực về bản thân và phải cập nhật nếu có bất kỳ thay đổi nào. Khách hàng phải có trách nhiệm với mật khẩu, tài khoản và hoạt động của mình trên Website. Ngoài ra, khách hàng có trách nhiệm thông báo ngay lập tức cho '~ BaseInfo.shop_name ~' khi tài khoản bị truy cập, sử dụng và/hoặc chiếm giữ trái phép. Cửa hàng không chịu bất kỳ trách nhiệm nào, dù trực tiếp hay gián tiếp, đối với những thiệt hại hoặc mất mát gây ra do khách hàng không tuân thủ quy định này. +- Khi khách hàng đăng ký tài khoản tại Website, điều này đồng nghĩa với việc khách hàng đồng ý nhận email quảng cáo từ cửa hàng. Trong trường hợp khách hàng không muốn tiếp tục nhận email quảng cáo, khách hàng có thể từ chối bằng cách nhấp vào đường link ở dưới cùng được hiển thị trong email quảng cáo. + +2. Ý kiến khách hàng +- Tất cả nội dung hiển thị và đăng tải trên Website, bao gồm nhưng không giới hạn ý kiến, nhận xét đóng góp của khách hàng đều là tài sản của cửa hàng. Nếu chúng tôi phát hiện bất kỳ thông tin giả mạo, vu khống nào, chúng tôi có quyền ngay lập tức khóa tài khoản của khách hàng và/hoặc áp dụng các biện pháp khác theo quy định của pháp luật Việt Nam. + +3. Đặt hàng và xác nhận đơn hàng +- Để đảm bảo tính công bằng và bảo vệ lợi ích cho khách hàng, cửa hàng có quyền từ chối các đơn hàng thuộc (nhưng không giới hạn) trong những trường hợp sau: +a. Đơn hàng được đặt không nhằm mục đích sử dụng cho cá nhân, mua hàng số lượng nhiều hoặc có mục đích mua đi bán lại. +b. Sử dụng mã giảm giá không đúng mục đích (có dấu hiệu lừa đảo, lạm dụng) + +- Trong trường hợp khách hàng không tuân thủ một (hoặc một vài) quy định, quy chế của '~ BaseInfo.shop_name ~', '~ BaseInfo.shop_name ~' có quyền từ chối đơn đặt hàng cũng như đình chỉ hoặc khóa tài khoản vĩnh viễn mà không có nghĩa vụ phải thông báo đến khách hàng. + +- Địa chỉ giao hàng và/hoặc địa chỉ thanh toán mà quý khách cung cấp trong quá trình đặt hàng sẽ không thể được thay đổi sau khi yêu cầu đặt hàng đã được '~ BaseInfo.shop_name ~' và/hoặc Nhà Bán Hàng tiếp nhận. Để thay đổi (các) thông tin này, quý khách cần hủy đơn hàng hiện tại, và đặt lại một đơn hàng mới với thông tin được cập nhật chính xác. + +4. Hình thức thanh toán +- Khách hàng có thể thanh toán đơn hàng bằng phương thức thanh toán tiền mặt khi nhận hàng hoặc thanh toán trực tuyến (bằng thẻ tín dụng, thẻ ghi nợ hoặc thẻ ATM nội địa). +- Thông thường khách hàng có thể lựa chọn một trong các hình thức thanh toán nêu trên khi tiến hành đặt hàng. Tuy nhiên, đối những đơn hàng có giá trị cao từ 50.000.000 VND (Năm mươi triệu Việt Nam Đồng) trở lên, khách hàng chỉ có thể mua hàng bằng phương thức thanh toán trực tuyến nhằm đảm bảo an toàn trong quá trình thanh toán. +- Trong bất kỳ trường hợp nào, Quý Khách Hàng sẽ không cần phải thanh toán bất kỳ khoản tiền đặt cọc nào cho đơn hàng. Trong trường hợp Quý Khách Hàng nhận được yêu cầu này từ phía '~ BaseInfo.shop_name ~' hoặc bất kỳ Nhà Bán Hàng nào, vui lòng từ chối thanh toán và thông báo với Bộ phận Hỗ trợ khách hàng tại đây để được hỗ trợ thêm. + +5. Chương trình khuyến mãi +- Với mong muốn mang lại nhiều lợi ích cho khách hàng là người tiêu dùng cuối cùng, '~ BaseInfo.shop_name ~' và/hoặc nhà bán hàng sẽ tổ chức các chương trình khuyến mãi. Vì vậy, để đảm bảo tính công bằng và bảo vệ lợi ích cho khách hàng, chúng tôi có quyền từ chối các đơn hàng không nhằm mục đích sử dụng cho cá nhân, mua hàng số lượng nhiều hoặc có mục đích mua đi bán lại khi khách hàng tham gia các chương trình khuyến mãi. Số lượng sản phẩm tối đa dành cho mỗi khách hàng khi tham gia chương trình khuyến mãi đặc biệt tại '~ BaseInfo.shop_name ~' là hai (02) sản phẩm. Thể lệ của từng chương trình khuyến mãi sẽ được cập nhật tại Website theo từng thời điểm và có thể được thay đổi tùy theo quyết định của '~ BaseInfo.shop_name ~'. +- '~ BaseInfo.shop_name ~' có quyền từ chối các đơn hàng không thỏa mãn các điều kiện nêu trên mà không có nghĩa vụ phải thông báo đến khách hàng. Vì vậy, khách hàng có trách nhiệm đọc và hiểu rõ thể lệ của từng chương trình khuyến mãi tại thời điểm đặt hàng . + +6. Khu vực giao hàng +- Đối với các sản phẩm do '~ BaseInfo.shop_name ~' trực tiếp phân phối, chúng tôi thực hiện giao hàng toàn quốc trừ trường hợp một số phạm vi giao hàng bị giới hạn được thể hiện rõ trên phần thông tin sản phẩm. +- Đối với sản phẩm do các nhà bán hàng phân phối, khu vực giao hàng có thể sẽ được giới hạn theo thông tin cập nhật tại Website. Trong một số trường hợp, mà khu vực giao hàng không được cập nhật kịp thời tại thời điểm khách hàng đặt hàng, '~ BaseInfo.shop_name ~' sẽ liên hệ đến khách hàng để thông báo chi tiết. +- '~ BaseInfo.shop_name ~'/ Đơn vị vận chuyển sẽ luôn cố gắng giao sản phẩm tận nhà cho khách hàng bất cứ khi nào có thể. Tuy nhiên, tùy thuộc vào địa điểm giao nhận mà '~ BaseInfo.shop_name ~' có thể hoặc không thể giao sản phẩm tận nhà cho khách hàng do sự khác biệt trong chính sách quản lý của mỗi địa điểm (ví dụ như căn hộ/ chung cư hay tòa nhà văn phòng). Trong những trường hợp này, khách hàng vui lòng hỗ trợ '~ BaseInfo.shop_name ~'/ Đơn vị vận chuyển bằng cách nhận hàng tại tầng trệt/sảnh. + +7. Giá cả +- Giá cả sản phẩm được niêm yết tại Website là giá bán cuối cùng đã bao gồm thuế Giá trị gia tăng (VAT). Giá của sản phẩm có thể thay đổi tùy thời điểm và chương trình khuyến mãi kèm theo. Phí vận chuyển và/hoặc phí thực hiện đơn hàng được áp dụng thêm (nếu có), sẽ được hiển thị rõ tại trang thanh toán khi khách hàng tiến hành đặt hàng. +- Chúng tôi luôn cố gắng để bảo đảm rằng tất cả các thông tin và giá hiển thị là chính xác đối với từng sản phẩm, tuy nhiên, đôi khi sẽ có một số trường hợp bị lỗi hoặc sai sót do yếu tố khách quan. Nếu có bất kỳ lỗi về giá nào được phát hiện, hệ thống sẽ tự động hủy đơn hàng, gửi email để thông báo cho khách hàng. Sau đó, lệnh hoàn tiền ngay lập tức được thực hiện (nếu đơn hàng đã được thanh toán trước). +- Nhà Bán Hàng trên Website có thể cùng phân phối một sản phẩm giống nhau với chính sách giá khác nhau, khách hàng có quyền lựa chọn và so sánh giá cả giữa các nhà bán hàng để có được mức giá hợp lý nhất cho nhu cầu của mình. '~ BaseInfo.shop_name ~' sẽ không can thiệp về chính sách giá của nhà bán hàng nếu có phát sinh tranh chấp. + +8. Thông tin sản phẩm +- Trong trường hợp sản phẩm khách hàng nhận được không đúng như mô tả trong phần thông tin sản phẩm trên Website, khách hàng có thể thông tin đến nhà bán hàng hoặc Bộ phận hỗ trợ khách hàng trong thời gian sớm nhất kể từ khi nhận hàng đồng thời đảm bảo sản phẩm trong tình trạng chưa qua sử dụng để được hỗ trợ đổi trả. Thông tin chi tiết về chính sách đổi trả vui lòng tham khảo tại đây. + +9. Chính sách về hàng giả, hàng nhái, hàng không đúng chất lượng +- '~ BaseInfo.shop_name ~' hướng đến việc cung cấp hàng hóa và chất lượng dịch vụ tốt nhất cho khách hàng qua các sản phẩm được đăng bán trên Website và từ chối bán các sản phẩm vi phạm quy định của pháp luật Việt Nam (bao gồm nhưng không giới hạn sản xuất trái phép, hàng giả, hàng nhái, không rõ nguồn gốc xuất xứ). +- Nhà bán hàng của '~ BaseInfo.shop_name ~' đều được yêu cầu tuân thủ các quy định pháp luật chất lượng và nguồn gốc, xuất xứ của sản phẩm, cũng như tự chịu trách nhiệm trước khách hàng và pháp luật đối với các hành vi vi phạm. Đối với các trường hợp phát hiện bất kỳ sản phẩm vi phạm nào, '~ BaseInfo.shop_name ~' sẽ áp dụng biện pháp chế tài đối với hành vi vi phạm của nhà bán hàng và/hoặc có biện pháp khắc phục đối với hành vi này, tùy theo quyết định của '~ BaseInfo.shop_name ~'. +- Trong trường hợp khách hàng phát hiện bất kỳ sản phẩm vi phạm nào, vui lòng thông báo ngay cho chúng tôi bằng cách liên hệ với Bộ phận Hỗ trợ khách hàng tại đây để được xác thực thông tin và hỗ trợ. + +10. Quy định về bảo mật +- Website có các biện pháp và công cụ để thực hiện việc bảo mật để có thể bảo vệ thông tin cá nhân và việc thanh toán của khách hàng một cách toàn diện nhất. Thông tin của khách hàng trong quá trình thanh toán sẽ được mã hóa để đảm bảo an toàn tối đa. Mọi thông tin giao dịch sẽ được bảo mật nhưng trong trường hợp cơ quan pháp luật yêu cầu bằng văn bản, chúng tôi sẽ phải cung cấp những thông tin này cho các cơ quan pháp luật theo đúng quy định. +- Khách hàng không được sử dụng bất kỳ chương trình, công cụ hay hình thức nào khác để can thiệp vào hệ thống hay làm thay đổi cấu trúc dữ liệu. '~ BaseInfo.shop_name ~' nghiêm cấm việc phát tán, truyền bá hay cổ vũ cho bất kỳ hoạt động nào nhằm can thiệp, phá hoại hay xâm nhập vào dữ liệu của hệ thống. Cá nhân hay tổ chức vi phạm sẽ bị tước bỏ mọi quyền lợi cũng như sẽ bị truy tố trước pháp luật nếu cần thiết. + +11. Thanh toán an toàn +Mọi khách hàng tham gia giao dịch tại Website qua thẻ tín dụng/thẻ ghi nợ/thẻ ATM nội địa đều được bảo mật thông tin bằng mã hóa. Bên cạnh đó, khi thực hiện thanh toán qua mạng, khách hàng vui lòng lưu ý các chi tiết sau: + +- Chỉ thanh toán trên website có chứng chỉ an toàn, bảo mật hệ thống thẻ. +- Tuyệt đối không cho người khác mượn thẻ tín dụng hoặc tài khoản của mình để thực hiện thanh toán trên Website; trong trường hợp phát sinh giao dịch ngoài ý muốn, khách hàng vui lòng thông báo ngay lập tức cho '~ BaseInfo.shop_name ~' để chúng tôi có thể hỗ trợ kịp thời. +- Kiểm tra tài khoản ngân hàng của mình thường xuyên để đảm bảo tất cả giao dịch qua thẻ đều nằm trong tầm kiểm soát. + +12. Thực hiện giao dịch tại Website +- Quy trình mua sắm trên Website của khách hàng sẽ được thực hiện theo trình tự sau: + +Cách 1: Thanh toán trực tuyến +Bước 1: Khách hàng đặt hàng, cung cấp thông tin đầy đủ, xác thực; +Bước 2: Khách hàng thanh toán trước; +Bước 3: '~ BaseInfo.shop_name ~' hoặc nhà bán hàng tiếp nhận, kiểm tra - xác nhận đơn hàng và chuyển hàng; +Bước 4: Khách hàng kiểm tra và nhận hàng; + +Cách 2: Thanh toán sau +Bước 1: Khách hàng đặt hàng, cung cấp thông tin đầy đủ, xác thực +Bước 2: '~ BaseInfo.shop_name ~' tiếp nhận đơn hàng; +Bước 3: '~ BaseInfo.shop_name ~' xác nhận thông tin khách hàng (điện thoại hoặc tin nhắn hoặc email); +Bước 4: '~ BaseInfo.shop_name ~' hoặc nhà bán hàng chuyển hàng; +Bước 5: Khách hàng nhận hàng và thanh toán; + +- Trong các trường hợp, khách hàng có thể tra cứu thông tin giao dịch qua email đã đăng ký tại Website. Ngoài ra, khách hàng có thể tra cứu được lịch sử giao dịch khi đăng nhập vào tài khoản của mình tại Website, vào mục Quản lý đơn hàng. +- Trường hợp khách hàng muốn chỉnh sửa thông tin, khách hàng thông báo cho '~ BaseInfo.shop_name ~' tại đây. + +13. Hủy bỏ giao dịch tại Website +1. Nếu yêu cầu hủy giao dịch được thực hiện trước khi đơn hàng được chuyển sang trạng thái "đã được đóng gói và đang được chuyển đến đối tác giao hàng", khách hàng có thể Đăng nhập vào tài khoản tại Website/chọn phần Quản Lý đơn hàng và nhấn vào nút HỦY ĐƠN HÀNG đồng thời thực hiện các bước cần thiết theo hướng dẫn hoặc liên hệ Bộ phận hỗ trợ khách hàng tại đây để được hỗ trợ (trong trường hợp khách hàng mua hàng trên Website mà không đăng nhập tài khoản). +2. Nếu yêu cầu hủy giao dịch được thực hiện sau khi đơn hàng được chuyển qua trạng thái "đã được đóng gói và đang được chuyển đến đối tác giao hàng", khách hàng chỉ có thể hủy đơn hàng bằng cách từ chối nhận hàng khi đơn hàng được giao. + +14. Hệ quả do lỗi nhập sai thông tin tại Website +- Khách hàng có trách nhiệm cung cấp thông tin đầy đủ và chính xác khi tham gia giao dịch tại Website. Trong trường hợp Khách hàng nhập sai thông tin khi đăng nhập và/hoặc thanh toán hay bất kỳ thông tin nào khác dẫn tới việc không thực hiện và/hoặc gián đoạn giao dịch, '~ BaseInfo.shop_name ~' có quyền từ chối thực hiện giao dịch mà không phải chịu trách nhiệm đối với việc hủy đơn hàng. +- Trong trường hợp khi khách hàng liên hệ '~ BaseInfo.shop_name ~' hoặc '~ BaseInfo.shop_name ~' liên hệ khách hàng để xác nhận đơn hàng vì bất cứ lý do gì (bao gồm nhưng không giới hạn, đơn hàng giá trị cao, đơn hàng có dấu hiệu giả mạo hoặc gian dối), khách hàng không thể trả lời và/hoặc xác minh chính xác được những thông tin cần thiết theo yêu cầu của '~ BaseInfo.shop_name ~', '~ BaseInfo.shop_name ~' có quyền đơn phương hủy đơn hàng trong trường hợp này. + +15. Giải quyết tranh chấp +- Bất kỳ tranh cãi, khiếu nại hoặc tranh chấp phát sinh từ hoặc liên quan đến giao dịch tại Website sẽ được giải quyết bằng hình thức thương lượng, hòa giải, trọng tài. + +16. Những quy định khác +- Trong trường hợp có bất kỳ thiệt hại nào phát sinh do việc vi phạm quy định sử dụng Website, chúng tôi có quyền đình chỉ hoặc khóa tài khoản của khách hàng vĩnh viễn. +- Tất cả các Điều Khoản và Điều Kiện (và tất cả nghĩa vụ phát sinh ngoài Điều khoản và Điều kiện này hoặc có liên quan) sẽ được điều chỉnh và được hiểu theo luật pháp Việt Nam. Chúng tôi có quyền sửa đổi các Điều khoản và Điều kiện này vào bất kỳ thời điểm nào và các sửa đổi đó sẽ có hiệu lực ngay tại thời điểm được được đăng tải tại Website. +- Khách hàng lưu ý chỉ mua hàng khi chấp nhận và hiểu rõ những quy định nêu tại Website (bao gồm nhưng không giới hạn Điều khoản và Điều kiện này). +'%} +{{ agreement|raw|nl2br }} +
    +
    +
    +{% endblock %} diff --git a/app/template/default/Help/guide.twig b/app/template/default/Help/guide.twig new file mode 100644 index 000000000..234cf55a7 --- /dev/null +++ b/app/template/default/Help/guide.twig @@ -0,0 +1,6 @@ + +{% extends 'default_frame.twig' %} + +{% block main %} + {% include "Components/heading.twig" with {'title': 'front.guide.title' } %} +{% endblock %} diff --git a/app/template/default/Help/postalcode.twig b/app/template/default/Help/postalcode.twig new file mode 100644 index 000000000..409387875 --- /dev/null +++ b/app/template/default/Help/postalcode.twig @@ -0,0 +1,97 @@ + +{% extends 'default_frame.twig' %} +{% block stylesheet %} + +{% endblock %} + +{% block javascript %} + + +{% endblock javascript %} + + +{% block main %} + {% include "Components/heading.twig" with {'title': 'admin.common.postal_symbol' } %} +
    +
    +
    +
    +
    + + +
    +
    +
    + + + +
    +
    +
    +
    +
    +{% endblock %} diff --git a/app/template/default/Help/privacy.twig b/app/template/default/Help/privacy.twig new file mode 100644 index 000000000..3dcf47370 --- /dev/null +++ b/app/template/default/Help/privacy.twig @@ -0,0 +1,21 @@ + +{% extends 'default_frame.twig' %} + +{% block main %} + {% include "Components/heading.twig" with {'title': 'front.privacy.title' } %} +
    +
    +
    +

    + {{ 'front.privacy.content'|trans }} +

    +
    +
    +
    +
    +
    {{ 'front.privacy.personal'|trans }}
    +

    {{ 'front.privacy.personal_infor'|trans }}

    +
    +
    +
    +{% endblock %} diff --git a/app/template/default/Help/tradelaw.twig b/app/template/default/Help/tradelaw.twig new file mode 100644 index 000000000..127d0309c --- /dev/null +++ b/app/template/default/Help/tradelaw.twig @@ -0,0 +1,56 @@ + +{% extends 'default_frame.twig' %} + +{% block main %} + {% include "Components/heading.twig" with {'title': 'front.tradelaw.title' } %} +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +
    +{% endblock %} diff --git a/app/template/default/Mypage/change.twig b/app/template/default/Mypage/change.twig new file mode 100644 index 000000000..d7f0ef2a0 --- /dev/null +++ b/app/template/default/Mypage/change.twig @@ -0,0 +1,66 @@ + +{% extends 'default_frame.twig' %} + +{% set body_class = 'mypage' %} + +{% set mypageno = 'change' %} + +{% form_theme form 'Form/form_div_layout.twig' %} + +{% block main %} + {% include "Components/heading.twig" with {'title': 'front.mypage.title', 'subTitle': 'front.mypage.nav__customer' } %} + + {% include 'Mypage/navi.twig' %} + +
    +
    + +
    +
    +{% endblock %} diff --git a/app/template/default/Mypage/change_complete.twig b/app/template/default/Mypage/change_complete.twig new file mode 100644 index 000000000..2fc450d87 --- /dev/null +++ b/app/template/default/Mypage/change_complete.twig @@ -0,0 +1,23 @@ + +{% extends 'default_frame.twig' %} + +{% set mypageno = 'change' %} + +{% set body_class = 'mypage' %} + +{% block main %} + {% include "Components/heading.twig" with {'title': 'front.mypage.title', 'subTitle': 'front.mypage.nav__customer_complete' } %} + + {% include 'Mypage/navi.twig' %} + +
    +
    +
    +

    {{ 'front.mypage.customer_complete_message__title'|trans }}

    +

    {{ 'front.mypage.customer_complete_message__body'|trans }}

    +
    + {{ 'common.back'|trans }} +
    +
    +
    +{% endblock %} diff --git a/app/template/default/Mypage/delivery.twig b/app/template/default/Mypage/delivery.twig new file mode 100644 index 000000000..b512a694f --- /dev/null +++ b/app/template/default/Mypage/delivery.twig @@ -0,0 +1,68 @@ + +{% extends 'default_frame.twig' %} + +{% set mypageno = 'delivery' %} + +{% set body_class = 'mypage' %} + +{% block main %} + {% include "Components/heading.twig" with {'title': 'front.mypage.title', 'subTitle': 'front.mypage.nav__customer_address' } %} + + {% include 'Mypage/navi.twig' %} + +
    +
    + {% if Customer.CustomerAddresses|length > 0 %} + + {{ 'front.mypage.customer_address_count'|trans({'%count%':Customer.CustomerAddresses|length}) }} + + {% else %} + {{ 'front.mypage.customer_address_not_found'|trans }} + {% endif %} +
    +
    + +
    + +
    +{% endblock %} diff --git a/app/template/default/Mypage/delivery_edit.twig b/app/template/default/Mypage/delivery_edit.twig new file mode 100644 index 000000000..55c6d08ad --- /dev/null +++ b/app/template/default/Mypage/delivery_edit.twig @@ -0,0 +1,50 @@ + +{% extends 'default_frame.twig' %} + +{% form_theme form 'Form/form_div_layout.twig' %} + +{% set mypageno = 'delivery' %} + +{% set body_class = 'mypage' %} + +{% block main %} + {% include "Components/heading.twig" with {'title': 'front.mypage.title', 'subTitle': 'front.mypage.nav__customer_address' } %} + + {% include 'Mypage/navi.twig' %} + +
    +
    + +
    +
    +{% endblock %} diff --git a/app/template/default/Mypage/favorite.twig b/app/template/default/Mypage/favorite.twig new file mode 100644 index 000000000..726b18571 --- /dev/null +++ b/app/template/default/Mypage/favorite.twig @@ -0,0 +1,57 @@ + +{% extends 'default_frame.twig' %} + +{% set mypageno = 'favorite' %} + +{% set body_class = 'mypage' %} + +{% block main %} + {% include "Components/heading.twig" with {'title': 'front.mypage.title', 'subTitle': 'front.mypage.nav__favorite' } %} + + {% include 'Mypage/navi.twig' %} +
    +
    + {% if pagination.totalItemCount > 0 %} +
    +
    + {{ 'front.mypage.favorite_count'|trans({'%count%':pagination.totalItemCount}) }} +
    +
    +
    + {% for FavoriteProduct in pagination %} + {% set Product = FavoriteProduct.Product %} +
    +
    + {# Image #} + {% include "Components/product/image.twig" with {'product': Product, 'type': 'link', 'imgClass': 'rounded-top'} %} + +
    + {# Name #} + {% include "Components/product/name.twig" with {'product': Product, 'type': 'text', class: 'h6 card-title'} %} + + {# Price #} + {% include "Components/product/price.twig" with {'product': Product, type: 'list'} %} +
    + +
    +
    + {% endfor %} + +
    +
    +
    + {% include "pager.twig" with {'pages': pagination.paginationData, 'class': 'mb-4'} %} + {% else %} + + {% endif %} +
    +
    +{% endblock %} diff --git a/app/template/default/Mypage/history.twig b/app/template/default/Mypage/history.twig new file mode 100644 index 000000000..373f98999 --- /dev/null +++ b/app/template/default/Mypage/history.twig @@ -0,0 +1,230 @@ + +{% extends 'default_frame.twig' %} + +{% set mypageno = 'index' %} + +{% set body_class = 'mypage' %} + +{% block main %} + {% include "Components/heading.twig" with {'title': 'front.mypage.title', 'subTitle': 'front.mypage.nav__history_detail' } %} + + {% include 'Mypage/navi.twig' %} + + {% set remessage = false %} + +
    +
    +
    + +
    + +
    + + {% for Shipping in Order.Shippings %} +
    +
    + {{ 'front.mypage.delivery_info'|trans }}{% if Order.multiple %} {{ loop.index }}{% endif %} +
    +
    +
    + {% for orderItem in Shipping.productOrderItems %} +
    + {# Image #} + {% include "Components/product/image.twig" with {'product': orderItem.Product, 'imgClass': 'align-self-center mr-3 img-thumbnail rounded-0 product-thumb'} %} + +
    +
    + {% if orderItem.Product is not null and orderItem.Product.Status.id == constant('Eccube\\Entity\\Master\\ProductStatus::DISPLAY_SHOW') %} + {# Name with link #} + {% include "Components/product/name.twig" with {'product': orderItem.Product} %} + {% else %} + {# Name #} + {% include "Components/product/name.twig" with {'product': orderItem.Product, type: 'text'} %} + {% endif %} × {{ orderItem.quantity }} +
    + + {# Options #} + {% include "Components/product/options.twig" with {'productClass': orderItem.ProductClass} %} + + {# Price #} + {% include "Components/product/price.twig" with {'product': orderItem, type: 'checkout'} %} + + {% if orderItem.product and orderItem.price_inc_tax != orderItem.productClass.price02IncTax %} +

    + {{ 'front.mypage.current_price'|trans }} + {{ orderItem.productClass.price02IncTax|price }} +

    + {% set remessage = true %} + {% endif %} +
    +
    + {% endfor %} +
    +
    + {{ 'front.shopping.customer_info'|trans }}{% if Order.multiple %} {{ loop.index }}{% endif %} +
    +
    +

    {{ Shipping.name01|format_name(Shipping.name02) }}

    +

    {{ format_address(Shipping.addr01, Shipping.addr02, Shipping.pref, Shipping.postal_code) }}

    +

    {{ Shipping.phone_number }}

    +
    + +
    +
    + {% endfor %} +
    +
    +
    +
    + {{ 'front.mypage.payment_info'|trans }} +
    +
    + {{ 'front.mypage.payment'|trans }}: {{ Order.PaymentMethod }} +
    +
    +
    + {% if Order.message %} +
    +
    +
    + {{ 'front.mypage.message'|trans }} +
    +
    + {{ Order.message|nl2br|default('front.mypage.message_not_found'|trans) }} +
    +
    +
    + {% endif %} +
    +
    +
    + {{ 'front.mypage.mail_list'|trans }} +
    +
    +
    + {% for MailHistory in Order.MailHistories %} + + {% else %} + + {% endfor %} +
    +
    +
    +
    +
    +
    +
    +
      +
    • + {{ 'common.subtotal'|trans }} + {{ Order.subtotal|price }} +
    • +
    • + {{ 'common.charge'|trans }} + {{ Order.charge|price }} +
    • +
    • + {{ 'common.delivery_fee'|trans }} + {{ Order.delivery_fee_total|price }} +
    • + {% if Order.discount > 0 %} +
    • + {{ 'common.discount'|trans }} + {{ (0 - Order.discount)|price }} +
    • + {% endif %} +
    • + {{ 'common.total'|trans }} +

      + {{ Order.payment_total|price }} + {{ 'common.tax_include'|trans }} +

      +
    • +
    + +
    + {% if remessage %} + + {% endif %} +
    +
    + +
    +
    + {{ 'common.back'|trans }} +
    +
    +{% endblock %} diff --git a/app/template/default/Mypage/index.twig b/app/template/default/Mypage/index.twig new file mode 100644 index 000000000..adbdbd817 --- /dev/null +++ b/app/template/default/Mypage/index.twig @@ -0,0 +1,74 @@ + +{% extends 'default_frame.twig' %} + +{% set mypageno = 'index' %} + +{% set body_class = 'mypage' %} + +{% block main %} + {% include "Components/heading.twig" with {'title': 'front.mypage.title', 'subTitle': 'front.mypage.nav__history' } %} + + {% include 'Mypage/navi.twig' %} + +
    + {% if pagination.totalItemCount > 0 %} +
    +
    + {{ 'front.mypage.history_count'|trans({'%count%':pagination.totalItemCount}) }} +
    +
    + {% for Order in pagination %} +
    +
    +
    + {% for OrderItem in Order.MergedProductOrderItems %} +
    +
    + {# Image #} + {% include "Components/product/image.twig" with {'product': OrderItem.Product} %} +
    +
    + + {# Name #} + {% include "Components/product/name.twig" with {'product': OrderItem.Product, type: 'text'} %} + + {# Options #} + {% include "Components/product/options.twig" with {'productClass': OrderItem, type: 'order-history'} %} + + {# Price #} + {% include "Components/product/price.twig" with {'product': OrderItem, type: 'checkout'} %} +
    +
    + {% endfor %} +
    +
    +

    + {{ 'front.mypage.order_no'|trans }} + {{ Order.order_no }} +

    + {% if (BaseInfo.option_mypage_order_status_display) %} +

    + {{ 'front.mypage.order_status'|trans }}: + {{ Order.CustomerOrderStatus }} +

    + {% endif %} + {{ Order.order_date|date_sec }} +

    + + {{ 'front.mypage.view_detail'|trans }} + +

    +
    +
    +
    + {% endfor %} +
    +
    + {% include "pager.twig" with {'pages': pagination.paginationData} %} + {% else %} + + {% endif %} +
    +{% endblock %} diff --git a/app/template/default/Mypage/login.twig b/app/template/default/Mypage/login.twig new file mode 100644 index 000000000..18dbeab8e --- /dev/null +++ b/app/template/default/Mypage/login.twig @@ -0,0 +1,56 @@ + +{% extends 'default_frame.twig' %} + +{% set body_class = 'mypage' %} + +{% block main %} + {% include "Components/heading.twig" with {'title': 'common.login' } %} + +
    +
    + +
    +
    +{% endblock %} diff --git a/app/template/default/Mypage/navi.twig b/app/template/default/Mypage/navi.twig new file mode 100644 index 000000000..7d04b1e55 --- /dev/null +++ b/app/template/default/Mypage/navi.twig @@ -0,0 +1,33 @@ +
    +
    + + + +
    +
    + diff --git a/app/template/default/Mypage/withdraw.twig b/app/template/default/Mypage/withdraw.twig new file mode 100644 index 000000000..5932fd138 --- /dev/null +++ b/app/template/default/Mypage/withdraw.twig @@ -0,0 +1,29 @@ + +{% extends 'default_frame.twig' %} + +{% set mypageno = 'withdraw' %} + +{% set body_class = 'mypage' %} + +{% block main %} + {% include "Components/heading.twig" with {'title': 'front.mypage.title', 'subTitle': 'front.mypage.nav__withdrow' } %} + + {% include 'Mypage/navi.twig' %} + +
    +
    +
    + {{ form_widget(form._token) }} +
    + +

    {{ 'front.mypage.withdraw_message__title'|trans }}

    +

    {{ 'front.mypage.withdraw_message__body'|trans }}

    +
    + +
    +
    +
    +
    +{% endblock %} diff --git a/app/template/default/Mypage/withdraw_complete.twig b/app/template/default/Mypage/withdraw_complete.twig new file mode 100644 index 000000000..6e6786815 --- /dev/null +++ b/app/template/default/Mypage/withdraw_complete.twig @@ -0,0 +1,23 @@ + +{% extends 'default_frame.twig' %} + +{% set mypageno = 'withdraw' %} + +{% set body_class = 'mypage' %} + +{% block main %} + {% include "Components/heading.twig" with {'title': 'front.mypage.title', 'subTitle': 'front.mypage.nav__withdrow' } %} + +
    +
    +
    +

    {{ 'front.mypage.withdraw_complete_message__title'|trans }}

    +

    {{ 'front.mypage.withdraw_complete_message__body'|trans|nl2br }}

    +
    + + {{ 'common.go_to_top'|trans }} + +
    +
    +
    +{% endblock %} diff --git a/app/template/default/Mypage/withdraw_confirm.twig b/app/template/default/Mypage/withdraw_confirm.twig new file mode 100644 index 000000000..2fc0a4f2e --- /dev/null +++ b/app/template/default/Mypage/withdraw_confirm.twig @@ -0,0 +1,35 @@ + +{% extends 'default_frame.twig' %} + +{% set mypageno = 'withdraw' %} + +{% set body_class = 'mypage' %} + +{% block main %} + {% include "Components/heading.twig" with {'title': 'front.mypage.title', 'subTitle': 'front.mypage.nav__withdrow' } %} + + {% include 'Mypage/navi.twig' %} + +
    +
    +
    + {{ form_widget(form._token) }} +
    + +

    {{ 'front.mypage.withdraw_execute_message__title'|trans }}

    +

    {{ 'front.mypage.withdraw_message__body'|trans }}

    +
    + + {{ form_widget(form._token) }} + + {{ 'front.mypage.withdraw_cancel'|trans }} + + + +
    + +
    +
    +{% endblock %} diff --git a/app/template/default/Product/detail.twig b/app/template/default/Product/detail.twig new file mode 100644 index 000000000..9e56414be --- /dev/null +++ b/app/template/default/Product/detail.twig @@ -0,0 +1,152 @@ + +{% extends 'default_frame.twig' %} + +{% set body_class = 'product_page' %} + +{% block javascript %} + + + +{% endblock %} + +{% block main %} +
    +
    + {# Images #} + {% include "Components/product/pdp-images.twig" with {'product': Product} %} +
    +
    +
    + {# Name #} + {% include "Components/product/name.twig" with {'product': Product, type: 'text', class: 'pdp-product-name'} %} + + {# Tags #} + {% include "Components/product/tags.twig" with {'product': Product} %} + + {# Price #} + {% include "Components/product/price.twig" with {'product': Product, type: 'detail'} %} + + {# Product code #} + {% include "Components/product/code.twig" with {'product': Product} %} + + {# Category related #} + {% include "Components/product/category.twig" with {'product': Product} %} + + {# Add to cart #} + {% include "Components/product/add-to-cart.twig" with {'product': Product} %} + + {# Favorite #} + {% include "Components/product/favorite.twig" with {'product': Product} %} +
    +
    +
    +
    + {% include "Components/product/tabs.twig" with {'product': Product} %} +
    + {% include "Components/modal.twig" %} +{% endblock %} diff --git a/app/template/default/Product/list.twig b/app/template/default/Product/list.twig new file mode 100644 index 000000000..b1d4b0835 --- /dev/null +++ b/app/template/default/Product/list.twig @@ -0,0 +1,164 @@ + +{% extends 'default_frame.twig' %} + +{% set body_class = 'product_page' %} + +{% block javascript %} + +{% endblock %} + +{% block main %} + {% if search_form.category_id.vars.errors|length > 0 %} +
    + {% include "Components/error.twig" with {'message': 'front.product.search__category_not_found'} %} +
    + {% else %} +
    + {% for item in search_form %} + + {% endfor %} +
    + + {# Breadcrumb #} + {% include "Components/product/breadcrumb.twig" with {'breadcrumb': Category} %} + + {# Sort #} + {% include "Components/product/sort.twig" with {'pagination': pagination, 'class': ' p-0 mb-3 border-bottom pb-3'} %} + + {% if pagination.totalItemCount > 0 %} +
    + {% for Product in pagination %} +
    +
    + {# Image #} + {% include "Components/product/image.twig" with {'product': Product, 'type': 'link', 'imgClass': 'rounded-top'} %} + +
    + {# Name #} + {% include "Components/product/name.twig" with {'product': Product} %} + + {# Product Description #} + {% include "Components/product/description_list.twig" with {'product': Product, 'truncate': true, 'class': 'bg-info p-2 text-black my-2'} %} + + {# Price #} + {% include "Components/product/price.twig" with {'product': Product, type: 'list'} %} + +
    + +
    +
    + {% endfor %} +
    + + {% include "Components/modal.twig" %} + + {% include "pager.twig" with {'pages': pagination.paginationData, 'class': 'mb-4'} %} + {% endif %} + {% endif %} +{% endblock %} diff --git a/app/template/default/Shopping/alert.twig b/app/template/default/Shopping/alert.twig new file mode 100644 index 000000000..83fb15ce7 --- /dev/null +++ b/app/template/default/Shopping/alert.twig @@ -0,0 +1,27 @@ +{% if error_only is not defined %} + {% set error_only = false %} +{% endif %} + +{% for error in app.session.flashbag.get('eccube.front.error') %} +
    +
    +
    + + {{ error|trans|nl2br }} +
    +
    +
    +{% endfor %} + +{% if error_only == false %} + {% for error in app.session.flashbag.get('eccube.front.warning') %} +
    +
    +
    + + {{ error|trans|nl2br }} +
    +
    +
    + {% endfor %} +{% endif %} diff --git a/app/template/default/Shopping/complete.twig b/app/template/default/Shopping/complete.twig new file mode 100644 index 000000000..2bd90bed9 --- /dev/null +++ b/app/template/default/Shopping/complete.twig @@ -0,0 +1,38 @@ + +{% extends 'default_frame.twig' %} + +{% set body_class = 'cart_page' %} + +{% block main %} +{% include "Components/heading.twig" with {'title': 'front.shopping.complete_title' } %} + +{% include "Components/checkout/progress-bar.twig" with {'step5': 'is-complete' } %} + +
    +
    +
    +

    {{ 'front.shopping.complete_message__title'|trans }}

    +
    + {{ 'front.shopping.complete_message__body'|trans|nl2br }} +
    + {% if Order.id %} +
    + {{ 'front.shopping.order_no'|trans }}: + {{ Order.orderNo }} +
    + {% endif %} + {% if Order.complete_message is not empty %} +
    + {{ Order.complete_message|raw }} +
    + {% endif %} +
    + {% if hasNextCart %} + {{ 'front.shopping.continue'|trans }} + {% else %} + {{ 'common.go_to_top'|trans }} + {% endif %} +
    +
    +
    +{% endblock %} diff --git a/app/template/default/Shopping/confirm.twig b/app/template/default/Shopping/confirm.twig new file mode 100644 index 000000000..33657dc5c --- /dev/null +++ b/app/template/default/Shopping/confirm.twig @@ -0,0 +1,148 @@ + +{% extends 'default_frame.twig' %} + +{% form_theme form 'Form/form_div_layout.twig' %} + +{% block main %} +{% include "Components/heading.twig" with {'title': 'front.shopping.confirm_title' } %} + +{% include "Components/checkout/progress-bar.twig" with {'step4': 'is-complete' } %} + +
    + {{ form_widget(form._token) }} +
    +
    +
    + +
    +
    + {% for shipping in Order.shippings %} + {% set idx = loop.index0 %} +
    +
    + {{ 'front.shopping.delivery_info'|trans }} {{idx + 1}} +
    +
    +
    + {% for orderItem in shipping.productOrderItems %} +
    + {# Image #} + {% include "Components/product/image.twig" with {'product': orderItem.Product, 'imgClass': 'align-self-center mr-3 img-thumbnail rounded-0 product-thumb'} %} + +
    + {# Name #} + {% include "Components/product/name.twig" with {'product': orderItem.Product, type: 'text'} %} + + {# Options #} + {% include "Components/product/options.twig" with {'productClass': orderItem.productClass} %} + + {# Price #} + {% include "Components/product/price.twig" with {'product': orderItem, type: 'checkout'} %} + +

    + {{ 'common.subtotal__with_separator'|trans }} + {{ orderItem.totalPrice|price }} +

    +
    +
    + {% endfor %} +
    +
    +

    {{ shipping.name01|format_name(shipping.name02) }}

    +

    {{ format_address(shipping.addr01, shipping.addr02, shipping.pref, shipping.postal_code) }}

    +

    {{ shipping.phone_number }}

    +
    + +
    +
    + {% endfor %} +
    +
    +
    +
    + {{ 'front.shopping.payment_info'|trans }} +
    +
    + {% set charge = 0 %} + {% for item in Order.order_items if item.isCharge %} + {% set charge = item.total_price %} + {% endfor %} + {{ Order.Payment }} ({{ charge|price }}) +
    +
    +
    + {% if BaseInfo.isOptionPoint and Order.Customer is not null %} +
    +
    +
    + {{ 'front.shopping.use_point'|trans }} +
    +
    + {{ Order.use_point|number_format }} {{ 'common.point'|trans }} +
    +
    +
    + {% endif %} + + {% if Order.message is not empty %} +
    +
    +
    + {{ 'front.shopping.message_info'|trans }} +
    +
    + {{ Order.message|nl2br }} +
    +
    +
    + {% endif %} +
    +
    + {% include "Components/checkout/order-summary.twig" with {'type': 'confirm'} %} +
    +
    +
    +{% endblock %} diff --git a/app/template/default/Shopping/index.twig b/app/template/default/Shopping/index.twig new file mode 100644 index 000000000..ea8b76d82 --- /dev/null +++ b/app/template/default/Shopping/index.twig @@ -0,0 +1,403 @@ + +{% extends 'default_frame.twig' %} + +{% form_theme form 'Form/form_div_layout.twig' %} + +{% block javascript %} + +{% endblock javascript %} + + +{% block main %} + {% include "Components/heading.twig" with {'title': 'front.shopping.title' } %} + + {% include "Components/checkout/progress-bar.twig" with {'step3': 'is-complete' } %} + + {{ include('Shopping/alert.twig') }} + +
    + {{ form_widget(form._token) }} + {{ form_widget(form.redirect_to) }} +
    +
    +
    + +
    +
    + + {% for shipping in Order.shippings %} + {% set idx = loop.index0 %} +
    +
    + {{ 'front.shopping.delivery_to'|trans }} {% if Order.multiple %}({{ loop.index }}){% endif %} + {% if is_granted('ROLE_USER') %} + + {% else %} + + {% endif %} +
    +
    +
    + {% for orderItem in shipping.productOrderItems %} +
    + {# Image #} + {% include "Components/product/image.twig" with {'product': orderItem.Product, 'imgClass': 'align-self-center mr-3 img-thumbnail rounded-0 product-thumb'} %} + +
    + {# Name #} + {% include "Components/product/name.twig" with {'product': orderItem.Product, type: 'text'} %} + + {# Options #} + {% include "Components/product/options.twig" with {'productClass': orderItem.productClass} %} + + {# Price #} + {% include "Components/product/price.twig" with {'product': orderItem, type: 'checkout'} %} + +

    + {{ 'common.subtotal__with_separator'|trans }} + {{ orderItem.totalPrice|price }} +

    +
    +
    + {% endfor %} +
    +
    +
    +

    {{ 'common.name'|trans }}: {{ shipping.name01|format_name(shipping.name02) }}

    +

    {{ 'common.address'|trans }}: {{ format_address(shipping.addr01, shipping.addr02, shipping.pref, shipping.postal_code) }}

    +

    {{ 'common.phone_number'|trans }}: {{ shipping.phone_number }}

    +
    + +
    + {% endfor %} +
    + +
    +
    +
    +
    +
    + {{ 'front.shopping.payment_info'|trans }} +
    +
    + {% for key, child in form.Payment %} +
    + {% set Payment = form.Payment.vars.choices[key].data %} + + {{ form_widget(child, { 'attr': { 'data-trigger': 'change' }}) }} + + {% if Payment.payment_image is not null %} +

    + {% endif %} +
    + {% endfor %} +
    +
    +
    {{ form_errors(form.Payment) }}
    +
    + {% if BaseInfo.isOptionPoint and Order.Customer is not null %} +
    +
    +
    + {{ 'front.shopping.point_info'|trans }} +
    +
    +
    + + {{ form_widget(form.use_point, { 'attr': { 'type': 'text', 'class': 'form-control', 'data-trigger': 'change', 'aria-label': 'Điểm' }}) }} + {{ form_errors(form.use_point) }} +
    +
    +
    +
    + {% endif %} +
    +
    +
    + {{ form_label(form.message, 'front.shopping.message_info') }} +
    +
    + {{ form_widget(form.message, {'attr': {'class': 'form-control border-0 rounded-0', 'placeholder': 'front.shopping.message_placeholder'|trans, 'rows': '6'}}) }} + {{ form_errors(form.message) }} +
    +
    +
    +
    +
    + {% include "Components/checkout/order-summary.twig" %} +
    +
    +
    +{% endblock %} diff --git a/app/template/default/Shopping/login.twig b/app/template/default/Shopping/login.twig new file mode 100644 index 000000000..5aee5e90f --- /dev/null +++ b/app/template/default/Shopping/login.twig @@ -0,0 +1,64 @@ + +{% extends 'default_frame.twig' %} + +{% set body_class = 'cart_page' %} + +{% block main %} + {% include "Components/heading.twig" with {'title': 'common.login' } %} + +
    +
    + +
    +
    +{% endblock %} \ No newline at end of file diff --git a/app/template/default/Shopping/nonmember.twig b/app/template/default/Shopping/nonmember.twig new file mode 100644 index 000000000..d8866bc6a --- /dev/null +++ b/app/template/default/Shopping/nonmember.twig @@ -0,0 +1,49 @@ + +{% extends 'default_frame.twig' %} + +{% set body_class = 'cart_page' %} + +{% form_theme form 'Form/form_div_layout.twig' %} + +{% block main %} +{% include "Components/heading.twig" with {'title': 'front.shopping.nonmember' } %} + +{% include "Components/checkout/progress-bar.twig" with {'step2': 'is-complete' } %} + +
    +
    +
    + {{ form_widget(form._token) }} + {# Name #} + {% include "Components/form/name.twig" with {'form': form} %} + + {# Company Name #} + {% include "Components/form/company.twig" with {'form': form} %} + + {# Postcode #} + {% include "Components/form/postcode.twig" with {'form': form} %} + + {# Address #} + {% include "Components/form/address.twig" with {'form': form} %} + + {# Phone #} + {% include "Components/form/phone.twig" with {'form': form} %} + + {# Email #} + {% include "Components/form/email.twig" with {'form': form} %} + +
    +
    +
    +
    +
    + + {{ 'common.back'|trans }} +
    +
    +
    +
    +
    +
    +
    +{% endblock %} diff --git a/app/template/default/Shopping/shipping.twig b/app/template/default/Shopping/shipping.twig new file mode 100644 index 000000000..71c0313c5 --- /dev/null +++ b/app/template/default/Shopping/shipping.twig @@ -0,0 +1,62 @@ + +{% extends 'default_frame.twig' %} + +{% block main %} + {% include "Components/heading.twig" with {'title': 'front.shopping.shipping_title' } %} +
    +
    +
    +
    + {% if Customer.CustomerAddresses|length < eccube_config.eccube_deliv_addr_max %} + + {% else %} +
    +
    +
    + {{ 'common.customer_address_count_is_over'|trans({ '%count%': eccube_config.eccube_deliv_addr_max }) }} +
    +
    + {% endif %} + {% if has_errors(form.addresses) %} +
    +
    +
    + {{ 'front.shopping.shipping_unselected'|trans }} +
    +
    + {% endif %} +
    +
    +
    + {{ form_widget(form._token) }} + {% for choice in form.addresses.vars.choices %} + {% set Address = choice.data %} +
    +
    + {% set checked = choice is selectedchoice(form.addresses.vars.value) ? 'checked="checked"' : '' %} +
    + + +
    +
    +
    +

    {{ Address.name01 }} {{ Address.name02 }}

    +

    {{ format_address(Address.addr01, Address.addr02, Address.Pref, Address.postal_code) }}

    +

    {{ Address.phone_number }}

    +
    +
    +
    +
    + {% endfor %} +
    +
    + + {{ 'common.back'|trans }} +
    +
    +
    +
    +
    +
    +
    +{% endblock %} diff --git a/app/template/default/Shopping/shipping_edit.twig b/app/template/default/Shopping/shipping_edit.twig new file mode 100644 index 000000000..b397ded38 --- /dev/null +++ b/app/template/default/Shopping/shipping_edit.twig @@ -0,0 +1,62 @@ + +{% extends 'default_frame.twig' %} + +{% form_theme form 'Form/form_div_layout.twig' %} + +{% set body_class = 'cart_page' %} +{# ログイン状態によって、表示内容を切替 #} +{% if is_granted('ROLE_USER') is empty %} + {% set title = 'front.shopping.shipping_edit_title_nomember'|trans %} +{% endif %} + +{% block main %} + {% if is_granted('ROLE_USER') %} + {% include "Components/heading.twig" with {'title': 'front.shopping.shipping_edit_header_customer' } %} + {% else %} + {% include "Components/heading.twig" with {'title': 'front.shopping.shipping_edit_header_nonmember' } %} + {% endif %} + +
    +
    +
    +
    + {{ form_widget(form._token) }} + {# Name #} + {% include "Components/form/name.twig" with {'form': form} %} + + {# Company Name #} + {% include "Components/form/company.twig" with {'form': form} %} + + {# Postcode #} + {% include "Components/form/postcode.twig" with {'form': form} %} + + {# Address #} + {% include "Components/form/address.twig" with {'form': form} %} + + {# Phone #} + {% include "Components/form/phone.twig" with {'form': form} %} + + {# Options Render #} + {% include "Components/form/options_render.twig" with {'form': form} %} + +
    +
    +
    +
    +
    + + + {% if is_granted('ROLE_USER') %} + {{ 'common.back'|trans }} + {% else %} + {{ 'common.back'|trans }} + {% endif %} +
    +
    +
    +
    +
    +
    +
    +
    +{% endblock %} diff --git a/app/template/default/Shopping/shipping_multiple.twig b/app/template/default/Shopping/shipping_multiple.twig new file mode 100644 index 000000000..39c6ed36f --- /dev/null +++ b/app/template/default/Shopping/shipping_multiple.twig @@ -0,0 +1,158 @@ + +{% extends 'default_frame.twig' %} + +{% block javascript %} + +{% endblock javascript %} + +{% block main %} + {% include "Components/heading.twig" with {'title': 'front.shopping.shipping_multiple_title' } %} +
    +
    +
    + {{ form_widget(form._token) }} + + + {% for error in errors %} +
    {{ error.message }}
    + {% endfor %} + + + + {% for orderItem in OrderItems %} + {% set idx = loop.index0 %} + {% set itemvalue = 0 %} + +
    +
    + {{ orderItem.productName }} +
    +
    +
    + {{ orderItem.productName }} + +
    + {% if orderItem.productClass.classCategory1 %} +
    {{ orderItem.productClass.classCategory1 }}
    + {% endif %} + {% if orderItem.productClass.classCategory2 %} +
    {{ orderItem.productClass.classCategory2 }}
    + {% endif %} +
    {{ 'common.subtotal__with_separator'|trans }}{{ orderItem.totalPrice|price }}
    + + {% for key, value in compItemQuantities %} + {% if orderItem.productClass.id == key %} +
    {{ 'common.quantity'|trans }}:{{ value }}
    + {% set itemvalue = value %} + {% endif %} + {% endfor %} +
    +
    +
    + {% for shipping in form.shipping_multiple[idx].shipping %} +
    +
    +
    + + {{ form_widget(shipping.customer_address, {'attr': {'class': 'shipping'}}) }} + {{ form_errors(shipping.customer_address) }} +
    +
    +
    +
    + + {% for key, value in compItemQuantities %} + {% if orderItem.productClass.id == key %} + {% set quantity = shipping.quantity.vars.value ?: value %} + {{ form_widget(shipping.quantity, {'attr': {'class': 'quantity'}, 'value': quantity}) }} + {{ form_errors(shipping.quantity) }} + {% endif %} + {% endfor %} +
    +
    +
    + + +
    +
    + {% endfor %} +
    +
    + +
    + {% endfor %} + +
    +
    +
    +
    + + {{ 'common.back'|trans }} +
    +
    +
    +
    +
    +
    +
    +{% endblock %} diff --git a/app/template/default/Shopping/shipping_multiple_edit.twig b/app/template/default/Shopping/shipping_multiple_edit.twig new file mode 100644 index 000000000..dc8651fc8 --- /dev/null +++ b/app/template/default/Shopping/shipping_multiple_edit.twig @@ -0,0 +1,47 @@ + +{% extends 'default_frame.twig' %} + +{% form_theme form 'Form/form_div_layout.twig' %} + +{% block main %} + {% include "Components/heading.twig" with {'title': 'front.shopping.shipping_edit_header_customer' } %} +
    +
    +
    +
    + {{ form_widget(form._token) }} + + {# Name #} + {% include "Components/form/name.twig" with {'form': form} %} + + {# Company Name #} + {% include "Components/form/company.twig" with {'form': form} %} + + {# Postcode #} + {% include "Components/form/postcode.twig" with {'form': form} %} + + {# Address #} + {% include "Components/form/address.twig" with {'form': form} %} + + {# Phone #} + {% include "Components/form/phone.twig" with {'form': form} %} + + {# Options Render #} + {% include "Components/form/options_render.twig" with {'form': form} %} + +
    +
    +
    +
    +
    + + {{ 'common.back'|trans }} +
    +
    +
    +
    +
    +
    +
    +
    +{% endblock %} diff --git a/app/template/default/Shopping/shopping_error.twig b/app/template/default/Shopping/shopping_error.twig new file mode 100644 index 000000000..4db5fd0a9 --- /dev/null +++ b/app/template/default/Shopping/shopping_error.twig @@ -0,0 +1,21 @@ + +{% extends 'default_frame.twig' %} + +{% set body_class = 'cart_page' %} + +{% block main %} + +{% include "Components/heading.twig" with {'title': 'front.shopping.error' } %} + + +{{ include('Shopping/alert.twig', { 'error_only': true }) }} + +
    +
    + +
    +
    + +{% endblock %} diff --git a/app/template/default/default_frame.twig b/app/template/default/default_frame.twig new file mode 100644 index 000000000..057c15486 --- /dev/null +++ b/app/template/default/default_frame.twig @@ -0,0 +1,178 @@ + + + + + + + + {{ BaseInfo.shop_name }}{% if subtitle is defined and subtitle is not empty %} / {{ subtitle }}{% elseif title is defined and title is not empty %} / {{ title }}{% endif %} + {% if Page.author is not empty %} + + {% endif %} + {% if Page.description is not empty %} + + {% else %} + + {% endif %} + + {% if Page.keyword is not empty %} + + {% endif %} + {% if Page.meta_robots is not empty %} + + {% endif %} + {% if Page.meta_tags is not empty %} + {{ include(template_from_string(Page.meta_tags)) }} + {% endif %} + + + + + + + + + + {% block stylesheet %}{% endblock %} + + + + + {# HEAD #} + {% if Layout.Head %} + {{ include('block.twig', {'Blocks': Layout.Head}) }} + {% endif %} + {# プラグイン用styleseetやmetatagなど #} + {% if plugin_assets is defined %}{{ include('@admin/snippet.twig', { snippets: plugin_assets }) }}{% endif %} + + + +{# BODY_AFTER #} +{% if Layout.BodyAfter %} +
    + {{ include('block.twig', {'Blocks': Layout.BodyAfter}) }} +
    +{% endif %} +
    + {# HEADER #} + {% if Layout.Header %} +
    + {{ include('block.twig', {'Blocks': Layout.Header}) }} +
    + {% endif %} + + {# CONTENTS_TOP #} + {% if Layout.ContentsTop %} +
    + {{ include('block.twig', {'Blocks': Layout.ContentsTop}) }} +
    + {% endif %} + +
    + {% if (Layout.ColumnNum == 2 or Layout.ColumnNum == 3) %} +
    + {% endif %} + + {# SIDE_LEFT #} + {% if Layout.SideLeft %} +
    + {{ include('block.twig', {'Blocks': Layout.SideLeft}) }} +
    + {% endif %} + + {% set layoutRoleMain = 'ec-layoutRole__main' %} + {% if Layout.ColumnNum == 2 %} + {% set layoutRoleMain = 'col-9 ec-layoutRole__mainWithColumn' %} + {% elseif Layout.ColumnNum == 3 %} + {% set layoutRoleMain = 'col-6 ec-layoutRole__mainBetweenColumn' %} + {% endif %} + +
    + {# MAIN_TOP #} + {% if Layout.MainTop %} +
    + {{ include('block.twig', {'Blocks': Layout.MainTop}) }} +
    + {% endif %} + + {# MAIN AREA #} + {% block main %}{% endblock %} + + {# MAIN_Bottom #} + {% if Layout.MainBottom %} +
    + {{ include('block.twig', {'Blocks': Layout.MainBottom}) }} +
    + {% endif %} +
    + + {# SIDE_RIGHT #} + {% if Layout.SideRight %} +
    + {{ include('block.twig', {'Blocks': Layout.SideRight}) }} +
    + {% endif %} + + {% if (Layout.ColumnNum == 2 or Layout.ColumnNum == 3) %} +
    + {% endif %} +
    + + {# CONTENTS_BOTTOM #} + {% if Layout.ContentsBottom %} +
    + {{ include('block.twig', {'Blocks': Layout.ContentsBottom}) }} +
    + {% endif %} + + {# CONTENTS_FOOTER #} + {% if Layout.Footer %} + + {% endif %} +
    + +
    +
    +
    + {# DRAWER #} + {% if Layout.Drawer %} + {{ include('block.twig', {'Blocks': Layout.Drawer}) }} + {% endif %} +
    +
    {{'common.pagetop'|trans}}
    + + + + + + + +{% include('@common/lang.twig') %} + + + + +{% block javascript %}{% endblock %} +{# CLOSE_BODY_BEFORE #} +{% if Layout.CloseBodyBefore %} +
    + {{ include('block.twig', {'Blocks': Layout.CloseBodyBefore}) }} +
    +{% endif %} +{# プラグイン用Snippet #} +{% if plugin_snippets is defined %} + {{ include('snippet.twig', { snippets: plugin_snippets }) }} +{% endif %} + + + diff --git a/app/template/default/error.twig b/app/template/default/error.twig new file mode 100755 index 000000000..cea88aaa8 --- /dev/null +++ b/app/template/default/error.twig @@ -0,0 +1,30 @@ + + + + + + + {{ error_title }} + + + + +
    +
    +
    +
    +

    + +

    {{ error_title }}

    +

    +
    + {{ error_message }} +
    +
    + {{ 'common.go_to_top'|trans }} +
    +
    +
    +
    + + diff --git a/app/template/default/index.twig b/app/template/default/index.twig new file mode 100755 index 000000000..e3d9a4bfd --- /dev/null +++ b/app/template/default/index.twig @@ -0,0 +1,29 @@ + +{% extends 'default_frame.twig' %} + +{% set body_class = 'front_page' %} + +{% set container_class = 'container-full' %} + +{% block javascript %} + +{% endblock javascript %} + +{% block main %} +
    +
    +
    +
    +
    +
    +
    +{% endblock %} diff --git a/app/template/default/pager.twig b/app/template/default/pager.twig new file mode 100755 index 000000000..6e751664d --- /dev/null +++ b/app/template/default/pager.twig @@ -0,0 +1,68 @@ +{% if pages.pageCount > 1 %} + +{% endif %} diff --git a/app/template/default/toolbar/eccube.html.twig b/app/template/default/toolbar/eccube.html.twig new file mode 100644 index 000000000..1365ea3ec --- /dev/null +++ b/app/template/default/toolbar/eccube.html.twig @@ -0,0 +1,90 @@ +{# +This file is part of EC-CUBE + +Copyright(c) LOCKON CO.,LTD. All Rights Reserved. + +http://www.lockon.co.jp/ + +For the full copyright and license information, please view the LICENSE +file that was distributed with this source code. +#} +{% extends 'WebProfilerBundle:Profiler:layout.html.twig' %} + +{% block toolbar %} + {% set icon %} + eccube_logo_basic + {{ collector.version }} + {% endset %} + {% set text %} + + +
    +
    + {{ 'admin.setting.system.system.eccube'|trans }} + {{ collector.version }} +
    +
    + Plugins + {% for plugin in collector.plugins %} +
    + {{ plugin.code }} +
    + {% endfor %} +
    +
    +
    +
    + Currency + + + {{ collector.currencyCode|default('Undefined') }} + + + {% if collector.currencyCode != collector.defaultCurrencyCode %} + + + {{ collector.defaultCurrencyCode }} + + + {% endif %} +
    +
    + Locale + + + {{ collector.localeCode|default('Undefined') }} + + + {% if collector.localeCode != collector.defaultLocaleCode %} + + + {{ collector.defaultLocaleCode }} + + + {% endif %} +
    +
    +
    +
    + Resources + {{ 'admin.setting.system.system.eccube.document'|trans }} +
    +
    + {% endset %} + + {% include '@WebProfiler/Profiler/toolbar_item.html.twig' with {'link': false, additional_classes: 'sf-toolbar-block-right'} %} +{% endblock %} diff --git a/composer.json b/composer.json index 295b5185b..208257160 100644 --- a/composer.json +++ b/composer.json @@ -1,14 +1,14 @@ { - "name": "ec-cube/ec-cube", + "name": "eccubevn/ec-cube-vn", "description": "EC-CUBE EC open platform.", "type": "project", - "homepage": "https://www.ec-cube.net/", + "homepage": "https://www.ec-cube.vn/", "license": [ "GPL-2.0-only", "proprietary" ], "support": { - "issues": "https://github.com/EC-CUBE/ec-cube/issues" + "issues": "https://github.com/eccubevn/ec-cube-vn/issues" }, "minimum-stability": "stable", "require": { diff --git a/gulpfile.js b/gulpfile.js index 78d52cca0..58db246a6 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -5,6 +5,9 @@ const rename = require('gulp-rename'); const cleanCSS = require('gulp-clean-css'); const es = require('event-stream'); +const browserSync = require('browser-sync').create(); +const php = require('gulp-connect-php'); + const srcPattern = [ 'default', 'admin' @@ -52,6 +55,50 @@ gulp.task('minify-css', function() { }); return es.concat(events); }); - gulp.task("default", ["sass", "minify-css"]); +// Custom build template +gulp.task('php', function(){ + php.server({ + base: './', + port: 8010, + keepalive: true + }); +}); + +gulp.task('browserSync',['php'], function() { + browserSync.init({ + proxy: "localhost:8010", + baseDir: "./", + open: true, + notify: false + }) +}); + +gulp.task('sass-frontend', function() { + return gulp.src('./html/template/default/assets/scss/style.scss') + .pipe($.plumber({ + errorHandler: $.notify.onError('<%= error.message %>') + })) + .pipe($.sourcemaps.init()) + .pipe(sass({ + sourceMap: true + })) + .pipe($.pleeease({ + autoprefixer: true, + minifier: false, + mqpacker: true + })) + .pipe($.sourcemaps.write('./maps')) + .pipe(gulp.dest('./html/template/default/assets/css/')) + .pipe(browserSync.reload({ + stream: true + })) +}); + +// YOU ONLY NEED RUN 'gulp dev' AND CAN START DEVELOPMENT THE TEMPLATE +gulp.task('dev', ['browserSync', 'sass-frontend'], function(){ + gulp.watch('./html/template/default/assets/scss/**/*.scss', ['sass-frontend']); + gulp.watch('./app/template/default/**/*.twig', browserSync.reload); + gulp.watch('./html/template/default/assets/js/**/*.js', browserSync.reload); +}); \ No newline at end of file diff --git a/html/template/admin/assets/gijgo/gijgo.min.css b/html/template/admin/assets/gijgo/gijgo.min.css new file mode 100644 index 000000000..90371d305 --- /dev/null +++ b/html/template/admin/assets/gijgo/gijgo.min.css @@ -0,0 +1 @@ +.gj-button-md,.gj-text-align-center{text-align:center}.gj-button-md,.gj-modal{overflow:hidden;outline:0}.gj-button-md,.gj-button-md-group{position:relative;vertical-align:middle}.gj-button,.gj-button-md,.gj-cursor-pointer{cursor:pointer}.gj-button{background-color:#f5f5f5;border:1px solid #ddd;color:#000;border-radius:3px;padding:6px 10px}.gj-unselectable{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.gj-row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.gj-margin-left-5{margin-left:5px}.gj-margin-left-10{margin-left:10px}.gj-width-full{width:100%}.gj-font-size-16{font-size:16px}.gj-hidden{display:none}.gj-button-md{background:0 0;border:none;border-radius:2px;color:rgba(0,0,0,.87);height:36px;margin:0;min-width:64px;padding:0 16px;display:inline-block;font-family:Roboto,Helvetica,Arial,sans-serif;font-size:1rem;font-weight:500;text-transform:uppercase;letter-spacing:0;will-change:box-shadow;transition:box-shadow .2s cubic-bezier(.4,0,1,1),background-color .2s cubic-bezier(.4,0,.2,1),color .2s cubic-bezier(.4,0,.2,1);text-decoration:none;line-height:36px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.gj-button-md:hover{background-color:rgba(158,158,158,.2)}.gj-button-md:disabled{color:rgba(0,0,0,.26);background:0 0}.gj-button-md .gj-icon,.gj-button-md .material-icons{vertical-align:middle}.gj-button-md.gj-button-md-icon{width:24px;height:31px;min-width:24px;padding:0;display:table}ul.gj-list-bootstrap li [data-role=image],ul.gj-list-md li [data-role=checkbox],ul.gj-list-md li [data-role=image]{height:24px;width:24px}.gj-button-md.gj-button-md-icon .gj-icon,.gj-button-md.gj-button-md-icon .material-icons{display:table-cell;margin-right:0;width:24px;height:24px}.gj-button-md.active{background-color:rgba(158,158,158,.4)}.gj-button-md-group{display:inline-block}.gj-textbox-md{border:none;border-bottom:1px solid rgba(0,0,0,.42);display:block;font-family:Helvetica,Arial,sans-serif;font-size:16px;line-height:16px;padding:4px 0;margin:0;width:100%;background:0 0;text-align:left;color:rgba(0,0,0,.87)}.gj-textbox-md:active,.gj-textbox-md:focus{border-bottom:2px solid rgba(0,0,0,.42);outline:0}.gj-textbox-md::placeholder{color:#8e8e8e}.gj-textbox-md:-ms-input-placeholder{color:#8e8e8e}.gj-textbox-md::-ms-input-placeholder{color:#8e8e8e}.gj-md-spacer-24{min-width:24px;width:24px;display:inline-block}.gj-md-spacer-32{min-width:32px;width:32px;display:inline-block}.gj-modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1203;display:none;-webkit-overflow-scrolling:touch;background-color:rgba(0,0,0,.54118);transition:.2s ease opacity;will-change:opacity}ul.gj-list li [data-role=wrapper]{display:table;width:100%}ul.gj-list li [data-role=checkbox],ul.gj-list li [data-role=image]{display:table-cell;vertical-align:middle;text-align:center}ul.gj-list li [data-role=display]{display:table-cell;vertical-align:middle;cursor:pointer}ul.gj-list li [data-role=display]:empty:before{content:"\200b"}ul.gj-list-bootstrap{padding-left:0;margin-bottom:0}ul.gj-list-bootstrap li{padding:0}ul.gj-list-bootstrap li [data-role=wrapper]{padding:0 10px}ul.gj-list-bootstrap li [data-role=checkbox]{width:24px;padding:3px}ul.gj-list-bootstrap li [data-role=display]{padding:8px 0 8px 4px}.list-group-item.active ul li,.list-group-item.active:focus ul li,.list-group-item.active:hover ul li{text-shadow:none;color:initial}ul.gj-list-md{padding:0;list-style:none;line-height:24px;letter-spacing:0;color:#616161}.gj-picker-md,ul.gj-list-md li{font-family:Roboto,Helvetica,Arial,sans-serif;font-size:16px;font-weight:400;letter-spacing:.04em;line-height:1}ul.gj-list-md li{display:list-item;list-style-type:none;padding:0;min-height:unset;box-sizing:border-box;align-items:center;cursor:default;overflow:hidden;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap}ul.gj-list-md li [data-role=display]{padding:8px 0 8px 5px;order:0;flex-grow:2;text-decoration:none;box-sizing:border-box;align-items:center;text-align:left;color:rgba(0,0,0,.87)}ul.gj-list-md li.disabled>[data-role=wrapper]>[data-role=display]{color:#9E9E9E}.gj-list-md-active{background:#e0e0e0;color:#3f51b5}.gj-picker{position:absolute;z-index:1203;background-color:#fff}.gj-picker .selected{color:#fff}.gj-picker-md{color:rgba(0,0,0,.87);border:1px solid #E0E0E0}.gj-modal .gj-picker-md{border:0}.gj-picker-md [role=header]{color:rgba(255,255,255,.54);display:flex;background:#2196f3;align-items:baseline;user-select:none;justify-content:center}.gj-picker-md [role=footer]{float:right;padding:10px}.gj-picker-md [role=footer] button.gj-button-md{color:#2196f3;font-weight:700;font-size:13px}.gj-picker-bootstrap{border:1px solid #E0E0E0}.gj-picker-bootstrap .selected{color:#888}.gj-picker-bootstrap [role=header]{background:#eee;color:#AAA}@font-face{font-family:gijgo-material;src:url(../fonts/gijgo-material.eot?235541);src:url(../fonts/gijgo-material.eot?235541#iefix) format('embedded-opentype'),url(../fonts/gijgo-material.ttf?235541) format('truetype'),url(../fonts/gijgo-material.woff?235541) format('woff'),url(../fonts/gijgo-material.svg?235541#gijgo-material) format('svg');font-weight:400;font-style:normal}.gj-icon{font-family:gijgo-material!important;font-size:24px;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;letter-spacing:0;-webkit-font-feature-settings:"liga";-moz-font-feature-settings:"liga=1";-moz-font-feature-settings:"liga";-ms-font-feature-settings:"liga" 1;font-feature-settings:"liga";-webkit-font-variant-ligatures:discretionary-ligatures;font-variant-ligatures:discretionary-ligatures;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.gj-icon.undo:before{content:"\e900"}.gj-icon.vertical-align-top:before{content:"\e901"}.gj-icon.vertical-align-center:before{content:"\e902"}.gj-icon.vertical-align-bottom:before{content:"\e903"}.gj-icon.arrow-dropup:before{content:"\e904"}.gj-icon.clock:before{content:"\e905"}.gj-icon.refresh:before{content:"\e906"}.gj-icon.last-page:before{content:"\e907"}.gj-icon.first-page:before{content:"\e908"}.gj-icon.cancel:before{content:"\e909"}.gj-icon.clear:before{content:"\e90a"}.gj-icon.check-circle:before{content:"\e90b"}.gj-icon.delete:before{content:"\e90c"}.gj-icon.arrow-upward:before{content:"\e90d"}.gj-icon.arrow-forward:before{content:"\e90e"}.gj-icon.arrow-downward:before{content:"\e90f"}.gj-icon.arrow-back:before{content:"\e910"}.gj-icon.list-numbered:before{content:"\e911"}.gj-icon.list-bulleted:before{content:"\e912"}.gj-icon.indent-increase:before{content:"\e913"}.gj-icon.indent-decrease:before{content:"\e914"}.gj-icon.redo:before{content:"\e915"}.gj-icon.align-right:before{content:"\e916"}.gj-icon.align-left:before{content:"\e917"}.gj-icon.align-justify:before{content:"\e918"}.gj-icon.align-center:before{content:"\e919"}.gj-icon.strikethrough:before{content:"\e91a"}.gj-icon.italic:before{content:"\e91b"}.gj-icon.underlined:before{content:"\e91c"}.gj-icon.bold:before{content:"\e91d"}.gj-icon.arrow-dropdown:before{content:"\e91e"}.gj-icon.done:before{content:"\e91f"}.gj-icon.pencil:before{content:"\e920"}.gj-icon.minus:before{content:"\e921"}.gj-icon.plus:before{content:"\e922"}.gj-icon.chevron-up:before{content:"\e923"}.gj-icon.chevron-right:before{content:"\e924"}.gj-icon.chevron-down:before{content:"\e925"}.gj-icon.chevron-left:before{content:"\e926"}.gj-icon.event:before{content:"\e927"}.gj-draggable{cursor:move}.gj-resizable-handle{position:absolute;font-size:.1px;display:block;-ms-touch-action:none;touch-action:none;z-index:1203}.gj-dialog-bootstrap [data-role=title],.gj-dialog-bootstrap4 [data-role=title]{display:inline}.gj-dialog-bootstrap,.gj-dialog-bootstrap4,.gj-dialog-md{z-index:1202;overflow:hidden}.gj-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.gj-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.gj-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.gj-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.gj-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.gj-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.gj-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.gj-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.gj-dialog-footer{position:absolute;bottom:0;width:100%;margin-top:0}.gj-dialog-scrollable [data-role=body]{overflow-x:hidden;overflow-y:scroll}.gj-dialog-bootstrap [data-role=close]{line-height:1.42857143}.gj-dialog-bootstrap4 [data-role=close]{line-height:1.5}.gj-dialog-md{background-color:#FFF;border:none;box-shadow:0 11px 15px -7px rgba(0,0,0,.2),0 24px 38px 3px rgba(0,0,0,.14),0 9px 46px 8px rgba(0,0,0,.12);box-sizing:border-box;position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-background-clip:padding-box;background-clip:padding-box;outline:0}.gj-dialog-md-header{padding:24px 24px 0;font-family:Roboto,Helvetica,Arial,sans-serif}.gj-dialog-md-title{margin:0;font-weight:400;display:inline;line-height:28px;font-size:20px}.gj-dialog-md-close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0;float:right;line-height:28px;font-size:28px}.gj-dialog-md-body{padding:20px 24px 24px;color:rgba(0,0,0,.54);font-family:Helvetica,Arial,sans-serif;font-size:14px;font-weight:400;line-height:20px}.gj-dialog-md-footer{padding:8px 8px 8px 24px;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;box-sizing:border-box}.gj-dialog-md-footer>:first-child{margin-right:0}.gj-dialog-md-footer>*{margin-right:8px;height:36px}DIV.gj-grid-wrapper{margin:auto;position:relative;clear:both;z-index:1}TABLE.gj-grid{margin:auto;border-collapse:collapse;width:100%;table-layout:fixed}TABLE.gj-grid THEAD TH [data-role=selectAll]{margin:auto}table.gj-grid-bootstrap thead th [data-role=sorticon],table.gj-grid-md thead th [data-role=sorticon]{margin-left:5px}TABLE.gj-grid THEAD TH [data-role=title],TABLE.gj-grid THEAD TH [data-role=sorticon]{display:inline-block}TABLE.gj-grid THEAD TH{overflow:hidden;text-overflow:ellipsis}TABLE.gj-grid.autogrow-header-row THEAD TH{overflow:auto;text-overflow:initial;white-space:pre-wrap;-ms-word-break:break-word;word-break:break-word}TABLE.gj-grid>tbody>tr>td{overflow:hidden;position:relative}table.gj-grid tbody div[data-role=display]{vertical-align:middle;text-indent:0;white-space:pre-wrap;-ms-word-break:break-word;word-break:break-word}table.gj-grid.fixed-body-rows tbody div[data-role=display]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;-ms-word-break:initial;word-break:initial}table.gj-grid tfoot DIV[data-role=display]{vertical-align:middle;text-indent:0;display:flex}TABLE.gj-grid .fa{padding:2px}TABLE.gj-grid>tbody>tr>td>div{padding:2px;overflow:hidden}DIV.gj-grid-wrapper DIV.gj-grid-loading-cover{background:#BBB;opacity:.5;position:absolute;vertical-align:middle}DIV.gj-grid-wrapper DIV.gj-grid-loading-text{position:absolute;font-weight:700}table.gj-grid-bootstrap thead th{background-color:#f5f5f5;vertical-align:middle}table.gj-grid-bootstrap thead th [data-role=sorticon] i.gj-icon,table.gj-grid-bootstrap thead th [data-role=sorticon] i.material-icons{position:absolute;font-size:20px;top:15px}table.gj-grid-bootstrap tbody tr td div[data-role=display]{padding:0}.gj-grid-bootstrap-4 .gj-checkbox-bootstrap{display:inline-block;padding-top:2px}.gj-grid-md{position:relative;border:1px solid #e0e0e0;border-collapse:collapse;white-space:nowrap;font-size:13px;font-family:Roboto,Helvetica,Arial,sans-serif;background-color:#fff}.gj-grid-md td:first-of-type,.gj-grid-md th:first-of-type{padding-left:24px}.gj-grid-md td,.gj-grid-md th{padding:12px 18px;position:relative;box-sizing:border-box}.gj-grid-md th{vertical-align:bottom;font-weight:700;line-height:31px;letter-spacing:0;height:56px;font-size:12px;color:rgba(0,0,0,.54);text-align:right}.gj-grid-md td{height:48px;border-top:1px solid #e0e0e0;border-bottom:1px solid #e0e0e0;text-align:left;color:rgba(0,0,0,.87)}.gj-grid-bootstrap tbody tr.gj-grid-top-border td,.gj-grid-md tbody tr.gj-grid-top-border td{border-top:2px solid #777}.gj-grid-bootstrap tbody tr.gj-grid-bottom-border td,.gj-grid-md tbody tr.gj-grid-bottom-border td{border-bottom:2px solid #777}.gj-grid-md tbody tr{position:relative;height:48px;transition-duration:.28s;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-property:background-color}.gj-grid-md tbody tr:hover{background-color:#EEE}.gj-grid-md tbody tr.gj-grid-md-select{background-color:#F5F5F5}table.gj-grid-md thead th [data-role=sorticon] i.gj-icon,table.gj-grid-md thead th [data-role=sorticon] i.material-icons{position:absolute;font-size:16px;top:19px}table.gj-grid-md thead th.gj-grid-select-all{padding-bottom:3px}@media only all{td.display-1120,td.display-320,td.display-480,td.display-640,td.display-800,td.display-960,th.display-1120,th.display-320,th.display-480,th.display-640,th.display-800,th.display-960{display:none}}@media screen and (min-width:20em){TABLE.gj-grid-bootstrap td.display-320,TABLE.gj-grid-bootstrap th.display-320{display:table-cell}}@media screen and (min-width:30em){TABLE.gj-grid-bootstrap td.display-480,TABLE.gj-grid-bootstrap th.display-480{display:table-cell}}@media screen and (min-width:40em){TABLE.gj-grid-bootstrap td.display-640,TABLE.gj-grid-bootstrap th.display-640{display:table-cell}}@media screen and (min-width:50em){TABLE.gj-grid-bootstrap td.display-800,TABLE.gj-grid-bootstrap th.display-800{display:table-cell}}@media screen and (min-width:60em){TABLE.gj-grid-bootstrap td.display-960,TABLE.gj-grid-bootstrap th.display-960{display:table-cell}}@media screen and (min-width:70em){TABLE.gj-grid-bootstrap td.display-1120,TABLE.gj-grid-bootstrap th.display-1120{display:table-cell}}.gj-grid-md tfoot tr th{padding-right:14px}.gj-grid-md tfoot tr[data-role=pager] .gj-grid-mdl-pager-label{padding-left:5px;padding-right:5px}.gj-grid-md tfoot tr[data-role=pager] .gj-dropdown-md{margin-left:12px}.gj-grid-md tfoot tr[data-role=pager] .gj-dropdown-md [role=presenter]{font-size:12px;font-weight:700;color:rgba(0,0,0,.54)}.gj-grid-md tfoot tr[data-role=pager] .gj-dropdown-md [role=presenter] [role=display]{text-align:right}.gj-grid-md tfoot tr[data-role=pager] .gj-grid-md-limit-select{margin-left:10px;font-size:12px;font-weight:700;color:rgba(0,0,0,.54)}.gj-grid-bootstrap tfoot tr[data-role=pager] th{line-height:30px;background-color:#f5f5f5}.gj-grid-bootstrap tfoot tr[data-role=pager] th>div>button,.gj-grid-bootstrap tfoot tr[data-role=pager] th>div>div{margin-right:5px}.gj-grid-bootstrap-4 tfoot tr[data-role=pager] th>div button{height:34px}.gj-grid-bootstrap-4 tfoot tr[data-role=pager] th div .gj-dropdown-bootstrap-4 .gj-dropdown-expander-mi .gj-icon{top:5px}.gj-grid-bootstrap-3 tfoot tr[data-role=pager] th>div>input{margin-right:5px;width:40px;text-align:right;display:inline-block;font-weight:700}.gj-grid-bootstrap-4 tfoot tr[data-role=pager] th>div>div.input-group{width:40px}.gj-grid-bootstrap-4 tfoot tr[data-role=pager] th>div>div.input-group input{text-align:right;font-weight:700;height:34px;padding-top:2px;padding-bottom:6px}.gj-grid-bootstrap tfoot tr[data-role=pager] th>div>select{display:inline-block;margin-right:5px;width:60px}.gj-grid-bootstrap tfoot tr[data-role=pager] th .gj-dropdown-bootstrap .gj-list-bootstrap [data-role=display]{line-height:14px}.gj-grid-bootstrap tfoot tr[data-role=pager] th .gj-dropdown-bootstrap [role=presenter] [role=display]{font-weight:700}.gj-grid-bootstrap tfoot tr[data-role=pager] th .gj-dropdown-bootstrap-3 [role=presenter]{padding:2px 8px}.gj-grid-bootstrap tfoot tr[data-role=pager] th .gj-dropdown-bootstrap-4 [role=presenter]{padding:1px 8px}.gj-grid thead tr th div.gj-grid-column-resizer-wrapper{position:relative;width:100%;height:0;top:0;left:0;padding:0}span.gj-grid-column-resizer{position:absolute;right:0;width:10px;top:-100px;height:300px;z-index:1203;cursor:e-resize}.gj-grid-resize-cursor{cursor:e-resize}.gj-grid-md tbody tr td.gj-grid-left-border,.gj-grid-md thead tr th.gj-grid-left-border{border-left:3px solid #777}.gj-grid-md tbody tr td.gj-grid-right-border,.gj-grid-md thead tr th.gj-grid-right-border{border-right:3px solid #777}.gj-grid-bootstrap tbody tr td.gj-grid-left-border,.gj-grid-bootstrap thead tr th.gj-grid-left-border{border-left:5px solid #ddd}.gj-grid-bootstrap tbody tr td.gj-grid-right-border,.gj-grid-bootstrap thead tr th.gj-grid-right-border{border-right:5px solid #ddd}.gj-dirty{position:absolute;top:0;left:0;border-style:solid;border-width:3px;border-color:red transparent transparent red;padding:0;overflow:hidden;vertical-align:top}.gj-grid-md tbody tr td.gj-grid-management-column{padding:3px}.gj-grid-md tbody tr td[data-mode=edit]{padding:0 18px}.gj-grid-bootstrap tbody tr td[data-mode=edit],.gj-grid-bootstrap tbody tr td[data-mode=edit] [data-role=edit],.gj-grid-md tbody .gj-dropdown-md [role=presenter] [role=display]{padding:0}.gj-grid-bootstrap-3 tbody tr td.gj-grid-management-column{padding:3px}.gj-grid-bootstrap-3 tbody tr td[data-mode=edit]{height:38px}.gj-grid-bootstrap-3 tbody tr td[data-mode=edit] [data-role=edit] input[type=text]{height:37px;padding:8px}.gj-grid-bootstrap-3 tbody tr td[data-mode=edit] .gj-dropdown-bootstrap [role=presenter]{border:0;border-radius:0;height:37px;padding-left:8px}.gj-grid-bootstrap-3 tbody tr td[data-mode=edit] .gj-datepicker-bootstrap{height:37px}.gj-grid-bootstrap-3 tbody tr td[data-mode=edit] .gj-datepicker-bootstrap [role=input]{height:37px;border:0;border-radius:0}.gj-grid-bootstrap-3 tbody tr td[data-mode=edit] .gj-datepicker-bootstrap [role=right-icon]{border:0;border-radius:0}.gj-grid-bootstrap-3 tbody tr td[data-mode=edit] .gj-checkbox-bootstrap{display:inline-block;padding-top:10px;height:32px}.gj-grid-bootstrap-4 tbody tr td.gj-grid-management-column{padding:6px}.gj-grid-bootstrap-4 tbody tr td[data-mode=edit] [data-role=edit] input[type=text]{height:48px;padding-left:12px}.gj-grid-bootstrap-4 tbody tr td[data-mode=edit] .gj-dropdown-bootstrap [role=presenter]{border:0;border-radius:0;height:48px;padding-left:12px;font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif}.gj-grid-bootstrap-4 tbody tr td[data-mode=edit] .gj-dropdown-bootstrap-4 [role=expander].gj-dropdown-expander-mi .gj-icon,.gj-grid-bootstrap-4 tbody tr td[data-mode=edit] .gj-dropdown-bootstrap-4 [role=expander].gj-dropdown-expander-mi .material-icons{top:13px}.gj-grid-bootstrap-4 tbody tr td[data-mode=edit] .gj-datepicker-bootstrap{height:48px}.gj-grid-bootstrap-4 tbody tr td[data-mode=edit] .gj-datepicker-bootstrap [role=input]{height:48px;border:0;border-radius:0}.gj-grid-bootstrap-4 tbody tr td[data-mode=edit] .gj-datepicker-bootstrap [role=right-icon]{background-color:#fff}.gj-grid-bootstrap-4 tbody tr td[data-mode=edit] .gj-datepicker-bootstrap [role=right-icon] button{border:0;border-radius:0;width:43px;position:relative}.gj-grid-bootstrap-4 tbody tr td[data-mode=edit] .gj-datepicker-bootstrap [role=right-icon] .gj-icon,.gj-grid-bootstrap-4 tbody tr td[data-mode=edit] .gj-datepicker-bootstrap [role=right-icon] .material-icons{top:13px;left:10px;font-size:24px}.gj-grid-bootstrap-4 tbody tr td[data-mode=edit] .gj-checkbox-bootstrap{display:inline-block;padding-top:15px;height:42px}.gj-grid-md thead tr[data-role=filter] th{border-top:1px solid #e0e0e0}div.gj-grid-wrapper div.gj-grid-bootstrap-toolbar{background-color:#f5f5f5;padding:8px;font-weight:700;border:1px solid #ddd}div.gj-grid-wrapper div.gj-grid-bootstrap-4-toolbar{background-color:#f5f5f5;padding:12px;font-weight:700;border:1px solid #ddd}div.gj-grid-wrapper div.gj-grid-md-toolbar{font-weight:700;font-size:24px;font-family:Helvetica,Arial,sans-serif;background-color:#fff;border-top:1px solid #e0e0e0;border-left:1px solid #e0e0e0;border-right:1px solid #e0e0e0;border-bottom:0;border-collapse:collapse;padding:0 18px;line-height:56px}.gj-checkbox-bootstrap,.gj-checkbox-md{min-width:0;font-weight:400;text-align:center;position:relative}table.gj-grid-scrollable tbody{overflow-y:auto;overflow-x:hidden;display:block}table.gj-grid-md.gj-grid-scrollable{border-bottom:0}table.gj-grid-md.gj-grid-scrollable tbody{border-right:1px solid #e0e0e0;border-bottom:1px solid #e0e0e0}table.gj-grid-md.gj-grid-scrollable tfoot{border-bottom:1px solid #e0e0e0}table.gj-grid-bootstrap.gj-grid-scrollable{border-bottom:0}table.gj-grid-bootstrap.gj-grid-scrollable tbody{border-right:1px solid #ddd;border-bottom:1px solid #ddd}table.gj-grid-bootstrap.gj-grid-scrollable tbody tr[data-role=row]:first-child td{border-top:0}table.gj-grid-bootstrap.gj-grid-scrollable tbody tr[data-role=row] td:first-child{border-left:0}table.gj-grid-bootstrap.gj-grid-scrollable tbody tr[data-role=row] td:last-child{border-right:0}table.gj-grid-bootstrap.gj-grid-scrollable tfoot{border-bottom:1px solid #ddd}ul.gj-list li [data-role=spacer]{display:table-cell}ul.gj-list li [data-role=expander]{display:table-cell;vertical-align:middle;text-align:center;cursor:pointer}[data-type=tree] ul li [data-role=expander].gj-tree-font-awesome-expander,[data-type=tree] ul li [data-role=expander].gj-tree-glyphicons-expander,[data-type=tree] ul li [data-role=expander].gj-tree-material-icons-expander{width:24px}[data-type=tree] ul li [data-role=expander].gj-tree-glyphicons-expander .glyphicon{top:4px;height:24px}.gj-tree-bootstrap-3 ul.gj-list-bootstrap li{border:0;border-radius:0;color:#333}.gj-tree-bootstrap-3 ul.gj-list-bootstrap li.active{color:#fff}.gj-tree-bootstrap-3 ul.gj-list-bootstrap li.disabled{color:#777;background-color:#eee}.gj-tree-bootstrap-4 ul.gj-list-bootstrap li{border:0;border-radius:0;color:#212529}.gj-tree-bootstrap-4 ul.gj-list-bootstrap li.active{color:#fff}.gj-tree-bootstrap-4 ul.gj-list-bootstrap li.disabled{color:#868e96}.gj-tree-bootstrap-4 ul.gj-list-bootstrap li ul.gj-list-bootstrap{width:100%}.gj-tree-bootstrap-border ul.gj-list-bootstrap li{border:1px solid #ddd}.gj-tree-bootstrap-border ul.gj-list-bootstrap li ul.gj-list-bootstrap li{border-left:0;border-right:0}.gj-tree-bootstrap-border ul.gj-list-bootstrap li:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.gj-tree-bootstrap-border ul.gj-list-bootstrap li:last-child{border-bottom-left-radius:4px;border-bottom-right-radius:4px}.gj-tree-bootstrap-border ul.gj-list-bootstrap li ul.gj-list-bootstrap li:first-child{border-top-left-radius:0;border-top-right-radius:0}.gj-tree-bootstrap-border ul.gj-list-bootstrap li ul.gj-list-bootstrap li:last-child{border-bottom:0;border-bottom-left-radius:0;border-bottom-right-radius:0}ul.gj-list-bootstrap li [data-role=expander].gj-tree-material-icons-expander{padding-top:8px;padding-bottom:4px}.gj-tree-drag-el,.gj-tree-drag-el li{padding:0;margin:0}ul.gj-list-bootstrap li [data-role=expander].gj-tree-material-icons-expander .gj-icon{width:24px;height:24px}ul.gj-list-md li.disabled>[data-role=wrapper]>[data-role=expander]{color:#9E9E9E}.gj-tree-md-border ul.gj-list-md li{border:1px solid #616161;margin-bottom:-1px}.gj-tree-md-border ul.gj-list-md li ul.gj-list-md li{border-left:0;border-right:0}.gj-tree-md-border ul.gj-list-md li ul.gj-list-md li:last-child{border-bottom:0}.gj-tree-drop-above{border-top:1px solid #000}.gj-tree-bootstrap-3 ul.gj-list-bootstrap li [data-role=wrapper].drop-above,.gj-tree-bootstrap-4 ul.gj-list-bootstrap li [data-role=wrapper].drop-above{border-top:2px solid #000}.gj-tree-drop-below{border-bottom:1px solid #000}.gj-tree-bootstrap-3 ul.gj-list-bootstrap li [data-role=wrapper].drop-below,.gj-tree-bootstrap-4 ul.gj-list-bootstrap li [data-role=wrapper].drop-below{border-bottom:2px solid #000}.gj-tree-drag-el{z-index:1203}.gj-tree-drag-el [data-role=wrapper]{cursor:move;display:table}.gj-tree-drag-el [data-role=indicator]{width:14px;padding:0 3px;display:table-cell;vertical-align:middle;text-align:center}.gj-tree-bootstrap-drag-el li.list-group-item{border:0;background:unset}.gj-tree-bootstrap-drag-el [data-role=indicator],.gj-tree-md-drag-el [data-role=indicator]{width:24px;height:24px;padding:0}.gj-checkbox-bootstrap{font-size:0;margin:0;width:18px;height:18px;display:inline}.gj-checkbox-bootstrap input[type=checkbox]{display:none;margin-bottom:-12px}.gj-checkbox-bootstrap span{background:#fff;display:block;content:" ";width:18px;height:18px;line-height:11px;font-size:11px;padding:2px;color:#555;border:1px solid #CCC;border-radius:3px;transition:box-shadow .2s linear,border-color .2s linear;cursor:pointer;margin:auto}.gj-checkbox-bootstrap input[type=checkbox]:focus+span:before{outline:0;box-shadow:0 0 0 0 #66afe9,0 0 6px rgba(102,175,233,.6);border-color:#66afe9}.gj-datepicker-bootstrap :active,.gj-datepicker-bootstrap :focus,.gj-timepicker-bootstrap :active,.gj-timepicker-bootstrap :focus{box-shadow:none}.gj-checkbox-bootstrap input[type=checkbox][disabled]+span{opacity:.6;cursor:not-allowed}.gj-checkbox-bootstrap.gj-checkbox-bootstrap-4 span{line-height:16px;padding:0}.gj-checkbox-bootstrap-4.gj-checkbox-material-icons input[type=checkbox]:checked+span:after,.gj-checkbox-bootstrap-4.gj-checkbox-material-icons input[type=checkbox]:indeterminate+span:after{font-size:16px}.gj-checkbox-md{font-size:0;margin:0;width:16px;height:16px}.gj-checkbox-md input[type=checkbox]{display:none;margin-bottom:-12px}.gj-checkbox-md span{display:inline-block;box-sizing:border-box;width:16px;height:16px;margin:0;cursor:pointer;overflow:hidden;border:2px solid #616161;border-radius:2px;z-index:2}.gj-checkbox-md input[type=checkbox]:checked+span{border:2px solid #536DFE}.gj-checkbox-md input[type=checkbox]:checked+span:after{color:#FFF;background-color:#536DFE;position:absolute;left:1px;top:-15px}.gj-checkbox-md input[type=checkbox]:indeterminate+span{border:2px solid #616161}.gj-checkbox-md input[type=checkbox]:indeterminate+span:after{color:#616161;position:absolute;left:1px;top:-15px}.gj-checkbox-md input[type=checkbox][disabled]+span{border:2px solid #9E9E9E}.gj-editor-md,.gj-editor-md [role=body]{border:1px solid rgba(158,158,158,.2)}.gj-checkbox-md input[type=checkbox][disabled]+span:after{background-color:#9E9E9E}.gj-checkbox-md input[type=checkbox][disabled]:indeterminate+span:after{color:#FFF}.gj-checkbox-material-icons input[type=checkbox]:checked+span:after{content:"\e91f";font-size:14px;font-weight:700;white-space:pre}.gj-checkbox-material-icons input[type=checkbox]:indeterminate+span:after{content:"\e921";font-size:14px;font-weight:700;white-space:pre}.gj-checkbox-glyphicons input[type=checkbox]:checked+span:after{display:inline-block;font-family:'Glyphicons Halflings';content:"\e013 "}.gj-checkbox-glyphicons input[type=checkbox]:indeterminate+span:after{display:inline-block;font-family:'Glyphicons Halflings';content:"\2212 ";padding-right:1px}.gj-checkbox-fontawesome .fa{font-size:14px}.gj-checkbox-bootstrap.gj-checkbox-fontawesome .fa{line-height:18px}.gj-checkbox-fontawesome input[type=checkbox]:checked+span:before{content:"\f00c "}.gj-checkbox-fontawesome input[type=checkbox]:indeterminate+span:before{content:"\f068 "}.gj-editor [role=body]{overflow:auto;outline:transparent solid 0;box-sizing:border-box}.gj-editor-md{padding:7px;font-family:Roboto,Helvetica,Arial,sans-serif;font-size:14px;font-weight:500;letter-spacing:0}.gj-editor-md [role=toolbar]{margin-bottom:7px}.gj-editor-md [role=toolbar] .gj-button-md{min-width:54px;margin-right:5px}.gj-editor-md [role=toolbar] .gj-button-md .gj-icon{width:24px;height:24px}.gj-editor-bootstrap,.gj-editor-bootstrap [role=body]{border:1px solid #eceeef}.gj-editor-md p{margin:0;padding:0}.gj-editor-md blockquote{font-size:14px}.gj-editor-bootstrap{padding:7px}.gj-editor-bootstrap [role=toolbar]{margin-bottom:7px}.gj-editor-bootstrap [role=toolbar] .btn-group{margin-right:10px}.gj-editor-bootstrap [role=toolbar] button{height:36px}.gj-editor-bootstrap p{margin:0;padding:0}.gj-editor-bootstrap blockquote{font-size:14px}.gj-datepicker-md,.gj-dropdown-md [role=presenter]{font-family:Roboto,Helvetica,Arial,sans-serif;font-size:16px;font-weight:400;letter-spacing:.04em}.gj-dropdown{position:relative;border-collapse:separate}.gj-dropdown [role=presenter]{display:table;cursor:pointer;outline:0;position:relative}.gj-dropdown [role=presenter] [role=display]{display:table-cell;text-align:left;width:100%}.gj-dropdown [role=presenter] [role=expander]{display:table-cell;vertical-align:middle;text-align:center;width:24px;height:24px}.gj-dropdown-md [role=presenter]{line-height:1;color:rgba(0,0,0,.87);padding:0;border:0;border-bottom:1px solid rgba(0,0,0,.42);background:0 0}.gj-dropdown-md [role=presenter]:active,.gj-dropdown-md [role=presenter]:focus{border-bottom:2px solid rgba(0,0,0,.42)}.gj-dropdown-md [role=presenter] [role=display]{padding:4px 0;line-height:18px}.gj-dropdown-md [role=presenter] [role=display] .placeholder{color:#8e8e8e}.gj-dropdown-list-md{position:absolute;top:0;left:0;background-color:#f5f5f5;color:#000;margin:0;z-index:1203}.gj-dropdown-list-md li.active,.gj-dropdown-list-md li:hover{background-color:#eee}.gj-dropdown-bootstrap [role=presenter] [role=display]{padding-right:5px}.gj-dropdown-bootstrap [role=presenter] [role=expander]{padding-left:5px}.gj-dropdown-bootstrap [role=presenter] [role=expander].gj-dropdown-expander-mi{width:24px}.gj-dropdown-bootstrap-3 [role=presenter] [role=display]{line-height:20px}.gj-dropdown-bootstrap-3 [role=presenter] [role=display] .placeholder{color:#9999b3}.gj-dropdown-bootstrap-3 [role=presenter] [role=expander]{width:20px;height:20px}.gj-dropdown-bootstrap-3 [role=presenter] [role=expander].gj-dropdown-expander-mi .gj-icon,.gj-dropdown-bootstrap-3 [role=presenter] [role=expander].gj-dropdown-expander-mi .material-icons{top:5px;right:10px;position:absolute}.gj-dropdown-bootstrap-4 [role=presenter]{border:1px solid #ced4da}.gj-dropdown-bootstrap-4 [role=presenter] [role=display]{line-height:24px}.gj-dropdown-bootstrap-4 [role=presenter] [role=expander].gj-dropdown-expander-mi .gj-icon,.gj-dropdown-bootstrap-4 [role=presenter] [role=expander].gj-dropdown-expander-mi .material-icons{top:7px;right:10px;position:absolute}.gj-dropdown-list-bootstrap{position:absolute;top:32px;left:0;margin:0;z-index:1203}.gj-datepicker [role=input]::-ms-clear{display:none}.gj-datepicker [role=right-icon]{cursor:pointer}.gj-picker div[role=navigator]{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.gj-picker div[role=navigator] div{cursor:pointer;position:relative;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.gj-datepicker-md{line-height:1;color:rgba(0,0,0,.87);position:relative}.gj-datepicker-md [role=right-icon]{position:absolute;right:0;top:0;font-size:24px}.gj-datepicker-md.small .gj-textbox-md{font-size:14px}.gj-datepicker-md.small .gj-icon{font-size:22px}.gj-datepicker-md.large .gj-textbox-md{font-size:18px}.gj-datepicker-md.large .gj-icon{font-size:28px}.gj-picker-md.datepicker [role=header]{padding:20px;display:block}.gj-picker-md.datepicker [role=header] [role=year]{font-size:17px;padding-bottom:5px;cursor:pointer}.gj-picker-md.datepicker [role=header] [role=date]{font-size:36px;cursor:pointer}.gj-picker-md div[role=navigator]{height:42px;line-height:42px}.gj-picker div[role=navigator] div[role=period]{width:100%;text-align:center;font-weight:700;font-size:15px}.gj-picker-md div[role=navigator] div:first-child,.gj-picker-md div[role=navigator] div:last-child{max-width:42px}.gj-picker-md div[role=navigator] div i.gj-icon,.gj-picker-md div[role=navigator] div i.material-icons{position:absolute;top:8px}.gj-picker-md div[role=navigator] div:first-child i.gj-icon,.gj-picker-md div[role=navigator] div:first-child i.material-icons{left:10px}.gj-picker-md div[role=navigator] div:last-child i.gj-icon,.gj-picker-md div[role=navigator] div:last-child i.material-icons{right:11px}.gj-picker-md table thead{color:#9E9E9E}.gj-picker-md table tr td div,.gj-picker-md table tr th div{display:block;width:40px;height:40px;line-height:40px;font-size:13px;text-align:center;vertical-align:middle}[type=year].gj-picker-md table tr td div,[type=decade].gj-picker-md table tr td div,[type=century].gj-picker-md table tr td div{width:73px;height:73px;line-height:73px;cursor:pointer}.gj-picker-md table tr td.gj-cursor-pointer div:hover{background:#EEE;border-radius:50%;color:rgba(0,0,0,.87)}.gj-picker-md table tr td.disabled div,.gj-picker-md table tr td.other-month div{color:#BDBDBD}.gj-picker-md table tr td.focused div{background:#E0E0E0;border-radius:50%}.gj-picker-md table tr td.today div{color:#1976D2}.gj-picker-md table tr td.selected.gj-cursor-pointer div{color:#FFF;background:#1976D2;border-radius:50%}.gj-picker-md table tr td.calendar-week div{font-weight:700}.gj-picker-bootstrap{border:1px solid rgba(0,0,0,.15);border-radius:4px;padding:4px}.gj-modal .gj-picker-bootstrap{padding:0}.gj-picker-bootstrap.datepicker [role=header]{padding:10px 20px;display:block}.gj-picker-bootstrap.datepicker [role=header] [role=year]{font-size:15px;cursor:pointer}.gj-picker-bootstrap [role=header] [role=date]{font-size:24px;cursor:pointer}.gj-modal .gj-picker-bootstrap.datepicker [role=body]{padding:15px}.gj-picker-bootstrap div[role=navigator]{height:30px;line-height:30px;text-align:center}.gj-picker-bootstrap div[role=navigator] div:first-child,.gj-picker-bootstrap div[role=navigator] div:last-child{max-width:30px}.gj-picker-bootstrap table tr td div,.gj-picker-bootstrap table tr th div{display:block;width:30px;height:30px;line-height:30px;text-align:center;vertical-align:middle}[type=year].gj-picker-bootstrap table tr td div,[type=decade].gj-picker-bootstrap table tr td div,[type=century].gj-picker-bootstrap table tr td div{width:53px;height:53px;line-height:53px;cursor:pointer}.gj-picker-bootstrap table tr th div i,.gj-picker-bootstrap table tr th div span{line-height:30px}.gj-picker-bootstrap div[role=navigator] .gj-icon,.gj-picker-bootstrap div[role=navigator] .material-icons{margin:3px}.gj-picker-bootstrap table tr td.focused div,.gj-picker-bootstrap table tr td.gj-cursor-pointer div:hover{background:#EEE;border-radius:4px;color:#212529}.gj-picker-bootstrap table tr td.today div{color:#204d74;font-weight:700}.gj-picker-bootstrap table tr td.selected.gj-cursor-pointer div{color:#fff;background-color:#204d74;border-color:#122b40;border-radius:4px}.gj-picker-bootstrap table tr td.disabled div,.gj-picker-bootstrap table tr td.other-month div{color:#777}.gj-datepicker-bootstrap span[role=right-icon].input-group-addon{border-left:0;position:relative;border-radius:0 4px 4px 0}.gj-datepicker-bootstrap span[role=right-icon].input-group-addon .gj-icon,.gj-datepicker-bootstrap span[role=right-icon].input-group-addon .material-icons{position:absolute;top:7px;left:7px}.gj-datepicker-bootstrap [role=right-icon] button{width:38px;position:relative;border:1px solid #ced4da}.gj-datepicker-bootstrap [role=right-icon] button:hover{color:#6c757d;background-color:transparent}.gj-datepicker-bootstrap.input-group-sm [role=right-icon] button{width:30px}.gj-datepicker-bootstrap.input-group-lg [role=right-icon] button{width:48px}.gj-datepicker-bootstrap [role=right-icon] button .gj-icon,.gj-datepicker-bootstrap [role=right-icon] button .material-icons{position:absolute;font-size:21px;top:9px;left:9px}.gj-datepicker-bootstrap.input-group-sm [role=right-icon] button .gj-icon,.gj-datepicker-bootstrap.input-group-sm [role=right-icon] button .material-icons{top:6px;left:6px;font-size:19px}.gj-datepicker-bootstrap.input-group-lg [role=right-icon] button .gj-icon,.gj-datepicker-bootstrap.input-group-lg [role=right-icon] button .material-icons{font-size:27px;top:10px;left:10px}.gj-timepicker [role=input]::-ms-clear{display:none}.gj-timepicker [role=right-icon]{cursor:pointer}.gj-picker.timepicker [role=header]{font-size:58px;padding:20px 0;line-height:58px;display:flex;align-items:baseline;user-select:none;justify-content:center}.gj-picker.timepicker [role=header] div{cursor:pointer;width:66px;text-align:right}.gj-picker [role=header] [role=mode]{position:relative;width:0}.gj-picker [role=header] [role=mode] span{position:absolute;left:7px;line-height:18px;font-size:18px}.gj-picker [role=header] [role=mode] span[role=am]{top:7px}.gj-picker [role=header] [role=mode] span[role=pm]{bottom:7px}.gj-picker [role=body] [role=dial]{width:256px;color:rgba(0,0,0,.87);height:256px;position:relative;background:#eee;border-radius:50%;margin:10px}.gj-picker-md .arrow-begin,.gj-picker-md [role=body] [role=arrow]{background-color:#2196f3}.gj-picker [role=body] [role=hour]{top:calc(50% - 16px);left:calc(50% - 16px);width:32px;height:32px;cursor:pointer;position:absolute;font-size:14px;text-align:center;line-height:32px;user-select:none;pointer-events:none}.gj-colorpicker-md,.gj-timepicker-md{font-family:Roboto,Helvetica,Arial,sans-serif;font-weight:400;letter-spacing:.04em;line-height:1}.gj-picker [role=body] [role=hour].selected{color:rgba(255,255,255,1)}.gj-picker [role=body] [role=arrow]{top:calc(50% - 1px);left:50%;height:2px;position:absolute;pointer-events:none;transform-origin:left center;transition:all 250ms cubic-bezier(.4,0,.2,1);width:calc(50% - 52px)}.gj-picker .arrow-begin{top:-3px;left:-4px;width:8px;height:8px;position:absolute;border-radius:50%}.gj-picker .arrow-end{top:-15px;right:-16px;width:0;height:0;position:absolute;box-sizing:content-box;border-width:16px;border-radius:50%}.gj-timepicker-md{font-size:16px;color:rgba(0,0,0,.87);position:relative}.gj-timepicker-md.small .gj-textbox-md{font-size:14px}.gj-timepicker-md.small .gj-icon{font-size:22px}.gj-timepicker-md.large .gj-textbox-md{font-size:18px}.gj-timepicker-md.large .gj-icon{font-size:28px}.gj-timepicker-md [role=right-icon]{cursor:pointer;position:absolute;right:0;top:0;font-size:24px}.gj-picker-md .arrow-end{border:16px solid #2196f3}.gj-picker-bootstrap .arrow-begin,.gj-picker-bootstrap [role=body] [role=arrow]{background-color:#888}.gj-picker-bootstrap .arrow-end{border:16px solid #888}.gj-timepicker-bootstrap .input-group-addon{border-left:0;position:relative;width:38px;border-radius:0 4px 4px 0}.gj-timepicker-bootstrap.input-group-sm .input-group-addon{width:30px}.gj-timepicker-bootstrap.input-group-lg .input-group-addon{width:46px}.gj-timepicker-bootstrap .input-group-addon .gj-icon,.gj-timepicker-bootstrap .input-group-addon .material-icons{position:absolute;font-size:21px;top:6px;left:8px}.gj-timepicker-bootstrap.input-group-sm .input-group-addon .gj-icon,.gj-timepicker-bootstrap.input-group-sm .input-group-addon .material-icons{font-size:19px;top:5px;left:5px}.gj-timepicker-bootstrap.input-group-lg .input-group-addon .gj-icon,.gj-timepicker-bootstrap.input-group-lg .input-group-addon .material-icons{font-size:27px;top:10px;left:10px}.gj-timepicker-bootstrap [role=right-icon] button{width:38px;position:relative}.gj-timepicker-bootstrap.input-group-sm [role=right-icon] button{width:30px}.gj-timepicker-bootstrap.input-group-lg [role=right-icon] button{width:48px}.gj-timepicker-bootstrap [role=right-icon] button .gj-icon,.gj-timepicker-bootstrap [role=right-icon] button .material-icons{position:absolute;font-size:21px;top:7px;left:9px}.gj-timepicker-bootstrap.input-group-sm [role=right-icon] button .gj-icon,.gj-timepicker-bootstrap.input-group-sm [role=right-icon] button .material-icons{top:4px;left:6px;font-size:19px}.gj-timepicker-bootstrap.input-group-lg [role=right-icon] button .gj-icon,.gj-timepicker-bootstrap.input-group-lg [role=right-icon] button .material-icons{font-size:27px;top:8px;left:10px}.gj-picker.datetimepicker [role=header] [role=date]{padding-bottom:5px;text-align:center;cursor:pointer}.gj-picker [role=switch]{align-items:baseline;user-select:none;position:relative}.gj-picker [role=switch] [role=calendarMode]{position:absolute;bottom:2px;left:0;cursor:pointer}.gj-picker [role=switch] [role=time]{width:100%;text-align:center}.gj-picker [role=switch] [role=time] div{display:inline;cursor:pointer}.gj-picker [role=switch] [role=clockMode]{position:absolute;right:0;bottom:3px;cursor:pointer}.gj-picker-md.datetimepicker [role=header]{font-size:36px;padding:10px 20px;display:block}.gj-picker-md [role=switch]{color:rgba(255,255,255,.54);background:#2196f3;font-size:32px}.gj-picker-bootstrap.datetimepicker [role=header]{font-size:36px;padding:10px 20px;display:block}.gj-picker-bootstrap.datetimepicker [role=header] [role=time]{font-size:22px}.gj-slider{position:relative;padding:8px 6px}.gj-slider [role=track]{width:100%}.gj-slider [role=progress]{position:absolute;z-index:1203}.gj-slider [role=handle]{position:absolute}.gj-slider-md [role=track]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:#fff;text-align:center;background-color:#e9ecef;height:2px;background-color:rgba(0,0,0,.26)}.gj-slider-md [role=progress]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:#fff;text-align:center;height:2px;background-color:#536DFE;top:8px;left:6px}.gj-slider-md [role=handle]{top:3px;left:0;width:12px;height:12px;background-color:#536DFE;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);filter:none;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05);border:0 solid transparent;border-radius:50%;cursor:pointer;z-index:1204}.gj-slider-bootstrap [role=track]{border-radius:4px;height:10px}.gj-slider-bootstrap [role=progress]{height:10px;border-radius:4px;top:8px;left:6px;transition:none}.gj-slider-bootstrap [role=handle]{top:2px;left:0;width:20px;height:20px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);filter:none;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05);border:0 solid transparent;border-radius:50%;cursor:pointer;z-index:1204}.gj-slider-bootstrap-3 [role=handle]{background-color:#337ab7;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);background-repeat:repeat-x}.gj-slider-bootstrap-4 [role=handle]{background-color:#007bff;background-image:-webkit-linear-gradient(top,#007bff 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#007bff 0,#2e6da4 100%);background-image:linear-gradient(to bottom,#007bff 0,#2e6da4 100%);background-repeat:repeat-x}.gj-colorpicker [role=right-icon]{cursor:pointer}.gj-colorpicker-md{font-size:16px;color:rgba(0,0,0,.87);position:relative}.gj-colorpicker-md [role=right-icon]{position:absolute;right:0;top:0;font-size:24px} \ No newline at end of file diff --git a/html/template/admin/assets/gijgo/gijgo.min.js b/html/template/admin/assets/gijgo/gijgo.min.js new file mode 100644 index 000000000..45cc92e7d --- /dev/null +++ b/html/template/admin/assets/gijgo/gijgo.min.js @@ -0,0 +1 @@ +var gj={};gj.widget=function(){var a=this;a.xhr=null,a.generateGUID=function(){function a(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}return a()+a()+"-"+a()+"-"+a()+"-"+a()+"-"+a()+a()+a()},a.mouseX=function(a){if(a){if(a.pageX)return a.pageX;if(a.clientX)return a.clientX+(document.documentElement.scrollLeft?document.documentElement.scrollLeft:document.body.scrollLeft);if(a.touches&&a.touches.length)return a.touches[0].pageX;if(a.changedTouches&&a.changedTouches.length)return a.changedTouches[0].pageX;if(a.originalEvent&&a.originalEvent.touches&&a.originalEvent.touches.length)return a.originalEvent.touches[0].pageX;if(a.originalEvent&&a.originalEvent.changedTouches&&a.originalEvent.changedTouches.length)return a.originalEvent.touches[0].pageX}return null},a.mouseY=function(a){if(a){if(a.pageY)return a.pageY;if(a.clientY)return a.clientY+(document.documentElement.scrollTop?document.documentElement.scrollTop:document.body.scrollTop);if(a.touches&&a.touches.length)return a.touches[0].pageY;if(a.changedTouches&&a.changedTouches.length)return a.changedTouches[0].pageY;if(a.originalEvent&&a.originalEvent.touches&&a.originalEvent.touches.length)return a.originalEvent.touches[0].pageY;if(a.originalEvent&&a.originalEvent.changedTouches&&a.originalEvent.changedTouches.length)return a.originalEvent.touches[0].pageY}return null}},gj.widget.prototype.init=function(a,b){var c,d,e;this.attr("data-type",b),d=$.extend(!0,{},this.getHTMLConfig()||{}),$.extend(!0,d,a||{}),e=this.getConfig(d,b),this.attr("data-guid",e.guid),this.data(e);for(c in e)gj[b].events.hasOwnProperty(c)&&(this.on(c,e[c]),delete e[c]);for(plugin in gj[b].plugins)gj[b].plugins.hasOwnProperty(plugin)&&gj[b].plugins[plugin].configure(this,e,d);return this},gj.widget.prototype.getConfig=function(a,b){var c,d,e,f;c=$.extend(!0,{},gj[b].config.base),d=a.hasOwnProperty("uiLibrary")?a.uiLibrary:c.uiLibrary,gj[b].config[d]&&$.extend(!0,c,gj[b].config[d]),e=a.hasOwnProperty("iconsLibrary")?a.iconsLibrary:c.iconsLibrary,gj[b].config[e]&&$.extend(!0,c,gj[b].config[e]);for(f in gj[b].plugins)gj[b].plugins.hasOwnProperty(f)&&($.extend(!0,c,gj[b].plugins[f].config.base),gj[b].plugins[f].config[d]&&$.extend(!0,c,gj[b].plugins[f].config[d]),gj[b].plugins[f].config[e]&&$.extend(!0,c,gj[b].plugins[f].config[e]));return $.extend(!0,c,a),c.guid||(c.guid=this.generateGUID()),c},gj.widget.prototype.getHTMLConfig=function(){var a=this.data(),b=this[0].attributes;return b.width&&(a.width=b.width.value),b.height&&(a.height=b.height.value),b.value&&(a.value=b.value.value),b.align&&(a.align=b.align.value),a&&a.source&&(a.dataSource=a.source,delete a.source),a},gj.widget.prototype.createDoneHandler=function(){var a=this;return function(b){"string"==typeof b&&JSON&&(b=JSON.parse(b)),gj[a.data("type")].methods.render(a,b)}},gj.widget.prototype.createErrorHandler=function(){return function(a){a&&a.statusText&&"abort"!==a.statusText&&alert(a.statusText)}},gj.widget.prototype.reload=function(a){var b,c,d=this.data(),e=this.data("type");return void 0===d.dataSource&&gj[e].methods.useHtmlDataSource(this,d),$.extend(d.params,a),$.isArray(d.dataSource)?(c=gj[e].methods.filter(this),gj[e].methods.render(this,c)):"string"==typeof d.dataSource?(b={url:d.dataSource,data:d.params},this.xhr&&this.xhr.abort(),this.xhr=$.ajax(b).done(this.createDoneHandler()).fail(this.createErrorHandler())):"object"==typeof d.dataSource&&(d.dataSource.data||(d.dataSource.data={}),$.extend(d.dataSource.data,d.params),b=$.extend(!0,{},d.dataSource),"json"===b.dataType&&"object"==typeof b.data&&(b.data=JSON.stringify(b.data)),b.success||(b.success=this.createDoneHandler()),b.error||(b.error=this.createErrorHandler()),this.xhr&&this.xhr.abort(),this.xhr=$.ajax(b)),this},gj.documentManager={events:{},subscribeForEvent:function(a,b,c){if(gj.documentManager.events[a]&&0!==gj.documentManager.events[a].length){if(gj.documentManager.events[a][b])throw"Event "+a+' for widget with guid="'+b+'" is already attached.';gj.documentManager.events[a].push({widgetId:b,callback:c})}else gj.documentManager.events[a]=[{widgetId:b,callback:c}],$(document).on(a,gj.documentManager.executeCallbacks)},executeCallbacks:function(a){var b=gj.documentManager.events[a.type];if(b)for(var c=0;c-1)g=new Date(parseInt(a.substr(6),10));else if(a){for(e=a.split(/[\s,-\.\/\/\:]+/),f=b.split(/[\s,-\.\/\/\:]+/),d=0;d-1?j=parseInt(e[d],10):["m","mm"].indexOf(f[d])>-1?i=parseInt(e[d],10)-1:"mmm"===f[d]?i=gj.core.messages[c||"en-us"].monthShortNames.indexOf(e[d]):"mmmm"===f[d]?i=gj.core.messages[c||"en-us"].monthNames.indexOf(e[d]):["yy","yyyy"].indexOf(f[d])>-1?(h=parseInt(e[d],10),"yy"===f[d]&&(h+=2e3)):["h","hh","H","HH"].indexOf(f[d])>-1?k=parseInt(e[d],10):["M","MM"].indexOf(f[d])>-1&&(l=parseInt(e[d],10));g=new Date(h,i,j,k,l)}}else"number"==typeof a?g=new Date(a):a instanceof Date&&(g=a);return g},formatDate:function(a,b,c){var d,e,f="",g=b.split(/[\s,-\.\/\/\:]+/),h=b.split(/s+|M+|H+|h+|t+|T+|d+|m+|y+/);for(h=h.splice(1,h.length-2),i=0;i12?a.getHours()%12:a.getHours(),f+=e+d;break;case"hh":e=a.getHours()>12?a.getHours()%12:a.getHours(),f+=gj.core.pad(e)+d;break;case"tt":f+=(a.getHours()>=12?"pm":"am")+d;break;case"TT":f+=(a.getHours()>=12?"PM":"AM")+d;break;case"d":f+=a.getDate()+d;break;case"dd":f+=gj.core.pad(a.getDate())+d;break;case"ddd":f+=gj.core.messages[c||"en-us"].weekDaysShort[a.getDay()]+d;break;case"dddd":f+=gj.core.messages[c||"en-us"].weekDays[a.getDay()]+d;break;case"m":f+=a.getMonth()+1+d;break;case"mm":f+=gj.core.pad(a.getMonth()+1)+d;break;case"mmm":f+=gj.core.messages[c||"en-us"].monthShortNames[a.getMonth()]+d;break;case"mmmm":f+=gj.core.messages[c||"en-us"].monthNames[a.getMonth()]+d;break;case"yy":f+=a.getFullYear().toString().substr(2)+d;break;case"yyyy":f+=a.getFullYear()+d}return f},pad:function(a,b){for(a=String(a),b=b||2;a.length0?b:0),a.css("top",c>0?c:0)},isIE:function(){return!!navigator.userAgent.match(/Trident/g)||!!navigator.userAgent.match(/MSIE/g)},setChildPosition:function(a,b){var c=a.getBoundingClientRect(),d=gj.core.height(a,!0),e=gj.core.height(b,!0),f=gj.core.width(a,!0),g=gj.core.width(b,!0),h=window.scrollY||window.pageYOffset||0,i=window.scrollX||window.pageXOffset||0;c.top+d+e>window.innerHeight&&c.top>e?b.style.top=Math.round(c.top+h-e-3)+"px":b.style.top=Math.round(c.top+h+d+3)+"px",c.left+g>document.body.clientWidth?b.style.left=Math.round(c.left+i+f-g)+"px":b.style.left=Math.round(c.left+i)+"px"},height:function(a,b){var c,d=window.getComputedStyle(a);return"border-box"===d.boxSizing?c=parseInt(d.height,10):(c=parseInt(d.height,10),c+=parseInt(d.paddingTop||0,10)+parseInt(d.paddingBottom||0,10),c+=parseInt(d.borderTopWidth||0,10)+parseInt(d.borderBottomWidth||0,10)),b&&(c+=parseInt(d.marginTop||0,10)+parseInt(d.marginBottom||0,10)),c},width:function(a,b){var c,d=window.getComputedStyle(a);return"border-box"===d.boxSizing?c=parseInt(d.width,10):(c=parseInt(d.width,10),c+=parseInt(d.paddingLeft||0,10)+parseInt(d.paddingRight||0,10),c+=parseInt(d.borderLeftWidth||0,10)+parseInt(d.borderRightWidth||0,10)),b&&(c+=parseInt(d.marginLeft||0,10)+parseInt(d.marginRight||0,10)),c},addClasses:function(a,b){var c,d;if(b)for(d=b.split(" "),c=0;ca.clientHeight?a:gj.core.getScrollParent(a.parentNode)}},gj.picker={messages:{"en-us":{}}},gj.picker.methods={initialize:function(a,b,c){var d,e=c.createPicker(a,b),f=a.parent('div[role="wrapper"]');d="bootstrap"===b.uiLibrary?$(''+b.icons.rightIcon+""):"bootstrap4"===b.uiLibrary?$('"):$(b.icons.rightIcon),d.attr("role","right-icon"),0===f.length?(f=$('
    ').addClass(b.style.wrapper),a.wrap(f)):f.addClass(b.style.wrapper),f=a.parent('div[role="wrapper"]'),b.width&&f.css("width",b.width),a.val(b.value).addClass(b.style.input).attr("role","input"),b.fontSize&&a.css("font-size",b.fontSize),"bootstrap"===b.uiLibrary||"bootstrap4"===b.uiLibrary?"small"===b.size?(f.addClass("input-group-sm"),a.addClass("form-control-sm")):"large"===b.size&&(f.addClass("input-group-lg"),a.addClass("form-control-lg")):"small"===b.size?f.addClass("small"):"large"===b.size&&f.addClass("large"),d.on("click",function(b){e.is(":visible")?a.close():a.open()}),f.append(d),!0!==b.footer&&(a.on("blur",function(){a.timeout=setTimeout(function(){a.close()},500)}),e.mousedown(function(){return clearTimeout(a.timeout),a.focus(),!1}),e.on("click",function(){clearTimeout(a.timeout),a.focus()}))}},gj.picker.widget=function(a,b){var c=this,d=gj.picker.methods;return c.destroy=function(){return d.destroy(this)},a},gj.picker.widget.prototype=new gj.widget,gj.picker.widget.constructor=gj.picker.widget,gj.picker.widget.prototype.init=function(a,b,c){return gj.widget.prototype.init.call(this,a,b),this.attr("data-"+b,"true"),gj.picker.methods.initialize(this,this.data(),gj[b].methods),this},gj.picker.widget.prototype.open=function(a){var b=this.data(),c=$("body").find('[role="picker"][guid="'+this.attr("data-guid")+'"]');return c.show(),c.closest('div[role="modal"]').show(),b.modal?gj.core.center(c):(gj.core.setChildPosition(this[0],c[0]),this.focus()),clearTimeout(this.timeout),gj[a].events.open(this),this},gj.picker.widget.prototype.close=function(a){var b=$("body").find('[role="picker"][guid="'+this.attr("data-guid")+'"]');return b.hide(),b.closest('div[role="modal"]').hide(),gj[a].events.close(this),this},gj.picker.widget.prototype.destroy=function(a){var b=this.data(),c=this.parent(),d=$("body").find('[role="picker"][guid="'+this.attr("data-guid")+'"]');return b&&(this.off(),d.parent('[role="modal"]').length>0&&d.unwrap(),d.remove(),this.removeData(),this.removeAttr("data-type").removeAttr("data-guid").removeAttr("data-"+a),this.removeClass(),c.children('[role="right-icon"]').remove(),this.unwrap()),this},gj.dialog={plugins:{},messages:{}},gj.dialog.config={base:{autoOpen:!0,closeButtonInHeader:!0,closeOnEscape:!0,draggable:!0,height:"auto",locale:"en-us",maxHeight:void 0,maxWidth:void 0,minHeight:void 0,minWidth:void 0,modal:!1,resizable:!1,scrollable:!1,title:void 0,uiLibrary:void 0,width:300,style:{modal:"gj-modal",content:"gj-dialog-md",header:"gj-dialog-md-header gj-unselectable",headerTitle:"gj-dialog-md-title",headerCloseButton:"gj-dialog-md-close",body:"gj-dialog-md-body",footer:"gj-dialog-footer gj-dialog-md-footer"}},bootstrap:{style:{modal:"modal",content:"modal-content gj-dialog-bootstrap",header:"modal-header",headerTitle:"modal-title",headerCloseButton:"close",body:"modal-body",footer:"gj-dialog-footer modal-footer"}},bootstrap4:{style:{modal:"modal",content:"modal-content gj-dialog-bootstrap4",header:"modal-header",headerTitle:"modal-title",headerCloseButton:"close",body:"modal-body",footer:"gj-dialog-footer modal-footer"}}},gj.dialog.events={initialized:function(a){a.trigger("initialized")},opening:function(a){a.trigger("opening")},opened:function(a){a.trigger("opened")},closing:function(a){a.trigger("closing")},closed:function(a){a.trigger("closed")},drag:function(a){a.trigger("drag")},dragStart:function(a){a.trigger("dragStart")},dragStop:function(a){a.trigger("dragStop")},resize:function(a){a.trigger("resize")},resizeStart:function(a){a.trigger("resizeStart")},resizeStop:function(a){a.trigger("resizeStop")}},gj.dialog.methods={init:function(a){return gj.widget.prototype.init.call(this,a,"dialog"),gj.dialog.methods.localization(this),gj.dialog.methods.initialize(this),gj.dialog.events.initialized(this),this},localization:function(a){var b=a.data();void 0===b.title&&(b.title=gj.dialog.messages[b.locale].DefaultTitle)},getHTMLConfig:function(){var a=gj.widget.prototype.getHTMLConfig.call(this),b=this[0].attributes;return b.title&&(a.title=b.title.value),a},initialize:function(a){var b,c,d,e=a.data();a.addClass(e.style.content),gj.dialog.methods.setSize(a),e.closeOnEscape&&$(document).keyup(function(b){27===b.keyCode&&a.close()}),c=a.children('div[data-role="body"]'),0===c.length?(c=$('
    ').addClass(e.style.body),a.wrapInner(c)):c.addClass(e.style.body),b=gj.dialog.methods.renderHeader(a),d=a.children('div[data-role="footer"]').addClass(e.style.footer),a.find('[data-role="close"]').on("click",function(){a.close()}),gj.draggable&&(e.draggable&&gj.dialog.methods.draggable(a,b),e.resizable&&gj.dialog.methods.resizable(a)),e.scrollable&&e.height&&(a.addClass("gj-dialog-scrollable"),a.on("opened",function(){a.children('div[data-role="body"]').css("height",e.height-b.outerHeight()-(d.length?d.outerHeight():0))})),gj.core.center(a),e.modal&&a.wrapAll('
    '),e.autoOpen&&a.open()},setSize:function(a){var b=a.data();b.width&&a.css("width",b.width),b.height&&a.css("height",b.height)},renderHeader:function(a){var b,c,d,e=a.data();return b=a.children('div[data-role="header"]'),0===b.length&&(b=$('
    '),a.prepend(b)),b.addClass(e.style.header),c=b.find('[data-role="title"]'),0===c.length&&(c=$('

    '+e.title+"

    "),b.append(c)),c.addClass(e.style.headerTitle),d=b.find('[data-role="close"]'),0===d.length&&e.closeButtonInHeader?(d=$(''),d.addClass(e.style.headerCloseButton),b.append(d)):d.length>0&&!1===e.closeButtonInHeader?d.hide():d.addClass(e.style.headerCloseButton),b},draggable:function(a,b){a.appendTo("body"),b.addClass("gj-draggable"),a.draggable({handle:b,start:function(){a.addClass("gj-unselectable"),gj.dialog.events.dragStart(a)},stop:function(){a.removeClass("gj-unselectable"),gj.dialog.events.dragStop(a)}})},resizable:function(a){var b={drag:gj.dialog.methods.resize,start:function(){a.addClass("gj-unselectable"),gj.dialog.events.resizeStart(a)},stop:function(){this.removeAttribute("style"),a.removeClass("gj-unselectable"),gj.dialog.events.resizeStop(a)}};a.append($('
    ').draggable($.extend(!0,{horizontal:!1},b))),a.append($('
    ').draggable($.extend(!0,{vertical:!1},b))),a.append($('
    ').draggable($.extend(!0,{horizontal:!1},b))),a.append($('
    ').draggable($.extend(!0,{vertical:!1},b))),a.append($('
    ').draggable($.extend(!0,{},b))),a.append($('
    ').draggable($.extend(!0,{},b))),a.append($('
    ').draggable($.extend(!0,{},b))),a.append($('
    ').draggable($.extend(!0,{},b)))},resize:function(a,b){var c,d,e,f,g,h,i,j,k=!1;return c=$(this),d=c.parent(),e=gj.core.position(this),offset={top:b.top-e.top,left:b.left-e.left},f=d.data(),c.hasClass("gj-resizable-n")?(g=d.height()-offset.top,i=d.offset().top+offset.top):c.hasClass("gj-resizable-e")?h=d.width()+offset.left:c.hasClass("gj-resizable-s")?g=d.height()+offset.top:c.hasClass("gj-resizable-w")?(h=d.width()-offset.left,j=d.offset().left+offset.left):c.hasClass("gj-resizable-ne")?(g=d.height()-offset.top,i=d.offset().top+offset.top,h=d.width()+offset.left):c.hasClass("gj-resizable-nw")?(g=d.height()-offset.top,i=d.offset().top+offset.top,h=d.width()-offset.left,j=d.offset().left+offset.left):c.hasClass("gj-resizable-se")?(g=d.height()+offset.top,h=d.width()+offset.left):c.hasClass("gj-resizable-sw")&&(g=d.height()+offset.top,h=d.width()-offset.left,j=d.offset().left+offset.left),g&&(!f.minHeight||g>=f.minHeight)&&(!f.maxHeight||g<=f.maxHeight)&&(d.height(g),i&&d.css("top",i),k=!0),h&&(!f.minWidth||h>=f.minWidth)&&(!f.maxWidth||h<=f.maxWidth)&&(d.width(h),j&&d.css("left",j),k=!0),k&&gj.dialog.events.resize(d),k},open:function(a,b){var c;return gj.dialog.events.opening(a),a.css("display","block"),a.closest('div[data-role="modal"]').css("display","block"),c=a.children('div[data-role="footer"]'),c.length&&c.outerHeight()&&a.children('div[data-role="body"]').css("margin-bottom",c.outerHeight()),void 0!==b&&a.find('[data-role="title"]').html(b),gj.dialog.events.opened(a),a},close:function(a){return a.is(":visible")&&(gj.dialog.events.closing(a),a.css("display","none"),a.closest('div[data-role="modal"]').css("display","none"),gj.dialog.events.closed(a)),a},isOpen:function(a){return a.is(":visible")},content:function(a,b){var c=a.children('div[data-role="body"]');return void 0===b?c.html():c.html(b)},destroy:function(a,b){var c=a.data();return c&&(!1===b?a.remove():(a.close(),a.off(),a.removeData(),a.removeAttr("data-type"),a.removeClass(c.style.content),a.find('[data-role="header"]').removeClass(c.style.header),a.find('[data-role="title"]').removeClass(c.style.headerTitle),a.find('[data-role="close"]').remove(),a.find('[data-role="body"]').removeClass(c.style.body),a.find('[data-role="footer"]').removeClass(c.style.footer))),a}},gj.dialog.widget=function(a,b){var c=this,d=gj.dialog.methods;return c.open=function(a){return d.open(this,a)},c.close=function(){return d.close(this)},c.isOpen=function(){return d.isOpen(this)},c.content=function(a){return d.content(this,a)},c.destroy=function(a){return d.destroy(this,a)},$.extend(a,c),"dialog"!==a.attr("data-type")&&d.init.call(a,b),a},gj.dialog.widget.prototype=new gj.widget,gj.dialog.widget.constructor=gj.dialog.widget,gj.dialog.widget.prototype.getHTMLConfig=gj.dialog.methods.getHTMLConfig,function(a){a.fn.dialog=function(a){var b;if(this&&this.length){if("object"!=typeof a&&a){if(b=new gj.dialog.widget(this,null),b[a])return b[a].apply(this,Array.prototype.slice.call(arguments,1));throw"Method "+a+" does not exist."}return new gj.dialog.widget(this,a)}}}(jQuery),gj.dialog.messages["en-us"]={Close:"Close",DefaultTitle:"Dialog"},gj.draggable={plugins:{}},gj.draggable.config={base:{handle:void 0,vertical:!0,horizontal:!0,containment:void 0}},gj.draggable.methods={init:function(a){var b,c,d=this;return gj.widget.prototype.init.call(this,a,"draggable"),c=this.data(),d.attr("data-draggable","true"),b=gj.draggable.methods.getHandleElement(d),b.on("touchstart mousedown",function(a){var e=gj.core.position(d[0]);d[0].style.top=e.top+"px",d[0].style.left=e.left+"px",d[0].style.position="fixed",d.attr("draggable-dragging",!0),d.removeAttr("draggable-x").removeAttr("draggable-y"),gj.documentManager.subscribeForEvent("touchmove",d.data("guid"),gj.draggable.methods.createMoveHandler(d,b,c)),gj.documentManager.subscribeForEvent("mousemove",d.data("guid"),gj.draggable.methods.createMoveHandler(d,b,c))}),gj.documentManager.subscribeForEvent("mouseup",d.data("guid"),gj.draggable.methods.createUpHandler(d)),gj.documentManager.subscribeForEvent("touchend",d.data("guid"),gj.draggable.methods.createUpHandler(d)),gj.documentManager.subscribeForEvent("touchcancel",d.data("guid"),gj.draggable.methods.createUpHandler(d)),d},getHandleElement:function(a){var b=a.data("handle");return b&&b.length?b:a},createUpHandler:function(a){return function(b){"true"===a.attr("draggable-dragging")&&(a.attr("draggable-dragging",!1),gj.documentManager.unsubscribeForEvent("mousemove",a.data("guid")),gj.documentManager.unsubscribeForEvent("touchmove",a.data("guid")),gj.draggable.events.stop(a,{x:a.mouseX(b),y:a.mouseY(b)}))}},createMoveHandler:function(a,b,c){return function(b){var d,e,f,g,h,i;"true"===a.attr("draggable-dragging")&&(d=Math.round(a.mouseX(b)),e=Math.round(a.mouseY(b)),h=a.attr("draggable-x"),i=a.attr("draggable-y"),h&&i?(f=c.horizontal?d-parseInt(h,10):0,g=c.vertical?e-parseInt(i,10):0,gj.draggable.methods.move(a[0],c,f,g,d,e)):gj.draggable.events.start(a,d,e),a.attr("draggable-x",d),a.attr("draggable-y",e))}},move:function(a,b,c,d,e,f){var g,h,i,j=gj.core.position(a),k=j.top+d,l=j.left+c;b.containment&&(g=gj.core.position(b.containment),h=g.top+gj.core.height(b.containment)-gj.core.height(a),i=g.left+gj.core.width(b.containment)-gj.core.width(a),k>g.top&&k=f||g.bottom<=f)&&(k=j.top):k=k<=g.top?g.top+1:h-1,l>g.left&&l=e||g.right<=e)&&(l=j.left):l=l<=g.left?g.left+1:i-1),!1!==gj.draggable.events.drag($(a),l,k,e,f)&&(a.style.top=k+"px",a.style.left=l+"px")},destroy:function(a){return"true"===a.attr("data-draggable")&&(gj.documentManager.unsubscribeForEvent("mouseup",a.data("guid")),a.removeData(),a.removeAttr("data-guid").removeAttr("data-type").removeAttr("data-draggable"),a.removeAttr("draggable-x").removeAttr("draggable-y").removeAttr("draggable-dragging"),a[0].style.top="",a[0].style.left="",a[0].style.position="",a.off("drag").off("start").off("stop"),gj.draggable.methods.getHandleElement(a).off("mousedown")),a}},gj.draggable.events={drag:function(a,b,c,d,e){return a.triggerHandler("drag",[{left:b,top:c},{x:d,y:e}])},start:function(a,b,c){a.triggerHandler("start",[{x:b,y:c}])},stop:function(a,b){a.triggerHandler("stop",[b])}},gj.draggable.widget=function(a,b){var c=this,d=gj.draggable.methods;return a.destroy||(c.destroy=function(){return d.destroy(this)}),$.extend(a,c),"true"!==a.attr("data-draggable")&&d.init.call(a,b),a},gj.draggable.widget.prototype=new gj.widget,gj.draggable.widget.constructor=gj.draggable.widget,function(a){a.fn.draggable=function(a){var b;if(this&&this.length){if("object"!=typeof a&&a){if(b=new gj.draggable.widget(this,null),b[a])return b[a].apply(this,Array.prototype.slice.call(arguments,1));throw"Method "+a+" does not exist."}return new gj.draggable.widget(this,a)}}}(jQuery),gj.droppable={plugins:{}},gj.droppable.config={hoverClass:void 0},gj.droppable.methods={init:function(a){var b=this;return gj.widget.prototype.init.call(this,a,"droppable"),b.attr("data-droppable","true"),gj.documentManager.subscribeForEvent("mousedown",b.data("guid"),gj.droppable.methods.createMouseDownHandler(b)),gj.documentManager.subscribeForEvent("mousemove",b.data("guid"),gj.droppable.methods.createMouseMoveHandler(b)),gj.documentManager.subscribeForEvent("mouseup",b.data("guid"),gj.droppable.methods.createMouseUpHandler(b)),b},createMouseDownHandler:function(a){return function(b){a.isDragging=!0}},createMouseMoveHandler:function(a){return function(b){if(a.isDragging){var c=a.data("hoverClass"),d={x:a.mouseX(b),y:a.mouseY(b)},e=gj.droppable.methods.isOver(a,d);e!=a.isOver&&(e?(c&&a.addClass(c),gj.droppable.events.over(a,d)):(c&&a.removeClass(c),gj.droppable.events.out(a))),a.isOver=e}}},createMouseUpHandler:function(a){return function(b){var c={left:a.mouseX(b),top:a.mouseY(b)};a.isDragging=!1,gj.droppable.methods.isOver(a,c)&&gj.droppable.events.drop(a)}},isOver:function(a,b){var c=a.offset().top,d=a.offset().left;return b.x>d&&b.xc&&b.y',desc:''}},fontawesome:{icons:{asc:'',desc:''}},glyphicons:{icons:{asc:'',desc:''}}},gj.grid.events={beforeEmptyRowInsert:function(a,b){return a.triggerHandler("beforeEmptyRowInsert",[b])},dataBinding:function(a,b){return a.triggerHandler("dataBinding",[b])},dataBound:function(a,b,c){return a.triggerHandler("dataBound",[b,c])},rowDataBound:function(a,b,c,d){return a.triggerHandler("rowDataBound",[b,c,d])},cellDataBound:function(a,b,c,d,e){return a.triggerHandler("cellDataBound",[b,c,d,e])},rowSelect:function(a,b,c,d){return a.triggerHandler("rowSelect",[b,c,d])},rowUnselect:function(a,b,c,d){return a.triggerHandler("rowUnselect",[b,c,d])},rowRemoving:function(a,b,c,d){return a.triggerHandler("rowRemoving",[b,c,d])},destroying:function(a){return a.triggerHandler("destroying")},columnHide:function(a,b){return a.triggerHandler("columnHide",[b])},columnShow:function(a,b){return a.triggerHandler("columnShow",[b])},initialized:function(a){return a.triggerHandler("initialized")},dataFiltered:function(a,b){return a.triggerHandler("dataFiltered",[b])}},gj.grid.methods={init:function(a){return gj.widget.prototype.init.call(this,a,"grid"),gj.grid.methods.initialize(this),this.data("autoLoad")&&this.reload(),this},getConfig:function(a,b){var c=gj.widget.prototype.getConfig.call(this,a,b);return gj.grid.methods.setDefaultColumnConfig(c.columns,c.defaultColumnSettings),c},setDefaultColumnConfig:function(a,b){var c,d;if(a&&a.length)for(d=0;d tr > th").each(function(){var b=$(this),c=b.text(),d=gj.widget.prototype.getHTMLConfig.call(b);d.title=c,d.field||(d.field=c),d.events&&(d.events=gj.grid.methods.eventsParser(d.events)),a.columns.push(d)}),a},eventsParser:function(events){var result={},list,i,key,func,position;for(list=events.split(","),i=0;i0&&(key=$.trim(list[i].substr(0,position)),func=$.trim(list[i].substr(position+1,list[i].length)),result[key]=eval("window."+func));return result},initialize:function(a){var b=a.data(),c=a.parent('div[data-role="wrapper"]');gj.grid.methods.localization(b),0===c.length?(c=$('
    ').addClass(b.style.wrapper),a.wrap(c)):c.addClass(b.style.wrapper),b.width&&a.parent().css("width",b.width),b.minWidth&&a.css("min-width",b.minWidth),b.fontSize&&a.css("font-size",b.fontSize),"autogrow"===b.headerRowHeight&&a.addClass("autogrow-header-row"),"fixed"===b.bodyRowHeight&&a.addClass("fixed-body-rows"),a.addClass(b.style.table),"checkbox"===b.selectionMethod&&b.columns.splice(gj.grid.methods.getColumnPositionNotInRole(a),0,{title:"",width:b.defaultCheckBoxColumnWidth,align:"center",type:"checkbox",role:"selectRow",events:{click:function(b){gj.grid.methods.setSelected(a,b.data.id,$(this).closest("tr"))}},headerCssClass:"gj-grid-select-all",stopPropagation:!0}),0===a.children("tbody").length&&a.append($("")),gj.grid.methods.renderHeader(a),gj.grid.methods.appendEmptyRow(a," "),gj.grid.events.initialized(a)},localization:function(a){a.notFoundText||(a.notFoundText=gj.grid.messages[a.locale].NoRecordsFound)},renderHeader:function(a){var b,c,d,e,f,g,h,i,j;for(b=a.data(),c=b.columns,d=b.style.header,e=a.children("thead"),0===e.length&&(e=$(""),a.prepend(e)),f=$(''),i=0;i'),c[i].width?g.attr("width",c[i].width):"checkbox"===c[i].type&&g.attr("width",b.defaultIconColumnWidth),g.addClass(d.cell),c[i].headerCssClass&&g.addClass(c[i].headerCssClass),g.css("text-align",c[i].align||"left"),"checkbox"===b.selectionMethod&&"multiple"===b.selectionType&&"checkbox"===c[i].type&&"selectRow"===c[i].role?(j=g.find('input[data-role="selectAll"]'),0===j.length&&(j=$(''),g.append(j),j.checkbox({uiLibrary:b.uiLibrary})),j.off("click").on("click",function(){this.checked?a.selectAll():a.unSelectAll()})):(h=$('
    ').html(void 0===c[i].title?c[i].field:c[i].title),g.append(h),c[i].sortable&&(h.addClass(d.sortable),h.on("click",gj.grid.methods.createSortHandler(a,c[i])))),c[i].hidden&&g.hide(),f.append(g);e.empty().append(f)},createSortHandler:function(a,b){return function(){var c,d={};a.count()>0&&(c=a.data(),d[c.paramNames.sortBy]=b.field,b.direction="asc"===b.direction?"desc":"asc",d[c.paramNames.direction]=b.direction,a.reload(d))}},updateHeader:function(a){var b,c,d=a.data(),e=d.params[d.paramNames.sortBy],f=d.params[d.paramNames.direction];a.find('thead tr th [data-role="sorticon"]').remove(),e&&(position=gj.grid.methods.getColumnPosition(a.data("columns"),e),position>-1&&(c=a.find("thead tr th:eq("+position+') div[data-role="title"]'),b=$('
    ').append("desc"===f?d.icons.desc:d.icons.asc),c.after(b)))},useHtmlDataSource:function(a,b){var c,d,e,f,g=[],h=a.find('tbody tr[data-role != "empty"]');for(c=0;c').addClass(h.style.loadingCover).css({width:e,height:f,top:g}),d=$('
    '+gj.grid.messages[h.locale].Loading+"
    ").addClass(h.style.loadingText),d.insertAfter(a),c.insertAfter(a),d.css({top:g+f/2-d.outerHeight(!1)/2,left:e/2-d.outerWidth(!1)/2}))},stopLoading:function(a){a.parent().find('div[data-role="loading-cover"]').remove(),a.parent().find('div[data-role="loading-text"]').remove()},appendEmptyRow:function(a,b){var c,d,e,f;c=a.data(),d=$(''),e=$("").css({width:"100%","text-align":"center"}),e.attr("colspan",gj.grid.methods.countVisibleColumns(a)),f=$("
    ").html(b||c.notFoundText),e.append(f),d.append(e),gj.grid.events.beforeEmptyRowInsert(a,d),a.append(d)},autoGenerateColumns:function(a,b){var c,d,e,f,g=a.data();if(g.columns=[],b.length>0){for(c=Object.getOwnPropertyNames(b[0]),f=0;f-1&&(e="date")),g.columns.push({field:c[f],type:e});gj.grid.methods.setDefaultColumnConfig(g.columns,g.defaultColumnSettings)}gj.grid.methods.renderHeader(a)},loadData:function(a){var b,c,d,e,f,g,h,i;for(b=a.data(),c=a.getAll(),gj.grid.events.dataBinding(a,c),e=c.length,gj.grid.methods.stopLoading(a),b.autoGenerateColumns&&gj.grid.methods.autoGenerateColumns(a,c),g=a.children("tbody"),"checkbox"===b.selectionMethod&&"multiple"===b.selectionType&&a.find('thead input[data-role="selectAll"]').prop("checked",!1),g.children("tr").not('[data-role="row"]').remove(),0===e&&(g.empty(),gj.grid.methods.appendEmptyRow(a)),h=g.children("tr"),f=h.length,d=0;d'),a.children("tbody").append(b)),e=gj.grid.methods.getId(c,h.primaryKey,d+1),b.attr("data-position",d+1),"checkbox"!==h.selectionMethod&&b.on("click",gj.grid.methods.createRowClickHandler(a,e)),g=0;g"),g=$('
    '),c.align&&b.css("text-align",c.align),c.cssClass&&b.addClass(c.cssClass),b.append(g),f="create"),gj.grid.methods.renderDisplayElement(a,g,c,d,e,f),"update"===f&&(b.off(),g.off()),c.events)for(h in c.events)c.events.hasOwnProperty(h)&&b.on(h,{id:e,field:c.field,record:d},gj.grid.methods.createCellEventHandler(c,c.events[h]));return c.hidden&&b.hide(),gj.grid.events.cellDataBound(a,g,e,c,d),b},createCellEventHandler:function(a,b){return function(c){a.stopPropagation&&c.stopPropagation(),b.call(this,c)}},renderDisplayElement:function(a,b,c,d,e,f){var g,h;"checkbox"===c.type&&gj.checkbox?"create"===f?(h=$('').val(e).prop("checked",!!d[c.field]),c.role&&h.attr("data-role",c.role),b.append(h),h.checkbox({uiLibrary:a.data("uiLibrary")}),"selectRow"===c.role?h.on("click",function(){return!1}):h.prop("disabled",!0)):b.find('input[type="checkbox"]').val(e).prop("checked",!!d[c.field]):"icon"===c.type?"create"===f&&(b.append($("").addClass(c.icon).css({cursor:"pointer"})),"bootstrap"===a.data().uiLibrary&&b.children("span").addClass("glyphicon"),c.stopPropagation=!0):c.tmpl?(g=c.tmpl,c.tmpl.replace(/\{(.+?)\}/g,function(a,b){g=g.replace(a,gj.grid.methods.formatText(d[b],c))}),b.html(g)):c.renderer&&"function"==typeof c.renderer?(g=c.renderer(d[c.field],d,b.parent(),b,e,a))&&b.html(g):(d[c.field]=gj.grid.methods.formatText(d[c.field],c),!c.tooltip&&d[c.field]&&b.attr("title",d[c.field]),b.html(d[c.field])),c.tooltip&&"create"===f&&b.attr("title",c.tooltip)},formatText:function(a,b){return a=a&&["date","time","datetime"].indexOf(b.type)>-1?gj.core.formatDate(gj.core.parseDate(a,b.format),b.format):void 0===a||null===a?"":a.toString(),b.decimalDigits&&a&&(a=parseFloat(a).toFixed(b.decimalDigits)),a},setRecordsData:function(a,b){var c=[],d=0,e=a.data();return $.isArray(b)?(c=b,d=b.length):e&&e.mapping&&$.isArray(b[e.mapping.dataField])&&(c=b[e.mapping.dataField],(d=b[e.mapping.totalRecordsField])&&!isNaN(d)||(d=0)),a.data("records",c),a.data("totalRecords",d),c},createRowClickHandler:function(a,b){return function(){gj.grid.methods.setSelected(a,b,$(this))}},selectRow:function(a,b,c,d){var e;return c.addClass(b.style.content.rowSelected),c.attr("data-selected","true"),"checkbox"===b.selectionMethod&&(e=c.find('input[type="checkbox"][data-role="selectRow"]'),e.length&&!e.prop("checked")&&e.prop("checked",!0),"multiple"===b.selectionType&&a.getSelections().length===a.count(!1)&&a.find('thead input[data-role="selectAll"]').prop("checked",!0)),gj.grid.events.rowSelect(a,c,d,a.getById(d))},unselectRow:function(a,b,c,d){var e;if("true"===c.attr("data-selected"))return c.removeClass(b.style.content.rowSelected),"checkbox"===b.selectionMethod&&(e=c.find('td input[type="checkbox"][data-role="selectRow"]'),e.length&&e.prop("checked")&&e.prop("checked",!1),"multiple"===b.selectionType&&a.find('thead input[data-role="selectAll"]').prop("checked",!1)),c.removeAttr("data-selected"),gj.grid.events.rowUnselect(a,c,d,a.getById(d))},setSelected:function(a,b,c){var d=a.data();return c&&c.length||(c=gj.grid.methods.getRowById(a,b)),c&&("true"===c.attr("data-selected")?gj.grid.methods.unselectRow(a,d,c,b):("single"===d.selectionType&&c.siblings('[data-selected="true"]').each(function(){var b=$(this),c=gj.grid.methods.getId(b,d.primaryKey,b.data("position"));gj.grid.methods.unselectRow(a,d,b,c)}),gj.grid.methods.selectRow(a,d,c,b))),a},selectAll:function(a){var b=a.data();return a.find('tbody tr[data-role="row"]').each(function(){var c=$(this),d=c.data("position"),e=a.get(d),f=gj.grid.methods.getId(e,b.primaryKey,d);gj.grid.methods.selectRow(a,b,c,f)}),a.find('thead input[data-role="selectAll"]').prop("checked",!0),a},unSelectAll:function(a){var b=a.data();return a.find("tbody tr").each(function(){var c=$(this),d=c.data("position"),e=a.get(d),f=gj.grid.methods.getId(e,b.primaryKey,d);gj.grid.methods.unselectRow(a,b,c,f),c.find('input[type="checkbox"][data-role="selectRow"]').prop("checked",!1)}),a.find('thead input[data-role="selectAll"]').prop("checked",!1),a},getSelected:function(a){var b,c,d,e=null;return b=a.find('tbody>tr[data-selected="true"]'),b.length>0&&(d=$(b[0]).data("position"),c=a.get(d),e=gj.grid.methods.getId(c,a.data().primaryKey,d)),e},getSelectedRows:function(a){a.data();return a.find('tbody>tr[data-selected="true"]')},getSelections:function(a){var b,c,d=[],e=a.data(),f=gj.grid.methods.getSelectedRows(a);return 0-1&&(e=gj.grid.methods.getRowById(a,b),f=e.find("td:eq("+d+') div[data-role="display"]')),f},setCellContent:function(a,b,c,d){var e,f=gj.grid.methods.getCell(a,b,c);f&&(f.empty(),"object"==typeof d?f.append(d):(e=gj.grid.methods.getColumnInfo(a,c),gj.grid.methods.renderDisplayElement(a,f,e,a.getById(b),b,"update")))},clone:function(a){var b=[];return $.each(a,function(){b.push(this.clone())}),b},getAll:function(a){return a.data("records")},countVisibleColumns:function(a){var b,c,d;for(b=a.data().columns,c=0,d=0;d-1}));return gj.grid.events.dataFiltered(a,e),e},createDefaultSorter:function(a,b){return function(c,d){var e=(c[b]||"").toString(),f=(d[b]||"").toString();return"asc"===a?e.localeCompare(f):f.localeCompare(e)}},destroy:function(a,b,c){return a.data()&&(gj.grid.events.destroying(a),gj.grid.methods.stopLoading(a),a.xhr&&a.xhr.abort(),a.off(),!1===c&&a.parent('div[data-role="wrapper"]').length>0&&a.unwrap(),a.removeData(),!1===b?a.remove():a.removeClass().empty(),a.removeAttr("data-type")),a},showColumn:function(a,b){var c,d=a.data(),e=gj.grid.methods.getColumnPosition(d.columns,b);return e>-1&&(a.find("thead>tr").each(function(){$(this).children("th").eq(e).show()}),$.each(a.find("tbody>tr"),function(){$(this).children("td").eq(e).show()}),d.columns[e].hidden=!1,c=a.find('tbody > tr[data-role="empty"] > td'),c&&c.length&&c.attr("colspan",gj.grid.methods.countVisibleColumns(a)),gj.grid.events.columnShow(a,d.columns[e])),a},hideColumn:function(a,b){var c,d=a.data(),e=gj.grid.methods.getColumnPosition(d.columns,b);return e>-1&&(a.find("thead>tr").each(function(){$(this).children("th").eq(e).hide()}),$.each(a.find("tbody>tr"),function(){$(this).children("td").eq(e).hide()}),d.columns[e].hidden=!0,c=a.find('tbody > tr[data-role="empty"] > td'),c&&c.length&&c.attr("colspan",gj.grid.methods.countVisibleColumns(a)),gj.grid.events.columnHide(a,d.columns[e])),a},isLastRecordVisible:function(){return!0},addRow:function(a,b){var c=a.data();return c.totalRecords=a.data("totalRecords")+1,gj.grid.events.dataBinding(a,[b]),c.records.push(b),$.isArray(c.dataSource)&&c.dataSource.push(b),1===c.totalRecords&&a.children("tbody").empty(),gj.grid.methods.isLastRecordVisible(a)&&gj.grid.methods.renderRow(a,null,b,a.count()-1),gj.grid.events.dataBound(a,[b],c.totalRecords),a},updateRow:function(a,b,c){var d,e=gj.grid.methods.getRowById(a,b),f=a.data();return f.records[e.data("position")-1]=c,$.isArray(f.dataSource)&&(d=gj.grid.methods.getRecVPosById(a,b),f.dataSource[d]=c),gj.grid.methods.renderRow(a,e,c,e.index()),a},removeRow:function(a,b){var c,d=a.data(),e=gj.grid.methods.getRowById(a,b);return gj.grid.events.rowRemoving(a,e,b,a.getById(b)),$.isArray(d.dataSource)&&(c=gj.grid.methods.getRecVPosById(a,b),d.dataSource.splice(c,1)),a.reload(),a},count:function(a,b){return b?a.data().totalRecords:a.getAll().length},getColumnPositionByRole:function(a,b){var c,d,e=a.data("columns");for(c=0;c-1?1:0)):d.css("width",e.outerWidth()),b=0;b',collapseRow:''}},fontawesome:{icons:{expandRow:'',collapseRow:''}},glyphicons:{icons:{expandRow:'',collapseRow:''}}},private:{expandDetail:function(a,b,c){var d=b.closest("tr"),e=$(''),f=$(''),g=$('
    '),h=a.data(),i=d.data("position"),j=a.get(i),k=gj.grid.plugins.expandCollapseRows;void 0===typeof c&&(c=gj.grid.methods.getId(j,h.primaryKey,j)),e.append(f.append(g.append(d.data("details")))),e.insertAfter(d),b.children('div[data-role="display"]').empty().append(h.icons.collapseRow),a.updateDetails(d),k.private.keepSelection(a,c),k.events.detailExpand(a,e.find("td>div"),c)},collapseDetail:function(a,b,c){var d=b.closest("tr"),e=d.next('tr[data-role="details"]'),f=a.data(),g=gj.grid.plugins.expandCollapseRows;void 0===typeof c&&(c=gj.grid.methods.getId(record,f.primaryKey,record)),e.remove(),b.children('div[data-role="display"]').empty().append(f.icons.expandRow),g.private.removeSelection(a,c),g.events.detailCollapse(a,e.find("td>div"),c)},keepSelection:function(a,b){var c=a.data();c.keepExpandedRows&&($.isArray(c.expandedRows)?-1==c.expandedRows.indexOf(b)&&c.expandedRows.push(b):c.expandedRows=[b])},removeSelection:function(a,b){var c=a.data();c.keepExpandedRows&&$.isArray(c.expandedRows)&&c.expandedRows.indexOf(b)>-1&&c.expandedRows.splice(c.expandedRows.indexOf(b),1)},updateDetailsColSpan:function(a){var b=a.find('tbody > tr[data-role="details"] > td');b&&b.length&&b.attr("colspan",gj.grid.methods.countVisibleColumns(a))}},public:{collapseAll:function(){var a,b=this,c=b.data();return void 0!==c.detailTemplate&&(a=gj.grid.methods.getColumnPositionByRole(b,"expander"),b.find('tbody tr[data-role="row"]').each(function(){gj.grid.plugins.expandCollapseRows.private.collapseDetail(b,$(this).find("td:eq("+a+")"))})),void 0!==c.grouping&&b.find('tbody tr[role="group"]').each(function(){gj.grid.plugins.grouping.private.collapseGroup(c,$(this).find("td:eq(0)"))}),b},expandAll:function(){var a,b=this,c=b.data();return void 0!==c.detailTemplate&&(a=gj.grid.methods.getColumnPositionByRole(b,"expander"),b.find('tbody tr[data-role="row"]').each(function(){gj.grid.plugins.expandCollapseRows.private.expandDetail(b,$(this).find("td:eq("+a+")"))})),void 0!==c.grouping&&b.find('tbody tr[role="group"]').each(function(){gj.grid.plugins.grouping.private.expandGroup(c,$(this).find("td:eq(0)"))}),b},updateDetails:function(a){var b=this,c=a.data("details"),d=c.html(),e=b.get(a.data("position"));return e&&d&&(c.html().replace(/\{(.+?)\}/g,function(a,c){var f=gj.grid.methods.getColumnInfo(b,c);d=d.replace(a,gj.grid.methods.formatText(e[c],f))}),c.html(d)),b}},events:{detailExpand:function(a,b,c){a.triggerHandler("detailExpand",[b,c])},detailCollapse:function(a,b,c){a.triggerHandler("detailCollapse",[b,c])}},configure:function(a){var b,c=a.data();$.extend(!0,a,gj.grid.plugins.expandCollapseRows.public),void 0!==c.detailTemplate&&(b={title:"",width:c.defaultIconColumnWidth,align:"center",stopPropagation:!0,cssClass:"gj-cursor-pointer gj-unselectable",tmpl:c.icons.expandRow,role:"expander",events:{click:function(b){var c=$(this),d=gj.grid.plugins.expandCollapseRows.private;"details"===c.closest("tr").next().attr("data-role")?d.collapseDetail(a,c,b.data.id):d.expandDetail(a,$(this),b.data.id)}}},c.columns=[b].concat(c.columns),a.on("rowDataBound",function(a,b,d,e){b.data("details",$(c.detailTemplate))}),a.on("columnShow",function(b,c){gj.grid.plugins.expandCollapseRows.private.updateDetailsColSpan(a)}),a.on("columnHide",function(b,c){gj.grid.plugins.expandCollapseRows.private.updateDetailsColSpan(a)}),a.on("rowRemoving",function(b,c,d,e){gj.grid.plugins.expandCollapseRows.private.collapseDetail(a,c.children("td").first(),d)}),a.on("dataBinding",function(){a.collapseAll()}),a.on("pageChanging",function(){a.collapseAll()}),a.on("dataBound",function(){var b,c,d,e,f=a.data();if(f.keepExpandedRows&&$.isArray(f.expandedRows))for(b=0;b '+gj.grid.messages[a.locale].Edit+"",a.inlineEditing.deleteButton='",a.inlineEditing.updateButton='",a.inlineEditing.cancelButton='"):(a.inlineEditing.editButton='",a.inlineEditing.deleteButton='",a.inlineEditing.updateButton='",a.inlineEditing.cancelButton='")},editMode:function(a,b,c,d){var e,f,g,h,i,j=a.data();if("edit"!==b.attr("data-mode"))if(c.editor){if(gj.grid.plugins.inlineEditing.private.updateOtherCells(a,c.mode),e=b.find('div[data-role="display"]').hide(),f=b.find('div[data-role="edit"]').show(),0===f.length&&(f=$('
    '),b.append(f)),h=d[c.editField||c.field],g=f.find("input, select, textarea").first(),g.length)switch(c.type){case"checkbox":g.prop("checked",h);break;case"dropdown":g=g.dropdown("value",h);break;default:g.val(h)}else{if("function"==typeof c.editor)c.editor(f,h,d),g=f.find("input, select, textarea").first();else if(i="object"==typeof c.editor?c.editor:{},i.uiLibrary=j.uiLibrary,i.iconsLibrary=j.iconsLibrary,i.fontSize=a.css("font-size"),"checkbox"===c.type&&gj.checkbox)g=$('').prop("checked",h),f.append(g),g.checkbox(i);else if("date"===c.type&&gj.datepicker||"time"===c.type&&gj.timepicker||"datetime"===c.type&&gj.datetimepicker){switch(g=$(''),f.append(g),c.format&&(i.format=c.format),c.type){case"date":g=g.datepicker(i);break;case"time":g=g.timepicker(i);break;case"datetime":g=g.datetimepicker(i)}g.value&&g.value(e.html())}else"dropdown"===c.type&&gj.dropdown?(g=$(''),"materialdesign"===j.uiLibrary&&g.addClass("gj-textbox-md").css("font-size",a.css("font-size")),f.append(g));"command"!==j.inlineEditing.mode&&"editOnly"!==c.mode&&(g=f.find("input, select, textarea").first(),g.on("keyup",function(d){13!==d.keyCode&&27!==d.keyCode||gj.grid.plugins.inlineEditing.private.displayMode(a,b,c)}))}"INPUT"===g.prop("tagName").toUpperCase()&&"TEXT"===g.prop("type").toUpperCase()?gj.core.setCaretAtEnd(g[0]):g.focus(),b.attr("data-mode","edit")}else"managementColumn"===c.role&&(b.find('[role="edit"]').hide(),b.find('[role="delete"]').hide(),b.find('[role="update"]').show(),b.find('[role="cancel"]').show())},displayMode:function(a,b,c,d){var e,f,g,h,i,j,k;"editOnly"!==c.mode&&("edit"===b.attr("data-mode")&&(e=b.find('div[data-role="edit"]'),f=b.find('div[data-role="display"]'),g=e.find("input, select, textarea").first(),"SELECT"===g[0].tagName.toUpperCase()&&g[0].selectedIndex>-1?(h=g[0].options[g[0].selectedIndex].innerHTML,i=g[0].value):h="INPUT"===g[0].tagName.toUpperCase()&&"CHECKBOX"===g[0].type.toUpperCase()?g[0].checked:g.val(),k=b.parent().data("position"),j=a.get(k),!0!==d&&h!==j[c.field]&&(j[c.field]="date"===c.type?gj.core.parseDate(h,c.format):h,c.editField&&(j[c.editField]=i||h),"editOnly"!==c.mode&&(gj.grid.methods.renderDisplayElement(a,f,c,j,gj.grid.methods.getId(j,a.data("primaryKey"),k),"update"),0===b.find("span.gj-dirty").length&&b.prepend($(''))),gj.grid.plugins.inlineEditing.events.cellDataChanged(a,b,c,j,h),gj.grid.plugins.inlineEditing.private.updateChanges(a,c,j,h)),e.hide(),f.show(),b.attr("data-mode","display")),"managementColumn"===c.role&&(b.find('[role="update"]').hide(),b.find('[role="cancel"]').hide(),b.find('[role="edit"]').show(),b.find('[role="delete"]').show()))},updateOtherCells:function(a,b){var c=a.data();"command"!==c.inlineEditing.mode&&"editOnly"!==b&&a.find('div[data-role="edit"]:visible').parent("td").each(function(){var b=$(this),d=c.columns[b.index()];gj.grid.plugins.inlineEditing.private.displayMode(a,b,d)})},updateChanges:function(a,b,c,d){var e,f,g,h=a.data();h.guid||(h.guid=gj.grid.plugins.inlineEditing.private.generateGUID()),h.primaryKey&&(e=JSON.parse(sessionStorage.getItem("gj.grid."+h.guid)),e?f=e.filter(function(a){return a[h.primaryKey]===c[h.primaryKey]}):e=[],f&&1===f.length?f[0][b.field]=d:(g={},g[h.primaryKey]=c[h.primaryKey],h.primaryKey!==b.field&&(g[b.field]=d),e.push(g)),sessionStorage.setItem("gj.grid."+h.guid,JSON.stringify(e)))},generateGUID:function(){function a(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}return a()+a()+"-"+a()+"-"+a()+"-"+a()+"-"+a()+a()+a()}},gj.grid.plugins.inlineEditing.public={getChanges:function(){return JSON.parse(sessionStorage.getItem("gj.grid."+this.data().guid))},edit:function(a){var b,c=this.getById(a),d=gj.grid.methods.getRowById(this,a).children("td"),e=this.data("columns");for(b=0;b',previous:'',next:'',last:'',refresh:''}},materialicons:{icons:{first:'',previous:'',next:'',last:'',refresh:''}},fontawesome:{icons:{first:'',previous:'',next:'',last:'',refresh:''}}},private:{init:function(a){var b,c,d,e,f,g,h,i,j,k;if(d=a.data(),d.pager)for(d.params[d.paramNames.page]||(d.params[d.paramNames.page]=1),d.params[d.paramNames.limit]||(d.params[d.paramNames.limit]=d.pager.limit),gj.grid.plugins.pagination.private.localization(d),b=$(''),c=$(""),b.append(c),f=$('
    ').addClass(d.style.pager.panel).css({float:"left"}),g=$('
    ').addClass(d.style.pager.panel).css({float:"right"}),c.append(f).append(g),h=$("").append(b),a.append(h),gj.grid.plugins.pagination.private.updatePagerColSpan(a),i=gj.grid.methods.clone(d.pager.leftControls),$.each(i,function(){f.append(this)}),j=gj.grid.methods.clone(d.pager.rightControls),$.each(j,function(){g.append(this)}),e=a.find("tfoot [data-role]"),k=0;k'+(a.icons.first||b.First)+"").attr("title",b.FirstPageTooltip).attr("data-role","page-first"),$('").attr("title",b.PreviousPageTooltip).attr("data-role","page-previous"),$("
    "+b.Page+"
    "),$(''),$("
    "+b.Of+"
    "),$('
    0
    '),$('").attr("title",b.NextPageTooltip).attr("data-role","page-next"),$('").attr("title",b.LastPageTooltip).attr("data-role","page-last"),$('").attr("title",b.Refresh).attr("data-role","page-refresh"),$('')]),void 0===a.pager.rightControls&&(a.pager.rightControls=[$("
    "+b.DisplayingRecords+"
    "),$('
    0
    '),$("
    -
    "),$('
    0
    '),$("
    "+b.Of+"
    "),$('
    0
    ')])},localizationBootstrap4:function(a){var b=gj.grid.messages[a.locale];void 0===a.pager.leftControls&&(a.pager.leftControls=[$('").attr("title",b.FirstPageTooltip).attr("data-role","page-first"),$('").attr("title",b.PreviousPageTooltip).attr("data-role","page-previous"),$("
    "+b.Page+"
    "),$('
    '),$("
    "+b.Of+"
    "),$('
    0
    '),$('").attr("title",b.NextPageTooltip).attr("data-role","page-next"),$('").attr("title",b.LastPageTooltip).attr("data-role","page-last"),$('").attr("title",b.Refresh).attr("data-role","page-refresh"),$('')]),void 0===a.pager.rightControls&&(a.pager.rightControls=[$("
    "+b.DisplayingRecords+" 
    "),$('
    0
    '),$("
    -
    "),$('
    0
    '),$("
    "+b.Of+"
    "),$('
    0
    ')])},localizationMaterialDesign:function(a){var b=gj.grid.messages[a.locale];void 0===a.pager.leftControls&&(a.pager.leftControls=[]),void 0===a.pager.rightControls&&(a.pager.rightControls=[$(''+b.RowsPerPage+""),$('
    '),$(' '),$('0'),$('-'),$('0'),$(''+b.Of+""),$('0'),$(' '),$('").attr("title",b.PreviousPageTooltip).attr("data-role","page-previous").addClass(a.icons.first?"gj-button-md-icon":""),$(' '),$('").attr("title",b.NextPageTooltip).attr("data-role","page-next").addClass(a.icons.first?"gj-button-md-icon":"")])},initPagerControl:function(a,b){var c=b.data();switch(a.data("role")){case"page-size":c.pager.sizes&&0").attr("value",this.toString()).text(this.toString()))}),a.change(function(){var a=parseInt(this.value,10);c.params[c.paramNames.limit]=a,gj.grid.plugins.pagination.private.changePage(b,1),gj.grid.plugins.pagination.events.pageSizeChange(b,a)}),a.val(c.params[c.paramNames.limit]),gj.dropdown&&a.dropdown({uiLibrary:c.uiLibrary,iconsLibrary:c.iconsLibrary,fontSize:a.css("font-size"),style:{presenter:"btn btn-default btn-sm"}})):a.hide();break;case"page-refresh":a.on("click",function(){b.reload()})}},reloadPager:function(a,b){var c,d,e,f,g,h,i,j;if(h=a.data(),h.pager){for(c=0===b?0:parseInt(h.params[h.paramNames.page],10),d=parseInt(h.params[h.paramNames.limit],10),e=Math.ceil(b/d),f=0===c?0:d*(c-1)+1,g=f+d>b?b:f+d-1,i=a.find("TFOOT [data-role]"),j=0;je?b.hide():(b.show().off("click").text(d),d===c?b.addClass(f.activeButton):b.removeClass(f.activeButton).on("click",function(){gj.grid.plugins.pagination.private.changePage(a,d)}))},createChangePageHandler:function(a,b){return function(){var b=(a.data(),parseInt(this.value,10));gj.grid.plugins.pagination.private.changePage(a,b)}},changePage:function(a,b){var c=a.data();!1===gj.grid.plugins.pagination.events.pageChanging(a,b)||isNaN(b)||(a.find('TFOOT [data-role="page-number"]').val(b),c.params[c.paramNames.page]=b),a.reload()},updatePagerColSpan:function(a){var b=a.find('tfoot > tr[data-role="pager"] > th');b&&b.length&&b.attr("colspan",gj.grid.methods.countVisibleColumns(a))},isLastRecordVisible:function(a){var b=!0,c=a.data(),d=parseInt(c.params[c.paramNames.limit],10),e=parseInt(c.params[c.paramNames.page],10),f=a.count();return d&&e&&(b=(e-1)*d+f===c.totalRecords),b}},public:{getAll:function(a){var b,c,d,e=this.data();return $.isArray(e.dataSource)?a?e.dataSource:e.params[e.paramNames.limit]&&e.params[e.paramNames.page]?(b=parseInt(e.params[e.paramNames.limit],10),c=parseInt(e.params[e.paramNames.page],10),d=(c-1)*b,e.records.slice(d,d+b)):e.records:e.records}},events:{pageSizeChange:function(a,b){a.triggerHandler("pageSizeChange",[b])},pageChanging:function(a,b){a.triggerHandler("pageChanging",[b])}},configure:function(a,b,c){$.extend(!0,a,gj.grid.plugins.pagination.public);a.data();c.pager&&(gj.grid.methods.isLastRecordVisible=gj.grid.plugins.pagination.private.isLastRecordVisible,a.on("initialized",function(){gj.grid.plugins.pagination.private.init(a)}),a.on("dataBound",function(b,c,d){gj.grid.plugins.pagination.private.reloadPager(a,d)}),a.on("columnShow",function(){gj.grid.plugins.pagination.private.updatePagerColSpan(a)}),a.on("columnHide",function(){gj.grid.plugins.pagination.private.updatePagerColSpan(a)}))}},gj.grid.plugins.responsiveDesign={config:{base:{resizeCheckInterval:500,responsive:!1,showHiddenColumnsAsDetails:!1,defaultColumn:{priority:void 0,minWidth:250},style:{rowDetailItem:""}},bootstrap:{style:{rowDetailItem:"col-lg-4"}}},private:{orderColumns:function(a){var b=[];if(a.columns&&a.columns.length){for(i=0;ib.priority&&(c=1),c})}return b},updateDetails:function(a){var b,c,d,e,f,g,h,i,j;for(b=a.find('tbody > tr[data-role="row"]'),c=a.data(),d=0;d"+(i.title||i.field)+": {"+i.field+"}",h&&h.length?h.empty().html(j):(h=$('
    ').html(j),h.addClass(c.style.rowDetailItem),g&&g.length||(g=$('
    ')),g.append(h))):h&&h.length&&h.remove();a.updateDetails(f)}}},public:{oldWidth:void 0,resizeCheckIntervalId:void 0,makeResponsive:function(){var a,b,c=0,d=this.data(),e=gj.grid.plugins.responsiveDesign.private.orderColumns(d);for(a=0;atr>th:eq("+e[a].position+")"),b.is(":visible")&&e[a].minWidthtr>th:eq("+e[a].position+")"),!b.is(":visible")&&e[a].minWidth<=c&&(this.showColumn(e[a].field),c-=b.width());for(a=e.length-1;a>=0;a--)b=this.find("thead>tr>th:eq("+e[a].position+")"),b.is(":visible")&&e[a].priority&&e[a].minWidth>b.outerWidth()&&this.hideColumn(e[a].field);return this}},events:{resize:function(a,b,c){a.triggerHandler("resize",[b,c])}},configure:function(a,b,c){$.extend(!0,a,gj.grid.plugins.responsiveDesign.public),b.responsive&&(a.on("initialized",function(){a.makeResponsive(),a.oldWidth=a.width(),a.resizeCheckIntervalId=setInterval(function(){var b=a.width();b!==a.oldWidth&&gj.grid.plugins.responsiveDesign.events.resize(a,b,a.oldWidth),a.oldWidth=b},b.resizeCheckInterval)}),a.on("destroy",function(){a.resizeCheckIntervalId&&clearInterval(a.resizeCheckIntervalId)}),a.on("resize",function(){a.makeResponsive()})),b.showHiddenColumnsAsDetails&&gj.grid.plugins.expandCollapseRows&&(a.on("dataBound",function(){gj.grid.plugins.responsiveDesign.private.updateDetails(a)}),a.on("columnHide",function(){gj.grid.plugins.responsiveDesign.private.updateDetails(a)}),a.on("columnShow",function(){gj.grid.plugins.responsiveDesign.private.updateDetails(a)}),a.on("rowDataBound",function(){gj.grid.plugins.responsiveDesign.private.updateDetails(a)}))}},gj.grid.plugins.toolbar={config:{base:{toolbarTemplate:void 0,title:void 0,style:{toolbar:"gj-grid-md-toolbar"}},bootstrap:{style:{toolbar:"gj-grid-bootstrap-toolbar"}},bootstrap4:{style:{toolbar:"gj-grid-bootstrap-4-toolbar"}}},private:{init:function(a){var b,c,d;b=a.data(),c=a.prev('div[data-role="toolbar"]'),(void 0!==b.toolbarTemplate||void 0!==b.title||c.length>0)&&(0===c.length&&(c=$('
    '),a.before(c)),c.addClass(b.style.toolbar),0===c.children().length&&b.toolbarTemplate&&c.append(b.toolbarTemplate),d=c.find('[data-role="title"]'),0===d.length&&(d=$('
    '),c.prepend(d)),b.title&&d.text(b.title),b.minWidth&&c.css("min-width",b.minWidth))}},public:{title:function(a){var b=this.parent().find('div[data-role="toolbar"] [data-role="title"]');return void 0!==a?(b.text(a),this):b.text()}},configure:function(a){$.extend(!0,a,gj.grid.plugins.toolbar.public),a.on("initialized",function(){gj.grid.plugins.toolbar.private.init(a)}),a.on("destroying",function(){a.prev('[data-role="toolbar"]').remove()})}},gj.grid.plugins.resizableColumns={config:{base:{resizableColumns:!1}},private:{init:function(a,b){var c,d,e,f,g,h;if(c=a.find('thead tr[data-role="caption"] th'),c.length){for(e=0;e'),h=parseInt(d.css("padding-right"),10)+3,g=$('').css("margin-right","-"+h+"px"),g.draggable({start:function(){a.addClass("gj-unselectable"),a.addClass("gj-grid-resize-cursor")},stop:function(){a.removeClass("gj-unselectable"),a.removeClass("gj-grid-resize-cursor"),this.style.removeProperty("top"),this.style.removeProperty("left"),this.style.removeProperty("position")},drag:gj.grid.plugins.resizableColumns.private.createResizeHandle(a,d,b.columns[e])}),d.append(f.append(g));for(e=0;e]+>/g," ")+'",');for(e+=d.slice(0,d.length-1)+"\r\n",b=0;b');for(b=0;b"),e.columns[b].filterable&&(d=$(''),"onchange"===e.headerFilter.type?d.on("input propertychange",function(b){gj.grid.plugins.headerFilter.private.reload(a,$(this))}):(d.on("keypress",function(b){13==b.which&&gj.grid.plugins.headerFilter.private.reload(a,$(this))}),d.on("blur",function(b){gj.grid.plugins.headerFilter.private.reload(a,$(this))})),c.append(d)),e.columns[b].hidden&&c.hide(),f.append(c);a.children("thead").append(f)},reload:function(a,b){var c={};c[b.data("field")]=b.val(),a.reload(c)}},public:{},events:{},configure:function(a,b,c){$.extend(!0,a,gj.grid.plugins.headerFilter.public);a.data();c.headerFilter&&a.on("initialized",function(){gj.grid.plugins.headerFilter.private.init(a)})}},gj.grid.plugins.grouping={config:{base:{paramNames:{groupBy:"groupBy",groupByDirection:"groupByDirection"},grouping:{groupBy:void 0,direction:"asc"},icons:{expandGroup:'',collapseGroup:''}},fontawesome:{icons:{expandGroup:'',collapseGroup:''}},glyphicons:{icons:{expandGroup:'',collapseGroup:''}}},private:{init:function(a){var b,c=a.data();b=void 0,a.on("rowDataBound",function(d,e,f,g){if(b!==g[c.grouping.groupBy]||1===e[0].rowIndex){var h=gj.grid.methods.countVisibleColumns(a)-1,i=$(''),j=$('');j.append('
    '+c.icons.collapseGroup+"
    "),j.on("click",gj.grid.plugins.grouping.private.createExpandCollapseHandler(c)),i.append(j),i.append('
    '+c.grouping.groupBy+": "+g[c.grouping.groupBy]+"
    "),i.insertBefore(e),b=g[c.grouping.groupBy]}e.show()}),c.params[c.paramNames.groupBy]=c.grouping.groupBy,c.params[c.paramNames.groupByDirection]=c.grouping.direction},grouping:function(a,b){var c=a.data();b.sort(gj.grid.methods.createDefaultSorter(c.grouping.direction,c.grouping.groupBy))},createExpandCollapseHandler:function(a){return function(b){var c=$(this),d=gj.grid.plugins.grouping.private;"row"===c.closest("tr").next(":visible").data("role")?d.collapseGroup(a,c):d.expandGroup(a,c)}},collapseGroup:function(a,b){var c=b.children('div[data-role="display"]');b.closest("tr").nextUntil('[role="group"]').hide(),c.empty().append(a.icons.expandGroup)},expandGroup:function(a,b){var c=b.children('div[data-role="display"]');b.closest("tr").nextUntil('[role="group"]').show(),c.empty().append(a.icons.collapseGroup)}},public:{},configure:function(a){var b,c=a.data();$.extend(!0,a,gj.grid.plugins.grouping.public),c.grouping&&c.grouping.groupBy&&(b={title:"",width:c.defaultIconColumnWidth,align:"center",stopPropagation:!0,cssClass:"gj-cursor-pointer gj-unselectable"},c.columns=[b].concat(c.columns),a.on("initialized",function(){gj.grid.plugins.grouping.private.init(a)}),a.on("dataFiltered",function(b,c){gj.grid.plugins.grouping.private.grouping(a,c)}))}},gj.grid.messages["en-us"]={First:"First",Previous:"Previous",Next:"Next",Last:"Last",Page:"Page",FirstPageTooltip:"First Page",PreviousPageTooltip:"Previous Page",NextPageTooltip:"Next Page",LastPageTooltip:"Last Page",Refresh:"Refresh",Of:"of",DisplayingRecords:"Displaying records",RowsPerPage:"Rows per page:",Edit:"Edit",Delete:"Delete",Update:"Update",Cancel:"Cancel",NoRecordsFound:"No records found.",Loading:"Loading..."},gj.tree={plugins:{}},gj.tree.config={base:{params:{},autoLoad:!0,selectionType:"single",cascadeSelection:!1,dataSource:void 0,primaryKey:void 0,textField:"text",childrenField:"children",hasChildrenField:"hasChildren",imageCssClassField:"imageCssClass",imageUrlField:"imageUrl",imageHtmlField:"imageHtml",disabledField:"disabled",width:void 0,border:!1,uiLibrary:"materialdesign",iconsLibrary:"materialicons",autoGenId:1,autoGenFieldName:"autoId_b5497cc5-7ef3-49f5-a7dc-4a932e1aee4a",indentation:24,style:{wrapper:"gj-unselectable",list:"gj-list gj-list-md",item:void 0,active:"gj-list-md-active",leafIcon:void 0,border:"gj-tree-md-border"},icons:{expand:'',collapse:''}},bootstrap:{style:{wrapper:"gj-unselectable gj-tree-bootstrap-3",list:"gj-list gj-list-bootstrap list-group",item:"list-group-item",active:"active",border:"gj-tree-bootstrap-border"},iconsLibrary:"glyphicons"},bootstrap4:{style:{wrapper:"gj-unselectable gj-tree-bootstrap-4",list:"gj-list gj-list-bootstrap",item:"list-group-item",active:"active",border:"gj-tree-bootstrap-border"},icons:{expand:'',collapse:''}},materialicons:{style:{expander:"gj-tree-material-icons-expander"}},fontawesome:{style:{expander:"gj-tree-font-awesome-expander"},icons:{expand:'',collapse:''}},glyphicons:{style:{expander:"gj-tree-glyphicons-expander"},icons:{expand:'',collapse:''}}},gj.tree.events={initialized:function(a){a.triggerHandler("initialized")},dataBinding:function(a){a.triggerHandler("dataBinding")},dataBound:function(a){a.triggerHandler("dataBound")},select:function(a,b,c){return a.triggerHandler("select",[b,c])},unselect:function(a,b,c){return a.triggerHandler("unselect",[b,c])},expand:function(a,b,c){return a.triggerHandler("expand",[b,c])},collapse:function(a,b,c){return a.triggerHandler("collapse",[b,c])},enable:function(a,b){return a.triggerHandler("enable",[b])},disable:function(a,b){return a.triggerHandler("disable",[b])},destroying:function(a){return a.triggerHandler("destroying")},nodeDataBound:function(a,b,c,d){return a.triggerHandler("nodeDataBound",[b,c,d])}},gj.tree.methods={init:function(a){return gj.widget.prototype.init.call(this,a,"tree"),gj.tree.methods.initialize.call(this),this.data("autoLoad")&&this.reload(),this},initialize:function(){var a=this.data(),b=$('