{% sw_extends '@Storefront/storefront/utilities/offcanvas.html.twig' %}
{% block utilities_offcanvas_content %}
{% block page_product_detail_review_container %}
{# TODO NEXT-16993 - replace items per list config value #}
{% set reviewsPerListPage = 10 %}
{# TODO NEXT-16994 - replace current list page value #}
{% set currentListPage = 1 %}
{% set productReviewCount = reviews.totalReviews %}
{% if productReviewCount > 0 %}
{% set productAvgRating = reviews.matrix.averageRating|round(2, 'common') %}
{% endif %}
{# TODO NEXT-16994 - replace language flag #}
{% set foreignReviewsCount = 150 %}
<div class="product-detail-review tab-pane-container">
{% block page_product_detail_review_tab_pane %}
<div class="row product-detail-review-content js-review-container">
{% block page_product_detail_review_aside %}
<div class="col-sm-4">
{% block page_product_detail_review_widget_container %}
{% sw_include '@Storefront/storefront/page/product-detail/review/review-widget.html.twig' %}
{% endblock %}
</div>
{% endblock %}
{% block page_product_detail_review_main %}
<div class="col product-detail-review-main js-review-content">
{% block page_product_detail_review_alert %}
{% if ratingSuccess == 1 %}
{% sw_include '@Storefront/storefront/utilities/alert.html.twig' with {
type: "success",
content: "detail.reviewFormSuccessAlert"|trans|sw_sanitize
} %}
{% elseif ratingSuccess == 2 %}
{% sw_include '@Storefront/storefront/utilities/alert.html.twig' with {
type: "success",
content: "detail.reviewFormSuccessUpdateAlert"|trans|sw_sanitize
} %}
{% elseif ratingSuccess == -1 %}
{% sw_include '@Storefront/storefront/utilities/alert.html.twig' with {
type: "danger",
content: "detail.reviewFormErrorAlert"|trans|sw_sanitize
} %}
{% endif %}
{% endblock %}
{% block page_product_detail_review_form_container %}
<div class="collapse multi-collapse{% if ratingSuccess == -1 %} show{% endif %}"
id="review-form">
{% if context.customer and not context.customer.guest %}
<div class="product-detail-review-form">
{% sw_include '@Storefront/storefront/page/product-detail/review/review-form.html.twig' %}
</div>
{% else %}
<div class="product-detail-review-login">
{% sw_include '@Storefront/storefront/page/product-detail/review/review-login.html.twig' %}
</div>
{% endif %}
</div>
{% endblock %}
{% block page_product_detail_review_list_container %}
<div id="review-list"
class="collapse multi-collapse product-detail-review-list{% if ratingSuccess != -1 %} show{% endif %}">
{% block page_product_detail_review_list %}
{% block page_product_detail_review_list_actions %}
<div class="row align-items-center product-detail-review-actions">
{% set formAjaxSubmitOptions = {
replaceSelectors: [".js-review-container"],
submitOnChange: true
} %}
{% block page_product_detail_review_list_action_language %}
<div class="col product-detail-review-language">
{% if foreignReviewsCount > 0 %}
<form class="product-detail-review-language-form"
action="{{ path('frontend.product.reviews', { productId: reviews.productId, parentId: reviews.parentId }) }}"
method="post"
data-form-ajax-submit="true"
data-form-ajax-submit-options='{{ formAjaxSubmitOptions|json_encode }}'>
{# @deprecated tag:v6.5.0 - Block page_product_detail_review_list_action_language_csrf will be removed. #}
{% block page_product_detail_review_list_action_language_csrf %}
{{ sw_csrf('frontend.product.reviews') }}
{% endblock %}
{% if app.request.get('limit') %}
<input type="hidden" name="limit" value="{{ app.request.get('limit') }}">
{% endif %}
{% if app.request.get('sort') %}
<input type="hidden" name="sort" value="{{ app.request.get('sort') }}">
{% endif %}
<div class="{{ formSwitchWrapperClass }}">
{# TODO NEXT-16994 - set checked and disabled state #}
<input type="checkbox"
class="{{ formCheckInputClass }}"
id="showForeignReviews"
value="filter-language"
name="language"
{% if app.request.get('language') %}checked="checked"{% endif %}>
<label class="custom-control-label form-label"
for="showForeignReviews">
<small>{{ "detail.reviewLanguageFilterLabel"|trans|sw_sanitize }}</small>
</label>
</div>
</form>
{% endif %}
</div>
{% endblock %}
{% block page_product_detail_review_list_action_sortby %}
{% if productReviewCount > 0 %}
<div class="col-12 col-md-auto product-detail-review-sortby">
{% set formAjaxSubmitOptions = {
replaceSelectors: [
".js-review-info",
".js-review-teaser",
".js-review-content"
],
submitOnChange: true
} %}
{% block page_product_detail_review_list_action_sortby_form %}
<form class="form-inline product-detail-review-sortby-form"
action="{{ path('frontend.product.reviews', { productId: reviews.productId, parentId: reviews.parentId }) }}"
method="post"
data-form-ajax-submit="true"
data-form-ajax-submit-options='{{ formAjaxSubmitOptions|json_encode }}'>
{# @deprecated tag:v6.5.0 - Block page_product_detail_review_list_action_sortby_form_csrf will be removed. #}
{% block page_product_detail_review_list_action_sortby_form_csrf %}
{{ sw_csrf('frontend.product.reviews') }}
{% endblock %}
{% if app.request.get('limit') %}
<input type="hidden" name="limit" value="{{ app.request.get('limit') }}">
{% endif %}
{% if app.request.get('language') %}
<input type="hidden" name="language" value="{{ app.request.get('language') }}">
{% endif %}
{% if app.request.get('points') %}
{% for points in app.request.get('points') %}
<input type="hidden" name="points[]" value="{{ points }}">
{% endfor %}
{% endif %}
{% block page_product_detail_review_list_action_sortby_label %}
<label class="form-label product-detail-review-sortby-label"
for="reviewsSortby">
<small>{{ "detail.reviewSortLabel"|trans|sw_sanitize }}</small>
</label>
{% endblock %}
{% block page_product_detail_review_list_action_sortby_select %}
<select class="{{ formSelectClass }} {{ formSelectClass }}-sm"
name="sort"
id="reviewsSortby">
<option value="createdAt"{% if reviews.criteria.sorting.0.field == 'createdAt' %} selected{% endif %}>
{{ "detail.reviewSortNewLabel"|trans|sw_sanitize }}
</option>
<option value="points"{% if reviews.criteria.sorting.0.field== 'points' %} selected{% endif %}>
{{ "detail.reviewSortTopRatedLabel"|trans|sw_sanitize }}
</option>
</select>
{% endblock %}
</form>
{% endblock %}
</div>
{% endif %}
{% endblock %}
</div>
<hr/>
{# TODO NEXT-16994 - calculate reviews in current language in list #}
{% set listReviewsCount = productReviewCount - foreignReviewsCount %}
{# TODO NEXT-16994 - fix if reviews in foreign language are more than in customer language #}
{% if listReviewsCount < 0 %}
{% set listReviewsCount = 0 %}
{% endif %}
<p class="text-right product-detail-review-counter">
{% if (listReviewsCount > 1 and listReviewsCount > reviewsPerListPage) %}
<small><strong>{{ currentListPage }}</strong> - <strong>{{ reviewsPerListPage }}</strong> {{ "detail.reviewCountBefore"|trans|sw_sanitize }} <strong>{{ listReviewsCount }}</strong> {{ "detail.reviewCountAfter"|trans({'%count%': listReviewsCount })|sw_sanitize }}</small>
{% elseif listReviewsCount > 0 %} {# TODO (NEXT-16994) fix detail.reviewCountAfter snippet for listReviewsCount = 0#}
<small><strong>{{ listReviewsCount }}</strong> {{ "detail.reviewCountAfter"|trans({'%count%': listReviewsCount })|sw_sanitize }}</small>
{% endif %}
</p>
{% endblock %}
{% block page_product_detail_review_list_content %}
{% for review in reviews %}
<div class="product-detail-review-list-content">
{% sw_include '@Storefront/storefront/page/product-detail/review/review-item.html.twig' %}
</div>
{% endfor %}
{% endblock %}
{% block page_product_detail_review_list_paging %}
{% set criteria = reviews.criteria %}
{% set totalPages = (productReviewCount/criteria.limit)|round(0,'ceil') %}
{% if totalPages > 1 %}
{% set formAjaxSubmitOptions = {
replaceSelectors: ".js-review-container",
submitOnChange: true
} %}
{% block page_product_detail_review_list_paging_form %}
<div class="product-detail-review-pagination">
<form class="product-detail-review-pagination-form"
action="{{ path('frontend.product.reviews', { productId: reviews.productId, parentId: reviews.parentId }) }}"
method="post"
data-form-ajax-submit="true"
data-form-ajax-submit-options='{{ formAjaxSubmitOptions|json_encode }}'>
{# @deprecated tag:v6.5.0 - Block page_product_detail_review_list_paging_csrf will be removed. #}
{% block page_product_detail_review_list_paging_csrf %}
{{ sw_csrf('frontend.product.reviews') }}
{% endblock %}
{% if app.request.get('limit') %}
<input type="hidden" name="limit" value="{{ app.request.get('limit') }}">
{% endif %}
{% if app.request.get('language') %}
<input type="hidden" name="language" value="{{ app.request.get('language') }}">
{% endif %}
{% if app.request.get('sort') %}
<input type="hidden" name="sort" value="{{ app.request.get('sort') }}">
{% endif %}
{% if app.request.get('points') %}
{% for points in app.request.get('points') %}
<input type="hidden" name="points[]" value="{{ points }}">
{% endfor %}
{% endif %}
{% sw_include '@Storefront/storefront/component/pagination.html.twig' with {
entities: reviews,
criteria: criteria,
total: productReviewCount,
} %}
</form>
</div>
{% endblock %}
{% endif %}
{% endblock %}
{% endblock %}
{% if productReviewCount <= 0 %}
{% block page_product_detail_review_list_empty %}
{% sw_include '@Storefront/storefront/utilities/alert.html.twig' with {
type: "info",
content: "detail.reviewListEmpty"|trans|sw_sanitize
} %}
{% endblock %}
{% endif %}
</div>
{% endblock %}
</div>
{% endblock %}
</div>
{% endblock %}
</div>
{% endblock %}
{% endblock %}