Prechádzať zdrojové kódy

Edit uploadable_id image by ajax

Azam Rezayi 4 rokov pred
rodič
commit
b7e3027d7b

+ 5 - 0
app/Models/Upload.php

@@ -16,4 +16,9 @@ protected $guarded = [] ;
     {
         return $this->morphTo();
     }
+    public function draft()
+    {
+        return $this->morphOne(Draft::class, 'draftable');
+    }
+
 }

+ 31 - 46
packages/product/src/Http/Controllers/ProductController.php

@@ -52,11 +52,10 @@ class ProductController extends Controller
     public function create(Request $request)
     {
         $categories = Category::orderBy('parent_id')->where('parent_id', 0)->get();
+        $uploads = Upload::orderBy('id')->get()->first();
         if (!$request->has('draft_id')) {
             $draft = new Draft();
             $draft->object_type = 'Packages\Product\Draft';
-            Upload::where('parent_type', 'Packages\Product\Draft')
-                ->update(['parent_type' => 'Packages\Product']);
             $draft->delete();
             $draft->save();
             return redirect()->route('products.create', ['draft_id' => $draft->id]);
@@ -70,7 +69,7 @@ class ProductController extends Controller
             'draft' => $draft
         ];
        $product= Product:: orderBy('id', 'DESC');
-        return view('product::product.create', $args, compact('categories', 'product'));
+        return view('product::product.create', $args, compact('categories', 'product', 'uploads'));
     }
 
 // *********************************************************save products ******************
@@ -106,8 +105,8 @@ class ProductController extends Controller
         $product = Product::create($data);
         $product->categories()->sync($request->categories);
 
-       Upload::where('parent_type', 'Packages\Product')
-            ->update(['parent_type' => 'image\Product']);
+       Upload::where('parent_type', 'Packages\Product')->where('uploadable_id', $draft->id)
+            ->update(['parent_type' => 'image\Product', 'uploadable_id' => $product->id]);
         $draft->delete();
 
         if ($request->has('gallery_image')) {
@@ -116,13 +115,7 @@ class ProductController extends Controller
             $diskName = 'product';
             $this->uploadGallery($file, $diskName, $product, $type);
         }
-        if ($request->has('featured_image')) {
-            $info = $request->only(['featureDescription', 'featureCaption']);
-            $file = $request->file('featured_image');
-            $type = 'featured_image';
-            $diskName = 'product';
-            $this->uploadFeature($file, $diskName, $product, $type, $info);
-        }
+
         $msg = 'ذخیره محصول با موفقیت انجام شد ';
         return redirect(route('products.edit', $product->id))->with('success', $msg);
     }
@@ -181,7 +174,8 @@ class ProductController extends Controller
             return back();
         }
     }
-    public function FeaturedImage(Request $request )
+//****************upload images in the product************************
+    public function uploadFeature(Request $request)
     {
         if ($request->has('featured_image')) {
 
@@ -189,45 +183,36 @@ class ProductController extends Controller
             $file = $request->file('featured_image');
             $type = 'featured_image';
             $diskName = 'product';
+            $fileExtension = $file->getClientOriginalExtension();
+            $fileMimeType = $file->getMimeType();
+            $afterDiskRoot = '/' . jdate()->format('Y') . '/' . jdate()->format('m');
+            $fileName = jdate(time())->format('Ymd') . '_' . $file->getClientOriginalName();
+            $filePath = storage_path('app/public/' . $diskName . $afterDiskRoot . '/' . $fileName);
 
-            $this->uploadFeature($file, $diskName, $info,$type);
-        }
-
-    }
-
-//****************upload images in the product************************
-    public function uploadFeature($file, $diskName, $info)
-    {
-        $fileExtension = $file->getClientOriginalExtension();
-        $fileMimeType = $file->getMimeType();
-        $afterDiskRoot = '/' . jdate()->format('Y') . '/' . jdate()->format('m');
-        $fileName = jdate(time())->format('Ymd') . '_' . $file->getClientOriginalName();
-        $filePath = storage_path('app/public/' . $diskName . $afterDiskRoot . '/' . $fileName);
-
-        if (File::exists($filePath)) {
-            $fileName = time() . '_' . $fileName;
+            if (File::exists($filePath)) {
+                $fileName = time() . '_' . $fileName;
+            }
+            $draft = Draft::orderBy('id', 'Desc')->get()->first();
+            $upload = $file->storeAs($afterDiskRoot, $fileName, $diskName);
+            $uploadData = [
+                'name' => $fileName,
+                'path' => $upload,
+                'mime_type' => $fileMimeType,
+                'extension' => $fileExtension,
+                'parent_type' => 'packages\product',
+                'uploadable_type' => 'Packages\Product\Models\Product',
+                'uploadable_id' => $draft->id,
+                'type' => $type,
+                'descriptionImg' => $info['featureDescription'],
+                'caption' => $info['featureCaption'],
+            ];
         }
 
-        $upload = $file->storeAs( $afterDiskRoot, $fileName, $diskName);
-        $uploadData = [
-            'name' => $fileName,
-            'path' => $upload,
-            'mime_type' => $fileMimeType,
-            'extension' => $fileExtension,
-            'parent_type' => 'packages\product',
-            'uploadable_type' => 'Packages\Product\Models\Product',
-            'uploadable_id' => '1',
-//            'type' => "fi",
-            'descriptionImg' => $info['featureDescription'],
-            'caption' => $info['featureCaption'],
-        ];
-
-
       $uploaded = Upload::create($uploadData);
-        dd($uploaded);
+
 //            $uploaded = $product->uploads()->create($uploadData);
         }
-//    }
+
 
     public function updateFeature($file, $diskName, $product, $type, $info)
     {

+ 3 - 2
packages/product/src/Models/Draft.php

@@ -7,8 +7,9 @@ use Illuminate\Database\Eloquent\Model;
 
 class Draft extends Model
 {
-    public function upload_draft()
+    public function draftable()
     {
-        return $this->morphToMany(Upload::class );
+        return $this->morphTo();
     }
+
 }

+ 0 - 33
packages/product/src/database/migrations/2020_08_01_075245_create_attachments_table.php

@@ -1,33 +0,0 @@
-<?php
-
-use Illuminate\Database\Migrations\Migration;
-use Illuminate\Database\Schema\Blueprint;
-use Illuminate\Support\Facades\Schema;
-
-class CreateAttachmentsTable extends Migration
-{
-    /**
-     * Run the migrations.
-     *
-     * @return void
-     */
-    public function up()
-    {
-        Schema::create('attachments', function (Blueprint $table) {
-            $table->id();
-            $table->text('path');
-            $table->morphs('parent');
-            $table->timestamps();
-        });
-    }
-
-    /**
-     * Reverse the migrations.
-     *
-     * @return void
-     */
-    public function down()
-    {
-        Schema::dropIfExists('attachments');
-    }
-}

+ 7 - 10
packages/product/src/js/product.js

@@ -120,12 +120,12 @@ $(document).ready(function () {
         }
     });
     //Delete features Image
-    $(document).ready(function(){
-        $('#previewImages').on('click', '#delete', function(e){
-            e.preventDefault();
-            $(this).closest(".media").remove();
-        });
-    });
+    // $(document).ready(function(){
+    //     $('#previewImages').on('click', '#delete', function(e){
+    //         e.preventDefault();
+    //         $(this).closest(".media").remove();
+    //     });
+    // });
     //namespace variable to determine whether to continue or not
     var proceed = false;
     //Ensure that FILE API is supported by the browser to proceed
@@ -306,7 +306,7 @@ $(document).ready(function () {
 });
 //    ********************File Attachment*******************
 
-//************************
+
 $(document).ready(function(){
     $(".attachment_upload").on('change',function(){
         var loc = window.location;
@@ -326,9 +326,6 @@ $(document).ready(function(){
             processData: false,
             contentType: false,
             success: function(data) {
-                alert('succeed');
-
-
 
             }
         });

+ 1 - 1
packages/product/src/routes/web.php

@@ -12,7 +12,7 @@ Route::group([
 
 
     Route::get('uploads/{upload}', 'ProductController@destroyFile')->name('uploads.destroyFile');
-    Route::post('product_uploads/FeaturedImage', 'ProductController@FeaturedImage')->name('FeaturedImage');
+    Route::post('product_uploads/FeaturedImage', 'ProductController@uploadFeature')->name('FeaturedImage');
 
 });
 

+ 1 - 1
packages/product/src/views/product/create.blade.php

@@ -148,7 +148,7 @@
                                         <div class="hide-element" id="previewImages">
                                             <div class="media">
                                                 <div class="media-left ">
-                                                    <a href="" role="button" class="btn btn-danger pull-right" id="delete">
+                                                    <a href="{{route('uploads.destroyFile', $uploads->id)}}" role="button" class="btn btn-danger pull-right" id="delete">
                                                         <i class="icon fa fa-close"></i>
                                                     </a>
                                                     <img class="media-object img-thumbnail" src="" alt="" id="0" title="" data-toggle="modal" data-target="#individualImagePreview" style="width: 250px; height: 150px;" >