diff --git a/Laracel Command b/Laracel Command new file mode 100644 index 000000000..718158d3b --- /dev/null +++ b/Laracel Command @@ -0,0 +1,8 @@ +php artisan make:controller UserController && mv app/Http/Controllers/UserController.php packages/Webkul/User/src/Ht +tp/Controllers + +php artisan make:migration foo --path=packages/Webkul/User/src/Database/migrations + +php artisan db:seed --class=Webkul\\User\\Database\\Seeders\\DatabaseSeeder + +php artisan route:cache \ No newline at end of file diff --git a/composer.json b/composer.json index 23989450b..ad4e3695b 100644 --- a/composer.json +++ b/composer.json @@ -6,10 +6,12 @@ "type": "project", "require": { "php": "^7.1.3", + "dimsav/laravel-translatable": "^9.0", "fideloper/proxy": "^4.0", "laravel/framework": "5.6.*", "laravel/tinker": "^1.0", - "nwidart/laravel-modules": "^3.2" + "nwidart/laravel-modules": "^3.2", + "propaganistas/laravel-intl": "^2.0" }, "require-dev": { "barryvdh/laravel-debugbar": "^3.1", @@ -22,7 +24,9 @@ "replace": { "webkul/laravel-user": "self.version", "webkul/laravel-admin": "self.version", - "webkul/laravel-ui": "self.version" + "webkul/laravel-ui": "self.version", + "webkul/laravel-core": "self.version", + "webkul/laravel-attribute": "self.version" }, "autoload": { "classmap": [ @@ -33,7 +37,9 @@ "App\\": "app/", "Webkul\\User\\": "packages/Webkul/User/src", "Webkul\\Admin\\": "packages/Webkul/Admin/src", - "Webkul\\Ui\\": "packages/Webkul/Ui/src" + "Webkul\\Ui\\": "packages/Webkul/Ui/src", + "Webkul\\Attribute\\": "packages/Webkul/Attribute/src", + "Webkul\\Core\\": "packages/Webkul/Core/src" } }, "autoload-dev": { diff --git a/composer.lock b/composer.lock index b5ae2735f..72e9bdcda 100644 --- a/composer.lock +++ b/composer.lock @@ -4,8 +4,107 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "5d86c298bb279ec35bcbbd1dfb204831", + "content-hash": "1cfe5a0cb070df958cccb486627d42f2", "packages": [ + { + "name": "commerceguys/intl", + "version": "v1.0.1", + "source": { + "type": "git", + "url": "https://github.com/commerceguys/intl.git", + "reference": "22156e447530d6ebd387bfee51ef1ae2c70a5ff0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/commerceguys/intl/zipball/22156e447530d6ebd387bfee51ef1ae2c70a5ff0", + "reference": "22156e447530d6ebd387bfee51ef1ae2c70a5ff0", + "shasum": "" + }, + "require": { + "php": ">=5.5.0" + }, + "require-dev": { + "mikey179/vfsstream": "1.*", + "phpunit/phpunit": "~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "CommerceGuys\\Intl\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bojan Zivanovic" + } + ], + "description": "Internationalization library powered by CLDR data.", + "time": "2018-06-21T14:03:04+00:00" + }, + { + "name": "dimsav/laravel-translatable", + "version": "v9.0", + "source": { + "type": "git", + "url": "https://github.com/dimsav/laravel-translatable.git", + "reference": "a174b327342e882df7df9d971cf36ae678c16088" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dimsav/laravel-translatable/zipball/a174b327342e882df7df9d971cf36ae678c16088", + "reference": "a174b327342e882df7df9d971cf36ae678c16088", + "shasum": "" + }, + "require": { + "illuminate/support": "5.6.*", + "php": ">=5.4.0" + }, + "require-dev": { + "orchestra/testbench": "3.6.*", + "phpunit/phpunit": "~7.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Dimsav\\Translatable\\TranslatableServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Dimsav\\Translatable\\": "src/Translatable/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Dimitrios Savvopoulos", + "email": "ds@dimsav.com", + "homepage": "http://dimsav.com" + } + ], + "description": "A Laravel package for multilingual models", + "keywords": [ + "database", + "language", + "laravel", + "translation" + ], + "time": "2018-02-10T14:10:41+00:00" + }, { "name": "dnoegel/php-xdg-base-dir", "version": "0.1", @@ -453,6 +552,71 @@ ], "time": "2015-04-20T18:58:01+00:00" }, + { + "name": "jenssegers/date", + "version": "v3.4.0", + "source": { + "type": "git", + "url": "https://github.com/jenssegers/date.git", + "reference": "3f5f94f28bd5108fab011869434209101d4189ae" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/jenssegers/date/zipball/3f5f94f28bd5108fab011869434209101d4189ae", + "reference": "3f5f94f28bd5108fab011869434209101d4189ae", + "shasum": "" + }, + "require": { + "nesbot/carbon": "^1.0", + "php": ">=5.6", + "symfony/translation": "^2.7|^3.0|^4.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.0|^6.0|^7.0", + "satooshi/php-coveralls": "^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" + }, + "laravel": { + "providers": [ + "Jenssegers\\Date\\DateServiceProvider" + ], + "aliases": { + "Date": "Jenssegers\\Date\\Date" + } + } + }, + "autoload": { + "psr-4": { + "Jenssegers\\Date\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jens Segers", + "homepage": "https://jenssegers.com" + } + ], + "description": "A date library to help you work with dates in different languages", + "homepage": "https://github.com/jenssegers/date", + "keywords": [ + "carbon", + "date", + "datetime", + "i18n", + "laravel", + "time", + "translation" + ], + "time": "2018-05-16T11:53:55+00:00" + }, { "name": "laravel/framework", "version": "v5.6.24", @@ -1040,6 +1204,69 @@ ], "time": "2018-06-08T15:26:40+00:00" }, + { + "name": "propaganistas/laravel-intl", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/Propaganistas/Laravel-Intl.git", + "reference": "645a34430ae92d287e97a06815d613be1f3002b5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Propaganistas/Laravel-Intl/zipball/645a34430ae92d287e97a06815d613be1f3002b5", + "reference": "645a34430ae92d287e97a06815d613be1f3002b5", + "shasum": "" + }, + "require": { + "commerceguys/intl": "^1.0.1", + "illuminate/support": ">=5.1,<5.7", + "jenssegers/date": "^3.2.3", + "php": ">=7.0", + "punic/punic": "^3.1", + "umpirsky/country-list": "^2.0", + "umpirsky/locale-list": "^1.0" + }, + "require-dev": { + "orchestra/testbench": ">=3.1", + "phpunit/phpunit": "^5.0|^6.0|^7.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Propaganistas\\LaravelIntl\\IntlServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Propaganistas\\LaravelIntl\\": "src/" + }, + "files": [ + "src/helpers.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Propaganistas", + "email": "Propaganistas@users.noreply.github.com" + } + ], + "description": "Easy to use internationalization functions for Laravel", + "keywords": [ + "i18n", + "internationalization", + "intl", + "l10n", + "laravel" + ], + "time": "2018-07-03T07:55:17+00:00" + }, { "name": "psr/container", "version": "1.0.0", @@ -1256,6 +1483,75 @@ ], "time": "2018-06-10T17:57:20+00:00" }, + { + "name": "punic/punic", + "version": "3.1.0", + "source": { + "type": "git", + "url": "https://github.com/punic/punic.git", + "reference": "bd49ff54ea6ee8a902a567905664ecc7840037d6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/punic/punic/zipball/bd49ff54ea6ee8a902a567905664ecc7840037d6", + "reference": "bd49ff54ea6ee8a902a567905664ecc7840037d6", + "shasum": "" + }, + "require": { + "php": ">=5.3" + }, + "replace": { + "punic/calendar": "*", + "punic/common": "*" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "2.2.*", + "phpunit/phpunit": "^4" + }, + "bin": [ + "bin/punic-data" + ], + "type": "library", + "autoload": { + "psr-4": { + "Punic\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michele Locati", + "email": "mlocati@gmail.com", + "role": "Developer" + }, + { + "name": "Remo Laubacher", + "email": "remo.laubacher@gmail.com", + "role": "Collaborator, motivator and perfectionist supporter" + } + ], + "description": "PHP-Unicode CLDR", + "homepage": "https://github.com/punic/punic", + "keywords": [ + "calendar", + "cldr", + "date", + "date-time", + "i18n", + "internationalization", + "l10n", + "localization", + "php", + "time", + "translate", + "translations", + "unicode" + ], + "time": "2018-02-09T15:54:34+00:00" + }, { "name": "ramsey/uuid", "version": "3.7.3", @@ -2308,6 +2604,83 @@ "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", "time": "2017-11-27T11:13:29+00:00" }, + { + "name": "umpirsky/country-list", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/umpirsky/country-list.git", + "reference": "ddabf3a8ef2956fc0fbd22da9bec642ab6cfdede" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/umpirsky/country-list/zipball/ddabf3a8ef2956fc0fbd22da9bec642ab6cfdede", + "reference": "ddabf3a8ef2956fc0fbd22da9bec642ab6cfdede", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "slowprog/composer-copy-file": "^0.2", + "symfony/locale": "^2.7|^3.0", + "umpirsky/list-generator": "^1.2" + }, + "type": "library", + "extra": { + "copy-file": { + "vendor/umpirsky/list-generator/Dockerfile": "./", + "vendor/umpirsky/list-generator/docker-compose.yml": "./" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Saša Stamenković", + "email": "umpirsky@gmail.com" + } + ], + "description": "List of all countries with names and ISO 3166-1 codes in all languages and data formats.", + "time": "2018-02-27T18:55:19+00:00" + }, + { + "name": "umpirsky/locale-list", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/umpirsky/locale-list.git", + "reference": "8141f749e16e568a5a9f7e813c50f72efa794c2e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/umpirsky/locale-list/zipball/8141f749e16e568a5a9f7e813c50f72efa794c2e", + "reference": "8141f749e16e568a5a9f7e813c50f72efa794c2e", + "shasum": "" + }, + "require": { + "php": ">=5.4" + }, + "require-dev": { + "symfony/locale": "^2.7|^3.0", + "umpirsky/list-generator": "^1.1" + }, + "type": "library", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Saša Stamenković", + "email": "umpirsky@gmail.com" + } + ], + "description": "List of all locales with names and codes in all languages and all data formats.", + "time": "2018-06-01T17:50:07+00:00" + }, { "name": "vlucas/phpdotenv", "version": "v2.4.0", diff --git a/config/app.php b/config/app.php index cc1bea2f7..d778acc5b 100644 --- a/config/app.php +++ b/config/app.php @@ -13,7 +13,7 @@ return [ | */ - 'name' => env('APP_NAME', 'Laravel'), + 'name' => env('APP_NAME', 'Bagisto'), /* |-------------------------------------------------------------------------- @@ -151,6 +151,9 @@ return [ * Package Service Providers... */ + Dimsav\Translatable\TranslatableServiceProvider::class, + Propaganistas\LaravelIntl\IntlServiceProvider::class, + /* * Application Service Providers... */ @@ -163,7 +166,9 @@ return [ Webkul\User\Providers\UserServiceProvider::class, Webkul\Admin\Providers\AdminServiceProvider::class, - Webkul\Ui\Providers\UiServiceProvider::class + Webkul\Ui\Providers\UiServiceProvider::class, + Webkul\Attribute\Providers\AttributeServiceProvider::class, + Webkul\Core\Providers\CoreServiceProvider::class ], /* diff --git a/packages/Webkul/Admin/composer.json b/packages/Webkul/Admin/composer.json index ec85e56fd..8e417b84a 100644 --- a/packages/Webkul/Admin/composer.json +++ b/packages/Webkul/Admin/composer.json @@ -9,7 +9,8 @@ ], "require": { "webkul/laravel-user": "dev-master", - "webkul/laravel-ui": "dev-master" + "webkul/laravel-ui": "dev-master", + "webkul/laravel-core": "dev-master" }, "autoload": { "psr-4": { diff --git a/packages/Webkul/Admin/package.json b/packages/Webkul/Admin/package.json index 796638709..132be42e2 100644 --- a/packages/Webkul/Admin/package.json +++ b/packages/Webkul/Admin/package.json @@ -18,6 +18,6 @@ "vue": "^2.1.10" }, "dependencies": { - "vee-validate": "^2.1.0-beta.3" + "vee-validate": "2.0.0-rc.26" } } diff --git a/packages/Webkul/Admin/src/Config/auth.php b/packages/Webkul/Admin/src/Config/auth.php index 8b1c1ee0c..fc49f9cdb 100644 --- a/packages/Webkul/Admin/src/Config/auth.php +++ b/packages/Webkul/Admin/src/Config/auth.php @@ -33,5 +33,13 @@ return [ 'driver' => 'eloquent', 'model' => Webkul\User\Models\Admin::class, ] - ] + ], + + 'passwords' => [ + 'admins' => [ + 'provider' => 'admins', + 'table' => 'admin_password_resets', + 'expire' => 60, + ], + ], ]; \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Http/routes.php b/packages/Webkul/Admin/src/Http/routes.php index faac93e53..2257f1c8e 100644 --- a/packages/Webkul/Admin/src/Http/routes.php +++ b/packages/Webkul/Admin/src/Http/routes.php @@ -3,30 +3,70 @@ Route::group(['middleware' => ['web']], function () { Route::prefix('admin')->group(function () { - Route::get('/login', 'Webkul\User\Http\Controllers\SeesionController@create')->defaults('_config', [ - 'view' => 'admin::sessions.create' + // Login Routes + Route::get('/login', 'Webkul\User\Http\Controllers\SessionController@create')->defaults('_config', [ + 'view' => 'admin::users.sessions.create' ])->name('admin.session.create'); - Route::post('/login', 'Webkul\User\Http\Controllers\SeesionController@store')->defaults('_config', [ - 'redirect' => 'admin/dashboard' - ])->name('admin.session.store'); + Route::post('/login', 'Webkul\User\Http\Controllers\SessionController@store')->defaults('_config', [ + 'redirect' => 'admin.dashboard.index' + ])->name('admin.forget-password.store'); + + // Forget Password Routes + Route::get('/forget-password', 'Webkul\User\Http\Controllers\ForgetPasswordController@create')->defaults('_config', [ + 'view' => 'admin::users.forget-password.create' + ])->name('admin.forget-password.create'); + + Route::post('/forget-password', 'Webkul\User\Http\Controllers\ForgetPasswordController@store')->name('admin.forget-password.store'); + + + // Reset Password Routes + Route::get('/reset-password/{token}', 'Webkul\User\Http\Controllers\ResetPasswordController@create')->defaults('_config', [ + 'view' => 'admin::users.reset-password.create' + ])->name('admin.reset-password.create'); + + Route::post('/reset-password', 'Webkul\User\Http\Controllers\ResetPasswordController@store')->defaults('_config', [ + 'redirect' => 'admin.dashboard.index' + ])->name('admin.reset-password.store'); + + + // Admin Routes Route::group(['middleware' => ['admin']], function () { - Route::get('/logout', 'Webkul\User\Http\Controllers\SeesionController@destroy')->defaults('_config', [ - 'redirect' => 'admin/login' + Route::get('/logout', 'Webkul\User\Http\Controllers\SessionController@destroy')->defaults('_config', [ + 'redirect' => 'admin.session.create' ])->name('admin.session.destroy'); - + + + // Dashboard Route Route::get('/dashboard', 'Webkul\Admin\Http\Controllers\DashboardController@index')->name('admin.dashboard.index'); + + // Catalog Routes + Route::prefix('catalog')->group(function () { + Route::get('/attributes', 'Webkul\Attribute\Http\Controllers\AttributeController@index')->defaults('_config', [ + 'view' => 'admin::catalog.attributes.index' + ])->name('admin.catalog.attributes.index'); + + Route::get('/attributes/create', 'Webkul\Attribute\Http\Controllers\AttributeController@create')->defaults('_config', [ + 'view' => 'admin::catalog.attributes.create' + ])->name('admin.catalog.attributes.create'); + + Route::post('/attributes/create', 'Webkul\Attribute\Http\Controllers\AttributeController@store')->defaults('_config', [ + 'redirect' => 'admin.catalog.attributes.index' + ])->name('admin.catalog.attributes.store'); + }); + + // Datagrid Routes Route::get('/datagrid', 'Webkul\Admin\Http\Controllers\DataGridController@index')->name('admin.datagrid.index'); // User Routes Route::get('/users', 'Webkul\User\Http\Controllers\UserController@index')->defaults('_config', [ - 'view' => 'admin::users.index' + 'view' => 'admin::users.users.index' ])->name('admin.users.index'); Route::get('/users/create', 'Webkul\User\Http\Controllers\UserController@create')->defaults('_config', [ - 'view' => 'admin::users.create' + 'view' => 'admin::users.users.create' ])->name('admin.users.create'); Route::post('/users/create', 'Webkul\User\Http\Controllers\UserController@store')->defaults('_config', [ @@ -34,20 +74,21 @@ Route::group(['middleware' => ['web']], function () { ])->name('admin.users.store'); Route::get('/users/edit/{id}', 'Webkul\User\Http\Controllers\UserController@edit')->defaults('_config', [ - 'view' => 'admin::users.edit' + 'view' => 'admin::users.users.edit' ])->name('admin.users.edit'); Route::put('/users/edit/{id}', 'Webkul\User\Http\Controllers\UserController@update')->defaults('_config', [ 'redirect' => 'admin.users.index' ])->name('admin.users.update'); + // User Role Routes Route::get('/roles', 'Webkul\User\Http\Controllers\RoleController@index')->defaults('_config', [ - 'view' => 'admin::roles.index' + 'view' => 'admin::users.roles.index' ])->name('admin.roles.index'); Route::get('/roles/create', 'Webkul\User\Http\Controllers\RoleController@create')->defaults('_config', [ - 'view' => 'admin::roles.create' + 'view' => 'admin::users.roles.create' ])->name('admin.roles.create'); Route::post('/roles/create', 'Webkul\User\Http\Controllers\RoleController@store')->defaults('_config', [ @@ -55,7 +96,7 @@ Route::group(['middleware' => ['web']], function () { ])->name('admin.roles.store'); Route::get('/roles/edit/{id}', 'Webkul\User\Http\Controllers\RoleController@edit')->defaults('_config', [ - 'view' => 'admin::roles.edit' + 'view' => 'admin::users.roles.edit' ])->name('admin.roles.edit'); Route::put('/roles/edit/{id}', 'Webkul\User\Http\Controllers\RoleController@update')->defaults('_config', [ @@ -63,6 +104,20 @@ Route::group(['middleware' => ['web']], function () { ])->name('admin.roles.update'); + // Locale Routes + Route::get('/locales', 'Webkul\Core\Http\Controllers\LocaleController@index')->defaults('_config', [ + 'view' => 'admin::locales.index' + ])->name('admin.locales.index'); + + Route::get('/locales/create', 'Webkul\Core\Http\Controllers\LocaleController@create')->defaults('_config', [ + 'view' => 'admin::locales.create' + ])->name('admin.locales.create'); + + Route::post('/locales/create', 'Webkul\Core\Http\Controllers\LocaleController@store')->defaults('_config', [ + 'redirect' => 'admin.locales.index' + ])->name('admin.locales.store'); + + // Admin Profile route Route::get('/account', 'Webkul\User\Http\Controllers\AccountController@edit')->defaults('_config', [ 'view' => 'admin::account.edit' diff --git a/packages/Webkul/Admin/src/Providers/AdminServiceProvider.php b/packages/Webkul/Admin/src/Providers/AdminServiceProvider.php index 09a3c200c..65dc81f3e 100644 --- a/packages/Webkul/Admin/src/Providers/AdminServiceProvider.php +++ b/packages/Webkul/Admin/src/Providers/AdminServiceProvider.php @@ -5,7 +5,7 @@ namespace Webkul\Admin\Providers; use Illuminate\Support\ServiceProvider; use Illuminate\Support\Facades\Event; use Illuminate\Support\Facades\Blade; -use Webkul\Ui\Menu; +use Webkul\Admin\Providers\EventServiceProvider; class AdminServiceProvider extends ServiceProvider { @@ -18,50 +18,19 @@ class AdminServiceProvider extends ServiceProvider { include __DIR__ . '/../Http/routes.php'; + $this->loadTranslationsFrom(__DIR__ . '/../Resources/lang', 'admin'); + $this->publishes([ __DIR__ . '/../../publishable/assets' => public_path('vendor/webkul/admin/assets'), ], 'public'); - $this->loadMigrationsFrom(__DIR__ . '/../Database/migrations'); - $this->loadViewsFrom(__DIR__ . '/../Resources/views', 'admin'); - $this->createAdminMenu(); - $this->composeView(); Blade::directive('continue', function() { return ""; }); - } - - /** - * This method fires an event for menu creation, any package can add their menu item by listening to the admin.menu.build event - * - * @return void - */ - public function createAdminMenu() - { - Event::listen('admin.menu.create', function() { - return Menu::create(function($menu) { - Event::fire('admin.menu.build', $menu); - }); - }); - - Event::listen('admin.menu.build', function($menu) { - $menu->add('dashboard', 'Dashboard', route('admin.dashboard.index'), 1, 'icon-dashboard'); - - $menu->add('configuration', 'Configure', route('admin.account.edit'), 6, 'icon-configuration'); - - $menu->add('configuration.account', 'My Account', route('admin.account.edit'), 1, ''); - - $menu->add('settings', 'Settings', route('admin.users.index'), 6, 'icon-settings'); - - $menu->add('settings.users', 'Users', route('admin.users.index'), 1, ''); - - $menu->add('settings.users.users', 'Users', route('admin.users.index'), 1, ''); - - $menu->add('settings.users.roles', 'Roles', route('admin.roles.index'), 1, ''); - }); + $this->app->register(EventServiceProvider::class); } /** @@ -91,7 +60,7 @@ class AdminServiceProvider extends ServiceProvider ]; } } - + $view->with('menu', $menu)->with('subMenus', $subMenus)->with('tabs', $tabs); }); } diff --git a/packages/Webkul/Admin/src/Providers/EventServiceProvider.php b/packages/Webkul/Admin/src/Providers/EventServiceProvider.php new file mode 100644 index 000000000..df2639d7a --- /dev/null +++ b/packages/Webkul/Admin/src/Providers/EventServiceProvider.php @@ -0,0 +1,97 @@ +createAdminMenu(); + + $this->buildACL(); + + $this->registerACL(); + } + + /** + * This method fires an event for menu creation, any package can add their menu item by listening to the admin.menu.build event + * + * @return void + */ + public function createAdminMenu() + { + Event::listen('admin.menu.create', function() { + return Menu::create(function($menu) { + Event::fire('admin.menu.build', $menu); + }); + }); + + Event::listen('admin.menu.build', function($menu) { + $menu->add('dashboard', 'Dashboard', 'admin.dashboard.index', 1, 'dashboard-icon'); + + $menu->add('catalog', 'Catalog', 'admin.catalog.attributes.index', 3, 'catalog-icon'); + + $menu->add('catalog.attributes', 'Attributes', 'admin.catalog.attributes.index', 3); + + $menu->add('configuration', 'Configure', 'admin.account.edit', 6, 'configuration-icon'); + + $menu->add('configuration.account', 'My Account', 'admin.account.edit', 1); + + $menu->add('settings', 'Settings', 'admin.users.index', 6, 'settings-icon'); + + $menu->add('settings.users', 'Users', 'admin.users.index', 1, ''); + + $menu->add('settings.users.users', 'Users', 'admin.users.index', 1, ''); + + $menu->add('settings.users.roles', 'Roles', 'admin.roles.index', 2, ''); + + $menu->add('settings.locales', 'Locales', 'admin.locales.index', 2, ''); + }); + } + + /** + * Build route based ACL + * + * @return voidbuildACL + */ + public function buildACL() + { + Event::listen('admin.acl.build', function($acl) { + $acl->add('dashboard', 'Dashboard', 'admin.dashboard.index', 1); + + $acl->add('configuration', 'Configure', 'admin.account.edit', 5); + + $acl->add('settings', 'Settings', 'admin.users.index', 6); + + $acl->add('settings.users', 'Users', 'admin.users.index', 1); + + $acl->add('settings.users.users', 'Users', 'admin.users.index', 1); + + $acl->add('settings.users.roles', 'Roles', 'admin.roles.index', 2); + }); + } + + /** + * Registers acl to entire application + * + * @return void + */ + public function registerACL() + { + $this->app->singleton('acl', function() { + return current(Event::fire('admin.acl.create')); + }); + + View::share('acl', app('acl')); + } +} diff --git a/packages/Webkul/Admin/src/Resources/assets/images/logo.png b/packages/Webkul/Admin/src/Resources/assets/images/logo.png new file mode 100644 index 000000000..f3a6baf4d Binary files /dev/null and b/packages/Webkul/Admin/src/Resources/assets/images/logo.png differ diff --git a/packages/Webkul/Admin/src/Resources/views/account/edit.blade.php b/packages/Webkul/Admin/src/Resources/views/account/edit.blade.php index f5bd1e78a..464eab427 100644 --- a/packages/Webkul/Admin/src/Resources/views/account/edit.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/account/edit.blade.php @@ -28,7 +28,7 @@
- + @{{ errors.first('name') }}
@@ -44,13 +44,13 @@
- + @{{ errors.first('password') }}
- + @{{ errors.first('password_confirmation') }}
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 new file mode 100644 index 000000000..853ddd80b --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/catalog/attributes/create.blade.php @@ -0,0 +1,85 @@ +@extends('admin::layouts.content') + +@section('content') +
+
+ + + +
+
+ @csrf() + + +
+
+ + + @{{ errors.first('code') }} +
+ +
+ + +
+
+
+ + +
+ +
+ + + @{{ errors.first('name') }} +
+ + @foreach(Webkul\Core\Models\Locale::all() as $locale) + +
+ + +
+ + @endforeach + +
+
+ + + + + + + + + +
+
+ +
+
+@stop + +@section('javascript') + +@stop \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/catalog/attributes/index.blade.php b/packages/Webkul/Admin/src/Resources/views/catalog/attributes/index.blade.php new file mode 100644 index 000000000..d6305062d --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/catalog/attributes/index.blade.php @@ -0,0 +1,21 @@ +@extends('admin::layouts.content') + +@section('content') +
+ + +
+ +
+
+@stop \ No newline at end of file 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 new file mode 100644 index 000000000..07e0c7e52 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/layouts/anonymous-master.blade.php @@ -0,0 +1,115 @@ + + + + @yield('page_title') + + + + + + + + + + + @yield('css') + + +
+ + + +
+ +
+ + + + @yield('content') + + + +
+ +
+ +
+ + + + + + + @yield('javascript') + + + \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/locales/create.blade.php b/packages/Webkul/Admin/src/Resources/views/locales/create.blade.php new file mode 100644 index 000000000..69c88bc72 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/locales/create.blade.php @@ -0,0 +1,43 @@ +@extends('admin::layouts.content') + +@section('content') +
+ +
+ + +
+
+ @csrf() + + +
+
+ + + @{{ errors.first('code') }} +
+ +
+ + + @{{ errors.first('name') }} +
+
+
+ +
+
+
+
+@stop \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/locales/index.blade.php b/packages/Webkul/Admin/src/Resources/views/locales/index.blade.php new file mode 100644 index 000000000..f64f7016b --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/locales/index.blade.php @@ -0,0 +1,21 @@ +@extends('admin::layouts.content') + +@section('content') +
+ + +
+ +
+
+@stop \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/sessions/create.blade.php b/packages/Webkul/Admin/src/Resources/views/sessions/create.blade.php deleted file mode 100644 index 08d9430a6..000000000 --- a/packages/Webkul/Admin/src/Resources/views/sessions/create.blade.php +++ /dev/null @@ -1,47 +0,0 @@ - - - - @yield('page_title') - - - - - - - - -
- -
- @csrf - -
- -
- -
-
- -
- -
- -
-
- - @if (count($errors)) - @foreach ($errors->all() as $error) - - {{ $error }} - - @endforeach - @endif - -
- -
-
- -
- - \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/users/forget-password/create.blade.php b/packages/Webkul/Admin/src/Resources/views/users/forget-password/create.blade.php new file mode 100644 index 000000000..0a71424e4 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/users/forget-password/create.blade.php @@ -0,0 +1,55 @@ +@extends('admin::layouts.anonymous-master') + +@section('page_title') + {{ __('Forget Password') }} +@stop + +@section('css') + +@stop + +@section('content') + +
+ +
+ +
+ +

{{ __('Recover Password') }}

+ +
+ @csrf + +
+ + + @{{ errors.first('email') }} +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +@stop \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/users/reset-password/create.blade.php b/packages/Webkul/Admin/src/Resources/views/users/reset-password/create.blade.php new file mode 100644 index 000000000..2103ff14b --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/users/reset-password/create.blade.php @@ -0,0 +1,69 @@ +@extends('admin::layouts.anonymous-master') + +@section('page_title') + {{ __('Reset Password') }} +@stop + +@section('css') + +@stop + +@section('content') + +
+ +
+ +
+ +

{{ __('Reset Password') }}

+ +
+ @csrf + + + +
+ + + @{{ errors.first('email') }} +
+ +
+ + + @{{ errors.first('password') }} +
+ +
+ + + @{{ errors.first('password_confirmation') }} +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +@stop \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/roles/create.blade.php b/packages/Webkul/Admin/src/Resources/views/users/roles/create.blade.php similarity index 81% rename from packages/Webkul/Admin/src/Resources/views/roles/create.blade.php rename to packages/Webkul/Admin/src/Resources/views/users/roles/create.blade.php index 209d07070..c0d3d587e 100644 --- a/packages/Webkul/Admin/src/Resources/views/roles/create.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/users/roles/create.blade.php @@ -2,6 +2,7 @@ @section('content')
+
+@stop + +@section('javascript') + @stop \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/users/roles/edit.blade.php b/packages/Webkul/Admin/src/Resources/views/users/roles/edit.blade.php new file mode 100644 index 000000000..08b79c1c5 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/users/roles/edit.blade.php @@ -0,0 +1,74 @@ +@extends('admin::layouts.content') + +@section('content') +
+ +
+ + +
+
+ @csrf() + + + + +
+
+ + + @{{ errors.first('name') }} +
+ +
+ + +
+
+
+ + +
+
+ + +
+ +
+ +
+
+
+
+
+
+
+@stop + +@section('javascript') + +@stop \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/roles/index.blade.php b/packages/Webkul/Admin/src/Resources/views/users/roles/index.blade.php similarity index 100% rename from packages/Webkul/Admin/src/Resources/views/roles/index.blade.php rename to packages/Webkul/Admin/src/Resources/views/users/roles/index.blade.php diff --git a/packages/Webkul/Admin/src/Resources/views/users/sessions/create.blade.php b/packages/Webkul/Admin/src/Resources/views/users/sessions/create.blade.php new file mode 100644 index 000000000..ba227c8a9 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/users/sessions/create.blade.php @@ -0,0 +1,55 @@ +@extends('admin::layouts.anonymous-master') + +@section('page_title') + {{ __('Sign In') }} +@stop + +@section('content') + +
+ +
+ +
+ +

{{ __('Sign In') }}

+ +
+ @csrf + +
+ + + @{{ errors.first('email') }} +
+ +
+ + + @{{ errors.first('password') }} +
+ + + +
+ + + + {{ __('Remember me') }} + +
+ +
+ +
+
+ +
+ +
+ +
+ +@stop \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/users/create.blade.php b/packages/Webkul/Admin/src/Resources/views/users/users/create.blade.php similarity index 100% rename from packages/Webkul/Admin/src/Resources/views/users/create.blade.php rename to packages/Webkul/Admin/src/Resources/views/users/users/create.blade.php diff --git a/packages/Webkul/Admin/src/Resources/views/users/edit.blade.php b/packages/Webkul/Admin/src/Resources/views/users/users/edit.blade.php similarity index 100% rename from packages/Webkul/Admin/src/Resources/views/users/edit.blade.php rename to packages/Webkul/Admin/src/Resources/views/users/users/edit.blade.php diff --git a/packages/Webkul/Admin/src/Resources/views/users/index.blade.php b/packages/Webkul/Admin/src/Resources/views/users/users/index.blade.php similarity index 100% rename from packages/Webkul/Admin/src/Resources/views/users/index.blade.php rename to packages/Webkul/Admin/src/Resources/views/users/users/index.blade.php diff --git a/packages/Webkul/Admin/webpack.mix.js b/packages/Webkul/Admin/webpack.mix.js index ffc6854cc..63e2ab943 100644 --- a/packages/Webkul/Admin/webpack.mix.js +++ b/packages/Webkul/Admin/webpack.mix.js @@ -5,6 +5,7 @@ require('laravel-mix-merge-manifest'); var publicPath = '../../../public/vendor/webkul/admin/assets'; mix.setPublicPath(publicPath).mergeManifest(); +mix.disableNotifications(); mix.js(__dirname + '/src/Resources/assets/js/app.js', 'js/admin.js') .copyDirectory( __dirname + '/src/Resources/assets/images', publicPath + '/images') diff --git a/packages/Webkul/Attribute/.gitignore b/packages/Webkul/Attribute/.gitignore new file mode 100644 index 000000000..30bc16279 --- /dev/null +++ b/packages/Webkul/Attribute/.gitignore @@ -0,0 +1 @@ +/node_modules \ No newline at end of file diff --git a/packages/Webkul/Attribute/composer.json b/packages/Webkul/Attribute/composer.json new file mode 100644 index 000000000..8b6257ada --- /dev/null +++ b/packages/Webkul/Attribute/composer.json @@ -0,0 +1,27 @@ +{ + "name": "webkul/laravel-attribute", + "license": "MIT", + "authors": [ + { + "name": "Jitendra Singh", + "email": "jitendra@webkul.com" + } + ], + "require": { + "nwidart/laravel-modules": "^3.2" + }, + "autoload": { + "psr-4": { + "Webkul\\Attribute\\": "src/" + } + }, + "extra": { + "laravel": { + "providers": [ + "Webkul\\Attribute\\Providers\\AttributeServiceProvider" + ], + "aliases": { } + } + }, + "minimum-stability": "dev" +} diff --git a/packages/Webkul/Attribute/src/Database/Migrations/2018_07_05_130148_create_attributes_table.php b/packages/Webkul/Attribute/src/Database/Migrations/2018_07_05_130148_create_attributes_table.php new file mode 100644 index 000000000..06744de37 --- /dev/null +++ b/packages/Webkul/Attribute/src/Database/Migrations/2018_07_05_130148_create_attributes_table.php @@ -0,0 +1,43 @@ +increments('id'); + $table->string('code')->unique(); + $table->string('name'); + $table->string('type'); + $table->string('validation')->nullable(); + $table->integer('position')->nullable(); + $table->boolean('is_required'); + $table->boolean('is_unique'); + $table->boolean('value_per_locale'); + $table->boolean('value_per_channel'); + $table->boolean('is_filterable'); + $table->boolean('is_configurable'); + $table->boolean('is_user_defined')->default(1); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('attributes'); + } +} diff --git a/packages/Webkul/Attribute/src/Database/Migrations/2018_07_05_132854_create_attribute_translations_table.php b/packages/Webkul/Attribute/src/Database/Migrations/2018_07_05_132854_create_attribute_translations_table.php new file mode 100644 index 000000000..5c1607871 --- /dev/null +++ b/packages/Webkul/Attribute/src/Database/Migrations/2018_07_05_132854_create_attribute_translations_table.php @@ -0,0 +1,35 @@ +increments('id'); + $table->string('locale'); + $table->text('name')->nullable(); + $table->integer('attribute_id')->unsigned(); + $table->unique(['attribute_id', 'locale']); + $table->foreign('attribute_id')->references('id')->on('attributes')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('attribute_translations'); + } +} \ No newline at end of file diff --git a/packages/Webkul/Attribute/src/Database/Migrations/2018_07_05_135152_create_attribute_groups_table.php b/packages/Webkul/Attribute/src/Database/Migrations/2018_07_05_135152_create_attribute_groups_table.php new file mode 100644 index 000000000..d657883d2 --- /dev/null +++ b/packages/Webkul/Attribute/src/Database/Migrations/2018_07_05_135152_create_attribute_groups_table.php @@ -0,0 +1,35 @@ +increments('id'); + $table->string('name'); + $table->timestamps(); + $table->integer('sort_order'); + $table->integer('attribute_family_id')->unsigned(); + $table->unique(['attribute_family_id', 'name']); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('attribute_groups'); + } +} diff --git a/packages/Webkul/Attribute/src/Database/Migrations/2018_07_05_135200_create_attribute_families_table.php b/packages/Webkul/Attribute/src/Database/Migrations/2018_07_05_135200_create_attribute_families_table.php new file mode 100644 index 000000000..13c0e6c25 --- /dev/null +++ b/packages/Webkul/Attribute/src/Database/Migrations/2018_07_05_135200_create_attribute_families_table.php @@ -0,0 +1,36 @@ +increments('id'); + $table->string('name'); + $table->boolean('status')->default(0); + }); + + Schema::table('attribute_groups', function($table) { + $table->foreign('attribute_family_id')->references('id')->on('attribute_families')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('attribute_families'); + } +} diff --git a/packages/Webkul/Attribute/src/Database/Migrations/2018_07_05_140832_create_attribute_options_table.php b/packages/Webkul/Attribute/src/Database/Migrations/2018_07_05_140832_create_attribute_options_table.php new file mode 100644 index 000000000..19e579faf --- /dev/null +++ b/packages/Webkul/Attribute/src/Database/Migrations/2018_07_05_140832_create_attribute_options_table.php @@ -0,0 +1,35 @@ +increments('id'); + $table->string('code'); + $table->integer('sort_order'); + $table->integer('attribute_id')->unsigned(); + $table->unique(['attribute_id', 'code']); + $table->foreign('attribute_id')->references('id')->on('attributes')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('attribute_options'); + } +} diff --git a/packages/Webkul/Attribute/src/Database/Migrations/2018_07_05_140856_create_attribute_option_translations_table.php b/packages/Webkul/Attribute/src/Database/Migrations/2018_07_05_140856_create_attribute_option_translations_table.php new file mode 100644 index 000000000..94944a3ab --- /dev/null +++ b/packages/Webkul/Attribute/src/Database/Migrations/2018_07_05_140856_create_attribute_option_translations_table.php @@ -0,0 +1,35 @@ +increments('id'); + $table->string('locale'); + $table->text('label')->nullable(); + $table->integer('attribute_option_id')->unsigned(); + $table->unique(['attribute_option_id', 'locale']); + $table->foreign('attribute_option_id')->references('id')->on('attribute_options')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('attribute_option_translations'); + } +} diff --git a/packages/Webkul/Attribute/src/Http/Controllers/AttributeController.php b/packages/Webkul/Attribute/src/Http/Controllers/AttributeController.php new file mode 100644 index 000000000..59fa8e87d --- /dev/null +++ b/packages/Webkul/Attribute/src/Http/Controllers/AttributeController.php @@ -0,0 +1,119 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class AttributeController extends Controller +{ + /** + * Contains route related configuration + * + * @var array + */ + protected $_config; + + /** + * Create a new controller instance. + * + * @return void + */ + public function __construct() + { + $this->_config = request('_config'); + } + + /** + * Display a listing of the resource. + * + * @return \Illuminate\Http\Response + */ + public function index() + { + return view($this->_config['view']); + } + + /** + * Show the form for creating a new resource. + * + * @return \Illuminate\Http\Response + */ + public function create() + { + return view($this->_config['view'], compact('roleItems')); + } + + /** + * Store a newly created resource in storage. + * + * @return \Illuminate\Http\Response + */ + public function store() + { + $this->validate(request(), [ + 'code' => ['required', 'unique:attributes,code', new \Webkul\Core\Contracts\Validations\Slug], + 'name' => 'required', + 'type' => 'required' + ]); + + Attribute::create(request()->all()); + + session()->flash('success', 'Attribute created successfully.'); + + return redirect()->route($this->_config['redirect']); + } + + /** + * Show the form for editing the specified resource. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function edit($id) + { + $role = Role::findOrFail($id); + + return view($this->_config['view'], compact('role')); + } + + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\Request $request + * @param int $id + * @return \Illuminate\Http\Response + */ + public function update(Request $request, $id) + { + $this->validate(request(), [ + 'name' => 'required', + 'permission_type' => 'required', + ]); + + $role = Role::findOrFail($id); + + $role->update(request()->all()); + + session()->flash('success', 'Role updated successfully.'); + + return redirect()->route($this->_config['redirect']); + } + + /** + * Remove the specified resource from storage. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function destroy($id) + { + // + } +} \ No newline at end of file diff --git a/packages/Webkul/Attribute/src/Http/Controllers/Controller.php b/packages/Webkul/Attribute/src/Http/Controllers/Controller.php new file mode 100644 index 000000000..0d3d3595f --- /dev/null +++ b/packages/Webkul/Attribute/src/Http/Controllers/Controller.php @@ -0,0 +1,13 @@ +loadMigrationsFrom(__DIR__ . '/../Database/Migrations'); + } + + /** + * Register services. + * + * @return void + */ + public function register() + { + + } +} \ No newline at end of file diff --git a/packages/Webkul/Category/.gitignore b/packages/Webkul/Category/.gitignore new file mode 100644 index 000000000..30bc16279 --- /dev/null +++ b/packages/Webkul/Category/.gitignore @@ -0,0 +1 @@ +/node_modules \ No newline at end of file diff --git a/packages/Webkul/Category/composer.json b/packages/Webkul/Category/composer.json new file mode 100644 index 000000000..9f9bab1ce --- /dev/null +++ b/packages/Webkul/Category/composer.json @@ -0,0 +1,25 @@ +{ + "name": "webkul/laravel-category", + "license": "MIT", + "authors": [ + { + "name": "Jitendra Singh", + "email": "jitendra@webkul.com" + } + ], + "require": {}, + "autoload": { + "psr-4": { + "Webkul\\Attribute\\": "src/" + } + }, + "extra": { + "laravel": { + "providers": [ + "Webkul\\Attribute\\Providers\\AttributeServiceProvider" + ], + "aliases": { } + } + }, + "minimum-stability": "dev" +} diff --git a/packages/Webkul/Category/src/Database/Migrations/2018_07_05_142820_create_categories_table.php b/packages/Webkul/Category/src/Database/Migrations/2018_07_05_142820_create_categories_table.php new file mode 100644 index 000000000..7d4f5e200 --- /dev/null +++ b/packages/Webkul/Category/src/Database/Migrations/2018_07_05_142820_create_categories_table.php @@ -0,0 +1,35 @@ +increments('id'); + $table->string('code')->unique(); + $table->integer('position'); + $table->integer('parent_id')->unsigned()->nullable(); + $table->foreign('parent_id')->references('id')->on('categories')->onDelete('cascade'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('categories'); + } +} \ No newline at end of file diff --git a/packages/Webkul/User/src/Database/migrations/2018_06_28_131304_foo.php b/packages/Webkul/Category/src/Database/Migrations/2018_07_05_142836_create_category_name_translations_table.php similarity index 55% rename from packages/Webkul/User/src/Database/migrations/2018_06_28_131304_foo.php rename to packages/Webkul/Category/src/Database/Migrations/2018_07_05_142836_create_category_name_translations_table.php index b1efe1f6d..48c6656a3 100644 --- a/packages/Webkul/User/src/Database/migrations/2018_06_28_131304_foo.php +++ b/packages/Webkul/Category/src/Database/Migrations/2018_07_05_142836_create_category_name_translations_table.php @@ -4,7 +4,7 @@ use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; -class Foo extends Migration +class CreateCategoryNameTranslationTable extends Migration { /** * Run the migrations. @@ -13,7 +13,10 @@ class Foo extends Migration */ public function up() { - // + Schema::create('category_name_translation', function (Blueprint $table) { + $table->increments('id'); + $table->timestamps(); + }); } /** @@ -23,6 +26,6 @@ class Foo extends Migration */ public function down() { - // + Schema::dropIfExists('category_name_translation'); } } diff --git a/packages/Webkul/Category/src/Database/Migrations/2018_07_05_142851_create_category_description_translations_table.php b/packages/Webkul/Category/src/Database/Migrations/2018_07_05_142851_create_category_description_translations_table.php new file mode 100644 index 000000000..521516390 --- /dev/null +++ b/packages/Webkul/Category/src/Database/Migrations/2018_07_05_142851_create_category_description_translations_table.php @@ -0,0 +1,31 @@ +increments('id'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('category_description_translations'); + } +} diff --git a/packages/Webkul/Category/src/Providers/CategoryServiceProvider.php b/packages/Webkul/Category/src/Providers/CategoryServiceProvider.php new file mode 100644 index 000000000..a832e33d8 --- /dev/null +++ b/packages/Webkul/Category/src/Providers/CategoryServiceProvider.php @@ -0,0 +1,30 @@ +loadMigrationsFrom(__DIR__ . '/../Database/Migrations'); + } + + /** + * Register services. + * + * @return void + */ + public function register() + { + + } +} \ No newline at end of file diff --git a/packages/Webkul/Core/.gitignore b/packages/Webkul/Core/.gitignore new file mode 100644 index 000000000..30bc16279 --- /dev/null +++ b/packages/Webkul/Core/.gitignore @@ -0,0 +1 @@ +/node_modules \ No newline at end of file diff --git a/packages/Webkul/Core/composer.json b/packages/Webkul/Core/composer.json new file mode 100644 index 000000000..922b432b9 --- /dev/null +++ b/packages/Webkul/Core/composer.json @@ -0,0 +1,27 @@ +{ + "name": "webkul/laravel-core", + "license": "MIT", + "authors": [ + { + "name": "Jitendra Singh", + "email": "jitendra@webkul.com" + } + ], + "require": { + "propaganistas/laravel-intl": "^2.0" + }, + "autoload": { + "psr-4": { + "Webkul\\Core\\": "src/" + } + }, + "extra": { + "laravel": { + "providers": [ + "Webkul\\Core\\Providers\\CoreServiceProvider" + ], + "aliases": { } + } + }, + "minimum-stability": "dev" +} diff --git a/packages/Webkul/Core/src/Contracts/RepositoryInterface.php b/packages/Webkul/Core/src/Contracts/RepositoryInterface.php new file mode 100644 index 000000000..a1b90aa4f --- /dev/null +++ b/packages/Webkul/Core/src/Contracts/RepositoryInterface.php @@ -0,0 +1,27 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +interface RepositoryInterface { + + public function all($columns = ['*']); + + public function paginate($perPage = 15, $columns = ['*']); + + public function create(array $data); + + public function update(array $data, $id); + + public function delete($id); + + public function find($id, $columns = ['*']); + + public function findBy($field, $value, $columns = ['*']); + +} \ No newline at end of file diff --git a/packages/Webkul/Core/src/Contracts/Validations/Slug.php b/packages/Webkul/Core/src/Contracts/Validations/Slug.php new file mode 100644 index 000000000..f144dbbc0 --- /dev/null +++ b/packages/Webkul/Core/src/Contracts/Validations/Slug.php @@ -0,0 +1,30 @@ +increments('id'); + $table->string('code')->unique(); + $table->string('name'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('locales'); + } +} diff --git a/packages/Webkul/User/src/Database/migrations/.gitkeep b/packages/Webkul/Core/src/Database/Seeders/.gitkeep similarity index 100% rename from packages/Webkul/User/src/Database/migrations/.gitkeep rename to packages/Webkul/Core/src/Database/Seeders/.gitkeep diff --git a/packages/Webkul/Core/src/Database/Seeders/DatabaseSeeder.php b/packages/Webkul/Core/src/Database/Seeders/DatabaseSeeder.php new file mode 100644 index 000000000..eef670023 --- /dev/null +++ b/packages/Webkul/Core/src/Database/Seeders/DatabaseSeeder.php @@ -0,0 +1,18 @@ +call(LocalesTableSeeder::class); + } +} diff --git a/packages/Webkul/Core/src/Database/Seeders/LocalesTableSeeder.php b/packages/Webkul/Core/src/Database/Seeders/LocalesTableSeeder.php new file mode 100644 index 000000000..fa33dcc31 --- /dev/null +++ b/packages/Webkul/Core/src/Database/Seeders/LocalesTableSeeder.php @@ -0,0 +1,17 @@ +code = 'en'; + $locale->name = 'English'; + $locale->save(); + } +} \ No newline at end of file diff --git a/packages/Webkul/Core/src/Eloquent/Repository.php b/packages/Webkul/Core/src/Eloquent/Repository.php new file mode 100644 index 000000000..d3eabc4a2 --- /dev/null +++ b/packages/Webkul/Core/src/Eloquent/Repository.php @@ -0,0 +1,120 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +abstract class Repository implements RepositoryInterface { + + /** + * @var App + */ + private $app; + + /** + * @var \Illuminate\Database\Eloquent\Model + */ + protected $model; + + /** + * @param App $app + * @throws \Webkul\Core\Exceptions\RepositoryException + */ + public function __construct(App $app) { + $this->app = $app; + + $this->makeModel(); + } + + /** + * Specify Model class name + * + * @return mixed + */ + public abstract function model(); + + /** + * @param array $columns + * @return mixed + */ + public function all($columns = ['*']) { + return $this->model->get($columns); + } + + /** + * @param int $perPage + * @param array $columns + * @return mixed + */ + public function paginate($perPage = 1, $columns = ['*']) { + return $this->model->paginate($perPage, $columns); + } + + /** + * @param array $data + * @return mixed + */ + public function create(array $data) { + return $this->model->create($data); + } + + /** + * @param array $data + * @param $id + * @param string $attribute + * @return mixed + */ + public function update(array $data, $id, $attribute="id") { + return $this->model->where($attribute, '=', $id)->update($data); + } + + /** + * @param $id + * @return mixed + */ + public function delete($id) { + return $this->model->destroy($id); + } + + /** + * @param $id + * @param array $columns + * @return mixed + */ + public function find($id, $columns = ['*']) { + return $this->model->find($id, $columns); + } + + /** + * @param $attribute + * @param $value + * @param array $columns + * @return mixed + */ + public function findBy($attribute, $value, $columns = ['*']) { + return $this->model->where($attribute, '=', $value)->first($columns); + } + + /** + * @return \Illuminate\Database\Eloquent\Builder + * @throws RepositoryException + */ + public function makeModel() { + $model = $this->app->make($this->model()); + + if (!$model instanceof Model) + throw new RepositoryException("Class {$this->model()} must be an instance of Illuminate\\Database\\Eloquent\\Model"); + + return $this->model = $model->newQuery(); + } +} \ No newline at end of file diff --git a/packages/Webkul/Core/src/Exceptions/RepositoryException.php b/packages/Webkul/Core/src/Exceptions/RepositoryException.php new file mode 100644 index 000000000..2fce64a6c --- /dev/null +++ b/packages/Webkul/Core/src/Exceptions/RepositoryException.php @@ -0,0 +1,14 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class RepositoryException extends \Exception +{ + +} \ No newline at end of file diff --git a/packages/Webkul/Core/src/Http/Controllers/Controller.php b/packages/Webkul/Core/src/Http/Controllers/Controller.php new file mode 100644 index 000000000..08a7833f3 --- /dev/null +++ b/packages/Webkul/Core/src/Http/Controllers/Controller.php @@ -0,0 +1,13 @@ + + * @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com) + */ +class LocaleController extends Controller +{ + /** + * Contains route related configuration + * + * @var array + */ + protected $_config; + + /** + * Create a new controller instance. + * + * @return void + */ + public function __construct() + { + $this->_config = request('_config'); + } + + /** + * Display a listing of the resource. + * + * @return \Illuminate\Http\Response + */ + public function index() + { + return view($this->_config['view']); + } + + /** + * Show the form for creating a new resource. + * + * @return \Illuminate\Http\Response + */ + public function create() + { + return view($this->_config['view']); + } + + /** + * Store a newly created resource in storage. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\Response + */ + public function store(Request $request) + { + $this->validate(request(), [ + 'code' => 'required|unique:locales,code', + 'name' => 'required' + ]); + + Locale::create(request(['code','name'])); + + session()->flash('success', 'Locale created successfully.'); + + return redirect()->route($this->_config['redirect']); + } + + /** + * Remove the specified resource from storage. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function destroy($id) + { + // + } +} \ No newline at end of file diff --git a/packages/Webkul/Core/src/Models/Locale.php b/packages/Webkul/Core/src/Models/Locale.php new file mode 100644 index 000000000..7d12e4623 --- /dev/null +++ b/packages/Webkul/Core/src/Models/Locale.php @@ -0,0 +1,18 @@ +loadMigrationsFrom(__DIR__ . '/../Database/Migrations'); + + $this->loadTranslationsFrom(__DIR__ . '/../Resources/lang', 'core'); + + $this->publishes([ + __DIR__ . '/../../publishable/lang' => public_path('vendor/webkul/core/lang'), + ], 'public'); + + Validator::extend('slug', 'Webkul\Core\Contracts\Validations\Slug@passes'); + } + + /** + * Register services. + * + * @return void + */ + public function register() + { + } +} \ No newline at end of file diff --git a/packages/Webkul/Core/src/Resources/lang/en/validation.php b/packages/Webkul/Core/src/Resources/lang/en/validation.php new file mode 100644 index 000000000..12efc8886 --- /dev/null +++ b/packages/Webkul/Core/src/Resources/lang/en/validation.php @@ -0,0 +1,5 @@ + 'The :attribute must be valid slug.' +]; \ No newline at end of file diff --git a/packages/Webkul/Ui/src/Menu.php b/packages/Webkul/Ui/src/Menu.php index dbd109bdc..9370f168e 100644 --- a/packages/Webkul/Ui/src/Menu.php +++ b/packages/Webkul/Ui/src/Menu.php @@ -36,16 +36,18 @@ class Menu { * * @param string $key Dot seperated heirarchy * @param string $name Text for the anchor - * @param string $url URL for the anchor + * @param string $route Route for the menu * @param integer $sort Sorting index for the items * @param string $iconClass Icon Class name */ - public function add($key, $name, $url, $sort = 0, $iconClass = null) + public function add($key, $name, $route, $sort = 0, $iconClass = null) { + $url = route($route); $item = [ 'key' => $key, 'name' => $name, 'url' => $url, + 'route' => $route, 'sort' => $sort, 'icon-class' => $iconClass, 'children' => [] @@ -65,6 +67,9 @@ class Menu { * @return void */ public function sortItems($items) { + if(!$items) { + return; + } usort($items, function($a, $b) { if ($a['sort'] == $b['sort']) { return 0; diff --git a/packages/Webkul/Ui/src/Resources/assets/images/Angle-Down-Light.svg b/packages/Webkul/Ui/src/Resources/assets/images/Angle-Down-Light.svg new file mode 100644 index 000000000..7b38bfe7f --- /dev/null +++ b/packages/Webkul/Ui/src/Resources/assets/images/Angle-Down-Light.svg @@ -0,0 +1,12 @@ + + + + Expand-Light-On + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/src/Resources/assets/images/Angle-Right.svg b/packages/Webkul/Ui/src/Resources/assets/images/Angle-Right.svg deleted file mode 100644 index 52fbccde3..000000000 --- a/packages/Webkul/Ui/src/Resources/assets/images/Angle-Right.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - Angle-Right - Created with Sketch. - - - - - \ No newline at end of file diff --git a/packages/Webkul/Ui/src/Resources/assets/images/Arrow-Down-Light.png b/packages/Webkul/Ui/src/Resources/assets/images/Arrow-Down-Light.png deleted file mode 100644 index 5070f117d..000000000 Binary files a/packages/Webkul/Ui/src/Resources/assets/images/Arrow-Down-Light.png and /dev/null differ diff --git a/packages/Webkul/Ui/src/Resources/assets/images/Arrow-Right.svg b/packages/Webkul/Ui/src/Resources/assets/images/Arrow-Right.svg new file mode 100644 index 000000000..745e57d6e --- /dev/null +++ b/packages/Webkul/Ui/src/Resources/assets/images/Arrow-Right.svg @@ -0,0 +1,12 @@ + + + + Expand-Light + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/src/Resources/assets/images/Checkbox-Checked.svg b/packages/Webkul/Ui/src/Resources/assets/images/Checkbox-Checked.svg new file mode 100644 index 000000000..914ad34cd --- /dev/null +++ b/packages/Webkul/Ui/src/Resources/assets/images/Checkbox-Checked.svg @@ -0,0 +1,13 @@ + + + + Checkbox-Checked + Created with Sketch. + + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/src/Resources/assets/images/Checkbox.svg b/packages/Webkul/Ui/src/Resources/assets/images/Checkbox.svg new file mode 100644 index 000000000..a096458fa --- /dev/null +++ b/packages/Webkul/Ui/src/Resources/assets/images/Checkbox.svg @@ -0,0 +1,10 @@ + + + + Checkbox + Created with Sketch. + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/src/Resources/assets/images/Expand-Light-On.svg b/packages/Webkul/Ui/src/Resources/assets/images/Expand-Light-On.svg new file mode 100644 index 000000000..7b38bfe7f --- /dev/null +++ b/packages/Webkul/Ui/src/Resources/assets/images/Expand-Light-On.svg @@ -0,0 +1,12 @@ + + + + Expand-Light-On + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/src/Resources/assets/images/Expand-Light.svg b/packages/Webkul/Ui/src/Resources/assets/images/Expand-Light.svg new file mode 100644 index 000000000..745e57d6e --- /dev/null +++ b/packages/Webkul/Ui/src/Resources/assets/images/Expand-Light.svg @@ -0,0 +1,12 @@ + + + + Expand-Light + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/src/Resources/assets/images/Icon-Back-Primary.svg b/packages/Webkul/Ui/src/Resources/assets/images/Icon-Back-Primary.svg new file mode 100644 index 000000000..dffb85643 --- /dev/null +++ b/packages/Webkul/Ui/src/Resources/assets/images/Icon-Back-Primary.svg @@ -0,0 +1,13 @@ + + + + Icon-Back-Primary + Created with Sketch. + + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/src/Resources/assets/images/Icon-Catalog-Active.svg b/packages/Webkul/Ui/src/Resources/assets/images/Icon-Catalog-Active.svg new file mode 100644 index 000000000..ba35b9621 --- /dev/null +++ b/packages/Webkul/Ui/src/Resources/assets/images/Icon-Catalog-Active.svg @@ -0,0 +1,16 @@ + + + + Icon-Catalog-Active + Created with Sketch. + + + + + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/src/Resources/assets/images/Icon-Catalog.svg b/packages/Webkul/Ui/src/Resources/assets/images/Icon-Catalog.svg new file mode 100644 index 000000000..f7453ca83 --- /dev/null +++ b/packages/Webkul/Ui/src/Resources/assets/images/Icon-Catalog.svg @@ -0,0 +1,16 @@ + + + + Icon-Catalog + Created with Sketch. + + + + + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Ui/src/Resources/assets/images/controls.svg b/packages/Webkul/Ui/src/Resources/assets/images/controls.svg deleted file mode 100644 index 53127ff1c..000000000 --- a/packages/Webkul/Ui/src/Resources/assets/images/controls.svg +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/packages/Webkul/Ui/src/Resources/assets/js/app.js b/packages/Webkul/Ui/src/Resources/assets/js/app.js index 7e668ee65..bd5fac594 100644 --- a/packages/Webkul/Ui/src/Resources/assets/js/app.js +++ b/packages/Webkul/Ui/src/Resources/assets/js/app.js @@ -2,4 +2,5 @@ Vue.component('flash-wrapper', require('./components/flash-wrapper')) Vue.component('flash', require('./components/flash')) Vue.component('accordian', require('./components/accordian')) Vue.component('tree-view', require('./components/tree-view/tree-view')) +Vue.component('tree-item', require('./components/tree-view/tree-item')) Vue.component('tree-checkbox', require('./components/tree-view/tree-checkbox')) \ No newline at end of file diff --git a/packages/Webkul/Ui/src/Resources/assets/js/components/accordian.vue b/packages/Webkul/Ui/src/Resources/assets/js/components/accordian.vue index 86cbf81bc..847d463b4 100644 --- a/packages/Webkul/Ui/src/Resources/assets/js/components/accordian.vue +++ b/packages/Webkul/Ui/src/Resources/assets/js/components/accordian.vue @@ -1,5 +1,5 @@