diff --git a/app/Widgets/OrbitSlider/OrbitSlider.php b/app/Widgets/OrbitSlider/OrbitSlider.php index 0e065e4d..7fe6db2e 100644 --- a/app/Widgets/OrbitSlider/OrbitSlider.php +++ b/app/Widgets/OrbitSlider/OrbitSlider.php @@ -79,9 +79,11 @@ class OrbitSlider implements PublicWidget $directory->save(); $settings = [ - 'directoryId' => $directory->id, - 'sliderClass' => isset($request->containerClass) ? $request->containerClass : '', - 'code' => $request->code + 'directoryId' => $directory->id, + 'imagePerSlide' => $request->imagePerSlide, + 'sliderClass' => isset($request->containerClass) ? $request->containerClass : '', + 'slideContainerClass' => isset($request->slideContainerClass) ? $request->slideContainerClass : '', + 'code' => $request->code ]; $widget->settings = json_encode($settings); diff --git a/app/Widgets/OrbitSlider/Presenters/OrbitSlider.php b/app/Widgets/OrbitSlider/Presenters/OrbitSlider.php index 5adb81d6..2b871296 100644 --- a/app/Widgets/OrbitSlider/Presenters/OrbitSlider.php +++ b/app/Widgets/OrbitSlider/Presenters/OrbitSlider.php @@ -8,6 +8,45 @@ use App\Widgets\Contracts\WidgetRenderer; class OrbitSlider implements WidgetRenderer { + /** + * Method for populating settings array with default values + * + * @param $settings + */ + protected static function prepareSettings(&$settings) + { + if (!isset($settings->slideContainerClass)) { + $settings->slideContainerClass = ''; + } + + if (!isset($settings->imagesPerSlide)) { + $settings->imagesPerSlide = 4; + } + + if (!isset($settings->directoryId)) { + $settings->directoryId = false; + } + if (!isset($settings->sliderClass)) { + $settings->sliderClass = ''; + } + if (!isset($settings->code)) { + $settings->code = ''; + } + } + + protected static function getAvailableColumns() + { + return [ + 'fullscreen' => trans('widgets/orbitSlider.fullscreen'), + 1 => '1', + 2 => '2', + 3 => '3', + 4 => '4', + 6 => '6', + 12 => '12', + ]; + } + /** * Method used for displaying widget. * @@ -25,7 +64,18 @@ class OrbitSlider implements WidgetRenderer ->where('mime_type', 'LIKE', 'image%') ->get(); - return view('widgets.orbitSlider.element', ['images' => $images, 'settings' => $settings]); + // add some non-existing values + self::prepareSettings($settings); + + $slidesCount = ($settings->imagePerSlide == 'fullscreen') ? count($images) : ceil(count($images) / $settings->imagePerSlide); + $htmlGridNumber = ($settings->imagePerSlide == 'fullscreen') ? false : 12 / $settings->imagePerSlide; + + return view('widgets.orbitSlider.element', [ + 'images' => $images, + 'settings' => $settings, + 'slidesCount' => $slidesCount, + 'gridNumber' => $htmlGridNumber + ]); } /** @@ -37,7 +87,17 @@ class OrbitSlider implements WidgetRenderer */ public static function renderAddForm(WidgetType $type) { - return view('admin.widgets.orbitSlider.new', ['type' => $type]); + $widget = new Widget(); + + // create default object with settings + $settings = new \stdClass(); + self::prepareSettings($settings); + + return view('admin.widgets.orbitSlider.new', [ + 'type' => $type, + 'widget' => $widget, + 'availableColumns' => self::getAvailableColumns() + ]); } /** @@ -51,6 +111,13 @@ class OrbitSlider implements WidgetRenderer { $settings = json_decode($widget->settings); - return view('admin.widgets.orbitSlider.edit', ['widget' => $widget, 'settings' => $settings]); + // create default object with settings + self::prepareSettings($settings); + + return view('admin.widgets.orbitSlider.edit', [ + 'widget' => $widget, + 'settings' => $settings, + 'availableColumns' => self::getAvailableColumns() + ]); } } \ No newline at end of file diff --git a/resources/lang/en/widgets/orbitSlider.php b/resources/lang/en/widgets/orbitSlider.php index e9d1583b..1745d154 100644 --- a/resources/lang/en/widgets/orbitSlider.php +++ b/resources/lang/en/widgets/orbitSlider.php @@ -1,15 +1,20 @@ 'Orbit slider', - 'widgetDescription' => 'Slider for images. Uses Foundation framework.', - 'name' => 'Slider name', - 'description' => 'Slider description', - 'containerClass' => 'Extra HTML class for slider', - 'createNew' => 'Create new', - 'new' => 'Create new orbit slider', - 'edit' => 'Edit slider :name', - 'editExisting' => 'Save', - 'preview' => 'Slider preview', - 'upload' => 'Add photos into slider', - 'code' => 'Some extra HTML/JS code for slider' + 'widgetName' => 'Orbit slider', + 'widgetDescription' => 'Slider for images. Uses Foundation framework.', + 'name' => 'Slider name', + 'description' => 'Slider description', + 'containerClass' => 'Extra HTML class for slider', + 'slideContainerClass' => 'Extra HTML class for each slide', + 'createNew' => 'Create new', + 'new' => 'Create new orbit slider', + 'edit' => 'Edit slider :name', + 'editExisting' => 'Save', + 'preview' => 'Slider preview', + 'upload' => 'Add photos into slider', + 'code' => 'Some extra HTML/JS code for slider', + 'showInFullscreen' => 'Show as fullscreen', + 'fullscreen' => 'Display slider in fullscreen', + 'imagesPerSlide' => 'Images per slide', + 'extraSettings' => 'Extra settings' ]; \ No newline at end of file diff --git a/resources/views/admin/widgets/orbitSlider/edit.blade.php b/resources/views/admin/widgets/orbitSlider/edit.blade.php index da78ca36..37e0a7ec 100644 --- a/resources/views/admin/widgets/orbitSlider/edit.blade.php +++ b/resources/views/admin/widgets/orbitSlider/edit.blade.php @@ -7,7 +7,7 @@
- @include('admin.widgets.orbitSlider.editForm') + @include('admin.widgets.orbitSlider.form')
diff --git a/resources/views/admin/widgets/orbitSlider/editForm.blade.php b/resources/views/admin/widgets/orbitSlider/form.blade.php similarity index 56% rename from resources/views/admin/widgets/orbitSlider/editForm.blade.php rename to resources/views/admin/widgets/orbitSlider/form.blade.php index 96963a08..019149c9 100644 --- a/resources/views/admin/widgets/orbitSlider/editForm.blade.php +++ b/resources/views/admin/widgets/orbitSlider/form.blade.php @@ -17,7 +17,8 @@