├── public
├── favicon.ico
├── robots.txt
├── img
│ ├── profile.png
│ ├── profile1.png
│ └── portfolio
│ │ ├── cake.png
│ │ ├── game.png
│ │ ├── safe.png
│ │ ├── cabin.png
│ │ ├── circus.png
│ │ └── submarine.png
├── vendor
│ ├── font-awesome
│ │ ├── fonts
│ │ │ ├── FontAwesome.otf
│ │ │ ├── fontawesome-webfont.eot
│ │ │ ├── fontawesome-webfont.ttf
│ │ │ ├── fontawesome-webfont.woff
│ │ │ └── fontawesome-webfont.woff2
│ │ ├── less
│ │ │ ├── screen-reader.less
│ │ │ ├── fixed-width.less
│ │ │ ├── larger.less
│ │ │ ├── list.less
│ │ │ ├── core.less
│ │ │ ├── stacked.less
│ │ │ ├── font-awesome.less
│ │ │ ├── bordered-pulled.less
│ │ │ ├── rotated-flipped.less
│ │ │ ├── path.less
│ │ │ ├── animated.less
│ │ │ └── mixins.less
│ │ └── scss
│ │ │ ├── _fixed-width.scss
│ │ │ ├── _screen-reader.scss
│ │ │ ├── _larger.scss
│ │ │ ├── _list.scss
│ │ │ ├── _core.scss
│ │ │ ├── font-awesome.scss
│ │ │ ├── _stacked.scss
│ │ │ ├── _bordered-pulled.scss
│ │ │ ├── _rotated-flipped.scss
│ │ │ ├── _path.scss
│ │ │ ├── _animated.scss
│ │ │ └── _mixins.scss
│ └── bootstrap
│ │ └── fonts
│ │ ├── glyphicons-halflings-regular.eot
│ │ ├── glyphicons-halflings-regular.ttf
│ │ ├── glyphicons-halflings-regular.woff
│ │ └── glyphicons-halflings-regular.woff2
├── sass
│ ├── app.scss
│ └── _variables.scss
├── less
│ ├── variables.less
│ └── mixins.less
├── .htaccess
├── js
│ ├── app.js
│ ├── components
│ │ └── Example.vue
│ ├── freelancer.min.js
│ ├── bootstrap.js
│ └── freelancer.js
├── web.config
└── index.php
├── database
├── .gitignore
├── seeds
│ ├── TagsSeeder.php
│ ├── UsersSeeder.php
│ ├── ArticlesSeeder.php
│ ├── CommentsSeeder.php
│ ├── SectionsSeeder.php
│ └── DatabaseSeeder.php
├── migrations
│ ├── 2014_10_12_100000_create_password_resets_table.php
│ ├── 2014_10_12_000000_create_users_table.php
│ ├── 2017_03_15_151807_create_sections_table.php
│ ├── 2017_03_15_151841_create_comments_table.php
│ ├── 2017_03_15_151826_create_articles_table.php
│ └── 2017_04_02_063506_create_tags_table.php
└── factories
│ └── ModelFactory.php
├── bootstrap
├── cache
│ └── .gitignore
├── autoload.php
└── app.php
├── storage
├── logs
│ └── .gitignore
├── app
│ ├── public
│ │ └── .gitignore
│ └── .gitignore
└── framework
│ ├── cache
│ └── .gitignore
│ ├── testing
│ └── .gitignore
│ ├── views
│ └── .gitignore
│ ├── sessions
│ └── .gitignore
│ └── .gitignore
├── resources
├── views
│ ├── vendor
│ │ ├── mail
│ │ │ ├── markdown
│ │ │ │ ├── panel.blade.php
│ │ │ │ ├── table.blade.php
│ │ │ │ ├── footer.blade.php
│ │ │ │ ├── promotion.blade.php
│ │ │ │ ├── subcopy.blade.php
│ │ │ │ ├── button.blade.php
│ │ │ │ ├── header.blade.php
│ │ │ │ ├── promotion
│ │ │ │ │ └── button.blade.php
│ │ │ │ ├── layout.blade.php
│ │ │ │ └── message.blade.php
│ │ │ └── html
│ │ │ │ ├── table.blade.php
│ │ │ │ ├── header.blade.php
│ │ │ │ ├── subcopy.blade.php
│ │ │ │ ├── promotion.blade.php
│ │ │ │ ├── footer.blade.php
│ │ │ │ ├── panel.blade.php
│ │ │ │ ├── promotion
│ │ │ │ └── button.blade.php
│ │ │ │ ├── message.blade.php
│ │ │ │ ├── button.blade.php
│ │ │ │ └── layout.blade.php
│ │ ├── pagination
│ │ │ ├── simple-default.blade.php
│ │ │ ├── simple-bootstrap-4.blade.php
│ │ │ ├── default.blade.php
│ │ │ └── bootstrap-4.blade.php
│ │ └── notifications
│ │ │ └── email.blade.php
│ ├── partials
│ │ ├── errors.blade.php
│ │ ├── messages.blade.php
│ │ ├── header.blade.php
│ │ └── menu.blade.php
│ ├── emails
│ │ ├── reset_password.blade.php
│ │ ├── new_comment.blade.php
│ │ └── articles
│ │ │ └── new.blade.php
│ ├── errors
│ │ ├── 401.blade.php
│ │ └── 404.blade.php
│ ├── home.blade.php
│ ├── public
│ │ └── index.blade.php
│ ├── tags
│ │ ├── show.blade.php
│ │ └── edit.blade.php
│ ├── sections
│ │ ├── show.blade.php
│ │ └── edit.blade.php
│ ├── users
│ │ ├── show.blade.php
│ │ └── edit.blade.php
│ └── auth
│ │ └── passwords
│ │ └── email.blade.php
├── assets
│ ├── img
│ │ ├── profile.png
│ │ └── portfolio
│ │ │ ├── cake.png
│ │ │ ├── game.png
│ │ │ ├── safe.png
│ │ │ ├── cabin.png
│ │ │ ├── circus.png
│ │ │ └── submarine.png
│ ├── vendor
│ │ ├── font-awesome
│ │ │ ├── fonts
│ │ │ │ ├── FontAwesome.otf
│ │ │ │ ├── fontawesome-webfont.eot
│ │ │ │ ├── fontawesome-webfont.ttf
│ │ │ │ ├── fontawesome-webfont.woff
│ │ │ │ └── fontawesome-webfont.woff2
│ │ │ ├── less
│ │ │ │ ├── screen-reader.less
│ │ │ │ ├── fixed-width.less
│ │ │ │ ├── larger.less
│ │ │ │ ├── list.less
│ │ │ │ ├── core.less
│ │ │ │ ├── stacked.less
│ │ │ │ ├── font-awesome.less
│ │ │ │ ├── bordered-pulled.less
│ │ │ │ ├── rotated-flipped.less
│ │ │ │ ├── path.less
│ │ │ │ ├── animated.less
│ │ │ │ └── mixins.less
│ │ │ └── scss
│ │ │ │ ├── _fixed-width.scss
│ │ │ │ ├── _screen-reader.scss
│ │ │ │ ├── _larger.scss
│ │ │ │ ├── _list.scss
│ │ │ │ ├── _core.scss
│ │ │ │ ├── font-awesome.scss
│ │ │ │ ├── _stacked.scss
│ │ │ │ ├── _bordered-pulled.scss
│ │ │ │ ├── _rotated-flipped.scss
│ │ │ │ ├── _path.scss
│ │ │ │ ├── _animated.scss
│ │ │ │ └── _mixins.scss
│ │ └── bootstrap
│ │ │ └── fonts
│ │ │ ├── glyphicons-halflings-regular.eot
│ │ │ ├── glyphicons-halflings-regular.ttf
│ │ │ ├── glyphicons-halflings-regular.woff
│ │ │ └── glyphicons-halflings-regular.woff2
│ ├── sass
│ │ ├── app.scss
│ │ └── _variables.scss
│ ├── less
│ │ ├── variables.less
│ │ └── mixins.less
│ └── js
│ │ ├── app.js
│ │ ├── components
│ │ └── Example.vue
│ │ ├── freelancer.min.js
│ │ ├── bootstrap.js
│ │ └── freelancer.js
└── lang
│ ├── de
│ ├── tags.php
│ ├── sections.php
│ ├── users.php
│ ├── articles.php
│ ├── comments.php
│ ├── emails.php
│ ├── pagination.php
│ ├── auth.php
│ └── passwords.php
│ ├── en
│ ├── tags.php
│ ├── sections.php
│ ├── users.php
│ ├── articles.php
│ ├── comments.php
│ ├── emails.php
│ ├── pagination.php
│ ├── auth.php
│ ├── passwords.php
│ └── global.php
│ └── ar
│ ├── tags.php
│ ├── sections.php
│ ├── users.php
│ ├── articles.php
│ ├── comments.php
│ ├── emails.php
│ ├── pagination.php
│ ├── auth.php
│ ├── passwords.php
│ └── global.php
├── .gitattributes
├── .gitignore
├── .env.travis
├── config
├── pagination.php
├── services.php
├── view.php
├── broadcasting.php
├── filesystems.php
├── queue.php
└── cache.php
├── tests
├── TestCase.php
├── Unit
│ └── ExampleTest.php
├── CreatesApplication.php
└── Feature
│ └── ExampleTest.php
├── app
├── Http
│ ├── Middleware
│ │ ├── EncryptCookies.php
│ │ ├── VerifyCsrfToken.php
│ │ ├── TrimStrings.php
│ │ ├── RedirectIfAuthenticated.php
│ │ └── Locale.php
│ ├── Controllers
│ │ ├── Controller.php
│ │ ├── PublicController.php
│ │ ├── HomeController.php
│ │ ├── Auth
│ │ │ ├── ForgotPasswordController.php
│ │ │ ├── LoginController.php
│ │ │ ├── ResetPasswordController.php
│ │ │ └── RegisterController.php
│ │ └── CommentsController.php
│ ├── Requests
│ │ ├── TagsRequest.php
│ │ ├── SectionsRequest.php
│ │ ├── CommentsRequest.php
│ │ ├── UsersRequest.php
│ │ └── ArticlesRequest.php
│ └── Kernel.php
├── Providers
│ ├── BroadcastServiceProvider.php
│ ├── AppServiceProvider.php
│ ├── AuthServiceProvider.php
│ ├── EventServiceProvider.php
│ └── RouteServiceProvider.php
├── Models
│ ├── Tag.php
│ ├── User.php
│ ├── Comment.php
│ ├── MainModel.php
│ ├── Section.php
│ └── Article.php
├── Listeners
│ └── NotifyUsers.php
├── Events
│ └── ArticleCreated.php
├── Mail
│ └── SendArticleNotification.php
├── Console
│ ├── Kernel.php
│ └── Commands
│ │ └── ClearDB.php
├── Notifications
│ ├── NewCommentNotification.php
│ └── NewUserNotification.php
└── Exceptions
│ └── Handler.php
├── .travis.yml
├── routes
├── channels.php
├── api.php
├── console.php
└── web.php
├── server.php
├── webpack.mix.js
├── .env.example
├── LICENSE.md
├── phpunit.xml
├── package.json
├── composer.json
├── artisan
└── readme.md
/public/favicon.ico:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/database/.gitignore:
--------------------------------------------------------------------------------
1 | *.sqlite
2 |
--------------------------------------------------------------------------------
/bootstrap/cache/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
3 |
--------------------------------------------------------------------------------
/storage/logs/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
3 |
--------------------------------------------------------------------------------
/public/robots.txt:
--------------------------------------------------------------------------------
1 | User-agent: *
2 | Disallow:
3 |
--------------------------------------------------------------------------------
/storage/app/public/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
3 |
--------------------------------------------------------------------------------
/storage/app/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !public/
3 | !.gitignore
4 |
--------------------------------------------------------------------------------
/storage/framework/cache/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
3 |
--------------------------------------------------------------------------------
/storage/framework/testing/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
3 |
--------------------------------------------------------------------------------
/storage/framework/views/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
3 |
--------------------------------------------------------------------------------
/storage/framework/sessions/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
3 |
--------------------------------------------------------------------------------
/resources/views/vendor/mail/markdown/panel.blade.php:
--------------------------------------------------------------------------------
1 | {{ $slot }}
2 |
--------------------------------------------------------------------------------
/resources/views/vendor/mail/markdown/table.blade.php:
--------------------------------------------------------------------------------
1 | {{ $slot }}
2 |
--------------------------------------------------------------------------------
/resources/views/vendor/mail/markdown/footer.blade.php:
--------------------------------------------------------------------------------
1 | {{ $slot }}
2 |
--------------------------------------------------------------------------------
/resources/views/vendor/mail/markdown/promotion.blade.php:
--------------------------------------------------------------------------------
1 | {{ $slot }}
2 |
--------------------------------------------------------------------------------
/resources/views/vendor/mail/markdown/subcopy.blade.php:
--------------------------------------------------------------------------------
1 | {{ $slot }}
2 |
--------------------------------------------------------------------------------
/resources/views/vendor/mail/markdown/button.blade.php:
--------------------------------------------------------------------------------
1 | {{ $slot }}: {{ $url }}
2 |
--------------------------------------------------------------------------------
/resources/views/vendor/mail/markdown/header.blade.php:
--------------------------------------------------------------------------------
1 | [{{ $slot }}]({{ $url }})
2 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | * text=auto
2 | *.css linguist-vendored
3 | *.scss linguist-vendored
4 |
--------------------------------------------------------------------------------
/resources/views/vendor/mail/markdown/promotion/button.blade.php:
--------------------------------------------------------------------------------
1 | [{{ $slot }}]({{ $url }})
2 |
--------------------------------------------------------------------------------
/public/img/profile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/omartawba1/start_laravel/HEAD/public/img/profile.png
--------------------------------------------------------------------------------
/public/img/profile1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/omartawba1/start_laravel/HEAD/public/img/profile1.png
--------------------------------------------------------------------------------
/public/img/portfolio/cake.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/omartawba1/start_laravel/HEAD/public/img/portfolio/cake.png
--------------------------------------------------------------------------------
/public/img/portfolio/game.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/omartawba1/start_laravel/HEAD/public/img/portfolio/game.png
--------------------------------------------------------------------------------
/public/img/portfolio/safe.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/omartawba1/start_laravel/HEAD/public/img/portfolio/safe.png
--------------------------------------------------------------------------------
/public/img/portfolio/cabin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/omartawba1/start_laravel/HEAD/public/img/portfolio/cabin.png
--------------------------------------------------------------------------------
/public/img/portfolio/circus.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/omartawba1/start_laravel/HEAD/public/img/portfolio/circus.png
--------------------------------------------------------------------------------
/public/img/portfolio/submarine.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/omartawba1/start_laravel/HEAD/public/img/portfolio/submarine.png
--------------------------------------------------------------------------------
/resources/assets/img/profile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/omartawba1/start_laravel/HEAD/resources/assets/img/profile.png
--------------------------------------------------------------------------------
/resources/views/vendor/mail/html/table.blade.php:
--------------------------------------------------------------------------------
1 |
2 | {{ Illuminate\Mail\Markdown::parse($slot) }}
3 |
4 |
--------------------------------------------------------------------------------
/resources/assets/img/portfolio/cake.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/omartawba1/start_laravel/HEAD/resources/assets/img/portfolio/cake.png
--------------------------------------------------------------------------------
/resources/assets/img/portfolio/game.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/omartawba1/start_laravel/HEAD/resources/assets/img/portfolio/game.png
--------------------------------------------------------------------------------
/resources/assets/img/portfolio/safe.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/omartawba1/start_laravel/HEAD/resources/assets/img/portfolio/safe.png
--------------------------------------------------------------------------------
/resources/assets/img/portfolio/cabin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/omartawba1/start_laravel/HEAD/resources/assets/img/portfolio/cabin.png
--------------------------------------------------------------------------------
/resources/assets/img/portfolio/circus.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/omartawba1/start_laravel/HEAD/resources/assets/img/portfolio/circus.png
--------------------------------------------------------------------------------
/resources/assets/img/portfolio/submarine.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/omartawba1/start_laravel/HEAD/resources/assets/img/portfolio/submarine.png
--------------------------------------------------------------------------------
/public/vendor/font-awesome/fonts/FontAwesome.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/omartawba1/start_laravel/HEAD/public/vendor/font-awesome/fonts/FontAwesome.otf
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | /node_modules
2 | /public/storage
3 | /public/hot
4 | /storage/*.key
5 | /vendor
6 | /.idea
7 | Homestead.json
8 | Homestead.yaml
9 | .env
10 |
--------------------------------------------------------------------------------
/resources/lang/de/tags.php:
--------------------------------------------------------------------------------
1 | 'Tags',
5 | 'attributes' => [
6 | 'name' => 'Naam',
7 | ],
8 | ];
9 |
--------------------------------------------------------------------------------
/resources/lang/en/tags.php:
--------------------------------------------------------------------------------
1 | 'Tags',
5 | 'attributes' => [
6 | 'name' => 'Name',
7 | ],
8 | ];
9 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/resources/lang/ar/tags.php:
--------------------------------------------------------------------------------
1 | 'الأوسمة',
5 | 'attributes' => [
6 | 'name' => 'الاسم',
7 | ],
8 | ];
9 |
--------------------------------------------------------------------------------
/public/vendor/font-awesome/fonts/fontawesome-webfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/omartawba1/start_laravel/HEAD/public/vendor/font-awesome/fonts/fontawesome-webfont.eot
--------------------------------------------------------------------------------
/public/vendor/font-awesome/fonts/fontawesome-webfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/omartawba1/start_laravel/HEAD/public/vendor/font-awesome/fonts/fontawesome-webfont.ttf
--------------------------------------------------------------------------------
/resources/lang/ar/sections.php:
--------------------------------------------------------------------------------
1 | 'الأقسام',
5 | 'attributes' => [
6 | 'title' => 'العنوان',
7 | ],
8 | ];
9 |
--------------------------------------------------------------------------------
/resources/lang/de/sections.php:
--------------------------------------------------------------------------------
1 | 'secties',
5 | 'attributes' => [
6 | 'title' => 'Titel',
7 | ],
8 | ];
9 |
--------------------------------------------------------------------------------
/resources/lang/en/sections.php:
--------------------------------------------------------------------------------
1 | 'Sections',
5 | 'attributes' => [
6 | 'title' => 'Title',
7 | ],
8 | ];
9 |
--------------------------------------------------------------------------------
/public/vendor/font-awesome/fonts/fontawesome-webfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/omartawba1/start_laravel/HEAD/public/vendor/font-awesome/fonts/fontawesome-webfont.woff
--------------------------------------------------------------------------------
/public/vendor/font-awesome/fonts/fontawesome-webfont.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/omartawba1/start_laravel/HEAD/public/vendor/font-awesome/fonts/fontawesome-webfont.woff2
--------------------------------------------------------------------------------
/resources/assets/vendor/font-awesome/fonts/FontAwesome.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/omartawba1/start_laravel/HEAD/resources/assets/vendor/font-awesome/fonts/FontAwesome.otf
--------------------------------------------------------------------------------
/public/vendor/bootstrap/fonts/glyphicons-halflings-regular.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/omartawba1/start_laravel/HEAD/public/vendor/bootstrap/fonts/glyphicons-halflings-regular.eot
--------------------------------------------------------------------------------
/public/vendor/bootstrap/fonts/glyphicons-halflings-regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/omartawba1/start_laravel/HEAD/public/vendor/bootstrap/fonts/glyphicons-halflings-regular.ttf
--------------------------------------------------------------------------------
/public/vendor/bootstrap/fonts/glyphicons-halflings-regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/omartawba1/start_laravel/HEAD/public/vendor/bootstrap/fonts/glyphicons-halflings-regular.woff
--------------------------------------------------------------------------------
/public/vendor/bootstrap/fonts/glyphicons-halflings-regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/omartawba1/start_laravel/HEAD/public/vendor/bootstrap/fonts/glyphicons-halflings-regular.woff2
--------------------------------------------------------------------------------
/public/vendor/font-awesome/less/screen-reader.less:
--------------------------------------------------------------------------------
1 | // Screen Readers
2 | // -------------------------
3 |
4 | .sr-only { .sr-only(); }
5 | .sr-only-focusable { .sr-only-focusable(); }
6 |
--------------------------------------------------------------------------------
/public/vendor/font-awesome/less/fixed-width.less:
--------------------------------------------------------------------------------
1 | // Fixed Width Icons
2 | // -------------------------
3 | .@{fa-css-prefix}-fw {
4 | width: (18em / 14);
5 | text-align: center;
6 | }
7 |
--------------------------------------------------------------------------------
/public/vendor/font-awesome/scss/_fixed-width.scss:
--------------------------------------------------------------------------------
1 | // Fixed Width Icons
2 | // -------------------------
3 | .#{$fa-css-prefix}-fw {
4 | width: (18em / 14);
5 | text-align: center;
6 | }
7 |
--------------------------------------------------------------------------------
/resources/assets/vendor/font-awesome/fonts/fontawesome-webfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/omartawba1/start_laravel/HEAD/resources/assets/vendor/font-awesome/fonts/fontawesome-webfont.eot
--------------------------------------------------------------------------------
/resources/assets/vendor/font-awesome/fonts/fontawesome-webfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/omartawba1/start_laravel/HEAD/resources/assets/vendor/font-awesome/fonts/fontawesome-webfont.ttf
--------------------------------------------------------------------------------
/resources/views/vendor/mail/html/header.blade.php:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
--------------------------------------------------------------------------------
/resources/assets/vendor/font-awesome/fonts/fontawesome-webfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/omartawba1/start_laravel/HEAD/resources/assets/vendor/font-awesome/fonts/fontawesome-webfont.woff
--------------------------------------------------------------------------------
/resources/assets/vendor/font-awesome/fonts/fontawesome-webfont.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/omartawba1/start_laravel/HEAD/resources/assets/vendor/font-awesome/fonts/fontawesome-webfont.woff2
--------------------------------------------------------------------------------
/resources/assets/vendor/font-awesome/less/screen-reader.less:
--------------------------------------------------------------------------------
1 | // Screen Readers
2 | // -------------------------
3 |
4 | .sr-only { .sr-only(); }
5 | .sr-only-focusable { .sr-only-focusable(); }
6 |
--------------------------------------------------------------------------------
/resources/assets/vendor/font-awesome/less/fixed-width.less:
--------------------------------------------------------------------------------
1 | // Fixed Width Icons
2 | // -------------------------
3 | .@{fa-css-prefix}-fw {
4 | width: (18em / 14);
5 | text-align: center;
6 | }
7 |
--------------------------------------------------------------------------------
/resources/assets/vendor/font-awesome/scss/_fixed-width.scss:
--------------------------------------------------------------------------------
1 | // Fixed Width Icons
2 | // -------------------------
3 | .#{$fa-css-prefix}-fw {
4 | width: (18em / 14);
5 | text-align: center;
6 | }
7 |
--------------------------------------------------------------------------------
/public/vendor/font-awesome/scss/_screen-reader.scss:
--------------------------------------------------------------------------------
1 | // Screen Readers
2 | // -------------------------
3 |
4 | .sr-only { @include sr-only(); }
5 | .sr-only-focusable { @include sr-only-focusable(); }
6 |
--------------------------------------------------------------------------------
/resources/assets/vendor/bootstrap/fonts/glyphicons-halflings-regular.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/omartawba1/start_laravel/HEAD/resources/assets/vendor/bootstrap/fonts/glyphicons-halflings-regular.eot
--------------------------------------------------------------------------------
/resources/assets/vendor/bootstrap/fonts/glyphicons-halflings-regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/omartawba1/start_laravel/HEAD/resources/assets/vendor/bootstrap/fonts/glyphicons-halflings-regular.ttf
--------------------------------------------------------------------------------
/resources/assets/vendor/bootstrap/fonts/glyphicons-halflings-regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/omartawba1/start_laravel/HEAD/resources/assets/vendor/bootstrap/fonts/glyphicons-halflings-regular.woff
--------------------------------------------------------------------------------
/resources/assets/vendor/bootstrap/fonts/glyphicons-halflings-regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/omartawba1/start_laravel/HEAD/resources/assets/vendor/bootstrap/fonts/glyphicons-halflings-regular.woff2
--------------------------------------------------------------------------------
/resources/lang/en/users.php:
--------------------------------------------------------------------------------
1 | 'Users',
5 | 'attributes' => [
6 | 'name' => 'Name',
7 | 'email' => 'Email',
8 | ],
9 | ];
10 |
--------------------------------------------------------------------------------
/.env.travis:
--------------------------------------------------------------------------------
1 | APP_ENV=testing
2 | APP_KEY=
3 |
4 | CACHE_DRIVER=array
5 | SESSION_DRIVER=array
6 | QUEUE_DRIVER=sync
7 |
8 | SCOUT_DRIVER=null
9 | ALGOLIA_APP_ID=
10 | ALGOLIA_KEY=
11 | ALGOLIA_SECRET=
--------------------------------------------------------------------------------
/config/pagination.php:
--------------------------------------------------------------------------------
1 | 10,
12 | ];
13 |
--------------------------------------------------------------------------------
/resources/lang/de/users.php:
--------------------------------------------------------------------------------
1 | 'gebruikers',
5 | 'attributes' => [
6 | 'name' => 'Naam',
7 | 'email' => 'E-mail',
8 | ],
9 | ];
10 |
--------------------------------------------------------------------------------
/resources/assets/vendor/font-awesome/scss/_screen-reader.scss:
--------------------------------------------------------------------------------
1 | // Screen Readers
2 | // -------------------------
3 |
4 | .sr-only { @include sr-only(); }
5 | .sr-only-focusable { @include sr-only-focusable(); }
6 |
--------------------------------------------------------------------------------
/resources/lang/ar/users.php:
--------------------------------------------------------------------------------
1 | 'المستخدمين',
5 | 'attributes' => [
6 | 'name' => 'الاسم',
7 | 'email' => 'البريد الالكتروني',
8 | ],
9 | ];
10 |
--------------------------------------------------------------------------------
/tests/TestCase.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | {{ Illuminate\Mail\Markdown::parse($slot) }}
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/public/sass/app.scss:
--------------------------------------------------------------------------------
1 |
2 | // Fonts
3 | @import url(https://fonts.googleapis.com/css?family=Raleway:300,400,600);
4 |
5 | // Variables
6 | @import "variables";
7 |
8 | // Bootstrap
9 | @import "node_modules/bootstrap-sass/assets/stylesheets/bootstrap";
10 |
--------------------------------------------------------------------------------
/resources/assets/sass/app.scss:
--------------------------------------------------------------------------------
1 |
2 | // Fonts
3 | @import url(https://fonts.googleapis.com/css?family=Raleway:300,400,600);
4 |
5 | // Variables
6 | @import "variables";
7 |
8 | // Bootstrap
9 | @import "node_modules/bootstrap-sass/assets/stylesheets/bootstrap";
10 |
--------------------------------------------------------------------------------
/resources/views/vendor/mail/html/promotion.blade.php:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/resources/views/partials/errors.blade.php:
--------------------------------------------------------------------------------
1 | @if(!empty($errors) && count($errors))
2 |
3 |
4 | @foreach($errors->all() as $single)
5 | {{ $single }}
6 | @endforeach
7 |
8 |
9 | @endif
--------------------------------------------------------------------------------
/resources/views/emails/reset_password.blade.php:
--------------------------------------------------------------------------------
1 | {{ trans('emails.welcome') }}
2 | {{ trans('emails.click') }}
3 |
4 | {{ trans('emails.here') }}
5 |
6 | {{ trans('emails.reset') }}
7 |
8 |
9 | {{ trans('emails.br') }}
10 | {{ config('app.name') }}
11 |
--------------------------------------------------------------------------------
/database/seeds/TagsSeeder.php:
--------------------------------------------------------------------------------
1 | create();
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/database/seeds/UsersSeeder.php:
--------------------------------------------------------------------------------
1 | create();
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/database/seeds/ArticlesSeeder.php:
--------------------------------------------------------------------------------
1 | create();
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/database/seeds/CommentsSeeder.php:
--------------------------------------------------------------------------------
1 | create();
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/database/seeds/SectionsSeeder.php:
--------------------------------------------------------------------------------
1 | create();
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/resources/views/partials/messages.blade.php:
--------------------------------------------------------------------------------
1 | @if (session('msg'))
2 |
3 |
4 | ×
5 |
6 | {{ session()->pull('msg') }}
7 |
8 | @endif
9 |
--------------------------------------------------------------------------------
/resources/lang/ar/articles.php:
--------------------------------------------------------------------------------
1 | 'المقالات',
5 | 'all_sections' => 'كل الأقسام',
6 | 'attributes' => [
7 | 'title' => 'العنوان',
8 | 'text' => 'المحتوى',
9 | 'section_id' => 'القسم',
10 | 'published' => 'منشور',
11 | ],
12 | 'latest' => 'أحدث المقالات',
13 | ];
14 |
--------------------------------------------------------------------------------
/resources/lang/ar/comments.php:
--------------------------------------------------------------------------------
1 | 'التعليقات',
5 | 'comment' => 'تعليق',
6 | 'attributes' => [
7 | 'text' => 'المحتوى',
8 | 'article_id' => 'المقال',
9 | ],
10 | 'no_comments' => 'عفوا لا يوجد تعليقات',
11 | 'placeholder' => 'ضع تعليقك هنا',
12 | 'publish' => 'نشر التعليق',
13 | ];
14 |
--------------------------------------------------------------------------------
/resources/lang/en/articles.php:
--------------------------------------------------------------------------------
1 | 'Articles',
5 | 'all_sections' => 'All sections',
6 | 'attributes' => [
7 | 'title' => 'Title',
8 | 'text' => 'Text',
9 | 'section_id' => 'Section',
10 | 'published' => 'Published',
11 | ],
12 | 'latest' => 'Latest Articles',
13 | ];
14 |
--------------------------------------------------------------------------------
/resources/lang/de/articles.php:
--------------------------------------------------------------------------------
1 | 'artikelen',
5 | 'all_sections' => 'alle onderdelen',
6 | 'attributes' => [
7 | 'title' => 'Titel',
8 | 'text' => 'tekst',
9 | 'section_id' => 'Sectie',
10 | 'published' => 'Gepubliceerd',
11 | ],
12 | 'latest' => 'Laatste artikels',
13 | ];
14 |
--------------------------------------------------------------------------------
/resources/views/emails/new_comment.blade.php:
--------------------------------------------------------------------------------
1 | {{ trans('emails.welcome') }}
2 | {{ trans('emails.new_comment') }}
3 | {{ trans('emails.click') }}
4 |
5 | {{ trans('emails.here') }}
6 |
7 | {{ trans('emails.review') }}
8 |
9 |
10 | {{ trans('emails.br') }}
11 | {{ config('app.name') }}
12 |
--------------------------------------------------------------------------------
/resources/lang/en/comments.php:
--------------------------------------------------------------------------------
1 | 'Comments',
5 | 'comment' => 'Comment',
6 | 'attributes' => [
7 | 'text' => 'Text',
8 | 'article_id' => 'Article',
9 | ],
10 | 'no_comments' => 'Sorry! no comments yet',
11 | 'placeholder' => 'Your Comment Here !',
12 | 'publish' => 'Publish your comment',
13 | ];
14 |
--------------------------------------------------------------------------------
/resources/views/emails/articles/new.blade.php:
--------------------------------------------------------------------------------
1 | {{ trans('emails.welcome') }}
2 | {{ trans('emails.new_article') }}
3 | {{ trans('emails.click') }}
4 |
5 | {{ trans('emails.here') }}
6 |
7 | {{ trans('emails.review') }}
8 |
9 |
10 |
11 | {{ trans('emails.br') }}
12 | {{ config('app.name') }}
13 |
--------------------------------------------------------------------------------
/resources/lang/de/comments.php:
--------------------------------------------------------------------------------
1 | 'Comments',
5 | 'comment' => 'Commentaar',
6 | 'attributes' => [
7 | 'text' => 'tekst',
8 | 'article_id' => 'Artikel',
9 | ],
10 | 'no_comments' => 'Sorry! Nog geen reacties',
11 | 'placeholder' => 'Uw reactie hier!',
12 | 'publish' => 'Publiceer je reactie',
13 | ];
14 |
--------------------------------------------------------------------------------
/resources/views/vendor/mail/html/footer.blade.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/app/Http/Middleware/EncryptCookies.php:
--------------------------------------------------------------------------------
1 | 'مرحبآ بك في بوابتنا',
5 | 'new_comment' => 'تعليق جديد في مقالتك',
6 | 'here' => 'هنا',
7 | 'click' => 'تستطيع الضغط هنا',
8 | 'review' => 'لمراجعته',
9 | 'br' => 'مع أطيب تمنياتنا ،',
10 | 'reset' => 'لإعادة تعيين كلمة المرور',
11 | 'new_article' => 'يوجد مقالة جديدة أضيفت',
12 | ];
13 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: php
2 |
3 | php:
4 | - 7.1
5 |
6 | before_script:
7 | - cp .env.travis .env
8 | - composer self-update
9 | - composer install --no-interaction
10 |
11 | script:
12 | - php artisan key:generate
13 | - vendor/bin/phpunit
14 |
15 | services:
16 | - redis-server
17 |
18 | cache:
19 | directories:
20 | - vendor
21 |
22 | test:
23 | adapter: sqlite3
24 | database: ":memory:"
25 | timeout: 500
--------------------------------------------------------------------------------
/app/Http/Controllers/Controller.php:
--------------------------------------------------------------------------------
1 | 'Welcome to our portal',
5 | 'new_comment' => 'New comment was added to your article',
6 | 'here' => 'here',
7 | 'click' => 'You can click',
8 | 'review' => 'to review it',
9 | 'br' => 'Best Regards,',
10 | 'reset' => 'for resetting your password',
11 | 'new_article' => 'Kindly informed that new article was added',
12 | ];
13 |
--------------------------------------------------------------------------------
/public/vendor/font-awesome/less/larger.less:
--------------------------------------------------------------------------------
1 | // Icon Sizes
2 | // -------------------------
3 |
4 | /* makes the font 33% larger relative to the icon container */
5 | .@{fa-css-prefix}-lg {
6 | font-size: (4em / 3);
7 | line-height: (3em / 4);
8 | vertical-align: -15%;
9 | }
10 | .@{fa-css-prefix}-2x { font-size: 2em; }
11 | .@{fa-css-prefix}-3x { font-size: 3em; }
12 | .@{fa-css-prefix}-4x { font-size: 4em; }
13 | .@{fa-css-prefix}-5x { font-size: 5em; }
14 |
--------------------------------------------------------------------------------
/tests/Unit/ExampleTest.php:
--------------------------------------------------------------------------------
1 | assertTrue(true);
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/public/vendor/font-awesome/scss/_larger.scss:
--------------------------------------------------------------------------------
1 | // Icon Sizes
2 | // -------------------------
3 |
4 | /* makes the font 33% larger relative to the icon container */
5 | .#{$fa-css-prefix}-lg {
6 | font-size: (4em / 3);
7 | line-height: (3em / 4);
8 | vertical-align: -15%;
9 | }
10 | .#{$fa-css-prefix}-2x { font-size: 2em; }
11 | .#{$fa-css-prefix}-3x { font-size: 3em; }
12 | .#{$fa-css-prefix}-4x { font-size: 4em; }
13 | .#{$fa-css-prefix}-5x { font-size: 5em; }
14 |
--------------------------------------------------------------------------------
/resources/assets/vendor/font-awesome/less/larger.less:
--------------------------------------------------------------------------------
1 | // Icon Sizes
2 | // -------------------------
3 |
4 | /* makes the font 33% larger relative to the icon container */
5 | .@{fa-css-prefix}-lg {
6 | font-size: (4em / 3);
7 | line-height: (3em / 4);
8 | vertical-align: -15%;
9 | }
10 | .@{fa-css-prefix}-2x { font-size: 2em; }
11 | .@{fa-css-prefix}-3x { font-size: 3em; }
12 | .@{fa-css-prefix}-4x { font-size: 4em; }
13 | .@{fa-css-prefix}-5x { font-size: 5em; }
14 |
--------------------------------------------------------------------------------
/resources/assets/vendor/font-awesome/scss/_larger.scss:
--------------------------------------------------------------------------------
1 | // Icon Sizes
2 | // -------------------------
3 |
4 | /* makes the font 33% larger relative to the icon container */
5 | .#{$fa-css-prefix}-lg {
6 | font-size: (4em / 3);
7 | line-height: (3em / 4);
8 | vertical-align: -15%;
9 | }
10 | .#{$fa-css-prefix}-2x { font-size: 2em; }
11 | .#{$fa-css-prefix}-3x { font-size: 3em; }
12 | .#{$fa-css-prefix}-4x { font-size: 4em; }
13 | .#{$fa-css-prefix}-5x { font-size: 5em; }
14 |
--------------------------------------------------------------------------------
/public/less/variables.less:
--------------------------------------------------------------------------------
1 | // Variables
2 |
3 | // Gray and Brand Colors for use across theme
4 |
5 | @theme-primary: #2C3E50;
6 | @theme-success: #18BC9C;
7 |
8 | @gray-base: #000;
9 | @gray-darker: lighten(@gray-base, 13.5%); // #222
10 | @gray-dark: lighten(@gray-base, 20%); // #333
11 | @gray: lighten(@gray-base, 33.5%); // #555
12 | @gray-light: lighten(@gray-base, 46.7%); // #777
13 | @gray-lighter: lighten(@gray-base, 93.5%); // #eee
--------------------------------------------------------------------------------
/resources/lang/de/emails.php:
--------------------------------------------------------------------------------
1 | 'Welkom op onze portal',
5 | 'new_comment' => 'Nieuwe opmerking werd toegevoegd aan uw artikel',
6 | 'here' => 'hier',
7 | 'click' => 'U kunt klikken',
8 | 'review' => 'te herzien',
9 | 'br' => 'Beste wensen,',
10 | 'reset' => 'voor het herstellen van uw wachtwoord',
11 | 'new_article' => 'Houd er rekening mee dat nieuwe artikel werd toegevoegd',
12 | ];
13 |
--------------------------------------------------------------------------------
/public/vendor/font-awesome/less/list.less:
--------------------------------------------------------------------------------
1 | // List Icons
2 | // -------------------------
3 |
4 | .@{fa-css-prefix}-ul {
5 | padding-left: 0;
6 | margin-left: @fa-li-width;
7 | list-style-type: none;
8 | > li { position: relative; }
9 | }
10 | .@{fa-css-prefix}-li {
11 | position: absolute;
12 | left: -@fa-li-width;
13 | width: @fa-li-width;
14 | top: (2em / 14);
15 | text-align: center;
16 | &.@{fa-css-prefix}-lg {
17 | left: (-@fa-li-width + (4em / 14));
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/public/vendor/font-awesome/scss/_list.scss:
--------------------------------------------------------------------------------
1 | // List Icons
2 | // -------------------------
3 |
4 | .#{$fa-css-prefix}-ul {
5 | padding-left: 0;
6 | margin-left: $fa-li-width;
7 | list-style-type: none;
8 | > li { position: relative; }
9 | }
10 | .#{$fa-css-prefix}-li {
11 | position: absolute;
12 | left: -$fa-li-width;
13 | width: $fa-li-width;
14 | top: (2em / 14);
15 | text-align: center;
16 | &.#{$fa-css-prefix}-lg {
17 | left: -$fa-li-width + (4em / 14);
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/resources/assets/less/variables.less:
--------------------------------------------------------------------------------
1 | // Variables
2 |
3 | // Gray and Brand Colors for use across theme
4 |
5 | @theme-primary: #2C3E50;
6 | @theme-success: #18BC9C;
7 |
8 | @gray-base: #000;
9 | @gray-darker: lighten(@gray-base, 13.5%); // #222
10 | @gray-dark: lighten(@gray-base, 20%); // #333
11 | @gray: lighten(@gray-base, 33.5%); // #555
12 | @gray-light: lighten(@gray-base, 46.7%); // #777
13 | @gray-lighter: lighten(@gray-base, 93.5%); // #eee
--------------------------------------------------------------------------------
/tests/CreatesApplication.php:
--------------------------------------------------------------------------------
1 | make(Kernel::class)->bootstrap();
19 |
20 | return $app;
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/app/Providers/BroadcastServiceProvider.php:
--------------------------------------------------------------------------------
1 | li { position: relative; }
9 | }
10 | .@{fa-css-prefix}-li {
11 | position: absolute;
12 | left: -@fa-li-width;
13 | width: @fa-li-width;
14 | top: (2em / 14);
15 | text-align: center;
16 | &.@{fa-css-prefix}-lg {
17 | left: (-@fa-li-width + (4em / 14));
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/resources/assets/vendor/font-awesome/scss/_list.scss:
--------------------------------------------------------------------------------
1 | // List Icons
2 | // -------------------------
3 |
4 | .#{$fa-css-prefix}-ul {
5 | padding-left: 0;
6 | margin-left: $fa-li-width;
7 | list-style-type: none;
8 | > li { position: relative; }
9 | }
10 | .#{$fa-css-prefix}-li {
11 | position: absolute;
12 | left: -$fa-li-width;
13 | width: $fa-li-width;
14 | top: (2em / 14);
15 | text-align: center;
16 | &.#{$fa-css-prefix}-lg {
17 | left: -$fa-li-width + (4em / 14);
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/database/seeds/DatabaseSeeder.php:
--------------------------------------------------------------------------------
1 | call(UsersSeeder::class);
15 | $this->call(SectionsSeeder::class);
16 | $this->call(ArticlesSeeder::class);
17 | $this->call(CommentsSeeder::class);
18 | $this->call(TagsSeeder::class);
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/resources/views/vendor/mail/html/promotion/button.blade.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/resources/views/errors/401.blade.php:
--------------------------------------------------------------------------------
1 | @extends('layouts.public')
2 |
3 | @section('content')
4 |
15 | @endsection
--------------------------------------------------------------------------------
/resources/views/errors/404.blade.php:
--------------------------------------------------------------------------------
1 | @extends('layouts.public')
2 |
3 | @section('content')
4 |
15 | @endsection
--------------------------------------------------------------------------------
/public/vendor/font-awesome/less/core.less:
--------------------------------------------------------------------------------
1 | // Base Class Definition
2 | // -------------------------
3 |
4 | .@{fa-css-prefix} {
5 | display: inline-block;
6 | font: normal normal normal @fa-font-size-base/@fa-line-height-base FontAwesome; // shortening font declaration
7 | font-size: inherit; // can't have font-size inherit on line above, so need to override
8 | text-rendering: auto; // optimizelegibility throws things off #1094
9 | -webkit-font-smoothing: antialiased;
10 | -moz-osx-font-smoothing: grayscale;
11 |
12 | }
13 |
--------------------------------------------------------------------------------
/public/vendor/font-awesome/scss/_core.scss:
--------------------------------------------------------------------------------
1 | // Base Class Definition
2 | // -------------------------
3 |
4 | .#{$fa-css-prefix} {
5 | display: inline-block;
6 | font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration
7 | font-size: inherit; // can't have font-size inherit on line above, so need to override
8 | text-rendering: auto; // optimizelegibility throws things off #1094
9 | -webkit-font-smoothing: antialiased;
10 | -moz-osx-font-smoothing: grayscale;
11 |
12 | }
13 |
--------------------------------------------------------------------------------
/resources/assets/vendor/font-awesome/less/core.less:
--------------------------------------------------------------------------------
1 | // Base Class Definition
2 | // -------------------------
3 |
4 | .@{fa-css-prefix} {
5 | display: inline-block;
6 | font: normal normal normal @fa-font-size-base/@fa-line-height-base FontAwesome; // shortening font declaration
7 | font-size: inherit; // can't have font-size inherit on line above, so need to override
8 | text-rendering: auto; // optimizelegibility throws things off #1094
9 | -webkit-font-smoothing: antialiased;
10 | -moz-osx-font-smoothing: grayscale;
11 |
12 | }
13 |
--------------------------------------------------------------------------------
/public/vendor/font-awesome/scss/font-awesome.scss:
--------------------------------------------------------------------------------
1 | /*!
2 | * Font Awesome 4.6.3 by @davegandy - http://fontawesome.io - @fontawesome
3 | * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
4 | */
5 |
6 | @import "variables";
7 | @import "mixins";
8 | @import "path";
9 | @import "core";
10 | @import "larger";
11 | @import "fixed-width";
12 | @import "list";
13 | @import "bordered-pulled";
14 | @import "animated";
15 | @import "rotated-flipped";
16 | @import "stacked";
17 | @import "icons";
18 | @import "screen-reader";
19 |
--------------------------------------------------------------------------------
/resources/assets/vendor/font-awesome/scss/_core.scss:
--------------------------------------------------------------------------------
1 | // Base Class Definition
2 | // -------------------------
3 |
4 | .#{$fa-css-prefix} {
5 | display: inline-block;
6 | font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration
7 | font-size: inherit; // can't have font-size inherit on line above, so need to override
8 | text-rendering: auto; // optimizelegibility throws things off #1094
9 | -webkit-font-smoothing: antialiased;
10 | -moz-osx-font-smoothing: grayscale;
11 |
12 | }
13 |
--------------------------------------------------------------------------------
/app/Models/Tag.php:
--------------------------------------------------------------------------------
1 | belongsToMany(Article::class);
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/resources/assets/vendor/font-awesome/scss/font-awesome.scss:
--------------------------------------------------------------------------------
1 | /*!
2 | * Font Awesome 4.6.3 by @davegandy - http://fontawesome.io - @fontawesome
3 | * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
4 | */
5 |
6 | @import "variables";
7 | @import "mixins";
8 | @import "path";
9 | @import "core";
10 | @import "larger";
11 | @import "fixed-width";
12 | @import "list";
13 | @import "bordered-pulled";
14 | @import "animated";
15 | @import "rotated-flipped";
16 | @import "stacked";
17 | @import "icons";
18 | @import "screen-reader";
19 |
--------------------------------------------------------------------------------
/routes/channels.php:
--------------------------------------------------------------------------------
1 | id === (int) $id;
16 | });
17 |
--------------------------------------------------------------------------------
/public/vendor/font-awesome/less/stacked.less:
--------------------------------------------------------------------------------
1 | // Stacked Icons
2 | // -------------------------
3 |
4 | .@{fa-css-prefix}-stack {
5 | position: relative;
6 | display: inline-block;
7 | width: 2em;
8 | height: 2em;
9 | line-height: 2em;
10 | vertical-align: middle;
11 | }
12 | .@{fa-css-prefix}-stack-1x, .@{fa-css-prefix}-stack-2x {
13 | position: absolute;
14 | left: 0;
15 | width: 100%;
16 | text-align: center;
17 | }
18 | .@{fa-css-prefix}-stack-1x { line-height: inherit; }
19 | .@{fa-css-prefix}-stack-2x { font-size: 2em; }
20 | .@{fa-css-prefix}-inverse { color: @fa-inverse; }
21 |
--------------------------------------------------------------------------------
/public/vendor/font-awesome/scss/_stacked.scss:
--------------------------------------------------------------------------------
1 | // Stacked Icons
2 | // -------------------------
3 |
4 | .#{$fa-css-prefix}-stack {
5 | position: relative;
6 | display: inline-block;
7 | width: 2em;
8 | height: 2em;
9 | line-height: 2em;
10 | vertical-align: middle;
11 | }
12 | .#{$fa-css-prefix}-stack-1x, .#{$fa-css-prefix}-stack-2x {
13 | position: absolute;
14 | left: 0;
15 | width: 100%;
16 | text-align: center;
17 | }
18 | .#{$fa-css-prefix}-stack-1x { line-height: inherit; }
19 | .#{$fa-css-prefix}-stack-2x { font-size: 2em; }
20 | .#{$fa-css-prefix}-inverse { color: $fa-inverse; }
21 |
--------------------------------------------------------------------------------
/resources/assets/vendor/font-awesome/less/stacked.less:
--------------------------------------------------------------------------------
1 | // Stacked Icons
2 | // -------------------------
3 |
4 | .@{fa-css-prefix}-stack {
5 | position: relative;
6 | display: inline-block;
7 | width: 2em;
8 | height: 2em;
9 | line-height: 2em;
10 | vertical-align: middle;
11 | }
12 | .@{fa-css-prefix}-stack-1x, .@{fa-css-prefix}-stack-2x {
13 | position: absolute;
14 | left: 0;
15 | width: 100%;
16 | text-align: center;
17 | }
18 | .@{fa-css-prefix}-stack-1x { line-height: inherit; }
19 | .@{fa-css-prefix}-stack-2x { font-size: 2em; }
20 | .@{fa-css-prefix}-inverse { color: @fa-inverse; }
21 |
--------------------------------------------------------------------------------
/resources/views/partials/header.blade.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
{!! trans('global.header') !!}
6 |
7 |
8 | {!! trans('global.header_span1') !!}
9 | {!! trans('global.header_span2') !!}
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/routes/api.php:
--------------------------------------------------------------------------------
1 | get('/user', function (Request $request) {
17 | return $request->user();
18 | });
19 |
--------------------------------------------------------------------------------
/public/vendor/font-awesome/less/font-awesome.less:
--------------------------------------------------------------------------------
1 | /*!
2 | * Font Awesome 4.6.3 by @davegandy - http://fontawesome.io - @fontawesome
3 | * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
4 | */
5 |
6 | @import "variables.less";
7 | @import "mixins.less";
8 | @import "path.less";
9 | @import "core.less";
10 | @import "larger.less";
11 | @import "fixed-width.less";
12 | @import "list.less";
13 | @import "bordered-pulled.less";
14 | @import "animated.less";
15 | @import "rotated-flipped.less";
16 | @import "stacked.less";
17 | @import "icons.less";
18 | @import "screen-reader.less";
19 |
--------------------------------------------------------------------------------
/resources/assets/vendor/font-awesome/scss/_stacked.scss:
--------------------------------------------------------------------------------
1 | // Stacked Icons
2 | // -------------------------
3 |
4 | .#{$fa-css-prefix}-stack {
5 | position: relative;
6 | display: inline-block;
7 | width: 2em;
8 | height: 2em;
9 | line-height: 2em;
10 | vertical-align: middle;
11 | }
12 | .#{$fa-css-prefix}-stack-1x, .#{$fa-css-prefix}-stack-2x {
13 | position: absolute;
14 | left: 0;
15 | width: 100%;
16 | text-align: center;
17 | }
18 | .#{$fa-css-prefix}-stack-1x { line-height: inherit; }
19 | .#{$fa-css-prefix}-stack-2x { font-size: 2em; }
20 | .#{$fa-css-prefix}-inverse { color: $fa-inverse; }
21 |
--------------------------------------------------------------------------------
/tests/Feature/ExampleTest.php:
--------------------------------------------------------------------------------
1 | get('/');
22 |
23 | $response->assertStatus(200);
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/resources/assets/vendor/font-awesome/less/font-awesome.less:
--------------------------------------------------------------------------------
1 | /*!
2 | * Font Awesome 4.6.3 by @davegandy - http://fontawesome.io - @fontawesome
3 | * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
4 | */
5 |
6 | @import "variables.less";
7 | @import "mixins.less";
8 | @import "path.less";
9 | @import "core.less";
10 | @import "larger.less";
11 | @import "fixed-width.less";
12 | @import "list.less";
13 | @import "bordered-pulled.less";
14 | @import "animated.less";
15 | @import "rotated-flipped.less";
16 | @import "stacked.less";
17 | @import "icons.less";
18 | @import "screen-reader.less";
19 |
--------------------------------------------------------------------------------
/resources/lang/ar/pagination.php:
--------------------------------------------------------------------------------
1 | '« السابق',
15 | 'next' => 'التالي »',
16 | ];
17 |
--------------------------------------------------------------------------------
/resources/lang/de/pagination.php:
--------------------------------------------------------------------------------
1 | '« Zurück',
15 | 'next' => 'Weiter »',
16 | ];
17 |
--------------------------------------------------------------------------------
/server.php:
--------------------------------------------------------------------------------
1 |
7 | */
8 | $uri = urldecode(
9 | parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH)
10 | );
11 |
12 | // This file allows us to emulate Apache's "mod_rewrite" functionality from the
13 | // built-in PHP web server. This provides a convenient way to test a Laravel
14 | // application without having installed a "real" web server software here.
15 | if ($uri !== '/' && file_exists(__DIR__.'/public'.$uri)) {
16 | return false;
17 | }
18 |
19 | require_once __DIR__.'/public/index.php';
20 |
--------------------------------------------------------------------------------
/webpack.mix.js:
--------------------------------------------------------------------------------
1 | const { 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/assets/js/app.js', 'public/js')
15 | .sass('resources/assets/sass/app.scss', 'public/css');
16 |
--------------------------------------------------------------------------------
/app/Providers/AppServiceProvider.php:
--------------------------------------------------------------------------------
1 | '« Previous',
17 | 'next' => 'Next »',
18 |
19 | ];
20 |
--------------------------------------------------------------------------------
/routes/console.php:
--------------------------------------------------------------------------------
1 | comment(Inspiring::quote());
18 | })->describe('Display an inspiring quote');
19 |
--------------------------------------------------------------------------------
/bootstrap/autoload.php:
--------------------------------------------------------------------------------
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 | RewriteRule ^(.*)/$ /$1 [L,R=301]
11 |
12 | # Handle Front Controller...
13 | RewriteCond %{REQUEST_FILENAME} !-d
14 | RewriteCond %{REQUEST_FILENAME} !-f
15 | RewriteRule ^ index.php [L]
16 |
17 | # Handle Authorization Header
18 | RewriteCond %{HTTP:Authorization} .
19 | RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
20 |
21 |
--------------------------------------------------------------------------------
/public/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 | /**
11 | * Next, we will create a fresh Vue application instance and attach it to
12 | * the page. Then, you may begin adding components to this application
13 | * or customize the JavaScript scaffolding to fit your unique needs.
14 | */
15 |
16 | Vue.component('example', require('./components/Example.vue'));
17 |
18 | const app = new Vue({
19 | el: '#app'
20 | });
21 |
--------------------------------------------------------------------------------
/app/Http/Middleware/RedirectIfAuthenticated.php:
--------------------------------------------------------------------------------
1 | check()) {
21 | return redirect('/home');
22 | }
23 |
24 | return $next($request);
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/resources/assets/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 | /**
11 | * Next, we will create a fresh Vue application instance and attach it to
12 | * the page. Then, you may begin adding components to this application
13 | * or customize the JavaScript scaffolding to fit your unique needs.
14 | */
15 |
16 | Vue.component('example', require('./components/Example.vue'));
17 |
18 | const app = new Vue({
19 | el: '#app'
20 | });
21 |
--------------------------------------------------------------------------------
/public/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 |
--------------------------------------------------------------------------------
/app/Models/User.php:
--------------------------------------------------------------------------------
1 | 'App\Policies\ModelPolicy',
16 | ];
17 |
18 | /**
19 | * Register any authentication / authorization services.
20 | *
21 | * @return void
22 | */
23 | public function boot()
24 | {
25 | $this->registerPolicies();
26 |
27 | //
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/resources/assets/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 |
--------------------------------------------------------------------------------
/app/Models/Comment.php:
--------------------------------------------------------------------------------
1 | belongsTo(Article::class);
20 | }
21 |
22 | /**
23 | * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
24 | */
25 | public function user()
26 | {
27 | return $this->belongsTo(User::class, 'created_by');
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/public/vendor/font-awesome/less/bordered-pulled.less:
--------------------------------------------------------------------------------
1 | // Bordered & Pulled
2 | // -------------------------
3 |
4 | .@{fa-css-prefix}-border {
5 | padding: .2em .25em .15em;
6 | border: solid .08em @fa-border-color;
7 | border-radius: .1em;
8 | }
9 |
10 | .@{fa-css-prefix}-pull-left { float: left; }
11 | .@{fa-css-prefix}-pull-right { float: right; }
12 |
13 | .@{fa-css-prefix} {
14 | &.@{fa-css-prefix}-pull-left { margin-right: .3em; }
15 | &.@{fa-css-prefix}-pull-right { margin-left: .3em; }
16 | }
17 |
18 | /* Deprecated as of 4.4.0 */
19 | .pull-right { float: right; }
20 | .pull-left { float: left; }
21 |
22 | .@{fa-css-prefix} {
23 | &.pull-left { margin-right: .3em; }
24 | &.pull-right { margin-left: .3em; }
25 | }
26 |
--------------------------------------------------------------------------------
/routes/web.php:
--------------------------------------------------------------------------------
1 | name('public.show');
7 | Route::post('/comments', 'CommentsController@store');
8 | Route::get('/home/{lang}', 'HomeController@changeLocal');
9 |
10 | Route::group(['middleware' => 'auth'], function () {
11 | Route::get('/home', 'HomeController@index');
12 | Route::resource('/sections', 'SectionsController');
13 | Route::resource('/articles', 'ArticlesController');
14 | Route::delete('/comments/{id}', 'CommentsController@destroy')->name('comments.destroy');
15 | Route::resource('/users', 'UsersController');
16 | Route::resource('/tags', 'TagsController');
17 | });
18 |
--------------------------------------------------------------------------------
/public/vendor/font-awesome/scss/_bordered-pulled.scss:
--------------------------------------------------------------------------------
1 | // Bordered & Pulled
2 | // -------------------------
3 |
4 | .#{$fa-css-prefix}-border {
5 | padding: .2em .25em .15em;
6 | border: solid .08em $fa-border-color;
7 | border-radius: .1em;
8 | }
9 |
10 | .#{$fa-css-prefix}-pull-left { float: left; }
11 | .#{$fa-css-prefix}-pull-right { float: right; }
12 |
13 | .#{$fa-css-prefix} {
14 | &.#{$fa-css-prefix}-pull-left { margin-right: .3em; }
15 | &.#{$fa-css-prefix}-pull-right { margin-left: .3em; }
16 | }
17 |
18 | /* Deprecated as of 4.4.0 */
19 | .pull-right { float: right; }
20 | .pull-left { float: left; }
21 |
22 | .#{$fa-css-prefix} {
23 | &.pull-left { margin-right: .3em; }
24 | &.pull-right { margin-left: .3em; }
25 | }
26 |
--------------------------------------------------------------------------------
/resources/assets/vendor/font-awesome/less/bordered-pulled.less:
--------------------------------------------------------------------------------
1 | // Bordered & Pulled
2 | // -------------------------
3 |
4 | .@{fa-css-prefix}-border {
5 | padding: .2em .25em .15em;
6 | border: solid .08em @fa-border-color;
7 | border-radius: .1em;
8 | }
9 |
10 | .@{fa-css-prefix}-pull-left { float: left; }
11 | .@{fa-css-prefix}-pull-right { float: right; }
12 |
13 | .@{fa-css-prefix} {
14 | &.@{fa-css-prefix}-pull-left { margin-right: .3em; }
15 | &.@{fa-css-prefix}-pull-right { margin-left: .3em; }
16 | }
17 |
18 | /* Deprecated as of 4.4.0 */
19 | .pull-right { float: right; }
20 | .pull-left { float: left; }
21 |
22 | .@{fa-css-prefix} {
23 | &.pull-left { margin-right: .3em; }
24 | &.pull-right { margin-left: .3em; }
25 | }
26 |
--------------------------------------------------------------------------------
/public/vendor/font-awesome/less/rotated-flipped.less:
--------------------------------------------------------------------------------
1 | // Rotated & Flipped Icons
2 | // -------------------------
3 |
4 | .@{fa-css-prefix}-rotate-90 { .fa-icon-rotate(90deg, 1); }
5 | .@{fa-css-prefix}-rotate-180 { .fa-icon-rotate(180deg, 2); }
6 | .@{fa-css-prefix}-rotate-270 { .fa-icon-rotate(270deg, 3); }
7 |
8 | .@{fa-css-prefix}-flip-horizontal { .fa-icon-flip(-1, 1, 0); }
9 | .@{fa-css-prefix}-flip-vertical { .fa-icon-flip(1, -1, 2); }
10 |
11 | // Hook for IE8-9
12 | // -------------------------
13 |
14 | :root .@{fa-css-prefix}-rotate-90,
15 | :root .@{fa-css-prefix}-rotate-180,
16 | :root .@{fa-css-prefix}-rotate-270,
17 | :root .@{fa-css-prefix}-flip-horizontal,
18 | :root .@{fa-css-prefix}-flip-vertical {
19 | filter: none;
20 | }
21 |
--------------------------------------------------------------------------------
/resources/assets/vendor/font-awesome/scss/_bordered-pulled.scss:
--------------------------------------------------------------------------------
1 | // Bordered & Pulled
2 | // -------------------------
3 |
4 | .#{$fa-css-prefix}-border {
5 | padding: .2em .25em .15em;
6 | border: solid .08em $fa-border-color;
7 | border-radius: .1em;
8 | }
9 |
10 | .#{$fa-css-prefix}-pull-left { float: left; }
11 | .#{$fa-css-prefix}-pull-right { float: right; }
12 |
13 | .#{$fa-css-prefix} {
14 | &.#{$fa-css-prefix}-pull-left { margin-right: .3em; }
15 | &.#{$fa-css-prefix}-pull-right { margin-left: .3em; }
16 | }
17 |
18 | /* Deprecated as of 4.4.0 */
19 | .pull-right { float: right; }
20 | .pull-left { float: left; }
21 |
22 | .#{$fa-css-prefix} {
23 | &.pull-left { margin-right: .3em; }
24 | &.pull-right { margin-left: .3em; }
25 | }
26 |
--------------------------------------------------------------------------------
/resources/assets/vendor/font-awesome/less/rotated-flipped.less:
--------------------------------------------------------------------------------
1 | // Rotated & Flipped Icons
2 | // -------------------------
3 |
4 | .@{fa-css-prefix}-rotate-90 { .fa-icon-rotate(90deg, 1); }
5 | .@{fa-css-prefix}-rotate-180 { .fa-icon-rotate(180deg, 2); }
6 | .@{fa-css-prefix}-rotate-270 { .fa-icon-rotate(270deg, 3); }
7 |
8 | .@{fa-css-prefix}-flip-horizontal { .fa-icon-flip(-1, 1, 0); }
9 | .@{fa-css-prefix}-flip-vertical { .fa-icon-flip(1, -1, 2); }
10 |
11 | // Hook for IE8-9
12 | // -------------------------
13 |
14 | :root .@{fa-css-prefix}-rotate-90,
15 | :root .@{fa-css-prefix}-rotate-180,
16 | :root .@{fa-css-prefix}-rotate-270,
17 | :root .@{fa-css-prefix}-flip-horizontal,
18 | :root .@{fa-css-prefix}-flip-vertical {
19 | filter: none;
20 | }
21 |
--------------------------------------------------------------------------------
/resources/views/vendor/pagination/simple-default.blade.php:
--------------------------------------------------------------------------------
1 | @if ($paginator->hasPages())
2 |
17 | @endif
18 |
--------------------------------------------------------------------------------
/app/Providers/EventServiceProvider.php:
--------------------------------------------------------------------------------
1 | [
17 | 'App\Listeners\NotifyUsers',
18 | ],
19 | ];
20 |
21 | /**
22 | * Register any events for your application.
23 | *
24 | * @return void
25 | */
26 | public function boot()
27 | {
28 | parent::boot();
29 |
30 | //
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/app/Http/Middleware/Locale.php:
--------------------------------------------------------------------------------
1 | has('locale')) {
20 | $lang = session()->get('locale');
21 | app()->setLocale($lang);
22 | Carbon::setLocale($lang);
23 | } else {
24 | session()->put('locale', config('app.locale'));
25 | app()->setLocale(config('app.locale'));
26 | }
27 |
28 | return $next($request);
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/public/vendor/font-awesome/scss/_rotated-flipped.scss:
--------------------------------------------------------------------------------
1 | // Rotated & Flipped Icons
2 | // -------------------------
3 |
4 | .#{$fa-css-prefix}-rotate-90 { @include fa-icon-rotate(90deg, 1); }
5 | .#{$fa-css-prefix}-rotate-180 { @include fa-icon-rotate(180deg, 2); }
6 | .#{$fa-css-prefix}-rotate-270 { @include fa-icon-rotate(270deg, 3); }
7 |
8 | .#{$fa-css-prefix}-flip-horizontal { @include fa-icon-flip(-1, 1, 0); }
9 | .#{$fa-css-prefix}-flip-vertical { @include fa-icon-flip(1, -1, 2); }
10 |
11 | // Hook for IE8-9
12 | // -------------------------
13 |
14 | :root .#{$fa-css-prefix}-rotate-90,
15 | :root .#{$fa-css-prefix}-rotate-180,
16 | :root .#{$fa-css-prefix}-rotate-270,
17 | :root .#{$fa-css-prefix}-flip-horizontal,
18 | :root .#{$fa-css-prefix}-flip-vertical {
19 | filter: none;
20 | }
21 |
--------------------------------------------------------------------------------
/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 | @if (isset($subcopy))
14 | @slot('subcopy')
15 | @component('mail::subcopy')
16 | {{ $subcopy }}
17 | @endcomponent
18 | @endslot
19 | @endif
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/assets/vendor/font-awesome/scss/_rotated-flipped.scss:
--------------------------------------------------------------------------------
1 | // Rotated & Flipped Icons
2 | // -------------------------
3 |
4 | .#{$fa-css-prefix}-rotate-90 { @include fa-icon-rotate(90deg, 1); }
5 | .#{$fa-css-prefix}-rotate-180 { @include fa-icon-rotate(180deg, 2); }
6 | .#{$fa-css-prefix}-rotate-270 { @include fa-icon-rotate(270deg, 3); }
7 |
8 | .#{$fa-css-prefix}-flip-horizontal { @include fa-icon-flip(-1, 1, 0); }
9 | .#{$fa-css-prefix}-flip-vertical { @include fa-icon-flip(1, -1, 2); }
10 |
11 | // Hook for IE8-9
12 | // -------------------------
13 |
14 | :root .#{$fa-css-prefix}-rotate-90,
15 | :root .#{$fa-css-prefix}-rotate-180,
16 | :root .#{$fa-css-prefix}-rotate-270,
17 | :root .#{$fa-css-prefix}-flip-horizontal,
18 | :root .#{$fa-css-prefix}-flip-vertical {
19 | filter: none;
20 | }
21 |
--------------------------------------------------------------------------------
/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 | @if (isset($subcopy))
14 | @slot('subcopy')
15 | @component('mail::subcopy')
16 | {{ $subcopy }}
17 | @endcomponent
18 | @endslot
19 | @endif
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/home.blade.php:
--------------------------------------------------------------------------------
1 | @extends('layouts.public')
2 |
3 | @section('content')
4 |
5 |
6 |
7 |
{!! trans('global.dashboard') !!}
8 |
9 |
10 |
11 |
12 |
13 | {!! trans('global.dashboard_intro') !!}
14 |
15 |
16 |
{!! trans('global.dashboard_intro1') !!}
17 |
18 |
19 | {!! trans('global.dashboard_about') !!}
20 |
21 |
22 |
23 | @endsection
24 |
--------------------------------------------------------------------------------
/app/Models/MainModel.php:
--------------------------------------------------------------------------------
1 | check()) {
19 | return;
20 | }
21 | $user_id = auth()->id();
22 |
23 | //created_by & updated_by
24 | static::creating(function ($model) use ($user_id) {
25 | $model->created_by = $user_id;
26 | $model->updated_by = $user_id;
27 | });
28 |
29 | static::updating(function ($model) use ($user_id) {
30 | $model->updated_by = $user_id;
31 | });
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/public/vendor/font-awesome/less/path.less:
--------------------------------------------------------------------------------
1 | /* FONT PATH
2 | * -------------------------- */
3 |
4 | @font-face {
5 | font-family: 'FontAwesome';
6 | src: url('@{fa-font-path}/fontawesome-webfont.eot?v=@{fa-version}');
7 | src: url('@{fa-font-path}/fontawesome-webfont.eot?#iefix&v=@{fa-version}') format('embedded-opentype'),
8 | url('@{fa-font-path}/fontawesome-webfont.woff2?v=@{fa-version}') format('woff2'),
9 | url('@{fa-font-path}/fontawesome-webfont.woff?v=@{fa-version}') format('woff'),
10 | url('@{fa-font-path}/fontawesome-webfont.ttf?v=@{fa-version}') format('truetype'),
11 | url('@{fa-font-path}/fontawesome-webfont.svg?v=@{fa-version}#fontawesomeregular') format('svg');
12 | // src: url('@{fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts
13 | font-weight: normal;
14 | font-style: normal;
15 | }
16 |
--------------------------------------------------------------------------------
/resources/views/vendor/mail/html/button.blade.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/resources/assets/vendor/font-awesome/less/path.less:
--------------------------------------------------------------------------------
1 | /* FONT PATH
2 | * -------------------------- */
3 |
4 | @font-face {
5 | font-family: 'FontAwesome';
6 | src: url('@{fa-font-path}/fontawesome-webfont.eot?v=@{fa-version}');
7 | src: url('@{fa-font-path}/fontawesome-webfont.eot?#iefix&v=@{fa-version}') format('embedded-opentype'),
8 | url('@{fa-font-path}/fontawesome-webfont.woff2?v=@{fa-version}') format('woff2'),
9 | url('@{fa-font-path}/fontawesome-webfont.woff?v=@{fa-version}') format('woff'),
10 | url('@{fa-font-path}/fontawesome-webfont.ttf?v=@{fa-version}') format('truetype'),
11 | url('@{fa-font-path}/fontawesome-webfont.svg?v=@{fa-version}#fontawesomeregular') format('svg');
12 | // src: url('@{fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts
13 | font-weight: normal;
14 | font-style: normal;
15 | }
16 |
--------------------------------------------------------------------------------
/public/vendor/font-awesome/scss/_path.scss:
--------------------------------------------------------------------------------
1 | /* FONT PATH
2 | * -------------------------- */
3 |
4 | @font-face {
5 | font-family: 'FontAwesome';
6 | src: url('#{$fa-font-path}/fontawesome-webfont.eot?v=#{$fa-version}');
7 | src: url('#{$fa-font-path}/fontawesome-webfont.eot?#iefix&v=#{$fa-version}') format('embedded-opentype'),
8 | url('#{$fa-font-path}/fontawesome-webfont.woff2?v=#{$fa-version}') format('woff2'),
9 | url('#{$fa-font-path}/fontawesome-webfont.woff?v=#{$fa-version}') format('woff'),
10 | url('#{$fa-font-path}/fontawesome-webfont.ttf?v=#{$fa-version}') format('truetype'),
11 | url('#{$fa-font-path}/fontawesome-webfont.svg?v=#{$fa-version}#fontawesomeregular') format('svg');
12 | // src: url('#{$fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts
13 | font-weight: normal;
14 | font-style: normal;
15 | }
16 |
--------------------------------------------------------------------------------
/app/Models/Section.php:
--------------------------------------------------------------------------------
1 | hasMany(Article::class);
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/resources/assets/vendor/font-awesome/scss/_path.scss:
--------------------------------------------------------------------------------
1 | /* FONT PATH
2 | * -------------------------- */
3 |
4 | @font-face {
5 | font-family: 'FontAwesome';
6 | src: url('#{$fa-font-path}/fontawesome-webfont.eot?v=#{$fa-version}');
7 | src: url('#{$fa-font-path}/fontawesome-webfont.eot?#iefix&v=#{$fa-version}') format('embedded-opentype'),
8 | url('#{$fa-font-path}/fontawesome-webfont.woff2?v=#{$fa-version}') format('woff2'),
9 | url('#{$fa-font-path}/fontawesome-webfont.woff?v=#{$fa-version}') format('woff'),
10 | url('#{$fa-font-path}/fontawesome-webfont.ttf?v=#{$fa-version}') format('truetype'),
11 | url('#{$fa-font-path}/fontawesome-webfont.svg?v=#{$fa-version}#fontawesomeregular') format('svg');
12 | // src: url('#{$fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts
13 | font-weight: normal;
14 | font-style: normal;
15 | }
16 |
--------------------------------------------------------------------------------
/database/migrations/2014_10_12_100000_create_password_resets_table.php:
--------------------------------------------------------------------------------
1 | string('email')->index();
18 | $table->string('token')->index();
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 |
--------------------------------------------------------------------------------
/app/Http/Controllers/PublicController.php:
--------------------------------------------------------------------------------
1 | published()->paginate(config('pagination.page_size'));
17 |
18 | return view('public.index', compact('articles'));
19 | }
20 |
21 | /**
22 | * Display the specified resource.
23 | *
24 | * @param Article $article
25 | *
26 | * @return \Illuminate\Http\Response
27 | */
28 | public function show(Article $article)
29 | {
30 | $article->increment('views');
31 |
32 | return view('public.show', compact('article'));
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/app/Http/Requests/TagsRequest.php:
--------------------------------------------------------------------------------
1 | 'required|string|min:3',
28 | ];
29 | }
30 |
31 | /**
32 | * Get custom attributes for validator errors.
33 | *
34 | * @return array
35 | */
36 | public function attributes()
37 | {
38 | return trans('tags.attributes');
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/public/vendor/font-awesome/less/animated.less:
--------------------------------------------------------------------------------
1 | // Animated Icons
2 | // --------------------------
3 |
4 | .@{fa-css-prefix}-spin {
5 | -webkit-animation: fa-spin 2s infinite linear;
6 | animation: fa-spin 2s infinite linear;
7 | }
8 |
9 | .@{fa-css-prefix}-pulse {
10 | -webkit-animation: fa-spin 1s infinite steps(8);
11 | animation: fa-spin 1s infinite steps(8);
12 | }
13 |
14 | @-webkit-keyframes fa-spin {
15 | 0% {
16 | -webkit-transform: rotate(0deg);
17 | transform: rotate(0deg);
18 | }
19 | 100% {
20 | -webkit-transform: rotate(359deg);
21 | transform: rotate(359deg);
22 | }
23 | }
24 |
25 | @keyframes fa-spin {
26 | 0% {
27 | -webkit-transform: rotate(0deg);
28 | transform: rotate(0deg);
29 | }
30 | 100% {
31 | -webkit-transform: rotate(359deg);
32 | transform: rotate(359deg);
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/public/vendor/font-awesome/scss/_animated.scss:
--------------------------------------------------------------------------------
1 | // Spinning Icons
2 | // --------------------------
3 |
4 | .#{$fa-css-prefix}-spin {
5 | -webkit-animation: fa-spin 2s infinite linear;
6 | animation: fa-spin 2s infinite linear;
7 | }
8 |
9 | .#{$fa-css-prefix}-pulse {
10 | -webkit-animation: fa-spin 1s infinite steps(8);
11 | animation: fa-spin 1s infinite steps(8);
12 | }
13 |
14 | @-webkit-keyframes fa-spin {
15 | 0% {
16 | -webkit-transform: rotate(0deg);
17 | transform: rotate(0deg);
18 | }
19 | 100% {
20 | -webkit-transform: rotate(359deg);
21 | transform: rotate(359deg);
22 | }
23 | }
24 |
25 | @keyframes fa-spin {
26 | 0% {
27 | -webkit-transform: rotate(0deg);
28 | transform: rotate(0deg);
29 | }
30 | 100% {
31 | -webkit-transform: rotate(359deg);
32 | transform: rotate(359deg);
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/resources/views/vendor/pagination/simple-bootstrap-4.blade.php:
--------------------------------------------------------------------------------
1 | @if ($paginator->hasPages())
2 |
17 | @endif
18 |
--------------------------------------------------------------------------------
/app/Listeners/NotifyUsers.php:
--------------------------------------------------------------------------------
1 | toArray();
33 |
34 | Mail::to(config('mail.from.address'))
35 | ->bcc($emails)
36 | ->send(new SendArticleNotification($event->article));
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/resources/assets/vendor/font-awesome/less/animated.less:
--------------------------------------------------------------------------------
1 | // Animated Icons
2 | // --------------------------
3 |
4 | .@{fa-css-prefix}-spin {
5 | -webkit-animation: fa-spin 2s infinite linear;
6 | animation: fa-spin 2s infinite linear;
7 | }
8 |
9 | .@{fa-css-prefix}-pulse {
10 | -webkit-animation: fa-spin 1s infinite steps(8);
11 | animation: fa-spin 1s infinite steps(8);
12 | }
13 |
14 | @-webkit-keyframes fa-spin {
15 | 0% {
16 | -webkit-transform: rotate(0deg);
17 | transform: rotate(0deg);
18 | }
19 | 100% {
20 | -webkit-transform: rotate(359deg);
21 | transform: rotate(359deg);
22 | }
23 | }
24 |
25 | @keyframes fa-spin {
26 | 0% {
27 | -webkit-transform: rotate(0deg);
28 | transform: rotate(0deg);
29 | }
30 | 100% {
31 | -webkit-transform: rotate(359deg);
32 | transform: rotate(359deg);
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/resources/assets/vendor/font-awesome/scss/_animated.scss:
--------------------------------------------------------------------------------
1 | // Spinning Icons
2 | // --------------------------
3 |
4 | .#{$fa-css-prefix}-spin {
5 | -webkit-animation: fa-spin 2s infinite linear;
6 | animation: fa-spin 2s infinite linear;
7 | }
8 |
9 | .#{$fa-css-prefix}-pulse {
10 | -webkit-animation: fa-spin 1s infinite steps(8);
11 | animation: fa-spin 1s infinite steps(8);
12 | }
13 |
14 | @-webkit-keyframes fa-spin {
15 | 0% {
16 | -webkit-transform: rotate(0deg);
17 | transform: rotate(0deg);
18 | }
19 | 100% {
20 | -webkit-transform: rotate(359deg);
21 | transform: rotate(359deg);
22 | }
23 | }
24 |
25 | @keyframes fa-spin {
26 | 0% {
27 | -webkit-transform: rotate(0deg);
28 | transform: rotate(0deg);
29 | }
30 | 100% {
31 | -webkit-transform: rotate(359deg);
32 | transform: rotate(359deg);
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/app/Http/Requests/SectionsRequest.php:
--------------------------------------------------------------------------------
1 | 'required|string|min:3',
28 | ];
29 | }
30 |
31 | /**
32 | * Get custom attributes for validator errors.
33 | *
34 | * @return array
35 | */
36 | public function attributes()
37 | {
38 | return trans('sections.attributes');
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/public/less/mixins.less:
--------------------------------------------------------------------------------
1 | .button-variant(@color; @background; @border) {
2 | color: @color;
3 | background-color: @background;
4 | border-color: @border;
5 |
6 | &:hover,
7 | &:focus,
8 | &:active,
9 | &.active,
10 | .open .dropdown-toggle& {
11 | color: @color;
12 | background-color: darken(@background, 10%);
13 | border-color: darken(@border, 12%);
14 | }
15 | &:active,
16 | &.active,
17 | .open .dropdown-toggle& {
18 | background-image: none;
19 | }
20 | &.disabled,
21 | &[disabled],
22 | fieldset[disabled] & {
23 | &,
24 | &:hover,
25 | &:focus,
26 | &:active,
27 | &.active {
28 | background-color: @background;
29 | border-color: @border;
30 | }
31 | }
32 |
33 | .badge {
34 | color: @background;
35 | background-color: @color;
36 | }
37 | }
38 |
39 | .transition-all() {
40 | -webkit-transition: all 0.5s;
41 | -moz-transition: all 0.5s;
42 | transition: all 0.5s;
43 | }
--------------------------------------------------------------------------------
/resources/assets/less/mixins.less:
--------------------------------------------------------------------------------
1 | .button-variant(@color; @background; @border) {
2 | color: @color;
3 | background-color: @background;
4 | border-color: @border;
5 |
6 | &:hover,
7 | &:focus,
8 | &:active,
9 | &.active,
10 | .open .dropdown-toggle& {
11 | color: @color;
12 | background-color: darken(@background, 10%);
13 | border-color: darken(@border, 12%);
14 | }
15 | &:active,
16 | &.active,
17 | .open .dropdown-toggle& {
18 | background-image: none;
19 | }
20 | &.disabled,
21 | &[disabled],
22 | fieldset[disabled] & {
23 | &,
24 | &:hover,
25 | &:focus,
26 | &:active,
27 | &.active {
28 | background-color: @background;
29 | border-color: @border;
30 | }
31 | }
32 |
33 | .badge {
34 | color: @background;
35 | background-color: @color;
36 | }
37 | }
38 |
39 | .transition-all() {
40 | -webkit-transition: all 0.5s;
41 | -moz-transition: all 0.5s;
42 | transition: all 0.5s;
43 | }
--------------------------------------------------------------------------------
/database/migrations/2014_10_12_000000_create_users_table.php:
--------------------------------------------------------------------------------
1 | increments('id');
18 | $table->string('name');
19 | $table->string('email')->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 |
--------------------------------------------------------------------------------
/app/Http/Controllers/HomeController.php:
--------------------------------------------------------------------------------
1 | middleware('auth')->except('changeLocal');
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 | /**
30 | * Changing the app language.
31 | *
32 | * @param $lang
33 | *
34 | * @return response
35 | */
36 | public function changeLocal($lang)
37 | {
38 | app()->setLocale($lang);
39 | session()->put('locale', $lang);
40 |
41 | return back();
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/app/Http/Requests/CommentsRequest.php:
--------------------------------------------------------------------------------
1 | 'required|min:5',
28 | 'article_id' => 'required|exists:articles,id',
29 | ];
30 | }
31 |
32 | /**
33 | * Get custom attributes for validator errors.
34 | *
35 | * @return array
36 | */
37 | public function attributes()
38 | {
39 | return trans('comments.attributes');
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/database/migrations/2017_03_15_151807_create_sections_table.php:
--------------------------------------------------------------------------------
1 | increments('id');
18 | $table->string('title');
19 | $table->unsignedInteger('created_by');
20 | $table->unsignedInteger('updated_by');
21 | $table->timestamps();
22 | $table->softDeletes();
23 | });
24 | }
25 |
26 | /**
27 | * Reverse the migrations.
28 | *
29 | * @return void
30 | */
31 | public function down()
32 | {
33 | Schema::dropIfExists('sections');
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/app/Events/ArticleCreated.php:
--------------------------------------------------------------------------------
1 | article = $article;
30 | }
31 |
32 | /**
33 | * Get the channels the event should broadcast on.
34 | *
35 | * @return Channel|array
36 | */
37 | public function broadcastOn()
38 | {
39 | return new PrivateChannel('channel-name');
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/public/web.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/app/Http/Controllers/Auth/ForgotPasswordController.php:
--------------------------------------------------------------------------------
1 | middleware('guest');
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/app/Http/Requests/UsersRequest.php:
--------------------------------------------------------------------------------
1 | 'required|min:3',
28 | 'email' => 'required|sometimes|email|unique:users,email,'.auth()->id().',id',
29 | 'password' => 'sometimes',
30 | ];
31 | }
32 |
33 | /**
34 | * Get custom attributes for validator errors.
35 | *
36 | * @return array
37 | */
38 | public function attributes()
39 | {
40 | return trans('users.attributes');
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/LICENSE.md:
--------------------------------------------------------------------------------
1 | Copyright Omar Zaki
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4 |
5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6 |
7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
8 |
--------------------------------------------------------------------------------
/database/migrations/2017_03_15_151841_create_comments_table.php:
--------------------------------------------------------------------------------
1 | increments('id');
18 | $table->text('text');
19 | $table->unsignedInteger('article_id');
20 | $table->unsignedInteger('created_by')->nullable();
21 | $table->unsignedInteger('updated_by')->nullable();
22 | $table->timestamps();
23 | $table->softDeletes();
24 | });
25 | }
26 |
27 | /**
28 | * Reverse the migrations.
29 | *
30 | * @return void
31 | */
32 | public function down()
33 | {
34 | Schema::dropIfExists('comments');
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/public/js/freelancer.min.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * Start Bootstrap - Freelancer v3.3.7+1 (http://startbootstrap.com/template-overviews/freelancer)
3 | * Copyright 2013-2016 Start Bootstrap
4 | * Licensed under MIT (https://github.com/BlackrockDigital/startbootstrap/blob/gh-pages/LICENSE)
5 | */
6 | !function(o){"use strict";o(".page-scroll a").bind("click",function(t){var l=o(this);o("html, body").stop().animate({scrollTop:o(l.attr("href")).offset().top-50},1250,"easeInOutExpo"),t.preventDefault()}),o("body").scrollspy({target:".navbar-fixed-top",offset:51}),o(".navbar-collapse ul li a").click(function(){o(".navbar-toggle:visible").click()}),o("#mainNav").affix({offset:{top:100}}),o(function(){o("body").on("input propertychange",".floating-label-form-group",function(t){o(this).toggleClass("floating-label-form-group-with-value",!!o(t.target).val())}).on("focus",".floating-label-form-group",function(){o(this).addClass("floating-label-form-group-with-focus")}).on("blur",".floating-label-form-group",function(){o(this).removeClass("floating-label-form-group-with-focus")})})}(jQuery);
--------------------------------------------------------------------------------
/public/sass/_variables.scss:
--------------------------------------------------------------------------------
1 |
2 | // Body
3 | $body-bg: #f5f8fa;
4 |
5 | // Borders
6 | $laravel-border-color: darken($body-bg, 10%);
7 | $list-group-border: $laravel-border-color;
8 | $navbar-default-border: $laravel-border-color;
9 | $panel-default-border: $laravel-border-color;
10 | $panel-inner-border: $laravel-border-color;
11 |
12 | // Brands
13 | $brand-primary: #3097D1;
14 | $brand-info: #8eb4cb;
15 | $brand-success: #2ab27b;
16 | $brand-warning: #cbb956;
17 | $brand-danger: #bf5329;
18 |
19 | // Typography
20 | $icon-font-path: "~bootstrap-sass/assets/fonts/bootstrap/";
21 | $font-family-sans-serif: "Raleway", sans-serif;
22 | $font-size-base: 14px;
23 | $line-height-base: 1.6;
24 | $text-color: #636b6f;
25 |
26 | // Navbar
27 | $navbar-default-bg: #fff;
28 |
29 | // Buttons
30 | $btn-default-color: $text-color;
31 |
32 | // Inputs
33 | $input-border: lighten($text-color, 40%);
34 | $input-border-focus: lighten($brand-primary, 25%);
35 | $input-color-placeholder: lighten($text-color, 30%);
36 |
37 | // Panels
38 | $panel-default-heading-bg: #fff;
39 |
--------------------------------------------------------------------------------
/resources/assets/js/freelancer.min.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * Start Bootstrap - Freelancer v3.3.7+1 (http://startbootstrap.com/template-overviews/freelancer)
3 | * Copyright 2013-2016 Start Bootstrap
4 | * Licensed under MIT (https://github.com/BlackrockDigital/startbootstrap/blob/gh-pages/LICENSE)
5 | */
6 | !function(o){"use strict";o(".page-scroll a").bind("click",function(t){var l=o(this);o("html, body").stop().animate({scrollTop:o(l.attr("href")).offset().top-50},1250,"easeInOutExpo"),t.preventDefault()}),o("body").scrollspy({target:".navbar-fixed-top",offset:51}),o(".navbar-collapse ul li a").click(function(){o(".navbar-toggle:visible").click()}),o("#mainNav").affix({offset:{top:100}}),o(function(){o("body").on("input propertychange",".floating-label-form-group",function(t){o(this).toggleClass("floating-label-form-group-with-value",!!o(t.target).val())}).on("focus",".floating-label-form-group",function(){o(this).addClass("floating-label-form-group-with-focus")}).on("blur",".floating-label-form-group",function(){o(this).removeClass("floating-label-form-group-with-focus")})})}(jQuery);
--------------------------------------------------------------------------------
/app/Http/Requests/ArticlesRequest.php:
--------------------------------------------------------------------------------
1 | 'required|min:5',
28 | 'text' => 'required|min:15',
29 | 'section_id' => 'required|exists:sections,id',
30 | 'published' => 'in:0,1',
31 | ];
32 | }
33 |
34 | /**
35 | * Get custom attributes for validator errors.
36 | *
37 | * @return array
38 | */
39 | public function attributes()
40 | {
41 | return trans('articles.attributes');
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/app/Mail/SendArticleNotification.php:
--------------------------------------------------------------------------------
1 | article = $article;
31 | }
32 |
33 | /**
34 | * Build the message.
35 | *
36 | * @return $this
37 | */
38 | public function build()
39 | {
40 | $article = $this->article;
41 |
42 | return $this->subject('New article added')
43 | ->view('emails.articles.new', compact('article'));
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/resources/assets/sass/_variables.scss:
--------------------------------------------------------------------------------
1 |
2 | // Body
3 | $body-bg: #f5f8fa;
4 |
5 | // Borders
6 | $laravel-border-color: darken($body-bg, 10%);
7 | $list-group-border: $laravel-border-color;
8 | $navbar-default-border: $laravel-border-color;
9 | $panel-default-border: $laravel-border-color;
10 | $panel-inner-border: $laravel-border-color;
11 |
12 | // Brands
13 | $brand-primary: #3097D1;
14 | $brand-info: #8eb4cb;
15 | $brand-success: #2ab27b;
16 | $brand-warning: #cbb956;
17 | $brand-danger: #bf5329;
18 |
19 | // Typography
20 | $icon-font-path: "~bootstrap-sass/assets/fonts/bootstrap/";
21 | $font-family-sans-serif: "Raleway", sans-serif;
22 | $font-size-base: 14px;
23 | $line-height-base: 1.6;
24 | $text-color: #636b6f;
25 |
26 | // Navbar
27 | $navbar-default-bg: #fff;
28 |
29 | // Buttons
30 | $btn-default-color: $text-color;
31 |
32 | // Inputs
33 | $input-border: lighten($text-color, 40%);
34 | $input-border-focus: lighten($brand-primary, 25%);
35 | $input-color-placeholder: lighten($text-color, 30%);
36 |
37 | // Panels
38 | $panel-default-heading-bg: #fff;
39 |
--------------------------------------------------------------------------------
/app/Console/Kernel.php:
--------------------------------------------------------------------------------
1 | command('inspire')
30 | // ->hourly();
31 | }
32 |
33 | /**
34 | * Register the Closure based commands for the application.
35 | *
36 | * @return void
37 | */
38 | protected function commands()
39 | {
40 | require base_path('routes/console.php');
41 |
42 | $this->load(__DIR__.'/Commands');
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/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 | 'login' => 'Login',
19 | 'remember' => 'Remember Me',
20 | 'forget_password' => 'Forgot Your Password?',
21 | 'register' => 'Register',
22 | 'name' => 'Name',
23 | '404' => '[404] Not Found',
24 | '401' => '[401] Not Authenticated',
25 | 'go_home' => 'Go Home',
26 | 'logout' => 'Logout',
27 | ];
28 |
--------------------------------------------------------------------------------
/app/Http/Controllers/Auth/LoginController.php:
--------------------------------------------------------------------------------
1 | middleware('guest', ['except' => 'logout']);
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/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 | ];
39 |
--------------------------------------------------------------------------------
/resources/lang/de/auth.php:
--------------------------------------------------------------------------------
1 | 'Diese Zugangsdaten wurden nicht in unserer Datenbank gefunden.',
15 | 'throttle' => 'Zu viele Loginversuche. Versuchen Sie es bitte in :seconds Sekunden nochmal.',
16 | 'login' => 'Log in',
17 | 'remember' => 'Onthoud me',
18 | 'forget_password' => 'Je wachtwoord vergeten?',
19 | 'register' => 'Registreren',
20 | 'name' => 'Naam',
21 | '404' => '[404] Niet Gevonden',
22 | '401' => '[401] Niet geverifieerd',
23 | 'go_home' => 'Ga naar huis',
24 | 'logout' => 'Uitloggen',
25 | ];
26 |
--------------------------------------------------------------------------------
/app/Http/Controllers/Auth/ResetPasswordController.php:
--------------------------------------------------------------------------------
1 | middleware('guest');
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/config/view.php:
--------------------------------------------------------------------------------
1 | [
17 | realpath(base_path('resources/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 |
--------------------------------------------------------------------------------
/database/migrations/2017_03_15_151826_create_articles_table.php:
--------------------------------------------------------------------------------
1 | increments('id');
18 | $table->string('title');
19 | $table->text('text');
20 | $table->unsignedInteger('section_id');
21 | $table->boolean('published');
22 | $table->integer('views')->default(0);
23 | $table->unsignedInteger('created_by');
24 | $table->unsignedInteger('updated_by');
25 | $table->timestamps();
26 | $table->softDeletes();
27 | });
28 | }
29 |
30 | /**
31 | * Reverse the migrations.
32 | *
33 | * @return void
34 | */
35 | public function down()
36 | {
37 | Schema::dropIfExists('articles');
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/resources/lang/ar/auth.php:
--------------------------------------------------------------------------------
1 | 'بيانات الاعتماد هذه غير متطابقة مع البيانات المسجلة لدينا.',
17 | 'throttle' => 'عدد كبير جدا من محاولات الدخول. يرجى المحاولة مرة أخرى بعد :seconds ثانية.',
18 | 'login' => 'تسجيل الدخول',
19 | 'remember' => 'تذكرني!',
20 | 'forget_password' => 'هل نسيت كلمة المرور؟',
21 | 'register' => 'التسجيل',
22 | 'name' => 'الاسم',
23 | '404' => 'لا يوجد لدينا هذا الرابط [404]',
24 | '401' => '[401] أنت غير مسموح لك بالدخول هنا',
25 | 'go_home' => 'الذهاب للرئيسية',
26 | 'logout' => 'تسجيل الخروج',
27 | ];
28 |
--------------------------------------------------------------------------------
/resources/views/public/index.blade.php:
--------------------------------------------------------------------------------
1 | @extends('layouts.public')
2 |
3 | @section('content')
4 |
5 |
6 |
7 |
8 |
{!! trans('articles.latest') !!}
9 |
10 |
11 |
12 |
13 | @foreach($articles as $single)
14 |
21 | @endforeach
22 |
23 |
24 | {{ $articles->links() }}
25 |
26 |
27 |
28 | @endsection
29 |
--------------------------------------------------------------------------------
/app/Console/Commands/ClearDB.php:
--------------------------------------------------------------------------------
1 | info('You have clean DB right now');
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/database/migrations/2017_04_02_063506_create_tags_table.php:
--------------------------------------------------------------------------------
1 | increments('id');
18 | $table->string('name');
19 | $table->unsignedInteger('created_by');
20 | $table->unsignedInteger('updated_by');
21 | $table->timestamps();
22 | $table->softDeletes();
23 | });
24 |
25 | Schema::create('article_tag', function (Blueprint $table) {
26 | $table->unsignedInteger('article_id');
27 | $table->unsignedInteger('tag_id');
28 | $table->primary(['article_id', 'tag_id']);
29 | });
30 | }
31 |
32 | /**
33 | * Reverse the migrations.
34 | *
35 | * @return void
36 | */
37 | public function down()
38 | {
39 | Schema::dropIfExists('article_tag');
40 | Schema::dropIfExists('tags');
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/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 | 'reset_text' => 'Reset Password',
22 | 'email' => 'E-Mail Address',
23 | 'send_text' => 'Send Password Reset Link',
24 | 'password_text' => 'Password',
25 | 'password_text_confirmation' => 'Password confirmation',
26 | ];
27 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/resources/lang/ar/passwords.php:
--------------------------------------------------------------------------------
1 | 'يجب أن لا يقل طول كلمة المرور عن ستة أحرف، كما يجب أن تتطابق مع حقل التأكيد',
15 | 'reset' => 'تمت إعادة تعيين كلمة المرور',
16 | 'sent' => 'تم إرسال تفاصيل استعادة كلمة المرور الخاصة بك إلى بريدك الإلكتروني',
17 | 'token' => '.رمز استعادة كلمة المرور الذي أدخلته غير صحيح',
18 | 'user' => 'لم يتم العثور على أيّ حسابٍ بهذا العنوان الإلكتروني',
19 | 'reset_text' => 'إعادة تعيين الرقم السري',
20 | 'email' => 'عنوان البريد الالكتروني',
21 | 'send_text' => 'إرسال رسالة تعيين كلمة المرور',
22 | 'password_text' => 'الرقم السري',
23 | 'password_text_confirmation' => 'تأكيد الرقم السري',
24 | ];
25 |
--------------------------------------------------------------------------------
/resources/lang/de/passwords.php:
--------------------------------------------------------------------------------
1 | 'Passwörter müssen mindestens 6 Zeichen lang sein und korrekt bestätigt werden.',
15 | 'reset' => 'Das Passwort wurde zurückgesetzt!',
16 | 'sent' => 'Passworterinnerung wurde gesendet!',
17 | 'token' => 'Der Passwort-Wiederherstellungs-Schlüssel ist ungültig oder abgelaufen.',
18 | 'user' => 'Es konnte leider kein Nutzer mit dieser E-Mail-Adresse gefunden werden.',
19 | 'reset_text' => 'Reset Password',
20 | 'email' => 'E-mailadres',
21 | 'send_text' => 'Stuur Password Reset Link',
22 | 'password_text' => 'Wachtwoord',
23 | 'password_text_confirmation' => 'wachtwoordbevestiging',
24 | ];
25 |
--------------------------------------------------------------------------------
/resources/views/vendor/notifications/email.blade.php:
--------------------------------------------------------------------------------
1 | @component('mail::message')
2 | {{-- Greeting --}}
3 | @if (! empty($greeting))
4 | # {{ $greeting }}
5 | @else
6 | @if ($level == 'error')
7 | # Whoops!
8 | @else
9 | # Hello!
10 | @endif
11 | @endif
12 |
13 | {{-- Intro Lines --}}
14 | @foreach ($introLines as $line)
15 | {{ $line }}
16 |
17 | @endforeach
18 |
19 | {{-- Action Button --}}
20 | @if (isset($actionText))
21 |
33 | @component('mail::button', ['url' => $actionUrl, 'color' => $color])
34 | {{ $actionText }}
35 | @endcomponent
36 | @endif
37 |
38 | {{-- Outro Lines --}}
39 | @foreach ($outroLines as $line)
40 | {{ $line }}
41 |
42 | @endforeach
43 |
44 |
45 | @if (! empty($salutation))
46 | {{ $salutation }}
47 | @else
48 | Regards, {{ config('app.name') }}
49 | @endif
50 |
51 |
52 | @if (isset($actionText))
53 | @component('mail::subcopy')
54 | If you’re having trouble clicking the "{{ $actionText }}" button, copy and paste the URL below
55 | into your web browser: [{{ $actionUrl }}]({{ $actionUrl }})
56 | @endcomponent
57 | @endif
58 | @endcomponent
59 |
--------------------------------------------------------------------------------
/resources/views/tags/show.blade.php:
--------------------------------------------------------------------------------
1 | @extends('layouts.public')
2 |
3 | @section('content')
4 |
5 |
6 |
7 |
{!! trans('tags.heading') !!}
8 |
9 |
10 |
11 |
12 | {{ Form::model($data, ['route'=> ['tags.update', $data], 'method'=>'patch', 'class'=>'form-horizontal']) }}
13 |
14 |
15 | {{ Form::label('name', trans('tags.attributes.name'), ['for'=>'name']) }}
16 | {{ Form::text('name', null, ['class'=>'form-control', 'placeholder'=>trans('tags.attributes.name'), 'required']) }}
17 |
18 |
19 | {{Form::close()}}
20 |
21 |
22 |
28 |
29 |
30 | @endsection
31 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "private": true,
3 | "scripts": {
4 | "dev": "node node_modules/cross-env/dist/bin/cross-env.js NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
5 | "watch": "node node_modules/cross-env/dist/bin/cross-env.js NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
6 | "watch-poll": "node node_modules/cross-env/dist/bin/cross-env.js NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --watch-poll --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
7 | "hot": "node node_modules/cross-env/dist/bin/cross-env.js NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js",
8 | "production": "node node_modules/cross-env/dist/bin/cross-env.js NODE_ENV=production node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
9 | },
10 | "devDependencies": {
11 | "axios": "^0.21.0",
12 | "bootstrap-sass": "^3.3.7",
13 | "cross-env": "^3.2.4",
14 | "jquery": "^3.1.1",
15 | "laravel-mix": "^0.8.1",
16 | "lodash": "^4.17.4",
17 | "vue": "^2.1.10"
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/app/Models/Article.php:
--------------------------------------------------------------------------------
1 | belongsTo(Section::class);
20 | }
21 |
22 | /**
23 | * @return \Illuminate\Database\Eloquent\Relations\HasMany
24 | */
25 | public function comments()
26 | {
27 | return $this->hasMany(Comment::class);
28 | }
29 |
30 | /**
31 | * Only return published articles.
32 | *
33 | * @param $query
34 | *
35 | * @return mixed
36 | */
37 | public function scopePublished($query)
38 | {
39 | return $query->where('published', 1);
40 | }
41 |
42 | /**
43 | * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
44 | */
45 | public function user()
46 | {
47 | return $this->belongsTo(User::class, 'created_by');
48 | }
49 |
50 | /**
51 | * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
52 | */
53 | public function tags()
54 | {
55 | return $this->belongsToMany(Tag::class);
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/resources/views/sections/show.blade.php:
--------------------------------------------------------------------------------
1 | @extends('layouts.public')
2 |
3 | @section('content')
4 |
5 |
6 |
7 |
{!! trans('sections.heading') !!}
8 |
9 |
10 |
11 |
12 | {{ Form::model($data, ['route'=> ['sections.update', $data], 'method'=>'patch', 'class'=>'form-horizontal']) }}
13 |
14 |
15 | {{ Form::label('title', trans('sections.attributes.title'), ['for'=>'title']) }}
16 | {{ Form::text('title', null, ['class'=>'form-control', 'placeholder'=>trans('sections.attributes.title'), 'required']) }}
17 |
18 |
19 | {{Form::close()}}
20 |
21 |
22 |
28 |
29 |
30 | @endsection
31 |
--------------------------------------------------------------------------------
/resources/views/vendor/pagination/default.blade.php:
--------------------------------------------------------------------------------
1 | @if ($paginator->hasPages())
2 |
36 | @endif
37 |
--------------------------------------------------------------------------------
/app/Http/Controllers/CommentsController.php:
--------------------------------------------------------------------------------
1 | only(array_keys($request->rules()));
21 | $comment = Comment::create($data);
22 | $user = $comment->article()->firstOrFail()->user()->firstOrFail();
23 | $user->notify(new NewCommentNotification($comment->article()->first()));
24 |
25 | return redirect()->back()->with(['msg' => trans('global.added'), 'type' => 'success']);
26 | }
27 |
28 | /**
29 | * Remove the specified resource from storage.
30 | *
31 | * @param int $id
32 | *
33 | * @return \Illuminate\Http\Response
34 | */
35 | public function destroy($id)
36 | {
37 | Comment::findOrFail($id)->delete();
38 |
39 | return redirect()->back()->with(['msg' => trans('global.deleted'), 'type' => 'success']);
40 | }
41 |
42 | /**
43 | * @return \Illuminate\Database\Eloquent\Relations\BelongsTo
44 | */
45 | public function user()
46 | {
47 | return $this->belongsTo(User::class, 'created_by');
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/public/js/bootstrap.js:
--------------------------------------------------------------------------------
1 |
2 | window._ = require('lodash');
3 |
4 | /**
5 | * We'll load jQuery and the Bootstrap jQuery plugin which provides support
6 | * for JavaScript based Bootstrap features such as modals and tabs. This
7 | * code may be modified to fit the specific needs of your application.
8 | */
9 |
10 | window.$ = window.jQuery = require('jquery');
11 |
12 | require('bootstrap-sass');
13 |
14 | /**
15 | * Vue is a modern JavaScript library for building interactive web interfaces
16 | * using reactive data binding and reusable components. Vue's API is clean
17 | * and simple, leaving you to focus on building your next great project.
18 | */
19 |
20 | window.Vue = require('vue');
21 |
22 | /**
23 | * We'll load the axios HTTP library which allows us to easily issue requests
24 | * to our Laravel back-end. This library automatically handles sending the
25 | * CSRF token as a header based on the value of the "XSRF" token cookie.
26 | */
27 |
28 | window.axios = require('axios');
29 |
30 | window.axios.defaults.headers.common = {
31 | 'X-CSRF-TOKEN': window.Laravel.csrfToken,
32 | 'X-Requested-With': 'XMLHttpRequest'
33 | };
34 |
35 | /**
36 | * Echo exposes an expressive API for subscribing to channels and listening
37 | * for events that are broadcast by Laravel. Echo and event broadcasting
38 | * allows your team to easily build robust real-time web applications.
39 | */
40 |
41 | // import Echo from "laravel-echo"
42 |
43 | // window.Echo = new Echo({
44 | // broadcaster: 'pusher',
45 | // key: 'your-pusher-key'
46 | // });
47 |
--------------------------------------------------------------------------------
/resources/views/tags/edit.blade.php:
--------------------------------------------------------------------------------
1 | @extends('layouts.public')
2 |
3 | @section('content')
4 |
5 |
6 |
7 |
{!! trans('tags.heading') !!}
8 |
9 |
10 |
11 |
12 | @include('partials.errors')
13 | @if(!empty($data))
14 | {{ Form::model($data, ['route'=> ['tags.update', $data], 'method'=>'patch', 'class'=>'form-horizontal']) }}
15 | @else
16 | {{ Form::open(['url'=> url('/tags'), 'method'=>'post', 'class'=>'form-horizontal']) }}
17 | @endif
18 |
19 |
20 | {{ Form::label('name', trans('tags.attributes.name'), ['for'=>'name']) }}
21 | {{ Form::text('name', null, ['class'=>'form-control', 'placeholder'=>trans('tags.attributes.name'), 'required']) }}
22 |
23 |
24 |
25 |
26 |
27 |
28 | {{ Form::submit(trans('global.save'), ['class'=>'btn btn-success']) }}
29 |
30 |
31 | {{ Form::close() }}
32 |
33 |
34 |
35 | @endsection
36 |
--------------------------------------------------------------------------------
/resources/assets/js/bootstrap.js:
--------------------------------------------------------------------------------
1 |
2 | window._ = require('lodash');
3 |
4 | /**
5 | * We'll load jQuery and the Bootstrap jQuery plugin which provides support
6 | * for JavaScript based Bootstrap features such as modals and tabs. This
7 | * code may be modified to fit the specific needs of your application.
8 | */
9 |
10 | window.$ = window.jQuery = require('jquery');
11 |
12 | require('bootstrap-sass');
13 |
14 | /**
15 | * Vue is a modern JavaScript library for building interactive web interfaces
16 | * using reactive data binding and reusable components. Vue's API is clean
17 | * and simple, leaving you to focus on building your next great project.
18 | */
19 |
20 | window.Vue = require('vue');
21 |
22 | /**
23 | * We'll load the axios HTTP library which allows us to easily issue requests
24 | * to our Laravel back-end. This library automatically handles sending the
25 | * CSRF token as a header based on the value of the "XSRF" token cookie.
26 | */
27 |
28 | window.axios = require('axios');
29 |
30 | window.axios.defaults.headers.common = {
31 | 'X-CSRF-TOKEN': window.Laravel.csrfToken,
32 | 'X-Requested-With': 'XMLHttpRequest'
33 | };
34 |
35 | /**
36 | * Echo exposes an expressive API for subscribing to channels and listening
37 | * for events that are broadcast by Laravel. Echo and event broadcasting
38 | * allows your team to easily build robust real-time web applications.
39 | */
40 |
41 | // import Echo from "laravel-echo"
42 |
43 | // window.Echo = new Echo({
44 | // broadcaster: 'pusher',
45 | // key: 'your-pusher-key'
46 | // });
47 |
--------------------------------------------------------------------------------
/resources/views/sections/edit.blade.php:
--------------------------------------------------------------------------------
1 | @extends('layouts.public')
2 |
3 | @section('content')
4 |
5 |
6 |
7 |
{!! trans('sections.heading') !!}
8 |
9 |
10 |
11 |
12 | @include('partials.errors')
13 | @if(!empty($data))
14 | {{ Form::model($data, ['route'=> ['sections.update', $data], 'method'=>'patch', 'class'=>'form-horizontal']) }}
15 | @else
16 | {{ Form::open(['url'=> url('/sections'), 'method'=>'post', 'class'=>'form-horizontal']) }}
17 | @endif
18 |
19 |
20 | {{ Form::label('title', trans('sections.attributes.title'), ['for'=>'title']) }}
21 | {{ Form::text('title', null, ['class'=>'form-control', 'placeholder'=>trans('sections.attributes.title'), 'required']) }}
22 |
23 |
24 |
25 |
26 |
27 |
28 | {{ Form::submit('Save', ['class'=>'btn btn-success']) }}
29 |
30 |
31 | {{ Form::close() }}
32 |
33 |
34 |
35 | @endsection
36 |
--------------------------------------------------------------------------------
/public/js/freelancer.js:
--------------------------------------------------------------------------------
1 | // Freelancer Theme JavaScript
2 |
3 | (function($) {
4 | "use strict"; // Start of use strict
5 |
6 | // jQuery for page scrolling feature - requires jQuery Easing plugin
7 | $('.page-scroll a').bind('click', function(event) {
8 | var $anchor = $(this);
9 | $('html, body').stop().animate({
10 | scrollTop: ($($anchor.attr('href')).offset().top - 50)
11 | }, 1250, 'easeInOutExpo');
12 | event.preventDefault();
13 | });
14 |
15 | // Highlight the top nav as scrolling occurs
16 | $('body').scrollspy({
17 | target: '.navbar-fixed-top',
18 | offset: 51
19 | });
20 |
21 | // Closes the Responsive Menu on Menu Item Click
22 | $('.navbar-collapse ul li a').click(function(){
23 | $('.navbar-toggle:visible').click();
24 | });
25 |
26 | // Offset for Main Navigation
27 | $('#mainNav').affix({
28 | offset: {
29 | top: 100
30 | }
31 | })
32 |
33 | // Floating label headings for the contact form
34 | $(function() {
35 | $("body").on("input propertychange", ".floating-label-form-group", function(e) {
36 | $(this).toggleClass("floating-label-form-group-with-value", !!$(e.target).val());
37 | }).on("focus", ".floating-label-form-group", function() {
38 | $(this).addClass("floating-label-form-group-with-focus");
39 | }).on("blur", ".floating-label-form-group", function() {
40 | $(this).removeClass("floating-label-form-group-with-focus");
41 | });
42 | });
43 |
44 | })(jQuery); // End of use strict
45 |
--------------------------------------------------------------------------------
/resources/assets/js/freelancer.js:
--------------------------------------------------------------------------------
1 | // Freelancer Theme JavaScript
2 |
3 | (function($) {
4 | "use strict"; // Start of use strict
5 |
6 | // jQuery for page scrolling feature - requires jQuery Easing plugin
7 | $('.page-scroll a').bind('click', function(event) {
8 | var $anchor = $(this);
9 | $('html, body').stop().animate({
10 | scrollTop: ($($anchor.attr('href')).offset().top - 50)
11 | }, 1250, 'easeInOutExpo');
12 | event.preventDefault();
13 | });
14 |
15 | // Highlight the top nav as scrolling occurs
16 | $('body').scrollspy({
17 | target: '.navbar-fixed-top',
18 | offset: 51
19 | });
20 |
21 | // Closes the Responsive Menu on Menu Item Click
22 | $('.navbar-collapse ul li a').click(function(){
23 | $('.navbar-toggle:visible').click();
24 | });
25 |
26 | // Offset for Main Navigation
27 | $('#mainNav').affix({
28 | offset: {
29 | top: 100
30 | }
31 | })
32 |
33 | // Floating label headings for the contact form
34 | $(function() {
35 | $("body").on("input propertychange", ".floating-label-form-group", function(e) {
36 | $(this).toggleClass("floating-label-form-group-with-value", !!$(e.target).val());
37 | }).on("focus", ".floating-label-form-group", function() {
38 | $(this).addClass("floating-label-form-group-with-focus");
39 | }).on("blur", ".floating-label-form-group", function() {
40 | $(this).removeClass("floating-label-form-group-with-focus");
41 | });
42 | });
43 |
44 | })(jQuery); // End of use strict
45 |
--------------------------------------------------------------------------------
/resources/views/vendor/pagination/bootstrap-4.blade.php:
--------------------------------------------------------------------------------
1 | @if ($paginator->hasPages())
2 |
36 | @endif
37 |
--------------------------------------------------------------------------------
/app/Notifications/NewCommentNotification.php:
--------------------------------------------------------------------------------
1 | article = $article;
28 | }
29 |
30 | /**
31 | * Get the notification's delivery channels.
32 | *
33 | * @param mixed $notifiable
34 | *
35 | * @return array
36 | */
37 | public function via($notifiable)
38 | {
39 | return ['mail'];
40 | }
41 |
42 | /**
43 | * Get the mail representation of the notification.
44 | *
45 | * @param mixed $notifiable
46 | *
47 | * @return \Illuminate\Notifications\Messages\MailMessage
48 | */
49 | public function toMail($notifiable)
50 | {
51 | $article = $this->article;
52 |
53 | return (new MailMessage)->subject('New comment on your article')
54 | ->view('emails.new_comment', compact('article'));
55 | }
56 |
57 | /**
58 | * Get the array representation of the notification.
59 | *
60 | * @param mixed $notifiable
61 | *
62 | * @return array
63 | */
64 | public function toArray($notifiable)
65 | {
66 | return [
67 | //
68 | ];
69 | }
70 | }
71 |
--------------------------------------------------------------------------------
/app/Notifications/NewUserNotification.php:
--------------------------------------------------------------------------------
1 | token = $token;
28 | }
29 |
30 | /**
31 | * Get the notification's delivery channels.
32 | *
33 | * @param mixed $notifiable
34 | *
35 | * @return array
36 | */
37 | public function via($notifiable)
38 | {
39 | return ['mail'];
40 | }
41 |
42 | /**
43 | * Get the mail representation of the notification.
44 | *
45 | * @param mixed $notifiable
46 | *
47 | * @return \Illuminate\Notifications\Messages\MailMessage
48 | */
49 | public function toMail($notifiable)
50 | {
51 | $token = $this->token;
52 |
53 | return (new MailMessage)
54 | ->subject('Reset your password')
55 | ->view('emails.reset_password', compact('token'));
56 | }
57 |
58 | /**
59 | * Get the array representation of the notification.
60 | *
61 | * @param mixed $notifiable
62 | *
63 | * @return array
64 | */
65 | public function toArray($notifiable)
66 | {
67 | return [
68 | //
69 | ];
70 | }
71 | }
72 |
--------------------------------------------------------------------------------
/config/broadcasting.php:
--------------------------------------------------------------------------------
1 | env('BROADCAST_DRIVER', 'null'),
19 |
20 | /*
21 | |--------------------------------------------------------------------------
22 | | Broadcast Connections
23 | |--------------------------------------------------------------------------
24 | |
25 | | Here you may define all of the broadcast connections that will be used
26 | | to broadcast events to other systems or over websockets. Samples of
27 | | each available type of connection are provided inside this array.
28 | |
29 | */
30 |
31 | 'connections' => [
32 |
33 | 'pusher' => [
34 | 'driver' => 'pusher',
35 | 'key' => env('PUSHER_APP_KEY'),
36 | 'secret' => env('PUSHER_APP_SECRET'),
37 | 'app_id' => env('PUSHER_APP_ID'),
38 | 'options' => [
39 | //
40 | ],
41 | ],
42 |
43 | 'redis' => [
44 | 'driver' => 'redis',
45 | 'connection' => 'default',
46 | ],
47 |
48 | 'log' => [
49 | 'driver' => 'log',
50 | ],
51 |
52 | 'null' => [
53 | 'driver' => 'null',
54 | ],
55 |
56 | ],
57 |
58 | ];
59 |
--------------------------------------------------------------------------------
/composer.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "laravel/laravel",
3 | "description": "The Laravel Framework.",
4 | "keywords": ["framework", "laravel"],
5 | "license": "MIT",
6 | "type": "project",
7 | "require": {
8 | "php": ">=7.1.3",
9 | "fideloper/proxy": "~4.0",
10 | "laravel/framework": "5.6.*",
11 | "laravel/tinker": "~1.0",
12 | "laravelcollective/html": "^5.6"
13 | },
14 | "require-dev": {
15 | "filp/whoops": "~2.0",
16 | "fzaninotto/faker": "~1.4",
17 | "mockery/mockery": "~1.0",
18 | "nunomaduro/collision": "~2.0",
19 | "phpunit/phpunit": "~7.0",
20 | "symfony/thanks": "^1.0"
21 | },
22 | "autoload": {
23 | "classmap": [
24 | "database/seeds",
25 | "database/factories"
26 | ],
27 | "psr-4": {
28 | "App\\": "app/"
29 | }
30 | },
31 | "autoload-dev": {
32 | "psr-4": {
33 | "Tests\\": "tests/"
34 | }
35 | },
36 | "extra": {
37 | "laravel": {
38 | "dont-discover": [
39 | ]
40 | }
41 | },
42 | "scripts": {
43 | "post-root-package-install": [
44 | "@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
45 | ],
46 | "post-create-project-cmd": [
47 | "@php artisan key:generate"
48 | ],
49 | "post-autoload-dump": [
50 | "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
51 | "@php artisan package:discover"
52 | ]
53 | },
54 | "config": {
55 | "preferred-install": "dist",
56 | "sort-packages": true,
57 | "optimize-autoloader": true
58 | },
59 | "minimum-stability": "dev",
60 | "prefer-stable": true
61 | }
62 |
--------------------------------------------------------------------------------
/resources/views/users/show.blade.php:
--------------------------------------------------------------------------------
1 | @extends('layouts.public')
2 |
3 | @section('content')
4 |
5 |
6 |
7 |
{!! trans('users.heading') !!}
8 |
9 |
10 |
11 |
12 | {{ Form::model($data, ['route'=> ['users.update', $data], 'method'=>'patch', 'class'=>'form-horizontal']) }}
13 |
14 |
15 | {{ Form::label('name', trans('users.attributes.name'), ['for'=>'name']) }}
16 | {{ Form::text('name', null, ['class'=>'form-control', 'placeholder'=>trans('users.attributes.name'), 'required']) }}
17 |
18 |
19 |
20 |
21 | {{ Form::label('email', trans('users.attributes.email'), ['for'=>'email']) }}
22 | {{ Form::text('email', null, ['class'=>'form-control', 'placeholder'=>trans('users.attributes.email'), 'required']) }}
23 |
24 |
25 | {{ Form::close() }}
26 |
27 |
28 |
34 |
35 |
36 | @endsection
37 |
--------------------------------------------------------------------------------
/bootstrap/app.php:
--------------------------------------------------------------------------------
1 | singleton(
30 | Illuminate\Contracts\Http\Kernel::class,
31 | App\Http\Kernel::class
32 | );
33 |
34 | $app->singleton(
35 | Illuminate\Contracts\Console\Kernel::class,
36 | App\Console\Kernel::class
37 | );
38 |
39 | $app->singleton(
40 | Illuminate\Contracts\Debug\ExceptionHandler::class,
41 | App\Exceptions\Handler::class
42 | );
43 |
44 | /*
45 | |--------------------------------------------------------------------------
46 | | Return The Application
47 | |--------------------------------------------------------------------------
48 | |
49 | | This script returns the application instance. The instance is given to
50 | | the calling script so we can separate the building of the instances
51 | | from the actual running of the application and sending responses.
52 | |
53 | */
54 |
55 | return $app;
56 |
--------------------------------------------------------------------------------
/artisan:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env php
2 | make(Illuminate\Contracts\Console\Kernel::class);
32 |
33 | $status = $kernel->handle(
34 | $input = new Symfony\Component\Console\Input\ArgvInput,
35 | new Symfony\Component\Console\Output\ConsoleOutput
36 | );
37 |
38 | /*
39 | |--------------------------------------------------------------------------
40 | | Shutdown The Application
41 | |--------------------------------------------------------------------------
42 | |
43 | | Once Artisan has finished running. We will fire off the shutdown events
44 | | so that any final work may be done by the application before we shut
45 | | down the process. This is the last thing to happen to the request.
46 | |
47 | */
48 |
49 | $kernel->terminate($input, $status);
50 |
51 | exit($status);
52 |
--------------------------------------------------------------------------------
/app/Providers/RouteServiceProvider.php:
--------------------------------------------------------------------------------
1 | mapApiRoutes();
39 |
40 | $this->mapWebRoutes();
41 |
42 | //
43 | }
44 |
45 | /**
46 | * Define the "web" routes for the application.
47 | *
48 | * These routes all receive session state, CSRF protection, etc.
49 | *
50 | * @return void
51 | */
52 | protected function mapWebRoutes()
53 | {
54 | Route::middleware('web')
55 | ->namespace($this->namespace)
56 | ->group(base_path('routes/web.php'));
57 | }
58 |
59 | /**
60 | * Define the "api" routes for the application.
61 | *
62 | * These routes are typically stateless.
63 | *
64 | * @return void
65 | */
66 | protected function mapApiRoutes()
67 | {
68 | Route::prefix('api')
69 | ->middleware('api')
70 | ->namespace($this->namespace)
71 | ->group(base_path('routes/api.php'));
72 | }
73 | }
74 |
--------------------------------------------------------------------------------
/database/factories/ModelFactory.php:
--------------------------------------------------------------------------------
1 | define(App\Models\User::class, function (Faker\Generator $faker) {
16 | return [
17 | 'name' => 'Admin',
18 | 'email' => 'admin@admin.com',
19 | 'password' => bcrypt('123456'),
20 | 'remember_token' => str_random(10),
21 | ];
22 | });
23 |
24 | $factory->define(App\Models\Section::class, function (Faker\Generator $faker) {
25 | return [
26 | 'title' => $faker->sentence(),
27 | 'created_by' => 1,
28 | 'updated_by' => 1,
29 | ];
30 | });
31 |
32 | $factory->define(App\Models\Tag::class, function (Faker\Generator $faker) {
33 | return [
34 | 'name' => $faker->word,
35 | 'created_by' => 1,
36 | 'updated_by' => 1,
37 | ];
38 | });
39 |
40 | $factory->define(App\Models\Article::class, function (Faker\Generator $faker) {
41 | return [
42 | 'title' => $faker->sentence(),
43 | 'text' => $faker->paragraph(30),
44 | 'published' => $faker->boolean(),
45 | 'section_id' => 1,
46 | 'created_by' => 1,
47 | 'updated_by' => 1,
48 | ];
49 | });
50 |
51 | $factory->define(App\Models\Comment::class, function (Faker\Generator $faker) {
52 | return [
53 | 'text' => $faker->paragraph(),
54 | 'article_id' => 1,
55 | ];
56 | });
57 |
--------------------------------------------------------------------------------
/public/vendor/font-awesome/less/mixins.less:
--------------------------------------------------------------------------------
1 | // Mixins
2 | // --------------------------
3 |
4 | .fa-icon() {
5 | display: inline-block;
6 | font: normal normal normal @fa-font-size-base/@fa-line-height-base FontAwesome; // shortening font declaration
7 | font-size: inherit; // can't have font-size inherit on line above, so need to override
8 | text-rendering: auto; // optimizelegibility throws things off #1094
9 | -webkit-font-smoothing: antialiased;
10 | -moz-osx-font-smoothing: grayscale;
11 |
12 | }
13 |
14 | .fa-icon-rotate(@degrees, @rotation) {
15 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation})";
16 | -webkit-transform: rotate(@degrees);
17 | -ms-transform: rotate(@degrees);
18 | transform: rotate(@degrees);
19 | }
20 |
21 | .fa-icon-flip(@horiz, @vert, @rotation) {
22 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation}, mirror=1)";
23 | -webkit-transform: scale(@horiz, @vert);
24 | -ms-transform: scale(@horiz, @vert);
25 | transform: scale(@horiz, @vert);
26 | }
27 |
28 |
29 | // Only display content to screen readers. A la Bootstrap 4.
30 | //
31 | // See: http://a11yproject.com/posts/how-to-hide-content/
32 |
33 | .sr-only() {
34 | position: absolute;
35 | width: 1px;
36 | height: 1px;
37 | padding: 0;
38 | margin: -1px;
39 | overflow: hidden;
40 | clip: rect(0,0,0,0);
41 | border: 0;
42 | }
43 |
44 | // Use in conjunction with .sr-only to only display content when it's focused.
45 | //
46 | // Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1
47 | //
48 | // Credit: HTML5 Boilerplate
49 |
50 | .sr-only-focusable() {
51 | &:active,
52 | &:focus {
53 | position: static;
54 | width: auto;
55 | height: auto;
56 | margin: 0;
57 | overflow: visible;
58 | clip: auto;
59 | }
60 | }
61 |
--------------------------------------------------------------------------------
/resources/assets/vendor/font-awesome/less/mixins.less:
--------------------------------------------------------------------------------
1 | // Mixins
2 | // --------------------------
3 |
4 | .fa-icon() {
5 | display: inline-block;
6 | font: normal normal normal @fa-font-size-base/@fa-line-height-base FontAwesome; // shortening font declaration
7 | font-size: inherit; // can't have font-size inherit on line above, so need to override
8 | text-rendering: auto; // optimizelegibility throws things off #1094
9 | -webkit-font-smoothing: antialiased;
10 | -moz-osx-font-smoothing: grayscale;
11 |
12 | }
13 |
14 | .fa-icon-rotate(@degrees, @rotation) {
15 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation})";
16 | -webkit-transform: rotate(@degrees);
17 | -ms-transform: rotate(@degrees);
18 | transform: rotate(@degrees);
19 | }
20 |
21 | .fa-icon-flip(@horiz, @vert, @rotation) {
22 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation}, mirror=1)";
23 | -webkit-transform: scale(@horiz, @vert);
24 | -ms-transform: scale(@horiz, @vert);
25 | transform: scale(@horiz, @vert);
26 | }
27 |
28 |
29 | // Only display content to screen readers. A la Bootstrap 4.
30 | //
31 | // See: http://a11yproject.com/posts/how-to-hide-content/
32 |
33 | .sr-only() {
34 | position: absolute;
35 | width: 1px;
36 | height: 1px;
37 | padding: 0;
38 | margin: -1px;
39 | overflow: hidden;
40 | clip: rect(0,0,0,0);
41 | border: 0;
42 | }
43 |
44 | // Use in conjunction with .sr-only to only display content when it's focused.
45 | //
46 | // Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1
47 | //
48 | // Credit: HTML5 Boilerplate
49 |
50 | .sr-only-focusable() {
51 | &:active,
52 | &:focus {
53 | position: static;
54 | width: auto;
55 | height: auto;
56 | margin: 0;
57 | overflow: visible;
58 | clip: auto;
59 | }
60 | }
61 |
--------------------------------------------------------------------------------
/resources/views/auth/passwords/email.blade.php:
--------------------------------------------------------------------------------
1 | @extends('layouts.public')
2 |
3 | @section('content')
4 |
5 |
6 |
7 |
{{ trans('passwords.reset_text') }}
8 |
9 |
10 |
11 |
12 |
13 | @include('partials.errors')
14 | @if (session('status'))
15 |
16 | {{ session('status') }}
17 |
18 | @endif
19 |
39 |
40 |
41 |
42 | @endsection
43 |
--------------------------------------------------------------------------------
/public/vendor/font-awesome/scss/_mixins.scss:
--------------------------------------------------------------------------------
1 | // Mixins
2 | // --------------------------
3 |
4 | @mixin fa-icon() {
5 | display: inline-block;
6 | font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration
7 | font-size: inherit; // can't have font-size inherit on line above, so need to override
8 | text-rendering: auto; // optimizelegibility throws things off #1094
9 | -webkit-font-smoothing: antialiased;
10 | -moz-osx-font-smoothing: grayscale;
11 |
12 | }
13 |
14 | @mixin fa-icon-rotate($degrees, $rotation) {
15 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation})";
16 | -webkit-transform: rotate($degrees);
17 | -ms-transform: rotate($degrees);
18 | transform: rotate($degrees);
19 | }
20 |
21 | @mixin fa-icon-flip($horiz, $vert, $rotation) {
22 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}, mirror=1)";
23 | -webkit-transform: scale($horiz, $vert);
24 | -ms-transform: scale($horiz, $vert);
25 | transform: scale($horiz, $vert);
26 | }
27 |
28 |
29 | // Only display content to screen readers. A la Bootstrap 4.
30 | //
31 | // See: http://a11yproject.com/posts/how-to-hide-content/
32 |
33 | @mixin sr-only {
34 | position: absolute;
35 | width: 1px;
36 | height: 1px;
37 | padding: 0;
38 | margin: -1px;
39 | overflow: hidden;
40 | clip: rect(0,0,0,0);
41 | border: 0;
42 | }
43 |
44 | // Use in conjunction with .sr-only to only display content when it's focused.
45 | //
46 | // Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1
47 | //
48 | // Credit: HTML5 Boilerplate
49 |
50 | @mixin sr-only-focusable {
51 | &:active,
52 | &:focus {
53 | position: static;
54 | width: auto;
55 | height: auto;
56 | margin: 0;
57 | overflow: visible;
58 | clip: auto;
59 | }
60 | }
61 |
--------------------------------------------------------------------------------
/resources/assets/vendor/font-awesome/scss/_mixins.scss:
--------------------------------------------------------------------------------
1 | // Mixins
2 | // --------------------------
3 |
4 | @mixin fa-icon() {
5 | display: inline-block;
6 | font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration
7 | font-size: inherit; // can't have font-size inherit on line above, so need to override
8 | text-rendering: auto; // optimizelegibility throws things off #1094
9 | -webkit-font-smoothing: antialiased;
10 | -moz-osx-font-smoothing: grayscale;
11 |
12 | }
13 |
14 | @mixin fa-icon-rotate($degrees, $rotation) {
15 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation})";
16 | -webkit-transform: rotate($degrees);
17 | -ms-transform: rotate($degrees);
18 | transform: rotate($degrees);
19 | }
20 |
21 | @mixin fa-icon-flip($horiz, $vert, $rotation) {
22 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}, mirror=1)";
23 | -webkit-transform: scale($horiz, $vert);
24 | -ms-transform: scale($horiz, $vert);
25 | transform: scale($horiz, $vert);
26 | }
27 |
28 |
29 | // Only display content to screen readers. A la Bootstrap 4.
30 | //
31 | // See: http://a11yproject.com/posts/how-to-hide-content/
32 |
33 | @mixin sr-only {
34 | position: absolute;
35 | width: 1px;
36 | height: 1px;
37 | padding: 0;
38 | margin: -1px;
39 | overflow: hidden;
40 | clip: rect(0,0,0,0);
41 | border: 0;
42 | }
43 |
44 | // Use in conjunction with .sr-only to only display content when it's focused.
45 | //
46 | // Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1
47 | //
48 | // Credit: HTML5 Boilerplate
49 |
50 | @mixin sr-only-focusable {
51 | &:active,
52 | &:focus {
53 | position: static;
54 | width: auto;
55 | height: auto;
56 | margin: 0;
57 | overflow: visible;
58 | clip: auto;
59 | }
60 | }
61 |
--------------------------------------------------------------------------------
/public/index.php:
--------------------------------------------------------------------------------
1 |
7 | */
8 |
9 | /*
10 | |--------------------------------------------------------------------------
11 | | Register The Auto Loader
12 | |--------------------------------------------------------------------------
13 | |
14 | | Composer provides a convenient, automatically generated class loader for
15 | | our application. We just need to utilize it! We'll simply require it
16 | | into the script here so that we don't have to worry about manual
17 | | loading any of our classes later on. It feels nice to relax.
18 | |
19 | */
20 |
21 | require __DIR__.'/../bootstrap/autoload.php';
22 |
23 | /*
24 | |--------------------------------------------------------------------------
25 | | Turn On The Lights
26 | |--------------------------------------------------------------------------
27 | |
28 | | We need to illuminate PHP development, so let us turn on the lights.
29 | | This bootstraps the framework and gets it ready for use, then it
30 | | will load up this application so that we can run it and send
31 | | the responses back to the browser and delight our users.
32 | |
33 | */
34 |
35 | $app = require_once __DIR__.'/../bootstrap/app.php';
36 |
37 | /*
38 | |--------------------------------------------------------------------------
39 | | Run The Application
40 | |--------------------------------------------------------------------------
41 | |
42 | | Once we have the application, we can handle the incoming request
43 | | through the kernel, and send the associated response back to
44 | | the client's browser allowing them to enjoy the creative
45 | | and wonderful application we have prepared for them.
46 | |
47 | */
48 |
49 | $kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);
50 |
51 | $response = $kernel->handle(
52 | $request = Illuminate\Http\Request::capture()
53 | );
54 |
55 | $response->send();
56 |
57 | $kernel->terminate($request, $response);
58 |
--------------------------------------------------------------------------------
/resources/views/vendor/mail/html/layout.blade.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
25 |
26 |
27 |
28 |
29 |
30 | {{ $header or '' }}
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 | {{ Illuminate\Mail\Markdown::parse($slot) }}
40 |
41 | {{ $subcopy or '' }}
42 |
43 |
44 |
45 |
46 |
47 |
48 | {{ $footer or '' }}
49 |
50 |
51 |
52 |
53 |
54 |
55 |
--------------------------------------------------------------------------------
/app/Http/Controllers/Auth/RegisterController.php:
--------------------------------------------------------------------------------
1 | middleware('guest');
40 | }
41 |
42 | /**
43 | * Get a validator for an incoming registration request.
44 | *
45 | * @param array $data
46 | * @return \Illuminate\Contracts\Validation\Validator
47 | */
48 | protected function validator(array $data)
49 | {
50 | return Validator::make($data, [
51 | 'name' => 'required|max:255',
52 | 'email' => 'required|email|max:255|unique:users',
53 | 'password' => 'required|min:6|confirmed',
54 | ]);
55 | }
56 |
57 | /**
58 | * Create a new user instance after a valid registration.
59 | *
60 | * @param array $data
61 | * @return User
62 | */
63 | protected function create(array $data)
64 | {
65 | return User::create([
66 | 'name' => $data['name'],
67 | 'email' => $data['email'],
68 | 'password' => bcrypt($data['password']),
69 | ]);
70 | }
71 | }
72 |
--------------------------------------------------------------------------------
/app/Exceptions/Handler.php:
--------------------------------------------------------------------------------
1 | expectsJson()) {
60 | return response()->json(['error' => 'Unauthenticated.'], 401);
61 | }
62 |
63 | return redirect()->guest(route('login'));
64 | }
65 | }
66 |
--------------------------------------------------------------------------------
/resources/views/users/edit.blade.php:
--------------------------------------------------------------------------------
1 | @extends('layouts.public')
2 |
3 | @section('content')
4 |
5 |
6 |
7 |
{{ trans('users.heading') }}
8 |
9 |
10 |
11 |
12 | @include('partials.errors')
13 | @if(!empty($data))
14 | {{ Form::model($data, ['route'=> ['users.update', $data], 'method'=>'patch', 'class'=>'form-horizontal']) }}
15 | @else
16 | {{ Form::open(['url'=> url('/users'), 'method'=>'post', 'class'=>'form-horizontal']) }}
17 | @endif
18 |
19 |
20 | {{ Form::label('name', trans('users.attributes.name'), ['for'=>'name']) }}
21 | {{ Form::text('name', null, ['class'=>'form-control', 'placeholder'=>trans('users.attributes.name'), 'required']) }}
22 |
23 |
24 |
25 |
26 | {{ Form::label('email', 'Email', ['for'=>'email']) }}
27 | @if(!empty($data))
28 | {{ Form::email('email', null, ['class'=>'form-control', 'placeholder'=>trans('users.attributes.email'), 'disabled']) }}
29 | @else
30 | {{ Form::email('email', null, ['class'=>'form-control', 'placeholder'=>trans('users.attributes.email'), 'required']) }}
31 | @endif
32 |
33 |
34 |
35 |
36 |
37 |
38 | {{ Form::submit(trans('global.save'), ['class'=>'btn btn-success']) }}
39 |
40 |
41 | {{ Form::close() }}
42 |
43 |
44 | @endsection
45 |
--------------------------------------------------------------------------------
/config/filesystems.php:
--------------------------------------------------------------------------------
1 | 'local',
17 |
18 | /*
19 | |--------------------------------------------------------------------------
20 | | Default Cloud Filesystem Disk
21 | |--------------------------------------------------------------------------
22 | |
23 | | Many applications store files both locally and in the cloud. For this
24 | | reason, you may specify a default "cloud" driver here. This driver
25 | | will be bound as the Cloud disk implementation in the container.
26 | |
27 | */
28 |
29 | 'cloud' => 's3',
30 |
31 | /*
32 | |--------------------------------------------------------------------------
33 | | Filesystem Disks
34 | |--------------------------------------------------------------------------
35 | |
36 | | Here you may configure as many filesystem "disks" as you wish, and you
37 | | may even configure multiple disks of the same driver. Defaults have
38 | | been setup for each driver as an example of the required options.
39 | |
40 | | Supported Drivers: "local", "ftp", "s3", "rackspace"
41 | |
42 | */
43 |
44 | 'disks' => [
45 |
46 | 'local' => [
47 | 'driver' => 'local',
48 | 'root' => storage_path('app'),
49 | ],
50 |
51 | 'public' => [
52 | 'driver' => 'local',
53 | 'root' => storage_path('app/public'),
54 | 'url' => env('APP_URL').'/storage',
55 | 'visibility' => 'public',
56 | ],
57 |
58 | 's3' => [
59 | 'driver' => 's3',
60 | 'key' => env('AWS_KEY'),
61 | 'secret' => env('AWS_SECRET'),
62 | 'region' => env('AWS_REGION'),
63 | 'bucket' => env('AWS_BUCKET'),
64 | ],
65 |
66 | ],
67 |
68 | ];
69 |
--------------------------------------------------------------------------------
/app/Http/Kernel.php:
--------------------------------------------------------------------------------
1 | [
37 |
38 | // \Illuminate\Session\Middleware\StartSession::class,
39 | // \Illuminate\Session\Middleware\AuthenticateSession::class,
40 | \Illuminate\Routing\Middleware\SubstituteBindings::class,
41 | ],
42 |
43 | 'api' => [
44 | 'throttle:60,1',
45 | 'bindings',
46 | ],
47 | ];
48 |
49 | /**
50 | * The application's route middleware.
51 | *
52 | * These middleware may be assigned to groups or used individually.
53 | *
54 | * @var array
55 | */
56 | protected $routeMiddleware = [
57 | 'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
58 | 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
59 | 'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
60 | 'can' => \Illuminate\Auth\Middleware\Authorize::class,
61 | 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
62 | 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
63 | ];
64 | }
65 |
--------------------------------------------------------------------------------
/readme.md:
--------------------------------------------------------------------------------
1 | ## Start Laravel [](https://travis-ci.org/omartawba1/start_laravel) [](https://styleci.io/repos/85490276)
2 |
3 | Start laravel is a simple start app to learn how to develop with laravel, You'll learn these components
4 |
5 | - [Migration, Seeding, Routing, Controllers, Models, Validation, Requests, Views, Events, Notifications, Listeners, Auth, Commands, ...etc]
6 |
7 | Each framework should has it's quick start app, Let this application be your quick start to Laravel,
8 | It'll help you to build your app structure and show you each component of Laravel and how to best practice them.
9 | I hope it'll help you on understanding Laravel & how to work with it.
10 |
11 | ## Modules & Features
12 |
13 | You can find here modules for `users` , `sections` , `articles` , `comments`
14 | also you can some good features like `login` , `registration` , `translation`
15 |
16 | ## Screen capture
17 |
18 | [](https://youtu.be/xH4Y3zxhO98)
19 | [](https://youtu.be/xH4Y3zxhO98)
20 | [](https://youtu.be/xH4Y3zxhO98)
21 | [](https://youtu.be/xH4Y3zxhO98)
22 | [](https://youtu.be/xH4Y3zxhO98)
23 |
24 | ## Installation Steps
25 |
26 | First you will need to clone the project
27 |
28 | Then you go to project directory and run
29 |
30 | `composer install`
31 |
32 | Then create a database named start_laravel then rename `.env.example` to `.env` and change database configuration values to yours.
33 |
34 | Then run
35 |
36 | `php artisan key:generate`
37 |
38 | Then
39 |
40 | `php artisan migrate`
41 |
42 | Then seed users table
43 |
44 | `php artisan db:seed`
45 |
46 | ## Default Login Data
47 |
48 | Email :`admin@admin.com`
49 | Pass :`123456`
50 |
51 | ## Custom commands
52 |
53 | php artisan clear:db
54 |
55 |
56 | ## Contributing
57 |
58 | Thank you for considering contributing to the start app! you can fork this repository and any merge request are welcome anytime.
59 |
60 | ## License
61 |
62 | The Start Laravel app licensed under the [MIT license](http://opensource.org/licenses/MIT).
63 |
--------------------------------------------------------------------------------
/resources/views/partials/menu.blade.php:
--------------------------------------------------------------------------------
1 |
2 |
46 |
47 |
--------------------------------------------------------------------------------
/config/queue.php:
--------------------------------------------------------------------------------
1 | env('QUEUE_DRIVER', 'sync'),
19 |
20 | /*
21 | |--------------------------------------------------------------------------
22 | | Queue Connections
23 | |--------------------------------------------------------------------------
24 | |
25 | | Here you may configure the connection information for each server that
26 | | is used by your application. A default configuration has been added
27 | | for each back-end shipped with Laravel. You are free to add more.
28 | |
29 | */
30 |
31 | 'connections' => [
32 |
33 | 'sync' => [
34 | 'driver' => 'sync',
35 | ],
36 |
37 | 'database' => [
38 | 'driver' => 'database',
39 | 'table' => 'jobs',
40 | 'queue' => 'default',
41 | 'retry_after' => 90,
42 | ],
43 |
44 | 'beanstalkd' => [
45 | 'driver' => 'beanstalkd',
46 | 'host' => 'localhost',
47 | 'queue' => 'default',
48 | 'retry_after' => 90,
49 | ],
50 |
51 | 'sqs' => [
52 | 'driver' => 'sqs',
53 | 'key' => 'your-public-key',
54 | 'secret' => 'your-secret-key',
55 | 'prefix' => 'https://sqs.us-east-1.amazonaws.com/your-account-id',
56 | 'queue' => 'your-queue-name',
57 | 'region' => 'us-east-1',
58 | ],
59 |
60 | 'redis' => [
61 | 'driver' => 'redis',
62 | 'connection' => 'default',
63 | 'queue' => 'default',
64 | 'retry_after' => 90,
65 | ],
66 |
67 | ],
68 |
69 | /*
70 | |--------------------------------------------------------------------------
71 | | Failed Queue Jobs
72 | |--------------------------------------------------------------------------
73 | |
74 | | These options configure the behavior of failed queue job logging so you
75 | | can control which database and table are used to store the jobs that
76 | | have failed. You may change them to any database / table you wish.
77 | |
78 | */
79 |
80 | 'failed' => [
81 | 'database' => env('DB_CONNECTION', 'mysql'),
82 | 'table' => 'failed_jobs',
83 | ],
84 |
85 | ];
86 |
--------------------------------------------------------------------------------
/resources/lang/ar/global.php:
--------------------------------------------------------------------------------
1 | 'إضافة جديد',
5 | 'back' => 'عودة',
6 | 'edit' => 'تحرير',
7 | 'view' => 'عرض',
8 | 'delete' => 'حذف',
9 | 'added' => 'تم الإضافة بنجاح',
10 | 'updated' => 'تم التعديل بنجاح',
11 | 'deleted' => 'تم الحذف بنجاح',
12 | 'no_data' => 'عفوآ لا يوجد بيانات للعرض',
13 | 'cannot_delete' => 'عفوآ هذا العنصر يحتوي على عناصر أخري !',
14 | 'filter' => 'بحث',
15 | 'save' => 'حفظ',
16 | 'anonymous' => 'غير معروف',
17 | 'views' => 'مشاهدات',
18 | 'actions' => 'الأفعال',
19 | 'title' => 'Laravel - ابدأ تعلم لارافيل',
20 | 'skip' => 'الذهاب الى المحتوى الرئيسي',
21 | 'location' => 'المكان',
22 | 'address' => '3481 عنوان حقيقي عنوان حقيقي عنوان حقيقي',
23 | 'around_web' => 'تابعنا في التواصل الاجتماعي',
24 | 'facebook' => 'فيسبوك',
25 | 'google' => 'جوجل',
26 | 'google_plus' => 'جوجل بلس',
27 | 'twitter' => 'تويتر',
28 | 'linked_in' => 'لينكد ان',
29 | 'dribble' => 'دريبل',
30 | 'about' => 'عن مشروع تعلم لارافيل',
31 | 'about_txt' => 'مشروع تعلم لارافيل بنى على
32 | فري لانس قالب ويب &
33 | تم تطويره بواسطة
34 | عمر توبة .',
35 | 'cpy' => 'حقوق النشر لشركتك ٢٠١٧',
36 | 'header' => 'تعلم لارافيل',
37 | 'header_span1' => 'الآن تستطيع تعلم لارافيل .. بها كل الامكانيات التي ممكن ان تتخيلها في هذا المشروع',
38 | 'header_span2' => 'Migration, Seeding, Models, Controllers, Routing, Events, Listeners, Queues, Validation, Notifications, ...etc',
39 | 'toggle' => 'إخفاء القائمة',
40 | 'menu' => 'القائمة الرئيسية',
41 | 'read_more' => 'اقرأ المزيد ...',
42 | 'on' => 'في',
43 | 'dashboard' => 'لوحة التحكم',
44 | 'dashboard_intro' => 'إذا كنت في حاجة الى بداية سريعة ل لارافيل، هذا سوف تساعدك
45 | تعلم لارافيل هو نسخة تجريبية للارافيل بنيت على لارافيل 5.4.
46 | هنا ستجد أي شيء لتعلم لارافيل مثل
47 | وحدات التحكم، نماذج، أوامر، التوجيه، .. الخ
',
48 | 'dashboard_intro1' => 'الهدف الرئيسي من تطوير هذا المشروع هو أن تكون بداية سريعة ل
49 | لارافيل لتسريع عملية التعلم للارافيل للمبتدئين.',
50 | 'dashboard_about' => 'تم تطويره بواسطة عمر توبة باستخدام فري لانس قالب ويب
',
51 | '' => '',
52 | ];
53 |
--------------------------------------------------------------------------------
/config/cache.php:
--------------------------------------------------------------------------------
1 | env('CACHE_DRIVER', 'file'),
19 |
20 | /*
21 | |--------------------------------------------------------------------------
22 | | Cache Stores
23 | |--------------------------------------------------------------------------
24 | |
25 | | Here you may define all of the cache "stores" for your application as
26 | | well as their drivers. You may even define multiple stores for the
27 | | same cache driver to group types of items stored in your caches.
28 | |
29 | */
30 |
31 | 'stores' => [
32 |
33 | 'apc' => [
34 | 'driver' => 'apc',
35 | ],
36 |
37 | 'array' => [
38 | 'driver' => 'array',
39 | ],
40 |
41 | 'database' => [
42 | 'driver' => 'database',
43 | 'table' => 'cache',
44 | 'connection' => null,
45 | ],
46 |
47 | 'file' => [
48 | 'driver' => 'file',
49 | 'path' => storage_path('framework/cache/data'),
50 | ],
51 |
52 | 'memcached' => [
53 | 'driver' => 'memcached',
54 | 'persistent_id' => env('MEMCACHED_PERSISTENT_ID'),
55 | 'sasl' => [
56 | env('MEMCACHED_USERNAME'),
57 | env('MEMCACHED_PASSWORD'),
58 | ],
59 | 'options' => [
60 | // Memcached::OPT_CONNECT_TIMEOUT => 2000,
61 | ],
62 | 'servers' => [
63 | [
64 | 'host' => env('MEMCACHED_HOST', '127.0.0.1'),
65 | 'port' => env('MEMCACHED_PORT', 11211),
66 | 'weight' => 100,
67 | ],
68 | ],
69 | ],
70 |
71 | 'redis' => [
72 | 'driver' => 'redis',
73 | 'connection' => 'default',
74 | ],
75 |
76 | ],
77 |
78 | /*
79 | |--------------------------------------------------------------------------
80 | | Cache Key Prefix
81 | |--------------------------------------------------------------------------
82 | |
83 | | When utilizing a RAM based store such as APC or Memcached, there might
84 | | be other applications utilizing the same cache. So, we'll specify a
85 | | value to get prefixed to all our keys so we can avoid collisions.
86 | |
87 | */
88 |
89 | 'prefix' => 'laravel',
90 |
91 | ];
92 |
--------------------------------------------------------------------------------
/resources/lang/en/global.php:
--------------------------------------------------------------------------------
1 | 'Add New',
5 | 'back' => 'Back',
6 | 'edit' => 'Edit',
7 | 'view' => 'View',
8 | 'delete' => 'Delete',
9 | 'added' => 'Added Successfully',
10 | 'updated' => 'Edited Successfully',
11 | 'deleted' => 'Deleted Successfully',
12 | 'no_data' => 'No data for displaying',
13 | 'cannot_delete' => 'Sorry! this item contains another items inside it!',
14 | 'filter' => 'Filter',
15 | 'save' => 'Save',
16 | 'anonymous' => 'Anonymous',
17 | 'views' => 'Views',
18 | 'actions' => 'Actions',
19 | 'title' => 'Laravel - Start Learning Laravel',
20 | 'skip' => 'Skip to main content',
21 | 'location' => 'Location',
22 | 'address' => '3481 Melrose Place Beverly Hills, CA 90210',
23 | 'around_web' => 'Around the Web',
24 | 'facebook' => 'Facebook',
25 | 'google' => 'Google',
26 | 'google_plus' => 'Google Plus',
27 | 'twitter' => 'Twitter',
28 | 'linked_in' => 'Linked In',
29 | 'dribble' => 'Dribble',
30 | 'about' => 'About Learning laravel',
31 | 'about_txt' => 'Learning Laravel is built on
32 | Freelance HTML template &
33 | developed by
34 | Omar Tawba .',
35 | 'cpy' => 'Copyright © Your Website 2017',
36 | 'header' => 'Start Laravel',
37 | 'header_span1' => 'Now you can start learning laravel, You\'ll find all of the tools here like',
38 | 'header_span2' => 'Migration, Seeding, Models, Controllers, Routing, Events, Listeners, Queues, Validation, Notifications, ...etc',
39 | 'toggle' => 'Toggle navigation',
40 | 'menu' => 'Menu',
41 | 'read_more' => 'Read more...',
42 | 'on' => 'on',
43 | 'dashboard' => 'Dashboard',
44 | 'dashboard_intro' => "If you need a quick start to Laravel, this will help you
45 | Learning laravel is a demo for Laravel was built on Laravel 5.4 .
46 | Here you'll find anything for learning laravel like
47 | Controllers, Models, Commands, Routing, ..etc
",
48 | 'dashboard_intro1' => 'The main target from developing this demo is to be a quick start for
49 | any Laravel beginner to speed the process of learning Laravel.',
50 | 'dashboard_about' => 'This made by Omar
51 | Zaki using Freelance HTML template
',
52 | '' => '',
53 | ];
54 |
--------------------------------------------------------------------------------