├── .DS_Store
├── .editorconfig
├── .env.example
├── .gitattributes
├── .gitignore
├── README.md
├── app
├── CastCrew.php
├── Console
│ └── Kernel.php
├── Exceptions
│ └── Handler.php
├── Genre.php
├── Http
│ ├── Controllers
│ │ ├── API
│ │ │ ├── MoviesController.php
│ │ │ └── UserController.php
│ │ ├── Auth
│ │ │ ├── ForgotPasswordController.php
│ │ │ ├── LoginController.php
│ │ │ ├── RegisterController.php
│ │ │ └── ResetPasswordController.php
│ │ ├── CastCrewController.php
│ │ ├── Controller.php
│ │ ├── GenreController.php
│ │ ├── HomeController.php
│ │ ├── MoviesController.php
│ │ ├── RatingsController.php
│ │ ├── ReviewsController.php
│ │ ├── RolesController.php
│ │ ├── UserController.php
│ │ └── VotesController.php
│ ├── Kernel.php
│ └── Middleware
│ │ ├── EncryptCookies.php
│ │ ├── RedirectIfAuthenticated.php
│ │ ├── TrimStrings.php
│ │ ├── TrustProxies.php
│ │ └── VerifyCsrfToken.php
├── Movies.php
├── Providers
│ ├── AppServiceProvider.php
│ ├── AuthServiceProvider.php
│ ├── BroadcastServiceProvider.php
│ ├── EventServiceProvider.php
│ └── RouteServiceProvider.php
├── Ratings.php
├── Reviews.php
├── Roles.php
├── User.php
└── Votes.php
├── artisan
├── bootstrap
├── app.php
└── cache
│ └── .gitignore
├── composer.json
├── composer.lock
├── config
├── app.php
├── auth.php
├── broadcasting.php
├── cache.php
├── database.php
├── filesystems.php
├── hashing.php
├── logging.php
├── mail.php
├── queue.php
├── services.php
├── session.php
└── view.php
├── database
├── .gitignore
├── factories
│ ├── CastCrewFactory.php
│ ├── GenreFactory.php
│ ├── MoviesFactory.php
│ ├── RatingsFactory.php
│ ├── ReviewsFactory.php
│ ├── RolesFactory.php
│ ├── UserFactory.php
│ └── VotesFactory.php
├── migrations
│ ├── 2014_10_12_000000_create_users_table.php
│ ├── 2014_10_12_100000_create_password_resets_table.php
│ ├── 2018_06_24_141456_create_movies_table.php
│ ├── 2018_06_24_141838_create_roles_table.php
│ ├── 2018_06_24_141903_create_genres_table.php
│ ├── 2018_06_24_141908_create_reviews_table.php
│ ├── 2018_06_24_141918_create_ratings_table.php
│ ├── 2018_06_24_141926_create_votes_table.php
│ └── 2018_06_25_182534_create_cast_crews_table.php
└── seeds
│ ├── DatabaseSeeder.php
│ ├── GenreTableSeeder.php
│ ├── MoviesTableSeeder.php
│ ├── RatingsTableSeeder.php
│ ├── RolesTableSeeder.php
│ └── UsersTableSeeder.php
├── laramovies-schema.png
├── package.json
├── phpunit.xml
├── public
├── .htaccess
├── css
│ └── app.css
├── favicon.ico
├── index.php
├── js
│ └── app.js
└── robots.txt
├── resources
├── .DS_Store
├── assets
│ ├── fonts
│ │ └── feather
│ │ │ ├── feather-webfont.eot
│ │ │ ├── feather-webfont.svg
│ │ │ ├── feather-webfont.ttf
│ │ │ └── feather-webfont.woff
│ ├── js
│ │ ├── app.js
│ │ ├── bootstrap.js
│ │ └── components
│ │ │ └── ExampleComponent.vue
│ └── sass
│ │ ├── _variables.scss
│ │ ├── app.scss
│ │ └── tabler
│ │ ├── _alert.scss
│ │ ├── _aside.scss
│ │ ├── _avatar.scss
│ │ ├── _badge.scss
│ │ ├── _breadcrumb.scss
│ │ ├── _button.scss
│ │ ├── _cards.scss
│ │ ├── _carousel.scss
│ │ ├── _charts.scss
│ │ ├── _chat.scss
│ │ ├── _chips.scss
│ │ ├── _close.scss
│ │ ├── _colors.scss
│ │ ├── _core.scss
│ │ ├── _dropdown.scss
│ │ ├── _footer.scss
│ │ ├── _form.scss
│ │ ├── _functions.scss
│ │ ├── _grid.scss
│ │ ├── _header.scss
│ │ ├── _icon.scss
│ │ ├── _image.scss
│ │ ├── _infobox.scss
│ │ ├── _layout.scss
│ │ ├── _link.scss
│ │ ├── _list-group.scss
│ │ ├── _list.scss
│ │ ├── _maps.scss
│ │ ├── _media.scss
│ │ ├── _nav.scss
│ │ ├── _pagination.scss
│ │ ├── _popover.scss
│ │ ├── _product.scss
│ │ ├── _progress.scss
│ │ ├── _selectize.scss
│ │ ├── _social.scss
│ │ ├── _sparkline.scss
│ │ ├── _stamp.scss
│ │ ├── _statuses.scss
│ │ ├── _syntax.scss
│ │ ├── _tables.scss
│ │ ├── _tag.scss
│ │ ├── _text.scss
│ │ ├── _timeline.scss
│ │ ├── _type.scss
│ │ ├── _utilities.scss
│ │ ├── fonts
│ │ └── _feather.scss
│ │ ├── forms
│ │ ├── _custom-colorinput.scss
│ │ ├── _custom-imagecheck.scss
│ │ ├── _custom-range.scss
│ │ ├── _custom-selectgroup.scss
│ │ └── _custom-switch.scss
│ │ └── tabler.scss
├── lang
│ └── en
│ │ ├── auth.php
│ │ ├── pagination.php
│ │ ├── passwords.php
│ │ └── validation.php
└── views
│ ├── auth
│ ├── login.blade.php
│ ├── passwords
│ │ ├── email.blade.php
│ │ └── reset.blade.php
│ └── register.blade.php
│ ├── home.blade.php
│ ├── layouts
│ └── app.blade.php
│ ├── movies
│ ├── create.blade.php
│ ├── edit.blade.php
│ ├── index.blade.php
│ └── show.blade.php
│ ├── roles
│ ├── create.blade.php
│ ├── edit.blade.php
│ ├── index.blade.php
│ └── show.blade.php
│ ├── users
│ ├── create.blade.php
│ ├── edit.blade.php
│ ├── index.blade.php
│ └── show.blade.php
│ └── welcome.blade.php
├── routes
├── api.php
├── channels.php
├── console.php
└── web.php
├── server.php
├── storage
├── app
│ ├── .gitignore
│ └── public
│ │ └── .gitignore
├── framework
│ ├── .gitignore
│ ├── cache
│ │ └── .gitignore
│ ├── sessions
│ │ └── .gitignore
│ ├── testing
│ │ └── .gitignore
│ └── views
│ │ └── .gitignore
└── logs
│ └── .gitignore
├── tests
├── CreatesApplication.php
├── Feature
│ └── ExampleTest.php
├── TestCase.php
└── Unit
│ └── ExampleTest.php
├── webpack.mix.js
└── yarn.lock
/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imzeeshan/laramovies/517b825de80b0dc57c2116069da1dc5b655e0579/.DS_Store
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | charset = utf-8
5 | end_of_line = lf
6 | insert_final_newline = true
7 | indent_style = space
8 | indent_size = 4
9 | trim_trailing_whitespace = true
10 |
11 | [*.md]
12 | trim_trailing_whitespace = false
13 |
14 | [*.yml]
15 | indent_style = space
16 | indent_size = 2
17 |
--------------------------------------------------------------------------------
/.env.example:
--------------------------------------------------------------------------------
1 | APP_NAME=Laravel
2 | APP_ENV=local
3 | APP_KEY=
4 | APP_DEBUG=true
5 | APP_URL=http://localhost
6 |
7 | LOG_CHANNEL=stack
8 |
9 | DB_CONNECTION=mysql
10 | DB_HOST=127.0.0.1
11 | DB_PORT=3306
12 | DB_DATABASE=homestead
13 | DB_USERNAME=homestead
14 | DB_PASSWORD=secret
15 |
16 | BROADCAST_DRIVER=log
17 | CACHE_DRIVER=file
18 | SESSION_DRIVER=file
19 | SESSION_LIFETIME=120
20 | QUEUE_DRIVER=sync
21 |
22 | REDIS_HOST=127.0.0.1
23 | REDIS_PASSWORD=null
24 | REDIS_PORT=6379
25 |
26 | MAIL_DRIVER=smtp
27 | MAIL_HOST=smtp.mailtrap.io
28 | MAIL_PORT=2525
29 | MAIL_USERNAME=null
30 | MAIL_PASSWORD=null
31 | MAIL_ENCRYPTION=null
32 |
33 | PUSHER_APP_ID=
34 | PUSHER_APP_KEY=
35 | PUSHER_APP_SECRET=
36 | PUSHER_APP_CLUSTER=mt1
37 |
38 | MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
39 | MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
40 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | * text=auto
2 | *.css linguist-vendored
3 | *.scss linguist-vendored
4 | *.js linguist-vendored
5 | CHANGELOG.md export-ignore
6 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | /node_modules
2 | /public/hot
3 | /public/storage
4 | /storage/*.key
5 | /vendor
6 | /.idea
7 | /.vscode
8 | /.vagrant
9 | Homestead.json
10 | Homestead.yaml
11 | npm-debug.log
12 | yarn-error.log
13 | .env
14 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | **LaraMovies** - A simple Movies dashboard with Laravel and http://tabler.io
2 |
3 | **Database Schema**
4 |
5 | 
6 |
7 | Steps Involved.
8 |
9 | 1) laravel new laramovies
10 | 2) composer require cesaramirez/laravel-tabler
11 | 3) php artisan preset tabler-auth
12 | 4) yarn
13 | 5) yarn dev
14 | 6) php artisan key:generate
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/app/CastCrew.php:
--------------------------------------------------------------------------------
1 | belongsTo('App\User');
23 | }
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/app/Console/Kernel.php:
--------------------------------------------------------------------------------
1 | command('inspire')
28 | // ->hourly();
29 | }
30 |
31 | /**
32 | * Register the commands for the application.
33 | *
34 | * @return void
35 | */
36 | protected function commands()
37 | {
38 | $this->load(__DIR__.'/Commands');
39 |
40 | require base_path('routes/console.php');
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/app/Exceptions/Handler.php:
--------------------------------------------------------------------------------
1 | first_name;
46 | $last_name = $request->last_name;
47 | $email = $request->email;
48 | $password = bcrypt($request->password);
49 | $bio = $request->bio;
50 | $role_id = $request->role;
51 |
52 | $user->first_name = $first_name;
53 | $user->last_name = $last_name;
54 | $user->email = $email;
55 | $user->password = $password;
56 | $user->role_id = $role_id;
57 | $user->bio = $bio;
58 | $user->save();
59 |
60 | return 'success';
61 | }
62 |
63 | /**
64 | * Display the specified resource.
65 | *
66 | * @param int $id
67 | * @return \Illuminate\Http\Response
68 | */
69 | public function show($id)
70 | {
71 | $user = User::find($id);
72 | $roles = Roles::all();
73 | return $user;
74 | }
75 |
76 | /**
77 | * Show the form for editing the specified resource.
78 | *
79 | * @param int $id
80 | * @return \Illuminate\Http\Response
81 | */
82 | public function edit($id)
83 | {
84 | $user = User::find($id);
85 | $roles = Roles::all();
86 |
87 | }
88 |
89 | /**
90 | * Update the specified resource in storage.
91 | *
92 | * @param \Illuminate\Http\Request $request
93 | * @param int $id
94 | * @return \Illuminate\Http\Response
95 | */
96 | public function update(Request $request, $id)
97 | {
98 | $user = User::find($id);
99 |
100 | $first_name = $request->first_name;
101 | $last_name = $request->last_name;
102 | $email = $request->email;
103 |
104 | if($request->password)
105 | $password = bcrypt($request->password);
106 |
107 | $bio = $request->bio;
108 | $role_id = $request->role;
109 |
110 | $user->first_name = $first_name;
111 | $user->last_name = $last_name;
112 | $user->email = $email;
113 |
114 | if($request->password)
115 | $user->password = $password;
116 |
117 | $user->role_id = $role_id;
118 | $user->bio = $bio;
119 | $user->save();
120 |
121 | return "success";
122 |
123 | }
124 |
125 | /**
126 | * Remove the specified resource from storage.
127 | *
128 | * @param int $id
129 | * @return \Illuminate\Http\Response
130 | */
131 | public function destroy($id)
132 | {
133 | User::find($id)->delete();
134 | return "success";
135 | }
136 | }
137 |
--------------------------------------------------------------------------------
/app/Http/Controllers/Auth/ForgotPasswordController.php:
--------------------------------------------------------------------------------
1 | middleware('guest');
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/app/Http/Controllers/Auth/LoginController.php:
--------------------------------------------------------------------------------
1 | middleware('guest')->except('logout');
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/app/Http/Controllers/Auth/RegisterController.php:
--------------------------------------------------------------------------------
1 | middleware('guest');
41 | }
42 |
43 | /**
44 | * Get a validator for an incoming registration request.
45 | *
46 | * @param array $data
47 | * @return \Illuminate\Contracts\Validation\Validator
48 | */
49 | protected function validator(array $data)
50 | {
51 | return Validator::make($data, [
52 | 'name' => 'required|string|max:255',
53 | 'email' => 'required|string|email|max:255|unique:users',
54 | 'password' => 'required|string|min:6|confirmed',
55 | ]);
56 | }
57 |
58 | /**
59 | * Create a new user instance after a valid registration.
60 | *
61 | * @param array $data
62 | * @return \App\User
63 | */
64 | protected function create(array $data)
65 | {
66 | return User::create([
67 | 'name' => $data['name'],
68 | 'email' => $data['email'],
69 | 'password' => Hash::make($data['password']),
70 | ]);
71 | }
72 | }
73 |
--------------------------------------------------------------------------------
/app/Http/Controllers/Auth/ResetPasswordController.php:
--------------------------------------------------------------------------------
1 | middleware('guest');
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/app/Http/Controllers/CastCrewController.php:
--------------------------------------------------------------------------------
1 | middleware('auth');
17 | }
18 |
19 | /**
20 | * Show the application dashboard.
21 | *
22 | * @return \Illuminate\Http\Response
23 | */
24 | public function index()
25 | {
26 | return view('home');
27 | }
28 | }
--------------------------------------------------------------------------------
/app/Http/Controllers/RatingsController.php:
--------------------------------------------------------------------------------
1 | $roles]);
20 | }
21 |
22 | /**
23 | * Show the form for creating a new resource.
24 | *
25 | * @return \Illuminate\Http\Response
26 | */
27 | public function create()
28 | {
29 | return view('roles.create');
30 | }
31 |
32 | /**
33 | * Store a newly created resource in storage.
34 | *
35 | * @param \Illuminate\Http\Request $request
36 | * @return \Illuminate\Http\Response
37 | */
38 | public function store(Request $request)
39 | {
40 | $role = new Roles();
41 | $role->name = $request->name;
42 | $role->save();
43 |
44 | return Redirect::to('roles')->with('message', 'New Role added!');
45 | }
46 |
47 | /**
48 | * Display the specified resource.
49 | *
50 | * @param int $id
51 | * @return \Illuminate\Http\Response
52 | */
53 | public function show($id)
54 | {
55 | $role = Roles::find($id);
56 | return view('roles.show', [ 'role' => $role]);
57 | }
58 |
59 | /**
60 | * Show the form for editing the specified resource.
61 | *
62 | * @param int $id
63 | * @return \Illuminate\Http\Response
64 | */
65 | public function edit($id)
66 | {
67 | $role = Roles::find($id);
68 | return view('roles.edit', [ 'role' => $role]);
69 | }
70 |
71 | /**
72 | * Update the specified resource in storage.
73 | *
74 | * @param \Illuminate\Http\Request $request
75 | * @param int $id
76 | * @return \Illuminate\Http\Response
77 | */
78 | public function update(Request $request, $id)
79 | {
80 | $role = Roles::find($id);
81 | $role->name = $request->name;
82 | $role->save();
83 |
84 | return Redirect::to('roles')->with('message', 'Role updated!');
85 | }
86 |
87 | /**
88 | * Remove the specified resource from storage.
89 | *
90 | * @param int $id
91 | * @return \Illuminate\Http\Response
92 | */
93 | public function destroy($id)
94 | {
95 | Roles::find($id)->delete();
96 | return Redirect::to('roles')->with('message', 'Role deleted!');
97 | }
98 | }
99 |
--------------------------------------------------------------------------------
/app/Http/Controllers/UserController.php:
--------------------------------------------------------------------------------
1 | $users]);
22 | }
23 |
24 | /**
25 | * Show the form for creating a new resource.
26 | *
27 | * @return \Illuminate\Http\Response
28 | */
29 | public function create()
30 | {
31 | $roles = Roles::all();
32 | return view('users.create', [ 'roles' => $roles]);
33 | }
34 |
35 | /**
36 | * Store a newly created resource in storage.
37 | *
38 | * @param \Illuminate\Http\Request $request
39 | * @return \Illuminate\Http\Response
40 | */
41 | public function store(Request $request)
42 | {
43 | $user = new User();
44 |
45 | $first_name = $request->first_name;
46 | $last_name = $request->last_name;
47 | $email = $request->email;
48 | $password = bcrypt($request->password);
49 | $bio = $request->bio;
50 | $role_id = $request->role;
51 |
52 | $user->first_name = $first_name;
53 | $user->last_name = $last_name;
54 | $user->email = $email;
55 | $user->password = $password;
56 | $user->role_id = $role_id;
57 | $user->bio = $bio;
58 | $user->save();
59 |
60 | return Redirect::to('users')->with('message', 'New User added!');
61 | }
62 |
63 | /**
64 | * Display the specified resource.
65 | *
66 | * @param int $id
67 | * @return \Illuminate\Http\Response
68 | */
69 | public function show($id)
70 | {
71 | $user = User::find($id);
72 | $roles = Roles::all();
73 | return view('users.show', [ 'roles' => $roles , 'user' => $user ]);
74 | }
75 |
76 | /**
77 | * Show the form for editing the specified resource.
78 | *
79 | * @param int $id
80 | * @return \Illuminate\Http\Response
81 | */
82 | public function edit($id)
83 | {
84 | $user = User::find($id);
85 | $roles = Roles::all();
86 | return view('users.edit', [ 'roles' => $roles , 'user' => $user ]);
87 | }
88 |
89 | /**
90 | * Update the specified resource in storage.
91 | *
92 | * @param \Illuminate\Http\Request $request
93 | * @param int $id
94 | * @return \Illuminate\Http\Response
95 | */
96 | public function update(Request $request, $id)
97 | {
98 | $user = User::find($id);
99 |
100 | $first_name = $request->first_name;
101 | $last_name = $request->last_name;
102 | $email = $request->email;
103 |
104 | if($request->password)
105 | $password = bcrypt($request->password);
106 |
107 | $bio = $request->bio;
108 | $role_id = $request->role;
109 |
110 | $user->first_name = $first_name;
111 | $user->last_name = $last_name;
112 | $user->email = $email;
113 |
114 | if($request->password)
115 | $user->password = $password;
116 |
117 | $user->role_id = $role_id;
118 | $user->bio = $bio;
119 | $user->save();
120 |
121 | return Redirect::to('users')->with('message', 'User updated!');
122 |
123 | }
124 |
125 | /**
126 | * Remove the specified resource from storage.
127 | *
128 | * @param int $id
129 | * @return \Illuminate\Http\Response
130 | */
131 | public function destroy($id)
132 | {
133 | User::find($id)->delete();
134 | return Redirect::to('users')->with('message', 'User deleted!');
135 | }
136 | }
137 |
--------------------------------------------------------------------------------
/app/Http/Controllers/VotesController.php:
--------------------------------------------------------------------------------
1 | [
31 | \App\Http\Middleware\EncryptCookies::class,
32 | \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
33 | \Illuminate\Session\Middleware\StartSession::class,
34 | // \Illuminate\Session\Middleware\AuthenticateSession::class,
35 | \Illuminate\View\Middleware\ShareErrorsFromSession::class,
36 | \App\Http\Middleware\VerifyCsrfToken::class,
37 | \Illuminate\Routing\Middleware\SubstituteBindings::class,
38 | ],
39 |
40 | 'api' => [
41 | 'throttle:60,1',
42 | 'bindings',
43 | ],
44 | ];
45 |
46 | /**
47 | * The application's route middleware.
48 | *
49 | * These middleware may be assigned to groups or used individually.
50 | *
51 | * @var array
52 | */
53 | protected $routeMiddleware = [
54 | 'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
55 | 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
56 | 'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
57 | 'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
58 | 'can' => \Illuminate\Auth\Middleware\Authorize::class,
59 | 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
60 | 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
61 | 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
62 | ];
63 | }
64 |
--------------------------------------------------------------------------------
/app/Http/Middleware/EncryptCookies.php:
--------------------------------------------------------------------------------
1 | check()) {
21 | return redirect('/home');
22 | }
23 |
24 | return $next($request);
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/app/Http/Middleware/TrimStrings.php:
--------------------------------------------------------------------------------
1 | belongsTo('App\Genre');
12 | }
13 |
14 | public function rating()
15 | {
16 | return $this->belongsTo('App\Ratings');
17 | }
18 |
19 | public function cast_crews()
20 | {
21 | return $this->hasMany('App\CastCrew','movie_id');;
22 | }
23 |
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/app/Providers/AppServiceProvider.php:
--------------------------------------------------------------------------------
1 | 'App\Policies\ModelPolicy',
17 | ];
18 |
19 | /**
20 | * Register any authentication / authorization services.
21 | *
22 | * @return void
23 | */
24 | public function boot()
25 | {
26 | $this->registerPolicies();
27 |
28 | //
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/app/Providers/BroadcastServiceProvider.php:
--------------------------------------------------------------------------------
1 | [
17 | 'App\Listeners\EventListener',
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/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 |
--------------------------------------------------------------------------------
/app/Ratings.php:
--------------------------------------------------------------------------------
1 | belongsTo('App\Roles');
33 | }
34 |
35 |
36 | }
37 |
--------------------------------------------------------------------------------
/app/Votes.php:
--------------------------------------------------------------------------------
1 | make(Illuminate\Contracts\Console\Kernel::class);
34 |
35 | $status = $kernel->handle(
36 | $input = new Symfony\Component\Console\Input\ArgvInput,
37 | new Symfony\Component\Console\Output\ConsoleOutput
38 | );
39 |
40 | /*
41 | |--------------------------------------------------------------------------
42 | | Shutdown The Application
43 | |--------------------------------------------------------------------------
44 | |
45 | | Once Artisan has finished running, we will fire off the shutdown events
46 | | so that any final work may be done by the application before we shut
47 | | down the process. This is the last thing to happen to the request.
48 | |
49 | */
50 |
51 | $kernel->terminate($input, $status);
52 |
53 | exit($status);
54 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/bootstrap/cache/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
3 |
--------------------------------------------------------------------------------
/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 | "cesaramirez/laravel-tabler": "dev-master",
10 | "fideloper/proxy": "^4.0",
11 | "laravel/framework": "5.8.*",
12 | "laravel/tinker": "^1.0"
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 | },
21 | "autoload": {
22 | "classmap": [
23 | "database/seeds",
24 | "database/factories"
25 | ],
26 | "psr-4": {
27 | "App\\": "app/"
28 | }
29 | },
30 | "autoload-dev": {
31 | "psr-4": {
32 | "Tests\\": "tests/"
33 | }
34 | },
35 | "extra": {
36 | "laravel": {
37 | "dont-discover": [
38 | ]
39 | }
40 | },
41 | "scripts": {
42 | "post-root-package-install": [
43 | "@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
44 | ],
45 | "post-create-project-cmd": [
46 | "@php artisan key:generate"
47 | ],
48 | "post-autoload-dump": [
49 | "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
50 | "@php artisan package:discover"
51 | ]
52 | },
53 | "config": {
54 | "preferred-install": "dist",
55 | "sort-packages": true,
56 | "optimize-autoloader": true
57 | },
58 | "minimum-stability": "dev",
59 | "prefer-stable": true
60 | }
61 |
--------------------------------------------------------------------------------
/config/auth.php:
--------------------------------------------------------------------------------
1 | [
17 | 'guard' => 'web',
18 | 'passwords' => 'users',
19 | ],
20 |
21 | /*
22 | |--------------------------------------------------------------------------
23 | | Authentication Guards
24 | |--------------------------------------------------------------------------
25 | |
26 | | Next, you may define every authentication guard for your application.
27 | | Of course, a great default configuration has been defined for you
28 | | here which uses session storage and the Eloquent user provider.
29 | |
30 | | All authentication drivers have a user provider. This defines how the
31 | | users are actually retrieved out of your database or other storage
32 | | mechanisms used by this application to persist your user's data.
33 | |
34 | | Supported: "session", "token"
35 | |
36 | */
37 |
38 | 'guards' => [
39 | 'web' => [
40 | 'driver' => 'session',
41 | 'provider' => 'users',
42 | ],
43 |
44 | 'api' => [
45 | 'driver' => 'token',
46 | 'provider' => 'users',
47 | ],
48 | ],
49 |
50 | /*
51 | |--------------------------------------------------------------------------
52 | | User Providers
53 | |--------------------------------------------------------------------------
54 | |
55 | | All authentication drivers have a user provider. This defines how the
56 | | users are actually retrieved out of your database or other storage
57 | | mechanisms used by this application to persist your user's data.
58 | |
59 | | If you have multiple user tables or models you may configure multiple
60 | | sources which represent each model / table. These sources may then
61 | | be assigned to any extra authentication guards you have defined.
62 | |
63 | | Supported: "database", "eloquent"
64 | |
65 | */
66 |
67 | 'providers' => [
68 | 'users' => [
69 | 'driver' => 'eloquent',
70 | 'model' => App\User::class,
71 | ],
72 |
73 | // 'users' => [
74 | // 'driver' => 'database',
75 | // 'table' => 'users',
76 | // ],
77 | ],
78 |
79 | /*
80 | |--------------------------------------------------------------------------
81 | | Resetting Passwords
82 | |--------------------------------------------------------------------------
83 | |
84 | | You may specify multiple password reset configurations if you have more
85 | | than one user table or model in the application and you want to have
86 | | separate password reset settings based on the specific user types.
87 | |
88 | | The expire time is the number of minutes that the reset token should be
89 | | considered valid. This security feature keeps tokens short-lived so
90 | | they have less time to be guessed. You may change this as needed.
91 | |
92 | */
93 |
94 | 'passwords' => [
95 | 'users' => [
96 | 'provider' => 'users',
97 | 'table' => 'password_resets',
98 | 'expire' => 60,
99 | ],
100 | ],
101 |
102 | ];
103 |
--------------------------------------------------------------------------------
/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 | 'cluster' => env('PUSHER_APP_CLUSTER'),
40 | 'encrypted' => true,
41 | ],
42 | ],
43 |
44 | 'redis' => [
45 | 'driver' => 'redis',
46 | 'connection' => 'default',
47 | ],
48 |
49 | 'log' => [
50 | 'driver' => 'log',
51 | ],
52 |
53 | 'null' => [
54 | 'driver' => 'null',
55 | ],
56 |
57 | ],
58 |
59 | ];
60 |
--------------------------------------------------------------------------------
/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' => env(
90 | 'CACHE_PREFIX',
91 | str_slug(env('APP_NAME', 'laravel'), '_').'_cache'
92 | ),
93 |
94 | ];
95 |
--------------------------------------------------------------------------------
/config/filesystems.php:
--------------------------------------------------------------------------------
1 | env('FILESYSTEM_DRIVER', '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' => env('FILESYSTEM_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", "sftp", "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_ACCESS_KEY_ID'),
61 | 'secret' => env('AWS_SECRET_ACCESS_KEY'),
62 | 'region' => env('AWS_DEFAULT_REGION'),
63 | 'bucket' => env('AWS_BUCKET'),
64 | 'url' => env('AWS_URL'),
65 | ],
66 |
67 | ],
68 |
69 | ];
70 |
--------------------------------------------------------------------------------
/config/hashing.php:
--------------------------------------------------------------------------------
1 | 'bcrypt',
19 |
20 | /*
21 | |--------------------------------------------------------------------------
22 | | Bcrypt Options
23 | |--------------------------------------------------------------------------
24 | |
25 | | Here you may specify the configuration options that should be used when
26 | | passwords are hashed using the Bcrypt algorithm. This will allow you
27 | | to control the amount of time it takes to hash the given password.
28 | |
29 | */
30 |
31 | 'bcrypt' => [
32 | 'rounds' => env('BCRYPT_ROUNDS', 10),
33 | ],
34 |
35 | /*
36 | |--------------------------------------------------------------------------
37 | | Argon Options
38 | |--------------------------------------------------------------------------
39 | |
40 | | Here you may specify the configuration options that should be used when
41 | | passwords are hashed using the Argon algorithm. These will allow you
42 | | to control the amount of time it takes to hash the given password.
43 | |
44 | */
45 |
46 | 'argon' => [
47 | 'memory' => 1024,
48 | 'threads' => 2,
49 | 'time' => 2,
50 | ],
51 |
52 | ];
53 |
--------------------------------------------------------------------------------
/config/logging.php:
--------------------------------------------------------------------------------
1 | env('LOG_CHANNEL', 'stack'),
19 |
20 | /*
21 | |--------------------------------------------------------------------------
22 | | Log Channels
23 | |--------------------------------------------------------------------------
24 | |
25 | | Here you may configure the log channels for your application. Out of
26 | | the box, Laravel uses the Monolog PHP logging library. This gives
27 | | you a variety of powerful log handlers / formatters to utilize.
28 | |
29 | | Available Drivers: "single", "daily", "slack", "syslog",
30 | | "errorlog", "monolog",
31 | | "custom", "stack"
32 | |
33 | */
34 |
35 | 'channels' => [
36 | 'stack' => [
37 | 'driver' => 'stack',
38 | 'channels' => ['single'],
39 | ],
40 |
41 | 'single' => [
42 | 'driver' => 'single',
43 | 'path' => storage_path('logs/laravel.log'),
44 | 'level' => 'debug',
45 | ],
46 |
47 | 'daily' => [
48 | 'driver' => 'daily',
49 | 'path' => storage_path('logs/laravel.log'),
50 | 'level' => 'debug',
51 | 'days' => 7,
52 | ],
53 |
54 | 'slack' => [
55 | 'driver' => 'slack',
56 | 'url' => env('LOG_SLACK_WEBHOOK_URL'),
57 | 'username' => 'Laravel Log',
58 | 'emoji' => ':boom:',
59 | 'level' => 'critical',
60 | ],
61 |
62 | 'stderr' => [
63 | 'driver' => 'monolog',
64 | 'handler' => StreamHandler::class,
65 | 'with' => [
66 | 'stream' => 'php://stderr',
67 | ],
68 | ],
69 |
70 | 'syslog' => [
71 | 'driver' => 'syslog',
72 | 'level' => 'debug',
73 | ],
74 |
75 | 'errorlog' => [
76 | 'driver' => 'errorlog',
77 | 'level' => 'debug',
78 | ],
79 | ],
80 |
81 | ];
82 |
--------------------------------------------------------------------------------
/config/queue.php:
--------------------------------------------------------------------------------
1 | env('QUEUE_DRIVER', 'sync'),
17 |
18 | /*
19 | |--------------------------------------------------------------------------
20 | | Queue Connections
21 | |--------------------------------------------------------------------------
22 | |
23 | | Here you may configure the connection information for each server that
24 | | is used by your application. A default configuration has been added
25 | | for each back-end shipped with Laravel. You are free to add more.
26 | |
27 | | Drivers: "sync", "database", "beanstalkd", "sqs", "redis", "null"
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' => env('SQS_KEY', 'your-public-key'),
54 | 'secret' => env('SQS_SECRET', 'your-secret-key'),
55 | 'prefix' => env('SQS_PREFIX', 'https://sqs.us-east-1.amazonaws.com/your-account-id'),
56 | 'queue' => env('SQS_QUEUE', 'your-queue-name'),
57 | 'region' => env('SQS_REGION', 'us-east-1'),
58 | ],
59 |
60 | 'redis' => [
61 | 'driver' => 'redis',
62 | 'connection' => 'default',
63 | 'queue' => 'default',
64 | 'retry_after' => 90,
65 | 'block_for' => null,
66 | ],
67 |
68 | ],
69 |
70 | /*
71 | |--------------------------------------------------------------------------
72 | | Failed Queue Jobs
73 | |--------------------------------------------------------------------------
74 | |
75 | | These options configure the behavior of failed queue job logging so you
76 | | can control which database and table are used to store the jobs that
77 | | have failed. You may change them to any database / table you wish.
78 | |
79 | */
80 |
81 | 'failed' => [
82 | 'database' => env('DB_CONNECTION', 'mysql'),
83 | 'table' => 'failed_jobs',
84 | ],
85 |
86 | ];
87 |
--------------------------------------------------------------------------------
/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' => env('SES_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 |
--------------------------------------------------------------------------------
/config/view.php:
--------------------------------------------------------------------------------
1 | [
17 | resource_path('views'),
18 | ],
19 |
20 | /*
21 | |--------------------------------------------------------------------------
22 | | Compiled View Path
23 | |--------------------------------------------------------------------------
24 | |
25 | | This option determines where all the compiled Blade templates will be
26 | | stored for your application. Typically, this is within the storage
27 | | directory. However, as usual, you are free to change this value.
28 | |
29 | */
30 |
31 | 'compiled' => realpath(storage_path('framework/views')),
32 |
33 | ];
34 |
--------------------------------------------------------------------------------
/database/.gitignore:
--------------------------------------------------------------------------------
1 | *.sqlite
2 |
--------------------------------------------------------------------------------
/database/factories/CastCrewFactory.php:
--------------------------------------------------------------------------------
1 | define(App\CastCrew::class, function (Faker $faker) {
6 | return [
7 | //
8 | ];
9 | });
10 |
--------------------------------------------------------------------------------
/database/factories/GenreFactory.php:
--------------------------------------------------------------------------------
1 | define(App\Genre::class, function (Faker $faker) {
6 | return [
7 | //
8 | ];
9 | });
10 |
--------------------------------------------------------------------------------
/database/factories/MoviesFactory.php:
--------------------------------------------------------------------------------
1 | define(App\Movies::class, function (Faker $faker) {
6 | return [
7 | //
8 | ];
9 | });
10 |
--------------------------------------------------------------------------------
/database/factories/RatingsFactory.php:
--------------------------------------------------------------------------------
1 | define(App\Ratings::class, function (Faker $faker) {
6 | return [
7 | //
8 | ];
9 | });
10 |
--------------------------------------------------------------------------------
/database/factories/ReviewsFactory.php:
--------------------------------------------------------------------------------
1 | define(App\Reviews::class, function (Faker $faker) {
6 | return [
7 | //
8 | ];
9 | });
10 |
--------------------------------------------------------------------------------
/database/factories/RolesFactory.php:
--------------------------------------------------------------------------------
1 | define(App\Roles::class, function (Faker $faker) {
6 | return [
7 | //
8 | ];
9 | });
10 |
--------------------------------------------------------------------------------
/database/factories/UserFactory.php:
--------------------------------------------------------------------------------
1 | define(App\User::class, function (Faker $faker) {
17 | return [
18 | 'name' => $faker->name,
19 | 'email' => $faker->unique()->safeEmail,
20 | 'password' => '$2y$10$TKh8H1.PfQx37YgCzwiKb.KjNyWgaHb9cbcoQgdIVFlYg7B77UdFm', // secret
21 | 'remember_token' => str_random(10),
22 | ];
23 | });
24 |
--------------------------------------------------------------------------------
/database/factories/VotesFactory.php:
--------------------------------------------------------------------------------
1 | define(App\Votes::class, function (Faker $faker) {
6 | return [
7 | //
8 | ];
9 | });
10 |
--------------------------------------------------------------------------------
/database/migrations/2014_10_12_000000_create_users_table.php:
--------------------------------------------------------------------------------
1 | increments('id');
18 | $table->string('first_name')->nullable();
19 | $table->string('last_name')->nullable();
20 | $table->string('email')->unique();
21 | $table->string('password');
22 | $table->integer('role_id');
23 | $table->text('bio')->nullable();
24 | $table->string('profile_pic')->nullable();
25 | $table->rememberToken();
26 | $table->timestamps();
27 | });
28 | }
29 |
30 | /**
31 | * Reverse the migrations.
32 | *
33 | * @return void
34 | */
35 | public function down()
36 | {
37 | Schema::dropIfExists('users');
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/database/migrations/2014_10_12_100000_create_password_resets_table.php:
--------------------------------------------------------------------------------
1 | string('email')->index();
18 | $table->string('token');
19 | $table->timestamp('created_at')->nullable();
20 | });
21 | }
22 |
23 | /**
24 | * Reverse the migrations.
25 | *
26 | * @return void
27 | */
28 | public function down()
29 | {
30 | Schema::dropIfExists('password_resets');
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/database/migrations/2018_06_24_141456_create_movies_table.php:
--------------------------------------------------------------------------------
1 | increments('id');
18 | $table->string('name');
19 | $table->string('release_year');
20 | $table->string('image')->nullable();
21 | $table->integer('genre_id');
22 | $table->integer('rating_id')->nullable();
23 | $table->text('plot')->nullable();
24 | $table->string('country')->nullable();
25 | $table->string('imdb_id')->nullable();
26 | $table->timestamps();
27 | });
28 | }
29 |
30 | /**
31 | * Reverse the migrations.
32 | *
33 | * @return void
34 | */
35 | public function down()
36 | {
37 | Schema::dropIfExists('movies');
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/database/migrations/2018_06_24_141838_create_roles_table.php:
--------------------------------------------------------------------------------
1 | increments('id');
18 | $table->string('name');
19 | $table->string('slug')->nullable();
20 | $table->timestamps();
21 | });
22 | }
23 |
24 | /**
25 | * Reverse the migrations.
26 | *
27 | * @return void
28 | */
29 | public function down()
30 | {
31 | Schema::dropIfExists('roles');
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/database/migrations/2018_06_24_141903_create_genres_table.php:
--------------------------------------------------------------------------------
1 | increments('id');
18 | $table->string('name');
19 | $table->timestamps();
20 | });
21 | }
22 |
23 | /**
24 | * Reverse the migrations.
25 | *
26 | * @return void
27 | */
28 | public function down()
29 | {
30 | Schema::dropIfExists('genres');
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/database/migrations/2018_06_24_141908_create_reviews_table.php:
--------------------------------------------------------------------------------
1 | increments('id');
18 | $table->integer('user_id');
19 | $table->integer('rating');
20 | $table->text('review')->nullable();
21 | $table->integer('movie_id');
22 | $table->boolean('recommend');
23 | $table->timestamps();
24 | });
25 | }
26 |
27 | /**
28 | * Reverse the migrations.
29 | *
30 | * @return void
31 | */
32 | public function down()
33 | {
34 | Schema::dropIfExists('reviews');
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/database/migrations/2018_06_24_141918_create_ratings_table.php:
--------------------------------------------------------------------------------
1 | increments('id');
18 | $table->string('name');
19 | $table->timestamps();
20 | });
21 | }
22 |
23 | /**
24 | * Reverse the migrations.
25 | *
26 | * @return void
27 | */
28 | public function down()
29 | {
30 | Schema::dropIfExists('ratings');
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/database/migrations/2018_06_24_141926_create_votes_table.php:
--------------------------------------------------------------------------------
1 | increments('id');
18 | $table->boolean('vote');
19 | $table->integer('review_id');
20 | $table->integer('vote_user_id');
21 | $table->timestamps();
22 | });
23 | }
24 |
25 | /**
26 | * Reverse the migrations.
27 | *
28 | * @return void
29 | */
30 | public function down()
31 | {
32 | Schema::dropIfExists('votes');
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/database/migrations/2018_06_25_182534_create_cast_crews_table.php:
--------------------------------------------------------------------------------
1 | increments('id');
18 | $table->integer('movie_id');
19 | $table->integer('user_id');
20 | $table->timestamps();
21 | });
22 | }
23 |
24 | /**
25 | * Reverse the migrations.
26 | *
27 | * @return void
28 | */
29 | public function down()
30 | {
31 | Schema::dropIfExists('cast_crews');
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/database/seeds/DatabaseSeeder.php:
--------------------------------------------------------------------------------
1 | call(RolesTableSeeder::class);
15 | $this->call(UsersTableSeeder::class);
16 | $this->call(GenreTableSeeder::class);
17 | $this->call(RatingsTableSeeder::class);
18 | $this->call(MoviesTableSeeder::class);
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/database/seeds/GenreTableSeeder.php:
--------------------------------------------------------------------------------
1 | insert(['name' => "Comedy"]);
15 | DB::table('genres')->insert(['name' => "Sci-Fi"]);
16 | DB::table('genres')->insert(['name' => "Horror"]);
17 | DB::table('genres')->insert(['name' => "Romance"]);
18 | DB::table('genres')->insert(['name' => "Action"]);
19 | DB::table('genres')->insert(['name' => "Thriller"]);
20 | DB::table('genres')->insert(['name' => "Drama"]);
21 | DB::table('genres')->insert(['name' => "Mystery"]);
22 | DB::table('genres')->insert(['name' => "Crime"]);
23 | DB::table('genres')->insert(['name' => "Animation"]);
24 | DB::table('genres')->insert(['name' => "Adventure"]);
25 | DB::table('genres')->insert(['name' => "Fantasy"]);
26 | DB::table('genres')->insert(['name' => "Documentary"]);
27 | DB::table('genres')->insert(['name' => "History"]);
28 | DB::table('genres')->insert(['name' => "Musical"]);
29 | DB::table('genres')->insert(['name' => "Sport"]);
30 | DB::table('genres')->insert(['name' => "War"]);
31 | DB::table('genres')->insert(['name' => "Family"]);
32 | DB::table('genres')->insert(['name' => "Biography"]);
33 |
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/database/seeds/MoviesTableSeeder.php:
--------------------------------------------------------------------------------
1 | insert([
16 | 'name' => "Avengers Infinity War",
17 | 'release_year' => "2018",
18 | 'image' => 'https://upload.wikimedia.org/wikipedia/en/4/4d/Avengers_Infinity_War_poster.jpg',
19 | 'genre_id' => DB::table('genres')->where('name', 'Action')->pluck('id')->first(),
20 | 'rating_id' => DB::table('ratings')->where('name', 'PG-13')->pluck('id')->first(),
21 | 'plot' => 'The Avengers and their allies must be willing to sacrifice all in an attempt to defeat the powerful Thanos before his blitz of devastation and ruin puts an end to the universe.',
22 | 'country' => 'USA',
23 | 'imdb_id' => 'tt4154756'
24 | ]);
25 |
26 | DB::table('movies')->insert([
27 | 'name' => "The Incredible Hulk",
28 | 'release_year' => "2008",
29 | 'image' => 'https://m.media-amazon.com/images/M/MV5BMTUyNzk3MjA1OF5BMl5BanBnXkFtZTcwMTE1Njg2MQ@@._V1_UX182_CR0,0,182,268_AL__QL50.jpg',
30 | 'genre_id' => DB::table('genres')->where('name', 'Action')->pluck('id')->first(),
31 | 'rating_id' => DB::table('ratings')->where('name', 'PG-13')->pluck('id')->first(),
32 | 'plot' => 'Bruce Banner, a scientist on the run from the U.S. Government, must find a cure for the monster he turns into, whenever he loses his temper. ',
33 | 'country' => 'USA',
34 | 'imdb_id' => 'tt0800080'
35 | ]);
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/database/seeds/RatingsTableSeeder.php:
--------------------------------------------------------------------------------
1 | insert(['name' => "PG-13"]);
15 | DB::table('ratings')->insert(['name' => "G"]);
16 | DB::table('ratings')->insert(['name' => "PG"]);
17 | DB::table('ratings')->insert(['name' => "R"]);
18 | DB::table('ratings')->insert(['name' => "NC-17"]);
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/database/seeds/RolesTableSeeder.php:
--------------------------------------------------------------------------------
1 | insert(['name' => "Admin"]);
15 | DB::table('roles')->insert(['name' => "Actor"]);
16 | DB::table('roles')->insert(['name' => "Actress"]);
17 | DB::table('roles')->insert(['name' => "Director"]);
18 | DB::table('roles')->insert(['name' => "Producer"]);
19 | DB::table('roles')->insert(['name' => "Music Director"]);
20 | DB::table('roles')->insert(['name' => "Crew"]);
21 | DB::table('roles')->insert(['name' => "Writer"]);
22 | DB::table('roles')->insert(['name' => "User"]);
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/database/seeds/UsersTableSeeder.php:
--------------------------------------------------------------------------------
1 | insert([
15 | 'first_name' => "Zeeshan",
16 | 'last_name' => "Chawdhary",
17 | 'email' => 'imzeeshanc@gmail.com',
18 | 'password' => bcrypt('admin'),
19 | 'role_id' => 1
20 | ]);
21 |
22 | DB::table('users')->insert([
23 | 'first_name' => "Anthony",
24 | 'last_name' => "Russo",
25 | 'email' => 'anthony@gmail.com',
26 | 'password' => bcrypt('user'),
27 | 'role_id' => DB::table('roles')->where('name', 'Director')->pluck('id')->first(),
28 | ]);
29 |
30 | DB::table('users')->insert([
31 | 'first_name' => "Joe",
32 | 'last_name' => "Russo",
33 | 'email' => 'joe@gmail.com',
34 | 'password' => bcrypt('user'),
35 | 'role_id' => DB::table('roles')->where('name', 'Director')->pluck('id')->first(),
36 | ]);
37 |
38 | DB::table('users')->insert([
39 | 'first_name' => "Christopher",
40 | 'last_name' => "Markus",
41 | 'email' => 'christopher@gmail.com',
42 | 'password' => bcrypt('user'),
43 | 'role_id' => DB::table('roles')->where('name', 'Writer')->pluck('id')->first(),
44 | ]);
45 |
46 | DB::table('users')->insert([
47 | 'first_name' => "Stephen",
48 | 'last_name' => "McFeely",
49 | 'email' => 'stephen@gmail.com',
50 | 'password' => bcrypt('user'),
51 | 'role_id' => DB::table('roles')->where('name', 'Writer')->pluck('id')->first(),
52 | ]);
53 |
54 | DB::table('users')->insert([
55 | 'first_name' => "Robert",
56 | 'last_name' => "Downey Jr.",
57 | 'email' => 'robert@gmail.com',
58 | 'password' => bcrypt('user'),
59 | 'role_id' => DB::table('roles')->where('name', 'Actor')->pluck('id')->first(),
60 | ]);
61 |
62 | DB::table('users')->insert([
63 | 'first_name' => "Chris",
64 | 'last_name' => "Hemsworth",
65 | 'email' => 'chris@gmail.com',
66 | 'password' => bcrypt('user'),
67 | 'role_id' => DB::table('roles')->where('name', 'Actor')->pluck('id')->first(),
68 | ]);
69 |
70 | DB::table('users')->insert([
71 | 'first_name' => "Mark",
72 | 'last_name' => "Ruffalo",
73 | 'email' => 'mark@gmail.com',
74 | 'password' => bcrypt('user'),
75 | 'role_id' => DB::table('roles')->where('name', 'Actor')->pluck('id')->first(),
76 | ]);
77 |
78 | DB::table('users')->insert([
79 | 'first_name' => "Test",
80 | 'last_name' => "Test",
81 | 'email' => 'test@gmail.com',
82 | 'password' => bcrypt('user'),
83 | 'role_id' => DB::table('roles')->where('name', 'Crew')->pluck('id')->first(),
84 | ]);
85 |
86 |
87 |
88 |
89 | }
90 | }
91 |
--------------------------------------------------------------------------------
/laramovies-schema.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imzeeshan/laramovies/517b825de80b0dc57c2116069da1dc5b655e0579/laramovies-schema.png
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "private": true,
3 | "scripts": {
4 | "dev": "npm run development",
5 | "development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
6 | "watch": "npm run development -- --watch",
7 | "watch-poll": "npm run watch -- --watch-poll",
8 | "hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js",
9 | "prod": "npm run production",
10 | "production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
11 | },
12 | "devDependencies": {
13 | "axios": "^0.21",
14 | "bootstrap": "^4.3.1",
15 | "cross-env": "^5.1",
16 | "jquery": "^3.5",
17 | "laravel-mix": "^2.0",
18 | "lodash": "^4.17.13",
19 | "popper.js": "^1.14.3",
20 | "vue": "^2.5.7"
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/phpunit.xml:
--------------------------------------------------------------------------------
1 |
2 |
11 |
12 |
13 | ./tests/Unit
14 |
15 |
16 |
17 | ./tests/Feature
18 |
19 |
20 |
21 |
22 | ./app
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/public/.htaccess:
--------------------------------------------------------------------------------
1 |
2 |
3 | Options -MultiViews -Indexes
4 |
5 |
6 | RewriteEngine On
7 |
8 | # Handle Authorization Header
9 | RewriteCond %{HTTP:Authorization} .
10 | RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
11 |
12 | # Redirect Trailing Slashes If Not A Folder...
13 | RewriteCond %{REQUEST_FILENAME} !-d
14 | RewriteCond %{REQUEST_URI} (.+)/$
15 | RewriteRule ^ %1 [L,R=301]
16 |
17 | # Handle Front Controller...
18 | RewriteCond %{REQUEST_FILENAME} !-d
19 | RewriteCond %{REQUEST_FILENAME} !-f
20 | RewriteRule ^ index.php [L]
21 |
22 |
--------------------------------------------------------------------------------
/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imzeeshan/laramovies/517b825de80b0dc57c2116069da1dc5b655e0579/public/favicon.ico
--------------------------------------------------------------------------------
/public/index.php:
--------------------------------------------------------------------------------
1 |
8 | */
9 |
10 | define('LARAVEL_START', microtime(true));
11 |
12 | /*
13 | |--------------------------------------------------------------------------
14 | | Register The Auto Loader
15 | |--------------------------------------------------------------------------
16 | |
17 | | Composer provides a convenient, automatically generated class loader for
18 | | our application. We just need to utilize it! We'll simply require it
19 | | into the script here so that we don't have to worry about manual
20 | | loading any of our classes later on. It feels great to relax.
21 | |
22 | */
23 |
24 | require __DIR__.'/../vendor/autoload.php';
25 |
26 | /*
27 | |--------------------------------------------------------------------------
28 | | Turn On The Lights
29 | |--------------------------------------------------------------------------
30 | |
31 | | We need to illuminate PHP development, so let us turn on the lights.
32 | | This bootstraps the framework and gets it ready for use, then it
33 | | will load up this application so that we can run it and send
34 | | the responses back to the browser and delight our users.
35 | |
36 | */
37 |
38 | $app = require_once __DIR__.'/../bootstrap/app.php';
39 |
40 | /*
41 | |--------------------------------------------------------------------------
42 | | Run The Application
43 | |--------------------------------------------------------------------------
44 | |
45 | | Once we have the application, we can handle the incoming request
46 | | through the kernel, and send the associated response back to
47 | | the client's browser allowing them to enjoy the creative
48 | | and wonderful application we have prepared for them.
49 | |
50 | */
51 |
52 | $kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);
53 |
54 | $response = $kernel->handle(
55 | $request = Illuminate\Http\Request::capture()
56 | );
57 |
58 | $response->send();
59 |
60 | $kernel->terminate($request, $response);
61 |
--------------------------------------------------------------------------------
/public/robots.txt:
--------------------------------------------------------------------------------
1 | User-agent: *
2 | Disallow:
3 |
--------------------------------------------------------------------------------
/resources/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imzeeshan/laramovies/517b825de80b0dc57c2116069da1dc5b655e0579/resources/.DS_Store
--------------------------------------------------------------------------------
/resources/assets/fonts/feather/feather-webfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imzeeshan/laramovies/517b825de80b0dc57c2116069da1dc5b655e0579/resources/assets/fonts/feather/feather-webfont.eot
--------------------------------------------------------------------------------
/resources/assets/fonts/feather/feather-webfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imzeeshan/laramovies/517b825de80b0dc57c2116069da1dc5b655e0579/resources/assets/fonts/feather/feather-webfont.ttf
--------------------------------------------------------------------------------
/resources/assets/fonts/feather/feather-webfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imzeeshan/laramovies/517b825de80b0dc57c2116069da1dc5b655e0579/resources/assets/fonts/feather/feather-webfont.woff
--------------------------------------------------------------------------------
/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 | window.Vue = require('vue');
11 |
12 | /**
13 | * Next, we will create a fresh Vue application instance and attach it to
14 | * the page. Then, you may begin adding components to this application
15 | * or customize the JavaScript scaffolding to fit your unique needs.
16 | */
17 |
18 | Vue.component('example-component', require('./components/ExampleComponent.vue'));
19 |
20 | const app = new Vue({
21 | el: '#app'
22 | });
23 |
--------------------------------------------------------------------------------
/resources/assets/js/bootstrap.js:
--------------------------------------------------------------------------------
1 | window._ = require("lodash");
2 |
3 | window.Popper = require("popper.js/dist/umd/popper");
4 |
5 | /**
6 | * We'll load jQuery and the Bootstrap jQuery plugin which provides support
7 | * for JavaScript based Bootstrap features such as modals and tabs. This
8 | * code may be modified to fit the specific needs of your application.
9 | */
10 |
11 | try {
12 | window.$ = window.jQuery = require("jquery/dist/jquery.slim");
13 |
14 | require("bootstrap");
15 | } catch (e) {}
16 |
17 | /**
18 | * We'll load the axios HTTP library which allows us to easily issue requests
19 | * to our Laravel back-end. This library automatically handles sending the
20 | * CSRF token as a header based on the value of the "XSRF" token cookie.
21 | */
22 |
23 | window.axios = require("axios");
24 |
25 | window.axios.defaults.headers.common["X-Requested-With"] = "XMLHttpRequest";
26 |
27 | /**
28 | * Next we will register the CSRF Token as a common header with Axios so that
29 | * all outgoing HTTP requests automatically have it attached. This is just
30 | * a simple convenience so we don't have to attach every token manually.
31 | */
32 |
33 | let token = document.head.querySelector('meta[name="csrf-token"]');
34 |
35 | if (token) {
36 | window.axios.defaults.headers.common["X-CSRF-TOKEN"] = token.content;
37 | } else {
38 | console.error(
39 | "CSRF token not found: https://laravel.com/docs/csrf#csrf-x-csrf-token"
40 | );
41 | }
42 |
43 | /**
44 | * Echo exposes an expressive API for subscribing to channels and listening
45 | * for events that are broadcast by Laravel. Echo and event broadcasting
46 | * allows your team to easily build robust real-time web applications.
47 | */
48 |
49 | // import Echo from 'laravel-echo'
50 |
51 | // window.Pusher = require('pusher-js');
52 |
53 | // window.Echo = new Echo({
54 | // broadcaster: 'pusher',
55 | // key: 'your-pusher-key',
56 | // cluster: 'mt1',
57 | // encrypted: true
58 | // });
59 |
--------------------------------------------------------------------------------
/resources/assets/js/components/ExampleComponent.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | I'm an example component.
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
24 |
--------------------------------------------------------------------------------
/resources/assets/sass/app.scss:
--------------------------------------------------------------------------------
1 | // Fonts
2 | @import url("https://fonts.googleapis.com/css?family=Raleway:300,400,600");
3 |
4 | // Variables
5 | @import "variables";
6 |
7 | // Bootstrap
8 | @import "~bootstrap/scss/bootstrap";
9 | @import "tabler/tabler";
10 |
--------------------------------------------------------------------------------
/resources/assets/sass/tabler/_alert.scss:
--------------------------------------------------------------------------------
1 | .alert {
2 | font-size: $font-size-base;
3 | }
4 |
5 | .alert-icon {
6 | padding-left: 3rem;
7 |
8 | >i {
9 | color: inherit !important;
10 | font-size: 1rem;
11 | position: absolute;
12 | top: 1rem;
13 | left: 1rem;
14 | }
15 | }
16 |
17 | .alert-avatar {
18 | padding-left: 3.75rem;
19 |
20 | .avatar {
21 | position: absolute;
22 | top: .5rem;
23 | left: .75rem;
24 | }
25 | }
--------------------------------------------------------------------------------
/resources/assets/sass/tabler/_aside.scss:
--------------------------------------------------------------------------------
1 | .aside {
2 | position: fixed;
3 | top: 0;
4 | right: 0;
5 | bottom: 0;
6 | width: $aside-width;
7 | background: #ffffff;
8 | border-left: 1px solid $border-color;
9 | display: flex;
10 | flex-direction: column;
11 | z-index: 100;
12 | visibility: hidden;
13 | box-shadow: 0 0 5px 2px rgba(#000, .05);
14 |
15 | body.aside-opened & {
16 | @media (min-width: 1600px) {
17 | visibility: visible;
18 | }
19 | }
20 | }
21 |
22 | .aside-body {
23 | padding: 1.5rem;
24 | flex: 1 1 auto;
25 | overflow: auto;
26 | }
27 |
28 | .aside-footer {
29 | padding: 1rem 1.5rem;
30 | border-top: 1px solid $border-color;
31 | }
32 |
33 | .aside-header {
34 | padding: 1rem 1.5rem;
35 | border-bottom: 1px solid $border-color;
36 | }
--------------------------------------------------------------------------------
/resources/assets/sass/tabler/_avatar.scss:
--------------------------------------------------------------------------------
1 | .avatar {
2 | width: 2rem;
3 | height: 2rem;
4 | line-height: 2rem;
5 | border-radius: 50%;
6 | display: inline-block;
7 | background: $gray-400 no-repeat center/cover;
8 | position: relative;
9 | text-align: center;
10 | color: $gray-600;
11 | font-weight: 600;
12 | vertical-align: bottom;
13 | font-size: .875rem;
14 | user-select: none;
15 |
16 | i {
17 | font-size: 125%;
18 | vertical-align: sub;
19 | }
20 | }
21 |
22 | .avatar-status {
23 | position: absolute;
24 | right: -2px;
25 | bottom: -2px;
26 | width: .75rem;
27 | height: .75rem;
28 | border: 2px solid #fff;
29 | background: $gray-600;
30 | border-radius: 50%;
31 | }
32 |
33 | .avatar-sm {
34 | width: 1.5rem;
35 | height: 1.5rem;
36 | line-height: 1.5rem;
37 | font-size: .75rem;
38 | }
39 |
40 | .avatar-md {
41 | width: 2.5rem;
42 | height: 2.5rem;
43 | line-height: 2.5rem;
44 | font-size: 1rem;
45 | }
46 |
47 | .avatar-lg {
48 | width: 3rem;
49 | height: 3rem;
50 | line-height: 3rem;
51 | font-size: 1.25rem;
52 | }
53 |
54 | .avatar-xl {
55 | width: 4rem;
56 | height: 4rem;
57 | line-height: 4rem;
58 | font-size: 1.75rem;
59 | }
60 |
61 | .avatar-xxl {
62 | width: 5rem;
63 | height: 5rem;
64 | line-height: 5rem;
65 | font-size: 2rem;
66 | }
67 |
68 | .avatar-placeholder {
69 | background: $gray-400 url('data:image/svg+xml;charset=utf8,') no-repeat center/80%;
70 | }
71 |
72 | .avatar-list {
73 | margin: 0 0 -.5rem;
74 | padding: 0;
75 | font-size: 0;
76 |
77 | .avatar {
78 | margin-bottom: .5rem;
79 |
80 | &:not(:last-child) {
81 | margin-right: .5rem;
82 | }
83 | }
84 | }
85 |
86 | .avatar-list-stacked {
87 | .avatar {
88 | margin-right: -.8em !important;
89 | }
90 |
91 | .avatar {
92 | box-shadow: 0 0 0 2px #fff;
93 | }
94 | }
95 |
96 | @each $vendor, $color in $colors {
97 | .avatar-#{$vendor} {
98 | background-color: mix($color, #fff, 30%);
99 | color: $color;
100 | }
101 | }
--------------------------------------------------------------------------------
/resources/assets/sass/tabler/_badge.scss:
--------------------------------------------------------------------------------
1 | .badge {
2 | color: #fff;
3 | }
4 |
5 | .badge-default {
6 | background: $gray-200;
7 | color: $gray-600;
8 | }
--------------------------------------------------------------------------------
/resources/assets/sass/tabler/_breadcrumb.scss:
--------------------------------------------------------------------------------
1 | .page-breadcrumb {
2 | background: none;
3 | padding: 0;
4 | margin: 1rem 0 0;
5 | font-size: px2rem(14px);
6 |
7 | @include media-breakpoint-up(md) {
8 | margin: -.5rem 0 0;
9 | }
10 |
11 | .breadcrumb-item {
12 | color: $text-muted;
13 |
14 | &.active {
15 | color: $text-muted-dark;
16 | }
17 | }
18 | }
--------------------------------------------------------------------------------
/resources/assets/sass/tabler/_button.scss:
--------------------------------------------------------------------------------
1 | .btn {
2 | cursor: pointer;
3 | font-weight: 600;
4 | letter-spacing: .03em;
5 | font-size: px2rem(13px);
6 | min-width: px2rem(38px);
7 |
8 | i {
9 | font-size: 1rem;
10 | vertical-align: -2px;
11 | }
12 | }
13 |
14 | .btn-icon {
15 | padding-left: .5rem;
16 | padding-right: .5rem;
17 | text-align: center;
18 | }
19 |
20 | .btn-secondary {
21 | @include button-variant(#fff, $input-border-color, #f6f6f6);
22 | box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.05);
23 | }
24 |
25 | .btn-pill {
26 | border-radius: 10rem;
27 | padding-left: 1.5em;
28 | padding-right: 1.5em;
29 | }
30 |
31 | .btn-square {
32 | border-radius: 0;
33 | }
34 |
35 | @each $vendor, $color in $social-colors {
36 | .btn-#{$vendor} {
37 | @include button-variant($color, $color);
38 | }
39 | }
40 |
41 | @each $vendor, $color in $colors {
42 | .btn-#{$vendor} {
43 | @include button-variant($color, $color);
44 | }
45 | }
46 |
47 | .btn-option {
48 | background: transparent;
49 | color: $text-muted;
50 |
51 | &:hover {
52 | color: $text-muted-dark;
53 | }
54 |
55 | &:focus {
56 | box-shadow: none;
57 | color: $text-muted-dark;
58 | }
59 | }
60 |
61 | .btn-sm {
62 | font-size: px2rem(12px);
63 | min-width: px2rem(26px);
64 | }
65 |
66 | .btn-lg {
67 | font-size: px2rem(16px);
68 | min-width: px2rem(44px);
69 | font-weight: 400;
70 | }
71 |
72 | .btn-list {
73 | margin-bottom: -.5rem;
74 | font-size: 0;
75 |
76 | >.btn,
77 | >.dropdown {
78 | margin-bottom: .5rem;
79 |
80 | &:not(:last-child) {
81 | margin-right: .5rem;
82 | }
83 | }
84 | }
85 |
86 | .btn-loading {
87 | color: transparent !important;
88 | pointer-events: none;
89 | position: relative;
90 |
91 | &:after {
92 | content: '';
93 | animation: loader 500ms infinite linear;
94 | border: 2px solid #fff;
95 | border-radius: 50%;
96 | border-right-color: transparent !important;
97 | border-top-color: transparent !important;
98 | display: block;
99 | height: 1.4em;
100 | width: 1.4em;
101 | position: absolute;
102 | left: calc(50% - (1.4em / 2));
103 | top: calc(50% - (1.4em / 2));
104 | transform-origin: center;
105 | position: absolute !important;
106 | }
107 |
108 | &.btn-sm:after{
109 | height: 1em;
110 | width: 1em;
111 | left: calc(50% - (1em / 2));
112 | top: calc(50% - (1em / 2));
113 | }
114 |
115 | &.btn-secondary:after {
116 | border-color: $yiq-text-dark;
117 | }
118 | }
--------------------------------------------------------------------------------
/resources/assets/sass/tabler/_carousel.scss:
--------------------------------------------------------------------------------
1 | .carousel-item-background {
2 | content: '';
3 | background: rgba(0, 0, 0, .5);
4 | position: absolute;
5 | top: 0;
6 | left: 0;
7 | right: 0;
8 | bottom: 0;
9 | }
--------------------------------------------------------------------------------
/resources/assets/sass/tabler/_charts.scss:
--------------------------------------------------------------------------------
1 | $sizes: (
2 | 'xs': 2.5rem,
3 | 'sm': 4rem,
4 | 'lg': 10rem
5 | );
6 |
7 | .chart-circle {
8 | display: block;
9 | height: 8rem;
10 | width: 8rem;
11 | position: relative;
12 |
13 | canvas {
14 | margin: 0 auto;
15 | display: block;
16 | max-width: 100%;
17 | max-height: 100%;
18 | }
19 | }
20 |
21 | @each $size, $value in $sizes {
22 | .chart-circle-#{$size} {
23 | height: $value;
24 | width: $value;
25 | font-size: .8rem;
26 | }
27 | }
28 |
29 | .chart-circle-value {
30 | position: absolute;
31 | top: 0;
32 | left: 0;
33 | right: 0;
34 | margin-left: auto;
35 | margin-right: auto;
36 | bottom: 0;
37 | display: flex;
38 | justify-content: center;
39 | align-items: center;
40 | flex-direction: column;
41 |
42 | //font-size: px2rem(24px);
43 | //font-weight: 600;
44 | line-height: 1;
45 |
46 | small {
47 | display: block;
48 | color: $text-muted;
49 | font-size: px2rem(15px);
50 | }
51 | }
--------------------------------------------------------------------------------
/resources/assets/sass/tabler/_chat.scss:
--------------------------------------------------------------------------------
1 | .chat {
2 | outline: 0;
3 | margin: 0;
4 | padding: 0;
5 | list-style-type: none;
6 | display: flex;
7 | flex-direction: column;
8 | justify-content: flex-end;
9 | min-height: 100%;
10 | }
11 |
12 | .chat-line {
13 | padding: 0;
14 | text-align: right;
15 | position: relative;
16 | display: flex;
17 | flex-direction: row-reverse;
18 |
19 | & + & {
20 | padding-top: 1rem;
21 | }
22 | }
23 |
24 | .chat-message {
25 | position: relative;
26 | display: inline-block;
27 | background-color: $primary;
28 | color: #fff;
29 | font-size: px2rem(14px);
30 | padding: .375rem .5rem;
31 | border-radius: 3px;
32 | white-space: normal;
33 | text-align: left;
34 | margin: 0 .5rem 0 2.5rem;
35 | line-height: 1.4;
36 |
37 | >:last-child {
38 | margin-bottom: 0 !important;
39 | }
40 |
41 | &:after {
42 | content: "";
43 | position: absolute;
44 | right: -5px;
45 | top: 7px;
46 | border-bottom: 6px solid transparent;
47 | border-left: 6px solid $primary;
48 | border-top: 6px solid transparent;
49 | }
50 |
51 | img {
52 | max-width: 100%;
53 | }
54 |
55 | p {
56 | margin-bottom: 1em;
57 | }
58 | }
59 |
60 | .chat-line-friend {
61 | flex-direction: row;
62 |
63 | & + & {
64 | margin-top: -.5rem;
65 |
66 | .chat-author {
67 | visibility: hidden;
68 | }
69 |
70 | .chat-message:after {
71 | display: none;
72 | }
73 | }
74 |
75 | .chat-message {
76 | background-color: #f3f3f3;
77 | color: $body-color;
78 | margin-left: .5rem;
79 | margin-right: 2.5rem;
80 |
81 | &:after {
82 | right: auto;
83 | left: -5px;
84 | border-left-width: 0;
85 | border-right: 5px solid #f3f3f3;
86 | }
87 | }
88 | }
89 |
--------------------------------------------------------------------------------
/resources/assets/sass/tabler/_chips.scss:
--------------------------------------------------------------------------------
1 | .chips {
2 | margin: 0 0 -.5rem;
3 |
4 | .chip {
5 | margin: 0 .5rem .5rem 0;
6 | }
7 | }
8 |
9 | .chip {
10 | display: inline-block;
11 | height: 2rem;
12 | line-height: 2rem;
13 | font-size: px2rem(14px);
14 | font-weight: 500;
15 | color: $text-muted-dark;
16 | padding: 0 .75rem;
17 | border-radius: 1rem;
18 | background-color: $gray-100;
19 | transition: .3s background;
20 |
21 | .avatar {
22 | float: left;
23 | margin: 0 .5rem 0 -.75rem;
24 | height: 2rem;
25 | width: 2rem;
26 | border-radius: 50%;
27 | }
28 |
29 | //.close {
30 | // cursor: pointer;
31 | // float: right;
32 | // font-size: 1.3rem;
33 | // padding-left: .5rem;
34 | // line-height: inherit;
35 | // margin-left: .25rem;
36 | //}
37 |
38 | @at-root a#{&} {
39 | &:hover {
40 | color: inherit;
41 | text-decoration: none;
42 | background-color: $gray-200;
43 | }
44 | }
45 | }
--------------------------------------------------------------------------------
/resources/assets/sass/tabler/_close.scss:
--------------------------------------------------------------------------------
1 | .close {
2 | font-size: 1rem;
3 | line-height: 1.5;
4 | transition: .3s color;
5 |
6 | &:before {
7 | content: '\ea00';
8 | font-family: "feather";
9 | }
10 | }
--------------------------------------------------------------------------------
/resources/assets/sass/tabler/_colors.scss:
--------------------------------------------------------------------------------
1 | @each $color, $value in $colors {
2 | @include bg-variant(".bg-#{$color}-lightest", mix($value, #fff, 10%));
3 | @include bg-variant(".bg-#{$color}-lighter", mix($value, #fff, 30%));
4 | @include bg-variant(".bg-#{$color}-light", mix($value, #fff, 70%));
5 | @include bg-variant(".bg-#{$color}-dark", mix($value, #000, 80%));
6 | @include bg-variant(".bg-#{$color}-darker", mix($value, #000, 40%));
7 | @include bg-variant(".bg-#{$color}-darkest", mix($value, #000, 20%));
8 | }
--------------------------------------------------------------------------------
/resources/assets/sass/tabler/_core.scss:
--------------------------------------------------------------------------------
1 | html {
2 | font-size: 16px;
3 | height: 100%;
4 | direction: ltr;
5 | }
6 |
7 | body {
8 | direction: ltr;
9 | -webkit-font-smoothing: antialiased;
10 | -moz-osx-font-smoothing: grayscale;
11 | -webkit-tap-highlight-color: transparent;
12 | -webkit-text-size-adjust: none;
13 | -ms-touch-action: manipulation;
14 | touch-action: manipulation;
15 | -webkit-font-feature-settings: "liga" 0;
16 | font-feature-settings: "liga" 0;
17 | height: 100%;
18 | overflow-y: scroll;
19 | position: relative;
20 |
21 | @media print {
22 | background: none;
23 | }
24 | }
25 |
26 | body *::-webkit-scrollbar {
27 | width: 6px;
28 | height: 6px;
29 | transition: .3s background;
30 | }
31 |
32 | body *::-webkit-scrollbar-thumb {
33 | background: $gray-400;
34 | }
35 | body *:hover::-webkit-scrollbar-thumb {
36 | background: $gray-500;
37 | }
38 |
--------------------------------------------------------------------------------
/resources/assets/sass/tabler/_dropdown.scss:
--------------------------------------------------------------------------------
1 | .dropdown {
2 | display: inline-block;
3 | }
4 |
5 | .dropdown-menu {
6 | box-shadow: $dropdown-box-shadow;
7 | min-width: 12rem;
8 | }
9 |
10 | .dropdown-item {
11 | color: $text-muted-dark;
12 | }
13 |
14 | .dropdown-menu-arrow {
15 | &:before {
16 | position: absolute;
17 | top: -6px;
18 | left: 12px;
19 | display: inline-block;
20 | border-right: 5px solid transparent;
21 | border-bottom: 5px solid $border-color;
22 | border-left: 5px solid transparent;
23 | border-bottom-color: rgba(0, 0, 0, 0.2);
24 | content: '';
25 | }
26 |
27 | &:after {
28 | position: absolute;
29 | top: -5px;
30 | left: 12px;
31 | display: inline-block;
32 | border-right: 5px solid transparent;
33 | border-bottom: 5px solid #fff;
34 | border-left: 5px solid transparent;
35 | content: '';
36 | }
37 |
38 | &.dropdown-menu-right {
39 | &:before,
40 | &:after {
41 | left: auto;
42 | right: 12px;
43 | }
44 | }
45 | }
46 |
47 | .dropdown-toggle {
48 | user-select: none;
49 | cursor: pointer;
50 |
51 | &:after {
52 | vertical-align: 0.155em;
53 | }
54 |
55 | &:empty:after {
56 | margin-left: 0;
57 | }
58 | }
59 |
60 | .dropdown-icon {
61 | color: $text-muted;
62 | margin-right: .5rem;
63 | margin-left: -.5rem;
64 | width: 1em;
65 | display: inline-block;
66 | text-align: center;
67 | vertical-align: -1px;
68 | }
--------------------------------------------------------------------------------
/resources/assets/sass/tabler/_footer.scss:
--------------------------------------------------------------------------------
1 | .footer {
2 | background: $footer-bg;
3 | border-top: $border-width solid $border-color;
4 | font-size: px2rem(14px);
5 | padding: 1.25rem 0;
6 | color: $text-muted;
7 |
8 | a:not(.btn) {
9 | color: $text-muted-dark;
10 | }
11 |
12 | @media print {
13 | display: none;
14 | }
15 | }
--------------------------------------------------------------------------------
/resources/assets/sass/tabler/_form.scss:
--------------------------------------------------------------------------------
1 | textarea {
2 | &[cols] {
3 | height: auto;
4 | }
5 | }
6 |
7 |
8 | .form-group {
9 | display: block;
10 | }
11 |
12 | .form-label {
13 | display: block;
14 | margin-bottom: .375rem;
15 | font-weight: 600;
16 | font-size: px2rem(14px);
17 | }
18 |
19 | .form-label-small {
20 | float: right;
21 | font-weight: 400;
22 | font-size: $small-font-size;
23 | }
24 |
25 | .form-footer {
26 | margin-top: 2rem;
27 | }
28 |
29 | .custom-select,
30 | .custom-file {
31 | //display: block;
32 | //width: 100%;
33 | }
34 |
35 | .custom-control {
36 | user-select: none;
37 | }
38 |
39 | .custom-controls-stacked {
40 | .custom-control {
41 | margin-bottom: .25rem;
42 | }
43 | }
44 |
45 | .custom-control-label {
46 | vertical-align: middle;
47 |
48 | &:before {
49 | border: 1px solid $input-border-color;
50 | background-color: #fff;
51 | background-size: .5rem;
52 | }
53 | }
54 |
55 | .custom-control-description {
56 | line-height: 1.5rem;
57 | }
58 |
59 | .input-group-prepend,
60 | .input-group-append,
61 | .input-group-btn {
62 | font-size: px2rem(15px);
63 |
64 | >.btn {
65 | height: 100%;
66 | border-color: $border-color;
67 | }
68 | }
69 |
70 | .input-group-prepend > .input-group-text {
71 | border-right: 0;
72 | }
73 |
74 | .input-group-append > .input-group-text {
75 | border-left: 0;
76 | }
77 |
78 | /**
79 | Icon input
80 | */
81 | .input-icon {
82 | position: relative;
83 |
84 | .form-control:not(:last-child) {
85 | padding-right: 2.5rem;
86 | }
87 |
88 | .form-control:not(:first-child) {
89 | padding-left: 2.5rem;
90 | }
91 | }
92 |
93 | .input-icon-addon {
94 | position: absolute;
95 | top: 0;
96 | bottom: 0;
97 | left: 0;
98 | color: $text-muted;
99 | display: flex;
100 | align-items: center;
101 | justify-content: center;
102 | min-width: 2.5rem;
103 | pointer-events: none;
104 |
105 | &:last-child {
106 | left: auto;
107 | right: 0;
108 | }
109 | }
110 |
111 |
112 | .form-fieldset {
113 | background: $gray-100;
114 | border: 1px solid $gray-200;
115 | padding: 1rem;
116 | border-radius: 3px;
117 | margin-bottom: 1rem;
118 | }
119 |
120 | .form-required {
121 | color: $red;
122 |
123 | &:before {
124 | content: ' ';
125 | }
126 | }
127 |
128 | .state-valid {
129 | padding-right: 2rem;
130 | background: str-replace(url("data:image/svg+xml;charset=utf8,"), "#", "%23") no-repeat center right .5rem/1rem;
131 | }
132 |
133 | .state-invalid {
134 | padding-right: 2rem;
135 | background: str-replace(url("data:image/svg+xml;charset=utf8,"), "#", "%23") no-repeat center right .5rem/1rem;
136 | }
137 |
138 | .form-help {
139 | display: inline-block;
140 | width: 1rem;
141 | height: 1rem;
142 | text-align: center;
143 | line-height: 1rem;
144 | color: $text-muted;
145 | background: $gray-100;
146 | border-radius: 50%;
147 | font-size: px2rem(12px);
148 | transition: .3s background-color, .3s color;
149 | text-decoration: none;
150 | cursor: pointer;
151 | user-select: none;
152 |
153 | &:hover,
154 | &[aria-describedby] {
155 | background: $primary;
156 | color: #fff;
157 | }
158 | }
--------------------------------------------------------------------------------
/resources/assets/sass/tabler/_functions.scss:
--------------------------------------------------------------------------------
1 | @function px2rem($value) {
2 | @return $value/16px * 1rem;
3 | }
--------------------------------------------------------------------------------
/resources/assets/sass/tabler/_grid.scss:
--------------------------------------------------------------------------------
1 | .container {
2 | @media print {
3 | max-width: none;
4 | }
5 | }
6 |
7 | .row-cards {
8 | > .col,
9 | > [class*='col-'] {
10 | display: flex;
11 | flex-direction: column;
12 | }
13 | }
14 |
15 | .row-deck {
16 | > .col,
17 | > [class*='col-'] {
18 | display: flex;
19 | align-items: stretch;
20 |
21 | .card {
22 | flex: 1 1 auto;
23 | }
24 | }
25 | }
26 |
27 | .col-text {
28 | max-width: 48rem;
29 | }
30 |
31 | .col-login {
32 | max-width: 24rem;
33 | }
34 |
35 | @each $name, $value in (0: 0, xs: .25rem, sm: .5rem, lg: 1rem, xl: 1.5rem) {
36 | .gutters-#{$name} {
37 | margin-right: (-$value);
38 | margin-left: -($value);
39 |
40 | > .col,
41 | > [class*="col-"] {
42 | padding-right: $value;
43 | padding-left: $value;
44 | }
45 |
46 | .card {
47 | margin-bottom: 2*$value;
48 | }
49 | }
50 | }
--------------------------------------------------------------------------------
/resources/assets/sass/tabler/_header.scss:
--------------------------------------------------------------------------------
1 | .header {
2 | padding-top: .75rem;
3 | padding-bottom: .75rem;
4 | background: #fff;
5 | border-bottom: 1px solid $border-color;
6 |
7 | body.fixed-header & {
8 | position: fixed;
9 | top: 0;
10 | left: 0;
11 | right: 0;
12 | z-index: $zindex-fixed;
13 | }
14 |
15 | @media print {
16 | display: none;
17 | }
18 |
19 | .dropdown-menu {
20 | margin-top: .75rem;
21 | }
22 | }
23 |
24 | .nav-unread {
25 | position: absolute;
26 | top: .25rem;
27 | right: .25rem;
28 | background: $red;
29 | width: .5rem;
30 | height: .5rem;
31 | border-radius: 50%;
32 | }
33 |
34 | .header-brand {
35 | color: inherit;
36 | margin-right: 1rem;
37 | font-size: 1.25rem;
38 | white-space: nowrap;
39 | font-weight: 600;
40 | padding: 0;
41 | transition: .3s opacity;
42 | line-height: 2rem;
43 |
44 | &:hover {
45 | opacity: .8;
46 | color: inherit;
47 | text-decoration: none;
48 | }
49 | }
50 |
51 | .header-brand-img {
52 | height: 2rem;
53 | line-height: 2rem;
54 | vertical-align: bottom;
55 | margin-right: .5rem;
56 | width: auto;
57 | }
58 |
59 | .header-avatar {
60 | width: 2rem;
61 | height: 2rem;
62 | display: inline-block;
63 | vertical-align: bottom;
64 | border-radius: 50%;
65 | }
66 |
67 | //.header-nav {
68 | // background: #fff;
69 | // border-bottom: 1px solid $border-color;
70 | // color: $text-muted;
71 | // align-items: center;
72 | //
73 | // @media print {
74 | // display: none;
75 | // }
76 | //
77 | // .nav-tabs {
78 | // border: 0;
79 | // }
80 | //}
81 |
82 | .header-btn {
83 | display: inline-block;
84 | width: 2rem;
85 | height: 2rem;
86 | line-height: 2rem;
87 | text-align: center;
88 | font-size: 1rem;
89 |
90 | &.has-new {
91 | position: relative;
92 |
93 | &:before {
94 | content: '';
95 | width: 6px;
96 | height: 6px;
97 | background: $red;
98 | position: absolute;
99 | top: 4px;
100 | right: 4px;
101 | border-radius: 50%;
102 | }
103 | }
104 | }
105 |
106 | .header-toggler {
107 | width: 2rem;
108 | height: 2rem;
109 | position: relative;
110 | color: $text-muted;
111 |
112 | &:hover {
113 | color: $text-muted-dark;
114 | }
115 | }
116 |
117 | .header-toggler-icon {
118 | position: absolute;
119 | width: 1rem;
120 | height: 2px;
121 | color: inherit;
122 | background: currentColor;
123 | border-radius: 3px;
124 | top: 50%;
125 | left: 50%;
126 | margin: -2px 0 0 -.5rem;
127 | box-shadow: 0 5px currentColor, 0 -5px currentColor;
128 | }
--------------------------------------------------------------------------------
/resources/assets/sass/tabler/_icon.scss:
--------------------------------------------------------------------------------
1 | .icons-list {
2 | list-style: none;
3 | margin: 0 -1px -1px 0;
4 | padding: 0;
5 | display: flex;
6 | flex-wrap: wrap;
7 |
8 | >li {
9 | flex: 1 0 4rem;
10 | }
11 | }
12 |
13 | .icons-list-wrap {
14 | overflow: hidden;
15 | }
16 |
17 | .icons-list-item {
18 | text-align: center;
19 | height: 4rem;
20 | display: flex;
21 | align-items: center;
22 | justify-content: center;
23 | border-right: 1px solid $border-color;
24 | border-bottom: 1px solid $border-color;
25 |
26 | i {
27 | font-size: 1.25rem;
28 | }
29 | }
--------------------------------------------------------------------------------
/resources/assets/sass/tabler/_image.scss:
--------------------------------------------------------------------------------
1 | .img-gallery {
2 | margin-right: -.25rem;
3 | margin-left: -.25rem;
4 | margin-bottom: -.5rem;
5 |
6 | > .col,
7 | > [class*="col-"] {
8 | padding-left: .25rem;
9 | padding-right: .25rem;
10 | padding-bottom: .5rem;
11 | }
12 | }
--------------------------------------------------------------------------------
/resources/assets/sass/tabler/_infobox.scss:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/imzeeshan/laramovies/517b825de80b0dc57c2116069da1dc5b655e0579/resources/assets/sass/tabler/_infobox.scss
--------------------------------------------------------------------------------
/resources/assets/sass/tabler/_layout.scss:
--------------------------------------------------------------------------------
1 | .page {
2 | display: flex;
3 | flex-direction: column;
4 | justify-content: center;
5 | min-height: 100%;
6 |
7 | body.fixed-header & {
8 | padding-top: $header-height;
9 | }
10 |
11 | body.aside-opened & {
12 | @media (min-width: 1600px) {
13 | margin-right: $aside-width;
14 | }
15 | }
16 | }
17 |
18 | .page-main {
19 | flex: 1 1 auto;
20 | }
21 |
22 | .page-content {
23 | margin: .75rem 0;
24 |
25 | @include media-breakpoint-up(md) {
26 | margin: 1.5rem 0;
27 | }
28 | }
29 |
30 | .page-header {
31 | display: flex;
32 | align-items: center;
33 | margin: 1.5rem 0 1.5rem;
34 | flex-wrap: wrap;
35 | }
36 |
37 | .page-title {
38 | margin: 0;
39 | font-size: $h3-font-size;
40 | font-weight: 400;
41 | line-height: 2.5rem;
42 | }
43 |
44 | .page-title-icon {
45 | color: $text-muted;
46 | font-size: 1.25rem;
47 | }
48 |
49 | .page-subtitle {
50 | font-size: px2rem(13px);
51 | color: $text-muted-dark;
52 | margin-left: 2rem;
53 |
54 | a {
55 | color: inherit;
56 | }
57 | }
58 |
59 | .page-options {
60 | margin-left: auto;
61 | }
62 |
63 | .page-breadcrumb {
64 | flex-basis: 100%;
65 | }
66 |
67 | .page-description {
68 | margin: .25rem 0 0;
69 | color: $text-muted-dark;
70 |
71 | a {
72 | color: inherit;
73 | }
74 | }
75 |
76 | .page-single {
77 | flex: 1 1 auto;
78 | display: flex;
79 | align-items: center;
80 | justify-content: center;
81 | padding: 1rem 0;
82 | }
83 |
84 |
85 |
86 | .content-heading {
87 | font-weight: 400;
88 | margin: 2rem 0 1.5rem;
89 | font-size: px2rem(20px);
90 | line-height: 1.25;
91 |
92 | &:first-child {
93 | margin-top: 0;
94 | }
95 | }
--------------------------------------------------------------------------------
/resources/assets/sass/tabler/_link.scss:
--------------------------------------------------------------------------------
1 | .link-overlay {
2 | position: relative;
3 |
4 | &:hover {
5 | .link-overlay-bg {
6 | opacity: 1;
7 | }
8 | }
9 | }
10 |
11 | .link-overlay-bg {
12 | position: absolute;
13 | top: 0;
14 | left: 0;
15 | right: 0;
16 | bottom: 0;
17 | background: rgba($blue, .8);
18 | display: flex;
19 | color: #fff;
20 | align-items: center;
21 | justify-content: center;
22 | font-size: px2rem(20px);
23 | opacity: 0;
24 | transition: .3s opacity;
25 | }
--------------------------------------------------------------------------------
/resources/assets/sass/tabler/_list-group.scss:
--------------------------------------------------------------------------------
1 | .list-group-item {
2 | &.active {
3 | .icon {
4 | color: inherit !important;
5 | }
6 | }
7 | }
8 |
9 | .list-group-transparent {
10 | .list-group-item {
11 | background: none;
12 | border: 0;
13 | padding: .5rem 1rem;
14 | border-radius: 3px;
15 |
16 | &.active {
17 | background: rgba($primary, .06);
18 | font-weight: 600;
19 | }
20 | }
21 | }
--------------------------------------------------------------------------------
/resources/assets/sass/tabler/_list.scss:
--------------------------------------------------------------------------------
1 | .list-inline-dots {
2 | .list-inline-item {
3 |
4 | + .list-inline-item {
5 | &:before {
6 | content: '· ';
7 | margin-left: -2px;
8 | margin-right: 3px;
9 | }
10 | }
11 | }
12 | }
13 |
14 |
15 | .list-separated {
16 |
17 | }
18 |
19 | .list-separated-item {
20 | padding: 1rem 0;
21 |
22 | &:first-child {
23 | padding-top: 0;
24 | }
25 |
26 | &:last-child {
27 | padding-bottom: 0;
28 | }
29 |
30 | & + & {
31 | border-top: 1px solid $border-color;
32 | }
33 | }
34 |
35 |
--------------------------------------------------------------------------------
/resources/assets/sass/tabler/_maps.scss:
--------------------------------------------------------------------------------
1 | .map,
2 | .chart {
3 | position: relative;
4 | padding-top: (9/16)*100%;
5 | }
6 |
7 | .map-square,
8 | .chart-square {
9 | padding-top: 100%;
10 | }
11 |
12 | .map-content,
13 | .chart-content {
14 | position: absolute;
15 | top: 0;
16 | left: 0;
17 | right: 0;
18 | bottom: 0;
19 | }
20 |
21 | .map-header {
22 | margin-top: -1.5rem;
23 | margin-bottom: 1.5rem;
24 | height: 15rem;
25 | position: relative;
26 |
27 | //todo
28 | margin-bottom: -1.5rem;
29 |
30 | &:before {
31 | content: '';
32 | position: absolute;
33 | bottom: 0;
34 | left: 0;
35 | right: 0;
36 | height: 10rem;
37 | background: linear-gradient(to bottom, rgba($body-bg, 0) 5%, $body-bg 95%);
38 | pointer-events: none;
39 | }
40 | }
41 |
42 | .map-header-layer {
43 | height: 100%;
44 | }
45 |
46 | .map-static {
47 | height: 120px;
48 | width: 100%;
49 | max-width: 640px;
50 | background-position: center center;
51 | background-size: 640px 120px;
52 | }
--------------------------------------------------------------------------------
/resources/assets/sass/tabler/_media.scss:
--------------------------------------------------------------------------------
1 | .media-icon {
2 | width: 2rem;
3 | height: 2rem;
4 | line-height: 2rem;
5 | text-align: center;
6 | border-radius: 100%;
7 | }
8 |
9 | .media-list {
10 | margin: 0;
11 | padding: 0;
12 | list-style: none;
13 | }
--------------------------------------------------------------------------------
/resources/assets/sass/tabler/_nav.scss:
--------------------------------------------------------------------------------
1 | .nav-link,
2 | .nav-item {
3 | padding: 0 .75rem;
4 | min-width: 2rem;
5 | transition: .3s color;
6 | user-select: none;
7 | cursor: pointer;
8 | display: flex;
9 | align-items: center;
10 |
11 | .badge {
12 | position: absolute;
13 | top: 0;
14 | right: 0;
15 | padding: .2rem .25rem;
16 | min-width: 1rem
17 | }
18 | }
19 |
20 | .nav-tabs {
21 | user-select: none;
22 | color: $text-muted;
23 | margin: 0 -.75rem;
24 |
25 | .nav-link {
26 | border: 0;
27 | color: inherit;
28 | border-bottom: 1px solid transparent;
29 | margin-bottom: -1px;
30 | transition: .3s border-color;
31 | font-weight: 400;
32 | padding: 1rem 0;
33 |
34 | &:hover:not(.disabled) {
35 | border-color: $text-muted-dark;
36 | color: $text-muted-dark;
37 | }
38 |
39 | &.active {
40 | border-color: $blue;
41 | color: $blue;
42 | background: transparent;
43 | }
44 |
45 | &.disabled {
46 | opacity: .4;
47 | cursor: default;
48 | pointer-events: none;
49 | }
50 | }
51 |
52 | .nav-item {
53 | margin-bottom: 0;
54 | position: relative;
55 |
56 | i {
57 | margin-right: .25rem;
58 | line-height: 1;
59 | font-size: px2rem(14px);
60 | width: px2rem(14px);
61 | vertical-align: baseline;
62 | display: inline-block;
63 | }
64 |
65 | &:hover {
66 | .nav-submenu {
67 | display: block;
68 | }
69 | }
70 | }
71 |
72 | .nav-submenu {
73 | display: none;
74 | position: absolute;
75 | background: #fff;
76 | border: 1px solid $border-color;
77 | border-top: none;
78 | z-index: 10;
79 | box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
80 | min-width: 10rem;
81 | border-radius: 0 0 3px 3px;
82 |
83 | .nav-item {
84 | display: block;
85 | padding: .5rem 1rem;
86 | color: $text-muted;
87 | margin: 0 !important;
88 | cursor: pointer;
89 | transition: .3s background;
90 |
91 | &.active {
92 | color: $link-color;
93 | }
94 |
95 | &:hover {
96 | color: $text-muted-dark;
97 | text-decoration: none;
98 | background: rgba(0, 0, 0, .024);
99 | }
100 | }
101 | }
102 | }
103 |
104 | .nav-link {
105 | //display: block;
106 | //padding: 0.25rem 0.75rem;
107 | }
108 |
--------------------------------------------------------------------------------
/resources/assets/sass/tabler/_pagination.scss:
--------------------------------------------------------------------------------
1 | .pagination-simple {
2 | .page-item {
3 | .page-link {
4 | background: none;
5 | border: none;
6 | }
7 |
8 | &.active .page-link {
9 | color: $pagination-color;
10 | font-weight: 700;
11 | }
12 | }
13 | }
14 |
15 | .pagination-pager {
16 | .page-prev {
17 | margin-right: auto;
18 | }
19 |
20 | .page-next {
21 | margin-left: auto;
22 | }
23 | }
24 |
25 | .page-total-text {
26 | margin-right: 1rem;
27 | align-self: center;
28 | color: $text-muted-dark;
29 | }
--------------------------------------------------------------------------------
/resources/assets/sass/tabler/_popover.scss:
--------------------------------------------------------------------------------
1 | .popover {
2 | filter: drop-shadow(0 1px 3px rgba(0, 0, 0, 0.1));
3 |
4 |
5 | &.bs-popover-top {
6 | margin-bottom: $popover-arrow-height + .125rem;
7 | }
8 |
9 | .arrow {
10 | margin-left: calc(.25rem + 2px);
11 | }
12 | }
--------------------------------------------------------------------------------
/resources/assets/sass/tabler/_product.scss:
--------------------------------------------------------------------------------
1 | .product-price {
2 | font-size: 1rem;
3 |
4 | strong {
5 | font-size: 1.5rem;
6 | }
7 | }
--------------------------------------------------------------------------------
/resources/assets/sass/tabler/_progress.scss:
--------------------------------------------------------------------------------
1 | @keyframes indeterminate {
2 | 0% {
3 | left: -35%;
4 | right: 100%
5 | }
6 |
7 | 100%, 60% {
8 | left: 100%;
9 | right: -90%
10 | }
11 | }
12 |
13 | @keyframes indeterminate-short {
14 | 0% {
15 | left: -200%;
16 | right: 100%
17 | }
18 |
19 | 100%, 60% {
20 | left: 107%;
21 | right: -8%
22 | }
23 | }
24 |
25 | .progress {
26 | position: relative;
27 | }
28 |
29 | .progress-xs,
30 | .progress-xs .progress-bar {
31 | height: .25rem;
32 | }
33 |
34 | .progress-sm,
35 | .progress-sm .progress-bar {
36 | height: .5rem;
37 | }
38 |
39 | .progress-bar-indeterminate {
40 | &:after,
41 | &:before {
42 | content: '';
43 | position: absolute;
44 | background-color: inherit;
45 | left: 0;
46 | will-change: left, right;
47 | top: 0;
48 | bottom: 0;
49 | }
50 |
51 | &:before {
52 | animation: indeterminate 2.1s cubic-bezier(.65, .815, .735, .395) infinite;
53 | }
54 |
55 | &:after {
56 | animation: indeterminate-short 2.1s cubic-bezier(.165, .84, .44, 1) infinite;
57 | animation-delay: 1.15s;
58 | }
59 | }
60 |
61 |
62 |
63 | @keyframes loader {
64 | from {
65 | transform: rotate(0deg);
66 | }
67 |
68 | to {
69 | transform: rotate(360deg);
70 | }
71 | }
72 |
73 |
74 | /**
75 | Dimmer
76 | */
77 | .dimmer {
78 | position: relative;
79 |
80 | .loader {
81 | display: none;
82 | margin: 0 auto;
83 | position: absolute;
84 | top: 50%;
85 | left: 0;
86 | right: 0;
87 | transform: translateY(-50%);
88 | }
89 |
90 | &.active {
91 | .loader {
92 | display: block;
93 | }
94 |
95 | .dimmer-content {
96 | opacity: .04;
97 | pointer-events: none;
98 | }
99 | }
100 | }
101 |
102 | /**
103 | Loader
104 | */
105 | $loader-size: 2.5rem;
106 | .loader {
107 | display: block;
108 | position: relative;
109 | height: $loader-size;
110 | width: $loader-size;
111 | color: $blue;
112 |
113 | &:before,
114 | &:after {
115 | width: $loader-size;
116 | height: $loader-size;
117 | margin: (- $loader-size / 2) 0 0 (- $loader-size / 2);
118 | position: absolute;
119 | content: '';
120 | top: 50%;
121 | left: 50%;
122 | }
123 |
124 | &:before {
125 | border-radius: 50%;
126 | border: 3px solid currentColor;
127 | opacity: .15;
128 | }
129 |
130 | &:after {
131 | animation: loader .6s linear;
132 | animation-iteration-count: infinite;
133 |
134 | border-radius: 50%;
135 | border: 3px solid;
136 | border-color: transparent;
137 | border-top-color: currentColor;
138 | box-shadow: 0 0 0 1px transparent;
139 | }
140 | }
--------------------------------------------------------------------------------
/resources/assets/sass/tabler/_social.scss:
--------------------------------------------------------------------------------
1 | .social-links {
2 | li {
3 | a {
4 | background: #f8f8f8;
5 | border-radius: 50%;
6 | color: $text-muted;
7 | display: inline-block;
8 | height: 1.75rem;
9 | width: 1.75rem;
10 | line-height: 1.75rem;
11 | text-align: center;
12 | }
13 | }
14 | }
--------------------------------------------------------------------------------
/resources/assets/sass/tabler/_sparkline.scss:
--------------------------------------------------------------------------------
1 | .sparkline {
2 | display: inline-block;
3 | height: 2rem;
4 | }
5 |
6 | .jqstooltip {
7 | box-sizing: content-box;
8 | font-family: inherit !important;
9 | background: #333 !important;
10 | border: none !important;
11 | border-radius: 3px;
12 | font-size: 11px !important;
13 | font-weight: 700 !important;
14 | line-height: 1 !important;
15 | padding: 6px !important;
16 |
17 | .jqsfield {
18 | font: inherit !important;
19 | }
20 | }
--------------------------------------------------------------------------------
/resources/assets/sass/tabler/_stamp.scss:
--------------------------------------------------------------------------------
1 | .stamp {
2 | color: #fff;
3 | background: $gray-600;
4 | display: inline-block;
5 | min-width: 2rem;
6 | height: 2rem;
7 | padding: 0 .25rem;
8 | line-height: 2rem;
9 | text-align: center;
10 | border-radius: 3px;
11 | font-weight: 600;
12 | }
13 |
14 | .stamp-md {
15 | min-width: 2.5rem;
16 | height: 2.5rem;
17 | line-height: 2.5rem;
18 | }
--------------------------------------------------------------------------------
/resources/assets/sass/tabler/_statuses.scss:
--------------------------------------------------------------------------------
1 | @keyframes status-pulse {
2 | 0%, 100% {
3 | opacity: 1;
4 | }
5 |
6 | 50% {
7 | opacity: .32;
8 | }
9 | }
10 |
11 | .status-icon {
12 | content: '';
13 | width: px2rem(8px);
14 | height: px2rem(8px);
15 | display: inline-block;
16 | background: currentColor;
17 | border-radius: 50%;
18 | transform: translateY(-1px);
19 | margin-right: .375rem;
20 | vertical-align: middle;
21 | }
22 |
23 | .status-animated {
24 | animation: 1s status-pulse infinite ease;
25 | }
--------------------------------------------------------------------------------
/resources/assets/sass/tabler/_syntax.scss:
--------------------------------------------------------------------------------
1 | .highlight {
2 | .hll { background-color: #ffc; }
3 | .c { color: #999; }
4 | .k { color: #069; }
5 | .o { color: #555; }
6 | .cm { color: #999; }
7 | .cp { color: #099; }
8 | .c1 { color: #999; }
9 | .cs { color: #999; }
10 | .gd { background-color: #fcc; border: 1px solid #c00; }
11 | .ge { font-style: italic; }
12 | .gr { color: #f00; }
13 | .gh { color: #030; }
14 | .gi { background-color: #cfc; border: 1px solid #0c0; }
15 | .go { color: #aaa; }
16 | .gp { color: #009; }
17 | .gu { color: #030; }
18 | .gt { color: #9c6; }
19 | .kc { color: #069; }
20 | .kd { color: #069; }
21 | .kn { color: #069; }
22 | .kp { color: #069; }
23 | .kr { color: #069; }
24 | .kt { color: #078; }
25 | .m { color: #f60; }
26 | .s { color: #d44950; }
27 | .na { color: #4f9fcf; }
28 | .nb { color: #366; }
29 | .nc { color: #0a8; }
30 | .no { color: #360; }
31 | .nd { color: #99f; }
32 | .ni { color: #999; }
33 | .ne { color: #c00; }
34 | .nf { color: #c0f; }
35 | .nl { color: #99f; }
36 | .nn { color: #0cf; }
37 | .nt { color: #2f6f9f; }
38 | .nv { color: #033; }
39 | .ow { color: #000; }
40 | .w { color: #bbb; }
41 | .mf { color: #f60; }
42 | .mh { color: #f60; }
43 | .mi { color: #f60; }
44 | .mo { color: #f60; }
45 | .sb { color: #c30; }
46 | .sc { color: #c30; }
47 | .sd { font-style: italic; color: #c30; }
48 | .s2 { color: #c30; }
49 | .se { color: #c30; }
50 | .sh { color: #c30; }
51 | .si { color: #a00; }
52 | .sx { color: #c30; }
53 | .sr { color: #3aa; }
54 | .s1 { color: #c30; }
55 | .ss { color: #fc3; }
56 | .bp { color: #366; }
57 | .vc { color: #033; }
58 | .vg { color: #033; }
59 | .vi { color: #033; }
60 | .il { color: #f60; }
61 |
62 | .css .o,
63 | .css .o + .nt,
64 | .css .nt + .nt { color: #999; }
65 |
66 | .language-bash::before,
67 | .language-sh::before {
68 | color: #009;
69 | content: "$ ";
70 | user-select: none;
71 | }
72 |
73 | .language-powershell::before {
74 | color: #009;
75 | content: "PM> ";
76 | user-select: none;
77 | }
78 | }
--------------------------------------------------------------------------------
/resources/assets/sass/tabler/_tables.scss:
--------------------------------------------------------------------------------
1 | .table {
2 | thead {
3 | //background: $table-accent-bg;
4 |
5 | th {
6 | border-top: 0;
7 | border-bottom-width: 1px;
8 | padding-top: .5rem;
9 | padding-bottom: .5rem;
10 | }
11 | }
12 |
13 | th {
14 | color: $text-muted;
15 | text-transform: uppercase;
16 | font-size: $h6-font-size;
17 | font-weight: 400;
18 | }
19 | }
20 |
21 | .table-md {
22 | th,
23 | td {
24 | padding: .5rem;
25 | }
26 | }
27 |
28 | .table-vcenter {
29 | td,
30 | th {
31 | vertical-align: middle;
32 | }
33 | }
34 |
35 | .table-center {
36 | td,
37 | th {
38 | text-align: center;
39 | }
40 | }
41 |
42 | .table-striped {
43 | tbody tr:nth-of-type(odd) {
44 | background: transparent;
45 | }
46 |
47 | tbody tr:nth-of-type(even) {
48 | background-color: $table-accent-bg;
49 | }
50 | }
51 |
52 | .table-calendar {
53 | margin: 0 0 .75rem;
54 |
55 | td,
56 | th {
57 | border: 0;
58 | text-align: center;
59 | padding: 0 !important;
60 | width: (100%/7);
61 | line-height: 2.5rem;
62 | }
63 |
64 | td {
65 | border-top: 0;
66 | }
67 | }
68 |
69 | .table-calendar-link {
70 | line-height: 2rem;
71 | min-width: calc(2rem + 2px);
72 | display: inline-block;
73 | border-radius: 3px;
74 | background: $gray-100;
75 | color: $body-color;
76 | font-weight: 600;
77 | transition: .3s background, .3s color;
78 | position: relative;
79 |
80 | &:before {
81 | content: '';
82 | width: 4px;
83 | height: 4px;
84 | position: absolute;
85 | left: .25rem;
86 | top: .25rem;
87 | border-radius: 50px;
88 | background: $primary;
89 | }
90 |
91 | &:hover {
92 | color: #fff;
93 | text-decoration: none;
94 | background: $primary;
95 | transition: .3s background;
96 |
97 | &:before {
98 | background: #fff;
99 | }
100 | }
101 | }
102 |
103 |
104 | .table-header {
105 | cursor: pointer;
106 | transition: .3s color;
107 |
108 | &:hover {
109 | color: $body-color !important;
110 | }
111 |
112 | &:after {
113 | content: '\f0dc';
114 | font-family: FontAwesome;
115 | display: inline-block;
116 | margin-left: .5rem;
117 | font-size: .75rem;
118 | }
119 | }
120 |
121 | .table-header-asc {
122 | color: $body-color !important;
123 |
124 | &:after {
125 | content: '\f0de';
126 | }
127 | }
128 |
129 | .table-header-desc {
130 | color: $body-color !important;
131 |
132 | &:after {
133 | content: '\f0dd';
134 | }
135 | }
--------------------------------------------------------------------------------
/resources/assets/sass/tabler/_tag.scss:
--------------------------------------------------------------------------------
1 | .tag {
2 | font-size: px2rem(12px);
3 | color: $text-muted-dark;
4 | background-color: $gray-200;
5 | border-radius: 3px;
6 | padding: 0 .5rem;
7 | line-height: 2em;
8 | display: inline-flex;
9 | cursor: default;
10 | font-weight: 400;
11 | user-select: none;
12 |
13 | @at-root a#{&} {
14 | text-decoration: none;
15 | cursor: pointer;
16 | transition: .3s color, .3s background;
17 |
18 | &:hover {
19 | background-color: rgba($text-muted-dark, .20);
20 | color: inherit;
21 | }
22 | }
23 | }
24 |
25 | .tag-addon {
26 | display: inline-block;
27 | padding: 0 .5rem;
28 | color: inherit;
29 | text-decoration: none;
30 | background: rgba(#000, .06);
31 | margin: 0 -.5rem 0 .5rem;
32 | text-align: center;
33 | min-width: 1.5rem;
34 |
35 | &:last-child {
36 | border-top-right-radius: 3px;
37 | border-bottom-right-radius: 3px;
38 | }
39 |
40 | i {
41 | vertical-align: middle;
42 | margin: 0 -.25rem;
43 | }
44 |
45 | @at-root a#{&} {
46 | text-decoration: none;
47 | cursor: pointer;
48 | transition: .3s color, .3s background;
49 |
50 | &:hover {
51 | background: rgba(#000, .16);
52 | color: inherit;
53 | }
54 | }
55 | }
56 |
57 | .tag-avatar {
58 | width: 1.5rem;
59 | height: 1.5rem;
60 | border-radius: 3px 0 0 3px;
61 | margin: 0 .5rem 0 -.5rem;
62 | }
63 |
64 | @each $vendor, $color in $colors {
65 | .tag-#{$vendor} {
66 | background-color: $color;
67 | color: #fff;
68 | }
69 | }
70 |
71 | @each $vendor, $color in $theme-colors {
72 | .tag-#{$vendor} {
73 | background-color: $color;
74 | color: #fff;
75 | }
76 | }
77 |
78 | .tag-rounded {
79 | border-radius: 50px;
80 |
81 | .tag-avatar {
82 | border-radius: 50px;
83 | }
84 | }
85 |
86 | .tags {
87 | margin-bottom: -.5rem;
88 | font-size: 0;
89 |
90 | >.tag {
91 | margin-bottom: .5rem;
92 |
93 | &:not(:last-child) {
94 | margin-right: .5rem;
95 | }
96 | }
97 | }
98 |
--------------------------------------------------------------------------------
/resources/assets/sass/tabler/_text.scss:
--------------------------------------------------------------------------------
1 | .display-1,
2 | .display-2,
3 | .display-3,
4 | .display-4 {
5 | i {
6 | vertical-align: baseline;
7 | font-size: 0.815em;
8 | }
9 | }
10 |
11 | .text-inherit { color: inherit !important; }
12 | .text-default { color: $body-color !important; }
13 | .text-muted-dark { color: $text-muted-dark !important; }
14 |
15 | .tracking-tight { letter-spacing: -0.05em !important; }
16 | .tracking-normal { letter-spacing: 0 !important; }
17 | .tracking-wide { letter-spacing: 0.05em !important; }
18 |
19 | .leading-none { line-height: 1 !important; }
20 | .leading-tight { line-height: 1.25 !important; }
21 | .leading-normal { line-height: $line-height-base !important; }
22 | .leading-loose { line-height: 2 !important; }
--------------------------------------------------------------------------------
/resources/assets/sass/tabler/_timeline.scss:
--------------------------------------------------------------------------------
1 | .timeline {
2 | position: relative;
3 | margin: 0 0 2rem;
4 | padding: 0;
5 | list-style: none;
6 |
7 | &:before {
8 | background-color: $gray-200;
9 | position: absolute;
10 | display: block;
11 | content: '';
12 | width: 1px;
13 | height: 100%;
14 | top: 0;
15 | bottom: 0;
16 | left: 4px;
17 | }
18 | }
19 |
20 | .timeline-item {
21 | position: relative;
22 | display: flex;
23 | padding-left: 2rem;
24 | margin: .5rem 0;
25 |
26 | &:first-child:before,
27 | &:last-child:before {
28 | content: '';
29 | position: absolute;
30 | background: #fff;
31 | width: 1px;
32 | left: .25rem;
33 | }
34 |
35 | &:first-child {
36 | margin-top: 0;
37 |
38 | &:before {
39 | top: 0;
40 | height: .5rem;
41 | }
42 | }
43 |
44 | &:last-child {
45 | margin-bottom: 0;
46 |
47 | &:before {
48 | top: .5rem;
49 | bottom: 0;
50 | }
51 | }
52 | }
53 |
54 | .timeline-badge {
55 | position: absolute;
56 | display: block;
57 | width: px2rem(7px);
58 | height: px2rem(7px);
59 | left: 1px;
60 | top: .5rem;
61 | border-radius: 100%;
62 | border: 1px solid #fff;
63 | background: $gray-500;
64 | }
65 |
66 | .timeline-time {
67 | white-space: nowrap;
68 | margin-left: auto;
69 | color: $text-muted;
70 | font-size: $small-font-size;
71 | }
--------------------------------------------------------------------------------
/resources/assets/sass/tabler/_type.scss:
--------------------------------------------------------------------------------
1 | .lead {
2 | line-height: 1.4;
3 | }
4 |
5 | a {
6 | text-decoration-skip: ink;
7 | }
8 |
9 | h1, h2, h3, h4, h5, h6,
10 | .h1, .h2, .h3, .h4, .h5, .h6 {
11 | a {
12 | color: inherit;
13 | }
14 | }
15 |
16 | strong,
17 | b {
18 | font-weight: 600;
19 | }
20 |
21 | p,
22 | ul,
23 | ol,
24 | blockquote {
25 | margin-bottom: 1em;
26 | }
27 |
28 | blockquote {
29 | font-style: italic;
30 | color: $text-muted-dark;
31 | padding-left: 2rem;
32 | border-left: 2px solid $border-color;
33 |
34 | p {
35 | margin-bottom: 1rem;
36 | }
37 |
38 | cite {
39 | display: block;
40 | text-align: right;
41 |
42 | &:before {
43 | content: '— ';
44 | }
45 | }
46 | }
47 |
48 | code {
49 | background: rgba(0, 0, 0, 0.025);
50 | border: 1px solid rgba(#000, .05);
51 | border-radius: 3px;
52 | padding: 3px;
53 |
54 | pre & {
55 | padding: 0;
56 | border-radius: 0;
57 | border: none;
58 | background: none;
59 | }
60 | }
61 |
62 | hr {
63 | margin-top: 2rem;
64 | margin-bottom: 2rem;
65 | }
66 |
67 | pre {
68 | color: $gray-800;
69 | padding: 1rem;
70 | overflow: auto;
71 | font-size: 85%;
72 | line-height: 1.45;
73 | background-color: #f8fafc;
74 | border-radius: 3px;
75 | tab-size: 4;
76 | text-shadow: 0 1px white;
77 | hyphens: none;
78 | }
79 |
80 | img {
81 | max-width: 100%;
82 | }
83 |
84 | .text-wrap {
85 | font-size: 1rem;
86 | line-height: 1.66;
87 |
88 | > :first-child {
89 | margin-top: 0;
90 | }
91 |
92 | > :last-child {
93 | margin-bottom: 0;
94 | }
95 |
96 | > {
97 | h1, h2, h3, h4, h5, h6 {
98 | margin-top: 1em;
99 | }
100 | }
101 |
102 | table {
103 | @extend .table, .table-bordered;
104 | }
105 | }
106 |
107 | .section-nav {
108 | background-color: $gray-100;
109 | margin: 1rem 0;
110 | padding: .5rem 1rem;
111 | border: 1px solid $border-color;
112 | border-radius: 3px;
113 | list-style: none;
114 |
115 | &:before {
116 | content: 'Table of contents:';
117 | display: block;
118 | font-weight: 600;
119 | }
120 | }
--------------------------------------------------------------------------------
/resources/assets/sass/tabler/_utilities.scss:
--------------------------------------------------------------------------------
1 | @each $color, $value in $colors {
2 | @include bg-variant(".bg-#{$color}", $value);
3 |
4 | .text-#{$color} {
5 | color: $value !important;
6 | }
7 | }
8 |
9 |
10 | .icon {
11 | color: $text-muted !important;
12 |
13 | i {
14 | vertical-align: -1px;
15 | }
16 |
17 | @at-root a#{&} {
18 | text-decoration: none;
19 | cursor: pointer;
20 |
21 | &:hover {
22 | color: $body-color !important;
23 | }
24 | }
25 | }
26 |
27 | .o-auto { overflow: auto !important; }
28 | .o-hidden { overflow: hidden !important; }
29 |
30 | .shadow { box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05) !important; }
31 | .shadow-none { box-shadow: none !important; }
--------------------------------------------------------------------------------
/resources/assets/sass/tabler/forms/_custom-colorinput.scss:
--------------------------------------------------------------------------------
1 | //.colorinput-stacked {
2 | // display: flex;
3 | // flex-wrap: wrap;
4 | //
5 | // .colorinput {
6 | // margin-right: .25rem;
7 | // }
8 | //}
9 |
10 | .colorinput {
11 | margin: 0;
12 | position: relative;
13 | cursor: pointer;
14 | }
15 |
16 | .colorinput-input {
17 | position: absolute;
18 | z-index: -1;
19 | opacity: 0;
20 | }
21 |
22 | .colorinput-color {
23 | display: inline-block;
24 | width: 1.75rem;
25 | height: 1.75rem;
26 | border-radius: 3px;
27 | border: 1px solid $border-color;
28 | color: #fff;
29 | box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
30 |
31 | &:before {
32 | content: '';
33 | opacity: 0;
34 | position: absolute;
35 | top: .25rem;
36 | left: .25rem;
37 | height: 1.25rem;
38 | width: 1.25rem;
39 | transition: .3s opacity;
40 | background: $custom-checkbox-indicator-icon-checked no-repeat center center/50% 50%;
41 |
42 | .colorinput-input:checked ~ & {
43 | opacity: 1;
44 | }
45 | }
46 |
47 | .colorinput-input:focus ~ & {
48 | border-color: $primary;
49 | box-shadow: $input-btn-focus-box-shadow;
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/resources/assets/sass/tabler/forms/_custom-imagecheck.scss:
--------------------------------------------------------------------------------
1 | .imagecheck {
2 | margin: 0;
3 | position: relative;
4 | cursor: pointer;
5 | }
6 |
7 | .imagecheck-input {
8 | position: absolute;
9 | z-index: -1;
10 | opacity: 0;
11 | }
12 |
13 | .imagecheck-figure {
14 | border: 1px solid $border-color;
15 | border-radius: 3px;
16 | margin: 0;
17 | position: relative;
18 |
19 | .imagecheck-input:focus ~ & {
20 | border-color: $primary;
21 | box-shadow: $input-btn-focus-box-shadow;
22 | }
23 |
24 | .imagecheck-input:checked ~ & {
25 | border-color: $border-color-dark;
26 | }
27 |
28 | &:before {
29 | content: '';
30 | position: absolute;
31 | top: .25rem;
32 | left: .25rem;
33 | display: block;
34 | width: 1rem;
35 | height: 1rem;
36 | pointer-events: none;
37 | user-select: none;
38 | background: $primary $custom-checkbox-indicator-icon-checked no-repeat center center/50% 50%;
39 | color: #fff;
40 | z-index: 1;
41 | border-radius: 3px;
42 | opacity: 0;
43 | transition: .3s opacity;
44 |
45 | .imagecheck-input:checked ~ & {
46 | opacity: 1;
47 | }
48 | }
49 | }
50 |
51 | .imagecheck-image {
52 | max-width: 100%;
53 | opacity: .64;
54 | transition: .3s opacity;
55 |
56 | &:first-child {
57 | border-top-left-radius: 2px;
58 | border-top-right-radius: 2px;
59 | }
60 |
61 | &:last-child {
62 | border-bottom-left-radius: 2px;
63 | border-bottom-right-radius: 2px;
64 | }
65 |
66 | .imagecheck:hover &,
67 | .imagecheck-input:focus ~ .imagecheck-figure &,
68 | .imagecheck-input:checked ~ .imagecheck-figure & {
69 | opacity: 1;
70 | }
71 | }
72 |
73 | .imagecheck-caption {
74 | text-align: center;
75 | padding: .25rem .25rem;
76 | color: $text-muted;
77 | font-size: $font-size-sm;
78 | transition: .3s color;
79 |
80 | .imagecheck:hover &,
81 | .imagecheck-input:focus ~ .imagecheck-figure &,
82 | .imagecheck-input:checked ~ .imagecheck-figure & {
83 | color: $body-color;
84 | }
85 | }
--------------------------------------------------------------------------------
/resources/assets/sass/tabler/forms/_custom-range.scss:
--------------------------------------------------------------------------------
1 | $custom-range-slider-width: 240px;
2 | $custom-range-slider-height: 2px;
3 | $custom-range-background-slider: lighten($input-border-color, 5%);
4 | $custom-range-background-filled-slider: $primary;
5 | $custom-range-thumb-width: 14px;
6 | $custom-range-thumb-height: 14px;
7 | $custom-range-thumb-radius: 50px;
8 | $custom-range-thumb-background: #fff;
9 | $custom-range-thumb-border: 1px solid darken($input-border-color, 5%);
10 |
11 | @function custom-range-long-shadow($color) {
12 | $size: (-($custom-range-thumb-height - $custom-range-slider-height) / 2 );
13 | $val: 1px 0 0 $size $color;
14 | $s: $custom-range-slider-width / 1px;
15 |
16 | @for $i from 6 through $s {
17 | $val: #{$val}, #{$i}px 0 0 $size #{$color};
18 | }
19 |
20 | @return $val;
21 | }
22 |
23 | .custom-range {
24 | align-items: center;
25 | appearance: none;
26 | background: none;
27 | cursor: pointer;
28 | display: flex;
29 | height: 100%;
30 | min-height: $input-height;
31 | overflow: hidden;
32 | padding: 0;
33 | border: 0;
34 |
35 | &:focus {
36 | box-shadow: none;
37 | outline: none;
38 |
39 | &::-webkit-slider-thumb {
40 | border-color: $primary;
41 | background-color: $primary;
42 | }
43 |
44 | &::-moz-range-thumb {
45 | border-color: $primary;
46 | background-color: $primary;
47 | }
48 |
49 | &::-ms-thumb {
50 | border-color: $primary;
51 | background-color: $primary;
52 | }
53 | }
54 |
55 | &::-moz-focus-outer {
56 | border: 0;
57 | }
58 |
59 | &::-webkit-slider-runnable-track {
60 | background: $custom-range-background-filled-slider;
61 | content: '';
62 | height: $custom-range-slider-height;
63 | pointer-events: none;
64 | }
65 |
66 | &::-webkit-slider-thumb {
67 | width: $custom-range-thumb-width;
68 | height: $custom-range-thumb-height;
69 |
70 | appearance: none;
71 | background: $custom-range-thumb-background;
72 | border-radius: $custom-range-thumb-radius;
73 | box-shadow: custom-range-long-shadow($custom-range-background-slider);
74 | margin-top: (-($custom-range-thumb-height - $custom-range-slider-height) / 2 );
75 | border: $custom-range-thumb-border;
76 | transition: .3s border-color, .3s background-color;
77 | }
78 |
79 |
80 | &::-moz-range-track {
81 | width: $custom-range-slider-width;
82 | height: $custom-range-slider-height;
83 | background: $custom-range-background-slider;
84 | }
85 |
86 | &::-moz-range-thumb {
87 | width: $custom-range-thumb-width;
88 | height: $custom-range-thumb-height;
89 |
90 | background: $custom-range-thumb-background;
91 | border-radius: $custom-range-thumb-radius;
92 | border: $custom-range-thumb-border;
93 | position: relative;
94 | transition: .3s border-color, .3s background-color;
95 | }
96 |
97 | &::-moz-range-progress {
98 | height: $custom-range-slider-height;
99 | background: $custom-range-background-filled-slider;
100 | border: 0;
101 | margin-top: 0;
102 | }
103 |
104 | &::-ms-track {
105 | background: transparent;
106 | border: 0;
107 | border-color: transparent;
108 | border-radius: 0;
109 | border-width: 0;
110 | color: transparent;
111 | height: $custom-range-slider-height;
112 | margin-top: 10px;
113 | width: $custom-range-slider-width;
114 | }
115 |
116 | &::-ms-thumb {
117 | width: $custom-range-slider-width;
118 | height: $custom-range-slider-height;
119 |
120 | background: $custom-range-thumb-background;
121 | border-radius: $custom-range-thumb-radius;
122 | border: $custom-range-thumb-border;
123 |
124 | transition: .3s border-color, .3s background-color;
125 | }
126 |
127 | &::-ms-fill-lower {
128 | background: $custom-range-background-filled-slider;
129 | border-radius: 0;
130 | }
131 |
132 | &::-ms-fill-upper {
133 | background: $custom-range-background-slider;
134 | border-radius: 0;
135 | }
136 |
137 | &::-ms-tooltip {
138 | display: none;
139 | }
140 | }
--------------------------------------------------------------------------------
/resources/assets/sass/tabler/forms/_custom-selectgroup.scss:
--------------------------------------------------------------------------------
1 | .selectgroup {
2 | display: inline-flex;
3 | }
4 |
5 | .selectgroup-item {
6 | flex-grow: 1;
7 | position: relative;
8 |
9 | & + & {
10 | margin-left: -1px;
11 | }
12 |
13 | &:not(:first-child) .selectgroup-button {
14 | border-top-left-radius: 0;
15 | border-bottom-left-radius: 0;
16 | }
17 |
18 | &:not(:last-child) .selectgroup-button {
19 | border-top-right-radius: 0;
20 | border-bottom-right-radius: 0;
21 | }
22 | }
23 |
24 | .selectgroup-input {
25 | opacity: 0;
26 | position: absolute;
27 | z-index: -1;
28 | top: 0;
29 | left: 0;
30 | }
31 |
32 | .selectgroup-button {
33 | display: block;
34 | border: 1px solid $input-border-color;
35 | text-align: center;
36 | padding: $input-btn-padding-y 1rem;
37 | position: relative;
38 | cursor: pointer;
39 | border-radius: 3px;
40 | color: $text-muted;
41 | user-select: none;
42 | font-size: $font-size-base;
43 | line-height: 1.5rem;
44 | min-width: $input-height;
45 | }
46 |
47 | .selectgroup-button-icon {
48 | padding-left: .5rem;
49 | padding-right: .5rem;
50 | font-size: 1rem;
51 | }
52 |
53 | .selectgroup-input:checked + .selectgroup-button {
54 | border-color: $primary;
55 | z-index: 1;
56 | color: $primary;
57 | background: mix(#fff, $primary, 90%)
58 | }
59 |
60 | .selectgroup-input:focus + .selectgroup-button {
61 | border-color: $primary;
62 | z-index: 2;
63 | color: $primary;
64 | box-shadow: $input-btn-focus-box-shadow;
65 | }
66 |
67 | .selectgroup-pills {
68 | flex-wrap: wrap;
69 | align-items: flex-start;
70 |
71 | .selectgroup-item {
72 | margin-right: .5rem;
73 | flex-grow: 0;
74 | }
75 |
76 | .selectgroup-button {
77 | border-radius: 50px !important;
78 | }
79 | }
--------------------------------------------------------------------------------
/resources/assets/sass/tabler/forms/_custom-switch.scss:
--------------------------------------------------------------------------------
1 | $custom-switch-width: 2.25rem;
2 | $custom-switch-height: 1.25rem;
3 | $custom-switch-padding: 1px;
4 |
5 | .custom-switch {
6 | user-select: none;
7 | cursor: default;
8 | display: inline-flex;
9 | align-items: center;
10 | margin: 0;
11 | }
12 |
13 | .custom-switch-input {
14 | position: absolute;
15 | z-index: -1;
16 | opacity: 0;
17 | }
18 |
19 | .custom-switches-stacked {
20 | display: flex;
21 | flex-direction: column;
22 |
23 | .custom-switch {
24 | margin-bottom: .5rem;
25 | }
26 | }
27 |
28 | .custom-switch-indicator {
29 | display: inline-block;
30 | height: $custom-switch-height;
31 | width: $custom-switch-width;
32 | background: $gray-200;
33 | border-radius: 50px;
34 | position: relative;
35 | vertical-align: bottom;
36 | border: 1px solid $border-color;
37 | transition: .3s border-color, .3s background-color;
38 |
39 | &:before {
40 | content: '';
41 | position: absolute;
42 | height: calc(#{$custom-switch-height} - #{$custom-switch-padding * 2 + 2px});
43 | width: calc(#{$custom-switch-height} - #{$custom-switch-padding * 2 + 2px});
44 | top: $custom-switch-padding;
45 | left: $custom-switch-padding;
46 | background: #fff;
47 | border-radius: 50%;
48 | transition: .3s left;
49 | box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.4);
50 | }
51 |
52 | .custom-switch-input:checked ~ & {
53 | background: $primary;
54 |
55 | &:before {
56 | left: calc(#{$custom-switch-width - $custom-switch-height} + #{$custom-switch-padding})
57 | }
58 | }
59 |
60 | .custom-switch-input:focus ~ & {
61 | box-shadow: $input-btn-focus-box-shadow;
62 | border-color: $primary;
63 | }
64 | }
65 |
66 | .custom-switch-description {
67 | margin-left: .5rem;
68 | color: $text-muted-dark;
69 | transition: .3s color;
70 |
71 | .custom-switch-input:checked ~ & {
72 | color: $body-color;
73 | }
74 | }
--------------------------------------------------------------------------------
/resources/assets/sass/tabler/tabler.scss:
--------------------------------------------------------------------------------
1 | @import "functions";
2 |
3 | @import "core";
4 | @import "type";
5 | @import "grid";
6 |
7 | @import "layout";
8 | @import "aside";
9 | @import "header";
10 | @import "footer";
11 | @import "colors";
12 | @import "text";
13 | @import "utilities";
14 |
15 | @import "nav";
16 | @import "button";
17 | @import "alert";
18 | @import "close";
19 | @import "badge";
20 | @import "tables";
21 | @import "breadcrumb";
22 | @import "pagination";
23 | @import "cards";
24 | @import "popover";
25 | @import "dropdown";
26 | @import "list";
27 | @import "list-group";
28 | @import "avatar";
29 | @import "product";
30 | @import "progress";
31 | @import "icon";
32 | @import "image";
33 | @import "link";
34 | @import "media";
35 | @import "form";
36 | @import "sparkline";
37 | @import "social";
38 | @import "maps";
39 | @import "statuses";
40 | @import "charts";
41 | @import "chips";
42 | @import "stamp";
43 | @import "chat";
44 | @import "tag";
45 | @import "syntax";
46 | @import "infobox";
47 | @import "carousel";
48 |
49 | @import "forms/custom-range";
50 | @import "forms/custom-selectgroup";
51 | @import "forms/custom-switch";
52 | @import "forms/custom-imagecheck";
53 | @import "forms/custom-colorinput";
54 |
55 | @import "timeline";
56 |
57 | @import "fonts/feather";
58 |
--------------------------------------------------------------------------------
/resources/lang/en/auth.php:
--------------------------------------------------------------------------------
1 | 'These credentials do not match our records.',
17 | 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.',
18 |
19 | ];
20 |
--------------------------------------------------------------------------------
/resources/lang/en/pagination.php:
--------------------------------------------------------------------------------
1 | '« Previous',
17 | 'next' => 'Next »',
18 |
19 | ];
20 |
--------------------------------------------------------------------------------
/resources/lang/en/passwords.php:
--------------------------------------------------------------------------------
1 | 'Passwords must be at least six characters and match the confirmation.',
17 | 'reset' => 'Your password has been reset!',
18 | 'sent' => 'We have e-mailed your password reset link!',
19 | 'token' => 'This password reset token is invalid.',
20 | 'user' => "We can't find a user with that e-mail address.",
21 |
22 | ];
23 |
--------------------------------------------------------------------------------
/resources/views/auth/login.blade.php:
--------------------------------------------------------------------------------
1 | @extends('layouts.app')
2 |
3 | @section('content')
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
69 |
70 |
71 | Don't have account yet?
Sign up
72 |
73 |
74 |
75 |
76 |
77 | @endsection
78 |
--------------------------------------------------------------------------------
/resources/views/auth/passwords/email.blade.php:
--------------------------------------------------------------------------------
1 | @extends('layouts.app')
2 |
3 | @section('content')
4 |
5 |
6 |
7 |
8 |
9 |

13 |
14 |
43 |
44 | Forget it,
send me back to the sign in screen.
45 |
46 |
47 |
48 |
49 |
50 | @endsection
51 |
--------------------------------------------------------------------------------
/resources/views/auth/passwords/reset.blade.php:
--------------------------------------------------------------------------------
1 | @extends('layouts.app')
2 |
3 | @section('content')
4 |
5 |
6 |
7 |
8 |
9 |

13 |
14 |
74 |
75 |
76 |
77 |
78 | @endsection
79 |
--------------------------------------------------------------------------------
/resources/views/home.blade.php:
--------------------------------------------------------------------------------
1 | @extends('layouts.app')
2 |
3 | @section('content')
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 | @if (session('status'))
12 |
13 | {{ session('status') }}
14 |
15 | @endif
16 |
17 | You are logged in!
18 |
19 |
20 |
21 |
22 |
23 | @endsection
24 |
--------------------------------------------------------------------------------
/resources/views/movies/index.blade.php:
--------------------------------------------------------------------------------
1 | @extends('layouts.app')
2 |
3 | @section('content')
4 |
5 | @if (session('message'))
6 |
7 |
8 | {{ session('message') }}
9 |
10 | @endif
11 |
12 |
13 |
14 |
15 |
Movies
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 | Id |
24 | Name |
25 | Year |
26 | Image |
27 | Genre |
28 | Rating |
29 | Country |
30 | Action |
31 |
32 |
33 | @foreach($movies as $movie)
34 |
35 | {{ $movie->id }} |
36 | {{ $movie->name }} |
37 | {{ $movie->release_year }} |
38 |  |
39 |
40 | {{ $movie->genre->name }} |
41 | {{ $movie->rating->name }} |
42 | {{ $movie->country }} |
43 |
44 | View |
45 | Edit |
46 |
51 |
52 |
53 | |
54 |
55 |
56 | @endforeach
57 |
58 |
59 |
60 |
61 |
73 |
74 |
75 |
76 |
77 |
78 |
79 | @endsection
80 |
--------------------------------------------------------------------------------
/resources/views/movies/show.blade.php:
--------------------------------------------------------------------------------
1 | @extends('layouts.app')
2 |
3 | @section('content')
4 |
5 |
6 |
7 |
10 |
11 |
12 |
13 |
14 |
15 | {{ $movie->name}}:
16 | {{ $movie->plot}}
17 | |
18 |  |
19 |
20 |
21 |
22 | Year : {{$movie->release_year}} |
23 |
24 |
25 |
26 | Genre : {{$movie->genre->name}} |
27 |
28 |
29 |
30 | Year : {{$movie->rating->name}} |
31 |
32 |
33 |
34 | Country : {{$movie->country}} |
35 |
36 |
37 |
38 | Casts & Crew :
39 |
40 | @foreach($movie->cast_crews as $cast_crew)
41 | - {{$cast_crew->user->first_name}} {{$cast_crew->user->last_name}}
42 | @endforeach
43 |
44 | |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
Back
54 |
55 |
56 |
57 |
58 | @endsection
59 |
--------------------------------------------------------------------------------
/resources/views/roles/create.blade.php:
--------------------------------------------------------------------------------
1 | @extends('layouts.app')
2 |
3 | @section('content')
4 |