0byt3m1n1
Path:
/
home
/
mgatv524
/
cms.mgaplay.com.br
/
views
/
[
Home
]
File: template-page.twig
{# /** * Copyright (C) 2022 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 title %}{{ "Templates"|trans }} | {% endblock %} {% block actionMenu %} {% if currentUser.featureEnabled("template.add") %} <div class="widget-action-menu pull-right"> <button class="btn btn-success XiboFormButton btns" title="{% trans "Add a new Template and jump to the layout designer." %}" href="{{ url_for("template.add.form") }}"><i class="fa fa-plus-circle" aria-hidden="true"></i> {% trans "Add Template" %}</button> </div> {% endif %} {% endblock %} {% block pageContent %} <div class="widget"> <div class="widget-title">{% trans "Templates" %}</div> <div class="widget-body"> <div class="XiboGrid" id="{{ random() }}" data-grid-name="templateView"> <div class="XiboFilter card mb-3 bg-light"> <div class="FilterDiv card-body" id="Filter"> <form class="form-inline"> {% set title %}{% trans "Name" %}{% endset %} {{ inline.inputNameGrid('template', title) }} {% if currentUser.featureEnabled("tag.tagging") %} {% set title %}{% trans "Tags" %}{% endset %} {% set exactTagTitle %}{% trans "Exact match?" %}{% endset %} {% set logicalOperatorTitle %}{% trans "When filtering by multiple Tags, which logical operator should be used?" %}{% endset %} {% set helpText %}{% trans "A comma separated list of tags to filter by. Enter a Tag value preceded with | to filter by Tag values. Enter --no-tag to see items without tags." %}{% endset %} {{ inline.inputWithTags("tags", title, null, helpText, null, null, null, "exactTags", exactTagTitle, logicalOperatorTitle) }} {% endif %} {{ inline.hidden("folderId") }} </form> </div> </div> <div class="row"> <div class="col-sm-2 p-3 bg-light" id="grid-folder-filter"> <div class="form-check"> <input type="checkbox" class="form-check-input" id="folder-tree-clear-selection-button"> <label class="form-check-label" for="folder-tree-clear-selection-button" title="{% trans "Search in all folders" %}">{% trans "All Folders" %}</label> </div> <div id="container-folder-tree"></div> </div> <div class="folder-controller d-none"> <button type="button" id="folder-tree-select-folder-button" class="btn btn-outline-secondary" title="{% trans "Open / Close Folder Search options" %}"><i class="fas fa-folder fa-1x"></i></button> <div id="breadcrumbs" class="mt-2 pl-2"></div> </div> <div id="datatable-container" class="card col-sm-10 pt-4 px-2"> <div class="XiboData"> <table id="templates" class="table table-striped" data-content-type="layout" data-content-id-name="layoutId" data-state-preference-name="templateGrid"> <thead> <tr> <th>{% trans "Name" %}</th> <th>{% trans "Status" %}</th> <th>{% trans "Owner" %}</th> <th>{% trans "Description" %}</th> {% if currentUser.featureEnabled("tag.tagging") %}<th>{% trans "Tags" %}</th>{% endif %} <th>{% trans "Orientation" %}</th> <th>{% trans "Thumbnail" %}</th> <th>{% trans "Sharing" %}</th> <th class="rowMenu"></th> </tr> </thead> <tbody> </tbody> </table> </div> </div> </div> </div> </div> </div> {% endblock %} {% block javaScript %} <script type="text/javascript"> {% if not currentUser.featureEnabled("folder.view") %} disableFolders(); {% endif %} var table = $("#templates").DataTable({ "language": dataTablesLanguage, dom: dataTablesTemplate, serverSide: true, stateSave: true, stateDuration: 0, responsive: true, stateLoadCallback: dataTableStateLoadCallback, stateSaveCallback: dataTableStateSaveCallback, filter: false, searchDelay: 3000, "order": [[ 1, "asc"]], ajax: { "url": "{{ url_for("template.search") }}", "data": function(d) { $.extend(d, $("#templates").closest(".XiboGrid").find(".FilterDiv form").serializeObject()); } }, "columns": [ { "data": "layout", responsivePriority: 2}, { "name": "publishedStatus", responsivePriority: 2, "data": function (data, type) { if (data.publishedDate != null) { var now = moment(); var published = moment(data.publishedDate); var differenceMinutes = published.diff(now, 'minutes'); var momentDifference = moment(now).to(published); if (differenceMinutes < -5) { return data.publishedStatus.concat(" - ", translations.publishedStatusFailed); } else { return data.publishedStatus.concat(" - ", translations.publishedStatusFuture + " " + momentDifference); } } else { return data.publishedStatus; } } }, { "data": "owner", responsivePriority: 3}, { "name": "description", "data": null, responsivePriority: 3, "render": {"_": "description", "display": "descriptionWithMarkup", "sort": "description"} }, {% if currentUser.featureEnabled("tag.tagging") %}{ "sortable": false, "visible": false, "data": dataTableCreateTags, responsivePriority: 3 },{% endif %} { data: 'orientation', responsivePriority: 10, visible: false}, { responsivePriority: 3, data: 'thumbnail', render: function (data, type, row) { if (type !== 'display') { return row.layoutId; } if (data) { return '<a class="img-replace" data-toggle="lightbox" data-type="image" href="' + data + '">' + '<img class="img-fluid" src="' + data + '" alt="{{ "Thumbnail"|trans }}" />' + '</a>'; } else { var addUrl = '{{ url_for("layout.thumbnail.add", {id: ":id"}) }}'.replace(':id', row.layoutId); return '<a class="img-replace generate-layout-thumbnail" href="' + addUrl + '">' + '<img class="img-fluid" src="{{ theme.uri("img/thumbs/placeholder.png") }}" alt="{{ "Add Thumbnail"|trans }}" />' + '</a>'; } return ''; }, sortable: false }, { "data": "groupsWithPermissions", responsivePriority: 4, "render": dataTableCreatePermissions }, { "orderable": false, responsivePriority: 1, "data": dataTableButtonsColumn } ] }); table.on('draw', dataTableDraw); table.on('draw', { form: $("#templates").closest(".XiboGrid").find(".FilterDiv form") } ,dataTableCreateTagEvents); table.on('draw', function(e, settings) { $('#' + e.target.id + ' .generate-layout-thumbnail').on('click', function(e) { e.preventDefault(); var $anchor = $(this); $.ajax({ url: $anchor.attr('href'), method: 'POST', success: function() { $anchor.find('img').attr('src', $anchor.attr('href')); $anchor.removeClass('generate-layout-thumbnail').attr('data-toggle', 'lightbox'); } }); }); }); table.on('processing.dt', dataTableProcessing); dataTableAddButtons(table, $('#templates_wrapper').find('.dataTables_buttons')); function templateFormOpen() { if ($('#folder-tree-form-modal').length === 0) { // compile tree folder modal and append it to Form var folderTreeModal = Handlebars.compile($('#folder-tree-template').html()); var treeConfig = {"container": "container-folder-form-tree", "modal": "folder-tree-form-modal"}; $("body").append(folderTreeModal(treeConfig)); $("#folder-tree-form-modal").on('hidden.bs.modal', function () { // Fix for 2nd/overlay modal $('.modal:visible').length && $(document.body).addClass('modal-open'); $(this).data('bs.modal', null); }); } // select current working folder if one is selected in the grid if ($('#container-folder-tree').jstree("get_selected", true)[0] !== undefined) { $('#templateAddForm' + ' #folderId').val($('#container-folder-tree').jstree("get_selected", true)[0].id); } initJsTreeAjax($('#folder-tree-form-modal').find('#container-folder-form-tree'), 'templateAddForm', true, 600); $("#templateAddForm").submit(function(e) { e.preventDefault(); var form = $(this); var url = $(this).data().redirect; $.ajax({ type: $(this).attr("method"), url: $(this).attr("action"), data: $(this).serialize(), cache: false, dataType:"json", success: function(xhr, textStatus, error) { XiboSubmitResponse(xhr, form); if (xhr.success) { // Reload the designer XiboRedirect(url.replace(":id", xhr.id)); } } }); }); } </script> {% endblock %}