{% extends 'admin/@layout.html.twig' %} {% set pageName = 'page_name_product_update'|trans({}, 'admin') %} {% block rich_editor %} {% set downloadScript = true %} {{ parent() }} {% endblock %} {% block content %} {{ form_start(form) }}
{% if isDuplication %} {% else %} {% endif %}
{{ _self.productInfoPanel(product, form, mutations, weightType) }}
{{ _self.showTranslationCard(form.productTranslations) }}
{{ _self.showTranslationCard(form.seoTranslations) }}
{{ _self.showProductImageCard(form.productImages, form.images) }}
{{ _self.showProductVariantCard(product.productVariants, variants, product.productVariants|first, product, possibleVariantValues, availableUnits) }}
{{ _self.showProductParameterCard(form.productParameters, parameters, groupedValues, product) }}
{{ _self.showProductCategoryCard(categories, savedCategories) }}
{# Další hack k vykreslování productVariants 2x #} {# render_reset tomu zabání, ale musí se manuálně vykreslit token. #} {# #} {# TODO: přijít na to zabránit dvojímu vykreslení formulářového prvku. #} {{ form_widget(form._token) }} {{ form_end(form, {'render_rest': false}) }} {% endblock %} {% macro showTranslationCard(productTranslations) %} {% for translationField in productTranslations %} {% set locale = translationField.vars.value.locale %}
{% for field in translationField|filter(field => field.vars.name != 'tax') %} {% if locale == shop.defaultMutation.code and field.vars.name == 'name' %} {{ form_row(field, {'attr': {'data-action': 'product-editor#changeName'}}) }} {% else %} {{ form_row(field) }} {% endif %} {% endfor %}
{% endfor %} {% endmacro %} {% macro showProductImageCard(productImages, formImages) %} {% if productImages|length %}
{% for productImage in productImages %}
{{ productImage.vars.value.file }}
{{ form_row(productImage) }}
{% endfor %}
{% endif %} {% endmacro %} {% macro productInfoPanel(product, form, mutations, weightType) %}
{{ 'help_main_image'|trans({}, 'admin') }}
{{ form_label(form.code) }}
{{ form_widget(form.code) }}
{{ form_label(form.price) }}
{{ form_widget(form.price) }}
{{ form_label(form.inStock) }}
{{ form_widget(form.inStock) }}
{{ form_label(form.panelPurchasePrice) }}
{{ form_widget(form.panelPurchasePrice) }}
{{ form_label(form.panelUnit) }}
{{ form_widget(form.panelUnit) }}
{{ form_label(form.ean) }}
{{ form_widget(form.ean) }} {{ form_errors(form.ean) }}
{{ form_label(form.weight) }}
{{ form_widget(form.weight) }} {{ weightType }}
{% if shop.taxPayer %}
{{ 'dt.columns.tax'|trans({}, 'admin') }}
{% for translationFields in form.productTranslations %} {% for field in translationFields|filter(field => field.vars.name == 'tax') %}
{{ form_widget(field) }}
{% endfor %} {% endfor %}
{% endif %}
{{ form_row(form.isVariantProduct) }}
{{ form_row(form.toSell) }}
{{ form_row(form.isEnabled) }}
{% endmacro %} {% macro showProductVariantCard(productVariants, variants, firstProductVariant, product, possibleVariantValues, availableUnits) %} {% set variantsAreSet = productVariants|length %}
{{ 'allowed_variants'|trans({}, 'admin') }}
{% for variantValue in product.enabledVariantValues %} {% endfor %}

{{ _self.showPossibleVariantValues(possibleVariantValues, product.enabledVariantValues) }} {% if not variants|length %} {{ component('alert', { type: 'info', message: ('alert_variants_not_found'|trans({'{path}': path('admin_variant_index')}, 'admin')) }) }} {% endif %} {% if not variantsAreSet %}
{{ component('alert', { type: 'info', message: ('alert_product_variants_not_found'|trans({}, 'admin')) }) }}
{% endif %}
{{ _self.variantRowTemplate(availableUnits, product) }}
{% for productVariant in productVariants %} {{ _self.variantRowTemplate(availableUnits, product, productVariant) }} {% endfor %}
{{ 'dt.columns.combination'|trans({}, 'admin') }} {{ 'dt.columns.image'|trans({}, 'admin') }} {{ 'dt.columns.extraCharge'|trans({}, 'admin') }} {{ 'dt.columns.inStock'|trans({}, 'admin') }} {{ 'dt.columns.unit'|trans({}, 'admin') }}
{% endmacro %} {% macro variantRowTemplate(availableUnits, product, productVariant = null) %} {% set variantId = productVariant ? productVariant.id : 'rand_' ~ random(50, 1000) %} {% set variantName = productVariant ? productVariant.id : '___name___' %} {% set isPrototype = not productVariant %} {{ productVariant ? productVariant.combinationsNames(shop.currentLocale)|join(' > ') : '' }}
{{ shop.currentCurrency }}
--- {% endmacro %} {% macro showPossibleVariantValues(possibleVariantValues, enabledVariantValues) %}
{% set variantName = null %} {% for variantValue in possibleVariantValues %} {% if variantName != variantValue.variant.translation(shop.defaultMutation.code).name %} {% set variantName = variantValue.variant.translation(shop.defaultMutation.code).name %} {% set endGroup = true %}
{{ variantName }}: {{ _self.showVariantValueButtons(variantValue.variant.id, possibleVariantValues, enabledVariantValues) }}
{% endif %} {% endfor %}
{% endmacro %} {% macro showVariantValueButtons(filterId, possibleVariantValues, enabledVariantValues) %} {% for variantValue in possibleVariantValues %} {% if filterId == variantValue.variant.id %} {% endif %} {% endfor %} {% endmacro %} {% macro showProductParameterCard(formParameters, parameters, groupedValues, product) %} {% if not parameters|length %} {{ component('alert', { type: 'info', message: ('alert_parameters_not_found'|trans({'{path}': path('admin_parameter_index')}, 'admin')) }) }} {% endif %}
{% if not formParameters.children|length %} {{ component('alert', { type: 'info', message: ('alert_product_parameters_not_found'|trans({}, 'admin')) }) }} {% endif %} {% set alreadySet = [] %} {% for key, productParameter in formParameters.children %} {% set parameterId = productParameter.vars.value.parameterValue.parameter.id %} {% set alreadySet = alreadySet|merge([parameterId]) %} {% endfor %}
{{ 'dt.columns.parameter'|trans({}, 'admin') }} {{ 'dt.columns.value'|trans({}, 'admin') }}
{{ productParameter.vars.value.parameterValue.parameter.translation(shop.defaultMutation.code).name }} {{ form_errors(productParameter.parameterValue) }} {{ form_widget(productParameter.parameterValue) }}
{% for parameterId, parameterValues in groupedValues %} {% endfor %}
{% endmacro %} {% macro showProductCategoryCard(categories, savedCategories) %} {% if not categories|length %} {{ component('alert', { type: 'info', message: ('alert_categories_not_found'|trans({'{path}': path('admin_category_index')}, 'admin')) }) }} {% endif %}
{{ _self.showCategoryBranch(categories, savedCategories, true) }}
{% endmacro %} {% macro showCategoryBranch(categories, savedCategories) %} {% if categories|length %}
    {% for category in categories %}
  • {% if category.children|length %} {{ _self.showCategoryBranch(category.children, savedCategories) }} {% endif %}
  • {% endfor %}
{% endif %} {% endmacro %}