mirror of
https://github.com/Bigherollc/wticreatorstudio.git
synced 2026-07-31 14:16:57 -04:00
213 lines
6.3 KiB
PHP
213 lines
6.3 KiB
PHP
<?php
|
|
|
|
namespace Modules\PageBuilderPlus\Http\Controllers;
|
|
|
|
use Illuminate\Contracts\Support\Renderable;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Routing\Controller;
|
|
use Modules\PageBuilderPlus\Entities\GJSWidget;
|
|
|
|
class WidgetsController extends Controller
|
|
{
|
|
/**
|
|
* Display a listing of the resource.
|
|
* @return Renderable
|
|
*/
|
|
public function index()
|
|
{
|
|
return view('pagebuilderplus::widgetsmanager.index');
|
|
}
|
|
|
|
/**
|
|
* Show the form for creating a new resource.
|
|
* @return Renderable
|
|
*/
|
|
public function create()
|
|
{
|
|
return view('pagebuilderplus::create');
|
|
}
|
|
|
|
/**
|
|
* Store a newly created resource in storage.
|
|
* @param Request $request
|
|
* @return Renderable
|
|
*/
|
|
public function store(Request $request)
|
|
{
|
|
//
|
|
}
|
|
|
|
/**
|
|
* Show the specified resource.
|
|
* @param int $id
|
|
* @return Renderable
|
|
*/
|
|
public function show($id)
|
|
{
|
|
return view('pagebuilderplus::show');
|
|
}
|
|
|
|
/**
|
|
* Show the form for editing the specified resource.
|
|
* @param int $id
|
|
* @return Renderable
|
|
*/
|
|
public function edit($id)
|
|
{
|
|
return view('pagebuilderplus::edit');
|
|
}
|
|
|
|
/**
|
|
* Update the specified resource in storage.
|
|
* @param Request $request
|
|
* @param int $id
|
|
* @return Renderable
|
|
*/
|
|
public function update(Request $request, $id)
|
|
{
|
|
//
|
|
}
|
|
|
|
/**
|
|
* Remove the specified resource from storage.
|
|
* @param int $id
|
|
* @return Renderable
|
|
*/
|
|
public function destroy($id)
|
|
{
|
|
//
|
|
}
|
|
|
|
public function getWidgets() {
|
|
$widgets = GJSWidget::orderBy('label')->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.'
|
|
]);
|
|
}
|
|
}
|
|
}
|