diff --git a/README.md b/README.md index 30a18d51b..28af95aee 100755 --- a/README.md +++ b/README.md @@ -10,15 +10,15 @@ Sponsors on Open Collective

-# Topics -1. ### [Introduction](#1-introduction-) -2. ### [Documentation](#2-documentation-) -3. ### [Requirements](#2-requirements-) -4. ### [Installation & Configuration](#3-installation--configuration-) -5. ### [License](#4-license-) -6. ### [Miscellaneous](#5-miscellaneous-) +## Topics +1. [Introduction](#introduction) +2. [Documentation](#documentation) +3. [Requirements](#requirements) +4. [Installation & Configuration](#installation-and-configuration) +5. [License](#license) +6. [Miscellaneous](#miscellaneous) -### 1. Introduction : +### Introduction [Bagisto](https://www.bagisto.com) is a hand tailored E-Commerce framework designed on some of the hottest opensource technologies such as [Laravel](https://laravel.com) a [PHP](https://secure.php.net/) framework, [Vue.js](https://vuejs.org) @@ -54,11 +54,11 @@ It packs in lots of demanding features that allows your business to scale in no Dev guys can take advantage of two of the hottest frameworks used in this project Laravel and Vue.js, both of these frameworks have been used in Bagisto. Bagisto is using power of both of these frameworks and making best out of it out of the box. -### 2. Documentation : +### Documentation #### Bagisto Documentation [https://devdocs.bagisto.com](https://devdocs.bagisto.com) -### 3. Requirements : +### Requirements * **OS**: Ubuntu 16.04 LTS or higher. * **SERVER**: Apache 2 or NGINX @@ -70,7 +70,7 @@ Bagisto is using power of both of these frameworks and making best out of it out * **Node**: 8.11.3 LTS or higher. * **Composer**: 1.6.5 or higher. -### 4. Installation & Configuration : +### Installation and Configuration **1. Try our new GUI installer to install Bagisto:** @@ -172,36 +172,26 @@ password:admin123 > *http(s)://example.com/customer/register* -### 5. License : +### License Bagisto is a truly opensource E-Commerce framework which will always be free under the [MIT License](https://github.com/bagisto/bagisto/blob/master/LICENSE). -### 6. Miscellaneous : +### Miscellaneous #### Contributors -This project exists thanks to all the people who contribute. - +This project is on [Open Collective](https://opencollective.com/bagisto) and it exists thanks to this people who contribute. + #### Backers -Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/bagisto#backer)] - - +Thank you to all our backers! 🙏 + #### Sponsors -Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/bagisto#sponsor)] +Support this project by becoming a sponsor. Your logo will show up here with a link to your website. - - - - - - - - - - + diff --git a/packages/Webkul/Admin/src/DataGrids/CategoryDataGrid.php b/packages/Webkul/Admin/src/DataGrids/CategoryDataGrid.php index 80bcfc648..30ec08e06 100755 --- a/packages/Webkul/Admin/src/DataGrids/CategoryDataGrid.php +++ b/packages/Webkul/Admin/src/DataGrids/CategoryDataGrid.php @@ -58,7 +58,7 @@ class CategoryDataGrid extends DataGrid $this->addColumn([ 'index' => 'position', 'label' => trans('admin::app.datagrid.position'), - 'type' => 'string', + 'type' => 'number', 'searchable' => false, 'sortable' => true, 'filterable' => true diff --git a/packages/Webkul/Admin/src/DataGrids/LocalesDataGrid.php b/packages/Webkul/Admin/src/DataGrids/LocalesDataGrid.php index 63dc7a54a..14ff10f32 100755 --- a/packages/Webkul/Admin/src/DataGrids/LocalesDataGrid.php +++ b/packages/Webkul/Admin/src/DataGrids/LocalesDataGrid.php @@ -19,7 +19,7 @@ class LocalesDataGrid extends DataGrid public function prepareQueryBuilder() { - $queryBuilder = DB::table('locales')->addSelect('id', 'code', 'name'); + $queryBuilder = DB::table('locales')->addSelect('id', 'code', 'name', 'direction'); $this->setQueryBuilder($queryBuilder); } @@ -52,6 +52,15 @@ class LocalesDataGrid extends DataGrid 'sortable' => true, 'filterable' => true ]); + + $this->addColumn([ + 'index' => 'direction', + 'label' => trans('admin::app.datagrid.direction'), + 'type' => 'select', + 'searchable' => true, + 'sortable' => true, + 'filterable' => true + ]); } public function prepareActions() { diff --git a/packages/Webkul/Admin/src/Resources/lang/en/app.php b/packages/Webkul/Admin/src/Resources/lang/en/app.php index eb50ee2ed..567166271 100755 --- a/packages/Webkul/Admin/src/Resources/lang/en/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/en/app.php @@ -114,6 +114,7 @@ return [ 'code' => 'Code', 'admin-name' => 'Name', 'name' => 'Name', + 'direction' => 'Direction', 'fullname' => 'Full Name', 'type' => 'Type', 'required' => 'Required', @@ -446,7 +447,8 @@ return [ 'swatch' => 'Swatch', 'image' => 'Image', 'file' => 'File', - 'checkbox' => 'Checkbox' + 'checkbox' => 'Checkbox', + 'use_in_flat' => "Create in Product Flat Table" ], 'families' => [ 'title' => 'Families', @@ -561,6 +563,7 @@ return [ 'general' => 'General', 'code' => 'Code', 'name' => 'Name', + 'direction' => 'Direction', 'create-success' => 'Locale created successfully.', 'update-success' => 'Locale updated successfully.', 'delete-success' => 'Locale deleted successfully.', diff --git a/packages/Webkul/Admin/src/Resources/views/catalog/attributes/create.blade.php b/packages/Webkul/Admin/src/Resources/views/catalog/attributes/create.blade.php index 4a0b20c60..02fcc351b 100755 --- a/packages/Webkul/Admin/src/Resources/views/catalog/attributes/create.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/catalog/attributes/create.blade.php @@ -36,7 +36,7 @@ {!! view_render_event('bagisto.admin.catalog.attribute.create_form_accordian.general.controls.before') !!}
- + @{{ errors.first('code') }}
@@ -205,6 +205,14 @@ +
+ + +
+ {!! view_render_event('bagisto.admin.catalog.attribute.create_form_accordian.configuration.controls.after') !!} diff --git a/packages/Webkul/Admin/src/Resources/views/catalog/attributes/edit.blade.php b/packages/Webkul/Admin/src/Resources/views/catalog/attributes/edit.blade.php index 0fa8f11a3..28c9716ba 100755 --- a/packages/Webkul/Admin/src/Resources/views/catalog/attributes/edit.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/catalog/attributes/edit.blade.php @@ -266,6 +266,18 @@ +
+ + +
+ {!! view_render_event('bagisto.admin.catalog.attribute.edit_form_accordian.configuration.controls.after', ['attribute' => $attribute]) !!} diff --git a/packages/Webkul/Admin/src/Resources/views/configuration/field-type.blade.php b/packages/Webkul/Admin/src/Resources/views/configuration/field-type.blade.php index e1a4bc322..78cb72fbd 100755 --- a/packages/Webkul/Admin/src/Resources/views/configuration/field-type.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/configuration/field-type.blade.php @@ -61,7 +61,7 @@ } if (! isset($field['options'])) { - $field['options'] = [['title' => 'No', 'value' => 0],['title' => 'Yes', 'value' => 1]]; + $field['options'] = ''; } $selectedOption = core()->getConfigData($name) ?? ''; @@ -73,7 +73,7 @@ :validations = "'{{ $validations }}'" :depand = "'{{ $firstField }}[{{ $secondField }}][{{ $thirdField }}][{{ $depandField }}]'" :value = "'{{ $depandValue }}'" - :field_name = "'{{ $field['title'] }}'" + :field_name = "'{{ trans($field['title']) }}'" :channel_loacle = "'{{ $channel_locale }}'" :result = "'{{ $selectedOption }}'" > @@ -400,11 +400,14 @@ [@{{ channel_loacle }}] - + + @{{ errors.first(name) }} diff --git a/packages/Webkul/Admin/src/Resources/views/layouts/anonymous-master.blade.php b/packages/Webkul/Admin/src/Resources/views/layouts/anonymous-master.blade.php index 9f3ca20ef..1cc7a63d9 100755 --- a/packages/Webkul/Admin/src/Resources/views/layouts/anonymous-master.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/layouts/anonymous-master.blade.php @@ -1,3 +1,7 @@ +@php + $locale = Webkul\Core\Models\Locale::where('code', app()->getLocale())->first(); +@endphp + @@ -67,7 +71,7 @@ {!! view_render_event('bagisto.admin.layout.head') !!} - getLocale() == 'ar') class="rtl" @endif style="scroll-behavior: smooth;"> + direction == 'rtl') class="rtl" @endif style="scroll-behavior: smooth;">
@@ -131,4 +135,4 @@ - \ No newline at end of file + diff --git a/packages/Webkul/Admin/src/Resources/views/layouts/master.blade.php b/packages/Webkul/Admin/src/Resources/views/layouts/master.blade.php index a64de8787..47211d650 100755 --- a/packages/Webkul/Admin/src/Resources/views/layouts/master.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/layouts/master.blade.php @@ -1,3 +1,7 @@ +@php + $locale = Webkul\Core\Models\Locale::where('code', app()->getLocale())->first(); +@endphp + @@ -19,7 +23,7 @@ - getLocale() == 'ar') class="rtl" @endif style="scroll-behavior: smooth;"> + direction == 'rtl') class="rtl" @endif style="scroll-behavior: smooth;"> {!! view_render_event('bagisto.admin.layout.body.before') !!}
diff --git a/packages/Webkul/Admin/src/Resources/views/settings/locales/create.blade.php b/packages/Webkul/Admin/src/Resources/views/settings/locales/create.blade.php index fd82a1d0a..fa3d74db6 100755 --- a/packages/Webkul/Admin/src/Resources/views/settings/locales/create.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/settings/locales/create.blade.php @@ -41,6 +41,15 @@ @{{ errors.first('name') }}
+ +
+ + + @{{ errors.first('direction') }} +
diff --git a/packages/Webkul/Admin/src/Resources/views/settings/locales/edit.blade.php b/packages/Webkul/Admin/src/Resources/views/settings/locales/edit.blade.php index 3f3e9ee25..939c8441c 100755 --- a/packages/Webkul/Admin/src/Resources/views/settings/locales/edit.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/settings/locales/edit.blade.php @@ -44,6 +44,15 @@ @{{ errors.first('name') }} + +
+ + + @{{ errors.first('direction') }} +
diff --git a/packages/Webkul/Admin/src/Resources/views/settings/sliders/create.blade.php b/packages/Webkul/Admin/src/Resources/views/settings/sliders/create.blade.php index 81d42a488..9b50c62e6 100755 --- a/packages/Webkul/Admin/src/Resources/views/settings/sliders/create.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/settings/sliders/create.blade.php @@ -27,7 +27,7 @@
@csrf()
- + @{{ errors.first('title') }}
diff --git a/packages/Webkul/Admin/src/Resources/views/settings/sliders/edit.blade.php b/packages/Webkul/Admin/src/Resources/views/settings/sliders/edit.blade.php index 853ed2e2a..18f3a9cd7 100755 --- a/packages/Webkul/Admin/src/Resources/views/settings/sliders/edit.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/settings/sliders/edit.blade.php @@ -29,7 +29,7 @@ @csrf()
- + @{{ errors.first('title') }}
diff --git a/packages/Webkul/Attribute/src/Database/Migrations/2019_07_29_142734_add_use_in_flat_column_in_attributes_table.php b/packages/Webkul/Attribute/src/Database/Migrations/2019_07_29_142734_add_use_in_flat_column_in_attributes_table.php new file mode 100644 index 000000000..d52675871 --- /dev/null +++ b/packages/Webkul/Attribute/src/Database/Migrations/2019_07_29_142734_add_use_in_flat_column_in_attributes_table.php @@ -0,0 +1,32 @@ +boolean('use_in_flat')->default(1); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('attributes', function (Blueprint $table) { + // + }); + } +} diff --git a/packages/Webkul/Attribute/src/Database/Seeders/AttributeTableSeeder.php b/packages/Webkul/Attribute/src/Database/Seeders/AttributeTableSeeder.php index 7d24e2e9e..380710c38 100755 --- a/packages/Webkul/Attribute/src/Database/Seeders/AttributeTableSeeder.php +++ b/packages/Webkul/Attribute/src/Database/Seeders/AttributeTableSeeder.php @@ -16,30 +16,50 @@ class AttributeTableSeeder extends Seeder $now = Carbon::now(); DB::table('attributes')->insert([ - ['id' => '1','code' => 'sku','admin_name' => 'SKU','type' => 'text','validation' => NULL,'position' => '1','is_required' => '1','is_unique' => '1','value_per_locale' => '0','value_per_channel' => '0','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '0','is_visible_on_front' => '0','created_at' => $now,'updated_at' => $now], - ['id' => '2','code' => 'name','admin_name' => 'Name','type' => 'text','validation' => NULL,'position' => '2','is_required' => '1','is_unique' => '0','value_per_locale' => '1','value_per_channel' => '1','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '0','is_visible_on_front' => '0','created_at' => $now,'updated_at' => $now], - ['id' => '3','code' => 'url_key','admin_name' => 'URL Key','type' => 'text','validation' => NULL,'position' => '3','is_required' => '1','is_unique' => '1','value_per_locale' => '0','value_per_channel' => '0','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '0','is_visible_on_front' => '0','created_at' => $now,'updated_at' => $now], - ['id' => '4','code' => 'tax_category_id','admin_name' => 'Tax Category','type' => 'select','validation' => NULL,'position' => '4','is_required' => '0','is_unique' => '0','value_per_locale' => '0','value_per_channel' => '1','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '0','is_visible_on_front' => '0','created_at' => $now,'updated_at' => $now], - ['id' => '5','code' => 'new','admin_name' => 'New','type' => 'boolean','validation' => NULL,'position' => '5','is_required' => '0','is_unique' => '0','value_per_locale' => '0','value_per_channel' => '0','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '0','is_visible_on_front' => '0','created_at' => $now,'updated_at' => $now], - ['id' => '6','code' => 'featured','admin_name' => 'Featured','type' => 'boolean','validation' => NULL,'position' => '6','is_required' => '0','is_unique' => '0','value_per_locale' => '0','value_per_channel' => '0','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '0','is_visible_on_front' => '0','created_at' => $now,'updated_at' => $now], - ['id' => '7','code' => 'visible_individually','admin_name' => 'Visible Individually','type' => 'boolean','validation' => NULL,'position' => '7','is_required' => '1','is_unique' => '0','value_per_locale' => '0','value_per_channel' => '0','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '0','is_visible_on_front' => '0','created_at' => $now,'updated_at' => $now], - ['id' => '8','code' => 'status','admin_name' => 'Status','type' => 'boolean','validation' => NULL,'position' => '8','is_required' => '1','is_unique' => '0','value_per_locale' => '0','value_per_channel' => '0','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '0','is_visible_on_front' => '0','created_at' => $now,'updated_at' => $now], - ['id' => '9','code' => 'short_description','admin_name' => 'Short Description','type' => 'textarea','validation' => NULL,'position' => '9','is_required' => '1','is_unique' => '0','value_per_locale' => '1','value_per_channel' => '1','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '0','is_visible_on_front' => '0','created_at' => $now,'updated_at' => $now], - ['id' => '10','code' => 'description','admin_name' => 'Description','type' => 'textarea','validation' => NULL,'position' => '10','is_required' => '1','is_unique' => '0','value_per_locale' => '1','value_per_channel' => '1','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '0','is_visible_on_front' => '0','created_at' => $now,'updated_at' => $now], - ['id' => '11','code' => 'price','admin_name' => 'Price','type' => 'price','validation' => 'decimal','position' => '11','is_required' => '1','is_unique' => '0','value_per_locale' => '0','value_per_channel' => '0','is_filterable' => '1','is_configurable' => '0','is_user_defined' => '0','is_visible_on_front' => '0','created_at' => $now,'updated_at' => $now], - ['id' => '12','code' => 'cost','admin_name' => 'Cost','type' => 'price','validation' => 'decimal','position' => '12','is_required' => '0','is_unique' => '0','value_per_locale' => '0','value_per_channel' => '1','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '1','is_visible_on_front' => '0','created_at' => $now,'updated_at' => $now], - ['id' => '13','code' => 'special_price','admin_name' => 'Special Price','type' => 'price','validation' => 'decimal','position' => '13','is_required' => '0','is_unique' => '0','value_per_locale' => '0','value_per_channel' => '0','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '0','is_visible_on_front' => '0','created_at' => $now,'updated_at' => $now], - ['id' => '14','code' => 'special_price_from','admin_name' => 'Special Price From','type' => 'date','validation' => NULL,'position' => '14','is_required' => '0','is_unique' => '0','value_per_locale' => '0','value_per_channel' => '1','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '0','is_visible_on_front' => '0','created_at' => $now,'updated_at' => $now], - ['id' => '15','code' => 'special_price_to','admin_name' => 'Special Price To','type' => 'date','validation' => NULL,'position' => '15','is_required' => '0','is_unique' => '0','value_per_locale' => '0','value_per_channel' => '1','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '0','is_visible_on_front' => '0','created_at' => $now,'updated_at' => $now], - ['id' => '16','code' => 'meta_title','admin_name' => 'Meta Title','type' => 'textarea','validation' => NULL,'position' => '16','is_required' => '0','is_unique' => '0','value_per_locale' => '1','value_per_channel' => '1','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '0','is_visible_on_front' => '0','created_at' => $now,'updated_at' => $now], - ['id' => '17','code' => 'meta_keywords','admin_name' => 'Meta Keywords','type' => 'textarea','validation' => NULL,'position' => '17','is_required' => '0','is_unique' => '0','value_per_locale' => '1','value_per_channel' => '1','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '0','is_visible_on_front' => '0','created_at' => $now,'updated_at' => $now], - ['id' => '18','code' => 'meta_description','admin_name' => 'Meta Description','type' => 'textarea','validation' => NULL,'position' => '18','is_required' => '0','is_unique' => '0','value_per_locale' => '1','value_per_channel' => '1','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '1','is_visible_on_front' => '0','created_at' => $now,'updated_at' => $now], - ['id' => '19','code' => 'width','admin_name' => 'Width','type' => 'text','validation' => 'decimal','position' => '19','is_required' => '0','is_unique' => '0','value_per_locale' => '0','value_per_channel' => '0','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '1','is_visible_on_front' => '0','created_at' => $now,'updated_at' => $now], - ['id' => '20','code' => 'height','admin_name' => 'Height','type' => 'text','validation' => 'decimal','position' => '20','is_required' => '0','is_unique' => '0','value_per_locale' => '0','value_per_channel' => '0','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '1','is_visible_on_front' => '0','created_at' => $now,'updated_at' => $now], - ['id' => '21','code' => 'depth','admin_name' => 'Depth','type' => 'text','validation' => 'decimal','position' => '21','is_required' => '0','is_unique' => '0','value_per_locale' => '0','value_per_channel' => '0','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '1','is_visible_on_front' => '0','created_at' => $now,'updated_at' => $now], - ['id' => '22','code' => 'weight','admin_name' => 'Weight','type' => 'text','validation' => 'decimal','position' => '22','is_required' => '1','is_unique' => '0','value_per_locale' => '0','value_per_channel' => '0','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '0','is_visible_on_front' => '0','created_at' => $now,'updated_at' => $now], - ['id' => '23','code' => 'color','admin_name' => 'Color','type' => 'select','validation' => NULL,'position' => '23','is_required' => '0','is_unique' => '0','value_per_locale' => '0','value_per_channel' => '0','is_filterable' => '1','is_configurable' => '1','is_user_defined' => '1','is_visible_on_front' => '0','created_at' => $now,'updated_at' => $now], - ['id' => '24','code' => 'size','admin_name' => 'Size','type' => 'select','validation' => NULL,'position' => '24','is_required' => '0','is_unique' => '0','value_per_locale' => '0','value_per_channel' => '0','is_filterable' => '1','is_configurable' => '1','is_user_defined' => '1','is_visible_on_front' => '0','created_at' => $now,'updated_at' => $now] + ['id' => '1','code' => 'sku','admin_name' => 'SKU','type' => 'text','validation' => NULL,'position' => '1','is_required' => '1','is_unique' => '1','value_per_locale' => '0','value_per_channel' => '0','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '0','is_visible_on_front' => '0','use_in_flat' => '1','created_at' => $now,'updated_at' => $now], + ['id' => '2','code' => 'name','admin_name' => 'Name','type' => 'text','validation' => NULL,'position' => '2','is_required' => '1','is_unique' => '0','value_per_locale' => '1','value_per_channel' => '1','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '0','is_visible_on_front' => '0', + 'use_in_flat' => '1','created_at' => $now,'updated_at' => $now], + ['id' => '3','code' => 'url_key','admin_name' => 'URL Key','type' => 'text','validation' => NULL,'position' => '3','is_required' => '1','is_unique' => '1','value_per_locale' => '0','value_per_channel' => '0','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '0','is_visible_on_front' => '0', + 'use_in_flat' => '1','created_at' => $now,'updated_at' => $now], + ['id' => '4','code' => 'tax_category_id','admin_name' => 'Tax Category','type' => 'select','validation' => NULL,'position' => '4','is_required' => '0','is_unique' => '0','value_per_locale' => '0','value_per_channel' => '1','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '0','is_visible_on_front' => '0', + 'use_in_flat' => '1','created_at' => $now,'updated_at' => $now], + ['id' => '5','code' => 'new','admin_name' => 'New','type' => 'boolean','validation' => NULL,'position' => '5','is_required' => '0','is_unique' => '0','value_per_locale' => '0','value_per_channel' => '0','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '0','is_visible_on_front' => '0', + 'use_in_flat' => '1','created_at' => $now,'updated_at' => $now], + ['id' => '6','code' => 'featured','admin_name' => 'Featured','type' => 'boolean','validation' => NULL,'position' => '6','is_required' => '0','is_unique' => '0','value_per_locale' => '0','value_per_channel' => '0','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '0','is_visible_on_front' => '0', + 'use_in_flat' => '1','created_at' => $now,'updated_at' => $now], + ['id' => '7','code' => 'visible_individually','admin_name' => 'Visible Individually','type' => 'boolean','validation' => NULL,'position' => '7','is_required' => '1','is_unique' => '0','value_per_locale' => '0','value_per_channel' => '0','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '0','is_visible_on_front' => '0','created_at' => $now, + 'use_in_flat' => '1','updated_at' => $now], + ['id' => '8','code' => 'status','admin_name' => 'Status','type' => 'boolean','validation' => NULL,'position' => '8','is_required' => '1','is_unique' => '0','value_per_locale' => '0','value_per_channel' => '0','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '0','is_visible_on_front' => '0', + 'use_in_flat' => '1','created_at' => $now,'updated_at' => $now], + ['id' => '9','code' => 'short_description','admin_name' => 'Short Description','type' => 'textarea','validation' => NULL,'position' => '9','is_required' => '1','is_unique' => '0','value_per_locale' => '1','value_per_channel' => '1','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '0', + 'is_visible_on_front' => '0','use_in_flat' => '1','created_at' => $now,'updated_at' => $now], + ['id' => '10','code' => 'description','admin_name' => 'Description','type' => 'textarea','validation' => NULL,'position' => '10','is_required' => '1','is_unique' => '0','value_per_locale' => '1','value_per_channel' => '1','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '0','is_visible_on_front' => '0', + 'use_in_flat' => '1','created_at' => $now,'updated_at' => $now], + ['id' => '11','code' => 'price','admin_name' => 'Price','type' => 'price','validation' => 'decimal','position' => '11','is_required' => '1','is_unique' => '0','value_per_locale' => '0','value_per_channel' => '0','is_filterable' => '1','is_configurable' => '0','is_user_defined' => '0','is_visible_on_front' => '0', + 'use_in_flat' => '1','created_at' => $now,'updated_at' => $now], + ['id' => '12','code' => 'cost','admin_name' => 'Cost','type' => 'price','validation' => 'decimal','position' => '12','is_required' => '0','is_unique' => '0','value_per_locale' => '0','value_per_channel' => '1','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '1','is_visible_on_front' => '0', + 'use_in_flat' => '1','created_at' => $now,'updated_at' => $now], + ['id' => '13','code' => 'special_price','admin_name' => 'Special Price','type' => 'price','validation' => 'decimal','position' => '13','is_required' => '0','is_unique' => '0','value_per_locale' => '0','value_per_channel' => '0','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '0','is_visible_on_front' => '0','use_in_flat' => '1','created_at' => $now,'updated_at' => $now], + ['id' => '14','code' => 'special_price_from','admin_name' => 'Special Price From','type' => 'date','validation' => NULL,'position' => '14','is_required' => '0','is_unique' => '0','value_per_locale' => '0','value_per_channel' => '1','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '0','is_visible_on_front' => '0','use_in_flat' => '1','created_at' => $now,'updated_at' => $now], + ['id' => '15','code' => 'special_price_to','admin_name' => 'Special Price To','type' => 'date','validation' => NULL,'position' => '15','is_required' => '0','is_unique' => '0','value_per_locale' => '0','value_per_channel' => '1','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '0', + 'use_in_flat' => '1','is_visible_on_front' => '0','created_at' => $now,'updated_at' => $now], + ['id' => '16','code' => 'meta_title','admin_name' => 'Meta Title','type' => 'textarea','validation' => NULL,'position' => '16','is_required' => '0','is_unique' => '0','value_per_locale' => '1','value_per_channel' => '1','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '0','is_visible_on_front' => '0', + 'use_in_flat' => '1','created_at' => $now,'updated_at' => $now], + ['id' => '17','code' => 'meta_keywords','admin_name' => 'Meta Keywords','type' => 'textarea','validation' => NULL,'position' => '17','is_required' => '0','is_unique' => '0','value_per_locale' => '1','value_per_channel' => '1','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '0','is_visible_on_front' => '0', + 'use_in_flat' => '1','created_at' => $now,'updated_at' => $now], + ['id' => '18','code' => 'meta_description','admin_name' => 'Meta Description','type' => 'textarea','validation' => NULL,'position' => '18','is_required' => '0','is_unique' => '0','value_per_locale' => '1','value_per_channel' => '1','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '1','is_visible_on_front' => '0','use_in_flat' => '1','created_at' => $now,'updated_at' => $now], + ['id' => '19','code' => 'width','admin_name' => 'Width','type' => 'text','validation' => 'decimal','position' => '19','is_required' => '0','is_unique' => '0','value_per_locale' => '0','value_per_channel' => '0','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '1','is_visible_on_front' => '0', + 'use_in_flat' => '1','created_at' => $now,'updated_at' => $now], + ['id' => '20','code' => 'height','admin_name' => 'Height','type' => 'text','validation' => 'decimal','position' => '20','is_required' => '0','is_unique' => '0','value_per_locale' => '0','value_per_channel' => '0','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '1','is_visible_on_front' => '0', + 'use_in_flat' => '1','created_at' => $now,'updated_at' => $now], + ['id' => '21','code' => 'depth','admin_name' => 'Depth','type' => 'text','validation' => 'decimal','position' => '21','is_required' => '0','is_unique' => '0','value_per_locale' => '0','value_per_channel' => '0','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '1','is_visible_on_front' => '0', + 'use_in_flat' => '1','created_at' => $now,'updated_at' => $now], + ['id' => '22','code' => 'weight','admin_name' => 'Weight','type' => 'text','validation' => 'decimal','position' => '22','is_required' => '1','is_unique' => '0','value_per_locale' => '0','value_per_channel' => '0','is_filterable' => '0','is_configurable' => '0','is_user_defined' => '0','is_visible_on_front' => '0', + 'use_in_flat' => '1','created_at' => $now,'updated_at' => $now], + ['id' => '23','code' => 'color','admin_name' => 'Color','type' => 'select','validation' => NULL,'position' => '23','is_required' => '0','is_unique' => '0','value_per_locale' => '0','value_per_channel' => '0','is_filterable' => '1','is_configurable' => '1','is_user_defined' => '1','is_visible_on_front' => '0', + 'use_in_flat' => '1','created_at' => $now,'updated_at' => $now], + ['id' => '24','code' => 'size','admin_name' => 'Size','type' => 'select','validation' => NULL,'position' => '24','is_required' => '0','is_unique' => '0','value_per_locale' => '0','value_per_channel' => '0','is_filterable' => '1','is_configurable' => '1','is_user_defined' => '1','is_visible_on_front' => '0', + 'use_in_flat' => '1','created_at' => $now,'updated_at' => $now] ]); diff --git a/packages/Webkul/Attribute/src/Models/Attribute.php b/packages/Webkul/Attribute/src/Models/Attribute.php index e6bf8ba94..244d94497 100755 --- a/packages/Webkul/Attribute/src/Models/Attribute.php +++ b/packages/Webkul/Attribute/src/Models/Attribute.php @@ -9,7 +9,7 @@ class Attribute extends TranslatableModel implements AttributeContract { public $translatedAttributes = ['name']; - protected $fillable = ['code', 'admin_name', 'type', 'position', 'is_required', 'is_unique', 'validation', 'value_per_locale', 'value_per_channel', 'is_filterable', 'is_configurable', 'is_visible_on_front', 'is_user_defined', 'swatch_type']; + protected $fillable = ['code', 'admin_name', 'type', 'position', 'is_required', 'is_unique', 'validation', 'value_per_locale', 'value_per_channel', 'is_filterable', 'is_configurable', 'is_visible_on_front', 'is_user_defined', 'swatch_type', 'use_in_flat']; // protected $with = ['options']; diff --git a/packages/Webkul/Core/src/Database/Migrations/2019_07_23_033128_alter_locales_table.php b/packages/Webkul/Core/src/Database/Migrations/2019_07_23_033128_alter_locales_table.php new file mode 100644 index 000000000..bcca3d042 --- /dev/null +++ b/packages/Webkul/Core/src/Database/Migrations/2019_07_23_033128_alter_locales_table.php @@ -0,0 +1,30 @@ +enum('direction', ['ltr', 'rtl'])->default('ltr'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + + } +} diff --git a/packages/Webkul/Core/src/Http/Controllers/LocaleController.php b/packages/Webkul/Core/src/Http/Controllers/LocaleController.php index ff8f5f058..16b28287e 100755 --- a/packages/Webkul/Core/src/Http/Controllers/LocaleController.php +++ b/packages/Webkul/Core/src/Http/Controllers/LocaleController.php @@ -72,7 +72,8 @@ class LocaleController extends Controller { $this->validate(request(), [ 'code' => ['required', 'unique:locales,code', new \Webkul\Core\Contracts\Validations\Code], - 'name' => 'required' + 'name' => 'required', + 'direction' => 'in:ltr,rtl' ]); Event::fire('core.locale.create.before'); @@ -110,7 +111,8 @@ class LocaleController extends Controller { $this->validate(request(), [ 'code' => ['required', 'unique:locales,code,' . $id, new \Webkul\Core\Contracts\Validations\Code], - 'name' => 'required' + 'name' => 'required', + 'direction' => 'in:ltr,rtl' ]); Event::fire('core.locale.update.before', $id); diff --git a/packages/Webkul/Core/src/Models/Locale.php b/packages/Webkul/Core/src/Models/Locale.php index b12be89de..572e576a5 100755 --- a/packages/Webkul/Core/src/Models/Locale.php +++ b/packages/Webkul/Core/src/Models/Locale.php @@ -13,6 +13,6 @@ class Locale extends Model implements LocaleContract * @var array */ protected $fillable = [ - 'code', 'name' + 'code', 'name', 'direction' ]; -} \ No newline at end of file +} diff --git a/packages/Webkul/Product/src/Listeners/ProductFlat.php b/packages/Webkul/Product/src/Listeners/ProductFlat.php index fc6ca23b0..d02227ddc 100644 --- a/packages/Webkul/Product/src/Listeners/ProductFlat.php +++ b/packages/Webkul/Product/src/Listeners/ProductFlat.php @@ -103,7 +103,7 @@ class ProductFlat */ public function afterAttributeCreatedUpdated($attribute) { - if(! $attribute->is_user_defined || $attribute->is_visible_on_front) { + if (! $attribute->is_user_defined || ! $attribute->use_in_flat) { return false; } diff --git a/packages/Webkul/Product/src/Repositories/ProductFlatRepository.php b/packages/Webkul/Product/src/Repositories/ProductFlatRepository.php index f35094bd9..d29abd4ed 100644 --- a/packages/Webkul/Product/src/Repositories/ProductFlatRepository.php +++ b/packages/Webkul/Product/src/Repositories/ProductFlatRepository.php @@ -44,10 +44,12 @@ class ProductFlatRepository extends Repository */ public function getCategoryProductMaximumPrice($categoryId) { - return $this->model - ->leftJoin('product_categories', 'product_flat.product_id', 'product_categories.product_id') - ->where('product_categories.category_id', $categoryId) - ->max('price'); + // return $this->model + // ->leftJoin('product_categories', 'product_flat.product_id', 'product_categories.product_id') + // ->where('product_categories.category_id', $categoryId) + // ->max('price'); + + return $this->model->max('price'); } /** diff --git a/packages/Webkul/Product/src/Repositories/ProductRepository.php b/packages/Webkul/Product/src/Repositories/ProductRepository.php index bab0bffad..c639af542 100755 --- a/packages/Webkul/Product/src/Repositories/ProductRepository.php +++ b/packages/Webkul/Product/src/Repositories/ProductRepository.php @@ -500,28 +500,39 @@ class ProductRepository extends Repository } } - $qb = $qb->where(function($query1) { - foreach (['product_flat', 'flat_variants'] as $alias) { - $query1 = $query1->orWhere(function($query2) use($alias) { - $attributes = $this->attribute->getProductDefaultAttributes(array_keys(request()->input())); + $qb = $qb->leftJoin('products as variants', 'products.id', '=', 'variants.parent_id'); - foreach ($attributes as $attribute) { - $column = $alias . '.' . $attribute->code; + $qb = $qb->where(function($query1) use($qb) { + $aliases = [ + 'products' => 'filter_', + 'variants' => 'variant_filter_' + ]; - $queryParams = explode(',', request()->get($attribute->code)); + foreach($aliases as $table => $alias) { + $query1 = $query1->orWhere(function($query2) use($qb, $table, $alias) { + + foreach ($this->attribute->getProductDefaultAttributes(array_keys(request()->input())) as $code => $attribute) { + $aliasTemp = $alias . $attribute->code; + + $qb = $qb->leftJoin('product_attribute_values as ' . $aliasTemp, $table . '.id', '=', $aliasTemp . '.product_id'); + + $column = ProductAttributeValue::$attributeTypeFields[$attribute->type]; + + $temp = explode(',', request()->get($attribute->code)); if ($attribute->type != 'price') { - $query2 = $query2->where(function($query3) use($column, $queryParams) { - foreach ($queryParams as $filterValue) { - $query3 = $query3->orwhereRaw("find_in_set($filterValue, $column)"); + $query2 = $query2->where($aliasTemp . '.attribute_id', $attribute->id); + + $query2 = $query2->where(function($query3) use($aliasTemp, $column, $temp) { + foreach($temp as $code => $filterValue) { + $columns = $aliasTemp . '.' . $column; + $query3 = $query3->orwhereRaw("find_in_set($filterValue, $columns)"); } }); } else { - if ($attribute->code != 'price') { - $query2 = $query2->where($column, '>=', current($queryParams))->where($column, '<=', end($queryParams)); - } else { - $query2 = $query2->where($column, '>=', core()->convertToBasePrice(current($queryParams)))->where($column, '<=', core()->convertToBasePrice(end($queryParams))); - } + $query2 = $query2->where($aliasTemp . '.' . $column, '>=', core()->convertToBasePrice(current($temp))) + ->where($aliasTemp . '.' . $column, '<=', core()->convertToBasePrice(end($temp))) + ->where($aliasTemp . '.attribute_id', $attribute->id); } } }); diff --git a/packages/Webkul/Shop/src/Resources/views/layouts/master.blade.php b/packages/Webkul/Shop/src/Resources/views/layouts/master.blade.php index 368893ba7..190b3df2e 100755 --- a/packages/Webkul/Shop/src/Resources/views/layouts/master.blade.php +++ b/packages/Webkul/Shop/src/Resources/views/layouts/master.blade.php @@ -1,3 +1,7 @@ +@php + $locale = Webkul\Core\Models\Locale::where('code', app()->getLocale())->first(); +@endphp + @@ -30,7 +34,7 @@ -getLocale() == 'ar') class="rtl" @endif style="scroll-behavior: smooth;"> +direction == 'rtl') class="rtl" @endif style="scroll-behavior: smooth;"> {!! view_render_event('bagisto.shop.layout.body.before') !!} diff --git a/packages/Webkul/Shop/src/Resources/views/products/view/gallery.blade.php b/packages/Webkul/Shop/src/Resources/views/products/view/gallery.blade.php index 7d81738ad..45f3ce06d 100755 --- a/packages/Webkul/Shop/src/Resources/views/products/view/gallery.blade.php +++ b/packages/Webkul/Shop/src/Resources/views/products/view/gallery.blade.php @@ -108,7 +108,9 @@ this.currentOriginalImageUrl = image.original_image_url; - $('img#pro-img').data('zoom-image', image.original_image_url).ezPlus(); + if ($(window).width() > 580) { + $('img#pro-img').data('zoom-image', image.original_image_url).ezPlus(); + } }, moveThumbs: function(direction) { @@ -152,7 +154,9 @@