- Updated various views to replace 'dashboard-card' with 'content-card' for consistency in styling. - Modified filter and table card classes across multiple pages including applications, campaigns, commands, datasets, dayparts, displays, display groups, display profiles, fonts, layouts, libraries, menu boards, modules, player software, playlists, resolutions, schedules, settings, sync groups, tags, tasks, templates, transitions, users, and user groups.
198 lines
9.0 KiB
Twig
198 lines
9.0 KiB
Twig
{#
|
|
/**
|
|
* 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 actionMenu %}{% endblock %}
|
|
|
|
|
|
{% block pageContent %}
|
|
<div class="ots-displays-page">
|
|
<div class="page-header ots-page-header">
|
|
<h1>{% trans "Player Versions" %}</h1>
|
|
<p class="text-muted">{% trans "Manage player software versions and downloads." %}</p>
|
|
</div>
|
|
|
|
<div class="widget content-card ots-displays-card">
|
|
<div class="widget-body ots-displays-body">
|
|
<div class="XiboGrid" id="{{ random() }}" data-grid-name="playerSoftwareView">
|
|
<div class="XiboFilter card mb-3 bg-light content-card ots-filter-card">
|
|
<div class="ots-filter-header">
|
|
<h3 class="ots-filter-title">{% trans "Filter Player Versions" %}</h3>
|
|
<button type="button" class="ots-filter-toggle" id="ots-filter-collapse-btn" title="{% trans 'Toggle filter panel' %}">
|
|
<i class="fa fa-chevron-up"></i>
|
|
</button>
|
|
</div>
|
|
<div class="ots-filter-content" id="ots-filter-content">
|
|
<div class="FilterDiv card-body" id="Filter">
|
|
<form class="form-inline">
|
|
{% set title %}{% trans "Type" %}{% endset %}
|
|
{{ inline.dropdown("playerType", "single", title, "", [{"type": none, "typeShow": none}]|merge(types), "type", "typeShow") }}
|
|
|
|
{% set title %}{% trans "Version" %}{% endset %}
|
|
{{ inline.dropdown("playerVersion", "single", title, "", [{"version": none, "version": none}]|merge(versions), "version", "version") }}
|
|
|
|
{% set title %}{% trans "Code" %}{% endset %}
|
|
{{ inline.input("playerCode", title) }}
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="XiboData card pt-3 content-card ots-table-card">
|
|
<div class="ots-table-toolbar">
|
|
{% if currentUser.featureEnabled("playersoftware.add") %}
|
|
<button class="btn btn-sm btn-success ots-toolbar-btn" href="#" id="playerSoftwareUploadForm" title="{% trans "Upload a new Player Software file" %}"><i class="fa fa-plus-circle" aria-hidden="true"></i></button>
|
|
{% endif %}
|
|
<button class="btn btn-sm btn-primary ots-toolbar-btn" id="refreshGrid" title="{% trans "Refresh the Table" %}" href="#"><i class="fa fa-refresh" aria-hidden="true"></i></button>
|
|
</div>
|
|
<table id="playerSoftwareItems" class="table table-striped" data-state-preference-name="playerSoftwareGrid">
|
|
<thead>
|
|
<tr>
|
|
<th>{% trans "Version ID" %}</th>
|
|
<th>{% trans "Player Version Name" %}</th>
|
|
<th>{% trans "Type" %}</th>
|
|
<th>{% trans "Version" %}</th>
|
|
<th>{% trans "Code" %}</th>
|
|
<th>{% trans "File Name" %}</th>
|
|
<th>{% trans "Size" %}</th>
|
|
<th>{% trans "Created At" %}</th>
|
|
<th>{% trans "Modified At" %}</th>
|
|
<th>{% trans "Modified By" %}</th>
|
|
<th class="rowMenu"></th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{% endblock %}
|
|
|
|
{% block javaScript %}
|
|
<script type="text/javascript" nonce="{{ cspNonce }}">
|
|
var table;
|
|
$(document).ready(function() {
|
|
table = $("#playerSoftwareItems").DataTable({
|
|
"language": dataTablesLanguage,
|
|
dom: dataTablesTemplate,
|
|
serverSide: true,
|
|
stateSave: true,
|
|
stateDuration: 0,
|
|
responsive: true,
|
|
stateLoadCallback: dataTableStateLoadCallback,
|
|
stateSaveCallback: dataTableStateSaveCallback,
|
|
filter: false,
|
|
searchDelay: 3000,
|
|
"order": [[2, "asc"]],
|
|
ajax: {
|
|
"url": "{{ url_for("playersoftware.search") }}",
|
|
"data": function (d) {
|
|
$.extend(d, $("#playerSoftwareItems").closest(".XiboGrid").find(".FilterDiv form").serializeObject());
|
|
}
|
|
},
|
|
"columns": [
|
|
{"data": "versionId", responsivePriority: 2},
|
|
{"data": "playerShowVersion", responsivePriority: 2},
|
|
{"data": "type", responsivePriority: 2},
|
|
{"data": "version", responsivePriority: 2},
|
|
{"data": "code", responsivePriority: 2},
|
|
{"data": "fileName", responsivePriority: 4},
|
|
{
|
|
"name": "size",
|
|
responsivePriority: 3,
|
|
"data": null,
|
|
"render": {"_": "size", "display": "fileSizeFormatted", "sort": "size"}
|
|
},
|
|
{"data": "createdAt", responsivePriority: 6, visible: false},
|
|
{"data": "modifiedAt", responsivePriority: 6, visible: false},
|
|
{"data": "modifiedBy", responsivePriority: 6, visible: false},
|
|
{
|
|
"orderable": false,
|
|
responsivePriority: 1,
|
|
"data": dataTableButtonsColumn
|
|
}
|
|
],
|
|
|
|
createdRow: function (row, data, index) {
|
|
if (data.version === "" || data.version === null || data.code === 0) {
|
|
$(row).addClass('table-danger');
|
|
$(row).attr('Title', "{{ "Please set Player Software Version"|trans }}");
|
|
}
|
|
},
|
|
});
|
|
|
|
table.on('draw', dataTableDraw);
|
|
table.on('processing.dt', dataTableProcessing);
|
|
dataTableAddButtons(table, $('#playerSoftwareItems_wrapper').find('.dataTables_buttons'));
|
|
|
|
$("#refreshGrid").click(function () {
|
|
table.ajax.reload();
|
|
});
|
|
});
|
|
|
|
$("#playerSoftwareUploadForm").click(function(e) {
|
|
e.preventDefault();
|
|
|
|
openUploadForm({
|
|
url: "{{ url_for("playersoftware.add") }}",
|
|
title: "{% trans "Upload Version" %}",
|
|
videoImageCovers: false,
|
|
buttons: {
|
|
main: {
|
|
label: "{% trans "Done" %}",
|
|
className: "btn-primary btn-bb-main",
|
|
callback: function () {
|
|
table.ajax.reload();
|
|
XiboDialogClose();
|
|
}
|
|
}
|
|
},
|
|
templateOptions: {
|
|
includeTagsInput: false,
|
|
multi: false,
|
|
trans: {
|
|
addFiles: "{% trans "Add files" %}",
|
|
startUpload: "{% trans "Start upload" %}",
|
|
cancelUpload: "{% trans "Cancel upload" %}",
|
|
processing: "{% trans "Processing..." %}"
|
|
},
|
|
upload: {
|
|
maxSize: {{ libraryUpload.maxSize }},
|
|
maxSizeMessage: "{{ libraryUpload.maxSizeMessage }}",
|
|
validExt: "{{ validExt }}"
|
|
},
|
|
updateInAllChecked: false,
|
|
deleteOldRevisionsChecked: false,
|
|
folderSelector: false
|
|
}
|
|
});
|
|
});
|
|
|
|
</script>
|
|
{% endblock %}
|