src/WebBundle/Resources/views/Common/_user-icon-menu.html.twig line 1

Open in your IDE?
  1. {#
  2. @элементам списка с выпадающими списками при ховере присвоить атрибут data-hover-item
  3. @блоку с отображением количества присвоить атрибут data-count="{{ количество }}"
  4. @блок, в который вставляем присланный аяксом список, должен иметь атрибут role="insert-list"
  5. @необходимость отправки запроса определяем по data-list-load="false" (если true, то не отправлять, так как список уже загружен)
  6. @data-item-phrase - атрибут, в котором хранится текущая фраза, обозначающая количество элементов (item или items)
  7. #}
  8. <ul class="list-inline list-user-menu js-list-user-menu pull-right" data-user-menu>
  9.     {# профиль пользователя #}
  10.     {# элемент виден на мобильных устройствах #}
  11.     <li class="setting-item user-menu-item-mobile user-menu-item">
  12.         {# кнопка с иконкой профиля с выпадающим списком collapseRegTop #}
  13.         {% if user.alias is defined %}
  14.             <a class="navbar-toggle-reg collapsed m-l-n"
  15.                role="button"
  16.                data-toggle="collapse"
  17.                href="#collapseRegTop"
  18.                aria-expanded="false"
  19.             >
  20.                 <i class="material-icons">&#xE851;</i>
  21.             </a>
  22.         {% else %}
  23.             <a href="{{ path('app_login') }}">
  24.                 <i class="material-icons">&#xE8A6;</i>
  25.             </a>
  26.         {% endif %}
  27.         {# выпадающее меню пользователя (ссылка на профиль и логаут), или ссылки на регистрацию/авторизацию (при
  28.            клике на иконку профиля href="#collapseRegTop") иконка видна, когда не помещается имя пользователя #}
  29.         {% include '@Web/Common/dropdown-user-menu.html.twig' %}
  30.     </li>
  31.     {# показать попап с чатом для пользователя, который впервые зашел на сайт #}
  32.     {% set isRTWidget = useRTWidget() %}
  33.     {% set unreadCount = 0 %}
  34.     {% if not isRTWidget %}
  35.         {% set unreadCount = getUnreadCount() %}
  36.     {% endif %}
  37.     <!-- [debug] Initial unread count: {{ unreadCount }} -->
  38.     {% if true %} {# Оставляем возможность вкл/выкл для конкретный локалей #}
  39.         <li class="user-menu-item order-discus js-first-visit-discuss"
  40.             data-url="send/client/msg"
  41.             data-id-client="client_id"
  42.             data-close-url="{{ path('app_cookie_close_hello_message') }}"
  43.             data-hover-item
  44.         >
  45.             <a class="order-discus help-tooltip js-chat-button-link"
  46.                 id="chat-widget-btn"
  47.                 {% if not isRTWidget %}
  48.                     target="_blank"
  49.                     href="{{ path('app_chatb_chatbpage') }}"
  50.                 {% endif %}
  51.             >
  52.                 {% include '@Web/SVGIconsCode/chat.html.twig' with { 'unreadAll': unreadCount } %}
  53.             </a>
  54.             <div class="order-discus-block popup-block"
  55.                 data-no-new-messages-tooltip-text="{{ 'contacts.live_chat' | trans }}"
  56.                 data-new-messages-tooltip-text="{{ 'chat_unread_messages' | trans }}"
  57.             >
  58.                 {% if not isRTWidget and unreadCount > 0 %}
  59.                     {{ 'chat_unread_messages' | trans }}{% if unreadCount > 99 %}: {{ unreadCount }}{% endif %}
  60.                 {% else %}
  61.                     {{ 'contacts.live_chat' | trans }}
  62.                 {% endif %}
  63.             </div>
  64.         </li>
  65.     {% endif %}
  66.     {# просмотренные пользователем страницы #}
  67.     <li class="watch-menu user-menu-item hidden-xs" data-hover-item>
  68.         <meta name="urlSetHistory" content="{{ path('app_visit_save') }}" property="" />
  69.         <a class="watch help-tooltip{% if visitedAll > 0 %} active{% endif %}"
  70.             href="{{ path('visit') }}">
  71.             <i class="watch-added-to-project">
  72.                 {% include '@Web/SVGIconsCode/history_active.html.twig' %}
  73.             </i>
  74.             <i class="watch-not-added-to-project">
  75.                 {% include '@Web/SVGIconsCode/history_default.html.twig' %}
  76.             </i>
  77.             <span class="user-history-pages-count val" data-count="{{ visitedAll }}">{{ visitedAll }}</span>
  78.         </a>
  79.         <div class="watch-block popup-block popup-block-last-visits isEmptyList">
  80.             <div class='block-header'>
  81.                 <h5>
  82.                     <span class="title">{{ 'header_history' | trans }}</span>&nbsp;
  83.                     <a href="{{ path('visit') }}">
  84.                         (<span class="watch-count user-history-pages-count">{{ visitedAll }}</span>)
  85.                     </a>
  86.                 </h5>
  87.             </div>
  88.             <div class="block-watch-content"
  89.                  data-action="{{ path('app_visit_last') }}"
  90.                  role="insert-list"
  91.                  data-list-load="false"
  92.             >
  93.                 {#<div class="smallTimer"></div>#}
  94.             </div>
  95.         </div>
  96.     </li>
  97.     {# идеи пользователя #}
  98.     {# изменениe количества скрипт находит все [data-change-count], в зависимости
  99.        от [data-type-project], и изменяет количество в них #}
  100.     <li class="idea-menu user-menu-item" data-hover-item data-type-project="idea">
  101.         <a class="star idea-iorder help-tooltipnformer{% if ideas > 0 %} active{% endif %}"
  102.            {# onclick="yaCounter51021749.reachGoal('Мои идеи'); return true;"#}
  103.            href="{{ path('app_ideas') }}"
  104.         >
  105.             <i class="idea-added-to-project" id="logic_ideasInProjectIcon">
  106.                 {% include '@Web/SVGIconsCode/idea-added-top.html.twig' %}
  107.             </i>
  108.             <i class="idea-not-added-to-project" id="logic_noIdeasInProjectIcon">
  109.                 {% include '@Web/SVGIconsCode/idea-no-added-top.html.twig' %}
  110.             </i>
  111.             <span class="val ideas_count" id="logic_orderIdeasCount" data-change-count="{{ ideas }}">{{ ideas }}</span>
  112.             {# сообщение с иконкой и фразой, что элемент добавлен в проект #}
  113.             <div data-idea-add-block>
  114.                 <div class="icon-idea">
  115.                     <div class="sprite-idea-added"></div>
  116.                 </div>
  117.                 <div class="txt-idea js-txt" data-add="{{ 'header_Interior_added_to' | trans }}"
  118.                      data-del="{{ 'header_storage_ideas_del' | trans }}"
  119.                      data-move="{{ 'header_storage_ideas_move' | trans }}"
  120.                 ></div>
  121.                 <div class="arrow-add"></div>
  122.                 <div class="arrow-add-bg"></div>
  123.             </div>
  124.         </a>
  125.         <div class="{% if not app.user %}hidden{% endif %}">
  126.             {% if not app.user %}
  127.                 {% include '@Web/Common/_no-login-alert.html.twig' 
  128.                     with { 
  129.                         'class': 'no-login-block js-no-login-idea',
  130.                         'withAttentionHeader': false,
  131.                         'projectType': 'idea'
  132.                     } 
  133.                 %}
  134.             {% endif %}
  135.         </div>
  136.         <div class="idea-block hidden-xs popup-block isEmptyList">
  137.             <div class='block-header'>
  138.                 <h5>
  139.                     <span class="title">{{ 'idea_header_list' | trans }}</span>&nbsp;
  140.                     <span>(&nbsp;</span>
  141.                     <a class="count-ideas" href="#" data-change-count={{ ideas }} data-count="{{ ideas }}"> {{ ideas }} </a>
  142.                     <span> {{ ideas | caseString(['collection_interior', 'collection_interiors','collection_interiors']) | trans }} </span>
  143.                     <span>&nbsp;)</span>
  144.                 </h5>
  145.                 {# кнопка для добавления проекта идей #}
  146.                 {% include '@Web/Common/_addBtn.html.twig'
  147.                     with {
  148.                         'actionPath': path('app_idea_create', { name: '' }),
  149.                         'inputPlaceholder': 'idea_new_project' | trans,
  150.                     }
  151.                 %}
  152.             </div>
  153.             <div class="block-idea-content block-content"
  154.                  data-action="{{ path('app_ideas_last') }}"
  155.                  role="insert-list"
  156.                  data-list-load="false"
  157.             >
  158.                 {#<div class="smallTimer"></div>#}
  159.             </div>
  160.         </div>
  161.     </li>
  162.     {# заказы пользователя #}
  163.     {# изменение количества скрипт находит все [data-change-count], в зависимости
  164.        от [data-type-project], и изменяет количество в них #}
  165.     <li class="order-menu js-order-menu user-menu-item js-hovered-item" data-hover-item data-type-project="order">
  166.         {# специальный url для получения свойств артикула #}
  167.         <meta name="urlArticleInfo" content="{{ path('app_article_settings', {'id': 0}) }}" property="" />
  168.         {# >>> на случай приостановления приема заказов использовать закомментированный пример (напр. были остановки в UK https://te.remote.team/#/discus/06F82981-2F73-621D-A326-95E85F091B1A/ #}
  169.         {# {% if userCountry() == 'gb' %}
  170.             <a class="order help-tooltip" href="#" data-uk-stop>
  171.                 <i class="order-not-added-to-project">
  172.                     {% include '@Web/SVGIconsCode/cart_stop.html.twig' %}
  173.                 </i>
  174.             </a>
  175.             <div class="order-block popup-block temporary-stop" style="max-width: 200px; padding: 15px;">
  176.                 {{ 'msg.uk' | trans }}.
  177.                 <a href="{{ path('app_home') }}/blog/order-placement-with-delivery-to-the-uk-suspended" target="_blank">{{ 'article_item_more_info' | trans }}<a>
  178.             </div>
  179.         {% else %} #}
  180.         {% if userCountry() == 'ru' %}
  181.             {# https://te.remote.team/#/discus/7ED1B0D8-F44C-B99A-F47F-4E892406CC10/ #}
  182.             <a class="order help-tooltip" href="#" data-ru-stop>
  183.                 <i class="order-not-added-to-project">
  184.                     {% include '@Web/SVGIconsCode/cart_stop.html.twig' %}
  185.                 </i>
  186.             </a>
  187.             <div class="order-block popup-block temporary-stop" style="max-width: 200px; padding: 15px;">
  188.                 Поставки в Россию временно не осуществляются.
  189.             </div>
  190.         {% else %}
  191.             <a class="order{% if orderArticlesAll > 0 %} active{% endif %} help-tooltip"
  192.                 {#onclick="yaCounter51021749.reachGoal('Корзина'); return true;"#}
  193.                 href="{{ path('app_orders') }}"
  194.             >
  195.                 <i class="order-added-to-project" id="logic_ordersInProjectIcon">
  196.                     {% include '@Web/SVGIconsCode/cart_active.html.twig' %}
  197.                 </i>
  198.                 <i class="order-not-added-to-project" id="logic_noOrdersInProjectIcon">
  199.                     {% include '@Web/SVGIconsCode/cart_default.html.twig' %}
  200.                 </i>
  201.                 <span
  202.                     class="val"
  203.                     id="logic_orderArticlesCount"
  204.                     data-change-count={{ orderArticlesAll }}
  205.                 >
  206.                     {{ orderArticlesAll }}
  207.                 </span>
  208.                 {# сообщение с иконкой и фразой, что элемент добавлен в проект #}
  209.                 <div data-order-add-block>
  210.                     <div class="icon-order">
  211.                         <div class="sprite-order-added"></div>
  212.                     </div>
  213.                     <div class="txt-order js-txt"
  214.                          data-add="{{ 'header_order_add' | trans }}"
  215.                          data-del="{{ 'header_order_del' | trans }}"
  216.                     ></div>
  217.                     <div class="arrow-add"></div>
  218.                     <div class="arrow-add-bg"></div>
  219.                 </div>
  220.             </a>
  221.             {% set lang = userLocale() %}
  222.             <div class="order-block hidden-xs popup-block isEmptyList">
  223.                 <div class='block-header'>
  224.                     <h5>
  225.                         <span class='title'>{{ 'header_orders' | trans }}</span>&nbsp;
  226.                         <span>(&nbsp;</span>
  227.                         <a class="articles-count"
  228.                             href="{{ path('app_orders') }}"
  229.                             data-change-count={{ orderArticlesAll }}> {{ orderArticlesAll }} </a>
  230.                         <span id="aNameTrns"
  231.                                 data-item-phrase="{{ orderArticlesAll | declension(['order.article.count', 'order.article.counts','order.article.counts_d'], lang) | trans }}"
  232.                                 data-trans-count="{{ 'order.article.count' | trans }}"
  233.                                 data-trans-counts="{{ 'order.article.counts' | trans }}"
  234.                                 data-trans-counts-d="{{ 'order.article.counts_d' | trans }}"
  235.                         >
  236.                             {{ orderArticlesAll | declension(['order.article.count', 'order.article.counts','order.article.counts_d'], lang) | trans }}</span>
  237.                         <span>&nbsp;)</span>
  238.                         <span class="count-orders hidden" data-count="{{ ordersCount }}">{{ ordersCount }}</span>
  239.                     </h5>
  240.                     {# кнопка для добавления заказа #}
  241.                     {% include '@Web/Common/_addBtn.html.twig'
  242.                         with {
  243.                             'actionPath': path('app_buy_order_create'),
  244.                             'inputPlaceholder': 'buyOrder.name3' | trans,
  245.                         }
  246.                     %}
  247.                 </div>
  248.                 <div class="block-order-content block-content"
  249.                     data-action="{{ path('app_last_buy_orders') }}"
  250.                     role="insert-list"
  251.                     data-list-load="false"
  252.                 >
  253.                     {#<div class="smallTimer"></div>#}
  254.                 </div>
  255.             </div>
  256.         {% endif %} {# <<< на случай приприостановления приема заказов #}
  257.     
  258.         {# Попап в топ меню для корзины - предупреждение о необходимости
  259.           войти или зарегистрироваться для сохранения отобранного.
  260.         Скриптом блок будет клонираться в подсказку при добавлении артикула #}
  261.         {% if not app.user %}
  262.             <div
  263.                 id="order_no_login_alert"
  264.                 class="popup-block no-login-popup"
  265.             >
  266.                 {% include '@Web/Common/_no-login-alert.html.twig'
  267.                     with {
  268.                         'class': 'no-login-block js-no-login-order',
  269.                         'withAttentionHeader': true,
  270.                         'projectType': 'order'
  271.                     }
  272.                 %}
  273.             </div>
  274.         {% endif %}
  275.     </li>
  276. </ul>