Daniel Supernault пре 4 година
родитељ
комит
069a0e4ae1

+ 4 - 0
app/Http/Controllers/Admin/AdminSettingsController.php

@@ -26,6 +26,7 @@ trait AdminSettingsController
 		$png = in_array('image/png', $types);
 		$gif = in_array('image/gif', $types);
 		$mp4 = in_array('video/mp4', $types);
+		$webp = in_array('image/webp', $types);
 
 		// $system = [
 		// 	'permissions' => is_writable(base_path('storage')) && is_writable(base_path('bootstrap')),
@@ -39,6 +40,7 @@ trait AdminSettingsController
 			'png',
 			'gif',
 			'mp4',
+			'webp',
 			'rules',
 			'cloud_storage',
 			'cloud_disk',
@@ -60,6 +62,7 @@ trait AdminSettingsController
 			'type_png' => 'nullable',
 			'type_gif' => 'nullable',
 			'type_mp4' => 'nullable',
+			'type_webp' => 'nullable',
 		]);
 
 		if($request->filled('rule_delete')) {
@@ -83,6 +86,7 @@ trait AdminSettingsController
 			'type_png' => 'image/png',
 			'type_gif' => 'image/gif',
 			'type_mp4' => 'video/mp4',
+			'type_webp' => 'image/webp',
 		];
 
 		foreach ($mimes as $key => $value) {

+ 1 - 0
app/Http/Controllers/ComposeController.php

@@ -136,6 +136,7 @@ class ComposeController extends Controller
 		switch ($media->mime) {
 			case 'image/jpeg':
 			case 'image/png':
+			case 'image/webp':
 			ImageOptimize::dispatch($media);
 			break;
 

+ 55 - 55
app/Jobs/ImageOptimizePipeline/ImageUpdate.php

@@ -16,68 +16,68 @@ use App\Jobs\MediaPipeline\MediaStoragePipeline;
 
 class ImageUpdate implements ShouldQueue
 {
-    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
+	use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
 
-    protected $media;
+	protected $media;
 
-    protected $protectedMimes = [
-        'image/jpeg',
-        'image/png',
-    ];
+	protected $protectedMimes = [
+		'image/jpeg',
+		'image/png',
+		'image/webp'
+	];
 
-    /**
-     * Delete the job if its models no longer exist.
-     *
-     * @var bool
-     */
-    public $deleteWhenMissingModels = true;
-    
-    /**
-     * Create a new job instance.
-     *
-     * @return void
-     */
-    public function __construct(Media $media)
-    {
-        $this->media = $media;
-    }
+	/**
+	 * Delete the job if its models no longer exist.
+	 *
+	 * @var bool
+	 */
+	public $deleteWhenMissingModels = true;
 
-    /**
-     * Execute the job.
-     *
-     * @return void
-     */
-    public function handle()
-    {
-        $media = $this->media;
-        if(!$media) {
-            return;
-        }
-        $path = storage_path('app/'.$media->media_path);
-        $thumb = storage_path('app/'.$media->thumbnail_path);
-        
-        if (!is_file($path)) {
-            return;
-        }
+	/**
+	 * Create a new job instance.
+	 *
+	 * @return void
+	 */
+	public function __construct(Media $media)
+	{
+		$this->media = $media;
+	}
 
-        if (in_array($media->mime, $this->protectedMimes) == true) {
-            ImageOptimizer::optimize($thumb);
-            if(!$media->skip_optimize) {
-                ImageOptimizer::optimize($path);
-            }
-        }
+	/**
+	 * Execute the job.
+	 *
+	 * @return void
+	 */
+	public function handle()
+	{
+		$media = $this->media;
+		if(!$media) {
+			return;
+		}
+		$path = storage_path('app/'.$media->media_path);
+		$thumb = storage_path('app/'.$media->thumbnail_path);
 
-        if (!is_file($path) || !is_file($thumb)) {
-            return;
-        }
+		if (!is_file($path)) {
+			return;
+		}
 
-        $photo_size = filesize($path);
-        $thumb_size = filesize($thumb);
-        $total = ($photo_size + $thumb_size);
-        $media->size = $total;
-        $media->save();
+		if (in_array($media->mime, $this->protectedMimes) == true) {
+			ImageOptimizer::optimize($thumb);
+			if(!$media->skip_optimize) {
+				ImageOptimizer::optimize($path);
+			}
+		}
 
-        MediaStoragePipeline::dispatch($media);
+		if (!is_file($path) || !is_file($thumb)) {
+			return;
+		}
 
-    }
+		$photo_size = filesize($path);
+		$thumb_size = filesize($thumb);
+		$total = ($photo_size + $thumb_size);
+		$media->size = $total;
+		$media->save();
+
+		MediaStoragePipeline::dispatch($media);
+	}
 }

+ 2 - 1
app/Util/Media/Image.php

@@ -15,7 +15,8 @@ class Image
 	public $orientation;
 	public $acceptedMimes = [
 		'image/png',
-		'image/jpeg'
+		'image/jpeg',
+		'image/webp'
 	];
 
 	public function __construct()

+ 6 - 2
resources/views/admin/settings/home.blade.php

@@ -238,8 +238,12 @@
 					<label class="custom-control-label" for="mediaType3"><span class="border border-dark px-1 rounded font-weight-bold">GIF</span></label>
 				</div>
 				<div class="custom-control custom-checkbox mt-2">
-					<input type="checkbox" name="type_mp4" class="custom-control-input" id="mediaType4" {{$mp4 ? 'checked' : ''}}>
-					<label class="custom-control-label" for="mediaType4"><span class="border border-dark px-1 rounded font-weight-bold">MP4</span></label>
+					<input type="checkbox" name="type_webp" class="custom-control-input" id="mediaType4" {{$webp ? 'checked' : ''}}>
+					<label class="custom-control-label" for="mediaType4"><span class="border border-dark px-1 rounded font-weight-bold">WebP</span></label>
+				</div>
+				<div class="custom-control custom-checkbox mt-2">
+					<input type="checkbox" name="type_mp4" class="custom-control-input" id="mediaType5" {{$mp4 ? 'checked' : ''}}>
+					<label class="custom-control-label" for="mediaType5"><span class="border border-dark px-1 rounded font-weight-bold">MP4</span></label>
 				</div>
 				<p class="help-text small text-muted mt-3 mb-0">Allowed media types.</p>
 			</div>