FEATURE: add permissions into widgets and fix few bugs

This commit is contained in:
Michal Kváček
2017-08-24 01:54:58 +02:00
parent e0f5cba9a4
commit b35149ad67
23 changed files with 239 additions and 110 deletions
@@ -12,7 +12,7 @@
<div>
<label>
<input class="checkbox" data-id="{{$permission->id}}" value="1"
<input class="checkbox" id="checkbox-parent-{{$permission->id}}" data-id="{{$permission->id}}" value="1"
@if($permission->default)
checked
@endif name="permissions[{{$permission->string_id}}]" type="checkbox">
@@ -25,7 +25,7 @@
<div>
<label>
<i class="fa fa-fw"></i>
<input class="checkbox child-{{$subpermission->parent_id}}" value="1"
<input class="checkbox child-checkbox child-{{$subpermission->parent_id}}" data-parent="{{$permission->id}}" value="1"
@if($permission->default && $subpermission->default)
checked
@endif name="permissions[{{$subpermission->string_id}}]" type="checkbox">
+10 -2
View File
@@ -6,8 +6,16 @@
@if ($search)
<div class="row">
<div class="col-lg-8">
<h3>@lang('search.results')</h3>
@include('admin.search.results')
@if(!empty($results))
<h3>@lang('search.results')</h3>
@include('admin.search.results')
@else
<div class="alert alert-info">
<em>@lang('admin/common.noSearchEngine')</em>
</div>
@endif
</div>
<div class="col-lg-4">
<h3>@lang('search.term')</h3>
@@ -4,12 +4,14 @@
@section('headerButtons')
<a class="btn rounded btn-primary" href="{{route('users.new')}}">
<i class="fa fa-plus"></i>
</a>
@can('create', \App\Models\User::class)
<a class="btn rounded btn-sm btn-secondary" href="{{route('users.new')}}">
<i class="fa fa-plus"></i>
</a>
@endcan
@foreach($statuses as $status => $translation)
<a class="btn rounded @if($status != $currentStatus) btn-secondary @else btn-primary @endif"
<a class="btn btn-sm rounded @if($status != $currentStatus) btn-secondary @else btn-primary @endif"
href="{{route('users.overview', ['status' => $status])}}">{{$translation}}</a>
@endforeach
@endsection
@@ -21,14 +23,18 @@
<div class="card card-default">
<div class="card-block container truncate sameheight-item">
<div class="col-xs-12 text-center">
<a href="{{route('users.edit', ['id' => $user->id])}}">
@can('view', $user)
<a href="{{route('users.detail', ['id' => $user->id])}}">
<img src="{{\App\CMS\Helpers\Gravatar::img($user->email, 100)}}" alt="" />
</a>
@else
<img src="{{\App\CMS\Helpers\Gravatar::img($user->email, 100)}}" alt="" />
</a>
@endcan
</div>
<div class="col-xs-12">
<ul>
@if(!empty($user->name))
<li><a href="{{route('users.edit', ['id' => $user->id])}}">{{$user->name}}</a></li>
<li><a href="{{route('users.edit', ['id' => $user->id])}}">{{$user->name}}</a></li>
@endif
<li><a href="{{route('users.edit', ['id' => $user->id])}}">{{$user->email}}</a></li>
<li><em>{{$roles[$user->role]}}</em></li>
@@ -36,9 +42,14 @@
</div>
</div>
<div class="card-footer text-right">
<a href="{{route('users.detail', ['id' => $user->id])}}" class="btn btn-secondary"><i class="fa fa-info"></i></a>
<a href="{{route('users.edit', ['id' => $user->id])}}" class="btn btn-primary"><i
class="fa fa-pencil edit"></i></a>
@can('view', $user)
<a href="{{route('users.detail', ['id' => $user->id])}}" class="btn btn-secondary"><i
class="fa fa-info"></i></a>
@endcan
@can('update', $user)
<a href="{{route('users.edit', ['id' => $user->id])}}" class="btn btn-primary"><i
class="fa fa-pencil edit"></i></a>
@endcan
</div>
</div>
</div>
@@ -1,11 +1,11 @@
a<form action="{{route('users.setPermissions', ['user' => $user])}}" method="post">
<form action="{{route('users.setPermissions', ['user' => $user])}}" method="post">
{!! csrf_field() !!}
@foreach($permissions as $permission)
<div>
<label>
<input class="checkbox" data-id="{{$permission->id}}" value="1"
<input class="checkbox" id="checkbox-parent-{{$permission->id}}" data-id="{{$permission->id}}" value="1"
@if($user->hasAbility($permission->string_id))
checked
@endif name="permissions[{{$permission->string_id}}]" type="checkbox">
@@ -18,7 +18,7 @@ a<form action="{{route('users.setPermissions', ['user' => $user])}}" method="pos
<div>
<label>
<i class="fa fa-fw"></i>
<input class="checkbox child-{{$subpermission->parent_id}}" value="1"
<input class="checkbox child-checkbox child-{{$subpermission->parent_id}}" data-parent="{{$permission->id}}" value="1"
@if($user->hasAbility($permission->string_id) && $user->hasAbility($subpermission->string_id))
checked
@endif name="permissions[{{$subpermission->string_id}}]" type="checkbox">
@@ -4,20 +4,13 @@
@section('content')
<div class="row">
<div class="col-lg-8">
<div class="col-lg-12">
@include('admin.widgets.area.form', ['action' => route('widgetareas.postEdit', ['id' => $area->id])])
<h2 class="m-t-15">@lang('admin/widgets.overview')</h2>
@include('admin.widgets.widgetsToAssociate', ['tileClass' => 'col-md-4 col-sm-6 col-xs-12', 'widgetArea' => $area])
</div>
<div class="col-lg-4">
<h3>@lang('admin/widgets.preview')</h3>
{{-- {{dd($area)}}--}}
@widgetArea($area->code)
</div>
</div>
@endsection
@@ -1,14 +1,23 @@
@extends('admin.layoutWithNavigation')
@section('pageHeading', @trans('admin/widgetAreas.overview'))
@section('pageDescription', @trans('admin/widgetAreas.pageDescription'))
@section('headerButtons')
@can('create', \App\Models\Widgets\WidgetArea::class)
<a class="btn rounded btn-sm btn-primary" href="{{route('widgetareas.new')}}">
<i class="fa fa-plus"></i>
</a>
@endcan
@endsection
@section('content')
<div class="row">
<div class="col-lg-8">
<div class="@cannot('create', \App\Models\Widgets\WidgetArea::class)col-lg-12 @else col-lg-8 @endcan">
@if (count($areas) > 0)
<div class="card items">
<div class="card-block">
<table class="table item-list table-striped">
<table class="table item-list table-striped full-width">
<tr>
<th>@lang('admin/widgetAreas.name')</th>
<th>@lang('admin/widgetAreas.uniqueCode')</th>
@@ -17,44 +26,62 @@
</tr>
@foreach($areas as $area)
<tr>
<td><a href="{{route('widgetareas.edit', ['id' => $area->id])}}">{{$area->name}}</a>
</td>
<td><a href="{{route('widgetareas.edit', ['id' => $area->id])}}">{{$area->code}}</a>
</td>
@can('update', $area)
<td>
<a href="{{route('widgetareas.edit', ['id' => $area->id])}}">{{$area->name}}</a>
</td>
<td>
<a href="{{route('widgetareas.edit', ['id' => $area->id])}}">{{$area->code}}</a>
</td>
@else
<td>{{$area->name}}</td>
<td>{{$area->code}}</td>
@endcan
<td>{{str_limit($area->description, 100)}}</td>
<td class="text-center">
<div class="item-actions-dropdown">
<a class="item-actions-toggle-btn">
<span class="inactive"><i class="fa fa-cog"></i></span>
<span class="active"><i class="fa fa-chevron-circle-right"></i></span>
</a>
<div class="item-actions-block">
<ul class="item-actions-list">
<li>
<a class="edit" data-toggle="tooltip"
title="@lang('admin/widgetAreas.editTooltip')"
href="{{route('widgetareas.edit', ['id' => $area->id])}}"><i
class="fa fa-pencil"></i></a>
</li>
<li>
<a href="{{route('widgets.associate', ['widgetArea' => $area->id])}}"
data-toggle="tooltip"
title="@lang('admin/widgetAreas.associateWidgets')">
<i class="fa fa-plus"></i></a>
</li>
@if($area->deletable)
<li>
<a class="confirm remove" data-toggle="tooltip"
title="@lang('admin/widgetAreas.delete')"
href="{{route('widgetareas.delete', ['id' => $area->id])}}"><i
class="fa fa-trash"></i></a>
</li>
@endif
@if (Auth::user()->can('update', $area) || Auth::user()->can('assign', \App\Models\Widgets\Widget::class) || ($area->deletable && Auth::user()->can('delete', $area)))
</ul>
<div class="item-actions-dropdown">
<a class="item-actions-toggle-btn">
<span class="inactive"><i class="fa fa-cog"></i></span>
<span class="active"><i
class="fa fa-chevron-circle-right"></i></span>
</a>
<div class="item-actions-block">
<ul class="item-actions-list">
@can('update', $area)
<li>
<a class="edit" data-toggle="tooltip"
title="@lang('admin/widgetAreas.editTooltip')"
href="{{route('widgetareas.edit', ['id' => $area->id])}}"><i
class="fa fa-pencil"></i></a>
</li>
@endcan
@can('assign', \App\Models\Widgets\Widget::class)
<li>
<a href="{{route('widgets.associate', ['widgetArea' => $area->id])}}"
data-toggle="tooltip"
title="@lang('admin/widgetAreas.associateWidgets')">
<i class="fa fa-plus"></i></a>
</li>
@endcan
@can('delete', $area)
@if($area->deletable)
<li>
<a class="confirm remove" data-toggle="tooltip"
title="@lang('admin/widgetAreas.delete')"
href="{{route('widgetareas.delete', ['id' => $area->id])}}"><i
class="fa fa-trash"></i></a>
</li>
@endif
@endcan
</ul>
</div>
</div>
</div>
@endif
</td>
</tr>
@endforeach
@@ -21,13 +21,10 @@
<li>@lang('admin/widgets.updatedAt'): @date($widgetArea->updated_at)</li>
</ul>
<a href="{{route('widgetareas.edit', ['id' => $widgetArea->id])}}" class="btn btn-secondary col-sm-12">@lang('admin/widgetAreas.editButton')</a>
@if (!empty($associatedWidgetIds))
<h3>@lang('admin/widgets.preview')</h3>
@widgetArea($widgetArea->code)
@endif
@can('update', $widgetArea)
<a href="{{route('widgetareas.edit', ['id' => $widgetArea->id])}}"
class="btn btn-secondary col-sm-12">@lang('admin/widgetAreas.editButton')</a>
@endcan
</div>
</div>
@stop
@@ -4,10 +4,33 @@
@section('pageDescription', @trans('admin/widgets.descriptionOfWidgets'))
@section('headerButtons')
<a href="{{route('widgetareas.overview')}}" class="btn btn-secondary btn-sm rounded"
title="@lang('admin/widgetAreas.overview')">
<i class="fa fa-object-group"></i>
</a>
@can('create', \App\Models\Widgets\Widget::class)
@if (!empty($widgetTypes))
<div class="dropdown show d-inline">
<a class="btn btn-secondary rounded btn-sm dropdown-toggle" href="#" id="widgetTypesDropdown"
data-toggle="dropdown" aria-expanded="false"><i class="fa fa-plus"></i></a>
<div class="dropdown-menu" aria-labelledby="dropdownMenuLink">
@foreach ($widgetTypes as $widgetType)
<a class="dropdown-item"
href="{{route('widgets.new', ['widgetType' => $widgetType->id])}}">{{trans($widgetType->name)}}</a>
@endforeach
</div>
</div>
@endif
@endcan
@can('manage', \App\Models\Widgets\WidgetArea::class)
<a href="{{route('widgetareas.overview')}}" class="btn btn-secondary btn-sm rounded"
title="@lang('admin/widgetAreas.overview')">
<i class="fa fa-object-group"></i>
</a>
@endcan
@endsection
@section('content')
@@ -33,9 +56,7 @@
<td>{{trans(call_user_func([$widget->widget_type_handler, 'getName']))}}</td>
<td>{{$widget->description}}</td>
<td class="text-center">
@if(\Auth::user()->can('update', $widget) || $widget->deletable)
@if(\Auth::user()->can('update', $widget) || ($widget->deletable && Auth::user()->can('delete', $widget)))
<div class="item-actions-dropdown">
<a class="item-actions-toggle-btn">
<span class="inactive"><i class="fa fa-cog"></i></span>
@@ -53,20 +74,22 @@
@endcan
@if($widget->deletable)
<li>
<a class="confirm remove" data-toggle="tooltip"
title="@lang('admin/widgets.delete')"
href="{{route('widgets.delete', ['id' => $widget->id])}}"><i
class="fa fa-trash"></i></a>
</li>
@can('delete', $widget)
<li>
<a class="confirm remove" data-toggle="tooltip"
title="@lang('admin/widgets.delete')"
href="{{route('widgets.delete', ['id' => $widget->id])}}"><i
class="fa fa-trash"></i></a>
</li>
@endcan
@endif
</ul>
</div>
</div>
@endif
</td>
</tr>
@endforeach
</table>
@@ -13,17 +13,23 @@
{{trans(call_user_func([$widget->widget_type_handler, 'getName']))}}
</div>
<div class="card-footer text-right">
<a href="{{route('widgets.edit', ['id' => $widget->id])}}" class="btn btn-sm btn-secondary"><i
class="fa fa-pencil"></i></a>
@can('update', $widget)
<a href="{{route('widgets.edit', ['id' => $widget->id])}}" class="btn btn-sm btn-secondary"><i
class="fa fa-pencil"></i></a>
@endcan
@if (in_array($widget->id, $associatedWidgetIds))
<a href="{{route('widgets.deleteAssociation', ['widgetId' => $widget->id, 'widgetArea' => $widgetArea->id])}}"
class="btn confirm btn-sm btn-danger">
<i class="fa fa-trash"></i>
</a>
@can('unassign', \App\Models\Widgets\Widget::class)
<a href="{{route('widgets.deleteAssociation', ['widgetId' => $widget->id, 'widgetArea' => $widgetArea->id])}}"
class="btn confirm btn-sm btn-danger">
<i class="fa fa-trash"></i>
</a>
@endcan
@else
<a href="{{route('widgets.makeAssociation', ['widgetId' => $widget->id, 'widgetArea' => $widgetArea->id])}}"
class="btn btn-sm btn-primary"><i class="fa fa-plus"></i></a>
@can('assign', \App\Models\Widgets\Widget::class)
<a href="{{route('widgets.makeAssociation', ['widgetId' => $widget->id, 'widgetArea' => $widgetArea->id])}}"
class="btn btn-sm btn-primary"><i class="fa fa-plus"></i></a>
@endcan
@endif
</div>
</div>