Forráskód Böngészése

end Release status and parent and

Azam Rezayi 4 éve
szülő
commit
fea37cc0ad

+ 16 - 0
app/Helpers/category_select_options.php

@@ -0,0 +1,16 @@
+<?php
+function category_select_options( $categories, $current=[], $prefix="" ){
+    $response = "";
+    $current = (array) $current;
+    foreach( $categories as $category ){
+        $selected = ( in_array( $category->id, $current ) ) ? "selected='selected'" : "";
+       $title = $category->title;
+        if( $prefix != "" )
+          $title = $prefix . " " . $title;
+       $response .= "<option value='{$category->id}' {$selected}>{$title}</option>";
+      if( $category->has('children') )
+           $response .= category_select_options($category->children, $current, $prefix . "-");
+    }
+
+   return $response;
+}

+ 28 - 7
app/Http/Controllers/Panel/Categories/CategoryController.php

@@ -6,7 +6,7 @@ use App\Models\Category;
 use App\Http\Controllers\Controller;
 use Illuminate\Database\Eloquent\Builder;
 use Illuminate\Http\Request;
-
+use phpDocumentor\Reflection\Types\Null_;
 
 
 class CategoryController extends Controller
@@ -42,8 +42,23 @@ class CategoryController extends Controller
      */
     public function create()
     {
+//        $categories = Category::orderBy('parent_id', 'DESC');
+
+//        return view('panel.categories.create',compact('categories'));
+//        $categories = Category::orderBy('parent_id')->get();
+//       dd($categories);
+//        return view('panel.categories.create',compact('categories'));
+
+
+//            $categories    = Category:: orderBy('parent_id')->get();
+//
+////        dd($categories);
+//        return view('panel.categories.create', compact('categories'));
+
 
-        return view('panel.categories.create');
+            $categories = Category::orderBy('parent_id')->where('parent_id', 0)->get();
+
+        return view('panel.categories.create', compact('categories'));
     }
 
     /**
@@ -58,7 +73,7 @@ class CategoryController extends Controller
         $data = [
             'title' => $request->title,
             'slug' => $request->slug,
-            'parent' => $request->parent,
+            'parent_id' => $request->parent_id,
             'category_type' => $request->category_type,
             'discription' => $request->discription,
             'creator_id' => auth()->user()->id
@@ -66,7 +81,7 @@ class CategoryController extends Controller
 
         $category = Category::create($data);
         $msg = 'ذخیره محصول با موفقیت انجام شد ';
-        return redirect(route('categories.edit', $category->id))->with('success', $msg);
+        return redirect(route('categories.edit', $category->id))->with('success', 'دسته بندی جدید با موفقیت ایجاد شد.');
     }
 
     /**
@@ -86,9 +101,15 @@ class CategoryController extends Controller
      * @param  int  $id
      * @return \Illuminate\Http\Response
      */
-    public function edit(Category $category)
+    public function edit( $id)
     {
-        return view('panel.categories.edit', compact('category'));
+        $category = Category::findOrFail( $id );
+
+
+            $categories  = Category::orderBy('parent_id')->where('parent_id', 0)->get();
+
+
+        return view('panel.categories.edit', compact('category', 'categories'));
 
     }
 
@@ -104,7 +125,7 @@ class CategoryController extends Controller
         $data = [
             'title' => $request->title,
             'slug' => $request->slug,
-            'parent' => $request->parent,
+            'parent_id' => $request->parent_id,
             'category_type' => $request->category_type,
             'discription' => $request->discription,
             'creator_id' => auth()->user()->id

+ 1 - 1
app/Http/Requests/CategoryRequest.php

@@ -25,7 +25,7 @@ class CategoryRequest extends FormRequest
     {
         return [
             'title' => ['required','max:100'],
-            'parent' => ['required'],
+
             'category_type' => ['required'],
             'discription' => ['required'],
         ];

+ 17 - 4
app/Models/Category.php

@@ -5,11 +5,12 @@ use App\User;
 use Packages\Product\Models\Product;
 use Illuminate\Database\Eloquent\Model;
 use Illuminate\Database\Eloquent\SoftDeletes;
+use Cviebrock\EloquentSluggable\Sluggable;
 class Category extends Model
 {
-    protected $fillable = ['title', 'parent', 'category_type', 'creator_id', 'slug', 'discription'];
-
+    protected $fillable = ['title', 'parent_id', 'category_type', 'creator_id', 'slug', 'discription'];
 
+    use Sluggable;
     use SoftDeletes;
 
 
@@ -17,8 +18,13 @@ class Category extends Model
     {
         return $this->belongsTo(User::class, 'creator_id', 'id');
     }
+    public function children(){
+        return $this->hasMany( Category::class, 'parent_id' );
+    }
 
-
+    public function parent() {
+        return $this->belongsTo(Category::class);
+    }
     public function products()
     {
         return $this->morphedByMany(Product::class, 'categorizable');
@@ -43,6 +49,13 @@ class Category extends Model
         }
         return $category_type;
     }
-
+    public function sluggable()
+    {
+        return [
+            'slug' => [
+                'source' => 'title'
+            ]
+        ];
+    }
 
 }

+ 30 - 0
app/Providers/HelpersServiceProvider.php

@@ -0,0 +1,30 @@
+<?php
+
+namespace App\Providers;
+
+use Illuminate\Support\ServiceProvider;
+
+class HelpersServiceProvider extends ServiceProvider
+{
+    /**
+     * Register services.
+     *
+     * @return void
+     */
+    public function register()
+    {
+        //
+    }
+
+    /**
+     * Bootstrap services.
+     *
+     * @return void
+     */
+    public function boot()
+    {
+        foreach( glob(app_path() . '/Helpers/*.php') as $file ){
+            require_once($file);
+        }
+    }
+}

+ 9 - 0
app/Traits/Attachments.php

@@ -0,0 +1,9 @@
+<?php
+
+namespace App\Traits;
+
+trait Attachments{
+    public function attachments(){
+        return $this->morphMany('App\Attachment', 'parent');
+    }
+}

+ 3 - 0
config/app.php

@@ -170,6 +170,8 @@ return [
          */
          Packages\Product\ProductServiceProvider::class,
 
+        App\Providers\HelpersServiceProvider::class,
+
         /*
          * Application Service Providers...
          */
@@ -178,6 +180,7 @@ return [
         // App\Providers\BroadcastServiceProvider::class,
         App\Providers\EventServiceProvider::class,
         App\Providers\RouteServiceProvider::class,
+        App\Providers\HelpersServiceProvider::class,
 
 
     ],

+ 1 - 1
database/migrations/2020_06_22_085956_create_categories_table.php

@@ -20,7 +20,7 @@ class CreateCategoriesTable extends Migration
             $table->string('creator_id');
             $table->string('slug')->unique()->nullable();
             $table->string('category_type');
-            $table->string('parent')->default("0");
+            $table->unsignedInteger('parent_id')->nullable()->default(0);
             $table->timestamps();
             $table->softDeletes();
 

+ 2 - 2
database/migrations/2020_07_05_045648_create_uploads_table.php

@@ -19,8 +19,8 @@ class CreateUploadsTable extends Migration
             $table->string('path');
             $table->string('extension');
             $table->string('mime_type');
-            $table->string('descriptionImg');
-            $table->string('caption');
+            $table->string('descriptionImg')->nullable();
+            $table->string('caption')->nullable();
             $table->enum('type',['featured_image','gallery_image']);
             $table->morphs('uploadable');
             $table->timestamps();

+ 14 - 0
package-lock.json

@@ -954,6 +954,20 @@
                 "to-fast-properties": "^2.0.0"
             }
         },
+        "@ckeditor/ckeditor5-alignment": {
+            "version": "20.0.0",
+            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-alignment/-/ckeditor5-alignment-20.0.0.tgz",
+            "integrity": "sha512-LWDRsp1RWAl/qGS2hjYpxTzbX4H3I11eOm1pUB1y0GuweuUzsj1GSGY7nLsKHyKq4eUqM4CTpZfHhKrFCCBEGA==",
+            "requires": {
+                "@ckeditor/ckeditor5-core": "^20.0.0",
+                "@ckeditor/ckeditor5-ui": "^20.0.0"
+            }
+        },
+        "@ckeditor/ckeditor5-build-classic": {
+            "version": "20.0.0",
+            "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-build-classic/-/ckeditor5-build-classic-20.0.0.tgz",
+            "integrity": "sha512-RlKMQUMzaoKQA09q/9ty4LQ+kdXZhzI6rsOzbAudBJzFX+FcY+48z9qr6EwYn9CdnCv9v0SjFi0K20s/Nb+Nkg=="
+        },
         "@ckeditor/ckeditor5-core": {
             "version": "20.0.0",
             "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-core/-/ckeditor5-core-20.0.0.tgz",

+ 2 - 0
package.json

@@ -24,6 +24,8 @@
     "vue-template-compiler": "^2.6.11"
   },
   "dependencies": {
+    "@ckeditor/ckeditor5-alignment": "^20.0.0",
+    "@ckeditor/ckeditor5-build-classic": "^20.0.0",
     "@ckeditor/ckeditor5-editor-classic": "^20.0.0",
     "bootstrap-v4-rtl": "^4.4.1-2",
     "croppie": "^2.6.5",

+ 0 - 1
packages/product/composer.json

@@ -11,7 +11,6 @@
     ],
     "minimum-stability": "dev",
     "require": {
-        "cviebrock/eloquent-sluggable": "dev-master"
     },
     "autoload": {
         "psr-4": {

+ 10 - 11
packages/product/src/Http/Controllers/ProductController.php

@@ -8,6 +8,7 @@ use Illuminate\Database\Eloquent\Builder;
 use Illuminate\Support\Facades\Facade;
 use Illuminate\Support\Facades\File;
 use Illuminate\Support\Facades\Storage;
+use Illuminate\Support\Str;
 use Packages\Product\Http\Requests\ProductRequest;
 use Packages\Product\Http\Requests\ProductRequestEdit;
 use Packages\Product\Models\Product;
@@ -56,7 +57,7 @@ class ProductController extends Controller
 //**************************************************** page create products *****************
     public function create()
     {
-        $categories = Category::orderBy('id', 'DESC')->get();
+        $categories = Category::orderBy('parent_id')->where('parent_id', 0)->get();
 
         return view('product::product.create', compact('categories'));
     }
@@ -78,8 +79,9 @@ class ProductController extends Controller
         ]);
         $data = [
             'title' => $request->title,
-            'slug' => $request->slug,
+             'slug' => $request->slug,
             'sku' => $request->sku,
+            'ReleaseStatus' => $request->ReleaseStatus,
             'price' => $request->price,
             'sale_price' => $request->sale_price,
             'type' => $request->type,
@@ -87,10 +89,10 @@ class ProductController extends Controller
             'discription' => $request->discription,
             'creator_id' => auth()->user()->id
         ];
-        \DB::enableQueryLog();
+//        \DB::enableQueryLog();
         $product = Product::create($data);
         $product->categories()->sync($request->categories);
-        dd(\DB::getQueryLog());
+//        dd(\DB::getQueryLog());
 
         if ($request->has('gallery_image')) {
             $file = $request->only('gallery_image', 'captionGallery', 'descriptionGallery');
@@ -116,10 +118,7 @@ class ProductController extends Controller
 
     public function edit(Product $product)
     {
-//        dd($request->all());
-
-        $categories = Category::orderBy('id', 'DESC')->get();
-
+        $categories = Category::where('parent_id', 0)->orderBy('title')->get();
         return view('product::product.edit', compact('product', 'categories'));
     }
 
@@ -132,8 +131,7 @@ class ProductController extends Controller
             'price' => preg_replace('/[^0-9]+/', '', $request->price),
             'sale_price' => preg_replace('/[^0-9]+/', '', $request->sale_price),
         ]);
-
-
+//        'categories' => $request->categories,
         $data = [
             'title' => $request->title,
             'slug' => $request->slug,
@@ -141,6 +139,7 @@ class ProductController extends Controller
             'price' => $request->price,
             'sale_price' => $request->sale_price,
             'type' => $request->type,
+            'ReleaseStatus' => $request->ReleaseStatus,
             'status' => $request->status,
             'discription' => $request->discription,
             'creator_id' => auth()->user()->id,
@@ -161,7 +160,7 @@ class ProductController extends Controller
             $file = $request->file('featured_image');
             $type = 'featured_image';
             $diskName = 'product';
-            $this->updateFeature($file, $diskName, $product, $type, $info);
+            $this->uploadFeature($file, $diskName, $product, $type, $info);
 
         }
 

+ 4 - 4
packages/product/src/Http/Requests/ProductRequest.php

@@ -27,17 +27,17 @@ class ProductRequest extends FormRequest
         return [
             'title' => ['required','max:100'],
             'price' => ['required'],
-            'type' => ['required'],
             'slug' => ['unique:products'],
+            'type' => ['required'],
             'status' => ['required'],
             'discription' => ['required'],
             'categories' => ['required'],
-            'featureDescription' => ['nullable'],
-            'featureCaption' => ['nullable'],
+//            'featureDescription' => ['required'],
+//            'featureCaption' => ['required'],
             'descriptionImg' => ['nullable'],
             'caption' => ['nullable'],
             'gallery_image' => ['nullable'],
-            'featured_image' => ['nullable', 'image', 'mimes:jpeg,jpg,png,gif', 'max:8000'],
+            'featured_image' => ['required', 'image', 'mimes:jpeg,jpg,png,gif', 'max:8000'],
 
 
         ];

+ 1 - 1
packages/product/src/Http/Requests/ProductRequestEdit.php

@@ -31,7 +31,7 @@ class ProductRequestEdit extends FormRequest
             'status' => ['required'],
             'discription' => ['required'],
             'categories' => ['required'],
-//            'featured_image' => ['required', 'image', 'mimes:jpeg,jpg,png,gif', 'max:8000'],
+
 
 
         ];

+ 21 - 1
packages/product/src/Models/Product.php

@@ -13,7 +13,7 @@ class Product extends Model
     use Sluggable;
     use SoftDeletes;
 
-   protected $fillable = ['title', 'discription', 'price', 'creator_id', 'type', 'status', 'sale_price', 'sku'];
+   protected $fillable = ['title', 'discription', 'price', 'creator_id', 'type', 'status', 'sale_price', 'sku', 'ReleaseStatus'];
 //    protected $guarded = [];
 
     public function user()
@@ -75,6 +75,26 @@ class Product extends Model
         }
         return $type;
     }
+    public function getReleaseStatusAttribute($value)
+    {
+
+        switch ($value) {
+            case 'draft':
+                $ReleaseStatus = 'پیشنویس';
+                break;
+            case 'pending':
+                $ReleaseStatus = 'در انتظار انتشار';
+                break;
+                case 'published':
+                $ReleaseStatus = 'منتشر شده';
+                break;
+
+            default:
+                $ReleaseStatus = '';
+
+        }
+        return $ReleaseStatus;
+    }
     public function sluggable()
     {
         return [

+ 1 - 2
packages/product/src/database/migrations/2020_06_15_061100_create_products_table.php

@@ -21,11 +21,10 @@ class CreateProductsTable extends Migration
             $table->string('price');
             $table->string('sale_price')->nullable();
             $table->string('creator_id');
+            $table->enum('ReleaseStatus',['draft','pending','published']);
             $table->string('type')->default("0");
             $table->string('sku')->unique()->nullable();
             $table->string('status')->default("0");
-            // $table->enum('status', ['0', '1'])->default("0");
-
             $table->timestamps();
             $table->softDeletes();
         });

+ 4 - 0
packages/product/src/views/index.blade.php

@@ -97,6 +97,8 @@
                             <div class="mt-4">
                                 <a href="{{ route('products.create') }}" type="button" class="btn btn-primary"><i
                                         class="fa fa-plus"></i> ایجاد محصول</a>
+                                <a href="{{ route('categories.create') }}" type="button" class="btn btn-primary"><i
+                                        class="fa fa-plus"></i> ایجاد دسته بندی</a>
                             </div>
 
                             @component('components.table')
@@ -111,6 +113,7 @@
                                         <th> نویسنده</th>
                                         <th>وضعیت</th>
                                         <th>نوع</th>
+                                        <th>وضعیت انتشار</th>
                                         <th>توضیحات</th>
                                         <th>دسته بندی</th>
                                         <th> مدیریت</th>
@@ -128,6 +131,7 @@
                                             <td>{{$product->user->name}}</td>
                                             <td>{{$product->status}}</td>
                                             <td>{{$product->type}}</td>
+                                            <td>{{$product->ReleaseStatus}}</td>
                                             <td><?php  echo mb_substr($product->discription, 0, 15, 'UTF8') . '...'?></td>
                                             <td>
                                                 @foreach($product->categories->pluck('title') as $category)

+ 29 - 10
packages/product/src/views/product/create.blade.php

@@ -132,12 +132,33 @@
                                             </span>
                                             @enderror
                                         </div>
+                                        <div class="form-group col-lg-4">
+                                            <label for="status">{{ __('product.ReleaseStatus') }}</label><i class="required">&nbsp;
+                                                *</i>
+                                            <select id="ReleaseStatus" type="text"
+                                                    class="form-control @error('ReleaseStatus') is-invalid @enderror" name="ReleaseStatus"
+                                                    value="{{ old('ReleaseStatus') }}" autocomplete="ReleaseStatus">
+                                                <option value="">انتخاب کنید</option>
+                                                <option value="draft" {{ (old('ReleaseStatus') == 'draft') ? 'selected' : '' }}>پیشنویس
+                                                </option>
+                                                <option value="pending" {{ (old('ReleaseStatus') == 'pending') ? 'selected' : '' }}>در حال انتظار
+                                                </option>
+                                                <option value="published" {{ (old('ReleaseStatus') == 'published') ? 'selected' : '' }}>منتشر شده
+                                                </option>
+
+                                            </select>
+                                            @error('ReleaseStatus')
+                                            <span class="invalid-feedback" role="alert">
+                                               <strong>{{ $message }}</strong>
+                                            </span>
+                                            @enderror
+                                        </div>
                                     </div>
                                     <div class="form-group">
                                         <label for="discription">{{ __('product.discription') }}</label></label><i
                                             class="required">&nbsp; *</i>
-                                        <textarea id="discription" type="text"
-                                                  class="form-control  @error('discription') is-invalid @enderror"
+                                        <textarea id="editor" type="text"
+                                                  class="form-control ClassicEditor @error('discription') is-invalid @enderror"
                                                   name="discription"
 
                                                   autocomplete="discription"
@@ -152,14 +173,11 @@
                                     <div class="form-group">
                                         <label for="categories">{{ __('product.categories') }}</label><i
                                             class="required">&nbsp; *</i>
-                                        <select id=""
-                                                class="form-control select2 @error('categories') is-invalid @enderror"
-                                                name="categories[]" multiple>
-
-                                            <option value="">انتخاب کنید</option>
-                                            @foreach($categories as $cat)
-                                                <option value="{{$cat->id }}">{{$cat->title}}</option>
-                                            @endforeach
+                                        <select name="categories[]"
+                                                class="form-control select2 @error('categories[]') is-invalid @enderror" multiple>
+                                            <option value="0">--</option>
+
+                                            {!! category_select_options( $categories, old( 'categories[]' ) ) !!}
                                         </select>
                                         @error('categories')
                                         <span class="invalid-feedback" role="alert">
@@ -248,6 +266,7 @@
     @endslot
 
     @slot('script')
+
     @endslot
 
 @endcomponent

+ 31 - 11
packages/product/src/views/product/edit.blade.php

@@ -74,7 +74,6 @@
                                         </div>
                                         <div class="form-group col-lg-4">
                                             <label for="type">{{ __('product.type') }}</label>
-                                            <i class="required">  *</i>
                                             <select id="type" type="text"
                                                     class="form-control @error('type') is-invalid @enderror"
                                                     name="type"
@@ -139,10 +138,33 @@
                                             @enderror
                                         </div>
                                     </div>
+                                    <div class="form-group col-lg-4">
+                                        <label for="ReleaseStatus">{{ __('product.ReleaseStatus') }}</label>
+                                        <i class="required">  *</i>
+                                        <select id="ReleaseStatus" type="text"
+                                                class="form-control @error('ReleaseStatus') is-invalid @enderror"
+                                                name="ReleaseStatus"
+                                                autocomplete="ReleaseStatus">
+                                            <option value="draft" @if($product->ReleaseStatus==='پیشنویس') selected='selected' @endif>
+                                                پیشنویس
+                                            </option>
+                                            <option value="pending" @if($product->ReleaseStatus==='در انتظار انتشار') selected='selected' @endif>
+                                              در انتظار انتشار
+                                            </option>
+                                            <option value="published" @if($product->ReleaseStatus==='منتشر شده') selected='selected' @endif>
+                                                منتشر شده
+                                            </option>
+                                        </select>
+                                        @error('ReleaseStatus')
+                                        <span class="invalid-feedback" role="alert">
+                                                    <strong>{{ $message }}</strong>
+                                                </span>
+                                        @enderror
+                                    </div>
                                     <div class="form-group">
                                         <label for="discription">{{ __('product.discription') }}</label>
                                         <i class="required">&nbsp; *</i>
-                                        <textarea id="discription" type="text"
+                                        <textarea id="editor" type="text"
                                                   class="form-control @error('discription') is-invalid @enderror"
                                                   name="discription"
                                                   autocomplete="discription">{{$product->discription}}</textarea>
@@ -152,27 +174,25 @@
                                             </span>
                                         @enderror
                                     </div>
+
                                     <div class="form-group">
                                         <label for="categories[]">{{ __('product.categories') }}</label>
                                         <i class="required">&nbsp; *</i>
+
                                         <select id="categories" type="text"
                                                 class="form-control select2 @error('categories[]') is-invalid @enderror"
                                                 name="categories[]"
                                                 autocomplete="categories[]" multiple>
-                                            @foreach($categories as $cat)
-                                                <option value="{{$cat->id}}" <?php
-                                                    if (in_array($cat->id, $product->categories->pluck('id')->toArray())) echo 'selected'
-                                                    ?>>
-                                                    {{$cat->title}}
-                                                </option>
-                                            @endforeach
+
+                                                {!! category_select_options( $categories,  $product->categories->pluck('id')->toArray() ) !!}
                                         </select>
                                         @error('status')
-                                            <span class="invalid-feedback" role="alert">
+                                        <span class="invalid-feedback" role="alert">
                                                 <strong>{{ $message }}</strong>
                                             </span>
                                         @enderror
                                     </div>
+
                                     <div class="form-group col-md-8">
                                         @component('product::components.featuredImage')
                                             @slot('ImageSrc')
@@ -206,7 +226,7 @@
                                                             @foreach($product->gallery_images as $upload_photo)
                                                                 <div class="b">
                                                                 <div class=" DeleteImages">
-                                                                    <a class="deleteGallary btn btn-danger pull-right position-absolute"
+                                                                    <a class="btn btn-danger  position-absolute  "
                                                                        href="{{route('uploads.destroyFile', $upload_photo->id)}}">
                                                                         <i class="icon fa fa-close"></i>
                                                                     </a>

+ 4 - 1
resources/js/app.js

@@ -9,7 +9,10 @@ window.select2 = require('select2/dist/js/select2.js');
  window.dropzone = require('dropzone/dist/min/dropzone.min');
 
 
-// window.ClassicEditor = require('@ckeditor/ckeditor5-build-classic');
+ window.ClassicEditor = require('@ckeditor/ckeditor5-build-classic');
+
+
+
 
 
 

+ 8 - 1
resources/js/panel/panel.js

@@ -39,8 +39,15 @@ require('../app');
   $(document).ready(function () {
     $('.select2').select2();
   });
+$('.select2-simple').select2();
 //***************************************************************
-//
+
+ClassicEditor
+    .create( document.querySelector( '#editor' ) )
+    .catch( error => {
+        console.error( error );
+    } );
+
 //******************************************************
 
 

+ 1 - 0
resources/lang/fa/product.php

@@ -4,6 +4,7 @@ return [
   'sale_price'  => 'قیمت فروش ویژه',
   'price'       => 'قیمت ',
   'discription' => ' توضیحات محصول',
+  'ReleaseStatus' => 'وضعیت انتشار',
   'status'      => 'وضعیت محصول',
   'type'        => ' نوع محصول',
   'sku'         => 'sku ',

+ 22 - 20
resources/views/panel/categories/create.blade.php

@@ -46,7 +46,8 @@
                                         </span>
                                         @enderror
                                     </div>
-                                    <div class="form-group">
+                                    <div class="form-row ">
+                                    <div class="form-group col-lg-4">
                                         <label for="slug">{{ __('category.slug') }}</label>
                                         <input id="slug" type="text"
                                                class="form-control @error('slug') is-invalid @enderror"
@@ -58,22 +59,23 @@
                                         </span>
                                         @enderror
                                     </div>
-                                    <div class="form-group">
-                                        <label for="parent">{{ __('category.parent') }}</label><i class="required">&nbsp;*</i>
-                                        <input id="parent" type="text"
-                                               class="form-control @error('parent') is-invalid @enderror"
-                                               name="parent" value="{{ old('parent') }}"
-                                               autocomplete="parent" autofocus>
-
-                                        @error('parent')
-                                        <span class="invalid-feedback" role="alert">
-                                            <strong>{{ $message }}</strong>
-                                        </span>
-                                        @enderror
-
+                                    <div class="form-group col-lg-4">
+                                        <div class="col mb-2">
+                                            <label>دسته بندی والد:</label>
+                                            <select name="parent_id"
+                                                    class="form-control select2 @error('parent_id') is-invalid @enderror">
+                                                <option value="0">--</option>
+
+                                                {!! category_select_options( $categories, old( 'parent_id' ) ) !!}
+                                            </select>
+                                            @error('parent_id')
+                                                 <span class="invalid-feedback" role="alert">
+                                                      <strong>{{ $message }}</strong>
+                                                 </span>
+                                            @enderror
+                                        </div>
                                     </div>
-
-                                    <div class="form-group">
+                                    <div class="form-group col-lg-4">
                                         <label for="category_type">{{ __('category.category_type') }}</label><i
                                             class="required">&nbsp;
                                             *</i>
@@ -93,15 +95,15 @@
                                         </span>
                                         @enderror
                                     </div>
+                                    </div>
 
-
-                                    <div class="form-group">
+                                    <div class="form-group" style="direction: rtl !important;">
                                         <label for="discription">{{ __('category.discription') }}</label><i
                                             class="required">&nbsp; *</i>
-                                        <textarea id="discription" type="text"
+                                        <textarea id="editor" type="text"
                                                   class="form-control @error('discription') is-invalid @enderror"
                                                   name="discription"
-                                                  autocomplete="discription">{{ old('discription') }}</textarea>
+                                                  autocomplete="discription" >{{ old('discription') }}</textarea>
 
                                         @error('discription')
                                         <span class="invalid-feedback" role="alert">

+ 23 - 15
resources/views/panel/categories/edit.blade.php

@@ -24,8 +24,15 @@
         <h1><i class="fa fa-users"></i> ویرایش دسته بندی </h1>
 
     @endslot
+{{--    @slot('breadcrumb')--}}
+{{--        <a href=""><li class="breadcrumb-item"> دسته بندی  /  </li></a>--}}
+{{--        <a href=""><li class="breadcrumb-item">&nbsp; ویرایش دسته بندی/ </li></a>--}}
+{{--        <li class="breadcrumb-item">&nbsp; {{$category->title}} </li>--}}
+{{--    @endslot--}}
     @slot('breadcrumb')
-        <li class="breadcrumb-item">ویرایش دسته بندی محصولات</li>
+        <li class="breadcrumb-item"> {{$category->title}} </li>
+        <li class="breadcrumb-item">&nbsp; ویرایش دسته بندی&nbsp;/ </li>
+        <a href="{{ route('categories.index') }}" ><li class="breadcrumb-item"> &nbsp;دسته بندی </li></a>
     @endslot
 
     @slot('content')
@@ -60,7 +67,8 @@
 
                                     </div>
 
-                                    <div class="form-group">
+                                    <div class="form-row">
+                                    <div class="form-group col-lg-4">
                                         <label for="slug">{{ __('category.slug') }}</label>
                                         <input id="slug" type="text"
                                                class="form-control @error('slug') is-invalid @enderror"
@@ -74,22 +82,22 @@
                                         @enderror
 
                                     </div>
-                                    <div class="form-group">
-                                        <label for="parent">{{ __('category.parent') }}</label><i class="required">&nbsp; *</i>
-                                        <input id="parent" type="text"
-                                               class="form-control @error('parent') is-invalid @enderror"
-                                               name="parent" value="{{$category->parent}}"
-                                               autocomplete="parent" autofocus>
+                                    <div class="col-lg-4">
+                                        <label>دسته بندی والد:</label>
+                                        <select name="parent_id"
+                                                class="form-control select2 @error('parent_id') is-invalid @enderror" >
+                                            <option value="0">--</option>
+                                            {!! category_select_options( $categories,  $category->parent_id  ) !!}
 
-                                        @error('parent')
+                                        </select>
+                                        @error('parent_id')
                                         <span class="invalid-feedback" role="alert">
-                                            <strong>{{ $message }}</strong>
-                                        </span>
+                                                      <strong>{{ $message }}</strong>
+                                                 </span>
                                         @enderror
-
                                     </div>
 
-                                    <div class="form-group">
+                                    <div class="form-group col-lg-4">
                                         <label for="category_type">{{ __('category.category_type') }}</label><i class="required">&nbsp; *</i>
                                         <select id="category_type" type="text"
                                                 class="form-control @error('category_type') is-invalid @enderror"
@@ -107,11 +115,11 @@
                                         </span>
                                         @enderror
                                     </div>
-
+                                    </div>
 
                                     <div class="form-group">
                                         <label for="discription">{{ __('category.discription') }}</label><i class="required">&nbsp; *</i>
-                                        <textarea id="discription" type="text"
+                                        <textarea id="editor" type="text"
                                                   class="form-control @error('discription') is-invalid @enderror"
                                                   name="discription"
 

+ 11 - 3
resources/views/panel/categories/index.blade.php

@@ -3,6 +3,9 @@
         <style>
             .btnSearch {margin-top: 10px;}
             .searchNaum {margin: 20px;}
+            .message{
+                margin: auto;
+            }
         </style>
     @endslot
     @slot('subject')
@@ -15,8 +18,10 @@
     @slot('content')
         <div class="row">
             <div class="col-md-12">
+                <div class="col-md-11 message">
                 @component('product::components.message')
                 @endcomponent
+                </div>
                 @component('components.collapse-card' , ['title' => 'جست جو دسته بندی'])
                     @slot('body')
                         <form method="GET" action="">
@@ -48,6 +53,8 @@
                         <div class="mt-4">
                             <a href="{{ route('categories.create') }}" type="button" class="btn btn-primary"><i
                                     class="fa fa-plus"></i> ایجاد دسته بندی</a>
+                            <a href="{{ route('products.create') }}" type="button" class="btn btn-primary"><i
+                                    class="fa fa-plus"></i> ایجاد محصول</a>
                         </div>
 
                         @component('components.table')
@@ -64,22 +71,23 @@
                                 </tr>
                             @endslot
                             @slot('tbody')
+
                                 @forelse ($categories as $category)
                                     <tr>
                                         <td>{{$category->id}}</td>
                                         <td>{{$category->title}}</td>
                                         <td>{{$category->slug}}</td>
                                         <td>{{$category->category_type}}</td>
-                                        <td>{{$category->parent}}</td>
+                                        <td>@if( $category->parent ){{ $category->parent->title }}@else - @endif</td>
                                         <td><?php  echo mb_substr(strip_tags($category->discription), 0, 15, 'UTF8') . '...'?></td>
                                         <td>{{$category->user->name}}</td>
                                         <td class="d-flex">
                                             <a href="{{route('categories.edit', $category->id)}}"
-                                               class="btn btn-sm btn-primary mr-2">ویرایش</a>
+                                               class="btn btn-sm btn-primary mr-2"><i class="icon fa fa-pencil"></i></a>
                                             <form action="{{route('categories.destroy', $category->id)}}" method="POST" onsubmit="return confirm('آیا مطمئن هستید؟');">
                                                 @csrf
                                                 @method('DELETE')
-                                                <button type="submit" class="btn btn-sm btn-danger">حذف</button>
+                                                <button type="submit" class="btn btn-sm btn-danger"><i class="icon fa fa-close"></i></button>
                                             </form>
                                         </td>
                                     </tr>