41 lines
1.6 KiB
PHP
41 lines
1.6 KiB
PHP
<?php
|
|
namespace App\Models\Widgets\ModelTraits;
|
|
|
|
use App\Events\CreateNewWidget;
|
|
use App\Http\Requests\Request;
|
|
use App\Models\Widgets\Widget as WidgetModel;
|
|
use App\Models\Widgets\WidgetType;
|
|
use Mcamara\LaravelLocalization\Facades\LaravelLocalization;
|
|
|
|
trait Widget
|
|
{
|
|
/**
|
|
* Create new widget of given type
|
|
*
|
|
* @param WidgetType $widgetType
|
|
* @param Request $request
|
|
*
|
|
* @return WidgetModel
|
|
*/
|
|
public function createNew(WidgetType $widgetType, Request $request)
|
|
{
|
|
$settings = call_user_func([$widgetType->handler, 'save'], $request);
|
|
|
|
// create new widget
|
|
$widget = WidgetModel::create([
|
|
'widget_type_handler' => $widgetType->handler,
|
|
'language' => LaravelLocalization::getCurrentLocale(),
|
|
'user_id' => \Auth::user()->id,
|
|
'name' => $request->name,
|
|
'container_class' => $request->containerClass,
|
|
'container_id' => empty($request->containerId) ? null : $request->containerId,
|
|
'description' => $request->description,
|
|
'settings' => json_encode($settings),
|
|
]);
|
|
|
|
// fire event with newly created widget
|
|
\Event::fire(new CreateNewWidget($widget));
|
|
|
|
return $widget;
|
|
}
|
|
} |