├── .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",tinymce.each(n,function(n){var r=t+"/img/smiley-"+n+".gif";e+=' | '}),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('
'),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 |
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 |
2 |
3 |
4 |
5 |
21 |
22 |
--------------------------------------------------------------------------------
/resources/js/components/Example.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
Example Component
7 |
8 |
9 | I'm an example component!
10 |
11 |
12 |
13 |
14 |
15 |
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 |
2 |
3 |
4 | {{ $slot }}
5 |
6 |
7 | @include('partials.search')
8 |
9 |
10 |
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 | Sign Up
4 | Login
5 | @else
6 |
7 | My Account
8 |
9 |
10 |
13 | Logout
14 |
15 |
16 |
17 |
20 | @endguest
21 | Cart
22 | @if (Cart::instance('default')->count() > 0)
23 | {{ Cart::instance('default')->count() }}
24 | @endif
25 |
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 |
4 |
5 | {{ $menu_item->title }}
6 | @if ($menu_item->title === 'Cart')
7 | @if (Cart::instance('default')->count() > 0)
8 | {{ Cart::instance('default')->count() }}
9 | @endif
10 | @endif
11 |
12 |
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 |
4 |
5 |
6 |
7 |
14 | |
15 |
16 |
17 | |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/resources/views/vendor/mail/html/footer.blade.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
10 | |
11 |
12 |
--------------------------------------------------------------------------------
/resources/views/vendor/mail/html/header.blade.php:
--------------------------------------------------------------------------------
1 |
2 |
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 |
4 |
5 |
6 |
7 | {{ Illuminate\Mail\Markdown::parse($slot) }}
8 | |
9 |
10 |
11 | |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/resources/views/vendor/mail/html/promotion.blade.php:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/resources/views/vendor/mail/html/promotion/button.blade.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
11 | |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/resources/views/vendor/mail/html/subcopy.blade.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | {{ Illuminate\Mail\Markdown::parse($slot) }}
5 | |
6 |
7 |
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 |
--------------------------------------------------------------------------------