From c75a6bd36408a1888e02acd8ef9719614fe3084e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Kv=C3=A1=C4=8Dek?= Date: Mon, 15 Feb 2016 14:30:00 +0100 Subject: [PATCH] FEATURE #1451: add logging to all actions in widget management --- app/Events/AssignWidget.php | 30 ++++++------- app/Events/CreateNewWidget.php | 22 ++++------ app/Events/CreateNewWidgetArea.php | 23 ++++------ app/Events/DeleteWidgetArea.php | 22 ++++------ app/Events/EditWidget.php | 23 ++++------ app/Events/EditWidgetArea.php | 11 +++-- app/Events/RemoveWidgetFromArea.php | 30 ++++++------- .../Controllers/Admin/AssociateWidget.php | 15 +++++++ .../Controllers/Admin/CreateNewWidget.php | 4 ++ .../Controllers/Admin/CreateNewWidgetArea.php | 5 ++- app/Http/Controllers/Admin/EditWidget.php | 4 ++ app/Http/Controllers/Admin/EditWidgetArea.php | 7 +++ app/Listeners/LogAssignWidget.php | 36 ++++++++------- app/Listeners/LogDeleteWidgetArea.php | 29 +++++++----- app/Listeners/LogEditWidget.php | 34 +++++++------- app/Listeners/LogEditWidgetArea.php | 30 ++++++++----- app/Listeners/LogNewWidget.php | 36 ++++++++------- app/Listeners/LogNewWidgetArea.php | 35 ++++++++------- app/Listeners/LogRemoveWidgetFromArea.php | 30 ++++++++----- database/seeds/SeedActionLogTypes.php | 9 +++- resources/lang/en/admin/actionLog.php | 44 ++++++++++++------- 21 files changed, 276 insertions(+), 203 deletions(-) diff --git a/app/Events/AssignWidget.php b/app/Events/AssignWidget.php index 83c48b08..a2053aed 100644 --- a/app/Events/AssignWidget.php +++ b/app/Events/AssignWidget.php @@ -2,31 +2,31 @@ namespace App\Events; -use App\Events\Event; +use App\Models\Widget; +use App\Models\WidgetArea; use Illuminate\Queue\SerializesModels; -use Illuminate\Contracts\Broadcasting\ShouldBroadcast; class AssignWidget extends Event { use SerializesModels; + /** + * @var Widget + */ + public $widget; + /** + * @var WidgetArea + */ + public $widgetArea; /** * Create a new event instance. * - * @return void + * @param Widget $widget + * @param WidgetArea $widgetArea */ - public function __construct() + public function __construct(Widget $widget, WidgetArea $widgetArea) { - // - } - - /** - * Get the channels the event should be broadcast on. - * - * @return array - */ - public function broadcastOn() - { - return []; + $this->widget = $widget; + $this->widgetArea = $widgetArea; } } diff --git a/app/Events/CreateNewWidget.php b/app/Events/CreateNewWidget.php index 932ff071..156a4fe3 100644 --- a/app/Events/CreateNewWidget.php +++ b/app/Events/CreateNewWidget.php @@ -2,31 +2,25 @@ namespace App\Events; -use App\Events\Event; +use App\Models\Widget; use Illuminate\Queue\SerializesModels; -use Illuminate\Contracts\Broadcasting\ShouldBroadcast; class CreateNewWidget extends Event { use SerializesModels; + /** + * @var Widget + */ + public $widget; /** * Create a new event instance. * - * @return void + * @param Widget $widget */ - public function __construct() + public function __construct(Widget $widget) { // - } - - /** - * Get the channels the event should be broadcast on. - * - * @return array - */ - public function broadcastOn() - { - return []; + $this->widget = $widget; } } diff --git a/app/Events/CreateNewWidgetArea.php b/app/Events/CreateNewWidgetArea.php index 3f42b8d6..564e394e 100644 --- a/app/Events/CreateNewWidgetArea.php +++ b/app/Events/CreateNewWidgetArea.php @@ -2,31 +2,24 @@ namespace App\Events; -use App\Events\Event; +use App\Models\WidgetArea; use Illuminate\Queue\SerializesModels; -use Illuminate\Contracts\Broadcasting\ShouldBroadcast; class CreateNewWidgetArea extends Event { use SerializesModels; + /** + * @var WidgetArea + */ + public $widgetArea; /** * Create a new event instance. * - * @return void + * @param WidgetArea $widgetArea */ - public function __construct() + public function __construct(WidgetArea $widgetArea) { - // - } - - /** - * Get the channels the event should be broadcast on. - * - * @return array - */ - public function broadcastOn() - { - return []; + $this->widgetArea = $widgetArea; } } diff --git a/app/Events/DeleteWidgetArea.php b/app/Events/DeleteWidgetArea.php index dcfd1b60..8e667d6d 100644 --- a/app/Events/DeleteWidgetArea.php +++ b/app/Events/DeleteWidgetArea.php @@ -2,31 +2,25 @@ namespace App\Events; -use App\Events\Event; +use App\Models\WidgetArea; use Illuminate\Queue\SerializesModels; -use Illuminate\Contracts\Broadcasting\ShouldBroadcast; class DeleteWidgetArea extends Event { use SerializesModels; + /** + * @var WidgetArea + */ + public $widgetArea; /** * Create a new event instance. * - * @return void + * @param WidgetArea $widgetArea */ - public function __construct() + public function __construct(WidgetArea $widgetArea) { // - } - - /** - * Get the channels the event should be broadcast on. - * - * @return array - */ - public function broadcastOn() - { - return []; + $this->widgetArea = $widgetArea; } } diff --git a/app/Events/EditWidget.php b/app/Events/EditWidget.php index 317e8821..3f6eb8d6 100644 --- a/app/Events/EditWidget.php +++ b/app/Events/EditWidget.php @@ -2,31 +2,24 @@ namespace App\Events; -use App\Events\Event; +use App\Models\Widget; use Illuminate\Queue\SerializesModels; -use Illuminate\Contracts\Broadcasting\ShouldBroadcast; class EditWidget extends Event { use SerializesModels; + /** + * @var Widget + */ + public $widget; /** * Create a new event instance. * - * @return void + * @param Widget $widget */ - public function __construct() + public function __construct(Widget $widget) { - // - } - - /** - * Get the channels the event should be broadcast on. - * - * @return array - */ - public function broadcastOn() - { - return []; + $this->widget = $widget; } } diff --git a/app/Events/EditWidgetArea.php b/app/Events/EditWidgetArea.php index 39208132..8aa5642d 100644 --- a/app/Events/EditWidgetArea.php +++ b/app/Events/EditWidgetArea.php @@ -3,21 +3,26 @@ namespace App\Events; use App\Events\Event; +use App\Models\WidgetArea; use Illuminate\Queue\SerializesModels; use Illuminate\Contracts\Broadcasting\ShouldBroadcast; class EditWidgetArea extends Event { use SerializesModels; + /** + * @var WidgetArea + */ + public $widgetArea; /** * Create a new event instance. * - * @return void + * @param WidgetArea $widgetArea */ - public function __construct() + public function __construct(WidgetArea $widgetArea) { - // + $this->widgetArea = $widgetArea; } /** diff --git a/app/Events/RemoveWidgetFromArea.php b/app/Events/RemoveWidgetFromArea.php index d6f5be90..54173cd3 100644 --- a/app/Events/RemoveWidgetFromArea.php +++ b/app/Events/RemoveWidgetFromArea.php @@ -2,31 +2,31 @@ namespace App\Events; -use App\Events\Event; +use App\Models\Widget; +use App\Models\WidgetArea; use Illuminate\Queue\SerializesModels; -use Illuminate\Contracts\Broadcasting\ShouldBroadcast; class RemoveWidgetFromArea extends Event { use SerializesModels; + /** + * @var Widget + */ + public $widget; + /** + * @var WidgetArea + */ + public $widgetArea; /** * Create a new event instance. * - * @return void + * @param Widget $widget + * @param WidgetArea $widgetArea */ - public function __construct() + public function __construct(Widget $widget, WidgetArea $widgetArea) { - // - } - - /** - * Get the channels the event should be broadcast on. - * - * @return array - */ - public function broadcastOn() - { - return []; + $this->widget = $widget; + $this->widgetArea = $widgetArea; } } diff --git a/app/Http/Controllers/Admin/AssociateWidget.php b/app/Http/Controllers/Admin/AssociateWidget.php index dd664464..fbb366b8 100644 --- a/app/Http/Controllers/Admin/AssociateWidget.php +++ b/app/Http/Controllers/Admin/AssociateWidget.php @@ -2,12 +2,15 @@ namespace App\Http\Controllers\Admin; +use App\Events\AssignWidget; +use App\Events\RemoveWidgetFromArea; use App\Http\Controllers\Controller; use App\Http\Requests; use App\Models\Widget; use App\Models\WidgetArea; use App\Models\WidgetInWidgetArea; use Illuminate\Database\QueryException; +use Illuminate\Support\Facades\Event; class AssociateWidget extends Controller { @@ -26,6 +29,10 @@ class AssociateWidget extends Controller public function makeAssociation($widgetId, $widgetAreaId) { + // check if given values are valid + $widget = Widget::findOrFail($widgetId); + $widgetArea = WidgetArea::findOrFail($widgetAreaId); + try { WidgetInWidgetArea::create(['widget_id' => $widgetId, 'widget_area_id' => $widgetAreaId]); } catch (QueryException $e) { @@ -34,6 +41,8 @@ class AssociateWidget extends Controller ->with('error', trans('admin/widgets.associationExists')); } + Event::fire(new AssignWidget($widget, $widgetArea)); + return redirect() ->route('widgets.associate', ['widgetArea' => $widgetAreaId]) ->with('success', trans('admin/widgets.successfullyAssociated')); @@ -41,6 +50,10 @@ class AssociateWidget extends Controller public function deleteAssociation($widgetId, $widgetAreaId) { + // check if given values are valid + $widget = Widget::findOrFail($widgetId); + $widgetArea = WidgetArea::findOrFail($widgetAreaId); + $widgetInArea = WidgetInWidgetArea::where('widget_id', $widgetId) ->where('widget_area_id', $widgetAreaId); @@ -52,6 +65,8 @@ class AssociateWidget extends Controller $widgetInArea->delete(); + Event::fire(new RemoveWidgetFromArea($widget, $widgetArea)); + return redirect() ->route('widgets.associate', ['widgetArea' => $widgetAreaId]) ->with('success', trans('admin/widgets.successfullyDeassociated')); diff --git a/app/Http/Controllers/Admin/CreateNewWidget.php b/app/Http/Controllers/Admin/CreateNewWidget.php index a5172225..b2b7c72f 100644 --- a/app/Http/Controllers/Admin/CreateNewWidget.php +++ b/app/Http/Controllers/Admin/CreateNewWidget.php @@ -9,6 +9,7 @@ use App\Models\Widget; use App\Models\WidgetType; use App\Widgets\Exceptions\MissingParameterException; use Illuminate\Support\Facades\Auth; +use Illuminate\Support\Facades\Event; class CreateNewWidget extends Controller { @@ -65,6 +66,9 @@ class CreateNewWidget extends Controller // save into database $widget->save(); + // fire event with newly created widget + Event::fire(new \App\Events\CreateNewWidget($widget)); + // redirect with success notification return redirect() ->route('widgets.new', ['type' => $type]) diff --git a/app/Http/Controllers/Admin/CreateNewWidgetArea.php b/app/Http/Controllers/Admin/CreateNewWidgetArea.php index f4965cd0..9fe19ce6 100644 --- a/app/Http/Controllers/Admin/CreateNewWidgetArea.php +++ b/app/Http/Controllers/Admin/CreateNewWidgetArea.php @@ -6,6 +6,7 @@ use App\Http\Controllers\Controller; use App\Http\Requests; use App\Http\Requests\NewWidgetAreaRequest; use App\Models\WidgetArea; +use Illuminate\Support\Facades\Event; class CreateNewWidgetArea extends Controller { @@ -32,8 +33,10 @@ class CreateNewWidgetArea extends Controller 'description' => $request->description ]; - WidgetArea::create($parameters); + $area = WidgetArea::create($parameters); + // fire event with new widget area + Event::fire(new \App\Events\CreateNewWidgetArea($area)); // redirect with success notification return redirect() diff --git a/app/Http/Controllers/Admin/EditWidget.php b/app/Http/Controllers/Admin/EditWidget.php index acad239a..7c407faf 100644 --- a/app/Http/Controllers/Admin/EditWidget.php +++ b/app/Http/Controllers/Admin/EditWidget.php @@ -4,6 +4,7 @@ namespace App\Http\Controllers\Admin; use App\Http\Requests\EditWidgetRequest; use App\Models\Widget; use App\Widgets\Exceptions\MissingParameterException; +use Illuminate\Support\Facades\Event; class EditWidget extends Controller { @@ -49,6 +50,9 @@ class EditWidget extends Controller // save into database $widget->save(); + // fire event with editing widget + Event::fire(new \App\Events\EditWidget($widget)); + // redirect with success notification return redirect() ->route('widgets.overview') diff --git a/app/Http/Controllers/Admin/EditWidgetArea.php b/app/Http/Controllers/Admin/EditWidgetArea.php index 9c1ecd8c..7dc3f31e 100644 --- a/app/Http/Controllers/Admin/EditWidgetArea.php +++ b/app/Http/Controllers/Admin/EditWidgetArea.php @@ -7,6 +7,7 @@ use App\Http\Requests; use App\Http\Requests\EditWidgetAreaRequest; use App\Models\WidgetArea; use Illuminate\Database\Eloquent\ModelNotFoundException; +use Illuminate\Support\Facades\Event; class EditWidgetArea extends Controller { @@ -30,6 +31,9 @@ class EditWidgetArea extends Controller $area->save(); + // fire event with new widget area + Event::fire(new \App\Events\EditWidgetArea($area)); + return redirect() ->route('widgetareas.edit', ['id' => $id]) ->with('success', trans('admin/widgetAreas.editSuccessfull')); @@ -54,6 +58,9 @@ class EditWidgetArea extends Controller // delete area $area->delete(); + // fire event with new widget area + Event::fire(new \App\Events\DeleteWidgetArea($area)); + // redirect and inform user return redirect() ->route('widgetareas.overview') diff --git a/app/Listeners/LogAssignWidget.php b/app/Listeners/LogAssignWidget.php index 617f7167..4b6bc870 100644 --- a/app/Listeners/LogAssignWidget.php +++ b/app/Listeners/LogAssignWidget.php @@ -3,29 +3,35 @@ namespace App\Listeners; use App\Events\AssignWidget; -use Illuminate\Queue\InteractsWithQueue; -use Illuminate\Contracts\Queue\ShouldQueue; -class LogAssignWidget +class LogAssignWidget extends Logger { - /** - * Create the event listener. - * - * @return void - */ - public function __construct() - { - // - } - /** * Handle the event. * - * @param AssignWidget $event + * @param AssignWidget $event + * * @return void */ public function handle(AssignWidget $event) { - // + $parameters = [ + 'widgetName' => $event->widget->name, + 'widgetId' => $event->widget->id, + 'widgetAreaName' => $event->widgetArea->name, + 'widgetAreaId' => $event->widgetArea->id, + ]; + + $this->saveLog($parameters); + } + + /** + * Getter for action name. Used only internally + * + * @return mixed + */ + protected function getName() + { + return 'assignWidget'; } } diff --git a/app/Listeners/LogDeleteWidgetArea.php b/app/Listeners/LogDeleteWidgetArea.php index d6689fc6..7eafc0fa 100644 --- a/app/Listeners/LogDeleteWidgetArea.php +++ b/app/Listeners/LogDeleteWidgetArea.php @@ -6,18 +6,8 @@ use App\Events\DeleteWidgetArea; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Contracts\Queue\ShouldQueue; -class LogDeleteWidgetArea +class LogDeleteWidgetArea extends Logger { - /** - * Create the event listener. - * - * @return void - */ - public function __construct() - { - // - } - /** * Handle the event. * @@ -26,6 +16,21 @@ class LogDeleteWidgetArea */ public function handle(DeleteWidgetArea $event) { - // + $parameters = [ + 'name' => $event->widgetArea->name, + 'id' => $event->widgetArea->id + ]; + + $this->saveLog($parameters); + } + + /** + * Getter for action name. Used only internally + * + * @return mixed + */ + protected function getName() + { + return 'deleteWidgetArea'; } } diff --git a/app/Listeners/LogEditWidget.php b/app/Listeners/LogEditWidget.php index 111726c6..c8f695dd 100644 --- a/app/Listeners/LogEditWidget.php +++ b/app/Listeners/LogEditWidget.php @@ -3,29 +3,33 @@ namespace App\Listeners; use App\Events\EditWidget; -use Illuminate\Queue\InteractsWithQueue; -use Illuminate\Contracts\Queue\ShouldQueue; -class LogEditWidget +class LogEditWidget extends Logger { - /** - * Create the event listener. - * - * @return void - */ - public function __construct() - { - // - } - /** * Handle the event. * - * @param EditWidget $event + * @param EditWidget $event + * * @return void */ public function handle(EditWidget $event) { - // + $parameters = [ + 'name' => $event->widget->name, + 'id' => $event->widget->id + ]; + + $this->saveLog($parameters); + } + + /** + * Getter for action name. Used only internally + * + * @return mixed + */ + protected function getName() + { + return 'editWidget'; } } diff --git a/app/Listeners/LogEditWidgetArea.php b/app/Listeners/LogEditWidgetArea.php index a7f5d0ef..18bf4bfa 100644 --- a/app/Listeners/LogEditWidgetArea.php +++ b/app/Listeners/LogEditWidgetArea.php @@ -6,18 +6,8 @@ use App\Events\EditWidgetArea; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Contracts\Queue\ShouldQueue; -class LogEditWidgetArea +class LogEditWidgetArea extends Logger { - /** - * Create the event listener. - * - * @return void - */ - public function __construct() - { - // - } - /** * Handle the event. * @@ -26,6 +16,22 @@ class LogEditWidgetArea */ public function handle(EditWidgetArea $event) { - // + $parameters = [ + 'id' => $event->widgetArea->id, + 'name' => $event->widgetArea->name, + 'description' => $event->widgetArea->description + ]; + + $this->saveLog($parameters); + } + + /** + * Getter for action name. Used only internally + * + * @return mixed + */ + protected function getName() + { + return "editWidgetArea"; } } diff --git a/app/Listeners/LogNewWidget.php b/app/Listeners/LogNewWidget.php index 84065587..7e0731a5 100644 --- a/app/Listeners/LogNewWidget.php +++ b/app/Listeners/LogNewWidget.php @@ -3,29 +3,35 @@ namespace App\Listeners; use App\Events\CreateNewWidget; -use Illuminate\Queue\InteractsWithQueue; -use Illuminate\Contracts\Queue\ShouldQueue; -class LogNewWidget +class LogNewWidget extends Logger { - /** - * Create the event listener. - * - * @return void - */ - public function __construct() - { - // - } - /** * Handle the event. * - * @param CreateNewWidget $event + * @param CreateNewWidget $event + * * @return void */ public function handle(CreateNewWidget $event) { - // + $parameters = [ + 'name' => $event->widget->name, + 'type' => $event->widget->widget_type_handler, + 'description' => $event->widget->description, + 'id' => $event->widget->id + ]; + + $this->saveLog($parameters); + } + + /** + * Getter for action name. Used only internally + * + * @return mixed + */ + protected function getName() + { + return 'newWidget'; } } diff --git a/app/Listeners/LogNewWidgetArea.php b/app/Listeners/LogNewWidgetArea.php index bbc7cb5a..9a4af985 100644 --- a/app/Listeners/LogNewWidgetArea.php +++ b/app/Listeners/LogNewWidgetArea.php @@ -3,29 +3,34 @@ namespace App\Listeners; use App\Events\CreateNewWidgetArea; -use Illuminate\Queue\InteractsWithQueue; -use Illuminate\Contracts\Queue\ShouldQueue; -class LogNewWidgetArea +class LogNewWidgetArea extends Logger { - /** - * Create the event listener. - * - * @return void - */ - public function __construct() - { - // - } - /** * Handle the event. * - * @param CreateNewWidgetArea $event + * @param CreateNewWidgetArea $event + * * @return void */ public function handle(CreateNewWidgetArea $event) { - // + $parameters = [ + 'id' => $event->widgetArea->id, + 'name' => $event->widgetArea->name, + 'description' => $event->widgetArea->description + ]; + + $this->saveLog($parameters); + } + + /** + * Getter for action name. Used only internally + * + * @return mixed + */ + protected function getName() + { + return 'newWidgetArea'; } } diff --git a/app/Listeners/LogRemoveWidgetFromArea.php b/app/Listeners/LogRemoveWidgetFromArea.php index 660dd9f1..babeb7fc 100644 --- a/app/Listeners/LogRemoveWidgetFromArea.php +++ b/app/Listeners/LogRemoveWidgetFromArea.php @@ -6,17 +6,8 @@ use App\Events\RemoveWidgetFromArea; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Contracts\Queue\ShouldQueue; -class LogRemoveWidgetFromArea +class LogRemoveWidgetFromArea extends Logger { - /** - * Create the event listener. - * - * @return void - */ - public function __construct() - { - // - } /** * Handle the event. @@ -26,6 +17,23 @@ class LogRemoveWidgetFromArea */ public function handle(RemoveWidgetFromArea $event) { - // + $parameters = [ + 'widgetName' => $event->widget->name, + 'widgetId' => $event->widget->id, + 'widgetAreaName' => $event->widgetArea->name, + 'widgetAreaId' => $event->widgetArea->id, + ]; + + $this->saveLog($parameters); + } + + /** + * Getter for action name. Used only internally + * + * @return mixed + */ + protected function getName() + { + return 'removeWidgetFromArea'; } } diff --git a/database/seeds/SeedActionLogTypes.php b/database/seeds/SeedActionLogTypes.php index 126faaa6..819ff8e3 100644 --- a/database/seeds/SeedActionLogTypes.php +++ b/database/seeds/SeedActionLogTypes.php @@ -19,7 +19,14 @@ class SeedActionLogTypes extends Seeder 'newCustomField', 'editCustomField', 'deleteCustomField', - 'changeSettings' + 'changeSettings', + 'assignWidget', + 'deleteWidgetArea', + 'newWidgetArea', + 'newWidget', + 'removeWidgetFromArea', + 'editWidget', + 'editWidgetArea', ]; foreach ($types as $type) { diff --git a/resources/lang/en/admin/actionLog.php b/resources/lang/en/admin/actionLog.php index 7d76abd2..6fa344ec 100644 --- a/resources/lang/en/admin/actionLog.php +++ b/resources/lang/en/admin/actionLog.php @@ -1,19 +1,33 @@ 'List of all actions', - 'login' => 'Logged in', - 'logout' => 'Logged out', - 'userEdit' => 'Updated user :name (:email)', - 'newCustomField' => 'Added new custom field with ID #:id and name ":name"', - 'editCustomField' => 'Edited custom field with ID #:id and name ":name"', - 'deleteCustomField' => 'Deleted custom field ID #:id and name ":name"', - 'changeSettings' => 'Changes settings', + 'overview' => 'List of all actions', + 'login' => 'Logged in', + 'logout' => 'Logged out', + 'userEdit' => 'Updated user :name (:email)', + 'newCustomField' => 'Added new custom field with ID #:id and name ":name"', + 'editCustomField' => 'Edited custom field with ID #:id and name ":name"', + 'deleteCustomField' => 'Deleted custom field ID #:id and name ":name"', + 'changeSettings' => 'Changes settings', + 'assignWidget' => 'Assigned widget :widgetName (#:widgetId) into widget area :widgetAreaName (#:widgetAreaId)', + 'deleteWidgetArea' => 'Deleted widget area :name', + 'newWidgetArea' => 'Created new widget area :name (#:id) with description ":description"', + 'newWidget' => 'Created new widget of type :type with :name (#:id) and description ":description".', + 'removeWidgetFromArea' => 'Removed widget :widgetName (#:widgetId) from widget area :widgetAreaName (#:widgetAreaId)', + 'editWidget' => 'Edited widget :name (#:id)', + 'editWidgetArea' => 'Edited widget area :name (#:id) with description ":description"', // list of names - 'nameLogin' => 'Login', - 'nameLogout' => 'Log out', - 'nameUserEdit' => 'Edit user', - 'nameNewCustomField' => 'New custom field', - 'nameEditCustomField' => 'Edit custom field', - 'nameDeleteCustomField' => 'Delete custom field', - 'nameChangeSettings' => 'Change settings', + 'nameLogin' => 'Login', + 'nameLogout' => 'Log out', + 'nameUserEdit' => 'Edit user', + 'nameNewCustomField' => 'New custom field', + 'nameEditCustomField' => 'Edit custom field', + 'nameDeleteCustomField' => 'Delete custom field', + 'nameChangeSettings' => 'Change settings', + 'nameAssignWidget' => 'Assign widget', + 'nameDeleteWidgetArea' => 'Delete widget area', + 'nameNewWidgetArea' => 'Create widget area', + 'nameNewWidget' => 'New widget', + 'nameRemoveWidgetFromArea' => 'Remove widget from area', + 'nameEditWidget' => 'Edit widget', + 'nameEditWidgetArea' => 'Edit widget area', ]; \ No newline at end of file