Files
core/app/Widgets/OrbitSlider/Presenters/OrbitSlider.php
T

98 lines
2.8 KiB
PHP

<?php
namespace App\Widgets\OrbitSlider\Presenters;
use App\Models\File;
use App\Models\Widget;
use App\Models\WidgetType;
use App\Widgets\Contracts\WidgetRenderer;
class OrbitSlider implements WidgetRenderer
{
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.
*
* This method renders some HTML code for displaying.
*
* @param object $settings
*
* @return mixed
*/
public static function render($settings)
{
$directoryId = $settings->directoryId;
$images = File::where('directory_id', $directoryId)
->where('mime_type', 'LIKE', 'image%')
->get();
// add some non-existing values
\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;
return view('widgets.orbitSlider.element', [
'images' => $images,
'settings' => $settings,
'slidesCount' => $slidesCount,
'gridNumber' => $htmlGridNumber
]);
}
/**
* Display form for creating new instance of widget
*
* @param WidgetType $type
*
* @return mixed
*/
public static function renderAddForm(WidgetType $type)
{
$widget = new Widget();
// create default object with settings
$settings = new \stdClass();
\App\Widgets\OrbitSlider\OrbitSlider::checkSettings($settings);
return view('admin.widgets.orbitSlider.new', [
'type' => $type,
'widget' => $widget,
'settings' => $settings,
'availableColumns' => self::getAvailableColumns()
]);
}
/**
* Display form for editing already existing widget
*
* @param Widget $widget
*
* @return mixed
*/
public static function renderEditForm(Widget $widget)
{
$settings = json_decode($widget->settings);
// create default object with settings
\App\Widgets\OrbitSlider\OrbitSlider::checkSettings($settings);
return view('admin.widgets.orbitSlider.edit', [
'widget' => $widget,
'settings' => $settings,
'availableColumns' => self::getAvailableColumns()
]);
}
}