147 lines
7.9 KiB
Twig
147 lines
7.9 KiB
Twig
{#
|
|
/**
|
|
* Copyright (C) 2020-2023 Xibo Signage Ltd
|
|
*
|
|
* Xibo - Digital Signage - https://xibosignage.com
|
|
*
|
|
* 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/>.
|
|
*/
|
|
#}
|
|
|
|
{% set randomId = random() %}
|
|
|
|
{% extends "form-base.twig" %}
|
|
{% import "forms.twig" as forms %}
|
|
{% import "inline.twig" as inline %}
|
|
|
|
{% block formTitle %}
|
|
{% set displayGroupName = displayGroup.displayGroup %}
|
|
{% trans %}Manage Membership for {{ displayGroupName }}{% endtrans %}
|
|
{% endblock %}
|
|
|
|
{% block formButtons %}
|
|
{% trans "Cancel" %}, XiboDialogClose()
|
|
{% trans "Save" %}, forms.membersFormSubmit("{{ randomId }}")
|
|
{% endblock %}
|
|
|
|
{% block callBack %}forms.membersFormOpen{% endblock %}
|
|
|
|
{% block extra %}{{ extra|json_encode|raw }}{% endblock %}
|
|
|
|
{% block formHtml %}
|
|
<div class="row">
|
|
<div class="col-md-12">
|
|
<div id="{{ randomId }}" class="div-horizontal controlDiv"
|
|
data-display="true"
|
|
data-display-get-url="{{ url_for("display.search") }}"
|
|
data-display-param="displayId"
|
|
data-display-param-unassign="unassignDisplayId"
|
|
data-display-url="{{ url_for("displayGroup.assign.display", {id: displayGroup.displayGroupId}) }}"
|
|
data-display-groups="true"
|
|
data-display-groups-get-url="{{ url_for("displayGroup.search") }}"
|
|
data-display-groups-param="displayGroupId"
|
|
data-display-groups-param-unassign="unassignDisplayGroupId"
|
|
data-display-groups-url="{{ url_for("displayGroup.assign.displayGroup", {id: displayGroup.displayGroupId}) }}"
|
|
>
|
|
<ul class="nav nav-tabs" role="tablist">
|
|
<li class="nav-item"><a class="nav-link active" href="#displayTab" role="tab" data-toggle="tab"><span>{% trans "Displays" %}</span></a></li>
|
|
<li class="nav-item"><a class="nav-link" href="#displayGroupTab" role="tab" data-toggle="tab"><span>{% trans "Display Groups" %}</span></a></li>
|
|
<li class="nav-item"><a class="nav-link" href="#treeTab" role="tab" data-toggle="tab"><span>{% trans "Relationship Tree" %}</span></a></li>
|
|
</ul>
|
|
<div class="tab-content">
|
|
<div class="tab-pane active" id="displayTab">
|
|
{% set helpText %}{% trans %}Check or un-check the options against each display to control whether they are a member or not.{% endtrans %}{% endset %}
|
|
{{ forms.message(helpText) }}
|
|
<div class="XiboGrid" id="{{ random() }}">
|
|
<div class="XiboFilter card mb-3 bg-light">
|
|
<div class="FilterDiv card-body" id="Filter">
|
|
<form class="form-inline" id="displayForm">
|
|
{% set title %}{% trans "Name" %}{% endset %}
|
|
{{ inline.input("display", title) }}
|
|
|
|
{% set title %}{% trans "Authorised" %}{% endset %}
|
|
{% set values = [{id: -1, value: ""}, {id: 1, value: "Yes"}, {id: 0, value: "No"}] %}
|
|
{{ inline.dropdown("authorised", "single", title, -1, values, "id", "value") }}
|
|
|
|
{{ inline.hidden("displayGroupIdMembers", displayGroup.displayGroupId) }}
|
|
</form>
|
|
</div>
|
|
</div>
|
|
<table id="displaysMembersTable" class="table table-bordered membersTable">
|
|
<thead>
|
|
<tr>
|
|
<th>{% trans "ID" %}</th>
|
|
<th>{% trans "Display" %}</th>
|
|
<th>{% trans "Status" %}</th>
|
|
<th>{% trans "Logged In" %}</th>
|
|
<th>{% trans "Version" %}</th>
|
|
<th>{% trans "Member" %}</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
<div class="tab-pane" id="displayGroupTab">
|
|
{% set helpText %}{% trans %}Check or un-check the options against each display group to control whether they are a member or not.{% endtrans %}{% endset %}
|
|
{{ forms.message(helpText) }}
|
|
<div class="XiboGrid" id="{{ random() }}">
|
|
<div class="XiboFilter card mb-3 bg-light">
|
|
<div class="FilterDiv card-body" id="Filter">
|
|
<form class="form-inline" id="displayGroupForm">
|
|
{% set title %}{% trans "Name" %}{% endset %}
|
|
{{ inline.input("displayGroup", title) }}
|
|
|
|
{{ inline.hidden("displayGroupIdMembers", displayGroup.displayGroupId) }}
|
|
{{ forms.hidden("isDynamic", 0) }}
|
|
</form>
|
|
</div>
|
|
</div>
|
|
<table id="displaysGroupsMembersTable" class="table table-bordered membersTable" style="width: 100%">
|
|
<thead>
|
|
<tr>
|
|
<th>{% trans "ID" %}</th>
|
|
<th>{% trans "Display Group" %}</th>
|
|
<th>{% trans "Member" %}</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
<div class="tab-pane" id="treeTab">
|
|
{% set helpText %}{% trans %}Below is the family tree for this Display Group.{% endtrans %}{% endset %}
|
|
{{ forms.message(helpText) }}
|
|
|
|
{% set helpText %}{% trans %}The Display Group being edited is in bold. The list is ordered so that items above the current Display Group are its ancestors and items below are its descendants.{% endtrans %}{% endset %}
|
|
{{ forms.message(helpText) }}
|
|
<ul>
|
|
{% for group in tree %}
|
|
{% if group.displayGroup == displayGroup.displayGroup %}
|
|
<li><strong>{{ group.displayGroup }}</strong></li>
|
|
{% else %}
|
|
<li><a class="XiboFormButton" href="{{ url_for("displayGroup.members.form", {"id": group.displayGroupId}) }}">{{ group.displayGroup }}</a></li>
|
|
{% endif %}
|
|
{% endfor %}
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{% endblock %} |