templates/_paid_placements_right.html.twig line 1

Open in your IDE?
  1. {% set topProfile = profile_top_placement() %}
  2. <div class="col-2">
  3.     <div id="right_column_metric">
  4.     <div class="card mb-1">
  5.         <div class="card-header">ТОП-Девушка</div>
  6.         {% if topProfile %}
  7.             {% set photo = topProfile|avatar %}
  8.             {% if photo %}
  9.                 <img class="card-img-top" src="{{ asset(photo.path, photo.type == 'photo' ? 'profile_media' : 'profile_media_avatar') }}" alt="{{ topProfile.name }}">
  10.             {% endif %}
  11.             <div class="card-body">
  12.                 <a href="{{ path('profile_preview.page', {'city': topProfile.city.uriIdentity, 'profile': topProfile.uriIdentity}) }}">
  13.                     {{ topProfile.name }}
  14.                 </a>
  15.             </div>
  16.         {% else %}
  17.             <div class="card-body">
  18.                 <h5 class="card-title"><a href="{{ path('account.profile.top_placement') }}">Место свободно</a></h5>
  19.             </div>
  20.         {% endif %}
  21.     </div>
  22.     {#    {% for placement in profile_ultra_vip_placements() %}
  23.         {% set isProfile = attribute(placement, 'profile') is defined %}
  24.         {% set entity = isProfile ? placement.profile : placement.saloon %}
  25.         <div class="card mb-1 sidebar-ultra-vip-metric" data-ultravipid="{{ placement.id }}">
  26.             <div class="card-header">{{placement_name_ultra_vip()}}</div>
  27.             {% set photo = isProfile ? entity|avatar : entity.thumbnail %}
  28.             {% if photo %}
  29.                 {% if isProfile %}
  30.                     <img class="card-img-top" src="{{ asset(photo.path, photo.type == 'photo' ? 'profile_media' : 'profile_media_avatar') }}" alt="{{ entity.name }}">
  31.                 {% else %}
  32.                     <img class="card-img-top" src="{{ asset(photo.path, 'saloon_media_thumb') }}" alt="{{ entity.name }}">
  33.                 {% endif %}
  34.             {% endif %}
  35.             <div class="card-body">
  36.                 {% if isProfile %}
  37.                     <a href="{{ path('profile_preview.page', {'city': entity.city.uriIdentity, 'profile': entity.uriIdentity}) }}">
  38.                         {{ entity.name }}
  39.                     </a>
  40.                 {% else %}
  41.                     <a href="{{ path('saloon_preview.page', {'city': entity.city.uriIdentity, 'saloon': entity.uriIdentity}) }}">
  42.                         {{ entity.name }}
  43.                     </a>
  44.                 {% endif %}
  45.             </div>
  46.         </div>
  47.     {% endfor %}#}
  48.     <div id="first_ultra_vip_placement"></div>
  49.     {% for placement in profile_vip_placements() %}
  50.         {% set isProfile = attribute(placement, 'profile') is defined %}
  51.         {% set entity = isProfile ? placement.profile : placement.saloon %}
  52.         <div class="card mb-1">
  53.             <div class="card-header sidebar-vip-metric">VIP</div>
  54.             {% set photo = isProfile ? entity|avatar : entity.thumbnail %}
  55.             {% if photo %}
  56.                 {% if isProfile %}
  57.                     <img class="card-img-top" src="{{ asset(photo.path, photo.type == 'photo' ? 'profile_media' : 'profile_media_avatar') }}" alt="{{ entity.name }}">
  58.                 {% else %}
  59.                     <img class="card-img-top" src="{{ asset(photo.path, 'saloon_media_thumb') }}" alt="{{ entity.name }}">
  60.                 {% endif %}
  61.             {% endif %}
  62.             <div class="card-body">
  63.                 {% if isProfile %}
  64.                     <a href="{{ path('profile_preview.page', {'city': entity.city.uriIdentity, 'profile': entity.uriIdentity}) }}">
  65.                         {{ entity.name }}
  66.                     </a>
  67.                 {% else %}
  68.                     <a href="{{ path('saloon_preview.page', {'city': entity.city.uriIdentity, 'saloon': entity.uriIdentity}) }}">
  69.                         {{ entity.name }}
  70.                     </a>
  71.                 {% endif %}
  72.             </div>
  73.         </div>
  74.     {% endfor %}
  75.         <div id="rest_ultra_vip_placement"></div>
  76.     </div>
  77. </div>
  78. <script src="{{ asset('ajax.js', 'js_script') }}"></script>
  79. <script src="{{ asset('sidebar-extender.js', 'js_script') }}"></script>
  80. <script>
  81.     ;(function () {
  82.         document.addEventListener('DOMContentLoaded', function(){
  83.             // enlargeSidebar() - считает разницу в высоте основного контенкта и правой колонки
  84.             // !!! контейнеры колонок внутри обернул в div, по которым и считаю размер, т.к. внешние могут быть вытянуты до одинаковой высоты.
  85.             // для лейаута в 3 колонки - left_column_metric, center_column_metric, right_column_metric
  86.             // для лейаута в 2 колонки - main_column_metric, right_column_metric
  87.             // где right_column_metric - в контейнере самого сайдбара
  88.             // по принимаем параметрам SidebarExtender см. sidebar-extender.js
  89.             var sidebarEnlarger = enlargeSidebar();
  90.             function enlargeSidebar() {
  91.                 var leftColumn = document.querySelector('#left_column_metric');
  92.                 var centerColumn = document.querySelector('#center_column_metric');
  93.                 var rightColumn = document.querySelector('#right_column_metric');
  94.                 var mainColumn = document.querySelector('#main_column_metric');
  95.                 var maxHeight;
  96.                 if(leftColumn && centerColumn) {
  97.                     maxHeight = Math.max(leftColumn.scrollHeight, centerColumn.scrollHeight);
  98.                 } else if(mainColumn) {
  99.                     maxHeight = mainColumn.scrollHeight;
  100.                 } else {
  101.                     console.log('Cannot detect content height for sidebar');
  102.                     return;
  103.                 }
  104.                 var heightDiff = maxHeight - rightColumn.scrollHeight;
  105.                 if(heightDiff <= 0)
  106.                     return;
  107.                 //подставить нужное
  108.                 var ultraVipContainerHeight = 315; //,document.querySelector('.sidebar-ultra-vip-metric').scrollHeight,
  109.                 var verticalPadding = 5; //подставить нужное
  110.                 var toAdd = 0;
  111.                 if (heightDiff >= verticalPadding + ultraVipContainerHeight)
  112.                     toAdd = Math.floor(heightDiff / (verticalPadding + ultraVipContainerHeight));
  113.                 var genders = [{{ gender_female() }}, {{ gender_male() }}, {{ gender_trans() }}];
  114.                 let onlyProfile = null, onlyMasseur = null, onlySaloon = null;
  115.                 {% if 'profile_list.list_by_gender' in app.request.get('_route') %}
  116.                     {% if app.request.get('gender')|gender_value_by_uri == gender_male() %}
  117.                         genders = [{{ gender_male() }}];
  118.                         onlyProfile = true;
  119.                     {% elseif app.request.get('gender')|gender_value_by_uri == gender_trans() %}
  120.                         genders = [{{ gender_trans() }}];
  121.                         onlyProfile = true;
  122.                     {% endif %}
  123.                 {% elseif 'masseur_list.page' in app.request.get('_route') %}
  124.                     onlyMasseur = true;
  125.                 {% elseif 'saloon_list' in app.request.get('_route') %}
  126.                     onlySaloon = true;
  127.                 {% endif %}
  128.                 if(toAdd < 1)
  129.                     toAdd = 1; //для Сани
  130.                 var sidebarEnlarger = new SidebarExtender({
  131.                     toAdd: toAdd,
  132.                     restPlacementsContainer: document.querySelector('#rest_ultra_vip_placement'),
  133.                     {% set current_city = app.request.attributes.get('city', default_city()) %}
  134.                     ajaxUrl: '{{ path('api.sidebar.ultra_vip_list', {city:current_city.uriIdentity is defined ? current_city.uriIdentity : current_city, imageSize: '357x500'}) }}',
  135.                     genders: genders,
  136.                     onlyProfile: onlyProfile,
  137.                     onlyMasseur: onlyMasseur,
  138.                     onlySaloon: onlySaloon,
  139.                     exclude: [], //Array.prototype.slice.apply(document.querySelectorAll('[data-ultravipid]')).map(function(el) {return el.dataset['ultravipid'];}),
  140.                     template:
  141.                         '<div class="card mb-1 sidebar-ultra-vip-metric">\n' +
  142.                         '  <div class="card-header">Ultra VIP</div>\n' +
  143.                         '  <img class="card-img-top" src="%PHOTO%" alt="%NAME%">\n' +
  144.                         '  <div class="card-body">\n' +
  145.                         '    <a href="%URL%">\n' +
  146.                         '      %NAME%\n' +
  147.                         '    </a>\n' +
  148.                         '    %PRICE%\n' +
  149.                         '    %STATION%\n' +
  150.                         '    <div class="approved%APPROVED%">Verified</div>\n' +
  151.                         '    %PHONE%\n' +
  152.                         '  </div>\n' +
  153.                         '</div>'
  154.                 });
  155.                 //enlarge your sidebar
  156.                 sidebarEnlarger.extend();
  157.                 return sidebarEnlarger;
  158.             }
  159.         });
  160.     })();
  161. </script>