FEATURE: add input for setting preview size and quality

This commit is contained in:
Michal Kváček
2017-09-19 14:18:15 +02:00
parent ba55702585
commit 62f73c51e6
8 changed files with 124 additions and 64 deletions
@@ -15,6 +15,7 @@ class SettingExtension
* @var string view used for rendering given settings part * @var string view used for rendering given settings part
*/ */
protected $view; protected $view;
protected $order;
/** /**
* SettingExtension constructor. * SettingExtension constructor.
@@ -23,11 +24,12 @@ class SettingExtension
* @param string $name * @param string $name
* @param string $view * @param string $view
*/ */
public function __construct($id, $name, $view) public function __construct($id, $name, $view, $order)
{ {
$this->id = $id; $this->id = $id;
$this->name = $name; $this->name = $name;
$this->view = $view; $this->view = $view;
$this->order = $order;
} }
/** /**
@@ -53,4 +55,14 @@ class SettingExtension
{ {
return $this->view; return $this->view;
} }
/**
* @return mixed
*/
public function getOrder()
{
return $this->order;
}
} }
@@ -1,7 +1,8 @@
<?php <?php
namespace App\CMS\Handlers\Registrators; namespace App\CMS\Handlers\Registrators;
use App\CMS\Enumerations\Exceptions\EnumerationExistsException; use App\CMS\Exceptions\Enumerations\EnumerationExistsException;
use App\CMS\Handlers\Registrators\Items\SettingExtension; use App\CMS\Handlers\Registrators\Items\SettingExtension;
class SettingsExtensionRegistrator class SettingsExtensionRegistrator
@@ -22,12 +23,16 @@ class SettingsExtensionRegistrator
* *
* @throws EnumerationExistsException * @throws EnumerationExistsException
*/ */
public function register($sectionId, $sectionName, $sectionView) public function register($sectionId, $sectionName, $sectionView, $order = null)
{ {
$this->checkIfRegistered($sectionId); $this->checkIfRegistered($sectionId);
if (is_null($order)) {
$order = count($this->settingsExtensions);
}
// register new extension // register new extension
$this->settingsExtensions[$sectionId] = new SettingExtension($sectionId, $sectionName, $sectionView); $this->settingsExtensions[$sectionId] = new SettingExtension($sectionId, $sectionName, $sectionView, $order);
} }
/** /**
@@ -44,13 +49,14 @@ class SettingsExtensionRegistrator
/** /**
* Getter for all registered extensions * Getter for all registered extensions
*
* @return array * @return array
*/ */
public function get() public function get()
{ {
// sort registered extensions by key // sort registered extensions
ksort($this->settingsExtensions); uasort($this->settingsExtensions, function (SettingExtension $a, SettingExtension $b) {
return $a->getOrder() - $b->getOrder();
});
return $this->settingsExtensions; return $this->settingsExtensions;
} }
+1 -1
View File
@@ -56,6 +56,6 @@ class CreateImageThumbnail implements ShouldQueue
}); });
// save thumbnail with lower quality // save thumbnail with lower quality
$image->save(config('app.thumbnail_path') . DIRECTORY_SEPARATOR . $file->getFilename(), 75); $image->save(config('app.thumbnail_path') . DIRECTORY_SEPARATOR . $file->getFilename(), setting('previewQuality', 75));
} }
} }
+1 -1
View File
@@ -119,7 +119,7 @@ class AppServiceProvider extends ServiceProvider
$registrator->register('basic', 'admin/settings.basic', 'admin.settings.parts.basic'); $registrator->register('basic', 'admin/settings.basic', 'admin.settings.parts.basic');
$registrator->register('meta', 'admin/settings.meta', 'admin.settings.parts.meta'); $registrator->register('meta', 'admin/settings.meta', 'admin.settings.parts.meta');
$registrator->register('social', 'admin/settings.socialSites', 'admin.settings.parts.social'); $registrator->register('social', 'admin/settings.socialSites', 'admin.settings.parts.social');
$registrator->register('widgets', 'admin/settings.widgets.title', 'admin.settings.parts.widgets'); $registrator->register('advanced', 'admin/settings.advanced.title', 'admin.settings.parts.advanced', 999);
} }
/** /**
+11 -1
View File
@@ -21,8 +21,18 @@ return [
], ],
"socialSites" => "Sociální sítě", "socialSites" => "Sociální sítě",
"successfullySaved" => "Nastavení úspěšně změněno", "successfullySaved" => "Nastavení úspěšně změněno",
'advanced' => [
"title" => 'Pokročilé',
],
'previews' => [
'title' => 'Nastavení obrázkových náhledů',
'quality' => 'Kvalita',
'size' => 'Velikost (v pixelech)'
],
'widgets' => [ 'widgets' => [
"title" => 'Widgety', 'title' => 'Widgety',
'useWidgetPreloading' => 'Používat přednačítání widgetů?', 'useWidgetPreloading' => 'Používat přednačítání widgetů?',
'preloadFrequentedWidgetAreasTreshold' => 'Práh pro přednačtení widgetů', 'preloadFrequentedWidgetAreasTreshold' => 'Práh pro přednačtení widgetů',
'widgetCacheLifetime' => 'Platnost cache pro widgety' 'widgetCacheLifetime' => 'Platnost cache pro widgety'
@@ -0,0 +1,81 @@
<h3>@lang('admin/settings.previews.title')</h3>
<div class="row">
<div class="col-md-9">
<label>@lang('admin/settings.previews.size')</label>
<div class="input-group">
<input type="text" class="form-control" name="previewSize" value="{{old('previewSize', isset($settings->previewSize) ? $settings->previewSize['val'] : 300)}}">
<span class="input-group-addon">px</span>
</div>
</div>
<div class="col-md-3">
@include('admin.settings.snippets.commonSettings', ['field' => 'previewSize'])
</div>
<div class="col-md-9">
<label>@lang('admin/settings.previews.quality')</label>
<div class="input-group">
<input type="text" class="form-control" name="previewQuality" value="{{old('previewQuality', isset($settings->previewQuality) ? $settings->previewQuality['val'] : 75)}}">
<span class="input-group-addon">%</span>
</div>
</div>
<div class="col-lg-3">
@include('admin.settings.snippets.commonSettings', ['field' => 'previewQuality'])
</div>
</div>
<h3 class="m-t-50">@lang('admin/settings.widgets.title')</h3>
<div class="row">
<div class="col-lg-9">
<label>
<input class="checkbox" value="1"
@if(!isset($settings->useWidgetPreloading) || $settings->useWidgetPreloading['lang'] == null)
checked
@endif name="useWidgetPreloading" type="checkbox">
<span>@lang('admin/settings.widgets.useWidgetPreloading')</span>
</label>
</div>
<div class="col-lg-3">
@include('admin.settings.snippets.commonSettings', ['field' => 'useWidgetPreloading'])
</div>
</div>
<div class="row">
<div class="col-lg-9">
<label class="label-control">
@lang('admin/settings.widgets.preloadFrequentedWidgetAreasTreshold')
</label>
<div class="input-group">
<input type="text" class="form-control" name="preloadFrequentedWidgetAreasTreshold" value="{{old('preloadFrequentedWidgetAreasTreshold', isset($settings->preloadFrequentedWidgetAreasTreshold) ? $settings->preloadFrequentedWidgetAreasTreshold['val'] : 10)}}">
<span class="input-group-addon">@lang('common.views')</span>
</div>
</div>
<div class="col-lg-3">
@include('admin.settings.snippets.commonSettings', ['field' => 'author'])
</div>
</div>
<div class="row">
<div class="col-lg-9">
<label class="label-control">
@lang('admin/settings.widgets.widgetCacheLifetime')
</label>
<div class="input-group">
<input type="text" class="form-control" name="widgetCacheLifetime" value="{{old('widgetCacheLifetime', isset($settings->widgetCacheLifetime) ? $settings->widgetCacheLifetime['val'] : 10)}}">
<span class="input-group-addon">@lang('common.minutes')</span>
</div>
</div>
<div class="col-lg-3">
@include('admin.settings.snippets.commonSettings', ['field' => 'author'])
</div>
</div>
@@ -1,49 +0,0 @@
<div class="row">
<div class="col-lg-9">
<label>
<input class="checkbox" value="1"
@if(!isset($settings->useWidgetPreloading) || $settings->useWidgetPreloading['lang'] == null)
checked
@endif name="useWidgetPreloading" type="checkbox">
<span>@lang('admin/settings.widgets.useWidgetPreloading')</span>
</label>
</div>
<div class="col-lg-3">
@include('admin.settings.snippets.commonSettings', ['field' => 'useWidgetPreloading'])
</div>
</div>
<div class="row">
<div class="col-lg-9">
<label class="label-control">
@lang('admin/settings.widgets.preloadFrequentedWidgetAreasTreshold')
</label>
<div class="input-group">
<input type="text" class="form-control" value="{{old('preloadFrequentedWidgetAreasTreshold', isset($settings->preloadFrequentedWidgetAreasTreshold) ? $settings->preloadFrequentedWidgetAreasTreshold['val'] : 10)}}">
<span class="input-group-addon">@lang('common.views')</span>
</div>
</div>
<div class="col-lg-3">
@include('admin.settings.snippets.commonSettings', ['field' => 'author'])
</div>
</div>
<div class="row">
<div class="col-lg-9">
<label class="label-control">
@lang('admin/settings.widgets.widgetCacheLifetime')
</label>
<div class="input-group">
<input type="text" class="form-control" value="{{old('widgetCacheLifetime', isset($settings->widgetCacheLifetime) ? $settings->widgetCacheLifetime['val'] : 10)}}">
<span class="input-group-addon">@lang('common.minutes')</span>
</div>
</div>
<div class="col-lg-3">
@include('admin.settings.snippets.commonSettings', ['field' => 'author'])
</div>
</div>
+1 -1
View File
@@ -16,7 +16,7 @@ Route::group(['namespace' => 'FileManager'], function () {
route::post('directories/new', 'CreateNewDirectory@store') route::post('directories/new', 'CreateNewDirectory@store')
->name('upload.postNewDirectory') ->name('upload.postNewDirectory')
->middleware('can:create,directory'); ->middleware('can:create,'.\App\Models\FileManager\Directory::class);
Route::get('upload/detail/{file}', 'EditUploadedFile@show') Route::get('upload/detail/{file}', 'EditUploadedFile@show')
->name('upload.detail') ->name('upload.detail')