0byt3m1n1
Path:
/
home
/
mgatv524
/
public_html
/
edurocha
/
cache
/
0f
/
[
Home
]
File: 0f9f0ce53e49b9af9e1be22e221bfa8076bbb4c0f107899189d82cd250194e1f.php
<?php use Twig\Environment; use Twig\Error\LoaderError; use Twig\Error\RuntimeError; use Twig\Markup; use Twig\Sandbox\SecurityError; use Twig\Sandbox\SecurityNotAllowedTagError; use Twig\Sandbox\SecurityNotAllowedFilterError; use Twig\Sandbox\SecurityNotAllowedFunctionError; use Twig\Source; use Twig\Template; /* statistics-page.twig */ class __TwigTemplate_7f4798f4ffa21a0608d933aa2d75467ef455ac1b1cf5f0c889cb97aa7277cba8 extends \Twig\Template { public function __construct(Environment $env) { parent::__construct($env); $this->blocks = [ 'pageContent' => [$this, 'block_pageContent'], 'javaScript' => [$this, 'block_javaScript'], ]; } protected function doGetParent(array $context) { // line 23 return "authed.twig"; } protected function doDisplay(array $context, array $blocks = []) { // line 24 $context["inline"] = $this->loadTemplate("inline.twig", "statistics-page.twig", 24)->unwrap(); // line 23 $this->parent = $this->loadTemplate("authed.twig", "statistics-page.twig", 23); $this->parent->display($context, array_merge($this->blocks, $blocks)); } // line 26 public function block_pageContent($context, array $blocks = []) { // line 27 echo " <div class=\"widget\"> <div class=\"widget-title\">"; // line 29 echo __("Bandwidth"); echo "</div> <div class=\"widget-body\"> <div class=\"XiboGrid\" id=\""; // line 31 echo twig_escape_filter($this->env, twig_random($this->env), "html", null, true); echo "\"> <div class=\"XiboFilter\"> <div class=\"FilterDiv\" id=\"bandwidthFilter\"> <form class=\"form-inline\"> "; // line 35 ob_start(); echo __("From Date"); $context["title"] = ('' === $tmp = ob_get_clean()) ? '' : new Markup($tmp, $this->env->getCharset()); // line 36 echo " "; echo $context["inline"]->getdateMonth("bandwidthFromDt", ($context["title"] ?? null), $this->getAttribute(($context["defaults"] ?? null), "toDate", []), "", "", "", ""); echo " "; // line 38 ob_start(); echo __("To Date"); $context["title"] = ('' === $tmp = ob_get_clean()) ? '' : new Markup($tmp, $this->env->getCharset()); // line 39 echo " "; echo $context["inline"]->getdateMonth("bandwidthToDt", ($context["title"] ?? null), $this->getAttribute(($context["defaults"] ?? null), "toDate", []), "", "", "", ""); echo " "; // line 41 ob_start(); echo __("Display"); $context["title"] = ('' === $tmp = ob_get_clean()) ? '' : new Markup($tmp, $this->env->getCharset()); // line 42 echo " "; $context["attributes"] = [0 => ["name" => "data-width", "value" => "200px"], 1 => ["name" => "data-allow-clear", "value" => "true"], 2 => ["name" => "data-placeholder--id", "value" => null], 3 => ["name" => "data-placeholder--value", "value" => ""], 4 => ["name" => "data-search-url", "value" => $this->env->getExtension('Slim\Views\TwigExtension')->urlFor("display.search")], 5 => ["name" => "data-search-term", "value" => "display"], 6 => ["name" => "data-search-term-tags", "value" => "tags"], 7 => ["name" => "data-id-property", "value" => "displayId"], 8 => ["name" => "data-text-property", "value" => "display"]]; // line 53 echo " "; echo $context["inline"]->getdropdown("displayId", "single", ($context["title"] ?? null), "", null, "displayId", "display", "", "pagedSelect", "", "d", "", ($context["attributes"] ?? null)); echo " </form> </div> </div> <div class=\"XiboData\"> <canvas id=\"bandwidthChart\" style=\"clear:both; margin-top:25px;\" height=\"330\"></canvas> </div> </div> </div> </div> <ul class=\"nav nav-pills pull-right\"> <li class=\"btn btn-warning btn-xs\"><a class=\"btns\" id=\"refreshGrid\" title=\""; // line 65 echo __("Refresh"); echo "\" href=\"#\"><i class=\"fa fa-refresh\" aria-hidden=\"true\"></i></a></li> </ul> <div class=\"widget\"> <div class=\"widget-title\">"; // line 68 echo __("Time Disconnected"); echo "</div> <div class=\"widget-body\"> <div class=\"XiboGrid\" id=\""; // line 70 echo twig_escape_filter($this->env, twig_random($this->env), "html", null, true); echo "\"> <div class=\"XiboFilter\"> <div class=\"FilterDiv\" id=\"availabilityFilter\"> <form class=\"form-inline\"> "; // line 74 ob_start(); echo __("From Date"); $context["title"] = ('' === $tmp = ob_get_clean()) ? '' : new Markup($tmp, $this->env->getCharset()); // line 75 echo " "; echo $context["inline"]->getdate("availabilityFromDt", ($context["title"] ?? null), $this->getAttribute(($context["defaults"] ?? null), "fromDate", []), "", "", "", ""); echo " "; // line 77 ob_start(); echo __("To Date"); $context["title"] = ('' === $tmp = ob_get_clean()) ? '' : new Markup($tmp, $this->env->getCharset()); // line 78 echo " "; echo $context["inline"]->getdate("availabilityToDt", ($context["title"] ?? null), $this->getAttribute(($context["defaults"] ?? null), "toDate", []), "", "", "", ""); echo " "; // line 80 ob_start(); echo __("Display"); $context["title"] = ('' === $tmp = ob_get_clean()) ? '' : new Markup($tmp, $this->env->getCharset()); // line 81 echo " "; $context["attributes"] = [0 => ["name" => "data-width", "value" => "200px"], 1 => ["name" => "data-allow-clear", "value" => "true"], 2 => ["name" => "data-placeholder--id", "value" => null], 3 => ["name" => "data-placeholder--value", "value" => ""], 4 => ["name" => "data-search-url", "value" => $this->env->getExtension('Slim\Views\TwigExtension')->urlFor("display.search")], 5 => ["name" => "data-search-term", "value" => "display"], 6 => ["name" => "data-search-term-tags", "value" => "tags"], 7 => ["name" => "data-id-property", "value" => "displayId"], 8 => ["name" => "data-text-property", "value" => "display"]]; // line 92 echo " "; echo $context["inline"]->getdropdown("displayId", "single", ($context["title"] ?? null), "", null, "displayId", "display", "", "pagedSelect", "", "d", "", ($context["attributes"] ?? null)); echo " "; // line 94 ob_start(); echo __("Display Group"); $context["title"] = ('' === $tmp = ob_get_clean()) ? '' : new Markup($tmp, $this->env->getCharset()); // line 95 echo " "; $context["attributes"] = [0 => ["name" => "data-width", "value" => "200px"], 1 => ["name" => "data-allow-clear", "value" => "true"], 2 => ["name" => "data-placeholder--id", "value" => null], 3 => ["name" => "data-placeholder--value", "value" => ""], 4 => ["name" => "data-search-url", "value" => $this->env->getExtension('Slim\Views\TwigExtension')->urlFor("displayGroup.search")], 5 => ["name" => "data-search-term", "value" => "displayGroup"], 6 => ["name" => "data-search-term-tags", "value" => "tags"], 7 => ["name" => "data-id-property", "value" => "displayGroupId"], 8 => ["name" => "data-text-property", "value" => "displayGroup"]]; // line 106 echo " "; echo $context["inline"]->getdropdown("displayGroupId", "single", ($context["title"] ?? null), "", null, "displayGroupId", "displayGroup", "", "pagedSelect", "", "d", "", ($context["attributes"] ?? null)); echo " "; // line 108 ob_start(); echo __("Tags"); $context["title"] = ('' === $tmp = ob_get_clean()) ? '' : new Markup($tmp, $this->env->getCharset()); // line 109 echo " "; ob_start(); echo __("Exact match?"); $context["exactTagTitle"] = ('' === $tmp = ob_get_clean()) ? '' : new Markup($tmp, $this->env->getCharset()); // line 110 echo " "; ob_start(); echo __("A comma separated list of tags to filter by. Enter --no-tag to see items without tags."); $context["helpText"] = ('' === $tmp = ob_get_clean()) ? '' : new Markup($tmp, $this->env->getCharset()); // line 111 echo " "; echo $context["inline"]->getinputWithTags("tags", ($context["title"] ?? null), null, ($context["helpText"] ?? null), null, null, null, "exactTags", ($context["exactTagTitle"] ?? null)); echo " "; // line 113 ob_start(); echo __("Only show currently logged in?"); $context["title"] = ('' === $tmp = ob_get_clean()) ? '' : new Markup($tmp, $this->env->getCharset()); // line 114 echo " "; echo $context["inline"]->getcheckbox("onlyLoggedIn", ($context["title"] ?? null)); echo " </form> </div> </div> <div class=\"XiboData\"> <table id=\"stats\" class=\"table table-striped\"> <thead> <tr> <th>"; // line 122 echo __("Display ID"); echo "</th> <th>"; // line 123 echo __("Display"); echo "</th> <th>"; // line 124 echo __("Time Disconnected"); echo "</th> <th>"; // line 125 echo __("Time Connected"); echo "</th> <th>"; // line 126 echo __("Units"); echo "</th> </tr> </thead> <tbody> </tbody> </table> </div> </div> </div> </div> <div class=\"widget\"> <div class=\"widget-body\"> <div class=\"XiboGrid\" id=\""; // line 141 echo twig_escape_filter($this->env, twig_random($this->env), "html", null, true); echo "\"> <div class=\"XiboData\" style=\"margin-top: 25px;\"> <canvas id=\"availabilityChart\" style=\"clear:both; margin-top:25px;\" height=\"330\"></canvas> </div> </div> </div> </div> "; } // line 152 public function block_javaScript($context, array $blocks = []) { // line 153 echo " <script type=\"text/javascript\"> var bandwidthChart = null; function setBandwidthChart() { \$.ajax({ type: \"get\", url: \""; // line 160 echo twig_escape_filter($this->env, $this->env->getExtension('Slim\Views\TwigExtension')->urlFor("stats.bandwidth.data"), "html", null, true); echo "\", cache: false, dataType: \"json\", data: \$(\"#bandwidthFilter\").find(\"form\").serialize(), success: function(response) { if (bandwidthChart !== undefined && bandwidthChart !== null) { console.log('Destroying Chart'); bandwidthChart.destroy(); } if (response.extra.data.length <= 0) { return; } // Create our chart bandwidthChart = new Chart(\$(\"#bandwidthChart\"), { type: \"bar\", data: { labels: response.extra.labels, datasets: [{ label: \""; // line 181 echo __("Bandwidth"); echo "\", backgroundColor: response.extra.backgroundColor, data: response.extra.data }] }, options: { scales: { yAxes: [{ scaleLabel: { display: true, labelString: response.extra.postUnits, } }] }, legend: { display: false }, maintainAspectRatio: false, } }); } }); } \$(document).ready(function() { setBandwidthChart(); // Bind to form change \$(\"#bandwidthFilter input, #bandwidthFilter select\").change(function() { setBandwidthChart(); }); }); var availabilityChart = null; \$(document).ready(function() { var table = \$(\"#stats\").DataTable({ \"language\": dataTablesLanguage, serverSide: true, stateSave: true, stateDuration: 0, filter: false, searchDelay: 3000, \"order\": [[0, \"asc\"]], ajax: { \"url\": \""; // line 225 echo twig_escape_filter($this->env, $this->env->getExtension('Slim\Views\TwigExtension')->urlFor("stats.timeDisconnected.data"), "html", null, true); echo "\", \"data\": function (d) { \$.extend(d, \$(\"#stats\").closest(\".XiboGrid\").find(\".FilterDiv form\").serializeObject()); } }, \"columns\": [ {\"data\": \"displayId\"}, {\"data\": \"display\"}, {\"data\": \"timeDisconnected\", \"sortable\": false}, {\"data\": \"timeConnected\", \"sortable\": false}, {\"data\": \"postUnits\", \"sortable\": false} ] }); table.on('draw', dataTableDraw); table.on('processing.dt', function(e, settings, processing) { dataTableProcessing(e, settings, processing); if (!processing) { // Render a Time Disconnected graph if (availabilityChart !== undefined && availabilityChart !== null) { console.log('Destroying Chart'); availabilityChart.destroy(); } // Organise our rows into datasets for the chart var availabilityData = []; var availabilityDataConnected = []; var availabilityLabels = []; var postUnits = \"\"; var dataSets = []; \$.each(table.data(), function(index, el) { availabilityData.push(el.timeDisconnected); availabilityDataConnected.push(el.timeConnected); availabilityLabels.push(el.display); postUnits = el.postUnits; }); dataSets.push({ label: \""; // line 264 echo __("Downtime"); echo "\", backgroundColor: \"rgb(11, 98, 164)\", data: availabilityData }); if (availabilityDataConnected != null) { dataSets.push({ label: \""; // line 270 echo __("Uptime"); echo "\", backgroundColor: \"rgb(0, 255, 0)\", data: availabilityDataConnected }); } // Create our chart availabilityChart = new Chart(\$(\"#availabilityChart\"), { type: \"bar\", data: { labels: availabilityLabels, datasets: dataSets }, options: { scales: { xAxes: [{ stacked: true }], yAxes: [{ scaleLabel: { display: true, labelString: postUnits, }, stacked: true }] }, legend: { display: false }, maintainAspectRatio: false, } }); } }); \$(\"#refreshGrid\").click(function () { table.ajax.reload(); }); }); </script> "; } public function getTemplateName() { return "statistics-page.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 387 => 270, 378 => 264, 336 => 225, 289 => 181, 265 => 160, 256 => 153, 253 => 152, 239 => 141, 221 => 126, 217 => 125, 213 => 124, 209 => 123, 205 => 122, 193 => 114, 189 => 113, 183 => 111, 178 => 110, 173 => 109, 169 => 108, 163 => 106, 160 => 95, 156 => 94, 150 => 92, 147 => 81, 143 => 80, 137 => 78, 133 => 77, 127 => 75, 123 => 74, 116 => 70, 111 => 68, 105 => 65, 89 => 53, 86 => 42, 82 => 41, 76 => 39, 72 => 38, 66 => 36, 62 => 35, 55 => 31, 50 => 29, 46 => 27, 43 => 26, 38 => 23, 36 => 24, 30 => 23,); } /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ public function getSource() { @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); return $this->getSourceContext()->getCode(); } public function getSourceContext() { return new Source("{# /** * Copyright (C) 2020 Xibo Signage Ltd * * Xibo - Digital Signage - http://www.xibo.org.uk * * This file is part of Xibo. * * Xibo is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * Xibo is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with Xibo. If not, see <http://www.gnu.org/licenses/>. */ #} {% extends \"authed.twig\" %} {% import \"inline.twig\" as inline %} {% block pageContent %} <div class=\"widget\"> <div class=\"widget-title\">{% trans \"Bandwidth\" %}</div> <div class=\"widget-body\"> <div class=\"XiboGrid\" id=\"{{ random() }}\"> <div class=\"XiboFilter\"> <div class=\"FilterDiv\" id=\"bandwidthFilter\"> <form class=\"form-inline\"> {% set title %}{% trans \"From Date\" %}{% endset %} {{ inline.dateMonth(\"bandwidthFromDt\", title, defaults.toDate, \"\", \"\", \"\", \"\") }} {% set title %}{% trans \"To Date\" %}{% endset %} {{ inline.dateMonth(\"bandwidthToDt\", title, defaults.toDate, \"\", \"\", \"\", \"\") }} {% set title %}{% trans \"Display\" %}{% endset %} {% set attributes = [ { name: \"data-width\", value: \"200px\" }, { name: \"data-allow-clear\", value: \"true\" }, { name: \"data-placeholder--id\", value: null }, { name: \"data-placeholder--value\", value: \"\" }, { name: \"data-search-url\", value: urlFor(\"display.search\") }, { name: \"data-search-term\", value: \"display\" }, { name: \"data-search-term-tags\", value: \"tags\" }, { name: \"data-id-property\", value: \"displayId\" }, { name: \"data-text-property\", value: \"display\" } ] %} {{ inline.dropdown(\"displayId\", \"single\", title, \"\", null, \"displayId\", \"display\", \"\", \"pagedSelect\", \"\", \"d\", \"\", attributes) }} </form> </div> </div> <div class=\"XiboData\"> <canvas id=\"bandwidthChart\" style=\"clear:both; margin-top:25px;\" height=\"330\"></canvas> </div> </div> </div> </div> <ul class=\"nav nav-pills pull-right\"> <li class=\"btn btn-warning btn-xs\"><a class=\"btns\" id=\"refreshGrid\" title=\"{% trans \"Refresh\" %}\" href=\"#\"><i class=\"fa fa-refresh\" aria-hidden=\"true\"></i></a></li> </ul> <div class=\"widget\"> <div class=\"widget-title\">{% trans \"Time Disconnected\" %}</div> <div class=\"widget-body\"> <div class=\"XiboGrid\" id=\"{{ random() }}\"> <div class=\"XiboFilter\"> <div class=\"FilterDiv\" id=\"availabilityFilter\"> <form class=\"form-inline\"> {% set title %}{% trans \"From Date\" %}{% endset %} {{ inline.date(\"availabilityFromDt\", title, defaults.fromDate, \"\", \"\", \"\", \"\") }} {% set title %}{% trans \"To Date\" %}{% endset %} {{ inline.date(\"availabilityToDt\", title, defaults.toDate, \"\", \"\", \"\", \"\") }} {% set title %}{% trans \"Display\" %}{% endset %} {% set attributes = [ { name: \"data-width\", value: \"200px\" }, { name: \"data-allow-clear\", value: \"true\" }, { name: \"data-placeholder--id\", value: null }, { name: \"data-placeholder--value\", value: \"\" }, { name: \"data-search-url\", value: urlFor(\"display.search\") }, { name: \"data-search-term\", value: \"display\" }, { name: \"data-search-term-tags\", value: \"tags\" }, { name: \"data-id-property\", value: \"displayId\" }, { name: \"data-text-property\", value: \"display\" } ] %} {{ inline.dropdown(\"displayId\", \"single\", title, \"\", null, \"displayId\", \"display\", \"\", \"pagedSelect\", \"\", \"d\", \"\", attributes) }} {% set title %}{% trans \"Display Group\" %}{% endset %} {% set attributes = [ { name: \"data-width\", value: \"200px\" }, { name: \"data-allow-clear\", value: \"true\" }, { name: \"data-placeholder--id\", value: null }, { name: \"data-placeholder--value\", value: \"\" }, { name: \"data-search-url\", value: urlFor(\"displayGroup.search\") }, { name: \"data-search-term\", value: \"displayGroup\" }, { name: \"data-search-term-tags\", value: \"tags\" }, { name: \"data-id-property\", value: \"displayGroupId\" }, { name: \"data-text-property\", value: \"displayGroup\" } ] %} {{ inline.dropdown(\"displayGroupId\", \"single\", title, \"\", null, \"displayGroupId\", \"displayGroup\", \"\", \"pagedSelect\", \"\", \"d\", \"\", attributes) }} {% set title %}{% trans \"Tags\" %}{% endset %} {% set exactTagTitle %}{% trans \"Exact match?\" %}{% endset %} {% set helpText %}{% trans \"A comma separated list of tags to filter by. Enter --no-tag to see items without tags.\" %}{% endset %} {{ inline.inputWithTags(\"tags\", title, null, helpText, null, null, null, \"exactTags\", exactTagTitle) }} {% set title %}{% trans \"Only show currently logged in?\" %}{% endset %} {{ inline.checkbox(\"onlyLoggedIn\", title) }} </form> </div> </div> <div class=\"XiboData\"> <table id=\"stats\" class=\"table table-striped\"> <thead> <tr> <th>{% trans \"Display ID\" %}</th> <th>{% trans \"Display\" %}</th> <th>{% trans \"Time Disconnected\" %}</th> <th>{% trans \"Time Connected\" %}</th> <th>{% trans \"Units\" %}</th> </tr> </thead> <tbody> </tbody> </table> </div> </div> </div> </div> <div class=\"widget\"> <div class=\"widget-body\"> <div class=\"XiboGrid\" id=\"{{ random() }}\"> <div class=\"XiboData\" style=\"margin-top: 25px;\"> <canvas id=\"availabilityChart\" style=\"clear:both; margin-top:25px;\" height=\"330\"></canvas> </div> </div> </div> </div> {% endblock %} {% block javaScript %} <script type=\"text/javascript\"> var bandwidthChart = null; function setBandwidthChart() { \$.ajax({ type: \"get\", url: \"{{ urlFor(\"stats.bandwidth.data\") }}\", cache: false, dataType: \"json\", data: \$(\"#bandwidthFilter\").find(\"form\").serialize(), success: function(response) { if (bandwidthChart !== undefined && bandwidthChart !== null) { console.log('Destroying Chart'); bandwidthChart.destroy(); } if (response.extra.data.length <= 0) { return; } // Create our chart bandwidthChart = new Chart(\$(\"#bandwidthChart\"), { type: \"bar\", data: { labels: response.extra.labels, datasets: [{ label: \"{% trans \"Bandwidth\" %}\", backgroundColor: response.extra.backgroundColor, data: response.extra.data }] }, options: { scales: { yAxes: [{ scaleLabel: { display: true, labelString: response.extra.postUnits, } }] }, legend: { display: false }, maintainAspectRatio: false, } }); } }); } \$(document).ready(function() { setBandwidthChart(); // Bind to form change \$(\"#bandwidthFilter input, #bandwidthFilter select\").change(function() { setBandwidthChart(); }); }); var availabilityChart = null; \$(document).ready(function() { var table = \$(\"#stats\").DataTable({ \"language\": dataTablesLanguage, serverSide: true, stateSave: true, stateDuration: 0, filter: false, searchDelay: 3000, \"order\": [[0, \"asc\"]], ajax: { \"url\": \"{{ urlFor(\"stats.timeDisconnected.data\") }}\", \"data\": function (d) { \$.extend(d, \$(\"#stats\").closest(\".XiboGrid\").find(\".FilterDiv form\").serializeObject()); } }, \"columns\": [ {\"data\": \"displayId\"}, {\"data\": \"display\"}, {\"data\": \"timeDisconnected\", \"sortable\": false}, {\"data\": \"timeConnected\", \"sortable\": false}, {\"data\": \"postUnits\", \"sortable\": false} ] }); table.on('draw', dataTableDraw); table.on('processing.dt', function(e, settings, processing) { dataTableProcessing(e, settings, processing); if (!processing) { // Render a Time Disconnected graph if (availabilityChart !== undefined && availabilityChart !== null) { console.log('Destroying Chart'); availabilityChart.destroy(); } // Organise our rows into datasets for the chart var availabilityData = []; var availabilityDataConnected = []; var availabilityLabels = []; var postUnits = \"\"; var dataSets = []; \$.each(table.data(), function(index, el) { availabilityData.push(el.timeDisconnected); availabilityDataConnected.push(el.timeConnected); availabilityLabels.push(el.display); postUnits = el.postUnits; }); dataSets.push({ label: \"{% trans \"Downtime\" %}\", backgroundColor: \"rgb(11, 98, 164)\", data: availabilityData }); if (availabilityDataConnected != null) { dataSets.push({ label: \"{% trans \"Uptime\" %}\", backgroundColor: \"rgb(0, 255, 0)\", data: availabilityDataConnected }); } // Create our chart availabilityChart = new Chart(\$(\"#availabilityChart\"), { type: \"bar\", data: { labels: availabilityLabels, datasets: dataSets }, options: { scales: { xAxes: [{ stacked: true }], yAxes: [{ scaleLabel: { display: true, labelString: postUnits, }, stacked: true }] }, legend: { display: false }, maintainAspectRatio: false, } }); } }); \$(\"#refreshGrid\").click(function () { table.ajax.reload(); }); }); </script> {% endblock %}", "statistics-page.twig", "/home/mgatv524/public_html/edurocha/views/statistics-page.twig"); } }