src/Aviatur/TwigBundle/Resources/views/cortes_cia/Flux/App/base.html.twig line 1

Open in your IDE?
  1. {% set parameters = json_decode(app.session.get(app.request.server.get('HTTP_HOST') ~ '[parameters]'), true) %}
  2. {% set agencyDataInfo = app.session.get('agencyDataInfo') %}
  3. {% if parameters['blob_azure_assets'] is defined %}
  4.     {% set assetsBlobUrl = parameters['blob_azure_assets'] %}
  5. {% else %}
  6.     {% set assetsBlobUrl = "https://aviaturcdndev.z5.web.core.windows.net/"%}
  7. {% endif %}
  8. <!DOCTYPE html>
  9. <html>
  10.     <head>
  11.         <meta charset="utf-8">
  12.         <meta http-equiv="X-UA-Compatible" content="IE=edge">
  13.         {% block head_viewport %}
  14.             <meta name="viewport" content="width=device-width, initial-scale=1">
  15.         {% endblock head_viewport %}
  16.         <title>{% block head_title %}{% endblock head_title %}</title>
  17.         <meta name="description" content="{% block head_description_content %}{% endblock head_description_content %}">
  18.         <meta name="title" content="{% block head_meta_title %}{% endblock head_meta_title %}">
  19.         <meta name="keywords" content="{% block head_keywords %}{% endblock head_keywords %}">
  20.         {# <meta name="apple-itunes-app" content="app-id=1083093866">
  21.         <meta name="google-play-app" content="app-id=app.android.CortesyCiaViajesyTurismo"> #}
  22.         <link rel="icon" type="image/x-icon" href="{{ assetsBlobUrl ~  'assets/'~ agency_folder.assetStyle() ~'/img/header/favicon.png' }}" />
  23.         <link rel="apple-touch-icon" href="{{ assetsBlobUrl ~  'assets/'~ agency_folder.assetStyle() ~'/img/header/favicon.png'}}" />
  24.         <link rel="android-touch-icon" href="{{ assetsBlobUrl ~ 'assets/'~ agency_folder.assetStyle() ~'/img/header/favicon.png'}}"/>
  25.         {# llamado estilos api hoteles #}
  26.         <link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.3/dist/leaflet.css"/>
  27.         <link rel="stylesheet" href="https://unpkg.com/leaflet.markercluster@1.5.3/dist/MarkerCluster.css" />
  28.         <link rel="stylesheet" href="https://unpkg.com/leaflet.markercluster@1.5.3/dist/MarkerCluster.Default.css" />
  29. <script defer src="https://unpkg.com/leaflet.markercluster@1.3.0/dist/leaflet.markercluster-src.js" integrity="sha384-NAOEbWFcjnXc7U9GkULPhupHZNAbqru9dS3c+4ANYAwtFoVAWuVuMVDH0DIy4ESp" crossorigin="anonymous"></script>
  30.         {# styles #}
  31.         {% block stylesheets %}
  32.         <link rel="preconnect" href="https://fonts.googleapis.com">
  33.         <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
  34.         <link href="https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&family=Ubuntu:ital,wght@0,300;0,400;0,500;0,700;1,300;1,400;1,500;1,700&display=swap" rel="stylesheet">
  35. <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Rounded:opsz,wght,FILL,GRAD@24,400,0,0" />
  36. <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,400,0,0" />
  37. <link href="https://fonts.googleapis.com/icon?family=Material+Icons+Outlined" rel="stylesheet">
  38.         <link type="text/css" rel="stylesheet" href="{{ style('default_assets/css/main.css') }}" />
  39.         {# <link type="text/css" rel="stylesheet" href="{{ absolute_url(asset('assets/'~ agency_folder.assetStyle() ~'/css/main.css')) }}" />
  40.         <link type="text/css" rel="stylesheet" href="{{ absolute_url(asset('assets/'~ agency_folder.assetStyle() ~'/css/special.css')) }}" /> #}
  41.         <script src="https://cdn.tailwindcss.com"></script>
  42.         <script>
  43.             tailwind.config = {
  44.                theme: {
  45.                     container: {
  46.                         center: false,
  47.                     },
  48.                     extend: {
  49.                         screens: {
  50.                             xs:{max: "575px"}, // mini-mobile
  51.                             s:{min:"576px", max:"767px"}, // mobile
  52.                             m:{min:"768px", max:"992px"}, // tablet
  53.                             l:{min:"993px"}, // desktop
  54.                         },
  55.                         colors: {
  56.                         },
  57.                     },
  58.                 },
  59.                 plugins: [],
  60.         }
  61.         </script>
  62.         <style>
  63.             .nav-main__item.is-active,
  64.             .is-active.nav-main__item--blog {
  65.                 border-top: 0.175rem inset #65acd8;
  66.                 color: #65acd8;
  67.             }
  68.             .nav-scroll a.is-active {
  69.                 color: #65acd8;
  70.             }
  71.             .nav-scroll a {
  72.                 color: #5a5a5a;
  73.             }
  74.             .btn,
  75.             .btn-flight-blog,
  76.             .btn--slim {
  77.                 background-color: #65acd8;
  78.                 border-color: #65acd8;
  79.             }
  80.             .btn:hover {
  81.                 background-color: #65acd8;
  82.                 filter: brightness(1.1);
  83.                 border-color: #65acd8;
  84.             }
  85.             .page-foot__social{ background-color: #65acd8; }
  86.             .titulo_1{ color:#65acd8; }
  87.         </style>
  88.         {% endblock stylesheets %}
  89.         {# end styles #}
  90.         {# scripts #}
  91.         <script src="{{ script('common.js') }}"></script>
  92.         <script src="https://apis.google.com/js/api:client.js" integrity="sha384-5UngWscP4SmNwWewInYpRPek0ZFzNRs/QS6r/vutuBBCFwz28liNRLjQUamFj/Pk" crossorigin="anonymous"></script>
  93.         <script async defer crossorigin="anonymous" integrity="sha384-IeNX8AcVzU9jPDvE21Ts4tNKmR3lTRQMunAKZX/yRKryWWSvhp5FUSJt1eHYpScS" src="https://connect.facebook.net/es_LA/sdk.js#xfbml=1&version=v6.0&appId=#xfbml=1&version=v7.0&appId={{facebook_appid_login}}&autoLogAppEvents=1"></script>
  94.         {% if app.session.get('WorldChangeCoin') is defined and app.session.get('WorldChangeCoin') == 'true' %}
  95.             {% include twig_exists('@AviaturTwig/'~ agency_folder.twigFlux() ~'/General/Components/worldpayFunction.html.twig') %}
  96.         {% endif %}
  97.         {% if parameters['firebasescripts'] == 'true' %}
  98.         <link rel="stylesheet" href="https://aviaturcdndev.z5.web.core.windows.net/source/main.css">
  99.         <script src="https://aviaturcdndev.z5.web.core.windows.net/source/script.js" type="text/javascript"></script>
  100.         {% endif %}
  101.         {% if pdfGenerator is not defined %}
  102.             <script type="text/javascript">
  103.                 var clientId;
  104.                 var domain = '{{ app.session.get('domain') }}';
  105.                 var domainsecure = '{{ app.session.get('domainsecure') }}';
  106.                 (function (i, s, o, g, r, a, m) {
  107.                     i['GoogleAnalyticsObject'] = r;
  108.                     i[r] = i[r] || function () {
  109.                         (i[r].q = i[r].q || []).push(arguments)
  110.                     }, i[r].l = 1 * new Date();
  111.                     a = s.createElement(o),
  112.                             m = s.getElementsByTagName(o)[0];
  113.                     a.async = 1;
  114.                     a.src = g;
  115.                     m.parentNode.insertBefore(a, m)
  116.                 })(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga');
  117.                 ga('create', 'UA-48931821-1', 'auto', {cookieDomain: '{{app.request.server.get("HTTP_HOST")|replace({'www.':''})}}', allowLinker: true});
  118.                 ga('require', 'displayfeatures');
  119.                 ga('require', 'linkid', 'linkid.js');
  120.                 ga('require', 'linker');
  121.                 ga('require', 'ec');
  122.                 ga('linker:autoLink', [domain, domainsecure, 'cortesyciaviajesyturismo.com', 'grupoaviatur.com']);
  123.                 ga('linker:autoLink', [domain, domainsecure, 'cortesyciaviajesyturismo.com', 'grupoaviatur.com'], false, true);
  124.                 var dimensionValue = '{{ app.request.server.get("REMOTE_ADDR") }}';
  125.                 {% if (app.session.has('transactionId')) %}
  126.                 var dimensionValue2 = '{{ app.session.get('transactionId') }}';
  127.                 {% else %}
  128.                     var dimensionValue2 = '';
  129.                 {% endif %}
  130.                     var dimensionValue3 = '';
  131.                     var dimensionValue4 = '';
  132.                     var dimensionValue5 = '';
  133.                     var dimensionValue6 = '';
  134.                     ga('send', 'pageview', {
  135.                         'dimension1': dimensionValue,
  136.                         'dimension2': dimensionValue2,
  137.                         'dimension3': dimensionValue3,
  138.                         'dimension4': dimensionValue4,
  139.                         'dimension5': dimensionValue5,
  140.                         'dimension6': dimensionValue6}
  141.                     );
  142.             </script>
  143.         {% endif %}
  144.         {% if parameters['aviatur_close_modal_login'] is defined %}
  145.             {% set activate_login = json_decode(parameters['aviatur_close_modal_login'], true) %}
  146.             {% if activate_login[app.session.get('agencyId')] is defined %}
  147.                 {% set swLoginClose = activate_login[app.session.get('agencyId')] %}
  148.             {% else %}
  149.                 {% set swLoginClose = activate_login['all'] %}
  150.             {% endif %}
  151.         {% endif %}
  152.             {# Parametrización boton continuar sin iniciar sesión #}
  153.         {% if parameters['aviatur_continue_without_logging'] is defined %}
  154.             {% set continue_without_logging = json_decode(parameters['aviatur_continue_without_logging'], true) %}
  155.             {% if continue_without_logging[app.session.get('agencyId')] is defined %}
  156.                 {% set continueWithoutLogging = continue_without_logging[app.session.get('agencyId')] %}
  157.             {% else %}
  158.                 {% set continueWithoutLogging = continue_without_logging['all'] %}
  159.             {% endif %}
  160.         {% endif %}
  161.             <script>
  162.                 var continueWithoutLogging = '{{continueWithoutLogging}}';
  163.                 var swLoginClose = '{{swLoginClose}}';
  164.                 var clicked = false;
  165.                 var pathname = window.location.pathname.split( '/' );
  166.                 var googleUser = {};
  167.                 var startApp = function() {
  168.                     gapi.load('auth2', function(){
  169.                     // Retrieve the singleton for the GoogleAuth library and set up the client.
  170.                     auth2 = gapi.auth2.init({
  171.                         client_id: '{{google_idclient_login}}',
  172.                         cookiepolicy: 'single_host_origin'
  173.                     });
  174.                     attachSignin(document.getElementById('customBtn'));
  175.                     });
  176.                 };
  177.                 function attachSignin(element) {
  178.                     auth2.attachClickHandler(element, {},
  179.                     function(googleUser) {
  180.                         var profile = googleUser.getBasicProfile();
  181.                         var $modalLogin = jQuery('#js-modalLogin');
  182.                         var id_token = googleUser.getAuthResponse().id_token;
  183.                         jQuery(".js-globalOverlay").attr("style", "z-index: 1200 !important;");
  184.                         jQuery(".js-globalOverlay-text").text("Iniciando sesión");
  185.                         jQuery(".js-globalOverlay").show();
  186.                         jQuery.ajax({
  187.                             url: '/customer/social-networks-callback',
  188.                             type: 'POST',
  189.                             data: {idtoken: id_token, red: "google"},
  190.                             crossDomain: true,
  191.                             beforeSend: function() {
  192.                                 jQuery(".js-globalOverlay-text").text("Iniciando sesión");
  193.                                 jQuery(".js-globalOverlay").show();
  194.                             },
  195.                             success: function (data) {
  196.                                 if(data.status == "redirect") {
  197.                                     signOut();
  198.                                     if(pathname[2] == "detalle" || pathname[2] == "pasajeros-reserva" || pathname[2] == "formulario") {
  199.                                         location.reload();
  200.                                     } else {
  201.                                         window.location.replace("/");
  202.                                     }
  203.                                 }
  204.                             },
  205.                             error: function () {
  206.                                 $modalLogin.find('.close[data-dismiss="modal"]').trigger('click');
  207.                                 jQuery(".js-globalOverlay").hide();
  208.                             },
  209.                             complete: function () {}
  210.                         });
  211.                         /*document.getElementById('name').innerText = "Signed in: " +
  212.                         googleUser.getBasicProfile().getName();*/
  213.                     }, function(error) {
  214.                         //alert(JSON.stringify(error, undefined, 2));
  215.                     });
  216.                 }
  217.                 function signOut() {
  218.                     var auth2 = gapi.auth2.getAuthInstance();
  219.                     auth2.signOut().then(function () {});
  220.                 }
  221.             </script>
  222.             <script>
  223.                 var fbid = '{{facebook_appid_login}}';
  224.                 window.fbAsyncInit = function() {
  225.                     FB.init({
  226.                         appId      : fbid,
  227.                         cookie     : true,
  228.                         xfbml      : true,
  229.                         version    : 'v7.0',
  230.                         oauth   : true,
  231.                         status  : true
  232.                     });
  233.                     FB.AppEvents.logPageView();
  234.                 };
  235.                 (function(d, s, id){
  236.                     var js, fjs = d.getElementsByTagName(s)[0];
  237.                     if (d.getElementById(id)) {return;}
  238.                     js = d.createElement(s); js.id = id;
  239.                     js.src = "https://connect.facebook.net/en_US/sdk.js";
  240.                     fjs.parentNode.insertBefore(js, fjs);
  241.                 }(document, 'script', 'facebook-jssdk'));
  242.                 /*function checkLoginState() {
  243.                     FB.getLoginStatus(function(response) {
  244.                         statusChangeCallback(response);
  245.                     });
  246.                 }*/
  247.                 function loginFace(){
  248.                     FB.login(function(response) {
  249.                         if (response.authResponse) {
  250.                             var $modalLogin = jQuery('#js-modalLogin');
  251.                             //console.log('Welcome!  Fetching your information.... ');
  252.                             FB.api('/me', {fields: 'first_name, last_name, email, picture'}, function (response2) {
  253.                                 response2.picture2 = "http://graph.facebook.com/" + response2.id + "/picture?type=normal";
  254.                                 jQuery(".js-globalOverlay").attr("style", "z-index: 1200 !important;");
  255.                                 jQuery(".js-globalOverlay-text").text("Iniciando sesión");
  256.                                 jQuery(".js-globalOverlay").show();
  257.                                 jQuery.ajax({
  258.                                     url: '/customer/social-networks-callback',
  259.                                     type: 'POST',
  260.                                     crossDomain: true,
  261.                                     data: {data: response2, red: "facebook"},
  262.                                     //async: true,
  263.                                     success: function (data) {
  264.                                         if(data.status == "redirect") {
  265.                                             FB.logout();
  266.                                             if(pathname[2] == "detalle" || pathname[2] == "pasajeros-reserva" || pathname[2] == "formulario") {
  267.                                                 location.reload();
  268.                                             } else {
  269.                                                 window.location.replace("/");
  270.                                             }
  271.                                         }
  272.                                     },
  273.                                     error: function () {
  274.                                         $modalLogin.find('.close[data-dismiss="modal"]').trigger('click');
  275.                                         jQuery(".js-globalOverlay").hide();
  276.                                     },
  277.                                     complete: function () {}
  278.                                 });
  279.                             });
  280.                         } else {
  281.                             console.log('User cancelled login or did not fully authorize.');
  282.                         }
  283.                     },{scope: 'email,public_profile'});
  284.                 }
  285.             </script>
  286.             {% if app.user %}
  287.             <script>
  288.                 var customerLogged = true;
  289.                 var documentNum = '{{app.user.documentNumber}}';
  290.                 var documentType = '{{app.user.documentType}}';
  291.                 {% if parameters['switch_login_agencies'] is defined %}
  292.                     {% set login_agencies = json_decode(parameters['switch_login_agencies'], true) %}
  293.                     {% if login_agencies[app.session.get('agencyId')] is defined %}
  294.                         {% set login_is_on = login_agencies[app.session.get('agencyId')] %}
  295.                     {% else %}
  296.                         {% set login_is_on = login_agencies['all'] %}
  297.                     {% endif %}
  298.                 {% else %}
  299.                     {% set login_is_on = '0' %}
  300.                 {% endif %}
  301.                 var login_is_on = "{{login_is_on}}";
  302.             </script>
  303.         {% else %}
  304.             <script>var customerLogged = false;</script>
  305.         {% endif %}
  306.         {% if 'aviatur_general_homepage' in app.request.get('_route') %}
  307.             {% if app.user.username is defined %}
  308.                 <script>
  309.                     jQuery(document).ready(function () {
  310.                         var dtCustomerFacebook = '{{app.user.facebookId}}';
  311.                         var dtCustomerGoogle = '{{app.user.googleId}}';
  312.                         var address = '{{app.user.address}}';
  313.                         var documentNum = '{{app.user.documentNumber}}';
  314.                         if(dtCustomerFacebook || dtCustomerGoogle){
  315.                             if(documentNum.length == 0 && address.length == 0) {
  316.                                  window.location.replace("/customer/edit");
  317.                             }
  318.                         }
  319.                     });
  320.                 </script>
  321.             {% else %}
  322.                 <script>
  323.                     sessionStorage.setItem('countDialogLogin', 0);
  324.                     var countDialogLogin = 0;
  325.                     jQuery(document).ready(function () {
  326.                         jQuery("#close-dialog-login").on('click', function(){
  327.                             jQuery("#dialog-login-home").hide();
  328.                         });
  329.                     });
  330.                 </script>
  331.             {% endif %}
  332.         {% endif %}
  333.         {% if 'aviatur_customer_edit_info' in app.request.get('_route') %}
  334.             {% if app.user.username is defined %}
  335.                 <script>
  336.                     jQuery(document).ready(function () {
  337.                         var dtCustomerFacebook = '{{app.user.facebookId}}';
  338.                         var dtCustomerGoogle = '{{app.user.googleId}}';
  339.                         jQuery("#customer_edit_form_email").attr("type","email");
  340.                         jQuery("#customer_edit_form_CivilStatus").parent().parent().parent().hide();
  341.                         if(dtCustomerFacebook || dtCustomerGoogle){
  342.                             if(jQuery("#customer_edit_form_DocumentNumber").val() == "") {
  343.                                 jQuery("#customer_edit_form_DocumentNumber").removeAttr("readonly");
  344.                             }
  345.                             jQuery(".js-reserva-submit-password").hide();
  346.                             jQuery("#customer_edit_form_email").hide();
  347.                             jQuery('[for^="customer_edit_form_email"]').hide();
  348.                         }
  349.                     });
  350.                 </script>
  351.             {% endif %}
  352.         {% endif %}
  353.         {% if app.session.get('AnonymousEmail') is not null %}
  354.             {# When user set email on "See Booking", this JS set email in input after redirection #}
  355.             {% set anonymousEmail = app.session.get('AnonymousEmail') %}
  356.             <script type="text/javascript">
  357.                 jQuery(document).ready(function () {
  358.                     var anonymousEmail = "{{ anonymousEmail }}";
  359.                     jQuery("#username").val(anonymousEmail);
  360.                     jQuery("#fos_user_registration_form_email").val(anonymousEmail);
  361.                 });
  362.             </script>
  363.         {% endif %}
  364.         {# end scripts  #}
  365.         {# {% if "payment_success_secure" in app.request.attributes.get('_route') %}
  366.         {% endif %} #}
  367.         {% block javascripts_header %}
  368.             {% if cards is defined %}
  369.                 {# {% set src = "https://h.online-metrix.net/fp/tags.js?org_id="~cybersource.org_id~"&session_id=aviaturcom"~ app.session.get('transactionId') %}
  370.                 <script type="text/javascript" src="{{src}}"></script> #}
  371.             {% endif %}
  372.         {% endblock %}
  373.     </head>
  374.     <body ontouchstart="">
  375.         {% if agencyDataInfo['agency_phones'] %}
  376.             {% set agencyWhat = agencyDataInfo['agency_phones']['what']%}
  377.             {% set agencyPhones = agencyDataInfo['agency_phones']['all']%}
  378.         {% endif %}
  379.         <p class="app-name hide">{{ (app.session.get('domain')) }}</p>
  380.         {% block body_scripts %}
  381.             {% if cards is defined %}
  382.                 {# {% set src = "https://h.online-metrix.net/fp/tags?org_id="~cybersource.org_id~"&session_id=aviaturcom"~ app.session.get('transactionId') %}
  383.                 <noscript>
  384.                 <iframe style="width: 100px; height: 100px; border: 0; position:absolute; top: -5000px;" src="{{src}}"></iframe>
  385.                 </noscript> #}
  386.             {% endif %}
  387.         {% endblock %}
  388.         {% for flashMessage in app.session.flashbag.get('notice') %}
  389.             <div class="flash-notice">
  390.                 {{ flashMessage }}
  391.             </div>
  392.         {% endfor %}
  393.         {% block overlay %}
  394. <script>
  395.     document.addEventListener("DOMContentLoaded", function () {
  396.         const overlay = document.querySelector(".js-globalOverlay");
  397.         if (overlay) {
  398.             overlay.style.display = "none";
  399.             window.addEventListener("load", function () {
  400.                 overlay.style.display = "none";
  401.             });
  402.             window.addEventListener("pageshow", function () {
  403.                 overlay.style.display = "none";
  404.             });
  405.         }
  406.     });
  407. </script>
  408.             <div class="overlay js-globalOverlay" style="display: none;">
  409.                 <div class="overlay-center">
  410.                     <svg class="mat-loader--200 center-block" height="200" width="200">
  411.                         <circle class="mat-loader--200__path" cx="100" cy="100" r="80" fill="none" stroke-width="6" stroke-miterlimit="10" />
  412.                     </svg>
  413.                     <p class="spin-text js-globalOverlay-text">Cargando...</p>
  414.                 </div>
  415.             </div>
  416.             <div class="responsive-js"></div>
  417.         {% endblock %}
  418.         {% block base_content %}
  419.             {% block header %}
  420.             {% endblock %}
  421.             {% block body %}
  422.             {% endblock body %}
  423.             {% block content %}
  424.             {% endblock content %}
  425.             {% block footer %}
  426.             {% endblock footer %}
  427.             {% block modal %}
  428.                 <div id="js-globalModal" class="modal fade">
  429.                     <div class="modal-dialog">
  430.                         <div class="modal-content">
  431.                             <div class="modal-header">
  432.                                 <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
  433.                                 <h4 id="js-globalModal-title" class="modal-title">Modal title</h4>
  434.                             </div>
  435.                             <div class="modal-body">
  436.                                 <div id="js-globalModal-illustration" {# class="modal-illustration" #}></div>
  437.                                 <p id="js-globalModal-text" class="modal-text modal-text--error"></p>
  438.                             </div>
  439.                         </div>
  440.                     </div>
  441.                 </div>
  442.             {% endblock modal %}
  443.         {% endblock base_content %}
  444.         {% block javascripts %}
  445. {% endblock %}
  446. {% block javascripts_bottom %}
  447.             {# llamados de scripts de hoteles #}
  448.             <script src="https://unpkg.com/leaflet@1.3.1/dist/leaflet-src.js" integrity="sha512-IkGU/uDhB9u9F8k+2OsA6XXoowIhOuQL1NTgNZHY1nkURnqEGlDZq3GsfmdJdKFe1k1zOc6YU2K7qY+hF9AodA==" crossorigin="anonymous"></script>
  449.             <script src="https://unpkg.com/leaflet.markercluster@1.3.0/dist/leaflet.markercluster-src.js" integrity="sha384-NAOEbWFcjnXc7U9GkULPhupHZNAbqru9dS3c+4ANYAwtFoVAWuVuMVDH0DIy4ESp" crossorigin="anonymous"></script>
  450.             <script src="{{ asset('assets/common_assets/js/vendor/leaflet.bezier.js') }}"></script>
  451.         {% endblock javascripts_bottom %}
  452.     </body>
  453. </html>