From 2ab3896ee72d99e53c42194b88ff24e4c613e6ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Kv=C3=A1=C4=8Dek?= Date: Mon, 8 Feb 2016 23:05:32 +0100 Subject: [PATCH] FEATURE #1426: add log of all users --- app/Helpers/Gravatar.php | 10 ++++ .../Controllers/Admin/ActionLogOverview.php | 35 ++++++++++++++ app/Http/routes.php | 4 ++ app/Models/ActionLog.php | 30 +++++++----- app/Models/User.php | 3 +- app/Providers/AdminMenusProvider.php | 1 + resources/lang/en/admin/actionLog.php | 1 + resources/lang/en/admin/mainMenu.php | 3 +- .../views/admin/actionLog/overview.blade.php | 46 +++++++++++++++++++ 9 files changed, 119 insertions(+), 14 deletions(-) create mode 100644 app/Helpers/Gravatar.php create mode 100644 app/Http/Controllers/Admin/ActionLogOverview.php create mode 100644 resources/views/admin/actionLog/overview.blade.php diff --git a/app/Helpers/Gravatar.php b/app/Helpers/Gravatar.php new file mode 100644 index 00000000..de9e8407 --- /dev/null +++ b/app/Helpers/Gravatar.php @@ -0,0 +1,10 @@ +log = $log; + } + + public function getOverview() + { + $actions = $this->log->getLogActionsQuery(true) + ->paginate(25); + + $this->log->translateLogMessages($actions); + + return view('admin.actionLog.overview', ['actions' => $actions]); + } +} diff --git a/app/Http/routes.php b/app/Http/routes.php index 5689f06e..8f6e391e 100644 --- a/app/Http/routes.php +++ b/app/Http/routes.php @@ -89,6 +89,10 @@ Route::group([ Route::get('history/{revision}/{id}', 'History@getDiff') ->name('history.diff'); + // list of all actions + Route::get('actions', 'ActionLogOverview@getOverview') + ->name('log.overview'); + // uploader methods Route::get('upload/file', 'UploadFile@getFile') ->name('upload.file'); diff --git a/app/Models/ActionLog.php b/app/Models/ActionLog.php index 911597e7..062879e2 100644 --- a/app/Models/ActionLog.php +++ b/app/Models/ActionLog.php @@ -22,13 +22,22 @@ class ActionLog extends Model /** * Query factory for loading action logs with their type (therefore with name and value) * + * @param bool $joinUser + * * @return mixed */ - public function getLogActionsQuery() + public function getLogActionsQuery($joinUser = false) { $actions = \DB::table('action_log') + ->select('action_log.*', 'action_log_types.*') ->join('action_log_types', 'action_log_types.id', '=', 'action_log.type_id') - ->orderBy('created_at', 'DESC'); + ->orderBy('action_log.created_at', 'DESC'); + + if ($joinUser) { + + $actions = $actions->join('users', 'users.id', '=', 'action_log.user_id') + ->select('action_log.*', 'action_log_types.*', 'users.email', 'users.name as user_name'); + } return $actions; } @@ -55,7 +64,9 @@ class ActionLog extends Model ->get(); // translate and return result - return $this->translateLogMessages($actions); + $this->translateLogMessages($actions); + + return $actions; } /** @@ -65,17 +76,12 @@ class ActionLog extends Model * * @return array */ - public function translateLogMessages($messages) + public function translateLogMessages(&$messages) { - $log = []; - // translate name and value of each record - foreach ($messages as $action) { - $action->name = trans($action->name); - $action->value = trans($action->value, (array)json_decode($action->parameters)); - $log[] = $action; + foreach ($messages as $i => $action) { + $messages[$i]->name = trans($action->name); + $messages[$i]->value = trans($action->value, (array)json_decode($action->parameters)); } - - return $log; } } \ No newline at end of file diff --git a/app/Models/User.php b/app/Models/User.php index 84f26d0f..ef114c18 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -2,6 +2,7 @@ namespace App\Models; +use App\Helpers\Gravatar; use Illuminate\Auth\Authenticatable; use Illuminate\Contracts\Auth\Authenticatable as AuthenticableInterface; use Illuminate\Database\Eloquent\Model; @@ -48,6 +49,6 @@ class User extends Model implements AuthenticableInterface */ public function gravatar($size = 50) { - return "http://www.gravatar.com/avatar/" . md5(strtolower(trim($this->email))) . "?s=" . $size; + return Gravatar::img($this->email, $size); } } diff --git a/app/Providers/AdminMenusProvider.php b/app/Providers/AdminMenusProvider.php index c3773b43..87f69fd0 100644 --- a/app/Providers/AdminMenusProvider.php +++ b/app/Providers/AdminMenusProvider.php @@ -41,6 +41,7 @@ class AdminMenusProvider extends ServiceProvider $sub->route('customfields.new', trans('admin/mainMenu.customFieldsNew'), [], 10, ['icon' => 'fa fa-code']); $sub->route('customfields.overview', trans('admin/mainMenu.customFieldsOverview'), [], 50, ['icon' => 'fa fa-code-fork']); }, 30, ['icon' => 'fa fa-code']); + $menu->route('log.overview', trans('admin/mainMenu.actionLog'), [], 40, ['icon' => 'fa fa-history']); $menu->url('#', trans('admin/mainMenu.settings'), 50, ['icon' => 'fa fa-gear']); }); diff --git a/resources/lang/en/admin/actionLog.php b/resources/lang/en/admin/actionLog.php index 45b51677..7d76abd2 100644 --- a/resources/lang/en/admin/actionLog.php +++ b/resources/lang/en/admin/actionLog.php @@ -1,5 +1,6 @@ 'List of all actions', 'login' => 'Logged in', 'logout' => 'Logged out', 'userEdit' => 'Updated user :name (:email)', diff --git a/resources/lang/en/admin/mainMenu.php b/resources/lang/en/admin/mainMenu.php index d5e253b6..2d001cdb 100644 --- a/resources/lang/en/admin/mainMenu.php +++ b/resources/lang/en/admin/mainMenu.php @@ -13,5 +13,6 @@ return [ 'fileManager' => 'File manager', 'uploadFile' => 'New file', 'uploadImage' => 'New image', - 'uploadedFiles' => 'Overview' + 'uploadedFiles' => 'Overview', + 'actionLog' => 'Log' ]; \ No newline at end of file diff --git a/resources/views/admin/actionLog/overview.blade.php b/resources/views/admin/actionLog/overview.blade.php new file mode 100644 index 00000000..f76898fe --- /dev/null +++ b/resources/views/admin/actionLog/overview.blade.php @@ -0,0 +1,46 @@ +@extends('admin.layout') + +@section('pageName', @trans('admin/actionLog.overview')) + +@section('content') + +
+

@lang('admin/actionLog.overview')

+
+ +
+ @if (!empty($actions)) + + @else + @lang('admin/userManagement.noActions') + @endif + +
+ + +@stop \ No newline at end of file