0byt3m1n1
Path:
/
home
/
mgatv524
/
public_html
/
fmd
/
cache
/
ab
/
[
Home
]
File: ab85494fffc10448959e9876642f06f2a1c0228d1909590cf4f359dc5370fca9.php
<?php /* campaign-page.twig */ class __TwigTemplate_4a5cc03a04ceccb33bb2c82d429da1703c13c177e2df6104f206ce661ce7aeef extends Twig_Template { public function __construct(Twig_Environment $env) { parent::__construct($env); // line 23 $this->parent = $this->loadTemplate("authed.twig", "campaign-page.twig", 23); $this->blocks = array( 'actionMenu' => array($this, 'block_actionMenu'), 'pageContent' => array($this, 'block_pageContent'), 'javaScript' => array($this, 'block_javaScript'), ); } protected function doGetParent(array $context) { return "authed.twig"; } protected function doDisplay(array $context, array $blocks = array()) { // line 24 $context["inline"] = $this->loadTemplate("inline.twig", "campaign-page.twig", 24); // line 23 $this->parent->display($context, array_merge($this->blocks, $blocks)); } // line 26 public function block_actionMenu($context, array $blocks = array()) { // line 27 echo " <ul class=\"nav nav-pills pull-right\"> <li class=\"btn btn-success btn-xs\"><a class=\"XiboFormButton btns\" title=\""; // line 28 echo __("Add a new Campaign"); echo "\" href=\""; echo twig_escape_filter($this->env, $this->env->getExtension('Slim\Views\TwigExtension')->urlFor("campaign.add.form"), "html", null, true); echo "\"> <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> "; echo __("Add Campaign"); echo "</a></li> </ul> "; } // line 33 public function block_pageContent($context, array $blocks = array()) { // line 34 echo " <div class=\"widget\"> <div class=\"widget-title\">"; // line 35 echo __("Campaigns"); echo "</div> <div class=\"widget-body\"> <div class=\"XiboGrid\" id=\""; // line 37 echo twig_escape_filter($this->env, twig_random($this->env), "html", null, true); echo "\"> <div class=\"XiboFilter well\"> <div class=\"FilterDiv\" id=\"Filter\"> <form class=\"form-inline\"> "; // line 41 ob_start(); echo __("Name"); $context["title"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); // line 42 echo " "; echo $context["inline"]->getinput("name", ($context["title"] ?? null)); echo " "; // line 44 ob_start(); echo __("Tags"); $context["title"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); // line 45 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 Twig_Markup($tmp, $this->env->getCharset()); // line 46 echo " "; echo $context["inline"]->getinputWithTags("tags", ($context["title"] ?? null), null, ($context["helpText"] ?? null)); echo " "; // line 48 ob_start(); echo __("Layouts"); $context["title"] = ('' === $tmp = ob_get_clean()) ? '' : new Twig_Markup($tmp, $this->env->getCharset()); // line 49 echo " "; $context["values"] = array(0 => array("id" => 0, "value" => ""), 1 => array("id" => 2, "value" => "Yes"), 2 => array("id" => 1, "value" => "No")); // line 50 echo " "; echo $context["inline"]->getdropdown("hasLayouts", "single", ($context["title"] ?? null), 0, ($context["values"] ?? null), "id", "value"); echo " </form> </div> </div> <div class=\"XiboData\"> <table id=\"campaigns\" class=\"table table-striped\"> <thead> <tr> <th>"; // line 58 echo __("Name"); echo "</th> <th>"; // line 59 echo __("# Layouts"); echo "</th> <th>"; // line 60 echo __("Tags"); echo "</th> <th>"; // line 61 echo __("Duration"); echo "</th> <th></th> </tr> </thead> <tbody> </tbody> </table> </div> </div> </div> </div> "; } // line 75 public function block_javaScript($context, array $blocks = array()) { // line 76 echo " <script type=\"text/javascript\"> // Configure the DataTable var table = \$(\"#campaigns\").DataTable({ \"language\": dataTablesLanguage, serverSide: true, stateSave: true, stateDuration: 0, \"filter\": false, searchDelay: 3000, \"order\": [[ 0, \"asc\"]], ajax: { url: \""; // line 84 echo twig_escape_filter($this->env, $this->env->getExtension('Slim\Views\TwigExtension')->urlFor("campaign.search"), "html", null, true); echo "\", \"data\": function(d) { \$.extend(d, \$(\"#campaigns\").closest(\".XiboGrid\").find(\".FilterDiv form\").serializeObject()); } }, \"columns\": [ { \"data\": \"campaign\" , \"render\": dataTableSpacingPreformatted }, { \"data\": \"numberLayouts\" }, { \"sortable\": false, \"data\": dataTableCreateTags }, { \"data\": \"totalDuration\" }, { \"orderable\": false, \"data\": dataTableButtonsColumn } ] }); // Data Table events table.on('draw', dataTableDraw); table.on('draw', { form: \$(\"#campaigns\").closest(\".XiboGrid\").find(\".FilterDiv form\") }, dataTableCreateTagEvents); table.on('processing.dt', dataTableProcessing); // Callback for the media form // Fired when the media form opens function campaignAssignLayoutsFormOpen(dialog) { // Convert our filter form tags inputs into actual tag inputs \$(dialog).find(\"#tags\").tagsinput(); // Hold a container for the layouts we have assigned already var container = \$(\"#LayoutAssign\"); // Layout DataTable var layoutTable = \$(\"#layoutAssignments\").DataTable({ \"language\": dataTablesLanguage, serverSide: true, stateSave: true, stateDuration: 0, stateLoadCallback: function (settings, callback) { var data; \$.ajax({ type: \"GET\", async: false, url: \""; // line 132 echo twig_escape_filter($this->env, $this->env->getExtension('Slim\Views\TwigExtension')->urlFor("user.pref"), "html", null, true); echo "?preference=campaignGrid\", dataType: 'json', success: function (json) { if (json.success) data = JSON.parse(json.data.value); } }); return data; }, stateSaveCallback: function (settings, data) { \$.ajax({ type: \"POST\", url: \""; // line 144 echo twig_escape_filter($this->env, $this->env->getExtension('Slim\Views\TwigExtension')->urlFor("user.pref"), "html", null, true); echo "\", data: { preference: [{ option: \"campaignGrid\", value: JSON.stringify(data) }] } }); }, searchDelay: 3000, \"order\": [[ 0, \"asc\"]], \"filter\": false, ajax: { url: \""; // line 157 echo twig_escape_filter($this->env, $this->env->getExtension('Slim\Views\TwigExtension')->urlFor("layout.search"), "html", null, true); echo "\", \"data\": function(d) { \$.extend(d, \$(\"#layoutAssignments\").closest(\".XiboGrid\").find(\".layoutAssignFilterOptions form\").serializeObject()); } }, \"columns\": [ { \"data\": \"layoutId\" }, { \"data\": \"layout\", \"render\": dataTableSpacingPreformatted }, { \"sortable\": false, \"data\": function(data, type, row, meta) { if (type != \"display\") return \"\"; // Create a click-able span return \"<a href=\\\"#\\\" class=\\\"assignItem\\\"><span class=\\\"glyphicon glyphicon-plus-sign\\\"></a>\"; } } ] }); layoutTable.on('draw', { form: \$(\"#layoutAssignments\").closest(\".XiboGrid\").find(\"form\") }, function(e, settings) { dataTableDraw(e, settings); dataTableCreateTagEvents(e, settings); // Clicky on the +spans \$(\".assignItem\", \"#layoutAssignments\").click(function() { // Get the row that this is in. var data = layoutTable.row(\$(this).closest(\"tr\")).data(); // Append to our layouts list // We are adding a new layout, so the display order should be the highest display order var order = nextDisplayOrder(); // Construct a new item for the assigned box var newItem = \$(\"<li/>\", { \"text\": data.layout, \"data-layout-id\": data.layoutId, \"data-display-order\": order, \"class\": \"btn btn-sm btn-default\" }); newItem.appendTo(\"#LayoutAssignSortable\"); // Add a span to that new item \$(\"<span/>\", { \"class\": \"glyphicon glyphicon-minus-sign\", click: function(){ \$(this).parent().remove(); } }).appendTo(newItem); }); }); layoutTable.on('processing.dt', dataTableProcessing); // Make our little list sortable \$(\"#LayoutAssignSortable\").sortable(); // Bind to the existing items in the list \$(\"#LayoutAssignSortable\").find('li span').click(function () { \$(this).parent().remove(); }); // Bind the filter form \$(\".layoutAssignFilterOptions\").find(\"input, select\").change(function() { layoutTable.ajax.reload(); }); // Get the original sortable positions container.data().originalLayoutPositions = []; \$(\"#LayoutAssignSortable\").find(\"li\").each(function(){ container.data().originalLayoutPositions.push(\$(this).data(\"layoutId\")); }); } function layoutAssignSubmit() { // Collect our media var container = \$(\"#LayoutAssign\"); var originalLayoutPositions = container.data().originalLayoutPositions; var originalPositionsLength = originalLayoutPositions.length; var finalLayoutPositions = []; var layoutChanges = []; // Get the final sortable positions finalLayoutPositions = []; \$(\"#LayoutAssignSortable\").find(\"li\").each(function(){ finalLayoutPositions.push(\$(this).data(\"layoutId\")); }); // Build an array of id's to assign and an array to unassign var assign = []; var unassign = []; for (var i = 0; i < finalLayoutPositions.length; i++) { var elem = finalLayoutPositions[i]; // Search for the element on the original layout if (originalLayoutPositions.indexOf(elem) != -1) { var originalPosition = originalLayoutPositions.indexOf(elem); var finalPosition = i; // If the original position is different from the final, make the swap if (originalPosition != finalPosition) { // Remove from the original position unassign.push({layoutId: elem, displayOrder: originalPosition+1}); // Assign to the new position assign.push({layoutId: elem, displayOrder: finalPosition+1}); } // Clean picked element from the original list originalLayoutPositions[originalPosition] = -1; } else { // If the element is not on the list add it to the end of it assign.push({layoutId: elem, displayOrder: originalPositionsLength}); // Increase the last position variable originalPositionsLength++ } } // Remove all non processed elements for (var i = 0; i < originalLayoutPositions.length; i++) { if (originalLayoutPositions[i] != -1) { var elem = originalLayoutPositions[i]; // Remove from the original position unassign.push({layoutId: elem, displayOrder: i+1}); } } assignLayoutsToCampaign(container.data().url, assign, unassign); } function assignLayoutsToCampaign(url, layout, unassign) { toastr.info(layout, \"Assign Layouts to Campaign\"); \$.ajax({ type: \"post\", url: url, cache: false, dataType: \"json\", data: {layoutId: layout, unassignLayoutId: unassign}, success: XiboSubmitResponse }); } function nextDisplayOrder() { // Look through the assignment list and get the next display order var high = 0; \$(\"#LayoutAssign li\").each(function() { var itemOrder = \$(this).data().displayOrder; if (itemOrder > high) high = itemOrder; }); return high + 1; } </script> "; } public function getTemplateName() { return "campaign-page.twig"; } public function isTraitable() { return false; } public function getDebugInfo() { return array ( 236 => 157, 220 => 144, 205 => 132, 154 => 84, 144 => 76, 141 => 75, 124 => 61, 120 => 60, 116 => 59, 112 => 58, 100 => 50, 97 => 49, 93 => 48, 87 => 46, 82 => 45, 78 => 44, 72 => 42, 68 => 41, 61 => 37, 56 => 35, 53 => 34, 50 => 33, 39 => 28, 36 => 27, 33 => 26, 29 => 23, 27 => 24, 11 => 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 Twig_Source("{# /* * Xibo - Digital Signage - http://www.xibo.org.uk * Copyright (C) 2015-2018 Spring Signage Ltd * * 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/>. */ This is the template for the campaign page #} {% extends \"authed.twig\" %} {% import \"inline.twig\" as inline %} {% block actionMenu %} <ul class=\"nav nav-pills pull-right\"> <li class=\"btn btn-success btn-xs\"><a class=\"XiboFormButton btns\" title=\"{% trans \"Add a new Campaign\" %}\" href=\"{{ urlFor(\"campaign.add.form\") }}\"> <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> {% trans \"Add Campaign\" %}</a></li> </ul> {% endblock %} {% block pageContent %} <div class=\"widget\"> <div class=\"widget-title\">{% trans \"Campaigns\" %}</div> <div class=\"widget-body\"> <div class=\"XiboGrid\" id=\"{{ random() }}\"> <div class=\"XiboFilter well\"> <div class=\"FilterDiv\" id=\"Filter\"> <form class=\"form-inline\"> {% set title %}{% trans \"Name\" %}{% endset %} {{ inline.input(\"name\", title) }} {% set title %}{% trans \"Tags\" %}{% 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) }} {% set title %}{% trans \"Layouts\" %}{% endset %} {% set values = [{id: 0, value: \"\"}, {id: 2, value: \"Yes\"}, {id: 1, value: \"No\"}] %} {{ inline.dropdown(\"hasLayouts\", \"single\", title, 0, values, \"id\", \"value\") }} </form> </div> </div> <div class=\"XiboData\"> <table id=\"campaigns\" class=\"table table-striped\"> <thead> <tr> <th>{% trans \"Name\" %}</th> <th>{% trans \"# Layouts\" %}</th> <th>{% trans \"Tags\" %}</th> <th>{% trans \"Duration\" %}</th> <th></th> </tr> </thead> <tbody> </tbody> </table> </div> </div> </div> </div> {% endblock %} {% block javaScript %} <script type=\"text/javascript\"> // Configure the DataTable var table = \$(\"#campaigns\").DataTable({ \"language\": dataTablesLanguage, serverSide: true, stateSave: true, stateDuration: 0, \"filter\": false, searchDelay: 3000, \"order\": [[ 0, \"asc\"]], ajax: { url: \"{{ urlFor(\"campaign.search\") }}\", \"data\": function(d) { \$.extend(d, \$(\"#campaigns\").closest(\".XiboGrid\").find(\".FilterDiv form\").serializeObject()); } }, \"columns\": [ { \"data\": \"campaign\" , \"render\": dataTableSpacingPreformatted }, { \"data\": \"numberLayouts\" }, { \"sortable\": false, \"data\": dataTableCreateTags }, { \"data\": \"totalDuration\" }, { \"orderable\": false, \"data\": dataTableButtonsColumn } ] }); // Data Table events table.on('draw', dataTableDraw); table.on('draw', { form: \$(\"#campaigns\").closest(\".XiboGrid\").find(\".FilterDiv form\") }, dataTableCreateTagEvents); table.on('processing.dt', dataTableProcessing); // Callback for the media form // Fired when the media form opens function campaignAssignLayoutsFormOpen(dialog) { // Convert our filter form tags inputs into actual tag inputs \$(dialog).find(\"#tags\").tagsinput(); // Hold a container for the layouts we have assigned already var container = \$(\"#LayoutAssign\"); // Layout DataTable var layoutTable = \$(\"#layoutAssignments\").DataTable({ \"language\": dataTablesLanguage, serverSide: true, stateSave: true, stateDuration: 0, stateLoadCallback: function (settings, callback) { var data; \$.ajax({ type: \"GET\", async: false, url: \"{{ urlFor(\"user.pref\") }}?preference=campaignGrid\", dataType: 'json', success: function (json) { if (json.success) data = JSON.parse(json.data.value); } }); return data; }, stateSaveCallback: function (settings, data) { \$.ajax({ type: \"POST\", url: \"{{ urlFor(\"user.pref\") }}\", data: { preference: [{ option: \"campaignGrid\", value: JSON.stringify(data) }] } }); }, searchDelay: 3000, \"order\": [[ 0, \"asc\"]], \"filter\": false, ajax: { url: \"{{ urlFor(\"layout.search\") }}\", \"data\": function(d) { \$.extend(d, \$(\"#layoutAssignments\").closest(\".XiboGrid\").find(\".layoutAssignFilterOptions form\").serializeObject()); } }, \"columns\": [ { \"data\": \"layoutId\" }, { \"data\": \"layout\", \"render\": dataTableSpacingPreformatted }, { \"sortable\": false, \"data\": function(data, type, row, meta) { if (type != \"display\") return \"\"; // Create a click-able span return \"<a href=\\\"#\\\" class=\\\"assignItem\\\"><span class=\\\"glyphicon glyphicon-plus-sign\\\"></a>\"; } } ] }); layoutTable.on('draw', { form: \$(\"#layoutAssignments\").closest(\".XiboGrid\").find(\"form\") }, function(e, settings) { dataTableDraw(e, settings); dataTableCreateTagEvents(e, settings); // Clicky on the +spans \$(\".assignItem\", \"#layoutAssignments\").click(function() { // Get the row that this is in. var data = layoutTable.row(\$(this).closest(\"tr\")).data(); // Append to our layouts list // We are adding a new layout, so the display order should be the highest display order var order = nextDisplayOrder(); // Construct a new item for the assigned box var newItem = \$(\"<li/>\", { \"text\": data.layout, \"data-layout-id\": data.layoutId, \"data-display-order\": order, \"class\": \"btn btn-sm btn-default\" }); newItem.appendTo(\"#LayoutAssignSortable\"); // Add a span to that new item \$(\"<span/>\", { \"class\": \"glyphicon glyphicon-minus-sign\", click: function(){ \$(this).parent().remove(); } }).appendTo(newItem); }); }); layoutTable.on('processing.dt', dataTableProcessing); // Make our little list sortable \$(\"#LayoutAssignSortable\").sortable(); // Bind to the existing items in the list \$(\"#LayoutAssignSortable\").find('li span').click(function () { \$(this).parent().remove(); }); // Bind the filter form \$(\".layoutAssignFilterOptions\").find(\"input, select\").change(function() { layoutTable.ajax.reload(); }); // Get the original sortable positions container.data().originalLayoutPositions = []; \$(\"#LayoutAssignSortable\").find(\"li\").each(function(){ container.data().originalLayoutPositions.push(\$(this).data(\"layoutId\")); }); } function layoutAssignSubmit() { // Collect our media var container = \$(\"#LayoutAssign\"); var originalLayoutPositions = container.data().originalLayoutPositions; var originalPositionsLength = originalLayoutPositions.length; var finalLayoutPositions = []; var layoutChanges = []; // Get the final sortable positions finalLayoutPositions = []; \$(\"#LayoutAssignSortable\").find(\"li\").each(function(){ finalLayoutPositions.push(\$(this).data(\"layoutId\")); }); // Build an array of id's to assign and an array to unassign var assign = []; var unassign = []; for (var i = 0; i < finalLayoutPositions.length; i++) { var elem = finalLayoutPositions[i]; // Search for the element on the original layout if (originalLayoutPositions.indexOf(elem) != -1) { var originalPosition = originalLayoutPositions.indexOf(elem); var finalPosition = i; // If the original position is different from the final, make the swap if (originalPosition != finalPosition) { // Remove from the original position unassign.push({layoutId: elem, displayOrder: originalPosition+1}); // Assign to the new position assign.push({layoutId: elem, displayOrder: finalPosition+1}); } // Clean picked element from the original list originalLayoutPositions[originalPosition] = -1; } else { // If the element is not on the list add it to the end of it assign.push({layoutId: elem, displayOrder: originalPositionsLength}); // Increase the last position variable originalPositionsLength++ } } // Remove all non processed elements for (var i = 0; i < originalLayoutPositions.length; i++) { if (originalLayoutPositions[i] != -1) { var elem = originalLayoutPositions[i]; // Remove from the original position unassign.push({layoutId: elem, displayOrder: i+1}); } } assignLayoutsToCampaign(container.data().url, assign, unassign); } function assignLayoutsToCampaign(url, layout, unassign) { toastr.info(layout, \"Assign Layouts to Campaign\"); \$.ajax({ type: \"post\", url: url, cache: false, dataType: \"json\", data: {layoutId: layout, unassignLayoutId: unassign}, success: XiboSubmitResponse }); } function nextDisplayOrder() { // Look through the assignment list and get the next display order var high = 0; \$(\"#LayoutAssign li\").each(function() { var itemOrder = \$(this).data().displayOrder; if (itemOrder > high) high = itemOrder; }); return high + 1; } </script> {% endblock %} ", "campaign-page.twig", "/home2/mgatv524/public_html/fmd/views/campaign-page.twig"); } }