From 976d19cd74095b91c705123dc621031df87fc105 Mon Sep 17 00:00:00 2001 From: Annika Wolff <57894757+AnnikaWolff@users.noreply.github.com> Date: Thu, 16 Jan 2020 13:54:18 +0100 Subject: [PATCH] Merge Bagisto master into Haendlerbund/Bagisto master (#14) * added bagisto:install command * updates for uploading attachments * Issue #1808 * Issue #1779 fixed * Issue #2045 * Issue #1971 * Issue #1779 fixed * fire event on creating/updating slider * Issue #1863 fixed * Issue #1863 fixed * Removed ')' in page edit blade * Issue #2054 fixed * Issue #2054 fixed * Added mail from name field in .env.example file, Issue #2051 Co-authored-by: Sarthak Shrivastava Co-authored-by: Shubham Mehrotra Co-authored-by: Jitendra Singh <39991107+jitendra-webkul@users.noreply.github.com> Co-authored-by: rahulshukla-webkul <42834394+rahulshukla-webkul@users.noreply.github.com> --- .env.example | 1 + app/Console/Commands/install.php | 119 ++++++++++ packages/Webkul/Admin/package.json | 5 +- packages/Webkul/Admin/src/Config/system.php | 3 +- .../Admin/src/DataGrids/CMSPageDataGrid.php | 59 ++--- .../src/DataGrids/CartRuleCouponDataGrid.php | 2 +- .../Controllers/ConfigurationController.php | 2 +- packages/Webkul/Admin/src/Http/routes.php | 5 +- .../Admin/src/Resources/assets/js/app.js | 4 +- .../Admin/src/Resources/lang/en/app.php | 8 +- .../src/Resources/views/cms/create.blade.php | 83 +++---- .../src/Resources/views/cms/edit.blade.php | 119 +++++----- .../settings/currencies/create.blade.php | 2 +- .../views/settings/currencies/edit.blade.php | 2 +- .../src/Contracts/{CMS.php => CmsPage.php} | 2 +- .../CMS/src/Contracts/CmsPageTranslation.php | 7 + ...854_create_cms_page_translations_table.php | 41 ++++ ...06_remove_columns_from_cms_pages_table.php | 34 +++ ..._130209_create_cms_page_channels_table.php | 35 +++ .../Database/Seeders/CMSPagesTableSeeder.php | 107 +++++---- .../Http/Controllers/Admin/PageController.php | 219 ++++-------------- .../Shop/PagePresenterController.php | 39 +--- packages/Webkul/CMS/src/Models/CMS.php | 13 -- packages/Webkul/CMS/src/Models/CmsPage.php | 24 ++ .../Models/{CMSProxy.php => CmsPageProxy.php} | 2 +- .../CMS/src/Models/CmsPageTranslation.php | 13 ++ .../src/Models/CmsPageTranslationProxy.php | 10 + .../CMS/src/Providers/CMSServiceProvider.php | 5 +- .../src/Providers/ModuleServiceProvider.php | 3 +- .../CMS/src/Repositories/CMSRepository.php | 57 ----- .../CMS/src/Repositories/CmsRepository.php | 110 +++++++++ .../src/Repositories/CategoryRepository.php | 10 - .../src/Repositories/SliderRepository.php | 21 +- .../Webkul/Product/src/Type/AbstractType.php | 5 +- packages/Webkul/Product/src/Type/Bundle.php | 70 +++++- .../Shop/src/Resources/assets/js/app.js | 3 +- .../views/checkout/onepage.blade.php | 4 +- .../products/view/bundle-options.blade.php | 1 + 38 files changed, 721 insertions(+), 528 deletions(-) create mode 100644 app/Console/Commands/install.php rename packages/Webkul/CMS/src/Contracts/{CMS.php => CmsPage.php} (68%) create mode 100644 packages/Webkul/CMS/src/Contracts/CmsPageTranslation.php create mode 100644 packages/Webkul/CMS/src/Database/Migrations/2020_01_14_191854_create_cms_page_translations_table.php create mode 100644 packages/Webkul/CMS/src/Database/Migrations/2020_01_14_192206_remove_columns_from_cms_pages_table.php create mode 100644 packages/Webkul/CMS/src/Database/Migrations/2020_01_15_130209_create_cms_page_channels_table.php delete mode 100644 packages/Webkul/CMS/src/Models/CMS.php create mode 100644 packages/Webkul/CMS/src/Models/CmsPage.php rename packages/Webkul/CMS/src/Models/{CMSProxy.php => CmsPageProxy.php} (67%) create mode 100644 packages/Webkul/CMS/src/Models/CmsPageTranslation.php create mode 100644 packages/Webkul/CMS/src/Models/CmsPageTranslationProxy.php delete mode 100644 packages/Webkul/CMS/src/Repositories/CMSRepository.php create mode 100644 packages/Webkul/CMS/src/Repositories/CmsRepository.php diff --git a/.env.example b/.env.example index 4ece248c8..44f630aac 100644 --- a/.env.example +++ b/.env.example @@ -35,6 +35,7 @@ MAIL_ENCRYPTION=tls SHOP_MAIL_FROM= ADMIN_MAIL_TO= +MAIL_FROM_NAME= fixer_api_key= diff --git a/app/Console/Commands/install.php b/app/Console/Commands/install.php new file mode 100644 index 000000000..b1c2b3380 --- /dev/null +++ b/app/Console/Commands/install.php @@ -0,0 +1,119 @@ +checkForEnvFile(); + + // running `php artisan migrate` + $this->warn('Step: Migrating all tables into database...'); + $migrate = shell_exec('php artisan migrate:fresh'); + $this->info($migrate); + + // running `php artisan db:seed` + $this->warn('Step: seeding basic data for bagisto kickstart...'); + $result = shell_exec('php artisan db:seed'); + $this->info($result); + + // running `php artisan vendor:publish --all` + $this->warn('Step: Publishing Assets and Configurations...'); + $result = shell_exec('php artisan vendor:publish --all'); + $this->info($result); + + // running `php artisan storage:link` + $this->warn('Step: Linking Storage directory...'); + $result = shell_exec('php artisan storage:link'); + $this->info($result); + + // running `composer dump-autoload` + $this->warn('Step: Composer Autoload...'); + $result = shell_exec('composer dump-autoload'); + $this->info($result); + + $this->info('-----------------------------'); + $this->info('Now, run `php artisan serve` to start using Bagisto'); + $this->info('Cheers!'); + } + + /** + * Checking .env file and if not found then create .env file. + * Then ask for database name, password & username to set + * On .env file so that we can easily migrate to our db + */ + public function checkForEnvFile() + { + $envExists = File::exists(base_path() . '/.env'); + if (!$envExists) { + $this->info('Creating .env file'); + $this->createEnvFile(); + } else { + $this->info('Great! .env file aready exists'); + } + } + + public function createEnvFile() + { + try { + File::copy('.env.example', '.env'); + Artisan::call('key:generate'); + $this->envUpdate('APP_URL=http://localhost', ':8000'); + $this->addDatabaseDetails(); + } catch (\Exception $e) { + $this->error('Error in creating .env file, please create manually and then run `php artisan migrate` again'); + } + } + + public function addDatabaseDetails() + { + $dbName = $this->ask('What is your database name to be used by bagisto'); + $dbUser = $this->anticipate('What is your database username', ['root']); + $dbPass = $this->secret('What is your database password'); + $this->envUpdate('DB_DATABASE=', $dbName); + $this->envUpdate('DB_USERNAME=', $dbUser); + $this->envUpdate('DB_PASSWORD=', $dbPass); + } + + public static function envUpdate($key, $value) + { + $path = base_path() . '/.env'; + file_put_contents($path, str_replace( + $key, + $key . $value, + file_get_contents($path) + )); + } +} diff --git a/packages/Webkul/Admin/package.json b/packages/Webkul/Admin/package.json index d594b0c87..3a1b6c7af 100755 --- a/packages/Webkul/Admin/package.json +++ b/packages/Webkul/Admin/package.json @@ -15,7 +15,10 @@ "jquery": "^3.4.1", "laravel-mix": "^5.0.0", "laravel-mix-merge-manifest": "^0.1.2", - "vue": "^2.6.10" + "sass": "^1.24.4", + "sass-loader": "^8.0.2", + "vue": "^2.6.10", + "vue-template-compiler": "^2.6.11" }, "dependencies": { "vee-validate": "^2.2.15" diff --git a/packages/Webkul/Admin/src/Config/system.php b/packages/Webkul/Admin/src/Config/system.php index 9a1490c78..d9a39ee19 100644 --- a/packages/Webkul/Admin/src/Config/system.php +++ b/packages/Webkul/Admin/src/Config/system.php @@ -76,6 +76,7 @@ return [ 'title' => 'admin::app.admin.system.logo-image', 'type' => 'image', 'channel_based' => true, + 'validation' => 'mimes:jpeg,bmp,png,jpg' ] ] ], [ @@ -156,5 +157,5 @@ return [ 'type' => 'boolean' ] ], - ], + ], ]; \ No newline at end of file diff --git a/packages/Webkul/Admin/src/DataGrids/CMSPageDataGrid.php b/packages/Webkul/Admin/src/DataGrids/CMSPageDataGrid.php index 6e827af96..735ccf22e 100644 --- a/packages/Webkul/Admin/src/DataGrids/CMSPageDataGrid.php +++ b/packages/Webkul/Admin/src/DataGrids/CMSPageDataGrid.php @@ -13,23 +13,26 @@ use DB; */ class CMSPageDataGrid extends DataGrid { - protected $index = 'id'; //the column that needs to be treated as index column + protected $index = 'id'; - protected $sortOrder = 'desc'; //asc or desc + protected $sortOrder = 'desc'; public function prepareQueryBuilder() { - $queryBuilder = DB::table('cms_pages')->select('id', 'url_key', 'page_title', 'channel_id', 'locale_id'); + $queryBuilder = DB::table('cms_pages') + ->select('cms_pages.id', 'cms_page_translations.page_title', 'cms_page_translations.url_key') + ->leftJoin('cms_page_translations', function($leftJoin) { + $leftJoin->on('cms_pages.id', '=', 'cms_page_translations.cms_page_id') + ->where('cms_page_translations.locale', app()->getLocale()); + }); + + $this->addFilter('id', 'cms_pages.id'); $this->setQueryBuilder($queryBuilder); } public function addColumns() { - $channels = app('Webkul\Core\Repositories\ChannelRepository'); - - $locales = app('Webkul\Core\Repositories\LocaleRepository'); - $this->addColumn([ 'index' => 'id', 'label' => trans('admin::app.datagrid.id'), @@ -39,15 +42,6 @@ class CMSPageDataGrid extends DataGrid 'filterable' => true ]); - $this->addColumn([ - 'index' => 'url_key', - 'label' => trans('admin::app.datagrid.url-key'), - 'type' => 'string', - 'searchable' => true, - 'sortable' => true, - 'filterable' => true - ]); - $this->addColumn([ 'index' => 'page_title', 'label' => trans('admin::app.cms.pages.page-title'), @@ -58,45 +52,26 @@ class CMSPageDataGrid extends DataGrid ]); $this->addColumn([ - 'index' => 'locale_id', - 'label' => trans('admin::app.cms.pages.locale'), - 'type' => 'number', - 'searchable' => false, + 'index' => 'url_key', + 'label' => trans('admin::app.datagrid.url-key'), + 'type' => 'string', + 'searchable' => true, 'sortable' => true, - 'filterable' => true, - 'wrapper' => function($row) use($locales) { - $localeCode = $locales->find($row->locale_id)->code; - - return $row->locale_id.' ('. $localeCode. ')'; - } - ]); - - $this->addColumn([ - 'index' => 'channel_id', - 'label' => trans('admin::app.cms.pages.channel'), - 'type' => 'number', - 'searchable' => false, - 'sortable' => true, - 'filterable' => true, - 'wrapper' => function($row) use($channels) { - $channelCode = $channels->find($row->channel_id)->name; - - return $row->channel_id.' ('. $channelCode. ')'; - } + 'filterable' => true ]); } public function prepareActions() { $this->addAction([ 'title' => 'Edit CMSPage', - 'method' => 'GET', // use GET request only for redirect purposes + 'method' => 'GET', 'route' => 'admin.cms.edit', 'icon' => 'icon pencil-lg-icon' ]); $this->addAction([ 'title' => 'Delete CMSPage', - 'method' => 'POST', // use GET request only for redirect purposes + 'method' => 'POST', 'route' => 'admin.cms.delete', 'icon' => 'icon trash-icon' ]); diff --git a/packages/Webkul/Admin/src/DataGrids/CartRuleCouponDataGrid.php b/packages/Webkul/Admin/src/DataGrids/CartRuleCouponDataGrid.php index ccf8c6375..f4eeac150 100644 --- a/packages/Webkul/Admin/src/DataGrids/CartRuleCouponDataGrid.php +++ b/packages/Webkul/Admin/src/DataGrids/CartRuleCouponDataGrid.php @@ -21,7 +21,7 @@ class CartRuleCouponDataGrid extends DataGrid { $queryBuilder = DB::table('cart_rule_coupons') ->addSelect('id', 'code', 'created_at', 'expired_at', 'times_used') - ->where('cart_rule_coupons.cart_rule_id', request('id')); + ->where('cart_rule_coupons.cart_rule_id', collect(request()->segments())->last()); $this->setQueryBuilder($queryBuilder); } diff --git a/packages/Webkul/Admin/src/Http/Controllers/ConfigurationController.php b/packages/Webkul/Admin/src/Http/Controllers/ConfigurationController.php index bdac3ee91..882a71953 100755 --- a/packages/Webkul/Admin/src/Http/Controllers/ConfigurationController.php +++ b/packages/Webkul/Admin/src/Http/Controllers/ConfigurationController.php @@ -120,7 +120,7 @@ class ConfigurationController extends Controller { Event::fire('core.configuration.save.before'); - if (request()->hasFile('general.design.admin_logo.logo_image')) { + if (request()->has('general.design.admin_logo.logo_image') && ! request()->input('general.design.admin_logo.logo_image.delete')) { $this->validate(request(), [ 'general.design.admin_logo.logo_image' => 'required|mimes:jpeg,bmp,png,jpg' ]); diff --git a/packages/Webkul/Admin/src/Http/routes.php b/packages/Webkul/Admin/src/Http/routes.php index 6da6f2068..ab1b4dfda 100755 --- a/packages/Webkul/Admin/src/Http/routes.php +++ b/packages/Webkul/Admin/src/Http/routes.php @@ -726,7 +726,6 @@ Route::group(['middleware' => ['web']], function () { 'view' => 'admin::cms.index' ])->name('admin.cms.index'); - Route::get('preview/{url_key}', 'Webkul\CMS\Http\Controllers\Admin\PageController@preview')->name('admin.cms.preview'); Route::get('create', 'Webkul\CMS\Http\Controllers\Admin\PageController@create')->defaults('_config', [ 'view' => 'admin::cms.create' @@ -736,11 +735,11 @@ Route::group(['middleware' => ['web']], function () { 'redirect' => 'admin.cms.index' ])->name('admin.cms.store'); - Route::get('update/{id}', 'Webkul\CMS\Http\Controllers\Admin\PageController@edit')->defaults('_config', [ + Route::get('edit/{id}', 'Webkul\CMS\Http\Controllers\Admin\PageController@edit')->defaults('_config', [ 'view' => 'admin::cms.edit' ])->name('admin.cms.edit'); - Route::post('update/{id}', 'Webkul\CMS\Http\Controllers\Admin\PageController@update')->defaults('_config', [ + Route::post('edit/{id}', 'Webkul\CMS\Http\Controllers\Admin\PageController@update')->defaults('_config', [ 'redirect' => 'admin.cms.index' ])->name('admin.cms.update'); diff --git a/packages/Webkul/Admin/src/Resources/assets/js/app.js b/packages/Webkul/Admin/src/Resources/assets/js/app.js index 76eaf7319..7baff800a 100755 --- a/packages/Webkul/Admin/src/Resources/assets/js/app.js +++ b/packages/Webkul/Admin/src/Resources/assets/js/app.js @@ -6,7 +6,9 @@ import './bootstrap'; window.Vue = Vue; window.VeeValidate = VeeValidate; -Vue.use(VeeValidate); +Vue.use(VeeValidate, { + events: 'input|change|blur', +}); Vue.prototype.$http = axios window.eventBus = new Vue(); diff --git a/packages/Webkul/Admin/src/Resources/lang/en/app.php b/packages/Webkul/Admin/src/Resources/lang/en/app.php index 5d0b7d911..71aa08dac 100755 --- a/packages/Webkul/Admin/src/Resources/lang/en/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/en/app.php @@ -1142,13 +1142,13 @@ return [ 'pages' => [ 'general' => 'General', 'seo' => 'SEO', - 'pages' => 'Page', - 'title' => 'pages', + 'pages' => 'Pages', + 'title' => 'Pages', 'add-title' => 'Add Page', 'content' => 'Content', 'url-key' => 'URL Key', - 'channel' => 'Channel', - 'locale' => 'Locale', + 'channel' => 'Channels', + 'locale' => 'Locales', 'create-btn-title' => 'Save Page', 'edit-title' => 'Edit Page', 'edit-btn-title' => 'Save Page', diff --git a/packages/Webkul/Admin/src/Resources/views/cms/create.blade.php b/packages/Webkul/Admin/src/Resources/views/cms/create.blade.php index 078c1edd1..59c1ecf24 100644 --- a/packages/Webkul/Admin/src/Resources/views/cms/create.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/cms/create.blade.php @@ -11,9 +11,9 @@