{% form_theme containerRoleForm '@ui2022/schoolnow/forms/themes/default.html.twig' %}
{% form_theme schoolRoleForm '@ui2022/schoolnow/forms/themes/default.html.twig' %}
{% form_theme listRoleForm '@ui2022/schoolnow/forms/themes/default.html.twig' %}
{% embed '@ui2022/schoolnow/modal--sidepanel__content.html.twig' with {} %}
{% block header %}
{% include '@App/dashboard/settings/accounts/includes/_header.html.twig' with {
active: 'permissions',
} %}
{% endblock %}
{% block body %}
<div class="contacts">
<div class="row justify-content-end">
<span class="font-13 text-medium mb-3 col-auto">Last modified: {{ account.touchedAt ? account.touchedAt|ui_relativeDate : '-' }}</span>
</div>
{% if account.internalUid %}
<div class="row justify-content-end">
<span class="font-13 text-medium mb-3 col-auto">Internal UID: {{ account.internalUid }}</span>
</div>
{% endif %}
<div class="sidepanel__content--body">
<div class="contacts__tabs">
{% include '@App/dashboard/settings/accounts/includes/_tabs.html.twig' with {
active: 'permissions',
} %}
<div class="tab-content">
{% if account.specialPermissions.superUser %}
<div class="super-user-permission-block">
<div class="super-user-permission-block-inner-container">
<h1>User has "Super Admin" access</h1>
<p class="text-black mt-4">
Super admin access grants complete control over all functions in the website. To apply more granular permissions to this user, remove Super admin access and adjust their permissions here.
</p>
<a href="#" class="super-user-access-button mt-3">Remove Super Admin access</a>
</div>
</div>
{% else %}
<div class="messages-table uilib website-table">
<table class="grid-main-block">
<tbody>
<tr>
<th class="heading col-6"><img src="/ui2022/images/message.png" alt="Message">
Messages
</th>
<th class="col-3">
</th>
<th class="col-2">
<span style="text-decoration: underline;">Role</span>
</th>
<th class="col-1"><span> </span></th>
</tr>
{% for messageAssociation in messageAssociations %}
<tr class="grid-card">
<td class="col-6">
<span class="grid-group">
<span class="grid-control">
{% set name = messageAssociation.list ? messageAssociation.list.name : (messageAssociation.school ? messageAssociation.school.name : '[Global]') %}
{% set icon = messageAssociation.list ? 'icon-templates' : 'icon-school-activities-report' %}
<i class="{{ icon }}"></i>
<span>{{ name }}</span>
</span>
</span>
</td>
<td class="checkbox-block col-3"></td>
<td class="col-2">
<span>{{ messageAssociation.role.name }}</span>
</td>
<td class="col-1">
<span class="table-action">
{% include '@ui2022/a.html.twig' with {
link: path('app.app.dashboard.settings.accounts.roles.delete', {
account: account.id,
association: messageAssociation.id,
}),
modal: 'modal__result__sidepanel',
target: "_modal",
html: '<i class="icon-delete"></i>'
} %}
</span>
</td>
</tr>
{% endfor %}
</tbody>
</table>
<div class="add-row-block">
<div class="add-row">
<a href="#" class="mr-3" data-show-form-id="{{ schoolRoleForm.vars.id }}">+ Add
school</a>
<a href="#" data-show-form-id="{{ listRoleForm.vars.id }}">+ Add list</a>
</div>
{{ form_start(schoolRoleForm, {
action: path('app.app.dashboard.settings.accounts.roles.main', {
account: account.id,
}),
attr: {
target: '_modal',
},
}) }}
<div class="add-action formcontainer formfield-colored" style="display: none">
<div class="col-6">
{{ form_widget(schoolRoleForm.school) }}
{{ form_errors(schoolRoleForm.school) }}
</div>
<div class="col-3">
{{ form_widget(schoolRoleForm.role) }}
{{ form_errors(schoolRoleForm.role) }}
</div>
<div class="col-2">
{% include '@ui2022/button--form.html.twig' with {
type: 'submit',
text: 'Add',
styles: 'md gray',
attr: {
class: 'px-4 mr-3',
disabled: 'disabled',
},
} %}
</div>
<div class="col-1 close-icon">
<span><a href="#"><i class="icon-cross"></i></a></span>
</div>
{{ form_rest(schoolRoleForm) }}
</div>
{{ form_end(schoolRoleForm) }}
{{ form_start(listRoleForm, {
action: path('app.app.dashboard.settings.accounts.roles.main', {
account: account.id,
}),
attr: {
target: '_modal',
},
}) }}
<div class="add-action formcontainer formfield-colored" style="display: none">
<div class="col-6">
{{ form_widget(listRoleForm.list) }}
{{ form_errors(listRoleForm.list) }}
</div>
<div class="col-3">
{{ form_widget(listRoleForm.role) }}
{{ form_errors(listRoleForm.role) }}
</div>
<div class="col-2">
{% include '@ui2022/button--form.html.twig' with {
type: 'submit',
text: 'Add',
styles: 'md gray',
attr: {
class: 'px-4 mr-3',
disabled: 'disabled',
},
} %}
</div>
<div class="col-1 close-icon">
<span><a href="#"><i class="icon-cross"></i></a></span>
</div>
{{ form_rest(listRoleForm) }}
</div>
{{ form_end(listRoleForm) }}
</div>
</div>
<div class="messages-table uilib website-table">
<table class="grid-main-block">
<tbody>
<tr>
<th class="heading col-6"><img src="/ui2022/images/website.png" alt="Website">
Website
</th>
<th class="col-3">
<span style="text-decoration: underline;">Departments</span>
</th>
<th class="col-2">
<span style="text-decoration: underline;">Role</span>
</th>
<th class="col-1"><span> </span></th>
</tr>
{% for websiteAssociation in websiteAssociations %}
<tr class="grid-card">
<td class="col-6">
<span class="grid-group">
<span class="grid-control">
<i class="icon-folder"></i>
<span>{{ websiteAssociation.container ? websiteAssociation.container.name : '[Global]' }}</span>
</span>
</span>
</td>
<td class="checkbox-block col-3">
<span class="grid-group">
<span class="custom-control custom-checkbox">
<input
type="checkbox"
class="custom-control-input"
id="enabled_{{ websiteAssociation.id }}"
{% if websiteAssociation.inheritance %}checked{% endif %}
data-trigger="toggler"
data-toggler-url="{{ path('app.app.dashboard.settings.accounts.roles.inheritance_toggle', {
accountRoleAssociation: websiteAssociation.id,
}) }}"
/>
<label class="custom-control-label"
for="enabled_{{ websiteAssociation.id }}"></label>
</span>
</span>
</td>
<td class="col-2">
<span>{{ websiteAssociation.role.name }}</span>
</td>
<td class="col-1">
<span class="table-action">
{% include '@ui2022/a.html.twig' with {
link: path('app.app.dashboard.settings.accounts.roles.delete', {
account: account.id,
association: websiteAssociation.id,
}),
modal: 'modal__result__sidepanel',
target: "_modal",
html: '<i class="icon-delete"></i>'
} %}
</span>
</td>
</tr>
{% endfor %}
</tbody>
</table>
<div class="add-row-block">
<div class="add-row">
<a href="#" data-show-form-id="{{ containerRoleForm.vars.id }}">+ Add</a>
</div>
{{ form_start(containerRoleForm, {
action: path('app.app.dashboard.settings.accounts.roles.main', {
account: account.id,
}),
attr: {
target: '_modal',
},
}) }}
<div class="add-action formcontainer formfield-colored" style="display: none">
<div class="col-6">
{{ form_widget(containerRoleForm.container) }}
{{ form_errors(containerRoleForm.container) }}
</div>
<div class="col-3">
{{ form_widget(containerRoleForm.role) }}
{{ form_errors(containerRoleForm.role) }}
</div>
<div class="col-2">
{% include '@ui2022/button--form.html.twig' with {
type: 'submit',
text: 'Add',
styles: 'md gray',
attr: {
class: 'px-4 mr-3',
disabled: 'disabled',
},
} %}
</div>
<div class="col-1 close-icon">
<span><a href="#"><i class="icon-cross"></i></a></span>
</div>
{{ form_rest(containerRoleForm) }}
</div>
{{ form_end(containerRoleForm) }}
</div>
</div>
{% endif %}
</div>
</div>
</div>
</div>
<script>
(function (window, document, $, undefined) {
$(function () {
if ($('.add-row-block').length > 0) {
$('.add-row-block .add-row a').on("click", function (e) {
e.preventDefault();
const formId = $(this).data('show-form-id');
const $form = $('#' + formId);
const $addAction = $form.find('.add-action');
const $iconCross = $form.find('.icon-cross');
const $submitButton = $form.find('button[type="submit"]');
const $addRow = $(this).parent();
$addAction.show();
$addRow.hide();
$iconCross.click(function (e) {
e.preventDefault();
$addAction.hide();
$addRow.show();
selectDefaultOption($addAction.find('select[required]'));
$form.off('change');
$submitButton.attr('disabled', 'disabled');
return false;
});
$form.on('change', function (e) {
if (this.checkValidity()) {
$submitButton.removeAttr('disabled');
} else {
$submitButton.attr('disabled', 'disabled');
}
});
selectDefaultOption($addAction.find('select[required]'));
return false;
})
}
function selectDefaultOption($selects) {
$.each($selects, function (key, select) {
let selectedIndex = 0;
if ($(select).find('option').length === 2) {
selectedIndex = 1;
}
$(select).prop('selectedIndex', selectedIndex).trigger('change');
});
}
})
const $togglerSuperadmin = $('#toggler_superadmin');
$togglerSuperadmin.on('done.toggler', function() {
$('#sidepanel__result_view .nav-link.active').trigger('click');
});
$('.super-user-access-button').on('click', function(e) {
e.preventDefault();
$togglerSuperadmin.prop("checked", $togglerSuperadmin.prop("checked"));
$togglerSuperadmin.trigger('change');
return false;
});
})(window, document, jQuery);
</script>
{% include '@ui2022/modal.html.twig' with {
attr: {
id: 'modal__result__sidepanel',
class: 'modal-ajax modal-delete',
target: "_modal",
},
dialog_styles: 'dialog--createmsg',
} %}
{% endblock %}
{% endembed %}