FEATURE #1528: add button for creating slider from gallery
This commit is contained in:
@@ -29,11 +29,11 @@ interface PublicWidget
|
||||
|
||||
/**
|
||||
* @param Widget $widget
|
||||
* @param Request $request
|
||||
* @param \stdClass $data
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public static function save(Widget $widget, Request $request);
|
||||
public static function save(Widget $widget, \stdClass $data);
|
||||
|
||||
/**
|
||||
* Function for installing given widget
|
||||
|
||||
@@ -41,20 +41,20 @@ class HtmlCode extends NonInstallableWidget
|
||||
|
||||
/**
|
||||
* @param Widget $widget
|
||||
* @param Request $request
|
||||
* @param \stdClass $data
|
||||
*
|
||||
* @return Widget
|
||||
* @throws MissingParameterException
|
||||
*/
|
||||
public static function save(Widget $widget, Request $request)
|
||||
public static function save(Widget $widget, \stdClass $data)
|
||||
{
|
||||
if (!isset($request->code) || empty($request->code)) {
|
||||
if (!isset($data->code) || empty($data->code)) {
|
||||
throw new MissingParameterException('code');
|
||||
}
|
||||
|
||||
$widgetSettings = [
|
||||
'code' => $request->code,
|
||||
'containerClass' => isset($request->containerClass) ? $request->containerClass : ''
|
||||
'code' => $data->code,
|
||||
'containerClass' => isset($data->containerClass) ? $data->containerClass : ''
|
||||
];
|
||||
|
||||
$widget->settings = json_encode($widgetSettings);
|
||||
|
||||
@@ -40,19 +40,19 @@ class Menu extends NonInstallableWidget
|
||||
|
||||
/**
|
||||
* @param \App\Models\Widget $widget
|
||||
* @param Request $request
|
||||
* @param \stdClass $data
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public static function save(\App\Models\Widget $widget, Request $request)
|
||||
public static function save(\App\Models\Widget $widget, \stdClass $data)
|
||||
{
|
||||
if (!isset($request->settings) || empty($request->settings) || !json_decode($request->settings)) {
|
||||
if (!isset($data->settings) || empty($data->settings) || !json_decode($data->settings)) {
|
||||
throw new MissingParameterException('settings');
|
||||
}
|
||||
|
||||
$settings = [
|
||||
'links' => json_decode($request->settings),
|
||||
'containerClass' => $request->containerClass
|
||||
'links' => json_decode($data->settings),
|
||||
'containerClass' => $data->containerClass
|
||||
];
|
||||
|
||||
$widget->settings = json_encode($settings);
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
<?php
|
||||
namespace App\Widgets\OrbitSlider;
|
||||
|
||||
use App\Http\Requests\Request;
|
||||
use App\Models\Directory;
|
||||
use App\Models\Widget;
|
||||
use App\Widgets\Contracts\PublicWidget;
|
||||
@@ -36,58 +35,79 @@ class OrbitSlider implements PublicWidget
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Widget $widget
|
||||
* @param Request $request
|
||||
* @param $name
|
||||
* @param $directoryId
|
||||
* @param $parentDirectoryId
|
||||
*
|
||||
* @throws WidgetExistsException
|
||||
*/
|
||||
protected static function checkIfDirectoryExists($name, $directoryId, $parentDirectoryId)
|
||||
{
|
||||
// check if directory does not exists
|
||||
$exists = Directory::where('name', $name)
|
||||
->where('parent_id', $parentDirectoryId);
|
||||
|
||||
// if widget has some directory set, we are performing edit
|
||||
if ($directoryId) {
|
||||
$exists = $exists->where('id', '!=', $directoryId);
|
||||
}
|
||||
|
||||
if ($exists->exists()) {
|
||||
throw new WidgetExistsException($name);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Widget $widget
|
||||
* @param \stdClass $data
|
||||
*
|
||||
* @throws WidgetExistsException
|
||||
*
|
||||
* @return Widget
|
||||
*/
|
||||
public static function save(Widget $widget, Request $request)
|
||||
public static function save(Widget $widget, \stdClass $data)
|
||||
{
|
||||
$settings = json_decode($widget->settings);
|
||||
$parentDirectoryId = Storage::get(self::CONFIG_FILENAME);
|
||||
$directoryId = isset($settings->directoryId) ? $settings->directoryId : null;
|
||||
$edit = false;
|
||||
|
||||
// check if directory does not exists
|
||||
$exists = Directory::where('name', $request->name)
|
||||
->where('parent_id', $parentDirectoryId);
|
||||
if (!isset($data->useExistingDirectory)) {
|
||||
// check if name with same name does not exists yet
|
||||
self::checkIfDirectoryExists($data->name, $directoryId, $parentDirectoryId);
|
||||
|
||||
if ($directoryId) {
|
||||
$edit = true;
|
||||
$exists = $exists->where('id', '!=', $directoryId);
|
||||
// setup some information about directory
|
||||
$directory = $directoryId ? Directory::find($directoryId) : new Directory;
|
||||
|
||||
// setup some info when creating new directory
|
||||
if (!$directoryId) {
|
||||
$directory->user_id = Auth::user()->id;
|
||||
$directory->parent_id = $parentDirectoryId;
|
||||
}
|
||||
|
||||
// common info both for edit and creation
|
||||
$directory->name = $data->name;
|
||||
$directory->description = $data->description;
|
||||
|
||||
// save into database
|
||||
$directory->save();
|
||||
|
||||
$directoryId = $directory->id;
|
||||
} else {
|
||||
$directoryId = $data->directoryId;
|
||||
}
|
||||
|
||||
$exists = $exists->exists();
|
||||
|
||||
if ($exists) {
|
||||
throw new WidgetExistsException($request->name);
|
||||
}
|
||||
|
||||
$directory = new Directory;
|
||||
|
||||
if ($edit) {
|
||||
$directory = Directory::find($directoryId);
|
||||
}
|
||||
|
||||
// setup some information about directory
|
||||
$directory->user_id = Auth::user()->id;
|
||||
$directory->parent_id = $parentDirectoryId;
|
||||
$directory->name = $request->name;
|
||||
$directory->description = $request->description;
|
||||
$directory->save();
|
||||
|
||||
$settings = [
|
||||
'directoryId' => $directory->id,
|
||||
'imagePerSlide' => $request->imagePerSlide,
|
||||
'displayBullets' => $request->has('displayBullets'),
|
||||
'sliderClass' => isset($request->containerClass) ? $request->containerClass : '',
|
||||
'slideContainerClass' => isset($request->slideContainerClass) ? $request->slideContainerClass : '',
|
||||
'code' => $request->code
|
||||
'directoryId' => $directoryId,
|
||||
'imagePerSlide' => isset($data->imagePerSlide) ? $data->imagePerSlide : 4,
|
||||
'displayBullets' => isset($data->displayBullets),
|
||||
'sliderClass' => isset($data->containerClass) ? $data->containerClass : '',
|
||||
'slideContainerClass' => isset($data->slideContainerClass) ? $data->slideContainerClass : '',
|
||||
'code' => isset($data->code) ? $data->code : ''
|
||||
];
|
||||
|
||||
$widget->settings = self::createSettings($settings);
|
||||
self::checkSettings($settings);
|
||||
|
||||
$widget->settings = json_encode($settings);;
|
||||
|
||||
return $widget;
|
||||
}
|
||||
@@ -97,8 +117,12 @@ class OrbitSlider implements PublicWidget
|
||||
*
|
||||
* @param $settings
|
||||
*/
|
||||
public static function prepareSettings(&$settings)
|
||||
public static function checkSettings(&$settings)
|
||||
{
|
||||
if (!is_object($settings)) {
|
||||
$settings = (object)$settings;
|
||||
}
|
||||
|
||||
if (!isset($settings->slideContainerClass)) {
|
||||
$settings->slideContainerClass = '';
|
||||
}
|
||||
@@ -121,12 +145,6 @@ class OrbitSlider implements PublicWidget
|
||||
$settings->code = '';
|
||||
}
|
||||
}
|
||||
|
||||
public static function createSettings($settings) {
|
||||
self::prepareSettings($settings);
|
||||
|
||||
return json_encode($settings);
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter for presenter/renderer of this widget
|
||||
|
||||
@@ -37,9 +37,9 @@ class OrbitSlider implements WidgetRenderer
|
||||
$images = File::where('directory_id', $directoryId)
|
||||
->where('mime_type', 'LIKE', 'image%')
|
||||
->get();
|
||||
|
||||
|
||||
// add some non-existing values
|
||||
\App\Widgets\OrbitSlider\OrbitSlider::prepareSettings($settings);
|
||||
\App\Widgets\OrbitSlider\OrbitSlider::checkSettings($settings);
|
||||
|
||||
$slidesCount = ($settings->imagePerSlide == 'fullscreen') ? count($images) : ceil(count($images) / $settings->imagePerSlide);
|
||||
$htmlGridNumber = ($settings->imagePerSlide == 'fullscreen') ? false : 12 / $settings->imagePerSlide;
|
||||
@@ -65,7 +65,7 @@ class OrbitSlider implements WidgetRenderer
|
||||
|
||||
// create default object with settings
|
||||
$settings = new \stdClass();
|
||||
\App\Widgets\OrbitSlider\OrbitSlider::prepareSettings($settings);
|
||||
\App\Widgets\OrbitSlider\OrbitSlider::checkSettings($settings);
|
||||
|
||||
return view('admin.widgets.orbitSlider.new', [
|
||||
'type' => $type,
|
||||
@@ -87,7 +87,7 @@ class OrbitSlider implements WidgetRenderer
|
||||
$settings = json_decode($widget->settings);
|
||||
|
||||
// create default object with settings
|
||||
\App\Widgets\OrbitSlider\OrbitSlider::prepareSettings($settings);
|
||||
\App\Widgets\OrbitSlider\OrbitSlider::checkSettings($settings);
|
||||
|
||||
return view('admin.widgets.orbitSlider.edit', [
|
||||
'widget' => $widget,
|
||||
|
||||
Reference in New Issue
Block a user