orderBy('category')->get(); return response()->json([ 'message' => 'success', 'widgets' => $widgets ]); $widgets = [ [ 'id' => 'sample-widget', 'label' => 'Sample', 'media' => '', 'category' => 'Samples', 'attributes' => [ 'title' => 'Insert sample widget' ], 'content' => view('pagebuilderplus::widgets._sample')->render() ] ]; return $widgets; } public function getBlocks() { $widgets = GJSWidget::orderBy('label')->orderBy('category')->get(); foreach ($widgets as $widget) { $widget['attributes'] = [ 'title' => $widget->tooltip ]; if ($widget->blade) { $widget['content'] = view($widget->blade)->render(); } } return $widgets; } public function createWidget(Request $request) { $widget = GJSWidget::where('gid', $request->gid)->first(); if (!$widget) { $widget = new GJSWidget(); $widget->fill($request->except(['_token'])); $widget->save(); if ($widget && $request->has('blade_file')) { $file = $request->file('blade_file'); $destinationPath = module_path('PageBuilderPlus', 'Resources/views/widgets'); $file->move($destinationPath, $file->getClientOriginalName()); $filename = str_replace('.blade', '', pathinfo($file->getClientOriginalName(), PATHINFO_FILENAME)); $blade = "pagebuilderplus::widgets.{$filename}"; $widget->blade = $blade; $widget->update(); } return response()->json([ 'status' => 200, 'message' => 'New widget has been added.' ]); } return response()->json([ 'status' => 409, 'message' => 'Widget already exists.' ]); } public function updateWidget(Request $request) { $widget = GJSWidget::find($request->id); if ($widget) { $owidget = GJSWidget::where('gid', $request->gid)->where('id', '<>', $request->id)->first(); if (!$owidget) { $widget->fill($request->except(['token'])); $widget->update(); if ($request->has('blade_file')) { if (!empty($widget->blade)) { $filename = str_replace('pagebuilderplus::widgets.', '', $widget->blade); $path = module_path('PageBuilderPlus', "Resources/views/widgets/{$filename}.blade.php"); if (file_exists($path)) { unlink($path); } } $file = $request->file('blade_file'); $destinationPath = module_path('PageBuilderPlus', 'Resources/views/widgets'); $file->move($destinationPath, $file->getClientOriginalName()); $filename = str_replace('.blade', '', pathinfo($file->getClientOriginalName(), PATHINFO_FILENAME)); $blade = "pagebuilderplus::widgets.{$filename}"; $widget->blade = $blade; $widget->update(); } return response()->json([ 'status' => 200, 'message' => 'Widget has been successfully updated.' ]); } else { return response()->json([ 'status' => 409, 'message' => 'Widget ID already exists.' ]); } } } public function deleteWidget(Request $request) { $widget = GJSWidget::find($request->id); if ($widget) { if (!empty($widget->blade)) { $filename = str_replace('pagebuilderplus::widgets.', '', $widget->blade); $path = module_path('PageBuilderPlus', "Resources/views/widgets/{$filename}.blade.php"); if (file_exists($path)) { unlink($path); } } $widget->delete(); return response()->json([ 'status' => 200, 'message' => 'Widget has been successfully deleted.' ]); } } }