FEATURE #1527: add settings for displaying more images per row
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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()
|
||||
]);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user