FIX: fix creating widgets

This commit is contained in:
Michal Kváček
2017-02-23 18:26:59 +01:00
parent 77685b491e
commit 455b9d6d4e
3 changed files with 39 additions and 6 deletions
+33
View File
@@ -0,0 +1,33 @@
<?php
namespace App\CMS\Repositories\Widgets;
use App\Http\Requests\Request;
use App\Models\Widgets\Widget as WidgetModel;
use App\Models\Widgets\WidgetType;
use Illuminate\Support\Facades\Event;
class Widget
{
public function createNew(WidgetType $widgetType, Request $request)
{
$data = $request->except('_token');
// create new widget
$widget = new WidgetModel();
$widget->widget_type_handler = $widgetType->handler;
$widget->user_id = \Auth::user()->id;
$widget->name = $data['name'];
$widget->description = $data['description'];
$widget->container_class = $data['containerClass'];
$widget->container_id = $data['containerId'];
$widget->settings = json_encode(call_user_func([$widgetType->handler, 'save'], $request));
// save into database
$widget->save();
// fire event with newly created widget
Event::fire(new \App\Events\CreateNewWidget($widget));
return $widget;
}
}
@@ -2,11 +2,11 @@
namespace App\Http\Controllers\Admin\Widgets; namespace App\Http\Controllers\Admin\Widgets;
use App\CMS\Repositories\Widgets\Widget;
use App\CMS\Widgets\Exceptions\MissingParameterException;
use App\Http\Controllers\Admin\Controller; use App\Http\Controllers\Admin\Controller;
use App\Http\Requests\NewWidgetRequest; use App\Http\Requests\NewWidgetRequest;
use App\Models\Widgets\Widget;
use App\Models\Widgets\WidgetType; use App\Models\Widgets\WidgetType;
use App\CMS\Widgets\Exceptions\MissingParameterException;
class CreateNewWidget extends Controller class CreateNewWidget extends Controller
{ {
@@ -54,9 +54,9 @@ class CreateNewWidget extends Controller
} catch (MissingParameterException $e) { } catch (MissingParameterException $e) {
// user omitted some value // user omitted some value
return $this->invalidWidget($type, $e->getMessage()); return $this->invalidWidget($type, $e->getMessage());
} catch (\Exception $e) { // } catch (\Exception $e) {
// something went wrong // // something went wrong
return $this->invalidWidget($type, trans('admin/widgets.cannotSave', ['exception' => $e->getMessage()])); // return $this->invalidWidget($type, trans('admin/widgets.cannotSave', ['exception' => $e->getMessage()]));
} }
// redirect with success notification // redirect with success notification
+1 -1
View File
@@ -1,2 +1,2 @@
* *
!.gitignore !.gitignore