templates/materials/material.html.twig line 1

Open in your IDE?
  1. {% extends 'base.html.twig' %}
  2. {% use "shared/related_content.html.twig" %}
  3. {% use "shared/media_partners.html.twig" %}
  4. {% use "shared/contact_manufacturer.html.twig" %}
  5. {% use "shared/contact_manufacturer_dialog.html.twig" %}
  6. {% block meta_description %}{{material.title.es}}{% endblock %}
  7. {% block meta_title %}{{material.title.es}}{% endblock %}
  8. {% block head %}
  9. <link rel="stylesheet" href="{{ asset('assetsv2/css/card.min.css') }}">
  10. <link rel="stylesheet" href="{{ asset('assetsv2/css/scroll.min.css') }}">
  11. <link rel="stylesheet" href="{{ asset('assetsv2/css/breadcrumbs.min.css') }}">
  12. <link rel="stylesheet" href="{{ asset('assetsv2/css/material-buttons.min.css') }}">
  13. <link rel="stylesheet" href="{{ asset('assetsv2/css/material-expansionpanel.min.css') }}">
  14. <link rel="stylesheet" href="{{ asset('assetsv2/css/gallery.min.css') }}">
  15. <link rel="stylesheet" href="{{ asset('assetsv2/css/material.min.css') }}">
  16. <link rel="stylesheet" href="{{ asset('assetsv2/css/lightbox.min.css') }}" media="none" onload="if(media!='all')media='all'">
  17. <noscript><link rel="stylesheet" href="{{ asset('assetsv2/css/lightbox.min.css') }}"></noscript>
  18. {{ block('related_assets') }}
  19. {{ block('mediapartners_assets') }}
  20. {% if user or material.manufacturerVisibility %}
  21.   {{ block('contactmanufacturer_assets') }}
  22. {% else %}
  23.   {{ block('contactmanufacturerdialog_assets') }}
  24. {% endif %}
  25. <script async src="https://securepubads.g.doubleclick.net/tag/js/gpt.js"></script>
  26. <script>
  27.   window.googletag = window.googletag || {cmd: []};
  28.   // GPT slots
  29.   var adSlot1;
  30.   googletag.cmd.push(function() {
  31.     // Banner sidebar
  32.     adSlot1 = googletag.defineSlot('/84917965/skyscraper180x600OK',[[180, 600], [120, 600]],'skyscraper180x600OK_block').addService(googletag.pubads());
  33.     // Configure SRA
  34.     googletag.pubads().enableSingleRequest();
  35.     // Start ad fetching
  36.     googletag.enableServices();
  37.   });
  38. </script>
  39. {% endblock %}
  40. {% block scripts_body %}
  41. <script src="{{ asset('assetsv2/js/lightbox.min.js') }}"></script>
  42. <script src="{{ asset('assetsv2/js/jquery.lazyload.min.js') }}"></script>
  43. <script>
  44.   $(function(){
  45.     {# $('#bildiaFloat').fadeIn('slow'); #}
  46.     $( ".material-detail .description img" ).wrap(function() {
  47.       return '<a href="'+$(this).attr('src')+'" data-lightbox="description" data-title=""></a>';
  48.     });
  49.     lightbox.option({'albumLabel': 'Imagen %1 de %2'});
  50.     $( ".material-detail .description img" ).each(function(){
  51.       $(this).attr('data-src',$(this).attr('src'));
  52.       $(this).attr('src',"{{asset('assetsv2/img/white.gif')}}");
  53.       $(this).addClass('lazyload');
  54.     });
  55.     lazyload();
  56.   });
  57.   function toggleBookmark(el){
  58.     {% if user %}
  59.     if($(el).hasClass('active')){
  60.       $.ajax({
  61.         type: "DELETE",
  62.         url: '{{api_url}}bookmark/{{material.id}}',
  63.         beforeSend: function (xhr) {
  64.           xhr.setRequestHeader("Authorization", 'Bearer {{user.token}}');
  65.         }
  66.       }).done(function (response) {
  67.         //$(el).removeClass('active').html('<i class="material-icons"> bookmark_border </i>');
  68.         $(el).removeClass('active').html('<i class="material-icons"> bookmark_border </i><span>GUARDAR</span>');
  69.       }).fail(function (err)  {
  70.       });
  71.     }else{
  72.       $.ajax({
  73.         type: "POST",
  74.         url: '{{api_url}}bookmark/',
  75.         data: '{"content":"{{material.id}}"}',
  76.         contentType: "text/plain;charset=UTF-8",
  77.         beforeSend: function (xhr) {
  78.           xhr.setRequestHeader("Authorization", 'Bearer {{user.token}}');
  79.         }
  80.       }).done(function (response) {
  81.         //$(el).addClass('active').html('<i class="material-icons"> bookmark </i>');
  82.         $(el).addClass('active').html('<i class="material-icons"> bookmark </i><span>GUARDADO</span>');
  83.       }).fail(function (err)  {
  84.       });
  85.     }
  86.     {% else %}
  87.     window.location.href = "/login/";
  88.     return;
  89.     {% endif %}
  90.   }
  91. </script>
  92. {{ block('related_scripts') }}
  93. {% if user or material.manufacturerVisibility %}
  94.   {{ block('contactmanufacturer_scripts') }}
  95. {% else %}
  96.   {{ block('contactmanufacturerdialog_scripts') }}
  97. {% endif %}
  98. {#
  99. <div id="bildiaFloat">
  100.   <p class="text-right">
  101.     <i class="material-icons" onclick="$('#bildiaFloat').fadeOut();"> close </i>
  102.   </p>
  103.   <p class="text-center custom-margin">
  104.     <img src="{{ asset('assetsv2/img/logos/logo_bildia_tectonica.jpg') }}" alt="">
  105.   </p>
  106.   <p class="text-center pc-only">
  107.     ¡Hola!
  108.   </p>
  109.   <p class="text-center custom-margin pc-only">
  110.     ¿Necesitas un presupuesto?
  111.   </p>
  112.   <p class="text-center pc-only">
  113.     <a class="boton" href="https://bildia.com/#modal-presupuesto-directo" title="Contáctanos">CONTÁCTANOS</a>
  114.   </p>
  115.   <p class="text-center mobile-only">
  116.     <a class="boton" href="https://bildia.com/#modal-presupuesto-directo" title="Contáctanos">¿NECESITAS UN PRESUPUESTO?</a>
  117.   </p>
  118. </div>
  119. #}
  120. {% endblock %}
  121. {% block body %}
  122. <div class="material-detail">
  123.   <div class="header" {% if material.headerImage %} style="background: url('{{material.headerImage.url}}') no-repeat;" {% endif %}>
  124.     <div class="mask"></div>
  125.     <div class="container h-100">
  126.       <div class="row h-100">
  127.         <div class="col-10 d-flex align-items-end">
  128.           <div class="content">
  129.             <h1 class="title">{{material.title.es}}</h1>
  130.             <h2 class="author">{{material.category.0.name}}</h2>
  131.           </div>
  132.         </div>
  133.         <div class="col-2 d-flex align-items-end justify-content-end">
  134.           {% if material.createdByTectonica %}
  135.           <div class="logo">
  136.             <img src="assetsv2/img/logos/logo-mbl.png" alt="">
  137.           </div>
  138.           {% endif %}
  139.         </div>
  140.       </div>
  141.     </div>
  142.   </div>
  143.   <div class="action-panel">
  144.     <div class="container">
  145.       <div class="row">
  146.         <div class="col-12 col-sm-8 breadcrumbs">
  147.           {% if material.breadcrumb %}
  148.             {% if material.breadcrumb.children.0 is not defined %}
  149.               <a href="{{absolute_url('/search/?section=' ~ material.breadcrumb.id ~ '&entity=4')|add_ssl}}" title="{{material.breadcrumb.name}}"><span class="c-pointer active">{{material.breadcrumb.name}}</span></a>
  150.             {% else %}
  151.               <a href="{{absolute_url('/search/?section=' ~ material.breadcrumb.id ~ '&entity=4')|add_ssl}}" title="{{material.breadcrumb.name}}"><span class="c-pointer">{{material.breadcrumb.name}} /</span></a>
  152.               {% set category = material.breadcrumb %}
  153.               {% for i in 0..10 if category.children.0 is defined %}
  154.                 {% set category_name = category.children.0.name  %}
  155.                 {% set category_id = category.children.0.id %}
  156.                 {% set category = category.children.0 %}
  157.                 {% if(category.children.0 is defined) %}
  158.                   <a href="{{absolute_url('/search/?section=' ~ category_id ~ '&entity=4')|add_ssl}}" title="{{category_name}}"><span class="c-pointer">{{category_name}} /</span></a>
  159.                 {% else %}
  160.                   <a href="{{absolute_url('/search/?section=' ~ category_id ~ '&entity=4')|add_ssl}}" title="{{category_name}}"><span class="c-pointer active">{{category_name}}</span></a>
  161.                 {% endif %}
  162.               {% endfor %}
  163.             {% endif %}
  164.           {% endif %}
  165.         </div>
  166.         <div class="col-12 col-sm-4 icons text-right">
  167.           <!---->
  168.           <!---->
  169.           {# TODO: share #}
  170.           {#<button mat-icon-button="" class="mat-icon-button"><span class="mat-button-wrapper"><mat-icon class="mat-icon material-icons" role="img" aria-hidden="true">share</mat-icon></span>
  171.             <div class="mat-button-ripple mat-ripple mat-button-ripple-round" matripple=""></div>
  172.             <div class="mat-button-focus-overlay"></div>
  173.           </button>#}
  174.           {% if not user or not material.bookmark %}
  175.             {#<!----><div class="bookmark" onclick="toggleBookmark(this);"><i class="material-icons"> bookmark_border </i></div>#}
  176.             <!----><div class="bookmark" onclick="toggleBookmark(this);">
  177.               <i class="material-icons"> bookmark_border </i><span>GUARDAR</span>
  178.             </div>
  179.             {% else %}
  180.             {#<!----><div class="bookmark active" onclick="toggleBookmark(this);"><i class="material-icons"> bookmark </i></div>#}
  181.             <!----><div class="bookmark active" onclick="toggleBookmark(this);">
  182.               <i class="material-icons"> bookmark </i><span>GUARDADO</span>
  183.             </div>
  184.           {% endif %}
  185.         </div>
  186.       </div>
  187.     </div>
  188.   </div>
  189.   <div class="content py-5">
  190.     <div class="container">
  191.       <div class="row">
  192.         <div class="col-12 col-sm-8">
  193.           {% if user or material.manufacturerVisibility %}
  194.             {% with { 'item': material.company, 'material': true } %}
  195.               {{ block('contactmanufacturer_content') }}
  196.             {% endwith %}
  197.           {% else %}
  198.             {% with { 'item': material.company, 'material': true } %}
  199.               {{ block('contactmanufacturerdialog_content') }}
  200.             {% endwith %}
  201.           {% endif %}
  202.           <div class="mt-3 description">
  203.             {{material.description.es | raw}}
  204.           </div>
  205.           {% if material.descriptionSubscribers.es %}
  206.             <div class="description mt-3">
  207.               {% if user and not user.isFreeUser %}
  208.                 {{material.descriptionSubscribers.es | raw}}
  209.               {% else %}                
  210.                 <button class="btn btn-secondary mt-3" onclick="$('#private-content').modal();">
  211.                   VER MATERIAL COMPLETO
  212.                 </button>
  213.               {% endif %}
  214.             </div>
  215.           {% endif %}
  216.           {% if material.videos|length > 0 %}
  217.           <div class="video mt-4">
  218.               {% for video in material.videos %}
  219.               <div>
  220.                 <div class="embed-responsive-16by9 my-2">
  221.                   {{video|raw}}
  222.                 </div>
  223.               </div>
  224.               {% endfor %}
  225.           </div>
  226.           {% endif %}
  227.         </div>
  228.         <div class="col-12 col-sm-4">
  229.           {# https://material.angular.io/components/expansion/api #}
  230.           <mat-accordion class="mat-accordion">
  231.             {% if material.documents|length > 0 %}
  232.             <mat-expansion-panel class="mat-expansion-panel mat-expanded">{# TODO: condicion expanded #}
  233.               <mat-expansion-panel-header class="mat-expansion-panel-header">
  234.                 <span class="mat-content">
  235.                   <mat-panel-title class="mat-panel-title mat-expansion-panel-header-title">
  236.                     Descargas
  237.                   </mat-panel-title>
  238.                 </span>
  239.                 <span class="mat-expansion-indicator" style="transform: rotate(0deg);"></span>
  240.               </mat-expansion-panel-header>
  241.               <div class="mat-expansion-panel-content mat-expanded">
  242.                 <div class="mat-expansion-panel-body">
  243.                   <div class="panel-content">
  244.                     {% for doc in material.documents %}                      
  245.                       <div class='d-flex align-items-center'>
  246.                         {% if doc.subscribersOnly == true and (not user or user.isFreeUser) or not user %}
  247.                           <i class="material-icons">lock</i>
  248.                         {% else %}
  249.                           <i class="material-icons">attachment</i>
  250.                         {% endif %}
  251.                         {% if doc.url %}
  252.                           {% if doc.subscribersOnly == true and (not user or user.isFreeUser) %}
  253.                             <a class="aligned-with-icon" href="javascript:void(0);" onclick="$('#private-content').modal();">{{doc.name}}</a>
  254.                           {% elseif not user %}
  255.                             <a class="aligned-with-icon" href="javascript:void(0);" onclick="$('#registered-content').modal();">{{doc.name}}</a>
  256.                           {% else %}
  257.                             <a class="aligned-with-icon" target="_blank" href="{{doc.url}}">{{doc.name}}</a>
  258.                           {% endif %}
  259.                         {% elseif doc.name %}
  260.                           {% if doc.subscribersOnly == true and (not user or user.isFreeUser) %}
  261.                             <a class="aligned-with-icon" href="javascript:void(0);" onclick="$('#private-content').modal();">{{doc.name}}</a>
  262.                           {% elseif not user %}
  263.                             <a class="aligned-with-icon" href="javascript:void(0);" onclick="$('#registered-content').modal();">{{doc.name}}</a>
  264.                           {% else %}
  265.                             <a class="aligned-with-icon" target="_blank" href="{{doc.name}}">{{doc.name}}</a>
  266.                           {% endif %}
  267.                         {% endif %}
  268.                       </div>
  269.                     {% endfor %}
  270.                   </div>
  271.                 </div>
  272.               </div>
  273.             </mat-expansion-panel>
  274.             {% endif %}
  275.             {% if material.dealers|length > 0 %}
  276.             <mat-expansion-panel class="mat-expansion-panel mat-expanded">{# TODO: condicion expanded #}
  277.               <mat-expansion-panel-header class="mat-expansion-panel-header">
  278.                 <span class="mat-content">
  279.                   <mat-panel-title class="mat-panel-title mat-expansion-panel-header-title">
  280.                     Distribuidores
  281.                   </mat-panel-title>
  282.                 </span>
  283.                 <span class="mat-expansion-indicator" style="transform: rotate(0deg);"></span>
  284.               </mat-expansion-panel-header>
  285.               <div class="mat-expansion-panel-content mat-expanded">
  286.                 <div class="mat-expansion-panel-body">
  287.                   <div class="panel-content">
  288.                     {% for dealer in material.dealers %}
  289.                       <div>
  290.                         <a class="aligned-with-icon" href="{{dealer.url}}">{{dealer.name}}</a>
  291.                       </div>
  292.                     {% endfor %}
  293.                   </div>
  294.                 </div>
  295.               </div>
  296.             </mat-expansion-panel>
  297.             {% endif %}
  298.             {% if material.linkRelatedArticles|length > 0 %}
  299.               <mat-expansion-panel class="mat-expansion-panel mat-expanded">{# TODO: condicion expanded #}
  300.                 <mat-expansion-panel-header class="mat-expansion-panel-header">
  301.                   <span class="mat-content">
  302.                     <mat-panel-title class="mat-panel-title mat-expansion-panel-header-title">
  303.                       Articulos relacionados
  304.                     </mat-panel-title>
  305.                   </span>
  306.                   <span class="mat-expansion-indicator" style="transform: rotate(0deg);"></span>
  307.                 </mat-expansion-panel-header>
  308.                 <div class="mat-expansion-panel-content mat-expanded">
  309.                   <div class="mat-expansion-panel-body">
  310.                     <div class="panel-content">
  311.                       <ul class='related'>
  312.                         {% for doc in material.linkRelatedArticles %}
  313.                           <li><a href="{{absolute_url(doc.url)|add_ssl}}" target="_blank" title="{{doc.name}}">{{doc.name}}</a></li>
  314.                         {% endfor %}
  315.                       </ul>
  316.                     </div>
  317.                   </div>
  318.                 </div>
  319.               </mat-expansion-panel>
  320.             {% endif %}
  321.             {% if material.linkRelatedProjects|length > 0 %}
  322.               <mat-expansion-panel class="mat-expansion-panel mat-expanded">{# TODO: condicion expanded #}
  323.                 <mat-expansion-panel-header class="mat-expansion-panel-header">
  324.                 <span class="mat-content">
  325.                   <mat-panel-title class="mat-panel-title mat-expansion-panel-header-title">
  326.                     Proyectos relacionados
  327.                   </mat-panel-title>
  328.                 </span>
  329.                   <span class="mat-expansion-indicator" style="transform: rotate(0deg);"></span>
  330.                 </mat-expansion-panel-header>
  331.                 <div class="mat-expansion-panel-content mat-expanded">
  332.                   <div class="mat-expansion-panel-body">
  333.                     <div class="panel-content">
  334.                       <ul class='related'>
  335.                         {% for doc in material.linkRelatedProjects %}
  336.                           <li><a href="{{absolute_url(doc.url)|add_ssl}}" target="_blank" title="{{doc.name}}">{{doc.name}}</a></li>
  337.                         {% endfor %}
  338.                       </ul>
  339.                     </div>
  340.                   </div>
  341.                 </div>
  342.               </mat-expansion-panel>
  343.             {% endif %}
  344.             {% if material.linkRelatedConstructionDetails|length > 0 %}
  345.               <mat-expansion-panel class="mat-expansion-panel mat-expanded">{# TODO: condicion expanded #}
  346.                 <mat-expansion-panel-header class="mat-expansion-panel-header">
  347.                   <span class="mat-content">
  348.                     <mat-panel-title class="mat-panel-title mat-expansion-panel-header-title">
  349.                       Detalles constructivos relacionados
  350.                     </mat-panel-title>
  351.                   </span>
  352.                   <span class="mat-expansion-indicator" style="transform: rotate(0deg);"></span>
  353.                 </mat-expansion-panel-header>
  354.                 <div class="mat-expansion-panel-content mat-expanded">
  355.                   <div class="mat-expansion-panel-body">
  356.                     <div class="panel-content">
  357.                       <ul class='related'>
  358.                         {% for doc in material.linkRelatedConstructionDetails %}
  359.                           <li><a href="{{absolute_url(doc.url)|add_ssl}}" target="_blank" title="{{doc.name}}">{{doc.name}}</a></li>
  360.                         {% endfor %}
  361.                       </ul>
  362.                     </div>
  363.                   </div>
  364.                 </div>
  365.               </mat-expansion-panel>
  366.             {% endif %}
  367.           </mat-accordion>
  368.           {% if not mobile %}
  369.           <div id="skyscraper180x600OK_block" align="center" style="margin-top:10px;">
  370.             <script>
  371.               googletag.cmd.push(function() {
  372.                 googletag.display('skyscraper180x600OK_block');
  373.               });
  374.             </script>
  375.           </div>
  376.           {% endif %}
  377.         </div>
  378.       </div>
  379.     </div>
  380.   </div>
  381.   {% if material.images|length > 0 %}
  382.   <div class="images pb-5">
  383.     <div class="container">
  384.       <div class="row">
  385.         {% set i = 0 %}
  386.         {% for image in material.images %}
  387.         {% set footer = image.footer %}
  388.         {% if image.copyright %}
  389.           {% set footer = image.copyright ~ '<br>' ~ image.footer %}
  390.         {% endif %}
  391.         <div class="col-12 col-sm-4 mt-3">
  392.           <a href="{{image.url}}" data-lightbox="gallery" data-title="{{footer}}">
  393.             <img src="{{asset('assetsv2/img/white.gif')}}" data-src="{{image.url}}" class='w-100 lazyload' />
  394.           </a>
  395.         </div>
  396.         {% endfor %}
  397.       </div>
  398.     </div>
  399.   </div>
  400.   {% endif %}
  401.   <div class="my-3">
  402.     <div class="container">
  403.       <div class="row">
  404.         <div class="col-12">
  405.           <p class="small text-center">Las imágenes pertenecen a las empresas salvo mención expresa.</p>
  406.           <p class="small text-center">Los productos pueden variar según la zona de distribución.</p>
  407.           <p class="small text-center">All images are property of the company offering the product unless otherwise indicated.</p>
  408.           <p class="small text-center">Products may vary depending on the area of distribution.</p>
  409.         </div>
  410.       </div>
  411.     </div>
  412.   </div>
  413.   {% with { 'item': material } %}
  414.     {{ block('related_content') }}
  415.   {% endwith %}
  416.   {% if mobile %}
  417.   <div class="my-3">
  418.     <div class="container">
  419.       <div class="row">
  420.         <div class="col-12">
  421.           <div id="skyscraper180x600OK_block" align="center">
  422.             <script>
  423.               googletag.cmd.push(function() {
  424.                 googletag.display('skyscraper180x600OK_block');
  425.               });
  426.             </script>
  427.           </div>
  428.         </div>
  429.       </div>
  430.     </div>
  431.   </div>
  432.   {% endif %}
  433.   {% with { 'home': false, 'mediaPartners': mediaPartners } %}
  434.     {{ block('mediapartners_content') }}
  435.   {% endwith %}
  436. </div>
  437. <div class="modal fade" id="private-content" tabindex="-1" role="dialog" aria-labelledby="privateLabel" aria-hidden="true">
  438.   <div class="modal-dialog" role="document">
  439.     <div class="modal-content">
  440.       <div class="modal-body">
  441.         <div class="modal-body p-5">
  442.           <h3 class='text-center'>Suscríbete para acceder a este contenido</h3>
  443.           <p class='text-center'>Para acceder a este contenido debes tener una suscripción activa: SUSCRIPTOR / ESTUDIANTE</p>
  444.           <div class="w-100 text-center mt-3">
  445.             <a href="{{absolute_url('/subscription')|add_ssl}}" class="boton">Ver Planes</a>
  446.           </div>
  447.         </div>
  448.       </div>
  449.     </div>
  450.   </div>
  451. </div>
  452. <div class="modal fade" id="registered-content" tabindex="-1" role="dialog" aria-labelledby="registeredLabel" aria-hidden="true">
  453.   <div class="modal-dialog" role="document">
  454.     <div class="modal-content">
  455.       <div class="modal-body">
  456.         <div class="modal-body p-5">
  457.           <h3 class='text-center'>Regístrate para acceder a este contenido</h3>
  458.           <p class='text-center'>Para acceder a este contenido debes tener activado cualquiera de los planes de acceso: SUSCRIPTOR / ESTUDIANTE / FREE</p>
  459.           <div class="w-100 text-center mt-3">
  460.             <a href="{{absolute_url('/subscription')|add_ssl}}" class="boton">Registro</a>
  461.           </div>
  462.         </div>
  463.       </div>
  464.     </div>
  465.   </div>
  466. </div>
  467. {% endblock %}