--- /dev/null
+
+class PermissionsTable {
+
+ constructor(elem) {
+ this.container = elem;
+
+ // Handle toggle all event
+ const toggleAll = elem.querySelector('[permissions-table-toggle-all]');
+ toggleAll.addEventListener('click', this.toggleAllClick.bind(this));
+
+ // Handle toggle row event
+ const toggleRowElems = elem.querySelectorAll('[permissions-table-toggle-all-in-row]');
+ for (let toggleRowElem of toggleRowElems) {
+ toggleRowElem.addEventListener('click', this.toggleRowClick.bind(this));
+ }
+ }
+
+ toggleAllClick(event) {
+ event.preventDefault();
+ this.toggleAllInElement(this.container);
+ }
+
+ toggleRowClick(event) {
+ event.preventDefault();
+ this.toggleAllInElement(event.target.closest('tr'));
+ }
+
+ toggleAllInElement(domElem) {
+ const inputsToSelect = domElem.querySelectorAll('input[type=checkbox]');
+ const currentState = inputsToSelect.length > 0 ? inputsToSelect[0].checked : false;
+ for (let checkbox of inputsToSelect) {
+ checkbox.checked = !currentState;
+ checkbox.dispatchEvent(new Event('change'));
+ }
+ }
+
+}
+
+export default PermissionsTable;
\ No newline at end of file
])
</div>
- {{--TODO - Add global and role "Select All" options--}}
-
- <table class="table toggle-switch-list">
+ <table permissions-table class="table permissions-table toggle-switch-list">
<tr>
<th>{{ trans('common.role') }}</th>
- <th @if($model->isA('page')) colspan="3" @else colspan="4" @endif>{{ trans('common.actions') }}</th>
+ <th @if($model->isA('page')) colspan="3" @else colspan="4" @endif>
+ {{ trans('common.actions') }}
+ <a href="#" permissions-table-toggle-all class="text-small ml-m text-primary">{{ trans('common.toggle_all') }}</a>
+ </th>
</tr>
@foreach($roles as $role)
<tr>
- <td>{{ $role->display_name }}</td>
+ <td width="33%" class="pt-m">
+ {{ $role->display_name }}
+ <a href="#" permissions-table-toggle-all-in-row class="text-small float right ml-m text-primary">{{ trans('common.toggle_all') }}</a>
+ </td>
<td>@include('form.restriction-checkbox', ['name'=>'restrictions', 'label' => trans('common.view'), 'action' => 'view'])</td>
@if(!$model->isA('page'))
<td>@include('form.restriction-checkbox', ['name'=>'restrictions', 'label' => trans('common.create'), 'action' => 'create'])</td>
{!! csrf_field() !!}
-{{--TODO - Add select-all shortcuts--}}
-
<div class="card content-wrap">
<h1 class="list-heading">{{ $title }}</h1>
</div>
</div>
- <div class="grid half">
+ <div class="grid half" permissions-table>
<div>
<label class="setting-list-label">{{ trans('settings.role_system') }}</label>
+ <a href="#" permissions-table-toggle-all class="text-small text-primary">{{ trans('common.toggle_all') }}</a>
</div>
<div class="toggle-switch-list">
<div>@include('settings.roles.checkbox', ['permission' => 'users-manage', 'label' => trans('settings.role_manage_users')])</div>
<p class="text-warn">{{ trans('settings.role_asset_admins') }}</p>
@endif
- <table class="table toggle-switch-list compact">
+ <table permissions-table class="table toggle-switch-list compact permissions-table">
<tr>
- <th width="20%"></th>
+ <th width="20%">
+ <a href="#" permissions-table-toggle-all class="text-small text-primary">{{ trans('common.toggle_all') }}</a>
+ </th>
<th width="20%">{{ trans('common.create') }}</th>
<th width="20%">{{ trans('common.view') }}</th>
<th width="20%">{{ trans('common.edit') }}</th>
<th width="20%">{{ trans('common.delete') }}</th>
</tr>
<tr>
- <td>{{ trans('entities.shelves_long') }}</td>
+ <td>
+ <div>{{ trans('entities.shelves_long') }}</div>
+ <a href="#" permissions-table-toggle-all-in-row class="text-small text-primary">{{ trans('common.toggle_all') }}</a>
+ </td>
<td>
@include('settings.roles.checkbox', ['permission' => 'bookshelf-create-all', 'label' => trans('settings.role_all')])
</td>
</td>
</tr>
<tr>
- <td>{{ trans('entities.books') }}</td>
+ <td>
+ <div>{{ trans('entities.books') }}</div>
+ <a href="#" permissions-table-toggle-all-in-row class="text-small text-primary">{{ trans('common.toggle_all') }}</a>
+ </td>
<td>
@include('settings.roles.checkbox', ['permission' => 'book-create-all', 'label' => trans('settings.role_all')])
</td>
</td>
</tr>
<tr>
- <td>{{ trans('entities.chapters') }}</td>
+ <td>
+ <div>{{ trans('entities.chapters') }}</div>
+ <a href="#" permissions-table-toggle-all-in-row class="text-small text-primary">{{ trans('common.toggle_all') }}</a>
+ </td>
<td>
@include('settings.roles.checkbox', ['permission' => 'chapter-create-own', 'label' => trans('settings.role_own')])
<br>
</td>
</tr>
<tr>
- <td>{{ trans('entities.pages') }}</td>
+ <td>
+ <div>{{ trans('entities.pages') }}</div>
+ <a href="#" permissions-table-toggle-all-in-row class="text-small text-primary">{{ trans('common.toggle_all') }}</a>
+ </td>
<td>
@include('settings.roles.checkbox', ['permission' => 'page-create-own', 'label' => trans('settings.role_own')])
<br>
</td>
</tr>
<tr>
- <td>{{ trans('entities.images') }}</td>
+ <td>
+ <div>{{ trans('entities.images') }}</div>
+ <a href="#" permissions-table-toggle-all-in-row class="text-small text-primary">{{ trans('common.toggle_all') }}</a>
+ </td>
<td>@include('settings.roles.checkbox', ['permission' => 'image-create-all', 'label' => ''])</td>
<td style="line-height:1.2;"><small class="faded">{{ trans('settings.role_controlled_by_asset') }}</small></td>
<td>
</td>
</tr>
<tr>
- <td>{{ trans('entities.attachments') }}</td>
+ <td>
+ <div>{{ trans('entities.attachments') }}</div>
+ <a href="#" permissions-table-toggle-all-in-row class="text-small text-primary">{{ trans('common.toggle_all') }}</a>
+ </td>
<td>@include('settings.roles.checkbox', ['permission' => 'attachment-create-all', 'label' => ''])</td>
<td style="line-height:1.2;"><small class="faded">{{ trans('settings.role_controlled_by_asset') }}</small></td>
<td>
</td>
</tr>
<tr>
- <td>{{ trans('entities.comments') }}</td>
+ <td>
+ <div>{{ trans('entities.comments') }}</div>
+ <a href="#" permissions-table-toggle-all-in-row class="text-small text-primary">{{ trans('common.toggle_all') }}</a>
+ </td>
<td>@include('settings.roles.checkbox', ['permission' => 'comment-create-all', 'label' => ''])</td>
<td style="line-height:1.2;"><small class="faded">{{ trans('settings.role_controlled_by_asset') }}</small></td>
<td>