Creating a @thumbnail blade directive

parent 99e10caa
<?php
namespace Modules\Media\Blade\Facades;
use Illuminate\Support\Facades\Facade;
class MediaThumbnailDirective extends Facade
{
protected static function getFacadeAccessor()
{
return 'media.thumbnail.directive';
}
}
<?php
namespace Modules\Media\Blade;
use Modules\Media\Image\Imagy;
class MediaThumbnailDirective
{
/**
* @var string
*/
private $path;
/**
* @var string
*/
private $thumbnail;
/**
* @var Imagy
*/
private $imagy;
public function __construct()
{
$this->imagy = app(Imagy::class);
}
public function show($arguments)
{
$this->extractArguments($arguments);
return $this->imagy->getThumbnail($this->path, $this->thumbnail);
}
/**
* Extract the possible arguments as class properties
* @param array $arguments
*/
private function extractArguments(array $arguments)
{
$this->path = array_get($arguments, 0);
$this->thumbnail = array_get($arguments, 1);
}
}
...@@ -8,6 +8,7 @@ use Illuminate\Support\ServiceProvider; ...@@ -8,6 +8,7 @@ use Illuminate\Support\ServiceProvider;
use Modules\Core\Traits\CanPublishConfiguration; use Modules\Core\Traits\CanPublishConfiguration;
use Modules\Media\Blade\MediaMultipleDirective; use Modules\Media\Blade\MediaMultipleDirective;
use Modules\Media\Blade\MediaSingleDirective; use Modules\Media\Blade\MediaSingleDirective;
use Modules\Media\Blade\MediaThumbnailDirective;
use Modules\Media\Console\RefreshThumbnailCommand; use Modules\Media\Console\RefreshThumbnailCommand;
use Modules\Media\Contracts\DeletingMedia; use Modules\Media\Contracts\DeletingMedia;
use Modules\Media\Contracts\StoringMedia; use Modules\Media\Contracts\StoringMedia;
...@@ -46,6 +47,9 @@ class MediaServiceProvider extends ServiceProvider ...@@ -46,6 +47,9 @@ class MediaServiceProvider extends ServiceProvider
$this->app->bind('media.multiple.directive', function () { $this->app->bind('media.multiple.directive', function () {
return new MediaMultipleDirective(); return new MediaMultipleDirective();
}); });
$this->app->bind('media.thumbnail.directive', function () {
return new MediaThumbnailDirective();
});
} }
public function boot(DispatcherContract $events) public function boot(DispatcherContract $events)
...@@ -143,5 +147,8 @@ class MediaServiceProvider extends ServiceProvider ...@@ -143,5 +147,8 @@ class MediaServiceProvider extends ServiceProvider
$this->app['blade.compiler']->directive('mediaMultiple', function ($value) { $this->app['blade.compiler']->directive('mediaMultiple', function ($value) {
return "<?php echo MediaMultipleDirective::show([$value]); ?>"; return "<?php echo MediaMultipleDirective::show([$value]); ?>";
}); });
$this->app['blade.compiler']->directive('thumbnail', function ($value) {
return "<?php echo MediaThumbnailDirective::show([$value]); ?>";
});
} }
} }
...@@ -17,7 +17,8 @@ ...@@ -17,7 +17,8 @@
"Imagy": "Modules\\Media\\Image\\Facade\\Imagy", "Imagy": "Modules\\Media\\Image\\Facade\\Imagy",
"FileHelper": "Modules\\Media\\Helpers\\FileHelper", "FileHelper": "Modules\\Media\\Helpers\\FileHelper",
"MediaSingleDirective": "Modules\\Media\\Blade\\Facades\\MediaSingleDirective", "MediaSingleDirective": "Modules\\Media\\Blade\\Facades\\MediaSingleDirective",
"MediaMultipleDirective": "Modules\\Media\\Blade\\Facades\\MediaMultipleDirective" "MediaMultipleDirective": "Modules\\Media\\Blade\\Facades\\MediaMultipleDirective",
"MediaThumbnailDirective": "Modules\\Media\\Blade\\Facades\\MediaThumbnailDirective"
}, },
"files": [ "files": [
] ]
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment