diff --git a/packages/Webkul/Admin/src/Http/ViewComposers/DataGrids/SliderComposer.php b/packages/Webkul/Admin/src/Http/ViewComposers/DataGrids/SliderComposer.php new file mode 100644 index 000000000..1b5a90a5c --- /dev/null +++ b/packages/Webkul/Admin/src/Http/ViewComposers/DataGrids/SliderComposer.php @@ -0,0 +1,146 @@ + 'Sliders', + 'table' => 'sliders', + 'select' => 'id', + 'perpage' => 5, + 'aliased' => false, //use this with false as default and true in case of joins + + 'massoperations' =>[ + [ + 'route' => route('admin.datagrid.delete'), + 'method' => 'DELETE', + 'label' => 'Delete', + 'type' => 'button', + ], + ], + + 'actions' => [ + [ + 'type' => 'Edit', + 'route' => route('admin.datagrid.delete'), + 'confirm_text' => 'Do you really edit this record?', + 'icon' => 'icon pencil-lg-icon', + ], [ + 'type' => 'Delete', + 'route' => route('admin.datagrid.delete'), + 'confirm_text' => 'Do you really want to delete this record?', + 'icon' => 'icon trash-icon', + ], + ], + + 'join' => [ + // [ + // 'join' => 'leftjoin', + // 'table' => 'roles as r', + // 'primaryKey' => 'u.role_id', + // 'condition' => '=', + // 'secondaryKey' => 'r.id', + // ] + ], + + //use aliasing on secodary columns if join is performed + + 'columns' => [ + + [ + 'name' => 'id', + 'alias' => 'slider_id', + 'type' => 'number', + 'label' => 'ID', + 'sortable' => true, + ], + [ + 'name' => 'title', + 'alias' => 'slider_title', + 'type' => 'string', + 'label' => 'title', + 'sortable' => true, + ], + ], + + //don't use aliasing in case of filters + + 'filterable' => [ + // [ + // 'column' => 'id', + // 'alias' => 'locale_id', + // 'type' => 'number', + // 'label' => 'ID', + // ], + // [ + // 'column' => 'code', + // 'alias' => 'locale_code', + // 'type' => 'string', + // 'label' => 'Code', + // ], + // [ + // 'column' => 'name', + // 'alias' => 'locale_name', + // 'type' => 'string', + // 'label' => 'Name', + // ], + ], + + //don't use aliasing in case of searchables + + 'searchable' => [ + // [ + // 'column' => 'name', + // 'type' => 'string', + // 'label' => 'Name', + // ], + // [ + // 'column' => 'code', + // 'type' => 'string', + // 'label' => 'Code', + // ], + ], + + //list of viable operators that will be used + 'operators' => [ + 'eq' => "=", + 'lt' => "<", + 'gt' => ">", + 'lte' => "<=", + 'gte' => ">=", + 'neqs' => "<>", + 'neqn' => "!=", + 'like' => "like", + 'nlike' => "not like", + ], + // 'css' => [] + + ]); + + $view->with('datagrid', $datagrid); + // $view->with('count', $this->users->count()); + } +} \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Http/routes.php b/packages/Webkul/Admin/src/Http/routes.php index 1464d5cdc..879f9e4a9 100644 --- a/packages/Webkul/Admin/src/Http/routes.php +++ b/packages/Webkul/Admin/src/Http/routes.php @@ -301,13 +301,18 @@ Route::group(['middleware' => ['web']], function () { Route::put('/account', 'Webkul\User\Http\Controllers\AccountController@update')->name('admin.account.update'); // Admin Store Front Settings Route - Route::get('/slider/create','Webkul\Shop\Http\Controllers\SliderController@index')->defaults('_config',[ - 'view' => 'admin::sliders.create' + Route::get('/slider','Webkul\Shop\Http\Controllers\SliderController@index')->defaults('_config',[ + 'view' => 'admin::settings.sliders.index' ])->name('admin.sliders.index'); - Route::post('/slider/create','Webkul\Shop\Http\Controllers\SliderController@create')->defaults('_config',[ - 'redirect' => 'admin::sliders.create' + // Admin Store Front Settings Route + Route::get('/slider/create','Webkul\Shop\Http\Controllers\SliderController@create')->defaults('_config',[ + 'view' => 'admin::settings.sliders.create' ])->name('admin.sliders.create'); + + Route::post('/slider/create','Webkul\Shop\Http\Controllers\SliderController@store')->defaults('_config',[ + 'redirect' => 'admin::sliders.index' + ])->name('admin.sliders.store'); }); }); }); diff --git a/packages/Webkul/Admin/src/Providers/ComposerServiceProvider.php b/packages/Webkul/Admin/src/Providers/ComposerServiceProvider.php index 79ea7c7fe..ce77d7de8 100644 --- a/packages/Webkul/Admin/src/Providers/ComposerServiceProvider.php +++ b/packages/Webkul/Admin/src/Providers/ComposerServiceProvider.php @@ -41,6 +41,9 @@ class ComposerServiceProvider extends ServiceProvider //for channels in admin dashboard View::composer('admin::settings.channels.index', 'Webkul\Admin\Http\ViewComposers\DataGrids\ChannelsComposer'); + //for sliders in admin dashboard + View::composer('admin::settings.sliders.index', 'Webkul\Admin\Http\ViewComposers\DataGrids\SliderComposer'); + } /** diff --git a/packages/Webkul/Admin/src/Resources/lang/en/app.php b/packages/Webkul/Admin/src/Resources/lang/en/app.php index 71f9960ee..8faa7f781 100644 --- a/packages/Webkul/Admin/src/Resources/lang/en/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/en/app.php @@ -243,7 +243,7 @@ return [ ], 'sliders' => [ - 'title' => 'Title', + 'title' => 'Sliders', 'add-title' => 'Create Slider', 'save-btn-title' => 'Save Slider', 'general' => 'General', diff --git a/packages/Webkul/Admin/src/Resources/views/sliders/create.blade.php b/packages/Webkul/Admin/src/Resources/views/settings/sliders/create.blade.php similarity index 91% rename from packages/Webkul/Admin/src/Resources/views/sliders/create.blade.php rename to packages/Webkul/Admin/src/Resources/views/settings/sliders/create.blade.php index 3d46e61ae..dfbcafa39 100644 --- a/packages/Webkul/Admin/src/Resources/views/sliders/create.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/settings/sliders/create.blade.php @@ -31,14 +31,14 @@ @{{ errors.first('title') }} -
- - @foreach($channels[0] as $channel) @endforeach - @{{ errors.first('channel') }} + @{{ errors.first('channel_id') }}
diff --git a/packages/Webkul/Admin/src/Resources/views/settings/sliders/index.blade.php b/packages/Webkul/Admin/src/Resources/views/settings/sliders/index.blade.php new file mode 100644 index 000000000..5b2ce8c55 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/settings/sliders/index.blade.php @@ -0,0 +1,21 @@ +@extends('admin::layouts.content') + +@section('content') +
+ + +
+ {!! $datagrid->render() !!} +
+
+@stop \ No newline at end of file diff --git a/packages/Webkul/Core/src/Models/Slider.php b/packages/Webkul/Core/src/Models/Slider.php index e62b9c5df..4903eb495 100644 --- a/packages/Webkul/Core/src/Models/Slider.php +++ b/packages/Webkul/Core/src/Models/Slider.php @@ -11,7 +11,10 @@ class Slider extends Model * * @var array */ + + protected $table = 'sliders'; + protected $fillable = [ - 'tile', 'path','content','channel_id' + 'title', 'path','content','channel_id' ]; } \ No newline at end of file diff --git a/packages/Webkul/Core/src/Repositories/SliderRepository.php b/packages/Webkul/Core/src/Repositories/SliderRepository.php index 1e255a250..65569d770 100644 --- a/packages/Webkul/Core/src/Repositories/SliderRepository.php +++ b/packages/Webkul/Core/src/Repositories/SliderRepository.php @@ -21,4 +21,22 @@ class SliderRepository extends Repository { return 'Webkul\Core\Models\Slider'; } + + /** + * @param array $data + * @return mixed + */ + public function create(array $data) + { + $image = request()->file('image'); + + $image_name = trim($data['title']).'.'.$image->getClientOriginalExtension(); + + $destinationPath = public_path('/vendor/webkul/shop/assets/images/slider'); + $path = $image->move($destinationPath, $image_name); + $path= $path->getrealPath(); + $data['path'] = $path; + $this->model->create($data); + } + } \ No newline at end of file diff --git a/packages/Webkul/Shop/src/Http/Controllers/SliderController.php b/packages/Webkul/Shop/src/Http/Controllers/SliderController.php index fe673aa68..4b8711fbf 100644 --- a/packages/Webkul/Shop/src/Http/Controllers/SliderController.php +++ b/packages/Webkul/Shop/src/Http/Controllers/SliderController.php @@ -18,32 +18,44 @@ use Webkul\Core\Repositories\SliderRepository as Slider; class SliderController extends controller { protected $_config; + protected $slider; + protected $channels; - public function __construct() + public function __construct(Slider $slider) { + $this->slider = $slider; $this->_config = request('_config'); } - public function index(){ + /** + * Loads the index + * for the sliders + * settings. + */ + + public function index() { + return view($this->_config['view']); + } + /** + * Loads the form + * for creating + * slider. + */ + + public function create() { $call = new Channel(); $channels = $call->getChannelWithLocales(); return view($this->_config['view'])->with('channels',[$channels]); } - public function create(Request $request) { - $this->validate($request,[ - 'title' => 'string|required|max:100', - 'image' => 'required|image|mimes:png,jpg', - // |dimensions:ratio=12/5 - 'content' => 'string' - ]); - - $image = $request->file('image'); - $input['imagename'] = time().'.'.$image->getClientOriginalExtension(); - $destinationPath = public_path('/images'); - $image->move($destinationPath, $input['imagename']); - - + /** + * Creates the new + * sider item + */ + public function store() { + // dd($request->title,$full_path->getrealPath(),$request->content,$request->channel); + $this->slider->create(request()->all()); + return redirect()->back(); } } \ No newline at end of file