templates/baseMobile.html.twig line 1

Open in your IDE?
  1. {% macro flash( app, type ) %}
  2.     {% for message in app.flashes(type) %}
  3.         <div class="alert alert-{{ type }} col-md-10 col-lg-8 mx-auto my-4">
  4.             {{ message|raw }}
  5.         </div>
  6.     {% endfor %}
  7. {% endmacro %}
  8. <!DOCTYPE html>
  9. <html lang="en">
  10. <head>
  11.     <meta charset="utf-8" />
  12.     <link rel="apple-touch-icon" sizes="76x76" href="../assets/img/apple-icon.png">
  13.     <link rel="icon" type="image/png" href="../assets/img/favicon.png">
  14.     <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
  15.     <title>Lowdefest Tickets: {{ block('title') }}</title>
  16.     <meta content='width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0, shrink-to-fit=no' name='viewport' />
  17.     {% block stylesheets %}
  18. {#        {{ encore_entry_link_tags('app') }}#}
  19.         <link href="{{ asset('css/feStyles.css') }}" rel="stylesheet">
  20.     {% endblock stylesheets %}
  21.     <style id="progressStyles">
  22.         body::before {
  23.             content: '';
  24.             display: block;
  25.             position: fixed;
  26.             top: 0px;
  27.             left: 0px;
  28.             width: 100%;
  29.             height: 3px;
  30.             background: #0d6efd;
  31.             transform: scaleX(0.3);
  32.             transform-origin: 0 0;
  33.             will-change: transform;
  34.             z-index: 1000;
  35.         }
  36.     </style>
  37.     <!-- Global site tag (gtag.js) - Google Analytics -->
  38.     <script async src="https://www.googletagmanager.com/gtag/js?id=G-HFZKWK042C"></script>
  39.     <script>
  40.         window.dataLayer = window.dataLayer || [];
  41.         function gtag(){dataLayer.push(arguments);}
  42.         gtag('js', new Date());
  43.         gtag('config', 'G-HFZKWK042C');
  44.     </script>
  45. </head>
  46. <body class="">
  47. <div class="mobile-container">
  48.     {% import _self as helper %}
  49.     <div class="content">
  50.         <div class="app-head unlogged" >
  51.             <div class="col-12 header-row">
  52.             <a href="{{ path('feapp_home') }}">
  53.                     <div class="mob-logo">
  54.                         <img src="{{ asset('build/img/LF23-logo.png') }}" >
  55.                         <img src="{{ asset('build/img/LF23-name.svg') }}" >
  56.                     </div>
  57.                     {#                {% if orders.invited|length>0 or orders.purchased|length>0 %}#}
  58.                     {#                    <div class="col-50">#}
  59.                     {#                        <div class="barcode-btn">#}
  60.                     {#                            <a href="#" class="barcode-link" data-toggle="modal" data-target="#barcodeModal">#}
  61.                     {#                                <svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 34 22"><defs><style>.cls-1{fill:#fff;}</style></defs><rect class="cls-1" width="2" height="22"/><rect class="cls-1" x="4" width="2" height="19.5"/><rect class="cls-1" x="8" width="2" height="19.5"/><rect class="cls-1" x="12" width="2" height="19.5"/><rect class="cls-1" x="16" width="2" height="19.5"/><rect class="cls-1" x="20" width="2" height="19.5"/><rect class="cls-1" x="24" width="2" height="19.5"/><rect class="cls-1" x="28" width="2" height="19.5"/><rect class="cls-1" x="32" width="2" height="22"/><rect class="cls-1" x="4" width="2" height="19.5"/></svg>#}
  62.                     {#                            </a>#}
  63.                     {#                        </div>#}
  64.                     {#                    </div>#}
  65.                     {#                {% endif %}#}
  66.             </a>
  67.             </div>
  68.         </div>
  69.         {{ helper.flash( app, 'danger' ) }}
  70.         {{ helper.flash( app, 'warning' ) }}
  71.         {{ helper.flash( app, 'success' ) }}
  72.         {{ helper.flash( app, 'info' ) }}
  73.         {%if onAir|length %}
  74.             <div class="on-air">
  75.                 {% for event in onAir%}
  76.                     <div class="event">
  77.                         <div class="badge badge-pill badge-danger">On Air</div>
  78.                         <div class="artist">{{event.artist.name}}</div> @ <a href="{{path('feapp_lineup_stage',{'id':event.stage.id})}}" class="stage">{{event.stage.name}}</a>
  79.                     </div>
  80.                 {% endfor %}
  81.             </div>
  82.         {%endif%}
  83.         {%if upcoming|length %}
  84.             <div class="upcoming">
  85.                 {% for event in upcoming%}
  86.                     <div class="event">
  87.                         <div class="time">{{event.startAt|date('H:i')}} ({{event.startAt|elapsed}})</div>
  88.                         <div class="artist">{{event.artist.name}}</div> @ <a href="{{path('feapp_lineup_stage',{'id':event.stage.id})}}" class="stage">{{event.stage.name}}</a>
  89.                     </div>
  90.                 {% endfor %}
  91.             </div>
  92.         {%endif%}
  93.         {% block body %}{% endblock %}
  94.     </div>
  95.     <footer>Provided by <a href="https://wisetiger.co.uk/">Wisetiger</a>. Powered by <a href="https://seehoo.co.uk/">Seehoo</a>
  96.     </footer>
  97. </div>
  98. {% block javascripts %}
  99.     <script>
  100.         let i, c, u, a, s, l, f, d, m;
  101.         i = 15e3;
  102.         c = 4e4;
  103.         u = "#0d6efd";
  104.         a = function (n) {
  105.             return "\n    ".concat("body::before", " { \n        transform: scaleX(0.99);\n        transition-duration: ").concat(n, "ms;\n        transition-timing-function: cubic-bezier(0,1,0.5,1);\n    }\n")
  106.         };
  107.         s = function () {
  108.             return "\n    ".concat("body::before", " {\n        transform: scaleX(1);\n        transition-duration: ").concat(300, "ms;\n        animation: none;\n        background-image: none;\n    }\n")
  109.         };
  110.         l = function () {
  111.             return "\n    ".concat("body::before", " {\n        transform: scaleX(0);\n        transition-duration: 0ms;\n        animation: none;\n        background-image: none;\n    }\n")
  112.         };
  113.         f = function () {
  114.             return "\n    @keyframes shimmer {\n        from {\n            left: -80%; \n            width: 80%; \n        }\n        \n        to {\n            left: 110%; \n            width: 10%;\n        }\n    }\n"
  115.         };
  116.         d = function (n) {
  117.             return "\n        ".concat("body::before", " {\n            transform: scaleX(1);\n            transition-duration: 0ms;\n            background: ").concat(n, ";\n            animation: shimmer 2s infinite;\n        }\n    ")
  118.         };
  119.         m = function (n) {
  120.             document && document.hidden ? n() : requestAnimationFrame((function () {
  121.                     n()
  122.                 }
  123.             ))
  124.         };
  125.         let g = function (n) {
  126.             const e = (n || {}).sheet;
  127.             if (e) {
  128.                 let t = !1
  129.                     , o = !1
  130.                     , r = null
  131.                     , g = null
  132.                     , R = null;
  133.                 return {
  134.                     inProgress: function() {
  135.                         return t
  136.                     },
  137.                     start: function () {
  138.                         const n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : i;
  139.                         t || (t = !0,
  140.                             m((function () {
  141.                                     e.insertRule(a(n), e.cssRules.length)
  142.                                 }
  143.                             )),
  144.                             g = setTimeout((function () {
  145.                                     t && (o = !0,
  146.                                         m((function () {
  147.                                                 e.insertRule(f(), e.cssRules.length),
  148.                                                     e.insertRule(d(u), e.cssRules.length)
  149.                                             }
  150.                                         )))
  151.                                 }
  152.                             ), i),
  153.                             R = setTimeout((function () {
  154.                                     t && (t = !1,
  155.                                         o = !1,
  156.                                         m((function () {
  157.                                                 e.insertRule(l(), e.cssRules.length)
  158.                                             }
  159.                                         )),
  160.                                         clearTimeout(r),
  161.                                         clearTimeout(g),
  162.                                         clearTimeout(R))
  163.                                 }
  164.                             ), c))
  165.                     },
  166.                     end: function () {
  167.                         if (t) {
  168.                             if (t = !1,
  169.                                 o)
  170.                                 return o = !1,
  171.                                     clearTimeout(r),
  172.                                     clearTimeout(R),
  173.                                     clearTimeout(g),
  174.                                     void m((function () {
  175.                                             e.insertRule(l(), e.cssRules.length)
  176.                                         }
  177.                                     ));
  178.                             m((function () {
  179.                                     e.insertRule(s(), e.cssRules.length)
  180.                                 }
  181.                             )),
  182.                                 r = setTimeout((function () {
  183.                                         clearTimeout(r),
  184.                                             clearTimeout(R),
  185.                                             clearTimeout(g),
  186.                                             m((function () {
  187.                                                     e.insertRule(l(), e.cssRules.length)
  188.                                                 }
  189.                                             ))
  190.                                     }
  191.                                 ), 800)
  192.                         }
  193.                     },
  194.                     reset: function () {
  195.                         t = !1,
  196.                             o = !1,
  197.                             clearTimeout(r),
  198.                             clearTimeout(g),
  199.                             clearTimeout(R),
  200.                             m((function () {
  201.                                     e.insertRule(l(), e.cssRules.length)
  202.                                 }
  203.                             ))
  204.                     }
  205.                 }
  206.             }
  207.         };
  208.         !function () {
  209.             const n = document.getElementById("progressStyles");
  210.             n && n.sheet && (window.seewhen_progress_bar = g(n),
  211.             window.seewhen_progress_bar && window.seewhen_progress_bar.start && window.seewhen_progress_bar.start())
  212.         }()
  213.     </script>
  214.     {#    <script src="{{ asset('packages/ui.js') }}"></script>#}
  215.     {{ encore_entry_script_tags('app') }}
  216. {% endblock javascripts %}
  217. {% block modals %}
  218.     {% if orders.invited|length>0 or orders.purchased|length>0 %}
  219.         <div class="modal fade" id="barcodeModal" tabindex="-1" role="dialog" aria-labelledby="ModalLabel" aria-hidden="true">
  220.             <div class="modal-dialog my-tickets">
  221.                 <div class="modal-content">
  222.                     <div class="modal-header justify-content-center">
  223.                         <h5 class="title title-up">My Lowdefest Tickets</h5>
  224.                     </div>
  225.                     <div class="modal-body text-center ">
  226.                         {% if orders.invited|length>1 or orders.purchased|length>1 or (orders.invited|length==1 and orders.purchased|length==1) %}
  227.                         <div id="orderTickets" class="carousel slide" data-ride="carousel" data-interval="false">
  228.                             <ol class="carousel-indicators">
  229.                                 {% for order in orders.purchased %}
  230.                                 <li data-target="#orderTickets" data-slide-to="{{ loop.index-1 }}" {% if loop.first %}class="active"{% endif %}></li>
  231.                                 {% endfor %}
  232.                                 {% for order in orders.invited %}
  233.                                 <li data-target="#orderTickets" data-slide-to="{{ orders.purchased|length + loop.index-1 }}" {% if loop.first and orders.purchased|length==0 %}class="active"{% endif %}></li>
  234.                                 {% endfor %}
  235.                             </ol>
  236.                             <div class="carousel-inner">
  237.                                 {% for order in orders.purchased %}
  238.                                     <div class="carousel-item {% if loop.first %}active{% endif %} sharable" data-id="{{ path('feapp_share_ticket',{id:order.id}) }}">
  239.                                         <img class="img-fluid" src="{{ url('img_qrcode_get_order',{'id':order.id}) }}">
  240.                                         <hr>
  241.                                         {% for ticket in order.tickets %}
  242.                                             <p>{{ ticket.type.name }}</p>
  243.                                         {% endfor %}
  244.                                     </div>
  245.                                 {% endfor%}
  246.                                 {% for order in orders.invited %}
  247.                                     <div class="carousel-item {% if loop.first and orders.purchased|length==0 %}active{% endif %}" data-id="{{ path('feapp_share_ticket',{id:order.id}) }}">
  248.                                         <img class="img-fluid" src="{{ url('img_qrcode_get_order',{'id':order.id}) }}">
  249.                                         <h6>{{ order.firstName }} {{ order.lastName }} shared this ticket with you</h6>
  250.                                         <hr>
  251.                                         {% for ticket in order.tickets %}
  252.                                             <p>{{ ticket.type.name }}</p>
  253.                                         {% endfor %}
  254.                                     </div>
  255.                                 {% endfor%}
  256.                             </div>
  257.                             <button class="carousel-control-prev" type="button" data-target="#orderTickets" data-slide="prev">
  258.                                 <span class="carousel-control-prev-icon" aria-hidden="true"></span>
  259.                                 <span class="sr-only">Previous</span>
  260.                             </button>
  261.                             <button class="carousel-control-next" type="button" data-target="#orderTickets" data-slide="next">
  262.                                 <span class="carousel-control-next-icon" aria-hidden="true"></span>
  263.                                 <span class="sr-only">Next</span>
  264.                             </button>
  265.                         </div>
  266.                         {% else %}
  267.                             {% if orders.purchased|length>0 %}
  268.                                 <img
  269.                                         class="img-fluid purchased"
  270.                                         src="{{ url('img_qrcode_get_order',{'id':orders.purchased.0.id}) }}"
  271.                                         data-id="{{ path('feapp_share_ticket',{id:orders.purchased.0.id}) }}"
  272.                                 >
  273.                                 <hr>
  274.                                 {% for ticket in orders.purchased.0.tickets %}
  275.                                     <p>{{ ticket.type.name }}</p>
  276.                                 {% endfor %}
  277.                             {% else %}
  278.                                 <img class="img-fluid" src="{{ url('img_qrcode_get_order',{'id':orders.invited.0.id}) }}">
  279.                                 <h6 class="sharedTickerInfo">{{ orders.invited.0.firstName }} {{ orders.invited.0.lastName }} shared this ticket with you</h6>
  280.                                 <hr>
  281.                                 {% for ticket in orders.invited.0.tickets %}
  282.                                     <p>{{ ticket.type.name }}</p>
  283.                                 {% endfor %}
  284.                             {% endif %}
  285.                         {% endif %}
  286.                     </div>
  287.                     <div class="modal-footer member">
  288.                         <button  type="button" class="btn btn-secondary" id="shareTicket">Send ticket</button>
  289.                         <button  type="button" class="btn btn-primary" data-dismiss="modal">Close</button>
  290.                     </div>
  291.                 </div>
  292.             </div>
  293.         </div>
  294.         <div class="modal fade" id="barcodeSharingModal" tabindex="-1" role="dialog" aria-labelledby="ModalLabel" aria-hidden="true">
  295.             <div class="modal-dialog my-tickets">
  296.                 <div class="modal-content">
  297.                     {{ form_start(shareForm) }}
  298.                     <div class="modal-header justify-content-center">
  299.                         <h5 class="title title-up">Send ticket to</h5>
  300.                     </div>
  301.                     <div class="modal-body text-center ">
  302.                         <div class="alert alert-info">
  303.                             <b>Important:</b> Only share your ticket with someone who should be able to use the QR code
  304.                             to gain entry on the day. We will only allow one entry per ticket type.
  305.                         </div>
  306.                         {{ form_row(shareForm.email) }}
  307.                     </div>
  308.                     <div class="modal-footer member">
  309.                         <button  type="submit" class="btn btn-primary" >Send</button>
  310.                     </div>
  311.                     {{ form_end(shareForm) }}
  312.                 </div>
  313.             </div>
  314.         </div>
  315.     {% endif %}
  316. {% endblock modals%}
  317. </body>
  318. </html>