From 3d19b7f4c87ba0e33e6d30da9709884632cfa6b9 Mon Sep 17 00:00:00 2001 From: "shubhammehrotra.symfony@webkul.com" Date: Tue, 4 Feb 2020 17:47:39 +0530 Subject: [PATCH 01/64] resolved issues and hot-categories from ajax --- .../publishable/assets/js/velocity.js | 20 +++- .../Velocity/src/Helpers/AdminHelper.php | 24 +++-- .../Http/Controllers/Shop/ShopController.php | 16 ++++ .../Webkul/Velocity/src/Http/front-routes.php | 2 + .../assets/js/UI/components/product-card.vue | 6 +- .../Velocity/src/Resources/assets/js/app.js | 14 +++ .../views/shop/home/category.blade.php | 7 ++ .../views/shop/home/hot-categories.blade.php | 96 ++++++++++++------- .../views/shop/home/new-products.blade.php | 1 - 9 files changed, 139 insertions(+), 47 deletions(-) diff --git a/packages/Webkul/Velocity/publishable/assets/js/velocity.js b/packages/Webkul/Velocity/publishable/assets/js/velocity.js index 8b3750522..0bf200f64 100644 --- a/packages/Webkul/Velocity/publishable/assets/js/velocity.js +++ b/packages/Webkul/Velocity/publishable/assets/js/velocity.js @@ -1147,7 +1147,8 @@ $(document).ready(function () { 'navContainer': false, 'responsiveSidebarTemplate': '', 'responsiveSidebarKey': Math.random(), - 'sharedRootCategories': [] + 'sharedRootCategories': [], + 'imageObserver': null }; }, @@ -1271,6 +1272,7 @@ $(document).ready(function () { this.$validator.localize(document.documentElement.lang); this.loadCategories(); + this.addIntersectionObserver(); }, methods: { @@ -1353,10 +1355,22 @@ $(document).ready(function () { }).catch(function (error) { console.log('failed to load categories'); }); + }, + + addIntersectionObserver: function addIntersectionObserver() { + this.imageObserver = new IntersectionObserver(function (entries, imgObserver) { + entries.forEach(function (entry) { + if (entry.isIntersecting) { + var lazyImage = entry.target; + lazyImage.src = lazyImage.dataset.src; + } + }); + }); } } }); + // for compilation of html coming from server __WEBPACK_IMPORTED_MODULE_0_vue___default.a.component('vnode-injector', { functional: true, props: ['nodes'], @@ -36538,6 +36552,7 @@ Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); // // // +// // compile add to cart html (it contains wishlist component) /* harmony default export */ __webpack_exports__["default"] = ({ @@ -36668,10 +36683,11 @@ var render = function() { }, [ _c("img", { - staticClass: "card-img-top", + staticClass: "card-img-top lzy_img", attrs: { loading: "lazy", src: _vm.product.image, + "data-src": _vm.product.image, alt: _vm.product.name } }) diff --git a/packages/Webkul/Velocity/src/Helpers/AdminHelper.php b/packages/Webkul/Velocity/src/Helpers/AdminHelper.php index 7c9145733..6b8e6f0fa 100644 --- a/packages/Webkul/Velocity/src/Helpers/AdminHelper.php +++ b/packages/Webkul/Velocity/src/Helpers/AdminHelper.php @@ -32,11 +32,20 @@ class AdminHelper return $locale; } - public function storeCategoryIcon($categoryId) + public function storeCategoryIcon($category) { - $category = $this->categoryRepository->findOrFail($categoryId); + $oldPath = null; + $iconName = 'category_icon_path.image_1'; - $uploadedImagePath = $this->uploadImage($category, 'category_icon_path.image_1'); + if (gettype($category) !== "object") { + // getting id on update + $iconName = 'category_icon_path.image_0'; + $category = $this->categoryRepository->findOrFail($category); + + $oldPath = $category->category_icon_path; + } + + $uploadedImagePath = $this->uploadImage($category, $iconName, $oldPath); if ($uploadedImagePath) { $category->category_icon_path = $uploadedImagePath; @@ -46,7 +55,7 @@ class AdminHelper return $category; } - public function uploadImage($record, $type) + public function uploadImage($record, $type, $oldPath = null) { $request = request(); @@ -55,11 +64,8 @@ class AdminHelper $dir = 'velocity/' . $type; if ($request->hasFile($file)) { - if ($type == 'locale_image.image_0' && $record->locale_image) { - Storage::delete($record->locale_image); - } - if ($type == 'category_icon_path.image_1' && $record->category_icon_path) { - Storage::delete($record->category_icon_path); + if ($oldPath) { + Storage::delete($oldPath); } $image = $request->file($file)->store($dir); diff --git a/packages/Webkul/Velocity/src/Http/Controllers/Shop/ShopController.php b/packages/Webkul/Velocity/src/Http/Controllers/Shop/ShopController.php index 568f882b8..5968c9ae0 100644 --- a/packages/Webkul/Velocity/src/Http/Controllers/Shop/ShopController.php +++ b/packages/Webkul/Velocity/src/Http/Controllers/Shop/ShopController.php @@ -176,6 +176,22 @@ use Webkul\Velocity\Repositories\Product\ProductRepository as VelocityProductRep ]; } + public function fetchFancyCategoryDetails($slug) + { + $categoryDetails = app('Webkul\Category\Repositories\CategoryRepository')->findByPath($slug); + + if ($categoryDetails) { + $response = [ + 'status' => true, + 'categoryDetails' => $this->getCategoryFilteredData($categoryDetails) + ]; + } + + return $response ?? [ + 'status' => false, + ]; + } + private function getCategoryFilteredData($category) { $formattedChildCategory = []; diff --git a/packages/Webkul/Velocity/src/Http/front-routes.php b/packages/Webkul/Velocity/src/Http/front-routes.php index f62d17c29..dcc80e16f 100644 --- a/packages/Webkul/Velocity/src/Http/front-routes.php +++ b/packages/Webkul/Velocity/src/Http/front-routes.php @@ -12,5 +12,7 @@ Route::group(['middleware' => ['web', 'locale', 'theme', 'currency']], function Route::get('/categories', 'ShopController@fetchCategories')->name('velocity.categoriest'); Route::get('/category-details', 'ShopController@categoryDetails')->name('velocity.category.details'); + + Route::get('/fancy-category-details/{slug}', 'ShopController@fetchFancyCategoryDetails')->name('velocity.fancy.category.details'); }); }); \ No newline at end of file diff --git a/packages/Webkul/Velocity/src/Resources/assets/js/UI/components/product-card.vue b/packages/Webkul/Velocity/src/Resources/assets/js/UI/components/product-card.vue index d643fae6a..5e808282e 100644 --- a/packages/Webkul/Velocity/src/Resources/assets/js/UI/components/product-card.vue +++ b/packages/Webkul/Velocity/src/Resources/assets/js/UI/components/product-card.vue @@ -34,9 +34,11 @@ + :src="product.image" + :data-src="product.image" + class="card-img-top lzy_img" /> + diff --git a/packages/Webkul/Velocity/src/Resources/assets/js/app.js b/packages/Webkul/Velocity/src/Resources/assets/js/app.js index f8306c6e1..1c815c6e3 100755 --- a/packages/Webkul/Velocity/src/Resources/assets/js/app.js +++ b/packages/Webkul/Velocity/src/Resources/assets/js/app.js @@ -55,6 +55,7 @@ $(document).ready(function () { 'responsiveSidebarTemplate': '', 'responsiveSidebarKey': Math.random(), 'sharedRootCategories': [], + 'imageObserver': null, } }, @@ -178,6 +179,7 @@ $(document).ready(function () { this.$validator.localize(document.documentElement.lang); this.loadCategories(); + this.addIntersectionObserver(); }, methods: { @@ -257,10 +259,22 @@ $(document).ready(function () { .catch(error => { console.log('failed to load categories'); }) + }, + + addIntersectionObserver: function () { + this.imageObserver = new IntersectionObserver((entries, imgObserver) => { + entries.forEach((entry) => { + if (entry.isIntersecting) { + const lazyImage = entry.target + lazyImage.src = lazyImage.dataset.src + } + }) + }); } } }); + // for compilation of html coming from server Vue.component('vnode-injector', { functional: true, props: ['nodes'], diff --git a/packages/Webkul/Velocity/src/Resources/views/shop/home/category.blade.php b/packages/Webkul/Velocity/src/Resources/views/shop/home/category.blade.php index 61e29bdac..631292cab 100644 --- a/packages/Webkul/Velocity/src/Resources/views/shop/home/category.blade.php +++ b/packages/Webkul/Velocity/src/Resources/views/shop/home/category.blade.php @@ -83,6 +83,13 @@ this.categoryProducts = response.data.categoryProducts; this.isCategory = true; + + // setTimeout(() => { + // let imagesCollection = document.querySelectorAll('img.lzy_img'); + // imagesCollection.forEach((image) => { + // this.$root.imageObserver.observe(image); + // }); + // }, 0); } }) .catch(error => {}); diff --git a/packages/Webkul/Velocity/src/Resources/views/shop/home/hot-categories.blade.php b/packages/Webkul/Velocity/src/Resources/views/shop/home/hot-categories.blade.php index b103cd87a..5bdd2e27a 100644 --- a/packages/Webkul/Velocity/src/Resources/views/shop/home/hot-categories.blade.php +++ b/packages/Webkul/Velocity/src/Resources/views/shop/home/hot-categories.blade.php @@ -4,39 +4,69 @@
@foreach ($category as $slug) - @php - $categoryDetails = app('Webkul\Category\Repositories\CategoryRepository')->findByPath($slug); - @endphp - - @if ($categoryDetails) -
-
-
-
- -
- -
-

- - {{ $categoryDetails->name }} - -

- - -
-
-
-
- @endif + @endforeach
+ +@push('scripts') + + + +@endpush diff --git a/packages/Webkul/Velocity/src/Resources/views/shop/home/new-products.blade.php b/packages/Webkul/Velocity/src/Resources/views/shop/home/new-products.blade.php index aebe88244..019ea8cea 100644 --- a/packages/Webkul/Velocity/src/Resources/views/shop/home/new-products.blade.php +++ b/packages/Webkul/Velocity/src/Resources/views/shop/home/new-products.blade.php @@ -65,7 +65,6 @@ @include ('shop::products.list.recently-viewed', [ 'quantity' => 3, 'addClass' => 'col-lg-3 col-md-12', - 'addClassWrapper' => 'scrollable max-height-350', ]) @else From 600c11585f7546cfcdc8defee812c0217521b440 Mon Sep 17 00:00:00 2001 From: "shubhammehrotra.symfony@webkul.com" Date: Tue, 4 Feb 2020 19:04:53 +0530 Subject: [PATCH 02/64] resolved issues --- .../publishable/assets/css/velocity.css | 10 ++++- .../publishable/assets/js/velocity.js | 5 ++- ..._131624_create_velocity_category_table.php | 39 ------------------- .../src/Providers/VelocityServiceProvider.php | 6 +-- .../src/Repositories/ContentRepository.php | 14 ++++++- .../src/Resources/assets/sass/app.scss | 3 +- .../assets/sass/components/shared.scss | 6 +++ .../Velocity/src/Resources/lang/en/app.php | 1 + .../content/content-type/category.blade.php | 38 ++++++++++++++++++ .../views/admin/content/create.blade.php | 16 ++++---- .../views/admin/content/edit.blade.php | 4 ++ .../views/shop/UI/particals.blade.php | 2 +- .../customers/account/profile/index.blade.php | 10 +++-- .../views/shop/home/slider.blade.php | 4 +- packages/Webkul/Velocity/src/Velocity.php | 7 ++-- 15 files changed, 99 insertions(+), 66 deletions(-) delete mode 100644 packages/Webkul/Velocity/src/Database/Migrations/2019_07_25_131624_create_velocity_category_table.php create mode 100644 packages/Webkul/Velocity/src/Resources/views/admin/content/content-type/category.blade.php diff --git a/packages/Webkul/Velocity/publishable/assets/css/velocity.css b/packages/Webkul/Velocity/publishable/assets/css/velocity.css index 571149025..1ee1cafd2 100644 --- a/packages/Webkul/Velocity/publishable/assets/css/velocity.css +++ b/packages/Webkul/Velocity/publishable/assets/css/velocity.css @@ -4261,6 +4261,13 @@ select:focus, color: #F05153; } +.mandatory::after { + content: "*"; + font-size: 16px; + margin-left: -1px; + color: #F05153; +} + a.default { color: rgba(0, 0, 0, 0.83) !important; text-decoration: none !important; @@ -13777,7 +13784,6 @@ header #search-form { height: 40px; margin: 5px 0px; background: #FFFFFF; - padding: 4px 1px 0px 0px; } header #search-form * { @@ -13857,7 +13863,7 @@ header #search-form #header-search-icon i { header .mini-cart-container { height: 50px; - padding: 5px 22px; + padding: 5px 17px; } header .mini-cart-container #mini-cart .mini-cart-content { diff --git a/packages/Webkul/Velocity/publishable/assets/js/velocity.js b/packages/Webkul/Velocity/publishable/assets/js/velocity.js index 0bf200f64..9bf52e759 100644 --- a/packages/Webkul/Velocity/publishable/assets/js/velocity.js +++ b/packages/Webkul/Velocity/publishable/assets/js/velocity.js @@ -36553,6 +36553,7 @@ Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); // // // +// // compile add to cart html (it contains wishlist component) /* harmony default export */ __webpack_exports__["default"] = ({ @@ -36686,9 +36687,9 @@ var render = function() { staticClass: "card-img-top lzy_img", attrs: { loading: "lazy", + alt: _vm.product.name, src: _vm.product.image, - "data-src": _vm.product.image, - alt: _vm.product.name + "data-src": _vm.product.image } }) ] diff --git a/packages/Webkul/Velocity/src/Database/Migrations/2019_07_25_131624_create_velocity_category_table.php b/packages/Webkul/Velocity/src/Database/Migrations/2019_07_25_131624_create_velocity_category_table.php deleted file mode 100644 index 24e8b61a0..000000000 --- a/packages/Webkul/Velocity/src/Database/Migrations/2019_07_25_131624_create_velocity_category_table.php +++ /dev/null @@ -1,39 +0,0 @@ -increments('id'); - - $table->integer('category_id')->unsigned()->nullable(); - $table->foreign('category_id')->references('id')->on('categories')->onDelete('cascade'); - - $table->string('icon', 250)->nullable(); - $table->string('tooltip', 250)->nullable(); - $table->boolean('status')->default(0); - - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('velocity_category'); - } -} diff --git a/packages/Webkul/Velocity/src/Providers/VelocityServiceProvider.php b/packages/Webkul/Velocity/src/Providers/VelocityServiceProvider.php index 1a3c704d4..69e95111a 100644 --- a/packages/Webkul/Velocity/src/Providers/VelocityServiceProvider.php +++ b/packages/Webkul/Velocity/src/Providers/VelocityServiceProvider.php @@ -70,9 +70,9 @@ class VelocityServiceProvider extends ServiceProvider */ protected function registerConfig() { - $this->mergeConfigFrom( - dirname(__DIR__) . '/Config/system.php', 'core' - ); + // $this->mergeConfigFrom( + // dirname(__DIR__) . '/Config/system.php', 'core' + // ); $this->mergeConfigFrom( dirname(__DIR__) . '/Config/admin-menu.php', 'menu.admin' diff --git a/packages/Webkul/Velocity/src/Repositories/ContentRepository.php b/packages/Webkul/Velocity/src/Repositories/ContentRepository.php index efd795ebe..ddf84e0b6 100644 --- a/packages/Webkul/Velocity/src/Repositories/ContentRepository.php +++ b/packages/Webkul/Velocity/src/Repositories/ContentRepository.php @@ -122,7 +122,7 @@ class ContentRepository extends Repository { $query = $this->model::orderBy('position', 'ASC'); - $content = $query + $contentCollection = $query ->select('velocity_contents.*', 'velocity_contents_translations.*') ->where('velocity_contents.status', 1) ->leftJoin('velocity_contents_translations', 'velocity_contents.id', 'velocity_contents_translations.content_id') @@ -131,6 +131,16 @@ class ContentRepository extends Repository ->limit(5) ->get(); - return $content; + $formattedContent = []; + foreach ($contentCollection as $content) { + array_push($formattedContent, [ + 'title' => $content->title, + 'page_link' => $content->page_link, + 'link_target' => $content->link_target, + 'content_type' => $content->content_type, + ]); + } + + return $formattedContent; } } \ No newline at end of file diff --git a/packages/Webkul/Velocity/src/Resources/assets/sass/app.scss b/packages/Webkul/Velocity/src/Resources/assets/sass/app.scss index f122ec623..a3bc6ee8b 100755 --- a/packages/Webkul/Velocity/src/Resources/assets/sass/app.scss +++ b/packages/Webkul/Velocity/src/Resources/assets/sass/app.scss @@ -374,7 +374,6 @@ header { height: 40px; margin: 5px 0px; background: $white-color; - padding: 4px 1px 0px 0px; * { height: 100%; @@ -455,7 +454,7 @@ header { .mini-cart-container { height: 50px; - padding: 5px 22px; + padding: 5px 17px; #mini-cart { .mini-cart-content { diff --git a/packages/Webkul/Velocity/src/Resources/assets/sass/components/shared.scss b/packages/Webkul/Velocity/src/Resources/assets/sass/components/shared.scss index 671d109e7..ed981651b 100644 --- a/packages/Webkul/Velocity/src/Resources/assets/sass/components/shared.scss +++ b/packages/Webkul/Velocity/src/Resources/assets/sass/components/shared.scss @@ -703,6 +703,12 @@ select:focus, .control-error { color: $color-danger; } +.mandatory::after { + content: "*"; + font-size: 16px; + margin-left: -1px; + color: $color-danger; +} a { &.default { diff --git a/packages/Webkul/Velocity/src/Resources/lang/en/app.php b/packages/Webkul/Velocity/src/Resources/lang/en/app.php index 10c46e586..8afa4637e 100644 --- a/packages/Webkul/Velocity/src/Resources/lang/en/app.php +++ b/packages/Webkul/Velocity/src/Resources/lang/en/app.php @@ -75,6 +75,7 @@ return [ 'custom-title' => 'Custom Title', 'custom-heading' => 'Custom Heading', 'page-link' => 'Page Link [e.g. http://example.com/../../]', + 'category-slug' => 'Category Slug', 'link-target' => 'Page Link Target', 'catalog-type' => 'Product Catalog Type', 'custom-product' => 'Store Products', diff --git a/packages/Webkul/Velocity/src/Resources/views/admin/content/content-type/category.blade.php b/packages/Webkul/Velocity/src/Resources/views/admin/content/content-type/category.blade.php new file mode 100644 index 000000000..49625506e --- /dev/null +++ b/packages/Webkul/Velocity/src/Resources/views/admin/content/content-type/category.blade.php @@ -0,0 +1,38 @@ + +{!! view_render_event('bagisto.admin.content.create_form_accordian.content.link.before') !!} + +
+ + + + + + @{{ errors.first('page_link') }} + +
+ +
+ + + +
+ +{!! view_render_event('bagisto.admin.content.create_form_accordian.content.link.after') !!} \ No newline at end of file diff --git a/packages/Webkul/Velocity/src/Resources/views/admin/content/create.blade.php b/packages/Webkul/Velocity/src/Resources/views/admin/content/create.blade.php index e060609e1..39eb0ad02 100644 --- a/packages/Webkul/Velocity/src/Resources/views/admin/content/create.blade.php +++ b/packages/Webkul/Velocity/src/Resources/views/admin/content/create.blade.php @@ -56,12 +56,12 @@
@{{ errors.first('status') }}
@@ -141,11 +141,14 @@
@include ('velocity::admin.content.content-type.static')
+
+ @include ('velocity::admin.content.content-type.category') +
- diff --git a/packages/Webkul/Velocity/src/Resources/views/shop/UI/particals.blade.php b/packages/Webkul/Velocity/src/Resources/views/shop/UI/particals.blade.php index 2023c8d02..03da4f39f 100644 --- a/packages/Webkul/Velocity/src/Resources/views/shop/UI/particals.blade.php +++ b/packages/Webkul/Velocity/src/Resources/views/shop/UI/particals.blade.php @@ -503,7 +503,7 @@ diff --git a/packages/Webkul/Velocity/src/Resources/views/shop/customers/account/profile/index.blade.php b/packages/Webkul/Velocity/src/Resources/views/shop/customers/account/profile/index.blade.php index 0ca834fb3..3ff2bd73a 100644 --- a/packages/Webkul/Velocity/src/Resources/views/shop/customers/account/profile/index.blade.php +++ b/packages/Webkul/Velocity/src/Resources/views/shop/customers/account/profile/index.blade.php @@ -30,12 +30,13 @@ @csrf
-
@@ -109,12 +110,13 @@
-
diff --git a/packages/Webkul/Velocity/src/Resources/views/shop/home/slider.blade.php b/packages/Webkul/Velocity/src/Resources/views/shop/home/slider.blade.php index a1c4dfa7c..abbba40d5 100644 --- a/packages/Webkul/Velocity/src/Resources/views/shop/home/slider.blade.php +++ b/packages/Webkul/Velocity/src/Resources/views/shop/home/slider.blade.php @@ -2,7 +2,9 @@ $direction = core()->getCurrentLocale()->direction; @endphp - +@if ($velocityMetaData->slider) + +@endif @push('scripts') @@ -131,8 +131,6 @@ @@ -131,8 +131,6 @@ @@ -131,8 +131,6 @@