FEATURE #1527: add settings for displaying more images per row

This commit is contained in:
Michal Kváček
2016-04-02 09:56:53 +02:00
parent 19e0977bbb
commit 9f4cc158db
9 changed files with 162 additions and 110 deletions
+5 -3
View File
@@ -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()
]);
}
}