Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
100.00% covered (success)
0 / 0
100.00% covered (success)
100.00%
0 / 0
CRAP
0.00% covered (danger)
0.00%
0 / 445
{#
This file is part of EC-CUBE
Copyright(c) 2000-2015 LOCKON CO.,LTD. All Rights Reserved.
http://www.lockon.co.jp/
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
#}
{% extends 'default_frame.twig' %}
{% set menus = ['product', 'product_edit'] %}
{% block title %}商品管理{% endblock %}
{% block sub_title %}商品登録{% endblock %}
{% form_theme form 'Form/bootstrap_3_horizontal_layout.html.twig' %}
{% block stylesheet %}
<link rel="stylesheet" href="{{ app.config.admin_urlpath }}/assets/css/fileupload/jquery.fileupload.css">
<link rel="stylesheet" href="{{ app.config.admin_urlpath }}/assets/css/fileupload/jquery.fileupload-ui.css">
<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/smoothness/jquery-ui.css">
<style>
    .ui-state-highlight {
        height: 148px;
        border: dashed 1px #ccc;
        background: #fff;
    }
</style>
{% endblock stylesheet %}
{% block javascript %}
<script src="{{ app.config.admin_urlpath }}/assets/js/vendor/fileupload/vendor/jquery.ui.widget.js"></script>
<script src="{{ app.config.admin_urlpath }}/assets/js/vendor/fileupload/jquery.iframe-transport.js"></script>
<script src="{{ app.config.admin_urlpath }}/assets/js/vendor/fileupload/jquery.fileupload.js"></script>
<script src="{{ app.config.admin_urlpath }}/assets/js/vendor/fileupload/jquery.fileupload-process.js"></script>
<script src="{{ app.config.admin_urlpath }}/assets/js/vendor/fileupload/jquery.fileupload-validate.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script>
<script>
$(function() {
    $("#thumb").sortable({
        cursor: 'move',
        opacity: 0.7,
        placeholder: 'ui-state-highlight',
        update: function (event, ui) {
            updateRank();
        }
    });
    {% if has_class == false %}
    if ($("#{{ form.class.stock_unlimited.vars.id }}").prop("checked")) {
        $("#{{ form.class.stock.vars.id }}").attr("disabled", "disabled").val('');
    } else {
        $("#{{ form.class.stock.vars.id }}").removeAttr("disabled");
    }
    $("#{{ form.class.stock_unlimited.vars.id }}").on("click change", function () {
        if ($(this).prop("checked")) {
            $("#{{ form.class.stock.vars.id }}").attr("disabled", "disabled").val('');
        } else {
            $("#{{ form.class.stock.vars.id }}").removeAttr("disabled");
        }
    });
    {% endif %}
    var proto_img = ''
            + '<li class="ui-state-default">'
            + '<img src="__path__" />'
            + '<a class="delete-image">'
            + '<svg class="cb cb-close">'
            + '<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#cb-close"></use>'
            + '</svg>'
            + '</a>'
            + '</li>';
    var proto_add = '{{ form_widget(form.add_images.vars.prototype) }}';
    var proto_del = '{{ form_widget(form.delete_images.vars.prototype) }}';
    {% for image in form.images %}
    var $img = $(proto_img.replace(/__path__/g, '{{ app.config.image_save_urlpath }}/{{ image.vars.value }}'));
    var $widget = $('{{ form_widget(image) }}');
    $widget.val('{{ image.vars.value }}');
    $("#thumb").append($img.append($widget));
    {% endfor %}
    {% for add_image in form.add_images %}
    var $img = $(proto_img.replace(/__path__/g, '{{ app.config.image_temp_urlpath }}/{{ add_image.vars.value }}'));
    var $widget = $('{{ form_widget(add_image) }}');
    $widget.val('{{ add_image.vars.value }}');
    $("#thumb").append($img.append($widget));
    {% endfor %}
    {% for delete_image in form.delete_images %}
    $("#thumb").append('{{ form_widget(delete_image) }}');
    {% endfor %}
    var hideSvg = function () {
        if ($("#thumb li").length > 0) {
            $("#icon_no_image").css("display", "none");
        } else {
            $("#icon_no_image").css("display", "");
        }
    };
    var updateRank = function () {
        $("#thumb li").each(function (index) {
            $(this).find(".rank_images").remove();
            filename = $(this).find("input[type='hidden']").val();
            $rank = $('<input type="hidden" class="rank_images" name="rank_images[]" />');
            $rank.val(filename + '//' + parseInt(index + 1));
            $(this).append($rank);
        });
    }
    hideSvg();
    updateRank();
    // 画像削除時
    var count_del = 0;
    $("#thumb").on("click", ".delete-image", function () {
        var $new_delete_image = $(proto_del.replace(/__name__/g, count_del));
        var src = $(this).prev().attr('src')
                .replace('{{ app.config.image_temp_urlpath }}/', '')
                .replace('{{ app.config.image_save_urlpath }}/', '');
        $new_delete_image.val(src);
        $("#thumb").append($new_delete_image);
        $(this).parent("li").remove();
        hideSvg();
        updateRank();
        count_del++;
    });
    var count_add = {{ form.add_images|length|default(0) }};
    $('#{{ form.product_image.vars.id }}').fileupload({
        url: "{{ url('admin_product_image_add') }}",
        type: "post",
        dataType: 'json',
        done: function (e, data) {
            $('#progress').hide();
            $.each(data.result.files, function (index, file) {
                var path = '{{ app.config.image_temp_urlpath }}/' + file;
                var $img = $(proto_img.replace(/__path__/g, path));
                var $new_img = $(proto_add.replace(/__name__/g, count_add));
                $new_img.val(file);
                $child = $img.append($new_img);
                $('#thumb').append($child);
                count_add++;
            });
            hideSvg();
            updateRank();
        },
        fail: function (e, data) {
            alert('アップロードに失敗しました。');
        },
        always: function (e, data) {
            $('#progress').hide();
            $('#progress .progress-bar').width('0%');
        },
        start: function (e, data) {
            $('#progress').show();
        },
        acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i,
        maxFileSize: 10000000,
        maxNumberOfFiles: 10,
        progressall: function (e, data) {
            var progress = parseInt(data.loaded / data.total * 100, 10);
            $('#progress .progress-bar').css(
                    'width',
                    progress + '%'
            );
        },
        processalways: function (e, data) {
            if (data.files.error) {
                alert("画像ファイルサイズが大きいか画像ファイルではありません。");
            }
        }
    });
    // 画像アップロード
    $('#file_upload').on('click', function () {
        $('#{{ form.product_image.vars.id }}').click();
    });
});
function fnConfirm(action) {
    document.form1.action = action;
    document.form1.submit();
}
function fnDelete(action) {
    if (confirm('この商品情報を削除しても宜しいですか?')) {
        document.form1.action = action;
        document.form1.submit();
    }
}
function fnCopy(action) {
    if (confirm('この商品情報を複製しても宜しいですか?')) {
        document.form1.action = action;
        document.form1.submit();
    }
}
function fnClass(action) {
    document.form1.action = action;
    document.form1.submit();
}
</script>
{% endblock javascript %}
{% block main %}
            <form role="form" name="form1" id="form1" method="post" action="" novalidate enctype="multipart/form-data">
            {{ form_widget(form._token) }}
            <div class="row" id="aside_wrap">
                <div id="detail_wrap" class="col-md-9">
                    <div id="detail_box" class="box form-horizontal">
                        <div id="detail_box__header" class="box-header">
                            <h3 class="box-title">基本情報</h3>
                        </div><!-- /.box-header -->
                        <div id="detail_box__body" class="box-body">
                            {# 商品ID #}
                            {% if Product.id %}
                                <div id="detail_box__id" class="form-group">
                                    <label class="col-sm-3 col-lg-2 control-label">商品ID</label>
                                    <div class="col-sm-9 col-lg-10 padT07">{{ Product.id }}</div>
                                </div>
                            {% endif %}
                            {{ form_row(form.name) }}
                            {% if has_class == false %}
                                {{ form_row(form.class.product_type, { attr : { class : 'form-inline  padT07' } } ) }}
                            {% endif %}
                            <div id="detail_box__image" class="form-group">
                                <label class="col-sm-2 control-label" for="admin_product_product_image">
                                    {{ form.product_image.vars.label }}<br>
                                    <span class="small">620px以上推奨</span>
                                </label>
                                <div id="detail_files_box" class="col-sm-9 col-lg-10">
                                    <div class="photo_files" id="drag-drop-area">
                                        <svg id="icon_no_image" class="cb cb-photo no-image"> <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#cb-photo"></use></svg>
                                        <ul id="thumb" class="clearfix"></ul>
                                    </div>
                                </div>
                            </div>
                            <div class="form-group marB30">
                                <div id="detail_box__file_upload" class="col-sm-offset-2 col-sm-9 col-lg-10 ">
                                    <div id="progress" class="progress progress-striped active" style="display:none;">
                                        <div class="progress-bar progress-bar-info"></div>
                                    </div>
                                    {{ form_widget(form.product_image, { attr : { accept : 'image/*', style : 'display:none;' } }) }}
                                    <a id="file_upload" class="with-icon">
                                        <svg class="cb cb-plus"> <use xlink:href="#cb-plus" /></svg>ファイルをアップロード
                                    </a>
                                </div>
                            </div>
                            <div id="detail_description_box" class="form-group">
                                {{ form_label(form.description_detail) }}
                                <div id="detail_description_box__detail" class="col-sm-9 col-lg-10">
                                    {{ form_widget(form.description_detail) }}
                                    <div id="detail_description_box__list" class="accordion marT15 marB20"><a id="detail_description_box__list_toggle" class="toggle with-icon"><svg class="cb cb-plus icon_plus"> <use xlink:href="#cb-plus" /></svg>一覧コメントを追加</a>
                                        <div class="accpanel padT08">
                                            {{ form_widget(form.description_list) }}
                                        </div>
                                    </div>
                                </div>
                            </div>
                            {% if has_class == false %}
                            <div id="detail_box__price" class="form-group">
                                {{ form_label(form.class.price02) }}
                                <div id="detail_box__price02" class="col-sm-3 col-lg-3">
                                    {{ form_widget(form.class.price02) }}
                                    {{ form_errors(form.class.price02) }}
                                    <div id="detail_box__price01" class="accordion marT15 marB20"><a class="toggle with-icon"><svg class="cb cb-plus icon_plus"> <use xlink:href="#cb-plus" /></svg>通常価格を追加</a>
                                        <div class="accpanel padT08">
                                            {{ form_widget(form.class.price01) }}
                                            {{ form_errors(form.class.price01) }}
                                        </div>
                                    </div>
                                </div>
                            </div>
                            <div id="detail_box__stock" class="form-group">
                                {{ form_label(form.class.stock) }}
                                <div class="col-sm-9 col-lg-10">
                                    <div class="row">
                                        <div id="detail_box__unlimited" class="col-xs-12 form-inline">
                                            {{ form_widget(form.class.stock) }}
                                            {{ form_errors(form.class.stock) }}
                                            {{ form_widget(form.class.stock_unlimited) }}
                                            {{ form_errors(form.class.stock_unlimited) }}
                                        </div>
                                    </div>
                                </div>
                            </div>
                            {% endif %}
                            <div id="detail_category_box" class="form-group">
                                {{ form_label(form.Category) }}
                                <div class="col-sm-9 col-lg-10">
                                    <div class="accordion marT05">
                                        <a id="detail_category_box__toggle" class="toggle with-icon"><svg class="cb cb-plus icon_plus"> <use xlink:href="#cb-plus" /></svg>カテゴリを選択</a>
                                        <div id="detail_category_box__list" class="accpanel padT08{% if form.Category.vars.valid == false %} has-error{% endif %}">
                                            {{ form_widget(form.Category) }}
                                            {{ form_errors(form.Category) }}
                                        </div>
                                    </div>
                                </div>
                            </div>
                            <div id="detail_tag_box" class="form-group">
                                {{ form_label(form.Tag) }}
                                <div class="col-sm-9 col-lg-10">
                                    <div class="accordion marT05">
                                        <a id="detail_tags_box__toggle" class="toggle with-icon"><svg class="cb cb-plus icon_plus"> <use xlink:href="#cb-plus" /></svg>{{ 'Tag'|trans }}を選択</a>
                                        <div id="detail_tags_box__list" class="accpanel padT08">
                                            {{ form_widget(form.Tag) }}
                                            {{ form_errors(form.Tag) }}
                                        </div>
                                    </div>
                                </div>
                            </div>
                            <div class="extra-form">
                                {% for f in form.getIterator %}
                                    {% if f.vars.name matches '[^plg*]' %}
                                        {{ form_row(f) }}
                                    {% endif %}
                                {% endfor %}
                            </div>
                        </div><!-- /.box-body -->
                    </div><!-- /.box -->
                    <div id="sub_detail_box" class="box accordion form-horizontal">
                        <div  id="sub_detail_box__toggle" class="box-header toggle">
                            <h3 class="box-title">詳細な設定<svg class="cb cb-angle-down icon_down"> <use xlink:href="#cb-angle-down" /></svg></h3>
                        </div><!-- /.box-header -->
                        <div id="sub_detail_box__body" class="box-body accpanel">
                            {% if has_class == false %}
                                {{ form_row(form.class.code) }}
                                {{ form_row(form.class.sale_limit) }}
                            {% endif %}
                            {{ form_row(form.search_word) }}
                            {% if has_class == false %}
                                {{ form_row(form.class.delivery_date) }}
                                {% if BaseInfo.option_product_delivery_fee %}
                                <div id="sub_detail_box__delivery_fee" class="form-group">
                                    {{ form_label(form.class.delivery_fee) }}
                                    <div class="col-sm-3 col-lg-3">
                                        {{ form_widget(form.class.delivery_fee) }}
                                    </div>
                                </div>
                                {% endif %}
                                {% if BaseInfo.option_product_tax_rule %}
                                <div id="sub_detail_box__tax_rate" class="form-group">
                                    {{ form_label(form.class.tax_rate) }}
                                    <div class="col-sm-3 col-lg-3">
                                        {{ form_widget(form.class.tax_rate) }}
                                    </div>
                                </div>
                                {% endif %}
                            {% endif %}
                        </div>
                    </div>
                    <div id="free_box" class="box accordion">
                        <div id="free_box__body_toggle" class="box-header toggle">
                            <h3 class="box-title">フリーエリア<svg class="cb cb-angle-down icon_down"> <use xlink:href="#cb-angle-down" /></svg></h3>
                        </div><!-- /.box-header -->
                        <div id="free_box__body" class="box-body accpanel">
                            {{ form_widget(form.free_area, {id: 'wysiwyg-area'}) }}
                        </div>
                    </div>
                    <div id="detail_box__footer" class="row hidden-xs hidden-sm">
                        <div class="col-xs-10 col-xs-offset-1 col-sm-6 col-sm-offset-3 text-center btn_area">
                            <p><a href="{{ url('admin_product_page', { page_no : app.session.get('admin.product.search.page_no')|default('1') } ) }}?resume=1">検索画面に戻る</a></p>
                        </div>
                    </div>
                </div><!-- /.col -->
                <div id="common_box" class="col-md-3">
                    <div class="col_inner" id="aside_column">
                        <div id="common_button_box" class="box no-header">
                            <div id="common_button_box__body" class="box-body">
                                <div id="common_button_box__status" class="row">
                                    <div class="col-xs-12">
                                        <div class="form-group">
                                            {{ form_widget(form.Status) }}
                                            {{ form_errors(form.Status) }}
                                        </div>
                                    </div>
                                </div>
                                <div id="common_button_box__insert_button" class="row text-center">
                                    <div class="col-sm-6 col-sm-offset-3 col-md-12 col-md-offset-0">
                                        <button type="submit" class="btn btn-primary btn-block btn-lg prevention-btn prevention-mask" >商品を登録</button>
                                    </div>
                                </div>
                                <div id="common_button_box__class_set_button" class="row text-center with-border">
                                    <div class="col-sm-6 col-sm-offset-3 col-md-12 col-md-offset-0">
                                        {% if id is null %}
                                            <button class="btn btn-default btn-block btn-sm" disabled>
                                                規格設定
                                            </button>
                                        {% else %}
                                            <button class="btn btn-default btn-block btn-sm" onclick="fnClass('{{ url('admin_product_product_class', { 'id' : id }) }}');return false;">
                                                規格設定
                                            </button>
                                        {% endif %}
                                    </div>
                                </div>
                                <div id="common_button_box__operation_button" class="row text-center with-border">
                                    <div class="col-sm-6 col-sm-offset-3 col-md-12 col-md-offset-0">
                                        <ul class="col-3">
                                            {% if id is null %}
                                                <li>
                                                    <button class="btn btn-default btn-block btn-sm" disabled>
                                                        確認
                                                    </button>
                                                </li>
                                                <li>
                                                    <button class="btn btn-default btn-block btn-sm" disabled>
                                                        複製
                                                    </button>
                                                </li>
                                                <li>
                                                    <button class="btn btn-default btn-block btn-sm" disabled>
                                                        削除
                                                    </button>
                                                </li>
                                            {% else %}
                                                <li>
                                                    <a class="btn btn-default btn-block btn-sm" href="{{ url('admin_product_product_display', {'id' : id}) }}" target="_blank">
                                                        確認
                                                    </a>
                                                </li>
                                                <li>
                                                    <a class="btn btn-default btn-block btn-sm" href="{{ url('admin_product_product_copy', {'id' : Product.id}) }}"  {{ csrf_token_for_anchor() }} data-method="post" data-message="この商品情報を複製してもよろしいですか?">
                                                        複製
                                                    </a>
                                                </li>
                                                <li>
                                                     <a class="btn btn-default btn-block btn-sm" href="{{ url('admin_product_product_delete', {'id' : Product.id}) }}" {{ csrf_token_for_anchor() }} data-method="delete" data-message="この商品情報を削除してもよろしいですか?">
                                                        削除
                                                    </a>
                                                </li>
                                            {% endif %}
                                        </ul>
                                    </div>
                                </div>
                            </div><!-- /.box-body -->
                        </div><!-- /.box -->
                        <div id="common_date_info_box" class="box no-header">
                            <div id="common_date_info_box__body" class="box-body update-area">
                                <p><svg class="cb cb-clock"> <use xlink:href="#cb-clock" /></svg>登録日:{{ Product.create_date|date_format }}</p>
                                <p><svg class="cb cb-clock"> <use xlink:href="#cb-clock" /></svg>更新日:{{ Product.update_date|date_format }}</p>
                            </div>
                        </div><!-- /.box -->
                        <div id="common_shop_note_box" class="box">
                            <div id="common_shop_note_box__header" class="box-header">
                                <h3 class="box-title">ショップ用メモ欄</h3>
                            </div><!-- /.box-header -->
                            <div id="common_shop_note_box__body" class="box-body">
                                {{ form_widget(form.note) }}
                            </div>
                        </div>
                    </div>
                </div><!-- /.col -->
            </div>
            </form>
{% endblock %}