templates/frontend/opera.html.twig line 1

Open in your IDE?
  1. {% extends "base.html.twig" %}
  2. {% block pageTitle %} {{ opera.titolo }} {% endblock %}
  3. {% block pageStyle %}
  4.     {{ parent() }} 
  5.     <link rel="stylesheet" href="{{ asset('js/tobii/tobii.min.css') }}">
  6. {% endblock %}
  7. {% block pageScriptsHeader %}    
  8.     {{ parent() }}
  9.     <script src="{{ asset('js/tobii/tobii.min.js') }}"></script>
  10.     <script>    
  11.     document.addEventListener('DOMContentLoaded', function() {
  12.         const tobii = new Tobii({
  13.             zoomText: '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="#fff" d="m15.5 14l5 5l-1.5 1.5l-5-5v-.79l-.27-.28A6.47 6.47 0 0 1 9.5 16A6.5 6.5 0 0 1 3 9.5A6.5 6.5 0 0 1 9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.57 4.23l.28.27zm-6 0C12 14 14 12 14 9.5S12 5 9.5 5S5 7 5 9.5S7 14 9.5 14m2.5-4h-2v2H9v-2H7V9h2V7h1v2h2z"/></svg>'
  14.         });
  15.     });
  16.     </script>
  17. {% endblock %}
  18. {% block navigation %} {{ parent() }} {% endblock %}
  19. {% block upperMainContainer %}
  20. {% endblock %}
  21. {% set splideConfiguration = {
  22.     "perPage": 1,
  23.     "perMove": 1,
  24.     "type": "loop",
  25.     "gap": "3rem",
  26.     "focus": "center",
  27.     "padding": {
  28.         "right": "0px"
  29.     },
  30.     "mediaQuery": "min",
  31.     "breakpoints": {
  32.         "768": {
  33.             "perPage": 2,
  34.             "perMove": 1,
  35.             "gap": "3rem",
  36.             "focus": "center",
  37.         },
  38.         "992": {
  39.             "perPage": 3,
  40.             "perMove": 1,
  41.             "gap": "3rem",
  42.             "focus": "center",
  43.         }
  44.     }
  45. } %}
  46. {% block mainContainer %}
  47. <section id="opera">
  48.     <div class="container">
  49.         <div class="d-grid grid-opera">
  50.             <nav class="grid-col">
  51.                 <ul>
  52.                     <li><a href="{{ app.request.headers.get('referer') }}"><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 48 48"><path fill="#B8293D" d="M31.884 8.366a1.25 1.25 0 0 1 0 1.768L18.018 24l13.866 13.866a1.25 1.25 0 0 1-1.768 1.768l-14.75-14.75a1.25 1.25 0 0 1 0-1.768l14.75-14.75a1.25 1.25 0 0 1 1.768 0"/></svg> Torna indietro</a></li>
  53.                     {% if app.user and is_granted('IS_AUTHENTICATED_FULLY') %}
  54.                     <li><a href="{{ path("adminModifyOpera", {"idopera": opera.id}) }}">Modifica opera</a></li>
  55.                     {% endif %}
  56.                 </ul>
  57.             </nav>
  58.             <div class="grid-col">
  59.                 <h1>{{ opera.titolo }}, {{ opera.anno }}</h1>
  60.             </div>
  61.         </div>
  62.         <div class="d-grid grid-opera">
  63.             <div class="grid-col">
  64.                 {% if opera.visibile or app.user %}
  65.                 <div class="my-gallery" itemscope itemtype="https://schema.org/ImageGallery">
  66.                     {% if not cover_presence %}
  67.                         {% for m in opera.multimedias | slice(0, 1) %}
  68.                             <figure itemprop="associatedMedia" itemscope itemtype="https://schema.org/ImageObject">
  69.                                 <a href="{{ asset(uploaded_img_big ~ m.multimedia.fileref ~ '.' ~ m.multimedia.estensione) }}" itemprop="contentUrl" data-size="{{ m.multimedia.widthbig }}x{{ m.multimedia.heightbig }}" class="lightbox">
  70.                                     <img src="{{ asset(uploaded_img_normal ~ m.multimedia.fileref ~ '.' ~ m.multimedia.estensione) }}" alt="{{ m.multimedia.nome }}">
  71.                                 </a>
  72.                             </figure>
  73.                         {% endfor %}
  74.                     {% else %}
  75.                         {% for m in opera.multimedias %}
  76.                             {% if m.cover %}
  77.                                 <figure itemprop="associatedMedia" itemscope itemtype="https://schema.org/ImageObject">
  78.                                     <a href="{{ asset(uploaded_img_big ~ m.multimedia.fileref ~ '.' ~ m.multimedia.estensione) }}" itemprop="contentUrl" data-size="{{ m.multimedia.widthbig }}x{{ m.multimedia.heightbig }}" class="lightbox">
  79.                                         <img src="{{ asset(uploaded_img_normal ~ m.multimedia.fileref ~ '.' ~ m.multimedia.estensione) }}" alt="{{ m.multimedia.nome }}">
  80.                                     </a>
  81.                                 </figure>
  82.                             {% endif %}
  83.                         {% endfor %}
  84.                     {% endif %}
  85.                 </div>
  86.                 {% endif %}
  87.             </div>
  88.             <div class="grid-col">
  89.             {% if opera.visibile or app.user %}
  90.                 <div class="dati">
  91.                 {% if opera.materiale != '' %}
  92.                     <div>
  93.                         <strong>Materiale</strong>
  94.                         <span>{{ opera.materiale }}</span>
  95.                     </div>
  96.                 {% endif %}
  97.                 {% if opera.tecnica != '' %}
  98.                     <div>
  99.                         <strong>Tecnica</strong>
  100.                         <span>{{ opera.tecnica }}</span>
  101.                     </div>
  102.                 {% endif %}
  103.                 {% if opera.x != '' or opera.y != '' or opera.z != '' %}
  104.                     <div>
  105.                         <strong>Misure (cm)</strong>
  106.                         <span>
  107.                             {% if opera.x %}L: {{ opera.x }}{% endif %}
  108.                             {% if opera.y %}A: {{ opera.y }}{% endif %}
  109.                             {% if opera.z %}P: {{ opera.z }}{% endif %}
  110.                         </span>
  111.                     </div>
  112.                 {% endif %}
  113.                 {% if opera.collezione != '' %}
  114.                     <div>
  115.                         <strong>Collezione</strong>
  116.                         <span>{{ opera.collezione }}</span>
  117.                     </div>
  118.                 {% endif %}
  119.                 {% if opera.numprogressivoanno != '' %}
  120.                     <div>
  121.                         <strong>Numero progressivo</strong>
  122.                         <span>{{ opera.numprogressivoanno }}</span>
  123.                     </div>
  124.                 {% endif %}
  125.                 </div>
  126.                 <div class="accordion" id="accordion-caratteristiche">
  127.                 {% if opera.note | length > 0 %}
  128.                     <div class="accordion-item">
  129.                         <h2 class="accordion-header " id="heading1c">
  130.                             <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapse1c" aria-expanded="false" aria-controls="collapse1c">
  131.                                 Note
  132.                             </button>
  133.                         </h2>
  134.                         <div id="collapse1c" class="accordion-collapse collapse" role="region" aria-labelledby="heading1c">
  135.                             <div class="accordion-body">
  136.                                 {{ opera.note }}
  137.                             </div>
  138.                         </div>
  139.                     </div>
  140.                 {% endif %}
  141.                 {% if opera.getLinkVideo() %}
  142.                     <div class="accordion-item">
  143.                         <h2 class="accordion-header " id="heading2c">
  144.                             <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapse2c" aria-expanded="false" aria-controls="collapse2c">
  145.                                 Video
  146.                             </button>
  147.                         </h2>
  148.                         <div id="collapse2c" class="accordion-collapse collapse" role="region" aria-labelledby="heading2c">
  149.                             <div class="accordion-body">
  150.                                 <div class="opera-video">
  151.                                     <video src="{{ opera.getLinkVideo() }}" autoplay muted loop controls width="480" height="480"></video>
  152.                                 </div>
  153.                             </div>
  154.                         </div>
  155.                     </div>
  156.                 {% endif %}
  157.                 {# {% if opera.multimedias | length > 2 %}
  158.                     <div class="accordion-item">
  159.                         <h2 class="accordion-header " id="heading3c">
  160.                             <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapse3c" aria-expanded="false" aria-controls="collapse3c">
  161.                                 Immagini
  162.                             </button>
  163.                         </h2>
  164.                         <div id="collapse3c" class="accordion-collapse collapse" role="region" aria-labelledby="heading3c">
  165.                             <div class="accordion-body">
  166.                                 <div class="my-gallery" itemscope itemtype="https://schema.org/ImageGallery">
  167.                                 {% if opera.multimedias | length > 4 %}
  168.                                     <div class="it-carousel-wrapper splide it-carousel-landscape-abstract-three-cols-arrow-visible" data-bs-carousel-splide data-splide="{{ splideConfiguration|json_encode }}">
  169.                                         <div class="splide__track p-0">
  170.                                 {% endif %}
  171.                                             <ul class="{% if opera.multimedias | length > 4 %}splide__list it-carousel-all{% else %}no-carousel{% endif %}">
  172.                                                 {% if not cover_presence %}
  173.                                                     {% for m in opera.multimedias | slice(1, 30) %}
  174.                                                         <li class="{% if opera.multimedias | length > 4 %}splide__slide{% else %}no-carousel{% endif %}">
  175.                                                             <figure itemprop="associatedMedia" itemscope itemtype="https://schema.org/ImageObject">
  176.                                                                 <a href="{{ asset(uploaded_img_big ~ m.multimedia.fileref ~ '.' ~ m.multimedia.estensione) }}" itemprop="contentUrl" data-size="{{ m.multimedia.widthbig }}x{{ m.multimedia.heightbig }}" class="lightbox">
  177.                                                                     <img src="{{ asset(uploaded_img_normal ~ m.multimedia.fileref ~ '.' ~ m.multimedia.estensione) }}" alt="{{ m.multimedia.nome }}">
  178.                                                                 </a>
  179.                                                             </figure>
  180.                                                         </li>
  181.                                                     {% endfor %}
  182.                                                 {% else %}
  183.                                                     {% for m in opera.multimedias %}
  184.                                                         {% if not m.cover %}
  185.                                                             <li class="{% if opera.multimedias | length > 4 %}splide__slide{% else %}no-carousel{% endif %}">
  186.                                                                 <figure itemprop="associatedMedia" itemscope itemtype="https://schema.org/ImageObject">
  187.                                                                     <a href="{{ asset(uploaded_img_big ~ m.multimedia.fileref ~ '.' ~ m.multimedia.estensione) }}" itemprop="contentUrl" data-size="{{ m.multimedia.widthbig }}x{{ m.multimedia.heightbig }}" class="lightbox">
  188.                                                                         <img src="{{ asset(uploaded_img_normal ~ m.multimedia.fileref ~ '.' ~ m.multimedia.estensione) }}" alt="{{ m.multimedia.nome }}">
  189.                                                                     </a>
  190.                                                                 </figure>
  191.                                                             </li>
  192.                                                         {% endif %}
  193.                                                     {% endfor %}
  194.                                                 {% endif %}
  195.                                             </ul>
  196.                                 {% if opera.multimedias | length > 4 %}
  197.                                         </div>
  198.                                     </div>
  199.                                 {% endif %}
  200.                                 </div>
  201.                             </div>
  202.                         </div>
  203.                     </div>
  204.                 {% endif %} #}
  205.                 {% if opera.connectedOperas | length > 0 %}
  206.                     <div class="accordion-item">
  207.                         <h2 class="accordion-header " id="heading4c">
  208.                             <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapse4c" aria-expanded="false" aria-controls="collapse4c">
  209.                                 Opere connesse
  210.                             </button>
  211.                         </h2>
  212.                         <div id="collapse4c" class="accordion-collapse collapse" role="region" aria-labelledby="heading4c">
  213.                             <div class="accordion-body">
  214.                                 <div class="opere-connesse">
  215.                                     <ul class="d-grid">
  216.                                         {% for connectedOpera in opera.connectedOperas%}
  217.                                             <li>
  218.                                                 <figure>
  219.                                                 {% set cover_presence = false %}
  220.                                                 {% for m in connectedOpera.multimedias %}
  221.                                                     {% if m.multimedia.tipo == "image" and m.cover %}
  222.                                                         {% set cover_presence = true %}
  223.                                                     {% endif %}
  224.                                                 {% endfor %}
  225.                                                 {% if not cover_presence %}
  226.                                                     {% set cc = 0 %}
  227.                                                     {% for m in connectedOpera.multimedias %}
  228.                                                         {% if m.multimedia.tipo == "image" and cc < 1 %}
  229.                                                             {% set cc = 1 %}
  230.                                                             <a href="{{ asset(uploaded_img_normal ~ m.multimedia.fileref ~ '.' ~ m.multimedia.estensione) }}" class="lightbox">
  231.                                                                 <img src="{{ asset(uploaded_img_normal ~ m.multimedia.fileref ~ '.' ~ m.multimedia.estensione) }}" alt="{{ m.multimedia.nome }}">
  232.                                                             </a>
  233.                                                             <figcaption>
  234.                                                                 <a href="{{ path("archivio-opere-scheda", {"idopera": connectedOpera.id}) }}">{{ connectedOpera.titolo | replace({"<": "(", ">": ")"}) }}</a>
  235.                                                             </figcaption>
  236.                                                         {% endif %}
  237.                                                     {% endfor %}
  238.                                                 {% else %}
  239.                                                     {% for m in connectedOpera.multimedias %}
  240.                                                         {% if m.multimedia.tipo == "image" and m.cover  %}
  241.                                                             <a href="{{ asset(uploaded_img_normal ~ m.multimedia.fileref ~ '.' ~ m.multimedia.estensione) }}" class="lightbox">
  242.                                                                 <img src="{{ asset(uploaded_img_normal ~ m.multimedia.fileref ~ '.' ~ m.multimedia.estensione) }}" alt="{{ m.multimedia.nome }}">
  243.                                                             </a>
  244.                                                             <figcaption>
  245.                                                                 <a href="{{ path("archivio-opere-scheda", {"idopera": connectedOpera.id}) }}">{{ connectedOpera.titolo | replace({"<": "(", ">": ")"}) }}</a>
  246.                                                             </figcaption>
  247.                                                         {% endif %}
  248.                                                     {% endfor %}
  249.                                                 {% endif %}
  250.                                                 </figure>
  251.                                             </li>
  252.                                         {% endfor %}
  253.                                     </ul>
  254.                                 </div>
  255.                             </div>
  256.                         </div>
  257.                     </div>                    
  258.                 {% endif %}
  259.                 {% if opera.idmostra is defined and opera.idmostra | length > 0 %}
  260.                     <div class="accordion-item">
  261.                         <h2 class="accordion-header " id="heading5c">
  262.                             <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapse5c" aria-expanded="false" aria-controls="collapse5c">
  263.                                 Esposizioni
  264.                             </button>
  265.                         </h2>
  266.                         <div id="collapse5c" class="accordion-collapse collapse" role="region" aria-labelledby="heading5c">
  267.                             <div class="accordion-body">
  268.                                 <div class="opera-esposizioni">
  269.                                     <ul>
  270.                                     {% for mostra in opera.idmostra %}
  271.                                         <li>
  272.                                             <a href="{{ path('allestimentoMostra', {'idmostra': mostra.id}) }}">{{ mostra.nome }}</a>
  273.                                         </li>
  274.                                     {% endfor %}
  275.                                     </ul>
  276.                                 </div>
  277.                             </div>
  278.                         </div>
  279.                     </div>                    
  280.                 {% endif %} 
  281.                 {% if pubblicazioni | length > 0 %}
  282.                     <div class="accordion-item">
  283.                         <h2 class="accordion-header " id="heading6c">
  284.                             <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapse6c" aria-expanded="false" aria-controls="collapse6c">
  285.                                 Pubblicazioni
  286.                             </button>
  287.                         </h2>
  288.                         <div id="collapse6c" class="accordion-collapse collapse" role="region" aria-labelledby="heading6c">
  289.                             <div class="accordion-body">
  290.                                 <div class="opera-pubblicazioni">
  291.                                     <ul>
  292.                                         {% for documento in pubblicazioni|sort((a, b) => a.anno <=> b.anno) %}
  293.                                             <li>
  294.                                                 <p class="mt-0 mb-0">
  295.                                                     <a href="{{ path('documentoMonografieCataloghi', {'iddocumento': documento.id}) }}">
  296.                                                     {{ documento.titolo }}
  297.                                                     </a>
  298.                                                     {% if documento.getAutore() %} di {{ documento.getAutore() }}
  299.                                                     {% endif %}
  300.                                                 </p>
  301.                                                 <p class="mt-0 mb-0">
  302.                                                     {% if documento.getLuogo() is defined and documento.getLuogo() is not empty %}
  303.                                                         {{ documento.getLuogo() }} - 
  304.                                                     {% endif %}
  305.                                                     ({{ documento.getAnno() }})
  306.                                                     {% if documento.file is defined and documento.file is not empty %}
  307.                                                         <a href="{{ asset(uploaded_documents ~ documento.file.fileref|replace({'-':''}) ~ '.' ~ documento.file.estensione) }}">
  308.                                                             PDF
  309.                                                         </a>
  310.                                                     {% endif %}                                    
  311.                                                 </p>
  312.                                             </li>                        
  313.                                         {% endfor %}
  314.                                     </ul>
  315.                                 </div>
  316.                             </div>
  317.                         </div>
  318.                     </div>
  319.                 {% endif %}
  320.                     {% if giornali | length > 0 %}
  321.                         <div class="accordion-item">
  322.                             <h2 class="accordion-header " id="heading7c">
  323.                                 <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapse7c" aria-expanded="false" aria-controls="collapse7c">
  324.                                     Giornali
  325.                                 </button>
  326.                             </h2>
  327.                             <div id="collapse7c" class="accordion-collapse collapse" role="region" aria-labelledby="heading7c">
  328.                                 <div class="accordion-body">
  329.                                     <div class="opera-giornali">
  330.                                         <ul>
  331.                                             {% for giornale in giornali|sort((a, b) => a.anno <=> b.anno) %}
  332.                                                 <li class="bibliografia-item giornale">
  333.                                                     {% if giornale.getAutore() is not empty and giornale.getTitolo() is not empty %}
  334.                                                     <p class="mt-0 mb-0">
  335.                                                         {% if giornale.getAutore() is not empty %}
  336.                                                             {{ giornale.getAutore() }}
  337.                                                         {% endif %}
  338.                                                         {% if giornale.getAutore() is not empty and giornale.getTitolo() is not empty %}
  339.                                                         -
  340.                                                         {% endif %}
  341.                                                         {% if giornale.getTitolo() is not empty %}
  342.                                                             {{ giornale.getTitolo() }}
  343.                                                         {% endif %}
  344.                                                     </p>
  345.                                                     {% endif %}
  346.                                                     
  347.                                                     <p class="mt-0 mb-0">
  348.                                                         {% if giornale.getIdgiornale() is defined and giornale.getIdgiornale().getNome() is not empty %}
  349.                                                             {{ giornale.getIdgiornale().getNome() }} - 
  350.                                                         {% endif %}
  351.                                                         
  352.                                                         {% if giornale.getPagina() is not empty %}
  353.                                                             pag. {{ giornale.getPagina() }}
  354.                                                         {% endif %}
  355.                                                         ({{ giornale.getGiorno() }}-{{ giornale.getMese() }}-{{ giornale.getAnno() }})
  356.                                                         {% if giornale.multimediafiles is not empty %}
  357.                                                             {% for multimedia in giornale.multimediafiles | slice(0, 1) %}
  358.                                                             - <a href="{{ asset(uploaded_img_big ~ multimedia.fileref ~ '.' ~ multimedia.estensione) }}" itemprop="contentUrl" data-size="{{ multimedia.widthbig }}x{{ multimedia.heightbig }}">IMG</a>
  359.                                                             {% endfor %}
  360.                                                         {% endif %}
  361.                                                     </p>
  362.                                                 </li>                            
  363.                                             {% endfor %}
  364.                                         </ul>
  365.                                     </div>
  366.                                 </div>
  367.                             </div>
  368.                         </div>
  369.                     {% endif %}
  370.                 </div>
  371.                 {% else %}
  372.                 <div class="alert alert-light text-center" role="alert">
  373.                     Siamo spiacenti, questa opera non รจ visibile al pubblico.
  374.                 </div>
  375.             {% endif %}
  376.             </div>
  377.         </div>
  378.     </div>
  379. </section>
  380. {% endblock %}