├── .env.example ├── .gitattributes ├── .gitignore ├── app ├── Category.php ├── CategoryProduct.php ├── Console │ ├── Commands │ │ ├── ClearIndex.php │ │ └── EcommerceInstall.php │ └── Kernel.php ├── Coupon.php ├── Exceptions │ └── Handler.php ├── Http │ ├── Controllers │ │ ├── Auth │ │ │ ├── ForgotPasswordController.php │ │ │ ├── LoginController.php │ │ │ ├── RegisterController.php │ │ │ └── ResetPasswordController.php │ │ ├── CartController.php │ │ ├── CheckoutController.php │ │ ├── ConfirmationController.php │ │ ├── Controller.php │ │ ├── CouponsController.php │ │ ├── HomeController.php │ │ ├── LandingPageController.php │ │ ├── OrdersController.php │ │ ├── SaveForLaterController.php │ │ ├── ShopController.php │ │ ├── UsersController.php │ │ └── Voyager │ │ │ ├── OrdersController.php │ │ │ ├── ProductsController.php │ │ │ └── UsersController.php │ ├── Kernel.php │ ├── Middleware │ │ ├── EncryptCookies.php │ │ ├── RedirectIfAuthenticated.php │ │ ├── TrimStrings.php │ │ ├── TrustProxies.php │ │ └── VerifyCsrfToken.php │ └── Requests │ │ └── CheckoutRequest.php ├── Jobs │ └── UpdateCoupon.php ├── Listeners │ └── CartUpdatedListener.php ├── Mail │ └── OrderPlaced.php ├── Order.php ├── OrderProduct.php ├── Product.php ├── Providers │ ├── AppServiceProvider.php │ ├── AuthServiceProvider.php │ ├── BroadcastServiceProvider.php │ ├── EventServiceProvider.php │ └── RouteServiceProvider.php ├── User.php └── helpers.php ├── artisan ├── bootstrap ├── app.php └── cache │ └── .gitignore ├── composer.json ├── composer.lock ├── config ├── app.php ├── auth.php ├── broadcasting.php ├── cache.php ├── cart.php ├── database.php ├── filesystems.php ├── hashing.php ├── hooks.php ├── image.php ├── logging.php ├── mail.php ├── queue.php ├── scout.php ├── services.php ├── session.php ├── view.php ├── voyager-hooks.php └── voyager.php ├── database ├── .gitignore ├── factories │ ├── ProductFactory.php │ └── UserFactory.php ├── migrations │ ├── 2014_10_12_000000_create_users_table.php │ ├── 2014_10_12_100000_create_password_resets_table.php │ ├── 2016_01_01_000000_add_voyager_user_fields.php │ ├── 2016_01_01_000000_create_data_types_table.php │ ├── 2016_01_01_000000_create_pages_table.php │ ├── 2016_01_01_000000_create_posts_table.php │ ├── 2016_02_15_204651_create_categories_table.php │ ├── 2016_05_19_173453_create_menu_table.php │ ├── 2016_10_21_190000_create_roles_table.php │ ├── 2016_10_21_190000_create_settings_table.php │ ├── 2016_11_30_135954_create_permission_table.php │ ├── 2016_11_30_141208_create_permission_role_table.php │ ├── 2016_12_26_201236_data_types__add__server_side.php │ ├── 2017_01_13_000000_add_route_to_menu_items_table.php │ ├── 2017_01_14_005015_create_translations_table.php │ ├── 2017_01_15_000000_add_permission_group_id_to_permissions_table.php │ ├── 2017_01_15_000000_create_permission_groups_table.php │ ├── 2017_01_15_000000_make_table_name_nullable_in_permissions_table.php │ ├── 2017_03_06_000000_add_controller_to_data_types_table.php │ ├── 2017_04_11_000000_alter_post_nullable_fields_table.php │ ├── 2017_04_21_000000_add_order_to_data_rows_table.php │ ├── 2017_07_05_210000_add_policyname_to_data_types_table.php │ ├── 2017_08_05_000000_add_group_to_settings_table.php │ ├── 2017_12_11_054653_create_products_table.php │ ├── 2018_01_11_060124_create_category_table.php │ ├── 2018_01_11_060548_create_category_product_table.php │ ├── 2018_01_14_215535_create_coupons_table.php │ ├── 2018_02_08_021546_add_image_to_products_table.php │ ├── 2018_02_08_032544_add_images_to_products_table.php │ ├── 2018_02_25_005243_create_orders_table.php │ ├── 2018_02_25_010522_create_order_product_table.php │ ├── 2018_04_23_011947_add_user_role_relationship_fix.php │ ├── 2018_04_23_012009_create_user_roles_table_fix.php │ └── 2018_06_29_032914_add_quantity_to_products_table.php └── seeds │ ├── CategoriesTableSeeder.php │ ├── CategoryTableSeeder.php │ ├── CouponsTableSeeder.php │ ├── DataRowsTableSeeder.php │ ├── DataRowsTableSeederCustom.php │ ├── DataTypesTableSeeder.php │ ├── DataTypesTableSeederCustom.php │ ├── DatabaseSeeder.php │ ├── MenuItemsTableSeeder.php │ ├── MenuItemsTableSeederCustom.php │ ├── MenusTableSeeder.php │ ├── MenusTableSeederCustom.php │ ├── OrdersTableSeeder.php │ ├── PagesTableSeeder.php │ ├── PermissionRoleTableSeeder.php │ ├── PermissionRoleTableSeederCustom.php │ ├── PermissionsTableSeeder.php │ ├── PermissionsTableSeederCustom.php │ ├── PostsTableSeeder.php │ ├── ProductsTableSeeder.php │ ├── RolesTableSeeder.php │ ├── RolesTableSeederCustom.php │ ├── SettingsTableSeeder.php │ ├── SettingsTableSeederCustom.php │ ├── TranslationsTableSeeder.php │ ├── UsersTableSeeder.php │ ├── UsersTableSeederCustom.php │ ├── VoyagerDatabaseSeeder.php │ └── VoyagerDummyDatabaseSeeder.php ├── hooks └── hooks.json ├── laravel-ecommerce.sql ├── package-lock.json ├── package.json ├── phpunit.dusk.xml ├── phpunit.xml ├── public ├── .htaccess ├── animate │ └── animate.css ├── animsition │ ├── css │ │ ├── animsition.css │ │ └── animsition.min.css │ └── js │ │ ├── animsition.js │ │ └── animsition.min.js ├── css-hamburgers │ ├── hamburgers.css │ └── hamburgers.min.css ├── css │ ├── algolia.css │ ├── app.css │ ├── laravel-ecommerce.css │ ├── main.css │ ├── responsive.css │ └── util.css ├── favicon.ico ├── fonts │ └── vendor │ │ └── bootstrap-sass │ │ └── bootstrap │ │ ├── glyphicons-halflings-regular.eot │ │ ├── glyphicons-halflings-regular.svg │ │ ├── glyphicons-halflings-regular.ttf │ │ ├── glyphicons-halflings-regular.woff │ │ └── glyphicons-halflings-regular.woff2 ├── img │ ├── blog1.png │ ├── blog2.png │ ├── blog3.png │ ├── macbook-pro-laravel.png │ ├── macbook-pro.png │ ├── not-found.jpg │ ├── pages │ │ └── page1.jpg │ ├── posts │ │ ├── post1.jpg │ │ ├── post2.jpg │ │ ├── post3.jpg │ │ └── post4.jpg │ ├── settings │ │ └── February2018 │ │ │ └── tflOIzBDs3uXsQedWoGo.jpg │ ├── triangles.svg │ └── users │ │ └── default.png ├── index.php ├── jquery │ └── jquery-3.2.1.min.js ├── js │ ├── algolia-instantsearch.js │ ├── algolia.js │ ├── app.js │ ├── main.js │ └── slick-custom.js ├── mix-manifest.json ├── robots.txt ├── select2 │ ├── select2.css │ ├── select2.js │ ├── select2.min.css │ └── select2.min.js ├── slick │ ├── ajax-loader.gif │ ├── config.rb │ ├── fonts │ │ ├── slick.eot │ │ ├── slick.svg │ │ ├── slick.ttf │ │ └── slick.woff │ ├── slick-theme.css │ ├── slick-theme.less │ ├── slick-theme.scss │ ├── slick.css │ ├── slick.js │ ├── slick.less │ ├── slick.min.js │ └── slick.scss ├── svg │ ├── 403.svg │ ├── 404.svg │ ├── 500.svg │ └── 503.svg └── vendor │ └── tcg │ └── voyager │ └── assets │ ├── css │ └── app.css │ ├── fonts │ ├── bootstrap │ │ ├── glyphicons-halflings-regular.eot │ │ ├── glyphicons-halflings-regular.svg │ │ ├── glyphicons-halflings-regular.ttf │ │ ├── glyphicons-halflings-regular.woff │ │ └── glyphicons-halflings-regular.woff2 │ ├── icons-reference.html │ ├── voyager.eot │ ├── voyager.svg │ ├── voyager.ttf │ └── voyager.woff │ ├── images │ ├── bg.jpg │ ├── captain-avatar.png │ ├── compass │ │ ├── documentation.jpg │ │ ├── hooks.jpg │ │ └── voyager-home.jpg │ ├── helm.svg │ ├── large-logo-icon-light.png │ ├── large-logo-icon.png │ ├── logo-icon-light.png │ ├── logo-icon.png │ ├── voyager-character.png │ ├── voyager-character.sketch │ └── widget-backgrounds │ │ ├── 01.jpg │ │ ├── 02.jpg │ │ └── 03.jpg │ └── js │ ├── app.js │ ├── plugins │ ├── advlist │ │ └── plugin.min.js │ ├── anchor │ │ └── plugin.min.js │ ├── autolink │ │ └── plugin.min.js │ ├── autoresize │ │ └── plugin.min.js │ ├── autosave │ │ └── plugin.min.js │ ├── bbcode │ │ └── plugin.min.js │ ├── charmap │ │ └── plugin.min.js │ ├── code │ │ └── plugin.js │ ├── codesample │ │ ├── css │ │ │ └── prism.css │ │ └── plugin.min.js │ ├── colorpicker │ │ └── plugin.min.js │ ├── contextmenu │ │ └── plugin.min.js │ ├── directionality │ │ └── plugin.min.js │ ├── emoticons │ │ ├── img │ │ │ ├── smiley-cool.gif │ │ │ ├── smiley-cry.gif │ │ │ ├── smiley-embarassed.gif │ │ │ ├── smiley-foot-in-mouth.gif │ │ │ ├── smiley-frown.gif │ │ │ ├── smiley-innocent.gif │ │ │ ├── smiley-kiss.gif │ │ │ ├── smiley-laughing.gif │ │ │ ├── smiley-money-mouth.gif │ │ │ ├── smiley-sealed.gif │ │ │ ├── smiley-smile.gif │ │ │ ├── smiley-surprised.gif │ │ │ ├── smiley-tongue-out.gif │ │ │ ├── smiley-undecided.gif │ │ │ ├── smiley-wink.gif │ │ │ └── smiley-yell.gif │ │ └── plugin.min.js │ ├── example │ │ ├── dialog.html │ │ └── plugin.min.js │ ├── example_dependency │ │ └── plugin.min.js │ ├── fullpage │ │ └── plugin.min.js │ ├── fullscreen │ │ └── plugin.min.js │ ├── giphy │ │ ├── html │ │ │ ├── css │ │ │ │ └── giphyPopup.css │ │ │ ├── giphy.html │ │ │ ├── img │ │ │ │ ├── clear.gif │ │ │ │ ├── giphy_icon_128.png │ │ │ │ ├── giphy_icon_16.png │ │ │ │ ├── giphy_icon_19.png │ │ │ │ ├── giphy_icon_38.png │ │ │ │ ├── giphy_icon_48.png │ │ │ │ ├── giphy_logo_laser.gif │ │ │ │ ├── giphy_logo_txt.png │ │ │ │ ├── icon_add.png │ │ │ │ ├── icon_back.png │ │ │ │ ├── icon_categories.png │ │ │ │ ├── icon_email.png │ │ │ │ ├── icon_facebook.png │ │ │ │ ├── icon_heart_red.png │ │ │ │ ├── icon_heart_white.png │ │ │ │ ├── icon_link_white.png │ │ │ │ ├── icon_menu.png │ │ │ │ ├── icon_reactions.png │ │ │ │ ├── icon_search.png │ │ │ │ ├── icon_sms.png │ │ │ │ ├── icon_twitter.png │ │ │ │ └── loader_purple.gif │ │ │ └── js │ │ │ │ ├── GiphySearch.js │ │ │ │ ├── giphy_cms_ext.js │ │ │ │ ├── imagesloaded.pkgd.min.js │ │ │ │ ├── init.js │ │ │ │ ├── jquery.xdomainrequest.min.js │ │ │ │ ├── masonry.pkgd.min.js │ │ │ │ └── newT.js │ │ ├── img │ │ │ ├── clear.gif │ │ │ ├── giphyicon20px.png │ │ │ └── giphyiconoff20px.png │ │ └── plugin.js │ ├── hr │ │ └── plugin.min.js │ ├── image │ │ └── plugin.js │ ├── imagetools │ │ └── plugin.min.js │ ├── importcss │ │ └── plugin.min.js │ ├── insertdatetime │ │ └── plugin.min.js │ ├── layer │ │ └── plugin.min.js │ ├── legacyoutput │ │ └── plugin.min.js │ ├── link │ │ └── plugin.js │ ├── lists │ │ ├── index.js │ │ ├── plugin.js │ │ └── plugin.min.js │ ├── media │ │ ├── moxieplayer.swf │ │ └── plugin.min.js │ ├── nonbreaking │ │ └── plugin.min.js │ ├── noneditable │ │ └── plugin.min.js │ ├── pagebreak │ │ └── plugin.min.js │ ├── paste │ │ └── plugin.min.js │ ├── preview │ │ └── plugin.min.js │ ├── print │ │ └── plugin.min.js │ ├── save │ │ └── plugin.min.js │ ├── searchreplace │ │ └── plugin.min.js │ ├── spellchecker │ │ └── plugin.min.js │ ├── tabfocus │ │ └── plugin.min.js │ ├── table │ │ └── plugin.js │ ├── template │ │ └── plugin.min.js │ ├── textcolor │ │ └── plugin.js │ ├── textpattern │ │ └── plugin.min.js │ ├── toc │ │ └── plugin.min.js │ ├── visualblocks │ │ ├── css │ │ │ └── visualblocks.css │ │ └── plugin.min.js │ ├── visualchars │ │ └── plugin.min.js │ ├── wordcount │ │ └── plugin.min.js │ └── youtube │ │ ├── css │ │ ├── bootstrap-theme.min.css │ │ ├── bootstrap.min.css │ │ └── style.css │ │ ├── fonts │ │ ├── glyphicons-halflings-regular.eot │ │ ├── glyphicons-halflings-regular.svg │ │ ├── glyphicons-halflings-regular.ttf │ │ └── glyphicons-halflings-regular.woff │ │ ├── icon.png │ │ ├── js │ │ ├── bootstrap.js │ │ ├── bootstrap.min.js │ │ ├── jQuery.jQTubeUtil.js │ │ ├── jquery.js │ │ ├── jquery.yt_data_v3.js │ │ ├── modernizr.js │ │ ├── mustache.js │ │ └── youtube.js │ │ ├── langs │ │ ├── de.js │ │ ├── en.js │ │ └── nl.js │ │ ├── plugin.js │ │ ├── preview.jpg │ │ ├── slider │ │ ├── css │ │ │ ├── slide.png │ │ │ └── slider.css │ │ ├── js │ │ │ └── bootstrap-slider.js │ │ └── less │ │ │ └── slider.less │ │ ├── template │ │ └── forms.html │ │ └── youtube.html │ ├── skins │ ├── lightgray │ │ ├── content.inline.min.css │ │ ├── content.min.css │ │ ├── fonts │ │ │ ├── tinymce-small.eot │ │ │ ├── tinymce-small.svg │ │ │ ├── tinymce-small.ttf │ │ │ ├── tinymce-small.woff │ │ │ ├── tinymce.eot │ │ │ ├── tinymce.svg │ │ │ ├── tinymce.ttf │ │ │ └── tinymce.woff │ │ ├── img │ │ │ ├── anchor.gif │ │ │ ├── loader.gif │ │ │ ├── object.gif │ │ │ └── trans.gif │ │ ├── skin.ie7.min.css │ │ └── skin.min.css │ └── voyager │ │ ├── Variables.less │ │ ├── content.inline.min.css │ │ ├── content.min.css │ │ ├── fonts │ │ ├── readme.md │ │ ├── tinymce-small.eot │ │ ├── tinymce-small.json │ │ ├── tinymce-small.svg │ │ ├── tinymce-small.ttf │ │ ├── tinymce-small.woff │ │ ├── tinymce.eot │ │ ├── tinymce.json │ │ ├── tinymce.svg │ │ ├── tinymce.ttf │ │ └── tinymce.woff │ │ ├── img │ │ ├── anchor.gif │ │ ├── loader.gif │ │ ├── object.gif │ │ └── trans.gif │ │ ├── skin.ie7.min.css │ │ ├── skin.json │ │ └── skin.min.css │ └── themes │ └── modern │ └── theme.js ├── readme.md ├── resources ├── js │ ├── app.js │ ├── bootstrap.js │ └── components │ │ ├── BlogImage.vue │ │ ├── BlogPosts.vue │ │ └── Example.vue ├── lang │ ├── al │ │ └── voyager.php │ ├── ar │ │ └── voyager.php │ ├── cz │ │ └── voyager.php │ ├── de │ │ └── voyager.php │ ├── en │ │ ├── auth.php │ │ ├── pagination.php │ │ ├── passwords.php │ │ ├── validation.php │ │ └── voyager.php │ ├── es │ │ └── voyager.php │ ├── fr │ │ └── voyager.php │ ├── gl │ │ └── voyager.php │ ├── id │ │ └── voyager.php │ ├── it │ │ └── voyager.php │ ├── pt │ │ └── voyager.php │ ├── pt_br │ │ └── voyager.php │ ├── ro │ │ └── voyager.php │ ├── ru │ │ └── voyager.php │ ├── tr │ │ └── voyager.php │ ├── uk │ │ └── voyager.php │ └── zh_CN │ │ └── voyager.php ├── sass │ ├── abstracts │ │ └── _variables.scss │ ├── app.scss │ ├── base │ │ ├── _base.scss │ │ ├── _helpers.scss │ │ ├── _reset.scss │ │ ├── _typography.scss │ │ └── _utility.scss │ ├── components │ │ ├── _alerts.scss │ │ ├── _badge.scss │ │ ├── _breadcrumbs.scss │ │ ├── _buttons.scss │ │ ├── _form.scss │ │ ├── _might-like.scss │ │ ├── _pagination.scss │ │ ├── _search.scss │ │ ├── _section-description.scss │ │ ├── _sidebar.scss │ │ └── _tables.scss │ ├── layout │ │ ├── _footer.scss │ │ └── _header.scss │ ├── pages │ │ ├── auth.scss │ │ ├── cart.scss │ │ ├── checkout.scss │ │ ├── landing-page.scss │ │ ├── my-orders.scss │ │ ├── my-profile.scss │ │ ├── product.scss │ │ ├── search-results-algolia.scss │ │ ├── search-results.scss │ │ ├── shop.scss │ │ └── thankyou.scss │ └── responsive.scss └── views │ ├── auth │ ├── login.blade.php │ ├── passwords │ │ ├── email.blade.php │ │ └── reset.blade.php │ └── register.blade.php │ ├── best-seller.blade.php │ ├── cart.blade.php │ ├── checkout.blade.php │ ├── components │ └── breadcrumbs.blade.php │ ├── emails │ └── orders │ │ └── placed.blade.php │ ├── home.blade.php │ ├── landing-page.blade.php │ ├── layout.blade.php │ ├── layouts │ └── app.blade.php │ ├── my-order.blade.php │ ├── my-orders.blade.php │ ├── my-profile.blade.php │ ├── notfound.blade.php │ ├── partials │ ├── footer.blade.php │ ├── menus │ │ ├── footer.blade.php │ │ ├── main-right.blade.php │ │ └── main.blade.php │ ├── might-like.blade.php │ ├── nav.blade.php │ └── search.blade.php │ ├── product.blade.php │ ├── search-results-algolia.blade.php │ ├── search-results.blade.php │ ├── shop.blade.php │ ├── thankyou.blade.php │ ├── top-pick-for-u.blade.php │ └── vendor │ ├── mail │ ├── html │ │ ├── button.blade.php │ │ ├── footer.blade.php │ │ ├── header.blade.php │ │ ├── layout.blade.php │ │ ├── message.blade.php │ │ ├── panel.blade.php │ │ ├── promotion.blade.php │ │ ├── promotion │ │ │ └── button.blade.php │ │ ├── subcopy.blade.php │ │ ├── table.blade.php │ │ └── themes │ │ │ └── default.css │ └── markdown │ │ ├── button.blade.php │ │ ├── footer.blade.php │ │ ├── header.blade.php │ │ ├── layout.blade.php │ │ ├── message.blade.php │ │ ├── panel.blade.php │ │ ├── promotion.blade.php │ │ ├── promotion │ │ └── button.blade.php │ │ ├── subcopy.blade.php │ │ └── table.blade.php │ └── voyager │ ├── login.blade.php │ ├── orders │ ├── browse.blade.php │ └── read.blade.php │ └── products │ ├── browse.blade.php │ └── edit-add.blade.php ├── routes ├── api.php ├── channels.php ├── console.php └── web.php ├── server.php ├── storage ├── app │ ├── .gitignore │ └── public │ │ └── .gitignore ├── framework │ ├── .gitignore │ ├── cache │ │ └── .gitignore │ ├── sessions │ │ └── .gitignore │ ├── testing │ │ └── .gitignore │ └── views │ │ └── .gitignore └── logs │ └── .gitignore ├── tests ├── Browser │ ├── LoginTest.php │ ├── Pages │ │ ├── HomePage.php │ │ └── Page.php │ ├── UpdateCartQuantityTest.php │ ├── console │ │ └── .gitignore │ └── screenshots │ │ └── .gitignore ├── CreatesApplication.php ├── DuskTestCase.php ├── Feature │ ├── ViewLandingPageTest.php │ ├── ViewProductTest.php │ └── ViewShopPageTest.php ├── TestCase.php └── Unit │ └── HelpersTest.php ├── webpack.mix.js └── yarn.lock /.env.example: -------------------------------------------------------------------------------- 1 | APP_NAME=Laravel 2 | APP_ENV=local 3 | APP_KEY=base64:jKxYoNbpsPCxANhkhxdyu0DOCCr8EwElUuD8Ynq8FnY= 4 | APP_DEBUG=true 5 | APP_LOG_LEVEL=debug 6 | APP_URL=http://localhost 7 | 8 | DB_CONNECTION=mysql 9 | DB_HOST=127.0.0.1 10 | DB_PORT=3306 11 | DB_DATABASE=laravel-ecommerce 12 | DB_USERNAME=root 13 | DB_PASSWORD= 14 | 15 | BROADCAST_DRIVER=log 16 | CACHE_DRIVER=file 17 | SESSION_DRIVER=file 18 | QUEUE_DRIVER=sync 19 | 20 | REDIS_HOST=127.0.0.1 21 | REDIS_PASSWORD=null 22 | REDIS_PORT=6379 23 | 24 | MAIL_DRIVER=smtp 25 | MAIL_HOST=smtp.mailtrap.io 26 | MAIL_PORT=2525 27 | MAIL_USERNAME=67561d421e501b 28 | MAIL_PASSWORD=4fd9b9968178fc 29 | MAIL_ENCRYPTION=tls 30 | 31 | PUSHER_APP_ID= 32 | PUSHER_APP_KEY= 33 | PUSHER_APP_SECRET= 34 | 35 | STRIPE_KEY=pk_test_lX3r6OMjOU2yzFsNSHq6belT00EY82kZmH 36 | STRIPE_SECRET=sk_test_tn0CTDaIJHUJyAqhsf39cfsC00LNjsqDnb 37 | 38 | ALGOLIA_APP_ID = 0VL3B3SA53 39 | ALGOLIA_SECRET = c6caaa13a3ee6d6a924df1ee74b15bad 40 | 41 | 42 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto 2 | *.css linguist-vendored 3 | *.scss linguist-vendored 4 | *.js linguist-vendored 5 | CHANGELOG.md export-ignore 6 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | /public/hot 3 | /public/storage 4 | /storage/*.key 5 | /vendor 6 | /.idea 7 | /.vagrant 8 | Homestead.json 9 | Homestead.yaml 10 | npm-debug.log 11 | yarn-error.log 12 | .env 13 | .env.dusk.local 14 | -------------------------------------------------------------------------------- /app/Category.php: -------------------------------------------------------------------------------- 1 | belongsToMany('App\Product'); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /app/CategoryProduct.php: -------------------------------------------------------------------------------- 1 | argument('model'); 28 | $model = new $class; 29 | $algolia = \Algolia\AlgoliaSearch\SearchClient::create( 30 | config('scout.algolia.id'), 31 | config('scout.algolia.secret') 32 | ); 33 | $index = $algolia->initIndex($model->searchableAs()); 34 | // Remember this is an asynchronous operation in Algolia 35 | $index->delete(); 36 | $this->info('Index ' . $model->searchableAs() . ' cleared'); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /app/Console/Kernel.php: -------------------------------------------------------------------------------- 1 | command('inspire') 28 | // ->hourly(); 29 | } 30 | 31 | /** 32 | * Register the commands for the application. 33 | * 34 | * @return void 35 | */ 36 | protected function commands() 37 | { 38 | $this->load(__DIR__.'/Commands'); 39 | 40 | require base_path('routes/console.php'); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /app/Coupon.php: -------------------------------------------------------------------------------- 1 | first(); 12 | } 13 | 14 | public function discount($total) 15 | { 16 | if ($this->type == 'fixed') { 17 | return $this->value; 18 | } elseif ($this->type == 'percent') { 19 | return round(($this->percent_off / 100) * $total); 20 | } else { 21 | return 0; 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /app/Exceptions/Handler.php: -------------------------------------------------------------------------------- 1 | middleware('guest'); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /app/Http/Controllers/Auth/ResetPasswordController.php: -------------------------------------------------------------------------------- 1 | middleware('guest'); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /app/Http/Controllers/ConfirmationController.php: -------------------------------------------------------------------------------- 1 | has('success_message')) { 17 | return redirect('/'); 18 | } 19 | 20 | return view('thankyou'); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/Http/Controllers/Controller.php: -------------------------------------------------------------------------------- 1 | coupon_code)->first(); 22 | 23 | if (!$coupon) { 24 | return back()->withErrors('Invalid coupon code. Please try again.'); 25 | } 26 | 27 | dispatch_now(new UpdateCoupon($coupon)); 28 | 29 | return back()->with('success_message', 'Coupon has been applied!'); 30 | } 31 | 32 | 33 | 34 | /** 35 | * Remove the specified resource from storage. 36 | * 37 | * @return \Illuminate\Http\Response 38 | */ 39 | public function destroy() 40 | { 41 | session()->forget('coupon'); 42 | 43 | return back()->with('success_message', 'Coupon has been removed.'); 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /app/Http/Controllers/HomeController.php: -------------------------------------------------------------------------------- 1 | middleware('auth'); 17 | } 18 | 19 | /** 20 | * Show the application dashboard. 21 | * 22 | * @return \Illuminate\Http\Response 23 | */ 24 | public function index() 25 | { 26 | return view('home'); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /app/Http/Controllers/LandingPageController.php: -------------------------------------------------------------------------------- 1 | take(8)->inRandomOrder()->get(); 19 | $products_sa = DB::table('products')->orderBy('id','DESC')->paginate(4); 20 | $best_seller2 = DB::table('products')->orderBy('id','ASC')->paginate(4); 21 | 22 | return view('landing-page')->with([ 23 | 'products' => $products, 24 | 'products_sa' => $products_sa, 25 | 'best_seller2' => $best_seller2, 26 | ]); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /app/Http/Controllers/SaveForLaterController.php: -------------------------------------------------------------------------------- 1 | remove($id); 19 | 20 | return back()->with('success_message', 'Item has been removed!'); 21 | } 22 | 23 | /** 24 | * Switch item from Saved for Later to Cart. 25 | * 26 | * @param int $id 27 | * @return \Illuminate\Http\Response 28 | */ 29 | public function switchToCart($id) 30 | { 31 | $item = Cart::instance('saveForLater')->get($id); 32 | 33 | Cart::instance('saveForLater')->remove($id); 34 | 35 | $duplicates = Cart::instance('default')->search(function ($cartItem, $rowId) use ($id) { 36 | return $rowId === $id; 37 | }); 38 | 39 | if ($duplicates->isNotEmpty()) { 40 | return redirect()->route('cart.index')->with('success_message', 'Item is already in your Cart!'); 41 | } 42 | 43 | Cart::instance('default')->add($item->id, $item->name, 1, $item->price) 44 | ->associate('App\Product'); 45 | 46 | return redirect()->route('cart.index')->with('success_message', 'Item has been moved to Cart!'); 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /app/Http/Middleware/EncryptCookies.php: -------------------------------------------------------------------------------- 1 | check()) { 21 | return redirect('/'); 22 | } 23 | 24 | return $next($request); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /app/Http/Middleware/TrimStrings.php: -------------------------------------------------------------------------------- 1 | user() ? 'required|email' : 'required|email|unique:users'; 27 | 28 | return [ 29 | 'email' => $emailValidation, 30 | 'name' => 'required', 31 | 'address' => 'required', 32 | 'city' => 'required', 33 | 'province' => 'required', 34 | 'postalcode' => 'required', 35 | 'phone' => 'required', 36 | ]; 37 | } 38 | 39 | public function messages() 40 | { 41 | return [ 42 | 'email.unique' => 'You already have an account with this email address. Please login to continue.', 43 | ]; 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /app/Jobs/UpdateCoupon.php: -------------------------------------------------------------------------------- 1 | coupon = $coupon; 27 | } 28 | 29 | /** 30 | * Execute the job. 31 | * 32 | * @return void 33 | */ 34 | public function handle() 35 | { 36 | if (Cart::currentInstance() === 'default') { 37 | session()->put('coupon', [ 38 | 'name' => $this->coupon->code, 39 | 'discount' => $this->coupon->discount(Cart::subtotal()), 40 | ]); 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /app/Listeners/CartUpdatedListener.php: -------------------------------------------------------------------------------- 1 | get('coupon')['name']; 31 | 32 | if ($couponName) { 33 | $coupon = Coupon::where('code', $couponName)->first(); 34 | 35 | dispatch_now(new UpdateCoupon($coupon)); 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /app/Mail/OrderPlaced.php: -------------------------------------------------------------------------------- 1 | order = $order; 25 | } 26 | 27 | /** 28 | * Build the message. 29 | * 30 | * @return $this 31 | */ 32 | public function build() 33 | { 34 | return $this->from('overmidnight12@gmail.com','Admin') 35 | ->to($this->order->billing_email, $this->order->billing_name) 36 | ->bcc('another@another.com') 37 | ->subject('Order for Laravel Ecommerce Example') 38 | ->markdown('emails.orders.placed'); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /app/Order.php: -------------------------------------------------------------------------------- 1 | belongsTo('App\User'); 17 | } 18 | 19 | public function products() 20 | { 21 | return $this->belongsToMany('App\Product')->withPivot('quantity'); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /app/OrderProduct.php: -------------------------------------------------------------------------------- 1 | [ 29 | 'products.name' => 10, 30 | 'products.details' => 5, 31 | 'products.description' => 2, 32 | ], 33 | ]; 34 | 35 | public function categories() 36 | { 37 | return $this->belongsToMany('App\Category'); 38 | } 39 | 40 | 41 | 42 | public function scopeMightAlsoLike($query) 43 | { 44 | return $query->inRandomOrder()->take(4); 45 | } 46 | 47 | /** 48 | * Get the indexable data array for the model. 49 | * 50 | * @return array 51 | */ 52 | public function toSearchableArray() 53 | { 54 | $array = $this->toArray(); 55 | 56 | $extraFields = [ 57 | 'categories' => $this->categories->pluck('name')->toArray(), 58 | ]; 59 | 60 | return array_merge($array, $extraFields); 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /app/Providers/AppServiceProvider.php: -------------------------------------------------------------------------------- 1 | app->environment('local', 'testing')) { 29 | $this->app->register(DuskServiceProvider::class); 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /app/Providers/AuthServiceProvider.php: -------------------------------------------------------------------------------- 1 | 'App\Policies\ModelPolicy', 17 | ]; 18 | 19 | /** 20 | * Register any authentication / authorization services. 21 | * 22 | * @return void 23 | */ 24 | public function boot() 25 | { 26 | $this->registerPolicies(); 27 | 28 | // 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /app/Providers/BroadcastServiceProvider.php: -------------------------------------------------------------------------------- 1 | [ 17 | 'App\Listeners\CartUpdatedListener', 18 | ], 19 | 'cart.updated' => [ 20 | 'App\Listeners\CartUpdatedListener', 21 | ], 22 | 'cart.removed' => [ 23 | 'App\Listeners\CartUpdatedListener', 24 | ], 25 | ]; 26 | 27 | /** 28 | * Register any events for your application. 29 | * 30 | * @return void 31 | */ 32 | public function boot() 33 | { 34 | parent::boot(); 35 | 36 | // 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /app/User.php: -------------------------------------------------------------------------------- 1 | hasMany('App\Order'); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /app/helpers.php: -------------------------------------------------------------------------------- 1 | format('M d, Y'); 10 | } 11 | 12 | function setActiveCategory($category, $output = 'active') 13 | { 14 | return request()->category == $category ? $output : ''; 15 | } 16 | 17 | function productImage($path) 18 | { 19 | return $path && file_exists('storage/'.$path) ? asset('storage/'.$path) : asset('img/not-found.jpg'); 20 | } 21 | 22 | function getNumbers() 23 | { 24 | $tax = config('cart.tax') / 100; 25 | $discount = session()->get('coupon')['discount'] ?? 0; 26 | $code = session()->get('coupon')['name'] ?? null; 27 | $newSubtotal = (Cart::subtotal() - $discount); 28 | if ($newSubtotal < 0) { 29 | $newSubtotal = 0; 30 | } 31 | $newTax = $newSubtotal * $tax; 32 | $newTotal = $newSubtotal * (1 + $tax); 33 | 34 | return collect([ 35 | 'tax' => $tax, 36 | 'discount' => $discount, 37 | 'code' => $code, 38 | 'newSubtotal' => $newSubtotal, 39 | 'newTax' => $newTax, 40 | 'newTotal' => $newTotal, 41 | ]); 42 | } 43 | 44 | function getStockLevel($quantity) 45 | { 46 | if ($quantity > setting('site.stock_threshold', 5)) { 47 | $stockLevel = '
In Stock
'; 48 | } elseif ($quantity <= setting('site.stock_threshold', 5) && $quantity > 0) { 49 | $stockLevel = '
Low Stock
'; 50 | } else { 51 | $stockLevel = '
Not available
'; 52 | } 53 | 54 | return $stockLevel; 55 | } 56 | -------------------------------------------------------------------------------- /bootstrap/cache/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /config/hashing.php: -------------------------------------------------------------------------------- 1 | 'bcrypt', 18 | 19 | ]; 20 | -------------------------------------------------------------------------------- /config/hooks.php: -------------------------------------------------------------------------------- 1 | env('HOOKS_ENABLED', true), 6 | 7 | ]; 8 | -------------------------------------------------------------------------------- /config/image.php: -------------------------------------------------------------------------------- 1 | 'gd' 19 | 20 | ]; 21 | -------------------------------------------------------------------------------- /config/mail.php: -------------------------------------------------------------------------------- 1 | env('MAIL_DRIVER', 'smtp'), 8 | 'host' => env('MAIL_HOST', 'smtp.mailtrap.io'), 9 | 'port' => env('MAIL_PORT', 2525), 10 | 'from' => [ 11 | 'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'), 12 | 'name' => env('MAIL_FROM_NAME', 'thuraaung'), 13 | ], 14 | 'encryption' => env('MAIL_ENCRYPTION', 'tls'), 15 | 'username' => env('MAIL_USERNAME'), 16 | 'password' => env('MAIL_PASSWORD'), 17 | 'sendmail' => '/usr/sbin/sendmail -bs', 18 | 19 | 'markdown' => [ 20 | 'theme' => 'default', 21 | 22 | 'paths' => [ 23 | resource_path('views/vendor/mail'), 24 | ], 25 | ], 26 | 27 | ]; 28 | -------------------------------------------------------------------------------- /config/services.php: -------------------------------------------------------------------------------- 1 | [ 18 | 'domain' => env('MAILGUN_DOMAIN'), 19 | 'secret' => env('MAILGUN_SECRET'), 20 | ], 21 | 22 | 'ses' => [ 23 | 'key' => env('SES_KEY'), 24 | 'secret' => env('SES_SECRET'), 25 | 'region' => 'us-east-1', 26 | ], 27 | 28 | 'sparkpost' => [ 29 | 'secret' => env('SPARKPOST_SECRET'), 30 | ], 31 | 32 | 'stripe' => [ 33 | 'model' => App\User::class, 34 | 'key' => env('STRIPE_KEY'), 35 | 'secret' => env('STRIPE_SECRET'), 36 | ], 37 | 38 | 'braintree' => [ 39 | 'environment' => env('BT_ENVIRONMENT', 'sandbox'), 40 | 'merchantId' => env('BT_MERCHANT_ID'), 41 | 'publicKey' => env('BT_PUBLIC_KEY'), 42 | 'privateKey' => env('BT_PRIVATE_KEY'), 43 | ], 44 | 45 | ]; 46 | -------------------------------------------------------------------------------- /config/view.php: -------------------------------------------------------------------------------- 1 | [ 17 | resource_path('views'), 18 | ], 19 | 20 | /* 21 | |-------------------------------------------------------------------------- 22 | | Compiled View Path 23 | |-------------------------------------------------------------------------- 24 | | 25 | | This option determines where all the compiled Blade templates will be 26 | | stored for your application. Typically, this is within the storage 27 | | directory. However, as usual, you are free to change this value. 28 | | 29 | */ 30 | 31 | 'compiled' => realpath(storage_path('framework/views')), 32 | 33 | ]; 34 | -------------------------------------------------------------------------------- /config/voyager-hooks.php: -------------------------------------------------------------------------------- 1 | env('HOOKS_ENABLED', true), 6 | 7 | 'add-route' => true, 8 | 'add-hook-menu-item' => true, 9 | 'add-hook-permissions' => true, 10 | 'publish-vendor-files' => true, 11 | 12 | ]; 13 | -------------------------------------------------------------------------------- /database/.gitignore: -------------------------------------------------------------------------------- 1 | *.sqlite 2 | -------------------------------------------------------------------------------- /database/factories/ProductFactory.php: -------------------------------------------------------------------------------- 1 | define(App\Product::class, function (Faker $faker) { 6 | return [ 7 | 'name' => $faker->sentence, 8 | 'slug' => $faker->slug, 9 | 'featured' => false, 10 | 'details' => $faker->sentence(8), 11 | 'price' => $faker->numberBetween(1000, 500000), 12 | 'description' => $faker->paragraph, 13 | 'image' => 'products/dummy/laptop-1.jpg', 14 | 'images' => '["products\/dummy\/laptop-2.jpg","products\/dummy\/laptop-3.jpg","products\/dummy\/laptop-4.jpg"]', 15 | 'quantity' => 10, 16 | ]; 17 | }); 18 | -------------------------------------------------------------------------------- /database/factories/UserFactory.php: -------------------------------------------------------------------------------- 1 | define(App\User::class, function (Faker $faker) { 17 | static $password; 18 | 19 | return [ 20 | 'name' => $faker->name, 21 | 'email' => $faker->unique()->safeEmail, 22 | 'password' => $password ?: $password = bcrypt('secret'), 23 | 'remember_token' => str_random(10), 24 | ]; 25 | }); 26 | -------------------------------------------------------------------------------- /database/migrations/2014_10_12_000000_create_users_table.php: -------------------------------------------------------------------------------- 1 | increments('id'); 18 | $table->string('name'); 19 | $table->string('email',191)->unique(); 20 | $table->string('password'); 21 | $table->rememberToken(); 22 | $table->timestamps(); 23 | }); 24 | } 25 | 26 | /** 27 | * Reverse the migrations. 28 | * 29 | * @return void 30 | */ 31 | public function down() 32 | { 33 | Schema::dropIfExists('users'); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /database/migrations/2014_10_12_100000_create_password_resets_table.php: -------------------------------------------------------------------------------- 1 | string('email',191)->index(); 18 | $table->string('token',191); 19 | $table->timestamp('created_at')->nullable(); 20 | }); 21 | } 22 | 23 | /** 24 | * Reverse the migrations. 25 | * 26 | * @return void 27 | */ 28 | public function down() 29 | { 30 | Schema::dropIfExists('password_resets'); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /database/migrations/2016_01_01_000000_add_voyager_user_fields.php: -------------------------------------------------------------------------------- 1 | string('avatar')->nullable()->after('email')->default('users/default.png'); 15 | } 16 | $table->integer('role_id')->nullable()->after('id'); 17 | }); 18 | } 19 | 20 | /** 21 | * Reverse the migrations. 22 | */ 23 | public function down() 24 | { 25 | if (Schema::hasColumn('users', 'avatar')) { 26 | Schema::table('users', function ($table) { 27 | $table->dropColumn('avatar'); 28 | }); 29 | } 30 | if (Schema::hasColumn('users', 'role_id')) { 31 | Schema::table('users', function ($table) { 32 | $table->dropColumn('role_id'); 33 | }); 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /database/migrations/2016_01_01_000000_create_pages_table.php: -------------------------------------------------------------------------------- 1 | increments('id'); 19 | $table->integer('author_id'); 20 | $table->string('title'); 21 | $table->text('excerpt')->nullable(); 22 | $table->text('body')->nullable(); 23 | $table->string('image')->nullable(); 24 | $table->string('slug')->unique(); 25 | $table->text('meta_description')->nullable(); 26 | $table->text('meta_keywords')->nullable(); 27 | $table->enum('status', Page::$statuses)->default(Page::STATUS_INACTIVE); 28 | $table->timestamps(); 29 | }); 30 | } 31 | 32 | /** 33 | * Reverse the migrations. 34 | * 35 | * @return void 36 | */ 37 | public function down() 38 | { 39 | Schema::drop('pages'); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /database/migrations/2016_01_01_000000_create_posts_table.php: -------------------------------------------------------------------------------- 1 | increments('id'); 18 | $table->integer('author_id'); 19 | $table->integer('category_id')->nullable(); 20 | $table->string('title'); 21 | $table->string('seo_title')->nullable(); 22 | $table->text('excerpt'); 23 | $table->text('body'); 24 | $table->string('image')->nullable(); 25 | $table->string('slug')->unique(); 26 | $table->text('meta_description'); 27 | $table->text('meta_keywords'); 28 | $table->enum('status', ['PUBLISHED', 'DRAFT', 'PENDING'])->default('DRAFT'); 29 | $table->boolean('featured')->default(0); 30 | $table->timestamps(); 31 | 32 | //$table->foreign('author_id')->references('id')->on('users'); 33 | }); 34 | } 35 | 36 | /** 37 | * Reverse the migrations. 38 | * 39 | * @return void 40 | */ 41 | public function down() 42 | { 43 | Schema::drop('posts'); 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /database/migrations/2016_02_15_204651_create_categories_table.php: -------------------------------------------------------------------------------- 1 | increments('id'); 18 | $table->integer('parent_id')->unsigned()->nullable()->default(null); 19 | $table->foreign('parent_id')->references('id')->on('categories')->onUpdate('cascade')->onDelete('set null'); 20 | $table->integer('order')->default(1); 21 | $table->string('name'); 22 | $table->string('slug')->unique(); 23 | $table->timestamps(); 24 | }); 25 | } 26 | 27 | /** 28 | * Reverse the migrations. 29 | * 30 | * @return void 31 | */ 32 | public function down() 33 | { 34 | Schema::drop('categories'); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /database/migrations/2016_05_19_173453_create_menu_table.php: -------------------------------------------------------------------------------- 1 | increments('id'); 17 | $table->string('name')->unique(); 18 | $table->timestamps(); 19 | }); 20 | 21 | Schema::create('menu_items', function (Blueprint $table) { 22 | $table->increments('id'); 23 | $table->unsignedInteger('menu_id')->nullable(); 24 | $table->string('title'); 25 | $table->string('url'); 26 | $table->string('target')->default('_self'); 27 | $table->string('icon_class')->nullable(); 28 | $table->string('color')->nullable(); 29 | $table->integer('parent_id')->nullable(); 30 | $table->integer('order'); 31 | $table->timestamps(); 32 | }); 33 | 34 | Schema::table('menu_items', function (Blueprint $table) { 35 | $table->foreign('menu_id')->references('id')->on('menus')->onDelete('cascade'); 36 | }); 37 | } 38 | 39 | /** 40 | * Reverse the migrations. 41 | * 42 | * @return void 43 | */ 44 | public function down() 45 | { 46 | Schema::drop('menu_items'); 47 | Schema::drop('menus'); 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /database/migrations/2016_10_21_190000_create_roles_table.php: -------------------------------------------------------------------------------- 1 | bigIncrements('id'); 18 | $table->string('name')->unique(); 19 | $table->string('display_name'); 20 | $table->timestamps(); 21 | }); 22 | } 23 | 24 | /** 25 | * Reverse the migrations. 26 | * 27 | * @return void 28 | */ 29 | public function down() 30 | { 31 | Schema::drop('roles'); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /database/migrations/2016_10_21_190000_create_settings_table.php: -------------------------------------------------------------------------------- 1 | increments('id'); 18 | $table->string('key')->unique(); 19 | $table->string('display_name'); 20 | $table->text('value'); 21 | $table->text('details')->nullable()->default(null); 22 | $table->string('type'); 23 | $table->integer('order')->default('1'); 24 | }); 25 | } 26 | 27 | /** 28 | * Reverse the migrations. 29 | * 30 | * @return void 31 | */ 32 | public function down() 33 | { 34 | Schema::dropIfExists('settings'); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /database/migrations/2016_11_30_135954_create_permission_table.php: -------------------------------------------------------------------------------- 1 | increments('id'); 18 | $table->string('key')->index(); 19 | $table->string('table_name'); 20 | $table->timestamps(); 21 | }); 22 | } 23 | 24 | /** 25 | * Reverse the migrations. 26 | * 27 | * @return void 28 | */ 29 | public function down() 30 | { 31 | Schema::dropIfExists('permissions'); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /database/migrations/2016_11_30_141208_create_permission_role_table.php: -------------------------------------------------------------------------------- 1 | integer('permission_id')->unsigned()->index(); 18 | $table->foreign('permission_id')->references('id')->on('permissions')->onDelete('cascade'); 19 | $table->bigInteger('role_id')->unsigned()->index(); 20 | $table->foreign('role_id')->references('id')->on('roles')->onDelete('cascade'); 21 | $table->primary(['permission_id', 'role_id']); 22 | }); 23 | } 24 | 25 | /** 26 | * Reverse the migrations. 27 | * 28 | * @return void 29 | */ 30 | public function down() 31 | { 32 | Schema::dropIfExists('permission_role'); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /database/migrations/2016_12_26_201236_data_types__add__server_side.php: -------------------------------------------------------------------------------- 1 | tinyInteger('server_side')->default(0)->after('generate_permissions'); 18 | }); 19 | } 20 | 21 | /** 22 | * Reverse the migrations. 23 | * 24 | * @return void 25 | */ 26 | public function down() 27 | { 28 | Schema::table('data_types', function (Blueprint $table) { 29 | $table->dropColumn('server_side'); 30 | }); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /database/migrations/2017_01_13_000000_add_route_to_menu_items_table.php: -------------------------------------------------------------------------------- 1 | string('route')->nullable()->default(null); 18 | $table->text('parameters')->nullable()->default(null); 19 | }); 20 | } 21 | 22 | /** 23 | * Reverse the migrations. 24 | * 25 | * @return void 26 | */ 27 | public function down() 28 | { 29 | if (Schema::hasColumn('menu_items', 'route')) { 30 | Schema::table('menu_items', function (Blueprint $table) { 31 | $table->dropColumn('route'); 32 | }); 33 | } 34 | 35 | if (Schema::hasColumn('menu_items', 'parameters')) { 36 | Schema::table('menu_items', function (Blueprint $table) { 37 | $table->dropColumn('parameters'); 38 | }); 39 | } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /database/migrations/2017_01_14_005015_create_translations_table.php: -------------------------------------------------------------------------------- 1 | increments('id'); 18 | 19 | $table->string('table_name'); 20 | $table->string('column_name'); 21 | $table->integer('foreign_key')->unsigned(); 22 | $table->string('locale'); 23 | 24 | $table->text('value'); 25 | 26 | $table->unique(['table_name', 'column_name', 'foreign_key', 'locale']); 27 | 28 | $table->timestamps(); 29 | }); 30 | } 31 | 32 | /** 33 | * Reverse the migrations. 34 | * 35 | * @return void 36 | */ 37 | public function down() 38 | { 39 | Schema::dropIfExists('translations'); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /database/migrations/2017_01_15_000000_add_permission_group_id_to_permissions_table.php: -------------------------------------------------------------------------------- 1 | integer('permission_group_id')->unsigned()->nullable()->default(null); 18 | }); 19 | } 20 | 21 | /** 22 | * Reverse the migrations. 23 | * 24 | * @return void 25 | */ 26 | public function down() 27 | { 28 | Schema::table('permissions', function (Blueprint $table) { 29 | $table->dropColumn('permission_group_id'); 30 | }); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /database/migrations/2017_01_15_000000_create_permission_groups_table.php: -------------------------------------------------------------------------------- 1 | increments('id'); 18 | $table->string('name')->unique(); 19 | }); 20 | } 21 | 22 | /** 23 | * Reverse the migrations. 24 | * 25 | * @return void 26 | */ 27 | public function down() 28 | { 29 | Schema::dropIfExists('permission_groups'); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /database/migrations/2017_01_15_000000_make_table_name_nullable_in_permissions_table.php: -------------------------------------------------------------------------------- 1 | string('table_name')->nullable()->default(null)->change(); 18 | }); 19 | } 20 | 21 | /** 22 | * Reverse the migrations. 23 | * 24 | * @return void 25 | */ 26 | public function down() 27 | { 28 | // 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /database/migrations/2017_03_06_000000_add_controller_to_data_types_table.php: -------------------------------------------------------------------------------- 1 | string('controller')->nullable()->after('model_name'); 18 | }); 19 | } 20 | 21 | /** 22 | * Reverse the migrations. 23 | * 24 | * @return void 25 | */ 26 | public function down() 27 | { 28 | Schema::table('data_types', function (Blueprint $table) { 29 | $table->dropColumn('controller'); 30 | }); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /database/migrations/2017_04_11_000000_alter_post_nullable_fields_table.php: -------------------------------------------------------------------------------- 1 | getDatabasePlatform(); 17 | $platform->registerDoctrineTypeMapping('enum', 'string'); 18 | 19 | Schema::table('posts', function (Blueprint $table) { 20 | $table->text('excerpt')->nullable()->change(); 21 | $table->text('meta_description')->nullable()->change(); 22 | $table->text('meta_keywords')->nullable()->change(); 23 | }); 24 | } 25 | 26 | /** 27 | * Reverse the migrations. 28 | * 29 | * @return void 30 | */ 31 | public function down() 32 | { 33 | Schema::table('posts', function (Blueprint $table) { 34 | $table->text('excerpt')->change(); 35 | $table->text('meta_description')->change(); 36 | $table->text('meta_keywords')->change(); 37 | }); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /database/migrations/2017_04_21_000000_add_order_to_data_rows_table.php: -------------------------------------------------------------------------------- 1 | integer('order')->default(1)->after('details'); 18 | }); 19 | } 20 | 21 | /** 22 | * Reverse the migrations. 23 | * 24 | * @return void 25 | */ 26 | public function down() 27 | { 28 | Schema::table('data_rows', function (Blueprint $table) { 29 | $table->dropColumn('order'); 30 | }); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /database/migrations/2017_07_05_210000_add_policyname_to_data_types_table.php: -------------------------------------------------------------------------------- 1 | string('policy_name')->nullable()->after('model_name'); 17 | }); 18 | } 19 | 20 | /** 21 | * Reverse the migrations. 22 | * 23 | * @return void 24 | */ 25 | public function down() 26 | { 27 | Schema::table('data_types', function (Blueprint $table) { 28 | $table->dropColumn('policy_name'); 29 | }); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /database/migrations/2017_08_05_000000_add_group_to_settings_table.php: -------------------------------------------------------------------------------- 1 | string('group')->nullable()->after('order'); 18 | }); 19 | } 20 | 21 | /** 22 | * Reverse the migrations. 23 | * 24 | * @return void 25 | */ 26 | public function down() 27 | { 28 | Schema::table('settings', function (Blueprint $table) { 29 | $table->dropColumn('group'); 30 | }); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /database/migrations/2017_12_11_054653_create_products_table.php: -------------------------------------------------------------------------------- 1 | increments('id'); 18 | $table->string('name')->unique(); 19 | $table->string('slug')->unique(); 20 | $table->string('details')->nullable(); 21 | $table->integer('price'); 22 | $table->text('description'); 23 | $table->boolean('featured')->default(false); 24 | $table->timestamps(); 25 | }); 26 | } 27 | 28 | /** 29 | * Reverse the migrations. 30 | * 31 | * @return void 32 | */ 33 | public function down() 34 | { 35 | Schema::dropIfExists('products'); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /database/migrations/2018_01_11_060124_create_category_table.php: -------------------------------------------------------------------------------- 1 | increments('id'); 18 | $table->string('name')->unique(); 19 | $table->string('slug')->unique(); 20 | $table->timestamps(); 21 | }); 22 | } 23 | 24 | /** 25 | * Reverse the migrations. 26 | * 27 | * @return void 28 | */ 29 | public function down() 30 | { 31 | Schema::dropIfExists('category'); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /database/migrations/2018_01_11_060548_create_category_product_table.php: -------------------------------------------------------------------------------- 1 | increments('id'); 18 | 19 | $table->integer('product_id')->unsigned()->nullable(); 20 | $table->foreign('product_id')->references('id') 21 | ->on('products')->onDelete('cascade'); 22 | 23 | $table->integer('category_id')->unsigned()->nullable(); 24 | $table->foreign('category_id')->references('id') 25 | ->on('category')->onDelete('cascade'); 26 | 27 | $table->timestamps(); 28 | }); 29 | } 30 | 31 | /** 32 | * Reverse the migrations. 33 | * 34 | * @return void 35 | */ 36 | public function down() 37 | { 38 | Schema::dropIfExists('category_product'); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /database/migrations/2018_01_14_215535_create_coupons_table.php: -------------------------------------------------------------------------------- 1 | increments('id'); 18 | $table->string('code')->unique(); 19 | $table->string('type'); 20 | $table->integer('value')->nullable(); 21 | $table->integer('percent_off')->nullable(); 22 | $table->timestamps(); 23 | }); 24 | } 25 | 26 | /** 27 | * Reverse the migrations. 28 | * 29 | * @return void 30 | */ 31 | public function down() 32 | { 33 | Schema::dropIfExists('coupons'); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /database/migrations/2018_02_08_021546_add_image_to_products_table.php: -------------------------------------------------------------------------------- 1 | string('image')->nullable()->after('featured'); 18 | }); 19 | } 20 | 21 | /** 22 | * Reverse the migrations. 23 | * 24 | * @return void 25 | */ 26 | public function down() 27 | { 28 | Schema::table('products', function (Blueprint $table) { 29 | $table->dropColumn('image'); 30 | }); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /database/migrations/2018_02_08_032544_add_images_to_products_table.php: -------------------------------------------------------------------------------- 1 | text('images')->nullable()->after('image'); 18 | }); 19 | } 20 | 21 | /** 22 | * Reverse the migrations. 23 | * 24 | * @return void 25 | */ 26 | public function down() 27 | { 28 | Schema::table('products', function (Blueprint $table) { 29 | $table->dropColumn('images'); 30 | }); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /database/migrations/2018_02_25_010522_create_order_product_table.php: -------------------------------------------------------------------------------- 1 | increments('id'); 18 | $table->integer('order_id')->unsigned()->nullable(); 19 | $table->foreign('order_id')->references('id') 20 | ->on('orders')->onUpdate('cascade')->onDelete('set null'); 21 | 22 | $table->integer('product_id')->unsigned()->nullable(); 23 | $table->foreign('product_id')->references('id') 24 | ->on('products')->onUpdate('cascade')->onDelete('set null'); 25 | 26 | $table->integer('quantity')->unsigned(); 27 | $table->timestamps(); 28 | }); 29 | } 30 | 31 | /** 32 | * Reverse the migrations. 33 | * 34 | * @return void 35 | */ 36 | public function down() 37 | { 38 | Schema::dropIfExists('order_product'); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /database/migrations/2018_04_23_011947_add_user_role_relationship_fix.php: -------------------------------------------------------------------------------- 1 | unsignedInteger('role_id')->change(); 18 | // $table->foreign('role_id')->references('id')->on('roles'); 19 | // }); 20 | } 21 | /** 22 | * Reverse the migrations. 23 | * 24 | * @return void 25 | */ 26 | public function down() 27 | { 28 | // Schema::table('users', function (Blueprint $table) { 29 | // $table->dropForeign(['role_id']); 30 | // $table->integer('role_id')->change(); 31 | // }); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /database/migrations/2018_04_23_012009_create_user_roles_table_fix.php: -------------------------------------------------------------------------------- 1 | integer('user_id')->unsigned()->index(); 18 | // $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade'); 19 | // $table->integer('role_id')->unsigned()->index(); 20 | // $table->foreign('role_id')->references('id')->on('roles')->onDelete('cascade'); 21 | // $table->primary(['user_id', 'role_id']); 22 | // }); 23 | } 24 | /** 25 | * Reverse the migrations. 26 | * 27 | * @return void 28 | */ 29 | public function down() 30 | { 31 | // Schema::dropIfExists('user_roles'); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /database/migrations/2018_06_29_032914_add_quantity_to_products_table.php: -------------------------------------------------------------------------------- 1 | unsignedInteger('quantity')->after('featured')->default(10); 18 | }); 19 | } 20 | 21 | /** 22 | * Reverse the migrations. 23 | * 24 | * @return void 25 | */ 26 | public function down() 27 | { 28 | Schema::table('products', function (Blueprint $table) { 29 | $table->dropColumn('quantity'); 30 | }); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /database/seeds/CategoriesTableSeeder.php: -------------------------------------------------------------------------------- 1 | 'category-1', 17 | ]); 18 | if (!$category->exists) { 19 | $category->fill([ 20 | 'name' => 'Category 1', 21 | ])->save(); 22 | } 23 | 24 | $category = Category::firstOrNew([ 25 | 'slug' => 'category-2', 26 | ]); 27 | if (!$category->exists) { 28 | $category->fill([ 29 | 'name' => 'Category 2', 30 | ])->save(); 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /database/seeds/CategoryTableSeeder.php: -------------------------------------------------------------------------------- 1 | toDateTimeString(); 17 | 18 | Category::insert([ 19 | ['name' => 'Laptops', 'slug' => 'laptops', 'created_at' => $now, 'updated_at' => $now], 20 | ['name' => 'Desktops', 'slug' => 'desktops', 'created_at' => $now, 'updated_at' => $now], 21 | ['name' => 'Mobile Phones', 'slug' => 'mobile-phones', 'created_at' => $now, 'updated_at' => $now], 22 | ['name' => 'Tablets', 'slug' => 'tablets', 'created_at' => $now, 'updated_at' => $now], 23 | ['name' => 'TVs', 'slug' => 'tvs', 'created_at' => $now, 'updated_at' => $now], 24 | ['name' => 'Digital Cameras', 'slug' => 'digital-cameras', 'created_at' => $now, 'updated_at' => $now], 25 | ['name' => 'Appliances', 'slug' => 'appliances', 'created_at' => $now, 'updated_at' => $now], 26 | ]); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /database/seeds/CouponsTableSeeder.php: -------------------------------------------------------------------------------- 1 | 'ABC123', 17 | 'type' => 'fixed', 18 | 'value' => 3000, 19 | ]); 20 | 21 | Coupon::create([ 22 | 'code' => 'DEF456', 23 | 'type' => 'percent', 24 | 'percent_off' => 50, 25 | ]); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /database/seeds/DatabaseSeeder.php: -------------------------------------------------------------------------------- 1 | call(CategoryTableSeeder::class); 15 | $this->call(ProductsTableSeeder::class); 16 | $this->call(CouponsTableSeeder::class); 17 | $this->call(OrdersTableSeeder::class); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /database/seeds/MenusTableSeeder.php: -------------------------------------------------------------------------------- 1 | 'admin', 17 | ]); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /database/seeds/MenusTableSeederCustom.php: -------------------------------------------------------------------------------- 1 | 'main', 17 | ]); 18 | 19 | Menu::firstOrCreate([ 20 | 'name' => 'footer', 21 | ]); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /database/seeds/PermissionRoleTableSeeder.php: -------------------------------------------------------------------------------- 1 | firstOrFail(); 17 | 18 | $permissions = Permission::all(); 19 | 20 | $role->permissions()->sync( 21 | $permissions->pluck('id')->all() 22 | ); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /database/seeds/PermissionRoleTableSeederCustom.php: -------------------------------------------------------------------------------- 1 | firstOrFail(); 17 | 18 | $permissions = Permission::all(); 19 | $permissionsFiltered = $permissions->filter(function ($permission, $key) { 20 | return !in_array($permission->key, [ 21 | 'browse_database', 22 | 'browse_media', 23 | 'browse_compass', 24 | 'delete_menus', 25 | 'delete_pages', 26 | 'browse_roles', 27 | 'read_roles', 28 | 'edit_roles', 29 | 'add_roles', 30 | 'delete_roles', 31 | 'browse_users', 32 | 'edit_users', 33 | 'add_users', 34 | 'delete_users', 35 | 'delete_posts', 36 | 'delete_categories', 37 | 'delete_settings', 38 | 'delete_products', 39 | 'delete_products', 40 | 'delete_coupons', 41 | 'delete_category', 42 | 'delete_category-product', 43 | ]); 44 | }); 45 | 46 | $role->permissions()->sync( 47 | $permissionsFiltered->pluck('id')->all() 48 | ); 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /database/seeds/PermissionsTableSeeder.php: -------------------------------------------------------------------------------- 1 | $key, 24 | 'table_name' => null, 25 | ]); 26 | } 27 | 28 | Permission::generateFor('menus'); 29 | 30 | Permission::generateFor('pages'); 31 | 32 | Permission::generateFor('roles'); 33 | 34 | Permission::generateFor('users'); 35 | 36 | Permission::generateFor('posts'); 37 | 38 | Permission::generateFor('categories'); 39 | 40 | Permission::generateFor('settings'); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /database/seeds/PermissionsTableSeederCustom.php: -------------------------------------------------------------------------------- 1 | 'admin']); 14 | if (!$role->exists) { 15 | $role->fill([ 16 | 'display_name' => 'Administrator', 17 | ])->save(); 18 | } 19 | 20 | $role = Role::firstOrNew(['name' => 'user']); 21 | if (!$role->exists) { 22 | $role->fill([ 23 | 'display_name' => 'Normal User', 24 | ])->save(); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /database/seeds/RolesTableSeederCustom.php: -------------------------------------------------------------------------------- 1 | 'admin']); 14 | if (!$role->exists) { 15 | $role->fill([ 16 | 'display_name' => 'Administrator', 17 | ])->save(); 18 | } 19 | 20 | $role = Role::firstOrNew(['name' => 'user']); 21 | if (!$role->exists) { 22 | $role->fill([ 23 | 'display_name' => 'Normal User', 24 | ])->save(); 25 | } 26 | 27 | $role = Role::firstOrNew(['name' => 'adminweb']); 28 | if (!$role->exists) { 29 | $role->fill([ 30 | 'display_name' => 'Admin Web', 31 | ])->save(); 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /database/seeds/SettingsTableSeederCustom.php: -------------------------------------------------------------------------------- 1 | findSetting('site.stock_threshold'); 14 | if (!$setting->exists) { 15 | $setting->fill([ 16 | 'display_name' => 'Stock Threshold', 17 | 'value' => 5, 18 | 'details' => '', 19 | 'type' => 'text', 20 | 'order' => 6, 21 | 'group' => 'Site', 22 | ])->save(); 23 | } 24 | } 25 | 26 | /** 27 | * [setting description]. 28 | * 29 | * @param [type] $key [description] 30 | * 31 | * @return [type] [description] 32 | */ 33 | protected function findSetting($key) 34 | { 35 | return Setting::firstOrNew(['key' => $key]); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /database/seeds/UsersTableSeeder.php: -------------------------------------------------------------------------------- 1 | firstOrFail(); 18 | 19 | User::create([ 20 | 'name' => 'Admin', 21 | 'email' => 'admin@admin.com', 22 | 'password' => bcrypt(config('voyager.adminPassword')), 23 | 'remember_token' => str_random(60), 24 | 'role_id' => $role->id, 25 | ]); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /database/seeds/UsersTableSeederCustom.php: -------------------------------------------------------------------------------- 1 | firstOrFail(); 17 | 18 | User::create([ 19 | 'name' => 'Admin Web', 20 | 'email' => 'adminweb@adminweb.com', 21 | 'password' => bcrypt('password'), 22 | 'remember_token' => str_random(60), 23 | 'role_id' => $role->id, 24 | ]); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /database/seeds/VoyagerDatabaseSeeder.php: -------------------------------------------------------------------------------- 1 | seed('DataTypesTableSeeder'); 20 | $this->seed('DataRowsTableSeeder'); 21 | $this->seed('MenusTableSeeder'); 22 | $this->seed('MenuItemsTableSeeder'); 23 | $this->seed('RolesTableSeeder'); 24 | $this->seed('PermissionsTableSeeder'); 25 | $this->seed('PermissionRoleTableSeeder'); 26 | $this->seed('SettingsTableSeeder'); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /database/seeds/VoyagerDummyDatabaseSeeder.php: -------------------------------------------------------------------------------- 1 | seed('CategoriesTableSeeder'); 20 | $this->seed('UsersTableSeeder'); 21 | $this->seed('PostsTableSeeder'); 22 | $this->seed('PagesTableSeeder'); 23 | $this->seed('TranslationsTableSeeder'); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /hooks/hooks.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "private": true, 3 | "scripts": { 4 | "dev": "npm run development", 5 | "development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js", 6 | "watch": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js", 7 | "watch-poll": "npm run watch -- --watch-poll", 8 | "hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js", 9 | "prod": "npm run production", 10 | "production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js" 11 | }, 12 | "devDependencies": { 13 | "axios": "^0.19.0", 14 | "bootstrap-sass": "^3.4.1", 15 | "cross-env": "^5.1.3", 16 | "jquery": "^3.4.1", 17 | "laravel-mix": "^4.0.7", 18 | "lodash": "^4.17.13", 19 | "reset-css": "^2.2.1", 20 | "resolve-url-loader": "2.3.1", 21 | "sass": "^1.21.0", 22 | "sass-loader": "7.*", 23 | "vue": "^2.6.10", 24 | "vue-template-compiler": "^2.6.10" 25 | }, 26 | "dependencies": { 27 | "browser-sync": "^2.26.7", 28 | "browser-sync-webpack-plugin": "^1.2.0", 29 | "sanitize-html": "^1.18.2" 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /phpunit.dusk.xml: -------------------------------------------------------------------------------- 1 | 2 | 11 | 12 | 13 | ./tests/Browser 14 | 15 | 16 | 17 | 18 | ./app 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /phpunit.xml: -------------------------------------------------------------------------------- 1 | 2 | 11 | 12 | 13 | ./tests/Feature 14 | 15 | 16 | 17 | ./tests/Unit 18 | 19 | 20 | 21 | 22 | ./app 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /public/.htaccess: -------------------------------------------------------------------------------- 1 | 2 | 3 | Options -MultiViews 4 | 5 | 6 | RewriteEngine On 7 | 8 | # Redirect Trailing Slashes If Not A Folder... 9 | RewriteCond %{REQUEST_FILENAME} !-d 10 | RewriteCond %{REQUEST_URI} (.+)/$ 11 | RewriteRule ^ %1 [L,R=301] 12 | 13 | # Handle Front Controller... 14 | RewriteCond %{REQUEST_FILENAME} !-d 15 | RewriteCond %{REQUEST_FILENAME} !-f 16 | RewriteRule ^ index.php [L] 17 | 18 | # Handle Authorization Header 19 | RewriteCond %{HTTP:Authorization} . 20 | RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] 21 | 22 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/favicon.ico -------------------------------------------------------------------------------- /public/fonts/vendor/bootstrap-sass/bootstrap/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/fonts/vendor/bootstrap-sass/bootstrap/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /public/fonts/vendor/bootstrap-sass/bootstrap/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/fonts/vendor/bootstrap-sass/bootstrap/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /public/fonts/vendor/bootstrap-sass/bootstrap/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/fonts/vendor/bootstrap-sass/bootstrap/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /public/fonts/vendor/bootstrap-sass/bootstrap/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/fonts/vendor/bootstrap-sass/bootstrap/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /public/img/blog1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/img/blog1.png -------------------------------------------------------------------------------- /public/img/blog2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/img/blog2.png -------------------------------------------------------------------------------- /public/img/blog3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/img/blog3.png -------------------------------------------------------------------------------- /public/img/macbook-pro-laravel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/img/macbook-pro-laravel.png -------------------------------------------------------------------------------- /public/img/macbook-pro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/img/macbook-pro.png -------------------------------------------------------------------------------- /public/img/not-found.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/img/not-found.jpg -------------------------------------------------------------------------------- /public/img/pages/page1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/img/pages/page1.jpg -------------------------------------------------------------------------------- /public/img/posts/post1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/img/posts/post1.jpg -------------------------------------------------------------------------------- /public/img/posts/post2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/img/posts/post2.jpg -------------------------------------------------------------------------------- /public/img/posts/post3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/img/posts/post3.jpg -------------------------------------------------------------------------------- /public/img/posts/post4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/img/posts/post4.jpg -------------------------------------------------------------------------------- /public/img/settings/February2018/tflOIzBDs3uXsQedWoGo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/img/settings/February2018/tflOIzBDs3uXsQedWoGo.jpg -------------------------------------------------------------------------------- /public/img/users/default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/img/users/default.png -------------------------------------------------------------------------------- /public/mix-manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "/js/app.js": "/js/app.js", 3 | "/css/app.css": "/css/app.css", 4 | "/css/responsive.css": "/css/responsive.css" 5 | } 6 | -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Disallow: 3 | -------------------------------------------------------------------------------- /public/slick/ajax-loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/slick/ajax-loader.gif -------------------------------------------------------------------------------- /public/slick/config.rb: -------------------------------------------------------------------------------- 1 | css_dir = "." 2 | sass_dir = "." 3 | images_dir = "." 4 | fonts_dir = "fonts" 5 | relative_assets = true 6 | 7 | output_style = :compact 8 | line_comments = false 9 | 10 | preferred_syntax = :scss -------------------------------------------------------------------------------- /public/slick/fonts/slick.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/slick/fonts/slick.eot -------------------------------------------------------------------------------- /public/slick/fonts/slick.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/slick/fonts/slick.ttf -------------------------------------------------------------------------------- /public/slick/fonts/slick.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/slick/fonts/slick.woff -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/fonts/bootstrap/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/fonts/bootstrap/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/fonts/bootstrap/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/fonts/bootstrap/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/fonts/bootstrap/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/fonts/bootstrap/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/fonts/bootstrap/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/fonts/bootstrap/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/fonts/voyager.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/fonts/voyager.eot -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/fonts/voyager.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/fonts/voyager.ttf -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/fonts/voyager.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/fonts/voyager.woff -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/images/bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/images/bg.jpg -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/images/captain-avatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/images/captain-avatar.png -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/images/compass/documentation.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/images/compass/documentation.jpg -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/images/compass/hooks.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/images/compass/hooks.jpg -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/images/compass/voyager-home.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/images/compass/voyager-home.jpg -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/images/large-logo-icon-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/images/large-logo-icon-light.png -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/images/large-logo-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/images/large-logo-icon.png -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/images/logo-icon-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/images/logo-icon-light.png -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/images/logo-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/images/logo-icon.png -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/images/voyager-character.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/images/voyager-character.png -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/images/voyager-character.sketch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/images/voyager-character.sketch -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/images/widget-backgrounds/01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/images/widget-backgrounds/01.jpg -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/images/widget-backgrounds/02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/images/widget-backgrounds/02.jpg -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/images/widget-backgrounds/03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/images/widget-backgrounds/03.jpg -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/plugins/anchor/plugin.min.js: -------------------------------------------------------------------------------- 1 | tinymce.PluginManager.add("anchor",function(e){var t=function(e){return!e.attr("href")&&(e.attr("id")||e.attr("name"))&&!e.firstChild},n=function(e){return function(n){for(var r=0;r'}),e+=""}),e+=""}var r=[["cool","cry","embarassed","foot-in-mouth"],["frown","innocent","kiss","laughing"],["money-mouth","sealed","smile","surprised"],["tongue-out","undecided","wink","yell"]];e.addButton("emoticons",{type:"panelbutton",panel:{role:"application",autohide:!0,html:n,onclick:function(t){var n=e.dom.getParent(t.target,"a");n&&(e.insertContent(''+n.getAttribute('),this.hide())}},tooltip:"Emoticons"})}); -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/plugins/example/dialog.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |

Custom dialog

5 | Input some text: 6 | 7 | 8 | -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/plugins/example/plugin.min.js: -------------------------------------------------------------------------------- 1 | tinymce.PluginManager.add("example",function(e,t){e.addButton("example",{text:"My button",icon:!1,onclick:function(){e.windowManager.open({title:"Example plugin",body:[{type:"textbox",name:"title",label:"Title"}],onsubmit:function(t){e.insertContent("Title: "+t.data.title)}})}}),e.addMenuItem("example",{text:"Example plugin",context:"tools",onclick:function(){e.windowManager.open({title:"TinyMCE site",url:t+"/dialog.html",width:600,height:400,buttons:[{text:"Insert",onclick:function(){var t=e.windowManager.getWindows()[0];e.insertContent(t.getContentWindow().document.getElementById("content").value),t.close()}},{text:"Close",onclick:"close"}]})}})}); -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/plugins/example_dependency/plugin.min.js: -------------------------------------------------------------------------------- 1 | tinymce.PluginManager.add("example_dependency",function(){},["example"]); -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/plugins/giphy/html/img/clear.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/js/plugins/giphy/html/img/clear.gif -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/plugins/giphy/html/img/giphy_icon_128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/js/plugins/giphy/html/img/giphy_icon_128.png -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/plugins/giphy/html/img/giphy_icon_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/js/plugins/giphy/html/img/giphy_icon_16.png -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/plugins/giphy/html/img/giphy_icon_19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/js/plugins/giphy/html/img/giphy_icon_19.png -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/plugins/giphy/html/img/giphy_icon_38.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/js/plugins/giphy/html/img/giphy_icon_38.png -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/plugins/giphy/html/img/giphy_icon_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/js/plugins/giphy/html/img/giphy_icon_48.png -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/plugins/giphy/html/img/giphy_logo_laser.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/js/plugins/giphy/html/img/giphy_logo_laser.gif -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/plugins/giphy/html/img/giphy_logo_txt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/js/plugins/giphy/html/img/giphy_logo_txt.png -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/plugins/giphy/html/img/icon_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/js/plugins/giphy/html/img/icon_add.png -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/plugins/giphy/html/img/icon_back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/js/plugins/giphy/html/img/icon_back.png -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/plugins/giphy/html/img/icon_categories.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/js/plugins/giphy/html/img/icon_categories.png -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/plugins/giphy/html/img/icon_email.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/js/plugins/giphy/html/img/icon_email.png -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/plugins/giphy/html/img/icon_facebook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/js/plugins/giphy/html/img/icon_facebook.png -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/plugins/giphy/html/img/icon_heart_red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/js/plugins/giphy/html/img/icon_heart_red.png -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/plugins/giphy/html/img/icon_heart_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/js/plugins/giphy/html/img/icon_heart_white.png -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/plugins/giphy/html/img/icon_link_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/js/plugins/giphy/html/img/icon_link_white.png -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/plugins/giphy/html/img/icon_menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/js/plugins/giphy/html/img/icon_menu.png -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/plugins/giphy/html/img/icon_reactions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/js/plugins/giphy/html/img/icon_reactions.png -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/plugins/giphy/html/img/icon_search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/js/plugins/giphy/html/img/icon_search.png -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/plugins/giphy/html/img/icon_sms.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/js/plugins/giphy/html/img/icon_sms.png -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/plugins/giphy/html/img/icon_twitter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/js/plugins/giphy/html/img/icon_twitter.png -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/plugins/giphy/html/img/loader_purple.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/js/plugins/giphy/html/img/loader_purple.gif -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/plugins/giphy/html/js/giphy_cms_ext.js: -------------------------------------------------------------------------------- 1 | var GiphyCMSExt = { 2 | init: function() { 3 | jQuery('#gif-inject-cms').html(''); 4 | }, 5 | doTinyMCEEmbed: function() { 6 | 7 | 8 | console.log("doTinyMCEEmbed"); 9 | 10 | var embedId = jQuery('img#gif-detail-gif').attr('data-id'); 11 | var width = jQuery('img#gif-detail-gif').width(); 12 | var height = jQuery('img#gif-detail-gif').height(); 13 | 14 | var gifToEmbed = jQuery('img#gif-detail-gif').attr('src'); 15 | 16 | var uri = ''; 17 | 18 | //parent.tinyMCE.activeEditor.execCommand("mceInsertRawHTML", false, uri); 19 | parent.tinyMCE.activeEditor.execCommand("mceInsertContent", false, uri); 20 | parent.tinyMCE.activeEditor.selection.select(parent.tinyMCE.activeEditor.getBody(), true); // ed is the editor instance 21 | parent.tinyMCE.activeEditor.selection.collapse(false); 22 | parent.tinyMCE.activeEditor.windowManager.close(window); 23 | } 24 | }; -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/plugins/giphy/html/js/init.js: -------------------------------------------------------------------------------- 1 | jQuery(document).ready(function() { 2 | jQuery('#gifs').masonry({ 3 | itemSelector: '#gifs li', 4 | columnWidth: 145, 5 | gutter: 10, 6 | transitionDuration: '0.2s', 7 | isFitWidth: true 8 | }); 9 | 10 | // init giphy 11 | GiphySearch.init(); 12 | 13 | // init the CMS extension app 14 | GiphyCMSExt.init(); 15 | 16 | // start the default search 17 | GiphySearch.search("giphytrending", 100, true); 18 | }); 19 | -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/plugins/giphy/img/clear.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/js/plugins/giphy/img/clear.gif -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/plugins/giphy/img/giphyicon20px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/js/plugins/giphy/img/giphyicon20px.png -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/plugins/giphy/img/giphyiconoff20px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/js/plugins/giphy/img/giphyiconoff20px.png -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/plugins/giphy/plugin.js: -------------------------------------------------------------------------------- 1 | tinymce.PluginManager.add('giphy', function(editor, url) { 2 | // Add a button that opens a window 3 | editor.addButton('giphy', { 4 | title: 'Giphy GIF Search', 5 | icon: true, 6 | image: tinyMCE.baseURL + '/plugins/giphy/html/img/giphy_icon_16.png', 7 | onclick : function(ev) { 8 | var modalw = 480; 9 | var modalh = 548; 10 | 11 | editor.windowManager.open({ 12 | title : "Giphy Search", 13 | file: url + '/html/giphy.html', 14 | width : modalw, 15 | height : modalh, 16 | inline : true, 17 | resizable: true, 18 | scrollbars: true 19 | }, { 20 | plugin_url : url, // Plugin absolute URL 21 | api_key : 'dc6zaTOxFJmzC', // the API key 22 | api_host : 'http://api.giphy.com' // the API host 23 | }); 24 | } 25 | }); 26 | }); -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/plugins/hr/plugin.min.js: -------------------------------------------------------------------------------- 1 | tinymce.PluginManager.add("hr",function(e){e.addCommand("InsertHorizontalRule",function(){e.execCommand("mceInsertContent",!1,"
")}),e.addButton("hr",{icon:"hr",tooltip:"Horizontal line",cmd:"InsertHorizontalRule"}),e.addMenuItem("hr",{icon:"hr",text:"Horizontal line",cmd:"InsertHorizontalRule",context:"insert"})}); -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/plugins/lists/index.js: -------------------------------------------------------------------------------- 1 | // Exports the "lists" plugin for usage with module loaders 2 | // Usage: 3 | // CommonJS: 4 | // require('tinymce/plugins/lists') 5 | // ES2015: 6 | // import 'tinymce/plugins/lists' 7 | require('./plugin.js'); -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/plugins/media/moxieplayer.swf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/js/plugins/media/moxieplayer.swf -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/plugins/nonbreaking/plugin.min.js: -------------------------------------------------------------------------------- 1 | tinymce.PluginManager.add("nonbreaking",function(e){var t=e.getParam("nonbreaking_force_tab");if(e.addCommand("mceNonBreaking",function(){e.insertContent(e.plugins.visualchars&&e.plugins.visualchars.state?' ':" "),e.dom.setAttrib(e.dom.select("span.mce-nbsp"),"data-mce-bogus","1")}),e.addButton("nonbreaking",{title:"Nonbreaking space",cmd:"mceNonBreaking"}),e.addMenuItem("nonbreaking",{text:"Nonbreaking space",cmd:"mceNonBreaking",context:"insert"}),t){var n=+t>1?+t:3;e.on("keydown",function(t){if(9==t.keyCode){if(t.shiftKey)return;t.preventDefault();for(var r=0;r0?a.charAt(r-1):"";if('"'===i)return t;if(">"===i){var o=a.lastIndexOf("<",r);if(o!==-1){var l=a.substring(o,r);if(l.indexOf('contenteditable="false"')!==-1)return t}}return''+e.dom.encode("string"==typeof n[1]?n[1]:n[0])+""}var r=o.length,a=t.content,s=tinymce.trim(i);if("raw"!=t.format){for(;r--;)a=a.replace(o[r],n);t.content=a}}var r,i,o,a="contenteditable";r=" "+tinymce.trim(e.getParam("noneditable_editable_class","mceEditable"))+" ",i=" "+tinymce.trim(e.getParam("noneditable_noneditable_class","mceNonEditable"))+" ";var s=t(r),l=t(i);o=e.getParam("noneditable_regexp"),o&&!o.length&&(o=[o]),e.on("PreInit",function(){o&&e.on("BeforeSetContent",n),e.parser.addAttributeFilter("class",function(e){for(var t,n=e.length;n--;)t=e[n],s(t)?t.attr(a,"true"):l(t)&&t.attr(a,"false")}),e.serializer.addAttributeFilter(a,function(e){for(var t,n=e.length;n--;)t=e[n],(s(t)||l(t))&&(o&&t.attr("data-mce-content")?(t.name="#text",t.type=3,t.raw=!0,t.value=t.attr("data-mce-content")):t.attr(a,null))})})}); 2 | -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/plugins/pagebreak/plugin.min.js: -------------------------------------------------------------------------------- 1 | tinymce.PluginManager.add("pagebreak",function(e){var t="mce-pagebreak",n=e.getParam("pagebreak_separator",""),r=new RegExp(n.replace(/[\?\.\*\[\]\(\)\{\}\+\^\$\:]/g,function(e){return"\\"+e}),"gi"),i='';e.addCommand("mcePageBreak",function(){e.settings.pagebreak_split_block?e.insertContent("

"+i+"

"):e.insertContent(i)}),e.addButton("pagebreak",{title:"Page break",cmd:"mcePageBreak"}),e.addMenuItem("pagebreak",{text:"Page break",icon:"pagebreak",cmd:"mcePageBreak",context:"insert"}),e.on("ResolveName",function(n){"IMG"==n.target.nodeName&&e.dom.hasClass(n.target,t)&&(n.name="pagebreak")}),e.on("click",function(n){n=n.target,"IMG"===n.nodeName&&e.dom.hasClass(n,t)&&e.selection.select(n)}),e.on("BeforeSetContent",function(e){e.content=e.content.replace(r,i)}),e.on("PreInit",function(){e.serializer.addNodeFilter("img",function(t){for(var r,i,o=t.length;o--;)if(r=t[o],i=r.attr("class"),i&&i.indexOf("mce-pagebreak")!==-1){var a=r.parent;if(e.schema.getBlockElements()[a.name]&&e.settings.pagebreak_split_block){a.type=3,a.value=n,a.raw=!0,r.remove();continue}r.type=3,r.value=n,r.raw=!0}})})}); 2 | -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/plugins/preview/plugin.min.js: -------------------------------------------------------------------------------- 1 | tinymce.PluginManager.add("preview",function(e){var t=e.settings,n=!tinymce.Env.ie;e.addCommand("mcePreview",function(){e.windowManager.open({title:"Preview",width:parseInt(e.getParam("plugin_preview_width","650"),10),height:parseInt(e.getParam("plugin_preview_height","500"),10),html:'",buttons:{text:"Close",onclick:function(){this.parent().parent().close()}},onPostRender:function(){var r,i="";i+='',tinymce.each(e.contentCSS,function(t){i+=''});var o=t.body_id||"tinymce";o.indexOf("=")!=-1&&(o=e.getParam("body_id","","hash"),o=o[e.id]||o);var a=t.body_class||"";a.indexOf("=")!=-1&&(a=e.getParam("body_class","","hash"),a=a[e.id]||"");var s=' ',l=e.settings.directionality?' dir="'+e.settings.directionality+'"':"";if(r=""+i+'"+e.getContent()+s+"",n)this.getEl("body").firstChild.src="data:text/html;charset=utf-8,"+encodeURIComponent(r);else{var c=this.getEl("body").firstChild.contentWindow.document;c.open(),c.write(r),c.close()}}})}),e.addButton("preview",{title:"Preview",cmd:"mcePreview"}),e.addMenuItem("preview",{text:"Preview",cmd:"mcePreview",context:"view"})}); 2 | -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/plugins/print/plugin.min.js: -------------------------------------------------------------------------------- 1 | tinymce.PluginManager.add("print",function(e){e.addCommand("mcePrint",function(){e.getWin().print()}),e.addButton("print",{title:"Print",cmd:"mcePrint"}),e.addShortcut("Meta+P","","mcePrint"),e.addMenuItem("print",{text:"Print",cmd:"mcePrint",icon:"print",shortcut:"Meta+P",context:"file"})}); -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/plugins/save/plugin.min.js: -------------------------------------------------------------------------------- 1 | tinymce.PluginManager.add("save",function(e){function t(){var t;if(t=tinymce.DOM.getParent(e.id,"form"),!e.getParam("save_enablewhendirty",!0)||e.isDirty())return tinymce.triggerSave(),e.getParam("save_onsavecallback")?(e.execCallback("save_onsavecallback",e),void e.nodeChanged()):void(t?(e.setDirty(!1),t.onsubmit&&!t.onsubmit()||("function"==typeof t.submit?t.submit():n(e.translate("Error: Form submit field collision."))),e.nodeChanged()):n(e.translate("Error: No form element found.")))}function n(t){e.notificationManager.open({text:t,type:"error"})}function r(){var t=tinymce.trim(e.startContent);return e.getParam("save_oncancelcallback")?void e.execCallback("save_oncancelcallback",e):(e.setContent(t),e.undoManager.clear(),void e.nodeChanged())}function i(){var t=this;e.on("nodeChange dirty",function(){t.disabled(e.getParam("save_enablewhendirty",!0)&&!e.isDirty())})}e.addCommand("mceSave",t),e.addCommand("mceCancel",r),e.addButton("save",{icon:"save",text:"Save",cmd:"mceSave",disabled:!0,onPostRender:i}),e.addButton("cancel",{text:"Cancel",icon:!1,cmd:"mceCancel",disabled:!0,onPostRender:i}),e.addShortcut("Meta+S","","mceSave")}); 2 | -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/plugins/tabfocus/plugin.min.js: -------------------------------------------------------------------------------- 1 | tinymce.PluginManager.add("tabfocus",function(e){function t(e){9!==e.keyCode||e.ctrlKey||e.altKey||e.metaKey||e.preventDefault()}function n(t){function n(n){function o(e){return"BODY"===e.nodeName||"hidden"!=e.type&&"none"!=e.style.display&&"hidden"!=e.style.visibility&&o(e.parentNode)}function l(e){return/INPUT|TEXTAREA|BUTTON/.test(e.tagName)&&tinymce.get(t.id)&&e.tabIndex!=-1&&o(e)}if(s=r.select(":input:enabled,*[tabindex]:not(iframe)"),i(s,function(t,n){if(t.id==e.id)return a=n,!1}),n>0){for(c=a+1;c=0;c--)if(l(s[c]))return s[c];return null}var a,s,l,c;if(!(9!==t.keyCode||t.ctrlKey||t.altKey||t.metaKey||t.isDefaultPrevented())&&(l=o(e.getParam("tab_focus",e.getParam("tabfocus_elements",":prev,:next"))),1==l.length&&(l[1]=l[0],l[0]=":prev"),s=t.shiftKey?":prev"==l[0]?n(-1):r.get(l[0]):":next"==l[1]?n(1):r.get(l[1]))){var u=tinymce.get(s.id||s.name);s.id&&u?u.focus():tinymce.util.Delay.setTimeout(function(){tinymce.Env.webkit||window.focus(),s.focus()},10),t.preventDefault()}}var r=tinymce.DOM,i=tinymce.each,o=tinymce.explode;e.on("init",function(){e.inline&&tinymce.DOM.setAttrib(e.getBody(),"tabIndex",null),e.on("keyup",t),tinymce.Env.gecko?e.on("keypress keydown",n):e.on("keydown",n)})}); 2 | -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/plugins/visualblocks/plugin.min.js: -------------------------------------------------------------------------------- 1 | tinymce.PluginManager.add("visualblocks",function(e,t){function n(){var t=this;t.active(o),e.on("VisualBlocks",function(){t.active(e.dom.hasClass(e.getBody(),"mce-visualblocks"))})}var r,i,o;window.NodeList&&(e.addCommand("mceVisualBlocks",function(){var n,a=e.dom;r||(r=a.uniqueId(),n=a.create("link",{id:r,rel:"stylesheet",href:t+"/css/visualblocks.css"}),e.getDoc().getElementsByTagName("head")[0].appendChild(n)),e.on("PreviewFormats AfterPreviewFormats",function(t){o&&a.toggleClass(e.getBody(),"mce-visualblocks","afterpreviewformats"==t.type)}),a.toggleClass(e.getBody(),"mce-visualblocks"),o=e.dom.hasClass(e.getBody(),"mce-visualblocks"),i&&i.active(a.hasClass(e.getBody(),"mce-visualblocks")),e.fire("VisualBlocks")}),e.addButton("visualblocks",{title:"Show blocks",cmd:"mceVisualBlocks",onPostRender:n}),e.addMenuItem("visualblocks",{text:"Show blocks",cmd:"mceVisualBlocks",onPostRender:n,selectable:!0,context:"view",prependToContext:!0}),e.on("init",function(){e.settings.visualblocks_default_state&&e.execCommand("mceVisualBlocks",!1,null,{skip_focus:!0})}),e.on("remove",function(){e.dom.removeClass(e.getBody(),"mce-visualblocks")}))}); -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/plugins/visualchars/plugin.min.js: -------------------------------------------------------------------------------- 1 | tinymce.PluginManager.add("visualchars",function(e){function t(t){function n(e){return''+e+""}function o(){var e,t="";for(e in p)t+=e;return new RegExp("["+t+"]","g")}function a(){var e,t="";for(e in p)t&&(t+=","),t+="span.mce-"+p[e];return t}var s,l,c,u,d,f,p,m,h=e.getBody(),g=e.selection;if(p={"\xa0":"nbsp","\xad":"shy"},r=!r,i.state=r,e.fire("VisualChars",{state:r}),m=o(),t&&(f=g.getBookmark()),r)for(l=[],tinymce.walk(h,function(e){3==e.nodeType&&e.nodeValue&&m.test(e.nodeValue)&&l.push(e)},"childNodes"),c=0;c=0;c--)e.dom.remove(l[c],1);g.moveToBookmark(f)}function n(){var t=this;e.on("VisualChars",function(e){t.active(e.state)})}var r,i=this;e.addCommand("mceVisualChars",t),e.addButton("visualchars",{title:"Show invisible characters",cmd:"mceVisualChars",onPostRender:n}),e.addMenuItem("visualchars",{text:"Show invisible characters",cmd:"mceVisualChars",onPostRender:n,selectable:!0,context:"view",prependToContext:!0})}); 2 | -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/plugins/youtube/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/js/plugins/youtube/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/plugins/youtube/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/js/plugins/youtube/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/plugins/youtube/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/js/plugins/youtube/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/plugins/youtube/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/js/plugins/youtube/icon.png -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/plugins/youtube/js/jquery.yt_data_v3.js: -------------------------------------------------------------------------------- 1 | /** 2 | * ===================================================== 3 | * jQuery YT Data V3 4 | * ===================================================== 5 | * Version: 0.1 (13th August 2014) 6 | * Author: Rik de Vos (www.rikdevos.com) 7 | * 8 | */ 9 | 10 | var YTDataV3 = { /* singleton */ 11 | 12 | key: 'AIzaSyBykc_bErt-mcLNSZ4ejKViOu4Prlllvbw', 13 | order: 'relevance', 14 | next_page_token: '', 15 | 16 | init: function(param) { 17 | this.key = param.key; 18 | this.order = param.order; 19 | }, 20 | 21 | search: function(param, response) { 22 | 23 | //for more parameters see https://developers.google.com/youtube/v3/docs/search/list 24 | 25 | var q = encodeURIComponent(param.q); 26 | 27 | var url = 'https://www.googleapis.com/youtube/v3/search?q='+q+'&key='+this.key+'&maxResults='+param['max-results']+'&order='+this.order+'&type=video&safeSearch=none&videoEmbeddable=true&part=snippet'; 28 | 29 | if(param.next_page == true) { 30 | url += '&pageToken='+this.next_page_token; 31 | } 32 | 33 | $.getJSON(url, function(yt) { 34 | var vids = []; 35 | for(var i = 0; i < yt.items.length; i++) { 36 | //vids[i] = yt.items[i] 37 | } 38 | YTDataV3.next_page_token = yt.nextPageToken; 39 | //cs(vids); 40 | var data = { 41 | itemsPerPage: yt.pageInfo.resultsPerPage, 42 | searchURL: url, 43 | startIndex: 1, 44 | totalResults: yt.pageInfo.totalResults, 45 | version: "1.0", 46 | videos: yt.items 47 | }; 48 | // cs(yt); 49 | response(data); 50 | }); 51 | 52 | } 53 | 54 | }; -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/plugins/youtube/js/youtube.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/js/plugins/youtube/js/youtube.js -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/plugins/youtube/langs/de.js: -------------------------------------------------------------------------------- 1 | tinymce.addI18n('de',{ 2 | 'Choose YouTube Video' : 'YouTube Video suchen', 3 | 'Insert Youtube video' : 'Einf\u00fcgen youtube video', 4 | 'width' : 'Breite', 5 | 'height' : 'H\u00f6he', 6 | 'skin' : 'Skin', 7 | 'dark' : 'dunkel', 8 | 'light' : 'licht', 9 | 'Search' : 'Suche', 10 | 'Youtube URL' : 'Youtube URL', 11 | 'Title' : 'Titel', 12 | 'Insert and Close' : 'Einf\u00fcgen und Schlie\u00dfen', 13 | 'Insert' : 'Einf\u00fcgen', 14 | 'Load More' : 'Mehr laden', 15 | 'cancel' : 'stornieren' 16 | }); 17 | -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/plugins/youtube/langs/en.js: -------------------------------------------------------------------------------- 1 | tinymce.addI18n('en',{ 2 | 'Choose YouTube Video' : 'Search YouTube Video', 3 | 'Insert Youtube video' : 'Insert Youtube video', 4 | 'width' : 'Width', 5 | 'height' : 'Height', 6 | 'skin' : 'Skin', 7 | 'dark' : 'dark', 8 | 'light' : 'light', 9 | 'Search' : 'Search', 10 | 'Youtube URL' : 'Youtube URL', 11 | 'Title' : 'Title', 12 | 'Insert and Close' : 'Insert and Close', 13 | 'Insert' : 'Insert', 14 | 'Load More' : 'Load More', 15 | 'cancel' : 'cancel' 16 | }); 17 | -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/plugins/youtube/langs/nl.js: -------------------------------------------------------------------------------- 1 | tinymce.addI18n('nl',{ 2 | 'Choose YouTube Video' : 'Zoek YouTube Video', 3 | 'Insert Youtube video' : 'Voeg youtube video toe', 4 | 'width' : 'Breedte', 5 | 'height' : 'Hoogte', 6 | 'skin' : 'Skin', 7 | 'dark' : 'dark', 8 | 'light' : 'light', 9 | 'Search' : 'Zoeken', 10 | 'Youtube URL' : 'Youtube link', 11 | 'Title' : 'Titel', 12 | 'Insert and Close' : 'Voeg toe en Sluit', 13 | 'Insert' : 'Voeg toe', 14 | 'Load More' : 'Meer laden', 15 | 'cancel' : 'cancel' 16 | }); 17 | -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/plugins/youtube/plugin.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Youtube search - a TinyMCE youtube search and place plugin 3 | * youtube/plugin.js 4 | * 5 | * This is not free software 6 | * 7 | * Plugin info: http://www.cfconsultancy.nl/ 8 | * Author: Ceasar Feijen 9 | * 10 | * Version: 2.0 released 14/08/2014 11 | */ 12 | tinymce.PluginManager.requireLangPack('youtube', 'en,nl,de'); 13 | tinymce.PluginManager.add('youtube', function(editor) { 14 | 15 | function openmanager() { 16 | win = editor.windowManager.open({ 17 | title: 'Choose YouTube Video', 18 | file: tinyMCE.baseURL + '/plugins/youtube/youtube.html', 19 | filetype: 'video', 20 | width: 785, 21 | height: 560, 22 | inline: 1, 23 | buttons: [{ 24 | text: 'cancel', 25 | onclick: function() { 26 | this.parent() 27 | .parent() 28 | .close(); 29 | } 30 | }] 31 | }); 32 | 33 | } 34 | editor.addButton('youtube', { 35 | icon: true, 36 | image: tinyMCE.baseURL + '/plugins/youtube/icon.png', 37 | tooltip: 'Insert Youtube video', 38 | shortcut: 'Ctrl+Q', 39 | onclick: openmanager 40 | }); 41 | 42 | editor.addShortcut('Ctrl+Q', '', openmanager); 43 | 44 | editor.addMenuItem('youtube', { 45 | icon:'media', 46 | text: 'Insert Youtube video', 47 | shortcut: 'Ctrl+Q', 48 | onclick: openmanager, 49 | context: 'insert' 50 | }); 51 | }); 52 | -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/plugins/youtube/preview.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/js/plugins/youtube/preview.jpg -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/plugins/youtube/slider/css/slide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/js/plugins/youtube/slider/css/slide.png -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/plugins/youtube/youtube.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Insert Youtube Video 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 |
18 |
19 |
20 | 21 | 22 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/skins/lightgray/fonts/tinymce-small.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/js/skins/lightgray/fonts/tinymce-small.eot -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/skins/lightgray/fonts/tinymce-small.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/js/skins/lightgray/fonts/tinymce-small.ttf -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/skins/lightgray/fonts/tinymce-small.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/js/skins/lightgray/fonts/tinymce-small.woff -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/skins/lightgray/fonts/tinymce.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/js/skins/lightgray/fonts/tinymce.eot -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/skins/lightgray/fonts/tinymce.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/js/skins/lightgray/fonts/tinymce.ttf -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/skins/lightgray/fonts/tinymce.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/js/skins/lightgray/fonts/tinymce.woff -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/skins/lightgray/img/anchor.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/js/skins/lightgray/img/anchor.gif -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/skins/lightgray/img/loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/js/skins/lightgray/img/loader.gif -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/skins/lightgray/img/object.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/js/skins/lightgray/img/object.gif -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/skins/lightgray/img/trans.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/js/skins/lightgray/img/trans.gif -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/skins/voyager/fonts/readme.md: -------------------------------------------------------------------------------- 1 | Icons are generated and provided by the http://icomoon.io service. 2 | -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/skins/voyager/fonts/tinymce-small.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/js/skins/voyager/fonts/tinymce-small.eot -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/skins/voyager/fonts/tinymce-small.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/js/skins/voyager/fonts/tinymce-small.ttf -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/skins/voyager/fonts/tinymce-small.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/js/skins/voyager/fonts/tinymce-small.woff -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/skins/voyager/fonts/tinymce.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/js/skins/voyager/fonts/tinymce.eot -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/skins/voyager/fonts/tinymce.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/js/skins/voyager/fonts/tinymce.ttf -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/skins/voyager/fonts/tinymce.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/js/skins/voyager/fonts/tinymce.woff -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/skins/voyager/img/anchor.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/js/skins/voyager/img/anchor.gif -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/skins/voyager/img/loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/js/skins/voyager/img/loader.gif -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/skins/voyager/img/object.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/js/skins/voyager/img/object.gif -------------------------------------------------------------------------------- /public/vendor/tcg/voyager/assets/js/skins/voyager/img/trans.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zinmyoswe/Laravel-Ecommerce/e269f5a691dd028d477d20ffcc104f9940f4a571/public/vendor/tcg/voyager/assets/js/skins/voyager/img/trans.gif -------------------------------------------------------------------------------- /resources/js/app.js: -------------------------------------------------------------------------------- 1 | 2 | /** 3 | * First we will load all of this project's JavaScript dependencies which 4 | * includes Vue and other libraries. It is a great starting point when 5 | * building robust, powerful web applications using Vue and Laravel. 6 | */ 7 | 8 | require('./bootstrap'); 9 | 10 | window.Vue = require('vue'); 11 | 12 | /** 13 | * Next, we will create a fresh Vue application instance and attach it to 14 | * the page. Then, you may begin adding components to this application 15 | * or customize the JavaScript scaffolding to fit your unique needs. 16 | */ 17 | 18 | Vue.component('example', require('./components/Example').default); 19 | Vue.component('blog-posts', require('./components/BlogPosts').default); 20 | 21 | const app = new Vue({ 22 | el: '#app' 23 | }); 24 | -------------------------------------------------------------------------------- /resources/js/components/BlogImage.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 21 | 22 | -------------------------------------------------------------------------------- /resources/js/components/Example.vue: -------------------------------------------------------------------------------- 1 | 16 | 17 | 24 | -------------------------------------------------------------------------------- /resources/lang/en/auth.php: -------------------------------------------------------------------------------- 1 | 'These credentials do not match our records.', 17 | 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', 18 | 19 | ]; 20 | -------------------------------------------------------------------------------- /resources/lang/en/pagination.php: -------------------------------------------------------------------------------- 1 | '« Previous', 17 | 'next' => 'Next »', 18 | 19 | ]; 20 | -------------------------------------------------------------------------------- /resources/lang/en/passwords.php: -------------------------------------------------------------------------------- 1 | 'Passwords must be at least six characters and match the confirmation.', 17 | 'reset' => 'Your password has been reset!', 18 | 'sent' => 'We have e-mailed your password reset link!', 19 | 'token' => 'This password reset token is invalid.', 20 | 'user' => "We can't find a user with that e-mail address.", 21 | 22 | ]; 23 | -------------------------------------------------------------------------------- /resources/sass/abstracts/_variables.scss: -------------------------------------------------------------------------------- 1 | $text-color: #212121; 2 | $text-color-light: #919191; 3 | $white: #e9e9e9; 4 | $gray-background: #535353; 5 | $light-gray-background: #F5F5F5; 6 | $separator-color: #CDCDCD; 7 | $heart: #FFBABA; 8 | $primary: #3EBFA4; 9 | $cart-count: #FFD94D; 10 | 11 | $gutter: 30px; 12 | 13 | -------------------------------------------------------------------------------- /resources/sass/app.scss: -------------------------------------------------------------------------------- 1 | @charset 'utf-8'; 2 | 3 | // Abstracts 4 | @import 'abstracts/variables'; 5 | 6 | // Base 7 | @import 'base/reset'; 8 | @import 'base/base'; 9 | @import 'base/helpers'; 10 | @import 'base/typography'; 11 | @import 'base/utility'; 12 | 13 | // Components 14 | @import 'components/breadcrumbs'; 15 | @import 'components/buttons'; 16 | @import 'components/section-description'; 17 | @import 'components/sidebar'; 18 | @import 'components/might-like'; 19 | @import 'components/form'; 20 | @import 'components/alerts'; 21 | @import 'components/pagination'; 22 | @import 'components/search'; 23 | @import 'components/tables'; 24 | @import 'components/badge'; 25 | 26 | // Layout 27 | @import 'layout/header'; 28 | @import 'layout/footer'; 29 | 30 | // Pages 31 | @import 'pages/landing-page'; 32 | @import 'pages/shop'; 33 | @import 'pages/product'; 34 | @import 'pages/cart'; 35 | @import 'pages/checkout'; 36 | @import 'pages/thankyou'; 37 | @import 'pages/search-results'; 38 | @import 'pages/search-results-algolia'; 39 | @import 'pages/auth'; 40 | @import 'pages/my-profile'; 41 | @import 'pages/my-orders'; 42 | -------------------------------------------------------------------------------- /resources/sass/base/_base.scss: -------------------------------------------------------------------------------- 1 | html { 2 | box-sizing: border-box; 3 | } 4 | 5 | *, *:before, *:after { 6 | box-sizing: inherit; 7 | } 8 | 9 | a { 10 | text-decoration: none; 11 | color: $text-color; 12 | 13 | &:visited { 14 | color: $text-color; 15 | } 16 | 17 | &:hover { 18 | color: lighten($text-color, 40%); 19 | } 20 | 21 | } 22 | 23 | .logo a { 24 | color: $white; 25 | } 26 | 27 | h1 { 28 | margin-bottom: 40px; 29 | } 30 | 31 | h2 { 32 | margin-bottom: 10px; 33 | } 34 | 35 | img { 36 | max-width: 100%; 37 | } 38 | -------------------------------------------------------------------------------- /resources/sass/base/_helpers.scss: -------------------------------------------------------------------------------- 1 | .clearfix::after { 2 | clear: both; 3 | content: ''; 4 | display: table; 5 | } 6 | 7 | .container { 8 | margin: auto; 9 | max-width: 1200px; 10 | } 11 | -------------------------------------------------------------------------------- /resources/sass/base/_reset.scss: -------------------------------------------------------------------------------- 1 | /* http://meyerweb.com/eric/tools/css/reset/ 2 | v2.0 | 20110126 3 | License: none (public domain) 4 | */ 5 | 6 | html, body, div, span, applet, object, iframe, 7 | h1, h2, h3, h4, h5, h6, p, blockquote, pre, 8 | a, abbr, acronym, address, big, cite, code, 9 | del, dfn, em, img, ins, kbd, q, s, samp, 10 | small, strike, strong, sub, sup, tt, var, 11 | b, u, i, center, 12 | dl, dt, dd, ol, ul, li, 13 | fieldset, form, label, legend, 14 | table, caption, tbody, tfoot, thead, tr, th, td, 15 | article, aside, canvas, details, embed, 16 | figure, figcaption, footer, header, hgroup, 17 | menu, nav, output, ruby, section, summary, 18 | time, mark, audio, video { 19 | margin: 0; 20 | padding: 0; 21 | border: 0; 22 | font-size: 100%; 23 | font: inherit; 24 | vertical-align: baseline; 25 | } 26 | /* HTML5 display-role reset for older browsers */ 27 | article, aside, details, figcaption, figure, 28 | footer, header, hgroup, menu, nav, section { 29 | display: block; 30 | } 31 | body { 32 | line-height: 1; 33 | } 34 | ol, ul { 35 | list-style: none; 36 | } 37 | blockquote, q { 38 | quotes: none; 39 | } 40 | blockquote:before, blockquote:after, 41 | q:before, q:after { 42 | content: ''; 43 | content: none; 44 | } 45 | table { 46 | border-collapse: collapse; 47 | border-spacing: 0; 48 | } 49 | -------------------------------------------------------------------------------- /resources/sass/base/_typography.scss: -------------------------------------------------------------------------------- 1 | body { 2 | font-family: 'Roboto', Arial, sans-serif; 3 | font-size: 18px; 4 | font-weight: 300; 5 | line-height: 1.6; 6 | } 7 | 8 | h1, h2, .product-section-subtitle, .product-section-price { 9 | font-family: 'Montserrat', Arial, sans-serif; 10 | font-weight: bold; 11 | } 12 | 13 | h1 { 14 | font-size: 38px; 15 | line-height: 1.2; 16 | } 17 | 18 | h1.stylish-heading { 19 | margin-bottom: 60px; 20 | position: relative; 21 | 22 | &:before, &:after { 23 | position: absolute; 24 | top: -4px; 25 | left: 0; 26 | width: 66px; 27 | height: 1px; 28 | background: $text-color; 29 | content: ''; 30 | display: block; 31 | } 32 | 33 | &:after { 34 | bottom: -14px; 35 | top: auto; 36 | } 37 | } 38 | 39 | h2 { 40 | font-size: 22px; 41 | } 42 | -------------------------------------------------------------------------------- /resources/sass/base/_utility.scss: -------------------------------------------------------------------------------- 1 | .text-center { 2 | text-align: center; 3 | } 4 | 5 | .spacer { 6 | margin-bottom: 30px; 7 | } 8 | 9 | .sticky-footer { 10 | display: flex; 11 | flex-direction: column; 12 | min-height: 100vh; 13 | } 14 | 15 | .full-width { 16 | width: 100%; 17 | } 18 | 19 | strong { 20 | font-weight: bold; 21 | } 22 | 23 | .uppercase { 24 | text-transform: uppercase; 25 | } 26 | 27 | .font-bold { 28 | font-weight: bold; 29 | } 30 | -------------------------------------------------------------------------------- /resources/sass/components/_alerts.scss: -------------------------------------------------------------------------------- 1 | .alert { 2 | padding: 15px; 3 | margin-bottom: 20px; 4 | border: 1px solid transparent; 5 | border-radius: 4px; 6 | } 7 | 8 | .alert-success { 9 | color: #3c763d; 10 | background-color: #dff0d8; 11 | border-color: #d6e9c6; 12 | } 13 | 14 | .alert-danger { 15 | color: #a94442; 16 | background-color: #f2dede; 17 | border-color: #ebccd1; 18 | } 19 | -------------------------------------------------------------------------------- /resources/sass/components/_badge.scss: -------------------------------------------------------------------------------- 1 | .badge { 2 | display: inline-block; 3 | padding: .25em .4em; 4 | font-size: 100%; 5 | font-weight: 700; 6 | line-height: 1; 7 | text-align: center; 8 | white-space: nowrap; 9 | vertical-align: baseline; 10 | border-radius: .25rem; 11 | } 12 | 13 | .badge-primary { 14 | color: #fff; 15 | background-color: #007bff; 16 | } 17 | 18 | .badge-secondary { 19 | color: #fff; 20 | background-color: #6c757d; 21 | } 22 | 23 | .badge-success { 24 | color: #fff; 25 | background-color: #28a745; 26 | } 27 | 28 | .badge-danger { 29 | color: #fff; 30 | background-color: #dc3545; 31 | } 32 | 33 | .badge-warning { 34 | color: #212529; 35 | background-color: #ffc107; 36 | } 37 | 38 | .badge-info { 39 | color: #fff; 40 | background-color: #17a2b8; 41 | } 42 | 43 | .badge-light { 44 | color: #212529; 45 | background-color: #f8f9fa; 46 | } 47 | 48 | .badge-dark { 49 | color: #fff; 50 | background-color: #343a40; 51 | } 52 | -------------------------------------------------------------------------------- /resources/sass/components/_breadcrumbs.scss: -------------------------------------------------------------------------------- 1 | .breadcrumbs { 2 | background: $light-gray-background; 3 | border-bottom: 1px solid $separator-color; 4 | padding: 24px 0; 5 | 6 | .breadcrumb-separator { 7 | font-size: 14px; 8 | color: lighten($text-color, 20%); 9 | } 10 | 11 | .breadcrumbs-container { 12 | display: flex; 13 | justify-content: space-between; 14 | align-items: center; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /resources/sass/components/_buttons.scss: -------------------------------------------------------------------------------- 1 | .button { 2 | border: 1px solid $text-color; 3 | padding: 12px 40px; 4 | 5 | &:hover { 6 | color: $white; 7 | background: $text-color; 8 | } 9 | } 10 | 11 | .button-white { 12 | border: 1px solid $white; 13 | color: $white !important; 14 | 15 | &:hover { 16 | color: $text-color !important; 17 | background: $white; 18 | } 19 | } 20 | 21 | .button-primary { 22 | background: $primary; 23 | color: white !important; 24 | padding: 12px 40px; 25 | 26 | &:hover { 27 | background: darken($primary, 7%); 28 | } 29 | 30 | &:disabled { 31 | background: lighten($primary, 10%); 32 | cursor: not-allowed; 33 | } 34 | } 35 | 36 | .button-plain { 37 | border: 1px solid $text-color !important; 38 | background: transparent; 39 | } 40 | 41 | .button-container { 42 | margin: 80px 0; 43 | } 44 | -------------------------------------------------------------------------------- /resources/sass/components/_form.scss: -------------------------------------------------------------------------------- 1 | form { 2 | .half-form { 3 | display: grid; 4 | grid-template-columns: 1fr 1fr; 5 | grid-gap: 30px; 6 | } 7 | 8 | button[type="submit"] { 9 | border-style: none; 10 | cursor: pointer; 11 | font-size: 18px; 12 | line-height: 1.6; 13 | } 14 | } 15 | 16 | .form-group { 17 | 18 | margin-bottom: 20px; 19 | 20 | label { 21 | display: block; 22 | } 23 | 24 | input { 25 | width: 100%; 26 | padding: 12px; 27 | font-size: 16px; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /resources/sass/components/_might-like.scss: -------------------------------------------------------------------------------- 1 | .might-like-section { 2 | padding: 40px 0 70px; 3 | background: $light-gray-background; 4 | 5 | h2 { 6 | padding-bottom: 30px; 7 | } 8 | 9 | .might-like-grid { 10 | display: grid; 11 | grid-template-columns: 1fr 1fr 1fr 1fr; 12 | grid-gap: 30px; 13 | } 14 | 15 | .might-like-product { 16 | border: 1px solid #979797; 17 | background: white; 18 | padding: 30px 0 20px; 19 | text-align: center; 20 | 21 | img { 22 | width: 70%; 23 | } 24 | } 25 | 26 | .might-like-product-price { 27 | color: $text-color-light; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /resources/sass/components/_pagination.scss: -------------------------------------------------------------------------------- 1 | // Pagination styles stolen from some bootstrap theme I'm using 2 | 3 | .pagination { 4 | display: inline-block; 5 | padding-left: 0; 6 | margin: 20px 0; 7 | border-radius: 4px; 8 | } 9 | 10 | .pagination>li { 11 | display: inline; 12 | } 13 | 14 | .pagination > .active > a, .pagination > .active > span, .pagination > .active > a:hover, .pagination > .active > span:hover, .pagination > .active > a:focus, .pagination > .active > span:focus { 15 | background-color: #f4f4f4; 16 | border-color: #DDDDDD; 17 | color: inherit; 18 | cursor: default; 19 | z-index: 2; 20 | } 21 | 22 | .pagination>li:first-child>a, .pagination>li:first-child>span { 23 | margin-left: 0; 24 | border-top-left-radius: 4px; 25 | border-bottom-left-radius: 4px; 26 | } 27 | 28 | .pagination > li > a, .pagination > li > span { 29 | background-color: #FFFFFF; 30 | border: 1px solid #DDDDDD; 31 | color: inherit; 32 | float: left; 33 | line-height: 1.42857; 34 | margin-left: -1px; 35 | padding: 16px 22px; 36 | position: relative; 37 | text-decoration: none; 38 | } 39 | 40 | .pagination>li>a:focus, .pagination>li>a:hover, .pagination>li>span:focus, .pagination>li>span:hover { 41 | z-index: 2; 42 | color: #23527c; 43 | background-color: #eee; 44 | border-color: #ddd; 45 | } 46 | -------------------------------------------------------------------------------- /resources/sass/components/_search.scss: -------------------------------------------------------------------------------- 1 | .search-form { 2 | position: relative; 3 | } 4 | 5 | .search-icon { 6 | color: gray; 7 | position: absolute; 8 | top: 12px; 9 | left: 12px; 10 | } 11 | 12 | .search-box { 13 | padding: 10px 12px 10px 34px; 14 | width: 400px; 15 | max-width: 100%; 16 | font-size: 14px; 17 | } 18 | -------------------------------------------------------------------------------- /resources/sass/components/_section-description.scss: -------------------------------------------------------------------------------- 1 | .section-description { 2 | width: 80%; 3 | margin: 44px auto; 4 | } 5 | -------------------------------------------------------------------------------- /resources/sass/components/_sidebar.scss: -------------------------------------------------------------------------------- 1 | .sidebar { 2 | h3 { 3 | font-weight: bold; 4 | margin-bottom: 16px; 5 | } 6 | 7 | ul { 8 | line-height: 2; 9 | margin-bottom: 20px; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /resources/sass/layout/_footer.scss: -------------------------------------------------------------------------------- 1 | footer { 2 | background: $gray-background; 3 | color: $white; 4 | padding: 40px 0; 5 | } 6 | 7 | .footer-content { 8 | display: flex; 9 | justify-content: space-between; 10 | 11 | .heart { 12 | color: $heart; 13 | } 14 | 15 | ul { 16 | display: flex; 17 | width: 30%; 18 | justify-content: space-between; 19 | } 20 | 21 | a { 22 | color: $white; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /resources/sass/pages/auth.scss: -------------------------------------------------------------------------------- 1 | .auth-pages { 2 | margin: 100px auto; 3 | display: grid; 4 | grid-template-columns: 1fr 1fr; 5 | grid-gap: 100px; 6 | min-height: 60vh; 7 | 8 | input { 9 | border: 1px solid $text-color-light; 10 | padding: 16px 10px; 11 | border-radius: 5px; 12 | width: 100%; 13 | font-size: 14px; 14 | margin-bottom: 30px; 15 | } 16 | 17 | input[type="checkbox"] { 18 | width: auto; 19 | } 20 | 21 | .login-container { 22 | display: flex; 23 | align-items: center; 24 | justify-content: space-between; 25 | } 26 | 27 | .auth-button { 28 | background: $text-color; 29 | color: $white; 30 | border-radius: 5px; 31 | padding: 12px 50px; 32 | 33 | &:hover { 34 | background: lighten($text-color, 10%); 35 | } 36 | } 37 | 38 | .auth-button-hollow { 39 | background: white; 40 | color: $text-color; 41 | border-radius: 5px; 42 | border: 1px solid $text-color; 43 | padding: 12px 50px; 44 | 45 | &:hover { 46 | background: $text-color; 47 | color: $white; 48 | } 49 | } 50 | 51 | .auth-right { 52 | border-left: 1px solid $separator-color; 53 | padding-left: 100px; 54 | } 55 | 56 | .already-have-container { 57 | text-align: right; 58 | } 59 | 60 | } 61 | -------------------------------------------------------------------------------- /resources/sass/pages/landing-page.scss: -------------------------------------------------------------------------------- 1 | .featured-section { 2 | padding: 50px 0; 3 | 4 | .products { 5 | display: grid; 6 | grid-template-columns: 1fr 1fr 1fr 1fr; 7 | grid-gap: 60px $gutter; 8 | 9 | .product-price { 10 | color: $text-color-light !important; 11 | } 12 | } 13 | } 14 | 15 | .blog-section { 16 | background: $light-gray-background; 17 | border-top: 1px solid $separator-color; 18 | padding: 50px 0; 19 | grid-area: blog-section; 20 | 21 | .blog-posts { 22 | display: grid; 23 | grid-template-columns: 1fr 1fr 1fr; 24 | grid-gap: $gutter; 25 | margin: 60px 0 60px; 26 | grid-template-areas: 27 | "blog1 blog2 blog3"; 28 | 29 | #blog1 { 30 | grid-area: blog1; 31 | } 32 | 33 | #blog2 { 34 | grid-area: blog2; 35 | } 36 | 37 | #blog3 { 38 | grid-area: blog3; 39 | } 40 | } 41 | 42 | } 43 | -------------------------------------------------------------------------------- /resources/sass/pages/my-orders.scss: -------------------------------------------------------------------------------- 1 | .my-orders { 2 | .order-container { 3 | margin-bottom: 64px; 4 | } 5 | .order-header { 6 | background: #F6F6F6; 7 | border: 1px solid #DDDDDD; 8 | padding: 14px; 9 | display: flex; 10 | align-items: center; 11 | justify-content: space-between; 12 | } 13 | 14 | .order-products { 15 | background: white; 16 | border: 1px solid #DDDDDD; 17 | border-top: none; 18 | padding: 14px; 19 | } 20 | 21 | .order-header-items { 22 | display: flex; 23 | 24 | div { 25 | margin-right: 14px; 26 | } 27 | } 28 | 29 | .order-product-item { 30 | display: flex; 31 | margin: 32px 0; 32 | 33 | img { 34 | max-width: 140px; 35 | margin-right: 24px; 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /resources/sass/pages/my-profile.scss: -------------------------------------------------------------------------------- 1 | .my-profile { 2 | 3 | label { 4 | display: block; 5 | } 6 | 7 | .form-control { 8 | margin-bottom: 30px; 9 | } 10 | 11 | input { 12 | border: 1px solid $text-color-light; 13 | padding: 16px 10px; 14 | border-radius: 5px; 15 | width: 66.6%; 16 | font-size: 14px; 17 | } 18 | 19 | .my-profile-button { 20 | background: $text-color; 21 | color: $white; 22 | border-radius: 5px; 23 | padding: 12px 50px; 24 | 25 | &:hover { 26 | background: lighten($text-color, 10%); 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /resources/sass/pages/product.scss: -------------------------------------------------------------------------------- 1 | .product-section { 2 | display: grid; 3 | grid-template-columns: 1fr 1fr; 4 | grid-gap: 120px; 5 | padding: 100px 0 120px; 6 | 7 | .selected { 8 | border: 1px solid #979797; 9 | } 10 | } 11 | 12 | .product-section-images { 13 | display: grid; 14 | grid-template-columns: repeat(6, 1fr); 15 | grid-gap: 20px; 16 | margin-top: 20px; 17 | } 18 | 19 | .product-section-thumbnail { 20 | display: flex; 21 | align-items: center; 22 | border: 1px solid lightgray; 23 | min-height: 66px; 24 | cursor: pointer; 25 | 26 | &:hover { 27 | border: 1px solid #979797; 28 | } 29 | } 30 | 31 | .product-section-image { 32 | display: flex; 33 | justify-content: center; 34 | align-items: center; 35 | border: 1px solid #979797; 36 | padding: 30px; 37 | text-align: center; 38 | height: 400px; 39 | 40 | img { 41 | opacity: 0; 42 | transition: opacity .10s ease-in-out; 43 | max-height: 100%; 44 | } 45 | 46 | img.active { 47 | opacity: 1; 48 | } 49 | } 50 | 51 | .product-section-information { 52 | 53 | p { 54 | margin-bottom: 16px; 55 | } 56 | 57 | } 58 | 59 | .product-section-title { 60 | margin-bottom: 0; 61 | } 62 | 63 | .product-section-subtitle { 64 | font-size: 20px; 65 | font-weight: bold; 66 | color: $text-color-light; 67 | } 68 | 69 | .product-section-price { 70 | font-size: 38px; 71 | color: $text-color; 72 | margin-bottom: 16px; 73 | } 74 | 75 | -------------------------------------------------------------------------------- /resources/sass/pages/search-results-algolia.scss: -------------------------------------------------------------------------------- 1 | .search-results-container-algolia { 2 | min-height: 400px; 3 | margin: 40px 0; 4 | display: grid; 5 | grid-template-columns: 3fr 7fr; 6 | grid-gap: 20px; 7 | } 8 | 9 | .ais-hits--item { 10 | .instantsearch-result { 11 | display:flex; 12 | align-items: center; 13 | 14 | img { 15 | margin-right: 40px; 16 | } 17 | } 18 | 19 | .result-details { 20 | color: $text-color-light; 21 | } 22 | 23 | .result-price { 24 | margin-top: 6px; 25 | font-weight: 500; 26 | } 27 | 28 | .algolia-thumb-result { 29 | max-height: 50px; 30 | } 31 | 32 | hr { 33 | border: 0.5px solid $separator-color; 34 | } 35 | } 36 | 37 | .ais-refinement-list--label { 38 | color: $text-color !important; 39 | font-size: 18px !important; 40 | display: flex; 41 | align-items: center; 42 | } 43 | 44 | .ais-refinement-list--item { 45 | margin-bottom: 12px; 46 | } 47 | 48 | .ais-refinement-list--count { 49 | color: $text-color !important; 50 | background: rgba(39,81,108,.2) !important; 51 | margin-left: auto; 52 | margin-right: 57px; 53 | } 54 | -------------------------------------------------------------------------------- /resources/sass/pages/search-results.scss: -------------------------------------------------------------------------------- 1 | .search-results-container { 2 | min-height: 500px; 3 | margin: 20px auto; 4 | 5 | a { 6 | color: darkblue; 7 | 8 | &:hover { 9 | text-decoration: underline; 10 | } 11 | } 12 | } 13 | 14 | .search-results-count { 15 | margin-bottom: 20px; 16 | } 17 | -------------------------------------------------------------------------------- /resources/sass/pages/shop.scss: -------------------------------------------------------------------------------- 1 | .products-section { 2 | display: grid; 3 | grid-template-columns: 1fr 3fr; 4 | margin: 80px auto 80px; 5 | 6 | .sidebar li.active { 7 | font-weight: 500; 8 | } 9 | 10 | .products { 11 | display: grid; 12 | grid-template-columns: 1fr 1fr 1fr; 13 | grid-gap: 60px $gutter; 14 | 15 | .product-price { 16 | color: $text-color-light; 17 | } 18 | } 19 | } 20 | 21 | .products-header { 22 | display: flex; 23 | justify-content: space-between; 24 | } 25 | 26 | 27 | -------------------------------------------------------------------------------- /resources/sass/pages/thankyou.scss: -------------------------------------------------------------------------------- 1 | .thank-you-section { 2 | display: flex; 3 | flex-direction: column; 4 | align-items: center; 5 | text-align: center; 6 | justify-content: center; 7 | flex: 1; 8 | 9 | h1 { 10 | margin-bottom: 10px; 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /resources/views/components/breadcrumbs.blade.php: -------------------------------------------------------------------------------- 1 | 11 | -------------------------------------------------------------------------------- /resources/views/emails/orders/placed.blade.php: -------------------------------------------------------------------------------- 1 | @component('mail::message') 2 | # Order Received 3 | 4 | Thank you for your order. 5 | 6 | **Order ID:** {{ $order->id }} 7 | 8 | **Order Email:** {{ $order->billing_email }} 9 | 10 | **Order Name:** {{ $order->billing_name }} 11 | 12 | **Order Total:** ${{ round($order->billing_total / 100, 2) }} 13 | 14 | **Items Ordered** 15 | 16 | @foreach ($order->products as $product) 17 | Name: {{ $product->name }}
18 | Price: ${{ round($product->price / 100, 2)}}
19 | Quantity: {{ $product->pivot->quantity }}
20 | @endforeach 21 | 22 | You can get further details about your order by logging into our website. 23 | 24 | @component('mail::button', ['url' => config('app.url'), 'color' => 'green']) 25 | Go to Website 26 | @endcomponent 27 | 28 | Thank you again for choosing us. 29 | 30 | Regards,
31 | {{ config('app.name') }} 32 | @endcomponent 33 | -------------------------------------------------------------------------------- /resources/views/home.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.app') 2 | 3 | @section('content') 4 |
5 |
6 |
7 |
8 |
Dashboard
9 | 10 |
11 | @if (session('status')) 12 |
13 | {{ session('status') }} 14 |
15 | @endif 16 | 17 | You are logged in! 18 |
19 |
20 |
21 |
22 |
23 | @endsection 24 | -------------------------------------------------------------------------------- /resources/views/partials/menus/footer.blade.php: -------------------------------------------------------------------------------- 1 |
    2 | @foreach($items as $menu_item) 3 | @if ($menu_item->title === 'Follow Me:') 4 |
  • {{ $menu_item->title }}
  • 5 | @endif 6 |
  • 7 | @endforeach 8 |
9 | -------------------------------------------------------------------------------- /resources/views/partials/menus/main-right.blade.php: -------------------------------------------------------------------------------- 1 | 2 | @guest 3 | 4 | 5 | @else 6 | 9 | 16 | 17 | 20 | @endguest 21 | 26 | {{-- @foreach($items as $menu_item) 27 |
  • 28 | 29 | {{ $menu_item->title }} 30 | @if ($menu_item->title === 'Cart') 31 | @if (Cart::instance('default')->count() > 0) 32 | {{ Cart::instance('default')->count() }} 33 | @endif 34 | @endif 35 | 36 |
  • 37 | @endforeach --}} 38 | -------------------------------------------------------------------------------- /resources/views/partials/menus/main.blade.php: -------------------------------------------------------------------------------- 1 | 2 | @foreach($items as $menu_item) 3 | 13 | @endforeach 14 | 15 | -------------------------------------------------------------------------------- /resources/views/partials/nav.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 39 | -------------------------------------------------------------------------------- /resources/views/thankyou.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layout') 2 | 3 | @section('title', 'Thank You') 4 | 5 | @section('extra-css') 6 | 7 | @endsection 8 | 9 | @section('body-class', 'sticky-footer') 10 | 11 | @section('content') 12 | 13 |
    14 |
    15 |
    16 |
    17 |

    Thank you for
    Your Order!

    18 |

    A confirmation email was sent

    19 | 20 | Home Page 21 |
    22 |
    23 |
    24 | 25 | 26 | 27 | 28 | @endsection 29 | -------------------------------------------------------------------------------- /resources/views/vendor/mail/html/button.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 18 | 19 |
    4 | 5 | 6 | 15 | 16 |
    7 | 8 | 9 | 12 | 13 |
    10 | {{ $slot }} 11 |
    14 |
    17 |
    20 | -------------------------------------------------------------------------------- /resources/views/vendor/mail/html/footer.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /resources/views/vendor/mail/html/header.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {{ $slot }} 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /resources/views/vendor/mail/html/message.blade.php: -------------------------------------------------------------------------------- 1 | @component('mail::layout') 2 | {{-- Header --}} 3 | @slot('header') 4 | @component('mail::header', ['url' => config('app.url')]) 5 | {{ config('app.name') }} 6 | @endcomponent 7 | @endslot 8 | 9 | {{-- Body --}} 10 | {{ $slot }} 11 | 12 | {{-- Subcopy --}} 13 | @isset($subcopy) 14 | @slot('subcopy') 15 | @component('mail::subcopy') 16 | {{ $subcopy }} 17 | @endcomponent 18 | @endslot 19 | @endisset 20 | 21 | {{-- Footer --}} 22 | @slot('footer') 23 | @component('mail::footer') 24 | © {{ date('Y') }} {{ config('app.name') }}. All rights reserved. 25 | @endcomponent 26 | @endslot 27 | @endcomponent 28 | -------------------------------------------------------------------------------- /resources/views/vendor/mail/html/panel.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 12 | 13 |
    4 | 5 | 6 | 9 | 10 |
    7 | {{ Illuminate\Mail\Markdown::parse($slot) }} 8 |
    11 |
    14 | -------------------------------------------------------------------------------- /resources/views/vendor/mail/html/promotion.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 |
    4 | {{ Illuminate\Mail\Markdown::parse($slot) }} 5 |
    8 | -------------------------------------------------------------------------------- /resources/views/vendor/mail/html/promotion/button.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 12 | 13 |
    4 | 5 | 6 | 9 | 10 |
    7 | {{ $slot }} 8 |
    11 |
    14 | -------------------------------------------------------------------------------- /resources/views/vendor/mail/html/subcopy.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 |
    4 | {{ Illuminate\Mail\Markdown::parse($slot) }} 5 |
    8 | -------------------------------------------------------------------------------- /resources/views/vendor/mail/html/table.blade.php: -------------------------------------------------------------------------------- 1 |
    2 | {{ Illuminate\Mail\Markdown::parse($slot) }} 3 |
    4 | -------------------------------------------------------------------------------- /resources/views/vendor/mail/markdown/button.blade.php: -------------------------------------------------------------------------------- 1 | {{ $slot }}: {{ $url }} 2 | -------------------------------------------------------------------------------- /resources/views/vendor/mail/markdown/footer.blade.php: -------------------------------------------------------------------------------- 1 | {{ $slot }} 2 | -------------------------------------------------------------------------------- /resources/views/vendor/mail/markdown/header.blade.php: -------------------------------------------------------------------------------- 1 | [{{ $slot }}]({{ $url }}) 2 | -------------------------------------------------------------------------------- /resources/views/vendor/mail/markdown/layout.blade.php: -------------------------------------------------------------------------------- 1 | {!! strip_tags($header) !!} 2 | 3 | {!! strip_tags($slot) !!} 4 | @isset($subcopy) 5 | 6 | {!! strip_tags($subcopy) !!} 7 | @endisset 8 | 9 | {!! strip_tags($footer) !!} 10 | -------------------------------------------------------------------------------- /resources/views/vendor/mail/markdown/message.blade.php: -------------------------------------------------------------------------------- 1 | @component('mail::layout') 2 | {{-- Header --}} 3 | @slot('header') 4 | @component('mail::header', ['url' => config('app.url')]) 5 | {{ config('app.name') }} 6 | @endcomponent 7 | @endslot 8 | 9 | {{-- Body --}} 10 | {{ $slot }} 11 | 12 | {{-- Subcopy --}} 13 | @isset($subcopy) 14 | @slot('subcopy') 15 | @component('mail::subcopy') 16 | {{ $subcopy }} 17 | @endcomponent 18 | @endslot 19 | @endisset 20 | 21 | {{-- Footer --}} 22 | @slot('footer') 23 | @component('mail::footer') 24 | © {{ date('Y') }} {{ config('app.name') }}. All rights reserved. 25 | @endcomponent 26 | @endslot 27 | @endcomponent 28 | -------------------------------------------------------------------------------- /resources/views/vendor/mail/markdown/panel.blade.php: -------------------------------------------------------------------------------- 1 | {{ $slot }} 2 | -------------------------------------------------------------------------------- /resources/views/vendor/mail/markdown/promotion.blade.php: -------------------------------------------------------------------------------- 1 | {{ $slot }} 2 | -------------------------------------------------------------------------------- /resources/views/vendor/mail/markdown/promotion/button.blade.php: -------------------------------------------------------------------------------- 1 | [{{ $slot }}]({{ $url }}) 2 | -------------------------------------------------------------------------------- /resources/views/vendor/mail/markdown/subcopy.blade.php: -------------------------------------------------------------------------------- 1 | {{ $slot }} 2 | -------------------------------------------------------------------------------- /resources/views/vendor/mail/markdown/table.blade.php: -------------------------------------------------------------------------------- 1 | {{ $slot }} 2 | -------------------------------------------------------------------------------- /routes/api.php: -------------------------------------------------------------------------------- 1 | get('/user', function (Request $request) { 17 | return $request->user(); 18 | }); 19 | -------------------------------------------------------------------------------- /routes/channels.php: -------------------------------------------------------------------------------- 1 | id === (int) $id; 16 | }); 17 | -------------------------------------------------------------------------------- /routes/console.php: -------------------------------------------------------------------------------- 1 | comment(Inspiring::quote()); 18 | })->describe('Display an inspiring quote'); 19 | -------------------------------------------------------------------------------- /server.php: -------------------------------------------------------------------------------- 1 | 8 | */ 9 | 10 | $uri = urldecode( 11 | parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH) 12 | ); 13 | 14 | // This file allows us to emulate Apache's "mod_rewrite" functionality from the 15 | // built-in PHP web server. This provides a convenient way to test a Laravel 16 | // application without having installed a "real" web server software here. 17 | if ($uri !== '/' && file_exists(__DIR__.'/public'.$uri)) { 18 | return false; 19 | } 20 | 21 | require_once __DIR__.'/public/index.php'; 22 | -------------------------------------------------------------------------------- /storage/app/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !public/ 3 | !.gitignore 4 | -------------------------------------------------------------------------------- /storage/app/public/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /storage/framework/.gitignore: -------------------------------------------------------------------------------- 1 | config.php 2 | routes.php 3 | schedule-* 4 | compiled.php 5 | services.json 6 | events.scanned.php 7 | routes.scanned.php 8 | down 9 | -------------------------------------------------------------------------------- /storage/framework/cache/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /storage/framework/sessions/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /storage/framework/testing/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /storage/framework/views/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /storage/logs/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /tests/Browser/LoginTest.php: -------------------------------------------------------------------------------- 1 | create([ 18 | 'email' => 'user@user.com', 19 | ]); 20 | 21 | $this->browse(function (Browser $browser) { 22 | $browser->visit('/') 23 | ->visit('/login') 24 | ->assertSee('Returning Customer') 25 | ->type('email', 'user@user.com') 26 | ->type('password', 'wrong-password') 27 | ->press('Login') 28 | ->assertPathIs('/login') 29 | ->assertSee('credentials do not match'); 30 | }); 31 | } 32 | 33 | /** @test */ 34 | public function a_user_can_login_with_valid_credentials() 35 | { 36 | $user = factory(User::class)->create([ 37 | 'email' => 'user@user.com', 38 | ]); 39 | 40 | $this->browse(function (Browser $browser) { 41 | $browser->visit('/') 42 | ->visit('/login') 43 | ->assertSee('Returning Customer') 44 | ->type('email', 'user@user.com') 45 | ->type('password', 'secret') 46 | ->press('Login') 47 | ->assertPathIs('/'); 48 | }); 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /tests/Browser/Pages/HomePage.php: -------------------------------------------------------------------------------- 1 | '#selector', 39 | ]; 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /tests/Browser/Pages/Page.php: -------------------------------------------------------------------------------- 1 | '#selector', 18 | ]; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /tests/Browser/UpdateCartQuantityTest.php: -------------------------------------------------------------------------------- 1 | create([ 18 | 'name' => 'Laptop 1', 19 | 'slug' => 'laptop-1', 20 | ]); 21 | 22 | $this->browse(function (Browser $browser) { 23 | $browser->visit('/shop/laptop-1') 24 | ->assertSee('Laptop 1') 25 | ->press('Add to Cart') 26 | ->assertPathIs('/cart') 27 | ->select('.quantity', 2) 28 | ->pause(1000) 29 | ->assertSee('Quantity was updated successfully'); 30 | }); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /tests/Browser/console/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /tests/Browser/screenshots/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /tests/CreatesApplication.php: -------------------------------------------------------------------------------- 1 | make(Kernel::class)->bootstrap(); 19 | 20 | return $app; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /tests/DuskTestCase.php: -------------------------------------------------------------------------------- 1 | addArguments([ 33 | '--disable-gpu', 34 | // '--headless' 35 | ]); 36 | 37 | return RemoteWebDriver::create( 38 | 'http://localhost:9515', DesiredCapabilities::chrome()->setCapability( 39 | ChromeOptions::CAPABILITY, $options 40 | ) 41 | ); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /tests/TestCase.php: -------------------------------------------------------------------------------- 1 | make([ 16 | 'name' => 'Product 1', 17 | 'price' => 29999 18 | ]); 19 | 20 | $this->assertEquals('$299.99', presentPrice($product->price)); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /webpack.mix.js: -------------------------------------------------------------------------------- 1 | let mix = require('laravel-mix'); 2 | 3 | /* 4 | |-------------------------------------------------------------------------- 5 | | Mix Asset Management 6 | |-------------------------------------------------------------------------- 7 | | 8 | | Mix provides a clean, fluent API for defining some Webpack build steps 9 | | for your Laravel application. By default, we are compiling the Sass 10 | | file for the application as well as bundling up all the JS files. 11 | | 12 | */ 13 | 14 | mix.js('resources/js/app.js', 'public/js') 15 | .sass('resources/sass/app.scss', 'public/css') 16 | .sass('resources/sass/responsive.scss', 'public/css') 17 | .sourceMaps() 18 | .browserSync('laravel-ecommerce-example.test'); 19 | --------------------------------------------------------------------------------