├── .env.example
├── .gitattributes
├── .gitignore
├── .gitignore.bak
├── app
├── Classes
│ ├── DeleteCrud.php
│ └── DeleteVueCrud.php
├── Console
│ └── Kernel.php
├── Exceptions
│ └── Handler.php
├── Http
│ ├── Controllers
│ │ ├── Auth
│ │ │ ├── ForgotPasswordController.php
│ │ │ ├── LoginController.php
│ │ │ ├── RegisterController.php
│ │ │ └── ResetPasswordController.php
│ │ ├── Controller.php
│ │ ├── VueCrudController.php
│ │ └── VueCrudController2 .php
│ ├── Kernel.php
│ ├── Middleware
│ │ ├── EncryptCookies.php
│ │ ├── RedirectIfAuthenticated.php
│ │ ├── TrimStrings.php
│ │ └── VerifyCsrfToken.php
│ └── Requests
│ │ ├── Request.php
│ │ └── VueCrudRequest.php
├── Jobs
│ ├── Job.php
│ └── VueCrudSaveJob.php
├── Providers
│ ├── AppServiceProvider.php
│ ├── AuthServiceProvider.php
│ ├── BroadcastServiceProvider.php
│ ├── EventServiceProvider.php
│ └── RouteServiceProvider.php
├── User.php
└── VueCrud.php
├── artisan
├── bootstrap
├── app.php
├── autoload.php
└── cache
│ └── .gitignore
├── composer.json
├── composer.lock
├── config
├── app.php
├── auth.php
├── broadcasting.php
├── cache.php
├── database.php
├── filesystems.php
├── mail.php
├── queue.php
├── services.php
├── session.php
└── view.php
├── database
├── .gitignore
├── factories
│ └── ModelFactory.php
├── migrations
│ └── 2017_04_07_144522_vue_crud.php
└── seeds
│ └── DatabaseSeeder.php
├── package.json
├── phpunit.xml
├── public
├── .htaccess
├── assets
│ ├── css
│ │ ├── animate.min.css
│ │ ├── app.css
│ │ ├── bootstrap.min.css
│ │ ├── demo.css
│ │ ├── emptypage.css
│ │ ├── font-awesome.min.css
│ │ ├── font-awesome.min.css.bak
│ │ ├── hint.css
│ │ ├── paper-dashboard.css
│ │ └── themify-icons.css
│ ├── fonts
│ │ ├── T-qN9Yh40TTJeenUALkjgg.woff2
│ │ ├── fontawesome-webfont(1).eot
│ │ ├── fontawesome-webfont.eot
│ │ ├── fontawesome-webfont.ttf
│ │ ├── fontawesome-webfont.woff
│ │ ├── themify.eot
│ │ ├── themify.svg
│ │ ├── themify.ttf
│ │ ├── themify.woff
│ │ └── z6c3Zzm51I2zB_Gi7146Bg.woff2
│ ├── images
│ │ ├── arrowup.gif
│ │ ├── btnclose.jpg
│ │ ├── btnclose.png
│ │ ├── btnclose2.png
│ │ ├── deleteicon1.jpg
│ │ ├── editicon1.jpg
│ │ ├── facebook.png
│ │ ├── icongallery1.jpg
│ │ ├── icongallery2.jpg
│ │ ├── iconmessage_1.jpg
│ │ ├── iconmessage_2.jpg
│ │ ├── loadings
│ │ │ ├── loading-balls.svg
│ │ │ ├── loading-bars.svg
│ │ │ ├── loading-bubbles.svg
│ │ │ ├── loading-bubbles3.svg
│ │ │ ├── loading-cubes.svg
│ │ │ ├── loading-cylon-red.svg
│ │ │ ├── loading-cylon.svg
│ │ │ ├── loading-spin.svg
│ │ │ ├── loading-spin.svg.bak
│ │ │ ├── loading-spinning-bubbles.svg
│ │ │ └── loading-spokes.svg
│ │ ├── logo.jpg
│ │ ├── select-arrow.jpg
│ │ └── select-arrow.png
│ └── scripts
│ │ ├── bootstrap
│ │ ├── bootstrap-checkbox-radio.js
│ │ ├── bootstrap-notify.js
│ │ └── bootstrap.min.js
│ │ └── jquery-1.9.0.min.js
├── favicon.ico
├── index.php
├── robots.txt
└── web.config
├── readme.md
├── readme.md.bak
├── resources
├── assets
│ ├── js
│ │ ├── app.js
│ │ ├── bootstrap.js
│ │ └── components
│ │ │ └── Example.vue
│ └── sass
│ │ ├── _variables.scss
│ │ └── app.scss
├── lang
│ └── en
│ │ ├── auth.php
│ │ ├── pagination.php
│ │ ├── passwords.php
│ │ └── validation.php
└── views
│ ├── display_all_post_category.blade.php
│ ├── errors.blade.php
│ ├── flash.blade.php
│ ├── layout
│ └── template.blade.php
│ ├── vue_crud.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
/.env.example:
--------------------------------------------------------------------------------
1 | APP_NAME=Laravel
2 | APP_ENV=local
3 | APP_KEY=
4 | APP_DEBUG=true
5 | APP_LOG_LEVEL=debug
6 | APP_URL=http://localhost
7 |
8 | DB_CONNECTION=mysql
9 | DB_HOST=127.0.0.1
10 | DB_PORT=3306
11 | DB_DATABASE=homestead
12 | DB_USERNAME=homestead
13 | DB_PASSWORD=secret
14 |
15 | BROADCAST_DRIVER=log
16 | CACHE_DRIVER=file
17 | SESSION_DRIVER=file
18 | QUEUE_DRIVER=sync
19 |
20 | REDIS_HOST=127.0.0.1
21 | REDIS_PASSWORD=null
22 | REDIS_PORT=6379
23 |
24 | MAIL_DRIVER=smtp
25 | MAIL_HOST=smtp.mailtrap.io
26 | MAIL_PORT=2525
27 | MAIL_USERNAME=null
28 | MAIL_PASSWORD=null
29 | MAIL_ENCRYPTION=null
30 |
31 | PUSHER_APP_ID=
32 | PUSHER_APP_KEY=
33 | PUSHER_APP_SECRET=
34 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | * text=auto
2 | *.css linguist-vendored
3 | *.scss linguist-vendored
4 | *.js linguist-vendored
5 | CHANGELOG.md export-ignore
6 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | /node_modules
2 | /public/hot
3 | /public/storage
4 | /storage/*.key
5 | /vendor
6 | /.idea
7 | /.vagrant
8 | Homestead.json
9 | Homestead.yaml
10 | .env
11 |
12 |
13 | /vendor
14 | /node_modules
15 | /public/storage
16 | Homestead.yaml
17 | Homestead.json
18 | .env
19 |
--------------------------------------------------------------------------------
/.gitignore.bak:
--------------------------------------------------------------------------------
1 | /node_modules
2 | /public/hot
3 | /public/storage
4 | /storage/*.key
5 | /vendor
6 | /.idea
7 | /.vagrant
8 | Homestead.json
9 | Homestead.yaml
10 | .env
11 |
--------------------------------------------------------------------------------
/app/Classes/DeleteCrud.php:
--------------------------------------------------------------------------------
1 | item_to_delete = $item_to_delete;
19 |
20 | }
21 |
22 | // delete a massage category and those messages inside
23 | public function deleteItem()
24 | {
25 | $index = [];
26 |
27 | foreach($this->item_to_delete as $deleteItem) {
28 |
29 | $obj = json_decode($deleteItem);
30 |
31 | // Select where ID separeted
32 | $delete = VueCrud::where('id', $obj->id)->first();
33 |
34 | // delete
35 | $this->delete_all($delete);
36 | // push index into index
37 | array_push($index , $obj->index);
38 |
39 |
40 | }
41 |
42 | return $index;
43 |
44 | }
45 |
46 |
47 |
48 |
49 | /**********************************************************************************
50 | DELETE ALL PHOTOS
51 | ***********************************************************************************/
52 | protected function delete_all($item){
53 |
54 | //delete the image
55 | $item->delete();
56 |
57 |
58 | }
59 |
60 |
61 |
62 |
63 |
64 | }
--------------------------------------------------------------------------------
/app/Classes/DeleteVueCrud.php:
--------------------------------------------------------------------------------
1 | item_to_delete = $item_to_delete;
17 |
18 | }
19 |
20 | // delete a massage category and those messages inside
21 | public function deleteItem()
22 | {
23 | $index = [];
24 |
25 | foreach($this->item_to_delete as $deleteItem) {
26 |
27 | $obj = json_decode($deleteItem);
28 |
29 | // Select where ID separeted
30 | $item = VueCrud::where('id', $obj->id)->first();
31 |
32 | // delete the page
33 | $item->delete();
34 |
35 | // push index into index
36 | array_push($index , $obj->index);
37 |
38 |
39 | }
40 |
41 | return $index;
42 |
43 | }
44 |
45 |
46 |
47 |
48 |
49 |
50 | }
--------------------------------------------------------------------------------
/app/Console/Kernel.php:
--------------------------------------------------------------------------------
1 | command('inspire')
28 | // ->hourly();
29 | }
30 |
31 | /**
32 | * Register the Closure based commands for the application.
33 | *
34 | * @return void
35 | */
36 | protected function commands()
37 | {
38 | require base_path('routes/console.php');
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/app/Exceptions/Handler.php:
--------------------------------------------------------------------------------
1 | expectsJson()) {
60 | return response()->json(['error' => 'Unauthenticated.'], 401);
61 | }
62 |
63 | return redirect()->guest(route('login'));
64 | }
65 | }
66 |
--------------------------------------------------------------------------------
/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');
40 | }
41 |
42 | /**
43 | * Get a validator for an incoming registration request.
44 | *
45 | * @param array $data
46 | * @return \Illuminate\Contracts\Validation\Validator
47 | */
48 | protected function validator(array $data)
49 | {
50 | return Validator::make($data, [
51 | 'name' => 'required|max:255',
52 | 'email' => 'required|email|max:255|unique:users',
53 | 'password' => 'required|min:6|confirmed',
54 | ]);
55 | }
56 |
57 | /**
58 | * Create a new user instance after a valid registration.
59 | *
60 | * @param array $data
61 | * @return User
62 | */
63 | protected function create(array $data)
64 | {
65 | return User::create([
66 | 'name' => $data['name'],
67 | 'email' => $data['email'],
68 | 'password' => bcrypt($data['password']),
69 | ]);
70 | }
71 | }
72 |
--------------------------------------------------------------------------------
/app/Http/Controllers/Auth/ResetPasswordController.php:
--------------------------------------------------------------------------------
1 | middleware('guest');
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/app/Http/Controllers/Controller.php:
--------------------------------------------------------------------------------
1 | latest()->paginate(6);
50 |
51 |
52 | $response = [
53 | 'pagination' => [
54 | 'total' => $items->total(),
55 | 'per_page' => $items->perPage(),
56 | 'current_page' => $items->currentPage(),
57 | 'last_page' => $items->lastPage(),
58 | 'from' => $items->firstItem(),
59 | 'to' => $items->lastItem()
60 | ],
61 | 'data' => $items
62 | ];
63 |
64 |
65 | return response()->json($response);
66 |
67 | }
68 |
69 |
70 | /**********************************************************************************
71 | STORE
72 | ***********************************************************************************/
73 | public function store(VueCrudRequest $request)
74 | {
75 |
76 | /* validation */
77 | $crud = new VueCrud() ;
78 |
79 | // Dispatch a Job
80 | $new_content = $this->dispatch(new VueCrudSaveJob("create" , $crud , $request));
81 |
82 |
83 | return response()->json([$new_content]);
84 |
85 |
86 | }
87 |
88 |
89 |
90 | /**********************************************************************************
91 | UPDATE
92 | ***********************************************************************************/
93 | public function update(Request $request)
94 | {
95 |
96 | /* validation */
97 | $crud = VueCrud::findOrFail(json_decode($request['id']));
98 |
99 | // Dispatch a Job
100 | $new_content= $this->dispatch(new VueCrudSaveJob("update" , $crud , $request));
101 |
102 |
103 | return response()->json($new_content);
104 |
105 |
106 |
107 | }
108 |
109 |
110 | /**********************************************************************************
111 | DELETE
112 | ***********************************************************************************/
113 | public function delete(Request $request)
114 | {
115 |
116 | $value = $request['value'];
117 |
118 | /**********************************************************************************
119 | * check if the post is a single post or a multiple post , if is a single post delete only
120 | * one Item , if not , delete multiple Itens
121 | *
122 | ***********************************************************************************/
123 | $itemsToRemove = (new DeleteCrud($value))->deleteItem();
124 |
125 |
126 | return response()->json(['index' => $itemsToRemove]);
127 | }
128 | }
129 |
--------------------------------------------------------------------------------
/app/Http/Controllers/VueCrudController2 .php:
--------------------------------------------------------------------------------
1 | latest()->with('countProducts')->paginate($this->items_per_page);
48 |
49 |
50 | $response = [
51 | 'pagination' => [
52 | 'total' => $items->total(),
53 | 'per_page' => $items->perPage(),
54 | 'current_page' => $items->currentPage(),
55 | 'last_page' => $items->lastPage(),
56 | 'from' => $items->firstItem(),
57 | 'to' => $items->lastItem()
58 | ],
59 | 'data' => $items
60 | ];
61 |
62 |
63 | return response()->json($response);
64 |
65 | }
66 |
67 |
68 |
69 |
70 | /**********************************************************************************
71 | STORE
72 | ***********************************************************************************/
73 | public function store(VueCrudRequest $request)
74 | {
75 |
76 | /* validation */
77 | $post_category = new VueCrud() ;
78 |
79 | // Dispatch a Job
80 | $new_content = $this->dispatch(new VueCrudSaveJob("create" , $post_category , $request , $this->user));
81 |
82 |
83 | return response()->json([$new_content]);
84 |
85 |
86 |
87 | }
88 |
89 |
90 |
91 | /**********************************************************************************
92 | EDIT ITEM
93 | ***********************************************************************************/
94 | public function edit(VueCrudRequest $request)
95 | {
96 |
97 |
98 | $post_category = VueCrud::findOrFail($request['postId']);
99 | /* $post_category->fill($request->all()) ; */
100 |
101 | $msg = $this->dispatch(new VueCrudSaveJob("update" , $post_category , $request , $this->user));
102 |
103 | return response()->json([ 'success' => true , 'new_content' => 'title_'.$msg['title'] ], 200);
104 |
105 |
106 |
107 | }
108 |
109 | /**********************************************************************************
110 | UPDATE
111 | ***********************************************************************************/
112 | public function update(Request $request)
113 | {
114 |
115 | /* validation */
116 | $post_category = ProductCategory::findOrFail(json_decode($request['id']));
117 |
118 | // Dispatch a Job
119 | $new_content= $this->dispatch(new ProductCategorySaveJob("update" , $post_category , $request , $this->user));
120 |
121 |
122 | return response()->json($new_content);
123 |
124 |
125 |
126 | }
127 |
128 |
129 | /**********************************************************************************
130 | DELETE
131 | ***********************************************************************************/
132 | public function delete(Request $request)
133 | {
134 |
135 | $value = $request['value'];
136 |
137 | /**********************************************************************************
138 | * check if the post is a single post or a multiple post , if is a single post delete only
139 | * one Item , if not , delete multiple Itens
140 | *
141 | ***********************************************************************************/
142 | $itemsToRemove = (new DeleteProducCategory($value))->deleteItem();
143 |
144 |
145 | return response()->json(['index' => $itemsToRemove]);
146 | }
147 | }
148 |
--------------------------------------------------------------------------------
/app/Http/Kernel.php:
--------------------------------------------------------------------------------
1 | [
30 | \App\Http\Middleware\EncryptCookies::class,
31 | \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
32 | \Illuminate\Session\Middleware\StartSession::class,
33 | // \Illuminate\Session\Middleware\AuthenticateSession::class,
34 | \Illuminate\View\Middleware\ShareErrorsFromSession::class,
35 | \App\Http\Middleware\VerifyCsrfToken::class,
36 | \Illuminate\Routing\Middleware\SubstituteBindings::class,
37 | ],
38 |
39 | 'api' => [
40 | 'throttle:60,1',
41 | 'bindings',
42 | ],
43 | ];
44 |
45 | /**
46 | * The application's route middleware.
47 | *
48 | * These middleware may be assigned to groups or used individually.
49 | *
50 | * @var array
51 | */
52 | protected $routeMiddleware = [
53 | 'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
54 | 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
55 | 'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
56 | 'can' => \Illuminate\Auth\Middleware\Authorize::class,
57 | 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
58 | 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
59 | ];
60 | }
61 |
--------------------------------------------------------------------------------
/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 | all();
12 |
13 | // if is not an array , so json_decode()
14 | foreach ($data as $key => $form_items) {
15 |
16 | if(! is_array($form_items)){
17 | $data[$key] = json_decode($form_items);
18 | }else{
19 | $data[$key] = $form_items;
20 | }
21 |
22 | }
23 |
24 | return $data;
25 |
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/app/Http/Requests/VueCrudRequest.php:
--------------------------------------------------------------------------------
1 | 'required|min:3|max:250' ,
28 | 'sub_title' => 'required|min:3|max:250' ,
29 | 'description' => 'required'
30 | ];
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/app/Jobs/Job.php:
--------------------------------------------------------------------------------
1 | action = $action;
24 | $this->vueCrud = $vueCrud;
25 | $this->vueCrudRequest = $vueCrudRequest;
26 | }
27 |
28 | /**
29 | * Execute the job.
30 | *
31 | * @return void
32 | */
33 | public function handle()
34 | {
35 |
36 | $this->vueCrud->title = json_decode($this->vueCrudRequest['title']);
37 | $this->vueCrud->sub_title = json_decode($this->vueCrudRequest['sub_title']);
38 | $this->vueCrud->description = json_decode($this->vueCrudRequest['description']);
39 |
40 | //create
41 | $this->vueCrud->save();
42 |
43 | return $this->action != "create" ? $this->updateTable() : $this->createTable();
44 | }
45 |
46 | /**********************************************************************************
47 | CREATE TABLE
48 | ***********************************************************************************/
49 | protected function createTable(){
50 | // select last post by this user
51 | $last_post = VueCrud::getLastCreated($this->vueCrud->user_id);
52 | return ['id' => $last_post->id , 'title' => $last_post->title , 'sub_title' => $last_post->sub_title];
53 | }
54 |
55 | /**********************************************************************************
56 | UPDATE TABLE
57 | ***********************************************************************************/
58 | protected function updateTable(){
59 |
60 |
61 | return ['index' => json_decode($this->vueCrudRequest['index']) , 'title' => json_decode($this->vueCrudRequest['title']) , 'sub_title' => json_decode($this->vueCrudRequest['sub_title']) ];
62 | }
63 | }
64 |
65 |
--------------------------------------------------------------------------------
/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/User.php:
--------------------------------------------------------------------------------
1 | first();
25 |
26 | }
27 |
28 | }
29 |
--------------------------------------------------------------------------------
/artisan:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env php
2 | make(Illuminate\Contracts\Console\Kernel::class);
32 |
33 | $status = $kernel->handle(
34 | $input = new Symfony\Component\Console\Input\ArgvInput,
35 | new Symfony\Component\Console\Output\ConsoleOutput
36 | );
37 |
38 | /*
39 | |--------------------------------------------------------------------------
40 | | Shutdown The Application
41 | |--------------------------------------------------------------------------
42 | |
43 | | Once Artisan has finished running. We will fire off the shutdown events
44 | | so that any final work may be done by the application before we shut
45 | | down the process. This is the last thing to happen to the request.
46 | |
47 | */
48 |
49 | $kernel->terminate($input, $status);
50 |
51 | exit($status);
52 |
--------------------------------------------------------------------------------
/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/autoload.php:
--------------------------------------------------------------------------------
1 | =5.6.4",
9 | "laravel/framework": "5.4.*",
10 | "laravel/tinker": "~1.0"
11 | },
12 | "require-dev": {
13 | "fzaninotto/faker": "~1.4",
14 | "mockery/mockery": "0.9.*",
15 | "phpunit/phpunit": "~5.7"
16 | },
17 | "autoload": {
18 | "classmap": [
19 | "database"
20 | ],
21 | "psr-4": {
22 | "App\\": "app/"
23 | }
24 | },
25 | "autoload-dev": {
26 | "psr-4": {
27 | "Tests\\": "tests/"
28 | }
29 | },
30 | "scripts": {
31 | "post-root-package-install": [
32 | "php -r \"file_exists('.env') || copy('.env.example', '.env');\""
33 | ],
34 | "post-create-project-cmd": [
35 | "php artisan key:generate"
36 | ],
37 | "post-install-cmd": [
38 | "Illuminate\\Foundation\\ComposerScripts::postInstall",
39 | "php artisan optimize"
40 | ],
41 | "post-update-cmd": [
42 | "Illuminate\\Foundation\\ComposerScripts::postUpdate",
43 | "php artisan optimize"
44 | ]
45 | },
46 | "config": {
47 | "preferred-install": "dist",
48 | "sort-packages": true,
49 | "optimize-autoloader": true
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/config/app.php:
--------------------------------------------------------------------------------
1 | env('APP_NAME', 'Laravel'),
16 |
17 | /*
18 | |--------------------------------------------------------------------------
19 | | Application Environment
20 | |--------------------------------------------------------------------------
21 | |
22 | | This value determines the "environment" your application is currently
23 | | running in. This may determine how you prefer to configure various
24 | | services your application utilizes. Set this in your ".env" file.
25 | |
26 | */
27 |
28 | 'env' => env('APP_ENV', 'production'),
29 |
30 | /*
31 | |--------------------------------------------------------------------------
32 | | Application Debug Mode
33 | |--------------------------------------------------------------------------
34 | |
35 | | When your application is in debug mode, detailed error messages with
36 | | stack traces will be shown on every error that occurs within your
37 | | application. If disabled, a simple generic error page is shown.
38 | |
39 | */
40 |
41 | 'debug' => env('APP_DEBUG', false),
42 |
43 | /*
44 | |--------------------------------------------------------------------------
45 | | Application URL
46 | |--------------------------------------------------------------------------
47 | |
48 | | This URL is used by the console to properly generate URLs when using
49 | | the Artisan command line tool. You should set this to the root of
50 | | your application so that it is used when running Artisan tasks.
51 | |
52 | */
53 |
54 | 'url' => env('APP_URL', 'http://localhost'),
55 |
56 | /*
57 | |--------------------------------------------------------------------------
58 | | Application Timezone
59 | |--------------------------------------------------------------------------
60 | |
61 | | Here you may specify the default timezone for your application, which
62 | | will be used by the PHP date and date-time functions. We have gone
63 | | ahead and set this to a sensible default for you out of the box.
64 | |
65 | */
66 |
67 | 'timezone' => 'UTC',
68 |
69 | /*
70 | |--------------------------------------------------------------------------
71 | | Application Locale Configuration
72 | |--------------------------------------------------------------------------
73 | |
74 | | The application locale determines the default locale that will be used
75 | | by the translation service provider. You are free to set this value
76 | | to any of the locales which will be supported by the application.
77 | |
78 | */
79 |
80 | 'locale' => 'en',
81 |
82 | /*
83 | |--------------------------------------------------------------------------
84 | | Application Fallback Locale
85 | |--------------------------------------------------------------------------
86 | |
87 | | The fallback locale determines the locale to use when the current one
88 | | is not available. You may change the value to correspond to any of
89 | | the language folders that are provided through your application.
90 | |
91 | */
92 |
93 | 'fallback_locale' => 'en',
94 |
95 | /*
96 | |--------------------------------------------------------------------------
97 | | Encryption Key
98 | |--------------------------------------------------------------------------
99 | |
100 | | This key is used by the Illuminate encrypter service and should be set
101 | | to a random, 32 character string, otherwise these encrypted strings
102 | | will not be safe. Please do this before deploying an application!
103 | |
104 | */
105 |
106 | 'key' => env('APP_KEY'),
107 |
108 | 'cipher' => 'AES-256-CBC',
109 |
110 | /*
111 | |--------------------------------------------------------------------------
112 | | Logging Configuration
113 | |--------------------------------------------------------------------------
114 | |
115 | | Here you may configure the log settings for your application. Out of
116 | | the box, Laravel uses the Monolog PHP logging library. This gives
117 | | you a variety of powerful log handlers / formatters to utilize.
118 | |
119 | | Available Settings: "single", "daily", "syslog", "errorlog"
120 | |
121 | */
122 |
123 | 'log' => env('APP_LOG', 'single'),
124 |
125 | 'log_level' => env('APP_LOG_LEVEL', 'debug'),
126 |
127 | /*
128 | |--------------------------------------------------------------------------
129 | | Autoloaded Service Providers
130 | |--------------------------------------------------------------------------
131 | |
132 | | The service providers listed here will be automatically loaded on the
133 | | request to your application. Feel free to add your own services to
134 | | this array to grant expanded functionality to your applications.
135 | |
136 | */
137 |
138 | 'providers' => [
139 |
140 | /*
141 | * Laravel Framework Service Providers...
142 | */
143 | Illuminate\Auth\AuthServiceProvider::class,
144 | Illuminate\Broadcasting\BroadcastServiceProvider::class,
145 | Illuminate\Bus\BusServiceProvider::class,
146 | Illuminate\Cache\CacheServiceProvider::class,
147 | Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class,
148 | Illuminate\Cookie\CookieServiceProvider::class,
149 | Illuminate\Database\DatabaseServiceProvider::class,
150 | Illuminate\Encryption\EncryptionServiceProvider::class,
151 | Illuminate\Filesystem\FilesystemServiceProvider::class,
152 | Illuminate\Foundation\Providers\FoundationServiceProvider::class,
153 | Illuminate\Hashing\HashServiceProvider::class,
154 | Illuminate\Mail\MailServiceProvider::class,
155 | Illuminate\Notifications\NotificationServiceProvider::class,
156 | Illuminate\Pagination\PaginationServiceProvider::class,
157 | Illuminate\Pipeline\PipelineServiceProvider::class,
158 | Illuminate\Queue\QueueServiceProvider::class,
159 | Illuminate\Redis\RedisServiceProvider::class,
160 | Illuminate\Auth\Passwords\PasswordResetServiceProvider::class,
161 | Illuminate\Session\SessionServiceProvider::class,
162 | Illuminate\Translation\TranslationServiceProvider::class,
163 | Illuminate\Validation\ValidationServiceProvider::class,
164 | Illuminate\View\ViewServiceProvider::class,
165 |
166 | /*
167 | * Package Service Providers...
168 | */
169 | Laravel\Tinker\TinkerServiceProvider::class,
170 |
171 | /*
172 | * Application Service Providers...
173 | */
174 | App\Providers\AppServiceProvider::class,
175 | App\Providers\AuthServiceProvider::class,
176 | // App\Providers\BroadcastServiceProvider::class,
177 | App\Providers\EventServiceProvider::class,
178 | App\Providers\RouteServiceProvider::class,
179 |
180 | ],
181 |
182 | /*
183 | |--------------------------------------------------------------------------
184 | | Class Aliases
185 | |--------------------------------------------------------------------------
186 | |
187 | | This array of class aliases will be registered when this application
188 | | is started. However, feel free to register as many as you wish as
189 | | the aliases are "lazy" loaded so they don't hinder performance.
190 | |
191 | */
192 |
193 | 'aliases' => [
194 |
195 | 'App' => Illuminate\Support\Facades\App::class,
196 | 'Artisan' => Illuminate\Support\Facades\Artisan::class,
197 | 'Auth' => Illuminate\Support\Facades\Auth::class,
198 | 'Blade' => Illuminate\Support\Facades\Blade::class,
199 | 'Broadcast' => Illuminate\Support\Facades\Broadcast::class,
200 | 'Bus' => Illuminate\Support\Facades\Bus::class,
201 | 'Cache' => Illuminate\Support\Facades\Cache::class,
202 | 'Config' => Illuminate\Support\Facades\Config::class,
203 | 'Cookie' => Illuminate\Support\Facades\Cookie::class,
204 | 'Crypt' => Illuminate\Support\Facades\Crypt::class,
205 | 'DB' => Illuminate\Support\Facades\DB::class,
206 | 'Eloquent' => Illuminate\Database\Eloquent\Model::class,
207 | 'Event' => Illuminate\Support\Facades\Event::class,
208 | 'File' => Illuminate\Support\Facades\File::class,
209 | 'Gate' => Illuminate\Support\Facades\Gate::class,
210 | 'Hash' => Illuminate\Support\Facades\Hash::class,
211 | 'Lang' => Illuminate\Support\Facades\Lang::class,
212 | 'Log' => Illuminate\Support\Facades\Log::class,
213 | 'Mail' => Illuminate\Support\Facades\Mail::class,
214 | 'Notification' => Illuminate\Support\Facades\Notification::class,
215 | 'Password' => Illuminate\Support\Facades\Password::class,
216 | 'Queue' => Illuminate\Support\Facades\Queue::class,
217 | 'Redirect' => Illuminate\Support\Facades\Redirect::class,
218 | 'Redis' => Illuminate\Support\Facades\Redis::class,
219 | 'Request' => Illuminate\Support\Facades\Request::class,
220 | 'Response' => Illuminate\Support\Facades\Response::class,
221 | 'Route' => Illuminate\Support\Facades\Route::class,
222 | 'Schema' => Illuminate\Support\Facades\Schema::class,
223 | 'Session' => Illuminate\Support\Facades\Session::class,
224 | 'Storage' => Illuminate\Support\Facades\Storage::class,
225 | 'URL' => Illuminate\Support\Facades\URL::class,
226 | 'Validator' => Illuminate\Support\Facades\Validator::class,
227 | 'View' => Illuminate\Support\Facades\View::class,
228 |
229 | ],
230 |
231 | ];
232 |
--------------------------------------------------------------------------------
/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 | //
40 | ],
41 | ],
42 |
43 | 'redis' => [
44 | 'driver' => 'redis',
45 | 'connection' => 'default',
46 | ],
47 |
48 | 'log' => [
49 | 'driver' => 'log',
50 | ],
51 |
52 | 'null' => [
53 | 'driver' => 'null',
54 | ],
55 |
56 | ],
57 |
58 | ];
59 |
--------------------------------------------------------------------------------
/config/cache.php:
--------------------------------------------------------------------------------
1 | env('CACHE_DRIVER', 'file'),
19 |
20 | /*
21 | |--------------------------------------------------------------------------
22 | | Cache Stores
23 | |--------------------------------------------------------------------------
24 | |
25 | | Here you may define all of the cache "stores" for your application as
26 | | well as their drivers. You may even define multiple stores for the
27 | | same cache driver to group types of items stored in your caches.
28 | |
29 | */
30 |
31 | 'stores' => [
32 |
33 | 'apc' => [
34 | 'driver' => 'apc',
35 | ],
36 |
37 | 'array' => [
38 | 'driver' => 'array',
39 | ],
40 |
41 | 'database' => [
42 | 'driver' => 'database',
43 | 'table' => 'cache',
44 | 'connection' => null,
45 | ],
46 |
47 | 'file' => [
48 | 'driver' => 'file',
49 | 'path' => storage_path('framework/cache/data'),
50 | ],
51 |
52 | 'memcached' => [
53 | 'driver' => 'memcached',
54 | 'persistent_id' => env('MEMCACHED_PERSISTENT_ID'),
55 | 'sasl' => [
56 | env('MEMCACHED_USERNAME'),
57 | env('MEMCACHED_PASSWORD'),
58 | ],
59 | 'options' => [
60 | // Memcached::OPT_CONNECT_TIMEOUT => 2000,
61 | ],
62 | 'servers' => [
63 | [
64 | 'host' => env('MEMCACHED_HOST', '127.0.0.1'),
65 | 'port' => env('MEMCACHED_PORT', 11211),
66 | 'weight' => 100,
67 | ],
68 | ],
69 | ],
70 |
71 | 'redis' => [
72 | 'driver' => 'redis',
73 | 'connection' => 'default',
74 | ],
75 |
76 | ],
77 |
78 | /*
79 | |--------------------------------------------------------------------------
80 | | Cache Key Prefix
81 | |--------------------------------------------------------------------------
82 | |
83 | | When utilizing a RAM based store such as APC or Memcached, there might
84 | | be other applications utilizing the same cache. So, we'll specify a
85 | | value to get prefixed to all our keys so we can avoid collisions.
86 | |
87 | */
88 |
89 | 'prefix' => 'laravel',
90 |
91 | ];
92 |
--------------------------------------------------------------------------------
/config/database.php:
--------------------------------------------------------------------------------
1 | env('DB_CONNECTION', 'mysql'),
17 |
18 | /*
19 | |--------------------------------------------------------------------------
20 | | Database Connections
21 | |--------------------------------------------------------------------------
22 | |
23 | | Here are each of the database connections setup for your application.
24 | | Of course, examples of configuring each database platform that is
25 | | supported by Laravel is shown below to make development simple.
26 | |
27 | |
28 | | All database work in Laravel is done through the PHP PDO facilities
29 | | so make sure you have the driver for your particular database of
30 | | choice installed on your machine before you begin development.
31 | |
32 | */
33 |
34 | 'connections' => [
35 |
36 | 'sqlite' => [
37 | 'driver' => 'sqlite',
38 | 'database' => env('DB_DATABASE', database_path('database.sqlite')),
39 | 'prefix' => '',
40 | ],
41 |
42 | 'mysql' => [
43 | 'driver' => 'mysql',
44 | 'host' => env('DB_HOST', '127.0.0.1'),
45 | 'port' => env('DB_PORT', '3306'),
46 | 'database' => env('DB_DATABASE', 'forge'),
47 | 'username' => env('DB_USERNAME', 'forge'),
48 | 'password' => env('DB_PASSWORD', ''),
49 | 'unix_socket' => env('DB_SOCKET', ''),
50 | 'charset' => 'utf8',
51 | 'collation' => 'utf8_unicode_ci',
52 | 'prefix' => '',
53 | 'strict' => false,
54 | 'engine' => null,
55 | ],
56 |
57 | 'pgsql' => [
58 | 'driver' => 'pgsql',
59 | 'host' => env('DB_HOST', '127.0.0.1'),
60 | 'port' => env('DB_PORT', '5432'),
61 | 'database' => env('DB_DATABASE', 'forge'),
62 | 'username' => env('DB_USERNAME', 'forge'),
63 | 'password' => env('DB_PASSWORD', ''),
64 | 'charset' => 'utf8',
65 | 'prefix' => '',
66 | 'schema' => 'public',
67 | 'sslmode' => 'prefer',
68 | ],
69 |
70 | ],
71 |
72 | /*
73 | |--------------------------------------------------------------------------
74 | | Migration Repository Table
75 | |--------------------------------------------------------------------------
76 | |
77 | | This table keeps track of all the migrations that have already run for
78 | | your application. Using this information, we can determine which of
79 | | the migrations on disk haven't actually been run in the database.
80 | |
81 | */
82 |
83 | 'migrations' => 'migrations',
84 |
85 | /*
86 | |--------------------------------------------------------------------------
87 | | Redis Databases
88 | |--------------------------------------------------------------------------
89 | |
90 | | Redis is an open source, fast, and advanced key-value store that also
91 | | provides a richer set of commands than a typical key-value systems
92 | | such as APC or Memcached. Laravel makes it easy to dig right in.
93 | |
94 | */
95 |
96 | 'redis' => [
97 |
98 | 'client' => 'predis',
99 |
100 | 'default' => [
101 | 'host' => env('REDIS_HOST', '127.0.0.1'),
102 | 'password' => env('REDIS_PASSWORD', null),
103 | 'port' => env('REDIS_PORT', 6379),
104 | 'database' => 0,
105 | ],
106 |
107 | ],
108 |
109 | ];
110 |
--------------------------------------------------------------------------------
/config/filesystems.php:
--------------------------------------------------------------------------------
1 | 'local',
17 |
18 | /*
19 | |--------------------------------------------------------------------------
20 | | Default Cloud Filesystem Disk
21 | |--------------------------------------------------------------------------
22 | |
23 | | Many applications store files both locally and in the cloud. For this
24 | | reason, you may specify a default "cloud" driver here. This driver
25 | | will be bound as the Cloud disk implementation in the container.
26 | |
27 | */
28 |
29 | 'cloud' => 's3',
30 |
31 | /*
32 | |--------------------------------------------------------------------------
33 | | Filesystem Disks
34 | |--------------------------------------------------------------------------
35 | |
36 | | Here you may configure as many filesystem "disks" as you wish, and you
37 | | may even configure multiple disks of the same driver. Defaults have
38 | | been setup for each driver as an example of the required options.
39 | |
40 | | Supported Drivers: "local", "ftp", "s3", "rackspace"
41 | |
42 | */
43 |
44 | 'disks' => [
45 |
46 | 'local' => [
47 | 'driver' => 'local',
48 | 'root' => storage_path('app'),
49 | ],
50 |
51 | 'public' => [
52 | 'driver' => 'local',
53 | 'root' => storage_path('app/public'),
54 | 'url' => env('APP_URL').'/storage',
55 | 'visibility' => 'public',
56 | ],
57 |
58 | 's3' => [
59 | 'driver' => 's3',
60 | 'key' => env('AWS_KEY'),
61 | 'secret' => env('AWS_SECRET'),
62 | 'region' => env('AWS_REGION'),
63 | 'bucket' => env('AWS_BUCKET'),
64 | ],
65 |
66 | ],
67 |
68 | ];
69 |
--------------------------------------------------------------------------------
/config/mail.php:
--------------------------------------------------------------------------------
1 | env('MAIL_DRIVER', 'smtp'),
20 |
21 | /*
22 | |--------------------------------------------------------------------------
23 | | SMTP Host Address
24 | |--------------------------------------------------------------------------
25 | |
26 | | Here you may provide the host address of the SMTP server used by your
27 | | applications. A default option is provided that is compatible with
28 | | the Mailgun mail service which will provide reliable deliveries.
29 | |
30 | */
31 |
32 | 'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
33 |
34 | /*
35 | |--------------------------------------------------------------------------
36 | | SMTP Host Port
37 | |--------------------------------------------------------------------------
38 | |
39 | | This is the SMTP port used by your application to deliver e-mails to
40 | | users of the application. Like the host we have set this value to
41 | | stay compatible with the Mailgun e-mail application by default.
42 | |
43 | */
44 |
45 | 'port' => env('MAIL_PORT', 587),
46 |
47 | /*
48 | |--------------------------------------------------------------------------
49 | | Global "From" Address
50 | |--------------------------------------------------------------------------
51 | |
52 | | You may wish for all e-mails sent by your application to be sent from
53 | | the same address. Here, you may specify a name and address that is
54 | | used globally for all e-mails that are sent by your application.
55 | |
56 | */
57 |
58 | 'from' => [
59 | 'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'),
60 | 'name' => env('MAIL_FROM_NAME', 'Example'),
61 | ],
62 |
63 | /*
64 | |--------------------------------------------------------------------------
65 | | E-Mail Encryption Protocol
66 | |--------------------------------------------------------------------------
67 | |
68 | | Here you may specify the encryption protocol that should be used when
69 | | the application send e-mail messages. A sensible default using the
70 | | transport layer security protocol should provide great security.
71 | |
72 | */
73 |
74 | 'encryption' => env('MAIL_ENCRYPTION', 'tls'),
75 |
76 | /*
77 | |--------------------------------------------------------------------------
78 | | SMTP Server Username
79 | |--------------------------------------------------------------------------
80 | |
81 | | If your SMTP server requires a username for authentication, you should
82 | | set it here. This will get used to authenticate with your server on
83 | | connection. You may also set the "password" value below this one.
84 | |
85 | */
86 |
87 | 'username' => env('MAIL_USERNAME'),
88 |
89 | 'password' => env('MAIL_PASSWORD'),
90 |
91 | /*
92 | |--------------------------------------------------------------------------
93 | | Sendmail System Path
94 | |--------------------------------------------------------------------------
95 | |
96 | | When using the "sendmail" driver to send e-mails, we will need to know
97 | | the path to where Sendmail lives on this server. A default path has
98 | | been provided here, which will work well on most of your systems.
99 | |
100 | */
101 |
102 | 'sendmail' => '/usr/sbin/sendmail -bs',
103 |
104 | /*
105 | |--------------------------------------------------------------------------
106 | | Markdown Mail Settings
107 | |--------------------------------------------------------------------------
108 | |
109 | | If you are using Markdown based email rendering, you may configure your
110 | | theme and component paths here, allowing you to customize the design
111 | | of the emails. Or, you may simply stick with the Laravel defaults!
112 | |
113 | */
114 |
115 | 'markdown' => [
116 | 'theme' => 'default',
117 |
118 | 'paths' => [
119 | resource_path('views/vendor/mail'),
120 | ],
121 | ],
122 |
123 | ];
124 |
--------------------------------------------------------------------------------
/config/queue.php:
--------------------------------------------------------------------------------
1 | env('QUEUE_DRIVER', 'sync'),
19 |
20 | /*
21 | |--------------------------------------------------------------------------
22 | | Queue Connections
23 | |--------------------------------------------------------------------------
24 | |
25 | | Here you may configure the connection information for each server that
26 | | is used by your application. A default configuration has been added
27 | | for each back-end shipped with Laravel. You are free to add more.
28 | |
29 | */
30 |
31 | 'connections' => [
32 |
33 | 'sync' => [
34 | 'driver' => 'sync',
35 | ],
36 |
37 | 'database' => [
38 | 'driver' => 'database',
39 | 'table' => 'jobs',
40 | 'queue' => 'default',
41 | 'retry_after' => 90,
42 | ],
43 |
44 | 'beanstalkd' => [
45 | 'driver' => 'beanstalkd',
46 | 'host' => 'localhost',
47 | 'queue' => 'default',
48 | 'retry_after' => 90,
49 | ],
50 |
51 | 'sqs' => [
52 | 'driver' => 'sqs',
53 | 'key' => 'your-public-key',
54 | 'secret' => 'your-secret-key',
55 | 'prefix' => 'https://sqs.us-east-1.amazonaws.com/your-account-id',
56 | 'queue' => 'your-queue-name',
57 | 'region' => 'us-east-1',
58 | ],
59 |
60 | 'redis' => [
61 | 'driver' => 'redis',
62 | 'connection' => 'default',
63 | 'queue' => 'default',
64 | 'retry_after' => 90,
65 | ],
66 |
67 | ],
68 |
69 | /*
70 | |--------------------------------------------------------------------------
71 | | Failed Queue Jobs
72 | |--------------------------------------------------------------------------
73 | |
74 | | These options configure the behavior of failed queue job logging so you
75 | | can control which database and table are used to store the jobs that
76 | | have failed. You may change them to any database / table you wish.
77 | |
78 | */
79 |
80 | 'failed' => [
81 | 'database' => env('DB_CONNECTION', 'mysql'),
82 | 'table' => 'failed_jobs',
83 | ],
84 |
85 | ];
86 |
--------------------------------------------------------------------------------
/config/services.php:
--------------------------------------------------------------------------------
1 | [
18 | 'domain' => env('MAILGUN_DOMAIN'),
19 | 'secret' => env('MAILGUN_SECRET'),
20 | ],
21 |
22 | 'ses' => [
23 | 'key' => env('SES_KEY'),
24 | 'secret' => env('SES_SECRET'),
25 | 'region' => 'us-east-1',
26 | ],
27 |
28 | 'sparkpost' => [
29 | 'secret' => env('SPARKPOST_SECRET'),
30 | ],
31 |
32 | 'stripe' => [
33 | 'model' => App\User::class,
34 | 'key' => env('STRIPE_KEY'),
35 | 'secret' => env('STRIPE_SECRET'),
36 | ],
37 |
38 | ];
39 |
--------------------------------------------------------------------------------
/config/session.php:
--------------------------------------------------------------------------------
1 | env('SESSION_DRIVER', 'file'),
20 |
21 | /*
22 | |--------------------------------------------------------------------------
23 | | Session Lifetime
24 | |--------------------------------------------------------------------------
25 | |
26 | | Here you may specify the number of minutes that you wish the session
27 | | to be allowed to remain idle before it expires. If you want them
28 | | to immediately expire on the browser closing, set that option.
29 | |
30 | */
31 |
32 | 'lifetime' => 120,
33 |
34 | 'expire_on_close' => false,
35 |
36 | /*
37 | |--------------------------------------------------------------------------
38 | | Session Encryption
39 | |--------------------------------------------------------------------------
40 | |
41 | | This option allows you to easily specify that all of your session data
42 | | should be encrypted before it is stored. All encryption will be run
43 | | automatically by Laravel and you can use the Session like normal.
44 | |
45 | */
46 |
47 | 'encrypt' => false,
48 |
49 | /*
50 | |--------------------------------------------------------------------------
51 | | Session File Location
52 | |--------------------------------------------------------------------------
53 | |
54 | | When using the native session driver, we need a location where session
55 | | files may be stored. A default has been set for you but a different
56 | | location may be specified. This is only needed for file sessions.
57 | |
58 | */
59 |
60 | 'files' => storage_path('framework/sessions'),
61 |
62 | /*
63 | |--------------------------------------------------------------------------
64 | | Session Database Connection
65 | |--------------------------------------------------------------------------
66 | |
67 | | When using the "database" or "redis" session drivers, you may specify a
68 | | connection that should be used to manage these sessions. This should
69 | | correspond to a connection in your database configuration options.
70 | |
71 | */
72 |
73 | 'connection' => null,
74 |
75 | /*
76 | |--------------------------------------------------------------------------
77 | | Session Database Table
78 | |--------------------------------------------------------------------------
79 | |
80 | | When using the "database" session driver, you may specify the table we
81 | | should use to manage the sessions. Of course, a sensible default is
82 | | provided for you; however, you are free to change this as needed.
83 | |
84 | */
85 |
86 | 'table' => 'sessions',
87 |
88 | /*
89 | |--------------------------------------------------------------------------
90 | | Session Cache Store
91 | |--------------------------------------------------------------------------
92 | |
93 | | When using the "apc" or "memcached" session drivers, you may specify a
94 | | cache store that should be used for these sessions. This value must
95 | | correspond with one of the application's configured cache stores.
96 | |
97 | */
98 |
99 | 'store' => null,
100 |
101 | /*
102 | |--------------------------------------------------------------------------
103 | | Session Sweeping Lottery
104 | |--------------------------------------------------------------------------
105 | |
106 | | Some session drivers must manually sweep their storage location to get
107 | | rid of old sessions from storage. Here are the chances that it will
108 | | happen on a given request. By default, the odds are 2 out of 100.
109 | |
110 | */
111 |
112 | 'lottery' => [2, 100],
113 |
114 | /*
115 | |--------------------------------------------------------------------------
116 | | Session Cookie Name
117 | |--------------------------------------------------------------------------
118 | |
119 | | Here you may change the name of the cookie used to identify a session
120 | | instance by ID. The name specified here will get used every time a
121 | | new session cookie is created by the framework for every driver.
122 | |
123 | */
124 |
125 | 'cookie' => 'laravel_session',
126 |
127 | /*
128 | |--------------------------------------------------------------------------
129 | | Session Cookie Path
130 | |--------------------------------------------------------------------------
131 | |
132 | | The session cookie path determines the path for which the cookie will
133 | | be regarded as available. Typically, this will be the root path of
134 | | your application but you are free to change this when necessary.
135 | |
136 | */
137 |
138 | 'path' => '/',
139 |
140 | /*
141 | |--------------------------------------------------------------------------
142 | | Session Cookie Domain
143 | |--------------------------------------------------------------------------
144 | |
145 | | Here you may change the domain of the cookie used to identify a session
146 | | in your application. This will determine which domains the cookie is
147 | | available to in your application. A sensible default has been set.
148 | |
149 | */
150 |
151 | 'domain' => env('SESSION_DOMAIN', null),
152 |
153 | /*
154 | |--------------------------------------------------------------------------
155 | | HTTPS Only Cookies
156 | |--------------------------------------------------------------------------
157 | |
158 | | By setting this option to true, session cookies will only be sent back
159 | | to the server if the browser has a HTTPS connection. This will keep
160 | | the cookie from being sent to you if it can not be done securely.
161 | |
162 | */
163 |
164 | 'secure' => env('SESSION_SECURE_COOKIE', false),
165 |
166 | /*
167 | |--------------------------------------------------------------------------
168 | | HTTP Access Only
169 | |--------------------------------------------------------------------------
170 | |
171 | | Setting this value to true will prevent JavaScript from accessing the
172 | | value of the cookie and the cookie will only be accessible through
173 | | the HTTP protocol. You are free to modify this option if needed.
174 | |
175 | */
176 |
177 | 'http_only' => true,
178 |
179 | ];
180 |
--------------------------------------------------------------------------------
/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/ModelFactory.php:
--------------------------------------------------------------------------------
1 | define(App\User::class, function (Faker\Generator $faker) {
16 | static $password;
17 |
18 | return [
19 | 'name' => $faker->name,
20 | 'email' => $faker->unique()->safeEmail,
21 | 'password' => $password ?: $password = bcrypt('secret'),
22 | 'remember_token' => str_random(10),
23 | ];
24 | });
25 |
--------------------------------------------------------------------------------
/database/migrations/2017_04_07_144522_vue_crud.php:
--------------------------------------------------------------------------------
1 | increments('id');
18 |
19 | $table->string('title', 255)->unique();
20 | $table->string('sub_title', 255);
21 |
22 | /* google key word */
23 | $table->text('description');
24 |
25 | $table->timestamps();
26 | });
27 | }
28 |
29 | /**
30 | * Reverse the migrations.
31 | *
32 | * @return void
33 | */
34 | public function down()
35 | {
36 | Schema::dropIfExists('vue_crud');
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/database/seeds/DatabaseSeeder.php:
--------------------------------------------------------------------------------
1 | call(UsersTableSeeder::class);
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "private": true,
3 | "scripts": {
4 | "dev": "npm run development",
5 | "development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
6 | "watch": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
7 | "watch-poll": "npm run watch -- --watch-poll",
8 | "hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js",
9 | "prod": "npm run production",
10 | "production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
11 | },
12 | "devDependencies": {
13 | "axios": "^0.15.3",
14 | "bootstrap-sass": "^3.3.7",
15 | "cross-env": "^3.2.3",
16 | "jquery": "^3.1.1",
17 | "laravel-mix": "0.*",
18 | "lodash": "^4.17.4",
19 | "vue": "^2.1.10"
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/phpunit.xml:
--------------------------------------------------------------------------------
1 |
2 |
11 |
12 |
13 | ./tests/Feature
14 |
15 |
16 |
17 | ./tests/Unit
18 |
19 |
20 |
21 |
22 | ./app
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/public/.htaccess:
--------------------------------------------------------------------------------
1 |
2 |
3 | Options -MultiViews
4 |
5 |
6 | RewriteEngine On
7 |
8 | # Redirect Trailing Slashes If Not A Folder...
9 | RewriteCond %{REQUEST_FILENAME} !-d
10 | RewriteRule ^(.*)/$ /$1 [L,R=301]
11 |
12 | # Handle Front Controller...
13 | RewriteCond %{REQUEST_FILENAME} !-d
14 | RewriteCond %{REQUEST_FILENAME} !-f
15 | RewriteRule ^ index.php [L]
16 |
17 | # Handle Authorization Header
18 | RewriteCond %{HTTP:Authorization} .
19 | RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
20 |
21 |
--------------------------------------------------------------------------------
/public/assets/css/emptypage.css:
--------------------------------------------------------------------------------
1 | /* General overwrite */
2 | body {
3 | color: #66615b;
4 | font-size: 14px;
5 | font-family: 'Muli', Arial, sans-serif;
6 | }
7 | body .wrapper {
8 | min-height: 100vh;
9 | position: relative;
10 | }
11 |
12 | html, body{margin:0;padding:0;}
13 |
14 | h3.title_v_1 { color:#3ba6ca;size:17px;}
15 |
16 | h1, .h1, h2, .h2, h3, .h3, h4, .h4, h5, .h5, h6, .h6, p, .navbar, .brand, a, .td-name, td {
17 | -moz-osx-font-smoothing: grayscale;
18 | -webkit-font-smoothing: antialiased;
19 | font-family: 'Muli', "Helvetica", Arial, sans-serif;
20 | }
21 |
22 | h1, .h1, h2, .h2, h3, .h3, h4, .h4 {
23 | font-weight: 400;
24 | margin: 30px 0 15px;
25 | }
26 |
27 | h1, .h1 {
28 | font-size: 3.2em;
29 | }
30 |
31 | h2, .h2 {
32 | font-size: 2.6em;
33 | }
34 |
35 | h3, .h3 {
36 | font-size: 1.825em;
37 | line-height: 1.4;
38 | margin: 20px 0 10px;
39 | }
40 |
41 | h4, .h4 {
42 | font-size: 1.5em;
43 | font-weight: 600;
44 | line-height: 1.2em;
45 | }
46 |
47 | h5, .h5 {
48 | font-size: 1.25em;
49 | font-weight: 400;
50 | line-height: 1.4em;
51 | margin-bottom: 15px;
52 | }
53 |
54 | h6, .h6 {
55 | font-size: 0.9em;
56 | font-weight: 600;
57 | text-transform: uppercase;
58 | }
59 |
60 | p {
61 | font-size: 14px;
62 | line-height: 1.2em;
63 | }
64 |
65 | h1 small, h2 small, h3 small, h4 small, h5 small, h6 small, .h1 small, .h2 small, .h3 small, .h4 small, .h5 small, .h6 small, h1 .small, h2 .small, h3 .small, h4 .small, h5 .small, h6 .small, .h1 .small, .h2 .small, .h3 .small, .h4 .small, .h5 .small, .h6 .small {
66 | color: #9A9A9A;
67 | font-weight: 300;
68 | line-height: 1.4em;
69 | }
70 |
71 | h1 small, h2 small, h3 small, h1 .small, h2 .small, h3 .small {
72 | font-size: 60%;
73 | }
74 |
75 | .title-uppercase {
76 | text-transform: uppercase;
77 | }
78 |
79 | blockquote {
80 | font-style: italic;
81 | }
82 |
83 | blockquote small {
84 | font-style: normal;
85 | }
86 |
87 | .text-muted {
88 | color: #DDDDDD;
89 | }
90 |
91 | .text-primary, .text-primary:hover {
92 | color: #427C89;
93 | }
94 |
95 | .text-info, .text-info:hover {
96 | color: #3091B2;
97 | }
98 |
99 | .text-success, .text-success:hover {
100 | color: #42A084;
101 | }
102 |
103 | .text-warning, .text-warning:hover {
104 | color: #BB992F;
105 | }
106 |
107 | .text-danger, .text-danger:hover {
108 | color: #B33C12;
109 | }
110 |
111 | .glyphicon {
112 | line-height: 1;
113 | }
114 |
115 | strong {
116 | color: #403D39;
117 | }
118 |
119 | .icon-primary {
120 | color: #7A9E9F;
121 | }
122 |
123 | .icon-info {
124 | color: #68B3C8;
125 | }
126 |
127 | .icon-success {
128 | color: #7AC29A;
129 | }
130 |
131 | .icon-warning {
132 | color: #F3BB45;
133 | }
134 |
135 | .icon-danger {
136 | color: #EB5E28;
137 | }
138 |
139 | .chart-legend .text-primary, .chart-legend .text-primary:hover {
140 | color: #7A9E9F;
141 | }
142 | .chart-legend .text-info, .chart-legend .text-info:hover {
143 | color: #68B3C8;
144 | }
145 | .chart-legend .text-success, .chart-legend .text-success:hover {
146 | color: #7AC29A;
147 | }
148 | .chart-legend .text-warning, .chart-legend .text-warning:hover {
149 | color: #F3BB45;
150 | }
151 | .chart-legend .text-danger, .chart-legend .text-danger:hover {
152 | color: #EB5E28;
153 | }
154 |
155 |
156 | a {
157 | color: #68B3C8;
158 | }
159 | a:hover, a:focus {
160 | color: #3091B2;
161 | text-decoration: none;
162 | }
163 |
164 | a:focus, a:active,
165 | button::-moz-focus-inner,
166 | input::-moz-focus-inner,
167 | select::-moz-focus-inner,
168 | input[type="file"] > input[type="button"]::-moz-focus-inner {
169 | outline: 0 !important;
170 | }
171 |
172 | .ui-slider-handle:focus,
173 | .navbar-toggle,
174 | input:focus,
175 | button:focus {
176 | outline: 0 !important;
177 | }
178 |
--------------------------------------------------------------------------------
/public/assets/css/hint.css:
--------------------------------------------------------------------------------
1 | /*! Hint.css - v2.3.1 - 2016-06-05
2 | * http://kushagragour.in/lab/hint/
3 | * Copyright (c) 2016 Kushagra Gour; Licensed */
4 |
5 | /*-------------------------------------* HINT.css - A CSS tooltip library
6 | \*-------------------------------------*/
7 | /**
8 | * HINT.css is a tooltip library made in pure CSS.
9 | *
10 | * Source: https://github.com/chinchang/hint.css
11 | * Demo: http://kushagragour.in/lab/hint/
12 | *
13 | * Release under The MIT License
14 | *
15 | */
16 | /**
17 | * source: hint-core.scss
18 | *
19 | * Defines the basic styling for the tooltip.
20 | * Each tooltip is made of 2 parts:
21 | * 1) body (:after)
22 | * 2) arrow (:before)
23 | *
24 | * Classes added:
25 | * 1) hint
26 | */
27 | [class*="hint--"] {
28 | position: relative;
29 | display: inline-block;
30 | /**
31 | * tooltip arrow
32 | */
33 | /**
34 | * tooltip body
35 | */ }
36 | [class*="hint--"]:before, [class*="hint--"]:after {
37 | position: absolute;
38 | -webkit-transform: translate3d(0, 0, 0);
39 | -moz-transform: translate3d(0, 0, 0);
40 | transform: translate3d(0, 0, 0);
41 | visibility: hidden;
42 | opacity: 0;
43 | z-index: 1000000;
44 | pointer-events: none;
45 | -webkit-transition: 0.3s ease;
46 | -moz-transition: 0.3s ease;
47 | transition: 0.3s ease;
48 | -webkit-transition-delay: 0ms;
49 | -moz-transition-delay: 0ms;
50 | transition-delay: 0ms; }
51 | [class*="hint--"]:hover:before, [class*="hint--"]:hover:after {
52 | visibility: visible;
53 | opacity: 1; }
54 | [class*="hint--"]:hover:before, [class*="hint--"]:hover:after {
55 | -webkit-transition-delay: 100ms;
56 | -moz-transition-delay: 100ms;
57 | transition-delay: 100ms; }
58 | [class*="hint--"]:before {
59 | content: '';
60 | position: absolute;
61 | background: transparent;
62 | border: 6px solid transparent;
63 | z-index: 1000001; }
64 | [class*="hint--"]:after {
65 | background: #383838;
66 | color: white;
67 | padding: 8px 10px;
68 | font-size: 12px;
69 | font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
70 | line-height: 12px;
71 | white-space: nowrap; }
72 | [class*="hint--"][aria-label]:after {
73 | content: attr(aria-label); }
74 | [class*="hint--"][data-hint]:after {
75 | content: attr(data-hint); }
76 |
77 | [aria-label='']:before, [aria-label='']:after,
78 | [data-hint='']:before,
79 | [data-hint='']:after {
80 | display: none !important; }
81 |
82 | /**
83 | * source: hint-position.scss
84 | *
85 | * Defines the positoning logic for the tooltips.
86 | *
87 | * Classes added:
88 | * 1) hint--top
89 | * 2) hint--bottom
90 | * 3) hint--left
91 | * 4) hint--right
92 | */
93 | /**
94 | * set default color for tooltip arrows
95 | */
96 | .hint--top-left:before {
97 | border-top-color: #383838; }
98 |
99 | .hint--top-right:before {
100 | border-top-color: #383838; }
101 |
102 | .hint--top:before {
103 | border-top-color: #383838; }
104 |
105 | .hint--bottom-left:before {
106 | border-bottom-color: #383838; }
107 |
108 | .hint--bottom-right:before {
109 | border-bottom-color: #383838; }
110 |
111 | .hint--bottom:before {
112 | border-bottom-color: #383838; }
113 |
114 | .hint--left:before {
115 | border-left-color: #383838; }
116 |
117 | .hint--right:before {
118 | border-right-color: #383838; }
119 |
120 | /**
121 | * top tooltip
122 | */
123 | .hint--top:before {
124 | margin-bottom: -11px; }
125 |
126 | .hint--top:before, .hint--top:after {
127 | bottom: 100%;
128 | left: 50%; }
129 |
130 | .hint--top:before {
131 | left: calc(50% - 6px); }
132 |
133 | .hint--top:after {
134 | -webkit-transform: translateX(-50%);
135 | -moz-transform: translateX(-50%);
136 | transform: translateX(-50%); }
137 |
138 | .hint--top:hover:before {
139 | -webkit-transform: translateY(-8px);
140 | -moz-transform: translateY(-8px);
141 | transform: translateY(-8px); }
142 |
143 | .hint--top:hover:after {
144 | -webkit-transform: translateX(-50%) translateY(-8px);
145 | -moz-transform: translateX(-50%) translateY(-8px);
146 | transform: translateX(-50%) translateY(-8px); }
147 |
148 | /**
149 | * bottom tooltip
150 | */
151 | .hint--bottom:before {
152 | margin-top: -11px; }
153 |
154 | .hint--bottom:before, .hint--bottom:after {
155 | top: 100%;
156 | left: 50%; }
157 |
158 | .hint--bottom:before {
159 | left: calc(50% - 6px); }
160 |
161 | .hint--bottom:after {
162 | -webkit-transform: translateX(-50%);
163 | -moz-transform: translateX(-50%);
164 | transform: translateX(-50%); }
165 |
166 | .hint--bottom:hover:before {
167 | -webkit-transform: translateY(8px);
168 | -moz-transform: translateY(8px);
169 | transform: translateY(8px); }
170 |
171 | .hint--bottom:hover:after {
172 | -webkit-transform: translateX(-50%) translateY(8px);
173 | -moz-transform: translateX(-50%) translateY(8px);
174 | transform: translateX(-50%) translateY(8px); }
175 |
176 | /**
177 | * right tooltip
178 | */
179 | .hint--right:before {
180 | margin-left: -11px;
181 | margin-bottom: -6px; }
182 |
183 | .hint--right:after {
184 | margin-bottom: -14px; }
185 |
186 | .hint--right:before, .hint--right:after {
187 | left: 100%;
188 | bottom: 50%; }
189 |
190 | .hint--right:hover:before {
191 | -webkit-transform: translateX(8px);
192 | -moz-transform: translateX(8px);
193 | transform: translateX(8px); }
194 |
195 | .hint--right:hover:after {
196 | -webkit-transform: translateX(8px);
197 | -moz-transform: translateX(8px);
198 | transform: translateX(8px); }
199 |
200 | /**
201 | * left tooltip
202 | */
203 | .hint--left:before {
204 | margin-right: -11px;
205 | margin-bottom: -6px; }
206 |
207 | .hint--left:after {
208 | margin-bottom: -14px; }
209 |
210 | .hint--left:before, .hint--left:after {
211 | right: 100%;
212 | bottom: 50%; }
213 |
214 | .hint--left:hover:before {
215 | -webkit-transform: translateX(-8px);
216 | -moz-transform: translateX(-8px);
217 | transform: translateX(-8px); }
218 |
219 | .hint--left:hover:after {
220 | -webkit-transform: translateX(-8px);
221 | -moz-transform: translateX(-8px);
222 | transform: translateX(-8px); }
223 |
224 | /**
225 | * top-left tooltip
226 | */
227 | .hint--top-left:before {
228 | margin-bottom: -11px; }
229 |
230 | .hint--top-left:before, .hint--top-left:after {
231 | bottom: 100%;
232 | left: 50%; }
233 |
234 | .hint--top-left:before {
235 | left: calc(50% - 6px); }
236 |
237 | .hint--top-left:after {
238 | -webkit-transform: translateX(-100%);
239 | -moz-transform: translateX(-100%);
240 | transform: translateX(-100%); }
241 |
242 | .hint--top-left:after {
243 | margin-left: 12px; }
244 |
245 | .hint--top-left:hover:before {
246 | -webkit-transform: translateY(-8px);
247 | -moz-transform: translateY(-8px);
248 | transform: translateY(-8px); }
249 |
250 | .hint--top-left:hover:after {
251 | -webkit-transform: translateX(-100%) translateY(-8px);
252 | -moz-transform: translateX(-100%) translateY(-8px);
253 | transform: translateX(-100%) translateY(-8px); }
254 |
255 | /**
256 | * top-right tooltip
257 | */
258 | .hint--top-right:before {
259 | margin-bottom: -11px; }
260 |
261 | .hint--top-right:before, .hint--top-right:after {
262 | bottom: 100%;
263 | left: 50%; }
264 |
265 | .hint--top-right:before {
266 | left: calc(50% - 6px); }
267 |
268 | .hint--top-right:after {
269 | -webkit-transform: translateX(0);
270 | -moz-transform: translateX(0);
271 | transform: translateX(0); }
272 |
273 | .hint--top-right:after {
274 | margin-left: -12px; }
275 |
276 | .hint--top-right:hover:before {
277 | -webkit-transform: translateY(-8px);
278 | -moz-transform: translateY(-8px);
279 | transform: translateY(-8px); }
280 |
281 | .hint--top-right:hover:after {
282 | -webkit-transform: translateY(-8px);
283 | -moz-transform: translateY(-8px);
284 | transform: translateY(-8px); }
285 |
286 | /**
287 | * bottom-left tooltip
288 | */
289 | .hint--bottom-left:before {
290 | margin-top: -11px; }
291 |
292 | .hint--bottom-left:before, .hint--bottom-left:after {
293 | top: 100%;
294 | left: 50%; }
295 |
296 | .hint--bottom-left:before {
297 | left: calc(50% - 6px); }
298 |
299 | .hint--bottom-left:after {
300 | -webkit-transform: translateX(-100%);
301 | -moz-transform: translateX(-100%);
302 | transform: translateX(-100%); }
303 |
304 | .hint--bottom-left:after {
305 | margin-left: 12px; }
306 |
307 | .hint--bottom-left:hover:before {
308 | -webkit-transform: translateY(8px);
309 | -moz-transform: translateY(8px);
310 | transform: translateY(8px); }
311 |
312 | .hint--bottom-left:hover:after {
313 | -webkit-transform: translateX(-100%) translateY(8px);
314 | -moz-transform: translateX(-100%) translateY(8px);
315 | transform: translateX(-100%) translateY(8px); }
316 |
317 | /**
318 | * bottom-right tooltip
319 | */
320 | .hint--bottom-right:before {
321 | margin-top: -11px; }
322 |
323 | .hint--bottom-right:before, .hint--bottom-right:after {
324 | top: 100%;
325 | left: 50%; }
326 |
327 | .hint--bottom-right:before {
328 | left: calc(50% - 6px); }
329 |
330 | .hint--bottom-right:after {
331 | -webkit-transform: translateX(0);
332 | -moz-transform: translateX(0);
333 | transform: translateX(0); }
334 |
335 | .hint--bottom-right:after {
336 | margin-left: -12px; }
337 |
338 | .hint--bottom-right:hover:before {
339 | -webkit-transform: translateY(8px);
340 | -moz-transform: translateY(8px);
341 | transform: translateY(8px); }
342 |
343 | .hint--bottom-right:hover:after {
344 | -webkit-transform: translateY(8px);
345 | -moz-transform: translateY(8px);
346 | transform: translateY(8px); }
347 |
348 | /**
349 | * source: hint-sizes.scss
350 | *
351 | * Defines width restricted tooltips that can span
352 | * across multiple lines.
353 | *
354 | * Classes added:
355 | * 1) hint--small
356 | * 2) hint--medium
357 | * 3) hint--large
358 | *
359 | */
360 | .hint--small:after,
361 | .hint--medium:after,
362 | .hint--large:after {
363 | white-space: normal;
364 | line-height: 1.4em; }
365 |
366 | .hint--small:after {
367 | width: 80px; }
368 |
369 | .hint--medium:after {
370 | width: 150px; }
371 |
372 | .hint--large:after {
373 | width: 300px; }
374 |
375 | /**
376 | * source: hint-theme.scss
377 | *
378 | * Defines basic theme for tooltips.
379 | *
380 | */
381 | [class*="hint--"] {
382 | /**
383 | * tooltip body
384 | */ }
385 | [class*="hint--"]:after {
386 | text-shadow: 0 -1px 0px black;
387 | box-shadow: 4px 4px 8px rgba(0, 0, 0, 0.3); }
388 |
389 | /**
390 | * source: hint-color-types.scss
391 | *
392 | * Contains tooltips of various types based on color differences.
393 | *
394 | * Classes added:
395 | * 1) hint--error
396 | * 2) hint--warning
397 | * 3) hint--info
398 | * 4) hint--success
399 | *
400 | */
401 | /**
402 | * Error
403 | */
404 | .hint--error:after {
405 | background-color: #b34e4d;
406 | text-shadow: 0 -1px 0px #592726; }
407 |
408 | .hint--error.hint--top-left:before {
409 | border-top-color: #b34e4d; }
410 |
411 | .hint--error.hint--top-right:before {
412 | border-top-color: #b34e4d; }
413 |
414 | .hint--error.hint--top:before {
415 | border-top-color: #b34e4d; }
416 |
417 | .hint--error.hint--bottom-left:before {
418 | border-bottom-color: #b34e4d; }
419 |
420 | .hint--error.hint--bottom-right:before {
421 | border-bottom-color: #b34e4d; }
422 |
423 | .hint--error.hint--bottom:before {
424 | border-bottom-color: #b34e4d; }
425 |
426 | .hint--error.hint--left:before {
427 | border-left-color: #b34e4d; }
428 |
429 | .hint--error.hint--right:before {
430 | border-right-color: #b34e4d; }
431 |
432 | /**
433 | * Warning
434 | */
435 | .hint--warning:after {
436 | background-color: #c09854;
437 | text-shadow: 0 -1px 0px #6c5328; }
438 |
439 | .hint--warning.hint--top-left:before {
440 | border-top-color: #c09854; }
441 |
442 | .hint--warning.hint--top-right:before {
443 | border-top-color: #c09854; }
444 |
445 | .hint--warning.hint--top:before {
446 | border-top-color: #c09854; }
447 |
448 | .hint--warning.hint--bottom-left:before {
449 | border-bottom-color: #c09854; }
450 |
451 | .hint--warning.hint--bottom-right:before {
452 | border-bottom-color: #c09854; }
453 |
454 | .hint--warning.hint--bottom:before {
455 | border-bottom-color: #c09854; }
456 |
457 | .hint--warning.hint--left:before {
458 | border-left-color: #c09854; }
459 |
460 | .hint--warning.hint--right:before {
461 | border-right-color: #c09854; }
462 |
463 | /**
464 | * Info
465 | */
466 | .hint--info:after {
467 | background-color: #3986ac;
468 | text-shadow: 0 -1px 0px #1a3c4d; }
469 |
470 | .hint--info.hint--top-left:before {
471 | border-top-color: #3986ac; }
472 |
473 | .hint--info.hint--top-right:before {
474 | border-top-color: #3986ac; }
475 |
476 | .hint--info.hint--top:before {
477 | border-top-color: #3986ac; }
478 |
479 | .hint--info.hint--bottom-left:before {
480 | border-bottom-color: #3986ac; }
481 |
482 | .hint--info.hint--bottom-right:before {
483 | border-bottom-color: #3986ac; }
484 |
485 | .hint--info.hint--bottom:before {
486 | border-bottom-color: #3986ac; }
487 |
488 | .hint--info.hint--left:before {
489 | border-left-color: #3986ac; }
490 |
491 | .hint--info.hint--right:before {
492 | border-right-color: #3986ac; }
493 |
494 | /**
495 | * Success
496 | */
497 | .hint--success:after {
498 | background-color: #458746;
499 | text-shadow: 0 -1px 0px #1a321a; }
500 |
501 | .hint--success.hint--top-left:before {
502 | border-top-color: #458746; }
503 |
504 | .hint--success.hint--top-right:before {
505 | border-top-color: #458746; }
506 |
507 | .hint--success.hint--top:before {
508 | border-top-color: #458746; }
509 |
510 | .hint--success.hint--bottom-left:before {
511 | border-bottom-color: #458746; }
512 |
513 | .hint--success.hint--bottom-right:before {
514 | border-bottom-color: #458746; }
515 |
516 | .hint--success.hint--bottom:before {
517 | border-bottom-color: #458746; }
518 |
519 | .hint--success.hint--left:before {
520 | border-left-color: #458746; }
521 |
522 | .hint--success.hint--right:before {
523 | border-right-color: #458746; }
524 |
525 | /**
526 | * source: hint-always.scss
527 | *
528 | * Defines a persisted tooltip which shows always.
529 | *
530 | * Classes added:
531 | * 1) hint--always
532 | *
533 | */
534 | .hint--always:after, .hint--always:before {
535 | opacity: 1;
536 | visibility: visible; }
537 |
538 | .hint--always.hint--top:before {
539 | -webkit-transform: translateY(-8px);
540 | -moz-transform: translateY(-8px);
541 | transform: translateY(-8px); }
542 |
543 | .hint--always.hint--top:after {
544 | -webkit-transform: translateX(-50%) translateY(-8px);
545 | -moz-transform: translateX(-50%) translateY(-8px);
546 | transform: translateX(-50%) translateY(-8px); }
547 |
548 | .hint--always.hint--top-left:before {
549 | -webkit-transform: translateY(-8px);
550 | -moz-transform: translateY(-8px);
551 | transform: translateY(-8px); }
552 |
553 | .hint--always.hint--top-left:after {
554 | -webkit-transform: translateX(-100%) translateY(-8px);
555 | -moz-transform: translateX(-100%) translateY(-8px);
556 | transform: translateX(-100%) translateY(-8px); }
557 |
558 | .hint--always.hint--top-right:before {
559 | -webkit-transform: translateY(-8px);
560 | -moz-transform: translateY(-8px);
561 | transform: translateY(-8px); }
562 |
563 | .hint--always.hint--top-right:after {
564 | -webkit-transform: translateY(-8px);
565 | -moz-transform: translateY(-8px);
566 | transform: translateY(-8px); }
567 |
568 | .hint--always.hint--bottom:before {
569 | -webkit-transform: translateY(8px);
570 | -moz-transform: translateY(8px);
571 | transform: translateY(8px); }
572 |
573 | .hint--always.hint--bottom:after {
574 | -webkit-transform: translateX(-50%) translateY(8px);
575 | -moz-transform: translateX(-50%) translateY(8px);
576 | transform: translateX(-50%) translateY(8px); }
577 |
578 | .hint--always.hint--bottom-left:before {
579 | -webkit-transform: translateY(8px);
580 | -moz-transform: translateY(8px);
581 | transform: translateY(8px); }
582 |
583 | .hint--always.hint--bottom-left:after {
584 | -webkit-transform: translateX(-100%) translateY(8px);
585 | -moz-transform: translateX(-100%) translateY(8px);
586 | transform: translateX(-100%) translateY(8px); }
587 |
588 | .hint--always.hint--bottom-right:before {
589 | -webkit-transform: translateY(8px);
590 | -moz-transform: translateY(8px);
591 | transform: translateY(8px); }
592 |
593 | .hint--always.hint--bottom-right:after {
594 | -webkit-transform: translateY(8px);
595 | -moz-transform: translateY(8px);
596 | transform: translateY(8px); }
597 |
598 | .hint--always.hint--left:before {
599 | -webkit-transform: translateX(-8px);
600 | -moz-transform: translateX(-8px);
601 | transform: translateX(-8px); }
602 |
603 | .hint--always.hint--left:after {
604 | -webkit-transform: translateX(-8px);
605 | -moz-transform: translateX(-8px);
606 | transform: translateX(-8px); }
607 |
608 | .hint--always.hint--right:before {
609 | -webkit-transform: translateX(8px);
610 | -moz-transform: translateX(8px);
611 | transform: translateX(8px); }
612 |
613 | .hint--always.hint--right:after {
614 | -webkit-transform: translateX(8px);
615 | -moz-transform: translateX(8px);
616 | transform: translateX(8px); }
617 |
618 | /**
619 | * source: hint-rounded.scss
620 | *
621 | * Defines rounded corner tooltips.
622 | *
623 | * Classes added:
624 | * 1) hint--rounded
625 | *
626 | */
627 | .hint--rounded:after {
628 | border-radius: 4px; }
629 |
630 | /**
631 | * source: hint-effects.scss
632 | *
633 | * Defines various transition effects for the tooltips.
634 | *
635 | * Classes added:
636 | * 1) hint--no-animate
637 | * 2) hint--bounce
638 | *
639 | */
640 | .hint--no-animate:before, .hint--no-animate:after {
641 | -webkit-transition-duration: 0ms;
642 | -moz-transition-duration: 0ms;
643 | transition-duration: 0ms; }
644 |
645 | .hint--bounce:before, .hint--bounce:after {
646 | -webkit-transition: opacity 0.3s ease, visibility 0.3s ease, -webkit-transform 0.3s cubic-bezier(0.71, 1.7, 0.77, 1.24);
647 | -moz-transition: opacity 0.3s ease, visibility 0.3s ease, -moz-transform 0.3s cubic-bezier(0.71, 1.7, 0.77, 1.24);
648 | transition: opacity 0.3s ease, visibility 0.3s ease, transform 0.3s cubic-bezier(0.71, 1.7, 0.77, 1.24); }
649 |
--------------------------------------------------------------------------------
/public/assets/css/themify-icons.css:
--------------------------------------------------------------------------------
1 | @font-face {
2 | font-family: 'themify';
3 | src:url('../fonts/themify.eot?-fvbane');
4 | src:url('../fonts/themify.eot?#iefix-fvbane') format('embedded-opentype'),
5 | url('../fonts/themify.woff?-fvbane') format('woff'),
6 | url('../fonts/themify.ttf?-fvbane') format('truetype'),
7 | url('../fonts/themify.svg?-fvbane#themify') format('svg');
8 | font-weight: normal;
9 | font-style: normal;
10 | }
11 |
12 | [class^="ti-"], [class*=" ti-"] {
13 | font-family: 'themify';
14 | speak: none;
15 | font-style: normal;
16 | font-weight: bold;
17 | font-variant: normal;
18 | text-transform: none;
19 | line-height: 1.42857;
20 |
21 | /* Better Font Rendering =========== */
22 | -webkit-font-smoothing: antialiased;
23 | -moz-osx-font-smoothing: grayscale;
24 | }
25 |
26 | .ti-wand:before {
27 | content: "\e600";
28 | }
29 | .ti-volume:before {
30 | content: "\e601";
31 | }
32 | .ti-user:before {
33 | content: "\e602";
34 | }
35 | .ti-unlock:before {
36 | content: "\e603";
37 | }
38 | .ti-unlink:before {
39 | content: "\e604";
40 | }
41 | .ti-trash:before {
42 | content: "\e605";
43 | }
44 | .ti-thought:before {
45 | content: "\e606";
46 | }
47 | .ti-target:before {
48 | content: "\e607";
49 | }
50 | .ti-tag:before {
51 | content: "\e608";
52 | }
53 | .ti-tablet:before {
54 | content: "\e609";
55 | }
56 | .ti-star:before {
57 | content: "\e60a";
58 | }
59 | .ti-spray:before {
60 | content: "\e60b";
61 | }
62 | .ti-signal:before {
63 | content: "\e60c";
64 | }
65 | .ti-shopping-cart:before {
66 | content: "\e60d";
67 | }
68 | .ti-shopping-cart-full:before {
69 | content: "\e60e";
70 | }
71 | .ti-settings:before {
72 | content: "\e60f";
73 | }
74 | .ti-search:before {
75 | content: "\e610";
76 | }
77 | .ti-zoom-in:before {
78 | content: "\e611";
79 | }
80 | .ti-zoom-out:before {
81 | content: "\e612";
82 | }
83 | .ti-cut:before {
84 | content: "\e613";
85 | }
86 | .ti-ruler:before {
87 | content: "\e614";
88 | }
89 | .ti-ruler-pencil:before {
90 | content: "\e615";
91 | }
92 | .ti-ruler-alt:before {
93 | content: "\e616";
94 | }
95 | .ti-bookmark:before {
96 | content: "\e617";
97 | }
98 | .ti-bookmark-alt:before {
99 | content: "\e618";
100 | }
101 | .ti-reload:before {
102 | content: "\e619";
103 | }
104 | .ti-plus:before {
105 | content: "\e61a";
106 | }
107 | .ti-pin:before {
108 | content: "\e61b";
109 | }
110 | .ti-pencil:before {
111 | content: "\e61c";
112 | }
113 | .ti-pencil-alt:before {
114 | content: "\e61d";
115 | }
116 | .ti-paint-roller:before {
117 | content: "\e61e";
118 | }
119 | .ti-paint-bucket:before {
120 | content: "\e61f";
121 | }
122 | .ti-na:before {
123 | content: "\e620";
124 | }
125 | .ti-mobile:before {
126 | content: "\e621";
127 | }
128 | .ti-minus:before {
129 | content: "\e622";
130 | }
131 | .ti-medall:before {
132 | content: "\e623";
133 | }
134 | .ti-medall-alt:before {
135 | content: "\e624";
136 | }
137 | .ti-marker:before {
138 | content: "\e625";
139 | }
140 | .ti-marker-alt:before {
141 | content: "\e626";
142 | }
143 | .ti-arrow-up:before {
144 | content: "\e627";
145 | }
146 | .ti-arrow-right:before {
147 | content: "\e628";
148 | }
149 | .ti-arrow-left:before {
150 | content: "\e629";
151 | }
152 | .ti-arrow-down:before {
153 | content: "\e62a";
154 | }
155 | .ti-lock:before {
156 | content: "\e62b";
157 | }
158 | .ti-location-arrow:before {
159 | content: "\e62c";
160 | }
161 | .ti-link:before {
162 | content: "\e62d";
163 | }
164 | .ti-layout:before {
165 | content: "\e62e";
166 | }
167 | .ti-layers:before {
168 | content: "\e62f";
169 | }
170 | .ti-layers-alt:before {
171 | content: "\e630";
172 | }
173 | .ti-key:before {
174 | content: "\e631";
175 | }
176 | .ti-import:before {
177 | content: "\e632";
178 | }
179 | .ti-image:before {
180 | content: "\e633";
181 | }
182 | .ti-heart:before {
183 | content: "\e634";
184 | }
185 | .ti-heart-broken:before {
186 | content: "\e635";
187 | }
188 | .ti-hand-stop:before {
189 | content: "\e636";
190 | }
191 | .ti-hand-open:before {
192 | content: "\e637";
193 | }
194 | .ti-hand-drag:before {
195 | content: "\e638";
196 | }
197 | .ti-folder:before {
198 | content: "\e639";
199 | }
200 | .ti-flag:before {
201 | content: "\e63a";
202 | }
203 | .ti-flag-alt:before {
204 | content: "\e63b";
205 | }
206 | .ti-flag-alt-2:before {
207 | content: "\e63c";
208 | }
209 | .ti-eye:before {
210 | content: "\e63d";
211 | }
212 | .ti-export:before {
213 | content: "\e63e";
214 | }
215 | .ti-exchange-vertical:before {
216 | content: "\e63f";
217 | }
218 | .ti-desktop:before {
219 | content: "\e640";
220 | }
221 | .ti-cup:before {
222 | content: "\e641";
223 | }
224 | .ti-crown:before {
225 | content: "\e642";
226 | }
227 | .ti-comments:before {
228 | content: "\e643";
229 | }
230 | .ti-comment:before {
231 | content: "\e644";
232 | }
233 | .ti-comment-alt:before {
234 | content: "\e645";
235 | }
236 | .ti-close:before {
237 | content: "\e646";
238 | }
239 | .ti-clip:before {
240 | content: "\e647";
241 | }
242 | .ti-angle-up:before {
243 | content: "\e648";
244 | }
245 | .ti-angle-right:before {
246 | content: "\e649";
247 | }
248 | .ti-angle-left:before {
249 | content: "\e64a";
250 | }
251 | .ti-angle-down:before {
252 | content: "\e64b";
253 | }
254 | .ti-check:before {
255 | content: "\e64c";
256 | }
257 | .ti-check-box:before {
258 | content: "\e64d";
259 | }
260 | .ti-camera:before {
261 | content: "\e64e";
262 | }
263 | .ti-announcement:before {
264 | content: "\e64f";
265 | }
266 | .ti-brush:before {
267 | content: "\e650";
268 | }
269 | .ti-briefcase:before {
270 | content: "\e651";
271 | }
272 | .ti-bolt:before {
273 | content: "\e652";
274 | }
275 | .ti-bolt-alt:before {
276 | content: "\e653";
277 | }
278 | .ti-blackboard:before {
279 | content: "\e654";
280 | }
281 | .ti-bag:before {
282 | content: "\e655";
283 | }
284 | .ti-move:before {
285 | content: "\e656";
286 | }
287 | .ti-arrows-vertical:before {
288 | content: "\e657";
289 | }
290 | .ti-arrows-horizontal:before {
291 | content: "\e658";
292 | }
293 | .ti-fullscreen:before {
294 | content: "\e659";
295 | }
296 | .ti-arrow-top-right:before {
297 | content: "\e65a";
298 | }
299 | .ti-arrow-top-left:before {
300 | content: "\e65b";
301 | }
302 | .ti-arrow-circle-up:before {
303 | content: "\e65c";
304 | }
305 | .ti-arrow-circle-right:before {
306 | content: "\e65d";
307 | }
308 | .ti-arrow-circle-left:before {
309 | content: "\e65e";
310 | }
311 | .ti-arrow-circle-down:before {
312 | content: "\e65f";
313 | }
314 | .ti-angle-double-up:before {
315 | content: "\e660";
316 | }
317 | .ti-angle-double-right:before {
318 | content: "\e661";
319 | }
320 | .ti-angle-double-left:before {
321 | content: "\e662";
322 | }
323 | .ti-angle-double-down:before {
324 | content: "\e663";
325 | }
326 | .ti-zip:before {
327 | content: "\e664";
328 | }
329 | .ti-world:before {
330 | content: "\e665";
331 | }
332 | .ti-wheelchair:before {
333 | content: "\e666";
334 | }
335 | .ti-view-list:before {
336 | content: "\e667";
337 | }
338 | .ti-view-list-alt:before {
339 | content: "\e668";
340 | }
341 | .ti-view-grid:before {
342 | content: "\e669";
343 | }
344 | .ti-uppercase:before {
345 | content: "\e66a";
346 | }
347 | .ti-upload:before {
348 | content: "\e66b";
349 | }
350 | .ti-underline:before {
351 | content: "\e66c";
352 | }
353 | .ti-truck:before {
354 | content: "\e66d";
355 | }
356 | .ti-timer:before {
357 | content: "\e66e";
358 | }
359 | .ti-ticket:before {
360 | content: "\e66f";
361 | }
362 | .ti-thumb-up:before {
363 | content: "\e670";
364 | }
365 | .ti-thumb-down:before {
366 | content: "\e671";
367 | }
368 | .ti-text:before {
369 | content: "\e672";
370 | }
371 | .ti-stats-up:before {
372 | content: "\e673";
373 | }
374 | .ti-stats-down:before {
375 | content: "\e674";
376 | }
377 | .ti-split-v:before {
378 | content: "\e675";
379 | }
380 | .ti-split-h:before {
381 | content: "\e676";
382 | }
383 | .ti-smallcap:before {
384 | content: "\e677";
385 | }
386 | .ti-shine:before {
387 | content: "\e678";
388 | }
389 | .ti-shift-right:before {
390 | content: "\e679";
391 | }
392 | .ti-shift-left:before {
393 | content: "\e67a";
394 | }
395 | .ti-shield:before {
396 | content: "\e67b";
397 | }
398 | .ti-notepad:before {
399 | content: "\e67c";
400 | }
401 | .ti-server:before {
402 | content: "\e67d";
403 | }
404 | .ti-quote-right:before {
405 | content: "\e67e";
406 | }
407 | .ti-quote-left:before {
408 | content: "\e67f";
409 | }
410 | .ti-pulse:before {
411 | content: "\e680";
412 | }
413 | .ti-printer:before {
414 | content: "\e681";
415 | }
416 | .ti-power-off:before {
417 | content: "\e682";
418 | }
419 | .ti-plug:before {
420 | content: "\e683";
421 | }
422 | .ti-pie-chart:before {
423 | content: "\e684";
424 | }
425 | .ti-paragraph:before {
426 | content: "\e685";
427 | }
428 | .ti-panel:before {
429 | content: "\e686";
430 | }
431 | .ti-package:before {
432 | content: "\e687";
433 | }
434 | .ti-music:before {
435 | content: "\e688";
436 | }
437 | .ti-music-alt:before {
438 | content: "\e689";
439 | }
440 | .ti-mouse:before {
441 | content: "\e68a";
442 | }
443 | .ti-mouse-alt:before {
444 | content: "\e68b";
445 | }
446 | .ti-money:before {
447 | content: "\e68c";
448 | }
449 | .ti-microphone:before {
450 | content: "\e68d";
451 | }
452 | .ti-menu:before {
453 | content: "\e68e";
454 | }
455 | .ti-menu-alt:before {
456 | content: "\e68f";
457 | }
458 | .ti-map:before {
459 | content: "\e690";
460 | }
461 | .ti-map-alt:before {
462 | content: "\e691";
463 | }
464 | .ti-loop:before {
465 | content: "\e692";
466 | }
467 | .ti-location-pin:before {
468 | content: "\e693";
469 | }
470 | .ti-list:before {
471 | content: "\e694";
472 | }
473 | .ti-light-bulb:before {
474 | content: "\e695";
475 | }
476 | .ti-Italic:before {
477 | content: "\e696";
478 | }
479 | .ti-info:before {
480 | content: "\e697";
481 | }
482 | .ti-infinite:before {
483 | content: "\e698";
484 | }
485 | .ti-id-badge:before {
486 | content: "\e699";
487 | }
488 | .ti-hummer:before {
489 | content: "\e69a";
490 | }
491 | .ti-home:before {
492 | content: "\e69b";
493 | }
494 | .ti-help:before {
495 | content: "\e69c";
496 | }
497 | .ti-headphone:before {
498 | content: "\e69d";
499 | }
500 | .ti-harddrives:before {
501 | content: "\e69e";
502 | }
503 | .ti-harddrive:before {
504 | content: "\e69f";
505 | }
506 | .ti-gift:before {
507 | content: "\e6a0";
508 | }
509 | .ti-game:before {
510 | content: "\e6a1";
511 | }
512 | .ti-filter:before {
513 | content: "\e6a2";
514 | }
515 | .ti-files:before {
516 | content: "\e6a3";
517 | }
518 | .ti-file:before {
519 | content: "\e6a4";
520 | }
521 | .ti-eraser:before {
522 | content: "\e6a5";
523 | }
524 | .ti-envelope:before {
525 | content: "\e6a6";
526 | }
527 | .ti-download:before {
528 | content: "\e6a7";
529 | }
530 | .ti-direction:before {
531 | content: "\e6a8";
532 | }
533 | .ti-direction-alt:before {
534 | content: "\e6a9";
535 | }
536 | .ti-dashboard:before {
537 | content: "\e6aa";
538 | }
539 | .ti-control-stop:before {
540 | content: "\e6ab";
541 | }
542 | .ti-control-shuffle:before {
543 | content: "\e6ac";
544 | }
545 | .ti-control-play:before {
546 | content: "\e6ad";
547 | }
548 | .ti-control-pause:before {
549 | content: "\e6ae";
550 | }
551 | .ti-control-forward:before {
552 | content: "\e6af";
553 | }
554 | .ti-control-backward:before {
555 | content: "\e6b0";
556 | }
557 | .ti-cloud:before {
558 | content: "\e6b1";
559 | }
560 | .ti-cloud-up:before {
561 | content: "\e6b2";
562 | }
563 | .ti-cloud-down:before {
564 | content: "\e6b3";
565 | }
566 | .ti-clipboard:before {
567 | content: "\e6b4";
568 | }
569 | .ti-car:before {
570 | content: "\e6b5";
571 | }
572 | .ti-calendar:before {
573 | content: "\e6b6";
574 | }
575 | .ti-book:before {
576 | content: "\e6b7";
577 | }
578 | .ti-bell:before {
579 | content: "\e6b8";
580 | }
581 | .ti-basketball:before {
582 | content: "\e6b9";
583 | }
584 | .ti-bar-chart:before {
585 | content: "\e6ba";
586 | }
587 | .ti-bar-chart-alt:before {
588 | content: "\e6bb";
589 | }
590 | .ti-back-right:before {
591 | content: "\e6bc";
592 | }
593 | .ti-back-left:before {
594 | content: "\e6bd";
595 | }
596 | .ti-arrows-corner:before {
597 | content: "\e6be";
598 | }
599 | .ti-archive:before {
600 | content: "\e6bf";
601 | }
602 | .ti-anchor:before {
603 | content: "\e6c0";
604 | }
605 | .ti-align-right:before {
606 | content: "\e6c1";
607 | }
608 | .ti-align-left:before {
609 | content: "\e6c2";
610 | }
611 | .ti-align-justify:before {
612 | content: "\e6c3";
613 | }
614 | .ti-align-center:before {
615 | content: "\e6c4";
616 | }
617 | .ti-alert:before {
618 | content: "\e6c5";
619 | }
620 | .ti-alarm-clock:before {
621 | content: "\e6c6";
622 | }
623 | .ti-agenda:before {
624 | content: "\e6c7";
625 | }
626 | .ti-write:before {
627 | content: "\e6c8";
628 | }
629 | .ti-window:before {
630 | content: "\e6c9";
631 | }
632 | .ti-widgetized:before {
633 | content: "\e6ca";
634 | }
635 | .ti-widget:before {
636 | content: "\e6cb";
637 | }
638 | .ti-widget-alt:before {
639 | content: "\e6cc";
640 | }
641 | .ti-wallet:before {
642 | content: "\e6cd";
643 | }
644 | .ti-video-clapper:before {
645 | content: "\e6ce";
646 | }
647 | .ti-video-camera:before {
648 | content: "\e6cf";
649 | }
650 | .ti-vector:before {
651 | content: "\e6d0";
652 | }
653 | .ti-themify-logo:before {
654 | content: "\e6d1";
655 | }
656 | .ti-themify-favicon:before {
657 | content: "\e6d2";
658 | }
659 | .ti-themify-favicon-alt:before {
660 | content: "\e6d3";
661 | }
662 | .ti-support:before {
663 | content: "\e6d4";
664 | }
665 | .ti-stamp:before {
666 | content: "\e6d5";
667 | }
668 | .ti-split-v-alt:before {
669 | content: "\e6d6";
670 | }
671 | .ti-slice:before {
672 | content: "\e6d7";
673 | }
674 | .ti-shortcode:before {
675 | content: "\e6d8";
676 | }
677 | .ti-shift-right-alt:before {
678 | content: "\e6d9";
679 | }
680 | .ti-shift-left-alt:before {
681 | content: "\e6da";
682 | }
683 | .ti-ruler-alt-2:before {
684 | content: "\e6db";
685 | }
686 | .ti-receipt:before {
687 | content: "\e6dc";
688 | }
689 | .ti-pin2:before {
690 | content: "\e6dd";
691 | }
692 | .ti-pin-alt:before {
693 | content: "\e6de";
694 | }
695 | .ti-pencil-alt2:before {
696 | content: "\e6df";
697 | }
698 | .ti-palette:before {
699 | content: "\e6e0";
700 | }
701 | .ti-more:before {
702 | content: "\e6e1";
703 | }
704 | .ti-more-alt:before {
705 | content: "\e6e2";
706 | }
707 | .ti-microphone-alt:before {
708 | content: "\e6e3";
709 | }
710 | .ti-magnet:before {
711 | content: "\e6e4";
712 | }
713 | .ti-line-double:before {
714 | content: "\e6e5";
715 | }
716 | .ti-line-dotted:before {
717 | content: "\e6e6";
718 | }
719 | .ti-line-dashed:before {
720 | content: "\e6e7";
721 | }
722 | .ti-layout-width-full:before {
723 | content: "\e6e8";
724 | }
725 | .ti-layout-width-default:before {
726 | content: "\e6e9";
727 | }
728 | .ti-layout-width-default-alt:before {
729 | content: "\e6ea";
730 | }
731 | .ti-layout-tab:before {
732 | content: "\e6eb";
733 | }
734 | .ti-layout-tab-window:before {
735 | content: "\e6ec";
736 | }
737 | .ti-layout-tab-v:before {
738 | content: "\e6ed";
739 | }
740 | .ti-layout-tab-min:before {
741 | content: "\e6ee";
742 | }
743 | .ti-layout-slider:before {
744 | content: "\e6ef";
745 | }
746 | .ti-layout-slider-alt:before {
747 | content: "\e6f0";
748 | }
749 | .ti-layout-sidebar-right:before {
750 | content: "\e6f1";
751 | }
752 | .ti-layout-sidebar-none:before {
753 | content: "\e6f2";
754 | }
755 | .ti-layout-sidebar-left:before {
756 | content: "\e6f3";
757 | }
758 | .ti-layout-placeholder:before {
759 | content: "\e6f4";
760 | }
761 | .ti-layout-menu:before {
762 | content: "\e6f5";
763 | }
764 | .ti-layout-menu-v:before {
765 | content: "\e6f6";
766 | }
767 | .ti-layout-menu-separated:before {
768 | content: "\e6f7";
769 | }
770 | .ti-layout-menu-full:before {
771 | content: "\e6f8";
772 | }
773 | .ti-layout-media-right-alt:before {
774 | content: "\e6f9";
775 | }
776 | .ti-layout-media-right:before {
777 | content: "\e6fa";
778 | }
779 | .ti-layout-media-overlay:before {
780 | content: "\e6fb";
781 | }
782 | .ti-layout-media-overlay-alt:before {
783 | content: "\e6fc";
784 | }
785 | .ti-layout-media-overlay-alt-2:before {
786 | content: "\e6fd";
787 | }
788 | .ti-layout-media-left-alt:before {
789 | content: "\e6fe";
790 | }
791 | .ti-layout-media-left:before {
792 | content: "\e6ff";
793 | }
794 | .ti-layout-media-center-alt:before {
795 | content: "\e700";
796 | }
797 | .ti-layout-media-center:before {
798 | content: "\e701";
799 | }
800 | .ti-layout-list-thumb:before {
801 | content: "\e702";
802 | }
803 | .ti-layout-list-thumb-alt:before {
804 | content: "\e703";
805 | }
806 | .ti-layout-list-post:before {
807 | content: "\e704";
808 | }
809 | .ti-layout-list-large-image:before {
810 | content: "\e705";
811 | }
812 | .ti-layout-line-solid:before {
813 | content: "\e706";
814 | }
815 | .ti-layout-grid4:before {
816 | content: "\e707";
817 | }
818 | .ti-layout-grid3:before {
819 | content: "\e708";
820 | }
821 | .ti-layout-grid2:before {
822 | content: "\e709";
823 | }
824 | .ti-layout-grid2-thumb:before {
825 | content: "\e70a";
826 | }
827 | .ti-layout-cta-right:before {
828 | content: "\e70b";
829 | }
830 | .ti-layout-cta-left:before {
831 | content: "\e70c";
832 | }
833 | .ti-layout-cta-center:before {
834 | content: "\e70d";
835 | }
836 | .ti-layout-cta-btn-right:before {
837 | content: "\e70e";
838 | }
839 | .ti-layout-cta-btn-left:before {
840 | content: "\e70f";
841 | }
842 | .ti-layout-column4:before {
843 | content: "\e710";
844 | }
845 | .ti-layout-column3:before {
846 | content: "\e711";
847 | }
848 | .ti-layout-column2:before {
849 | content: "\e712";
850 | }
851 | .ti-layout-accordion-separated:before {
852 | content: "\e713";
853 | }
854 | .ti-layout-accordion-merged:before {
855 | content: "\e714";
856 | }
857 | .ti-layout-accordion-list:before {
858 | content: "\e715";
859 | }
860 | .ti-ink-pen:before {
861 | content: "\e716";
862 | }
863 | .ti-info-alt:before {
864 | content: "\e717";
865 | }
866 | .ti-help-alt:before {
867 | content: "\e718";
868 | }
869 | .ti-headphone-alt:before {
870 | content: "\e719";
871 | }
872 | .ti-hand-point-up:before {
873 | content: "\e71a";
874 | }
875 | .ti-hand-point-right:before {
876 | content: "\e71b";
877 | }
878 | .ti-hand-point-left:before {
879 | content: "\e71c";
880 | }
881 | .ti-hand-point-down:before {
882 | content: "\e71d";
883 | }
884 | .ti-gallery:before {
885 | content: "\e71e";
886 | }
887 | .ti-face-smile:before {
888 | content: "\e71f";
889 | }
890 | .ti-face-sad:before {
891 | content: "\e720";
892 | }
893 | .ti-credit-card:before {
894 | content: "\e721";
895 | }
896 | .ti-control-skip-forward:before {
897 | content: "\e722";
898 | }
899 | .ti-control-skip-backward:before {
900 | content: "\e723";
901 | }
902 | .ti-control-record:before {
903 | content: "\e724";
904 | }
905 | .ti-control-eject:before {
906 | content: "\e725";
907 | }
908 | .ti-comments-smiley:before {
909 | content: "\e726";
910 | }
911 | .ti-brush-alt:before {
912 | content: "\e727";
913 | }
914 | .ti-youtube:before {
915 | content: "\e728";
916 | }
917 | .ti-vimeo:before {
918 | content: "\e729";
919 | }
920 | .ti-twitter:before {
921 | content: "\e72a";
922 | }
923 | .ti-time:before {
924 | content: "\e72b";
925 | }
926 | .ti-tumblr:before {
927 | content: "\e72c";
928 | }
929 | .ti-skype:before {
930 | content: "\e72d";
931 | }
932 | .ti-share:before {
933 | content: "\e72e";
934 | }
935 | .ti-share-alt:before {
936 | content: "\e72f";
937 | }
938 | .ti-rocket:before {
939 | content: "\e730";
940 | }
941 | .ti-pinterest:before {
942 | content: "\e731";
943 | }
944 | .ti-new-window:before {
945 | content: "\e732";
946 | }
947 | .ti-microsoft:before {
948 | content: "\e733";
949 | }
950 | .ti-list-ol:before {
951 | content: "\e734";
952 | }
953 | .ti-linkedin:before {
954 | content: "\e735";
955 | }
956 | .ti-layout-sidebar-2:before {
957 | content: "\e736";
958 | }
959 | .ti-layout-grid4-alt:before {
960 | content: "\e737";
961 | }
962 | .ti-layout-grid3-alt:before {
963 | content: "\e738";
964 | }
965 | .ti-layout-grid2-alt:before {
966 | content: "\e739";
967 | }
968 | .ti-layout-column4-alt:before {
969 | content: "\e73a";
970 | }
971 | .ti-layout-column3-alt:before {
972 | content: "\e73b";
973 | }
974 | .ti-layout-column2-alt:before {
975 | content: "\e73c";
976 | }
977 | .ti-instagram:before {
978 | content: "\e73d";
979 | }
980 | .ti-google:before {
981 | content: "\e73e";
982 | }
983 | .ti-github:before {
984 | content: "\e73f";
985 | }
986 | .ti-flickr:before {
987 | content: "\e740";
988 | }
989 | .ti-facebook:before {
990 | content: "\e741";
991 | }
992 | .ti-dropbox:before {
993 | content: "\e742";
994 | }
995 | .ti-dribbble:before {
996 | content: "\e743";
997 | }
998 | .ti-apple:before {
999 | content: "\e744";
1000 | }
1001 | .ti-android:before {
1002 | content: "\e745";
1003 | }
1004 | .ti-save:before {
1005 | content: "\e746";
1006 | }
1007 | .ti-save-alt:before {
1008 | content: "\e747";
1009 | }
1010 | .ti-yahoo:before {
1011 | content: "\e748";
1012 | }
1013 | .ti-wordpress:before {
1014 | content: "\e749";
1015 | }
1016 | .ti-vimeo-alt:before {
1017 | content: "\e74a";
1018 | }
1019 | .ti-twitter-alt:before {
1020 | content: "\e74b";
1021 | }
1022 | .ti-tumblr-alt:before {
1023 | content: "\e74c";
1024 | }
1025 | .ti-trello:before {
1026 | content: "\e74d";
1027 | }
1028 | .ti-stack-overflow:before {
1029 | content: "\e74e";
1030 | }
1031 | .ti-soundcloud:before {
1032 | content: "\e74f";
1033 | }
1034 | .ti-sharethis:before {
1035 | content: "\e750";
1036 | }
1037 | .ti-sharethis-alt:before {
1038 | content: "\e751";
1039 | }
1040 | .ti-reddit:before {
1041 | content: "\e752";
1042 | }
1043 | .ti-pinterest-alt:before {
1044 | content: "\e753";
1045 | }
1046 | .ti-microsoft-alt:before {
1047 | content: "\e754";
1048 | }
1049 | .ti-linux:before {
1050 | content: "\e755";
1051 | }
1052 | .ti-jsfiddle:before {
1053 | content: "\e756";
1054 | }
1055 | .ti-joomla:before {
1056 | content: "\e757";
1057 | }
1058 | .ti-html5:before {
1059 | content: "\e758";
1060 | }
1061 | .ti-flickr-alt:before {
1062 | content: "\e759";
1063 | }
1064 | .ti-email:before {
1065 | content: "\e75a";
1066 | }
1067 | .ti-drupal:before {
1068 | content: "\e75b";
1069 | }
1070 | .ti-dropbox-alt:before {
1071 | content: "\e75c";
1072 | }
1073 | .ti-css3:before {
1074 | content: "\e75d";
1075 | }
1076 | .ti-rss:before {
1077 | content: "\e75e";
1078 | }
1079 | .ti-rss-alt:before {
1080 | content: "\e75f";
1081 | }
1082 |
--------------------------------------------------------------------------------
/public/assets/fonts/T-qN9Yh40TTJeenUALkjgg.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/murilolivorato/vue-laravel-crud/952f86f2e62d7ece467c227bbdefdd740941467d/public/assets/fonts/T-qN9Yh40TTJeenUALkjgg.woff2
--------------------------------------------------------------------------------
/public/assets/fonts/fontawesome-webfont(1).eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/murilolivorato/vue-laravel-crud/952f86f2e62d7ece467c227bbdefdd740941467d/public/assets/fonts/fontawesome-webfont(1).eot
--------------------------------------------------------------------------------
/public/assets/fonts/fontawesome-webfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/murilolivorato/vue-laravel-crud/952f86f2e62d7ece467c227bbdefdd740941467d/public/assets/fonts/fontawesome-webfont.eot
--------------------------------------------------------------------------------
/public/assets/fonts/fontawesome-webfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/murilolivorato/vue-laravel-crud/952f86f2e62d7ece467c227bbdefdd740941467d/public/assets/fonts/fontawesome-webfont.ttf
--------------------------------------------------------------------------------
/public/assets/fonts/fontawesome-webfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/murilolivorato/vue-laravel-crud/952f86f2e62d7ece467c227bbdefdd740941467d/public/assets/fonts/fontawesome-webfont.woff
--------------------------------------------------------------------------------
/public/assets/fonts/themify.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/murilolivorato/vue-laravel-crud/952f86f2e62d7ece467c227bbdefdd740941467d/public/assets/fonts/themify.eot
--------------------------------------------------------------------------------
/public/assets/fonts/themify.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/murilolivorato/vue-laravel-crud/952f86f2e62d7ece467c227bbdefdd740941467d/public/assets/fonts/themify.ttf
--------------------------------------------------------------------------------
/public/assets/fonts/themify.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/murilolivorato/vue-laravel-crud/952f86f2e62d7ece467c227bbdefdd740941467d/public/assets/fonts/themify.woff
--------------------------------------------------------------------------------
/public/assets/fonts/z6c3Zzm51I2zB_Gi7146Bg.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/murilolivorato/vue-laravel-crud/952f86f2e62d7ece467c227bbdefdd740941467d/public/assets/fonts/z6c3Zzm51I2zB_Gi7146Bg.woff2
--------------------------------------------------------------------------------
/public/assets/images/arrowup.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/murilolivorato/vue-laravel-crud/952f86f2e62d7ece467c227bbdefdd740941467d/public/assets/images/arrowup.gif
--------------------------------------------------------------------------------
/public/assets/images/btnclose.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/murilolivorato/vue-laravel-crud/952f86f2e62d7ece467c227bbdefdd740941467d/public/assets/images/btnclose.jpg
--------------------------------------------------------------------------------
/public/assets/images/btnclose.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/murilolivorato/vue-laravel-crud/952f86f2e62d7ece467c227bbdefdd740941467d/public/assets/images/btnclose.png
--------------------------------------------------------------------------------
/public/assets/images/btnclose2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/murilolivorato/vue-laravel-crud/952f86f2e62d7ece467c227bbdefdd740941467d/public/assets/images/btnclose2.png
--------------------------------------------------------------------------------
/public/assets/images/deleteicon1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/murilolivorato/vue-laravel-crud/952f86f2e62d7ece467c227bbdefdd740941467d/public/assets/images/deleteicon1.jpg
--------------------------------------------------------------------------------
/public/assets/images/editicon1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/murilolivorato/vue-laravel-crud/952f86f2e62d7ece467c227bbdefdd740941467d/public/assets/images/editicon1.jpg
--------------------------------------------------------------------------------
/public/assets/images/facebook.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/murilolivorato/vue-laravel-crud/952f86f2e62d7ece467c227bbdefdd740941467d/public/assets/images/facebook.png
--------------------------------------------------------------------------------
/public/assets/images/icongallery1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/murilolivorato/vue-laravel-crud/952f86f2e62d7ece467c227bbdefdd740941467d/public/assets/images/icongallery1.jpg
--------------------------------------------------------------------------------
/public/assets/images/icongallery2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/murilolivorato/vue-laravel-crud/952f86f2e62d7ece467c227bbdefdd740941467d/public/assets/images/icongallery2.jpg
--------------------------------------------------------------------------------
/public/assets/images/iconmessage_1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/murilolivorato/vue-laravel-crud/952f86f2e62d7ece467c227bbdefdd740941467d/public/assets/images/iconmessage_1.jpg
--------------------------------------------------------------------------------
/public/assets/images/iconmessage_2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/murilolivorato/vue-laravel-crud/952f86f2e62d7ece467c227bbdefdd740941467d/public/assets/images/iconmessage_2.jpg
--------------------------------------------------------------------------------
/public/assets/images/loadings/loading-balls.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/public/assets/images/loadings/loading-bars.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/public/assets/images/loadings/loading-bubbles.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
7 |
9 |
10 |
11 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/public/assets/images/loadings/loading-bubbles3.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
7 |
9 |
10 |
11 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/public/assets/images/loadings/loading-cubes.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/public/assets/images/loadings/loading-cylon-red.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/public/assets/images/loadings/loading-cylon.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/public/assets/images/loadings/loading-spin.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/public/assets/images/loadings/loading-spin.svg.bak:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/public/assets/images/loadings/loading-spinning-bubbles.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/public/assets/images/loadings/loading-spokes.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/public/assets/images/logo.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/murilolivorato/vue-laravel-crud/952f86f2e62d7ece467c227bbdefdd740941467d/public/assets/images/logo.jpg
--------------------------------------------------------------------------------
/public/assets/images/select-arrow.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/murilolivorato/vue-laravel-crud/952f86f2e62d7ece467c227bbdefdd740941467d/public/assets/images/select-arrow.jpg
--------------------------------------------------------------------------------
/public/assets/images/select-arrow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/murilolivorato/vue-laravel-crud/952f86f2e62d7ece467c227bbdefdd740941467d/public/assets/images/select-arrow.png
--------------------------------------------------------------------------------
/public/assets/scripts/bootstrap/bootstrap-checkbox-radio.js:
--------------------------------------------------------------------------------
1 | !function ($) {
2 |
3 | /* CHECKBOX PUBLIC CLASS DEFINITION
4 | * ============================== */
5 |
6 | var Checkbox = function (element, options) {
7 | this.init(element, options);
8 | }
9 |
10 | Checkbox.prototype = {
11 |
12 | constructor: Checkbox
13 |
14 | , init: function (element, options) {
15 | var $el = this.$element = $(element)
16 |
17 | this.options = $.extend({}, $.fn.checkbox.defaults, options);
18 | $el.before(this.options.template);
19 | this.setState();
20 | }
21 |
22 | , setState: function () {
23 | var $el = this.$element
24 | , $parent = $el.closest('.checkbox');
25 |
26 | $el.prop('disabled') && $parent.addClass('disabled');
27 | $el.prop('checked') && $parent.addClass('checked');
28 | }
29 |
30 | , toggle: function () {
31 | var ch = 'checked'
32 | , $el = this.$element
33 | , $parent = $el.closest('.checkbox')
34 | , checked = $el.prop(ch)
35 | , e = $.Event('toggle')
36 |
37 | if ($el.prop('disabled') == false) {
38 | $parent.toggleClass(ch) && checked ? $el.removeAttr(ch) : $el.prop(ch, ch);
39 | $el.trigger(e).trigger('change');
40 | }
41 | }
42 |
43 | , setCheck: function (option) {
44 | var d = 'disabled'
45 | , ch = 'checked'
46 | , $el = this.$element
47 | , $parent = $el.closest('.checkbox')
48 | , checkAction = option == 'check' ? true : false
49 | , e = $.Event(option)
50 |
51 | $parent[checkAction ? 'addClass' : 'removeClass' ](ch) && checkAction ? $el.prop(ch, ch) : $el.removeAttr(ch);
52 | $el.trigger(e).trigger('change');
53 | }
54 |
55 | }
56 |
57 |
58 | /* CHECKBOX PLUGIN DEFINITION
59 | * ======================== */
60 |
61 | var old = $.fn.checkbox
62 |
63 | $.fn.checkbox = function (option) {
64 | return this.each(function () {
65 | var $this = $(this)
66 | , data = $this.data('checkbox')
67 | , options = $.extend({}, $.fn.checkbox.defaults, $this.data(), typeof option == 'object' && option);
68 | if (!data) $this.data('checkbox', (data = new Checkbox(this, options)));
69 | if (option == 'toggle') data.toggle()
70 | if (option == 'check' || option == 'uncheck') data.setCheck(option)
71 | else if (option) data.setState();
72 | });
73 | }
74 |
75 | $.fn.checkbox.defaults = {
76 | template: ' '
77 | }
78 |
79 |
80 | /* CHECKBOX NO CONFLICT
81 | * ================== */
82 |
83 | $.fn.checkbox.noConflict = function () {
84 | $.fn.checkbox = old;
85 | return this;
86 | }
87 |
88 |
89 | /* CHECKBOX DATA-API
90 | * =============== */
91 |
92 | $(document).on('click.checkbox.data-api', '[data-toggle^=checkbox], .checkbox', function (e) {
93 | var $checkbox = $(e.target);
94 | if (e.target.tagName != "A") {
95 | e && e.preventDefault() && e.stopPropagation();
96 | if (!$checkbox.hasClass('checkbox')) $checkbox = $checkbox.closest('.checkbox');
97 | $checkbox.find(':checkbox').checkbox('toggle');
98 | }
99 | });
100 |
101 | $(function () {
102 | $('input[type="checkbox"]').each(function () {
103 | var $checkbox = $(this);
104 | $checkbox.checkbox();
105 | });
106 | });
107 |
108 | }(window.jQuery);
109 |
110 | /* =============================================================
111 | * flatui-radio v0.0.3
112 | * ============================================================ */
113 |
114 | !function ($) {
115 |
116 | /* RADIO PUBLIC CLASS DEFINITION
117 | * ============================== */
118 |
119 | var Radio = function (element, options) {
120 | this.init(element, options);
121 | }
122 |
123 | Radio.prototype = {
124 |
125 | constructor: Radio
126 |
127 | , init: function (element, options) {
128 | var $el = this.$element = $(element)
129 |
130 | this.options = $.extend({}, $.fn.radio.defaults, options);
131 | $el.before(this.options.template);
132 | this.setState();
133 | }
134 |
135 | , setState: function () {
136 | var $el = this.$element
137 | , $parent = $el.closest('.radio');
138 |
139 | $el.prop('disabled') && $parent.addClass('disabled');
140 | $el.prop('checked') && $parent.addClass('checked');
141 | }
142 |
143 | , toggle: function () {
144 | var d = 'disabled'
145 | , ch = 'checked'
146 | , $el = this.$element
147 | , checked = $el.prop(ch)
148 | , $parent = $el.closest('.radio')
149 | , $parentWrap = $el.closest('form').length ? $el.closest('form') : $el.closest('body')
150 | , $elemGroup = $parentWrap.find(':radio[name="' + $el.attr('name') + '"]')
151 | , e = $.Event('toggle')
152 |
153 | if ($el.prop(d) == false) {
154 | $elemGroup.not($el).each(function () {
155 | var $el = $(this)
156 | , $parent = $(this).closest('.radio');
157 |
158 | if ($el.prop(d) == false) {
159 | $parent.removeClass(ch) && $el.removeAttr(ch).trigger('change');
160 | }
161 | });
162 |
163 | if (checked == false) $parent.addClass(ch) && $el.prop(ch, true);
164 | $el.trigger(e);
165 |
166 | if (checked !== $el.prop(ch)) {
167 | $el.trigger('change');
168 | }
169 | }
170 | }
171 |
172 | , setCheck: function (option) {
173 | var ch = 'checked'
174 | , $el = this.$element
175 | , $parent = $el.closest('.radio')
176 | , checkAction = option == 'check' ? true : false
177 | , checked = $el.prop(ch)
178 | , $parentWrap = $el.closest('form').length ? $el.closest('form') : $el.closest('body')
179 | , $elemGroup = $parentWrap.find(':radio[name="' + $el['attr']('name') + '"]')
180 | , e = $.Event(option)
181 |
182 | $elemGroup.not($el).each(function () {
183 | var $el = $(this)
184 | , $parent = $(this).closest('.radio');
185 |
186 | $parent.removeClass(ch) && $el.removeAttr(ch);
187 | });
188 |
189 | $parent[checkAction ? 'addClass' : 'removeClass'](ch) && checkAction ? $el.prop(ch, ch) : $el.removeAttr(ch);
190 | $el.trigger(e);
191 |
192 | if (checked !== $el.prop(ch)) {
193 | $el.trigger('change');
194 | }
195 | }
196 |
197 | }
198 |
199 |
200 | /* RADIO PLUGIN DEFINITION
201 | * ======================== */
202 |
203 | var old = $.fn.radio
204 |
205 | $.fn.radio = function (option) {
206 | return this.each(function () {
207 | var $this = $(this)
208 | , data = $this.data('radio')
209 | , options = $.extend({}, $.fn.radio.defaults, $this.data(), typeof option == 'object' && option);
210 | if (!data) $this.data('radio', (data = new Radio(this, options)));
211 | if (option == 'toggle') data.toggle()
212 | if (option == 'check' || option == 'uncheck') data.setCheck(option)
213 | else if (option) data.setState();
214 | });
215 | }
216 |
217 | $.fn.radio.defaults = {
218 | template: ' '
219 | }
220 |
221 |
222 | /* RADIO NO CONFLICT
223 | * ================== */
224 |
225 | $.fn.radio.noConflict = function () {
226 | $.fn.radio = old;
227 | return this;
228 | }
229 |
230 |
231 | /* RADIO DATA-API
232 | * =============== */
233 |
234 | $(document).on('click.radio.data-api', '[data-toggle^=radio], .radio', function (e) {
235 | var $radio = $(e.target);
236 | e && e.preventDefault() && e.stopPropagation();
237 | if (!$radio.hasClass('radio')) $radio = $radio.closest('.radio');
238 | $radio.find(':radio').radio('toggle');
239 | });
240 |
241 | $(function () {
242 | $('input[type="radio"]').each(function () {
243 | var $radio = $(this);
244 | $radio.radio();
245 | });
246 | });
247 |
248 | }(window.jQuery);
249 |
--------------------------------------------------------------------------------
/public/assets/scripts/bootstrap/bootstrap-notify.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 |
4 |
5 | Creative Tim Modifications
6 |
7 | Lines: 239, 240 was changed from top: 5px to top: 50% and we added margin-top: -13px. In this way the close button will be aligned vertically
8 | Line:242 - modified when the icon is set, we add the class "alert-with-icon", so there will be enough space for the icon.
9 |
10 |
11 |
12 |
13 | */
14 |
15 |
16 | /*
17 | * Project: Bootstrap Notify = v3.1.5
18 | * Description: Turns standard Bootstrap alerts into "Growl-like" notifications.
19 | * Author: Mouse0270 aka Robert McIntosh
20 | * License: MIT License
21 | * Website: https://github.com/mouse0270/bootstrap-growl
22 | */
23 |
24 | /* global define:false, require: false, jQuery:false */
25 |
26 | (function (factory) {
27 | if (typeof define === 'function' && define.amd) {
28 | // AMD. Register as an anonymous module.
29 | define(['jquery'], factory);
30 | } else if (typeof exports === 'object') {
31 | // Node/CommonJS
32 | factory(require('jquery'));
33 | } else {
34 | // Browser globals
35 | factory(jQuery);
36 | }
37 | }(function ($) {
38 | // Create the defaults once
39 | var defaults = {
40 | element: 'body',
41 | position: null,
42 | type: "info",
43 | allow_dismiss: true,
44 | allow_duplicates: true,
45 | newest_on_top: false,
46 | showProgressbar: false,
47 | placement: {
48 | from: "top",
49 | align: "right"
50 | },
51 | offset: 20,
52 | spacing: 10,
53 | z_index: 1031,
54 | delay: 5000,
55 | timer: 1000,
56 | url_target: '_blank',
57 | mouse_over: null,
58 | animate: {
59 | enter: 'animated fadeInDown',
60 | exit: 'animated fadeOutUp'
61 | },
62 | onShow: null,
63 | onShown: null,
64 | onClose: null,
65 | onClosed: null,
66 | icon_type: 'class',
67 | template: '
'
68 | };
69 |
70 | String.format = function () {
71 | var str = arguments[0];
72 | for (var i = 1; i < arguments.length; i++) {
73 | str = str.replace(RegExp("\\{" + (i - 1) + "\\}", "gm"), arguments[i]);
74 | }
75 | return str;
76 | };
77 |
78 | function isDuplicateNotification(notification) {
79 | var isDupe = false;
80 |
81 | $('[data-notify="container"]').each(function (i, el) {
82 | var $el = $(el);
83 | var title = $el.find('[data-notify="title"]').text().trim();
84 | var message = $el.find('[data-notify="message"]').html().trim();
85 |
86 | // The input string might be different than the actual parsed HTML string!
87 | // ( vs for example)
88 | // So we have to force-parse this as HTML here!
89 | var isSameTitle = title === $("" + notification.settings.content.title + "
").html().trim();
90 | var isSameMsg = message === $("" + notification.settings.content.message + "
").html().trim();
91 | var isSameType = $el.hasClass('alert-' + notification.settings.type);
92 |
93 | if (isSameTitle && isSameMsg && isSameType) {
94 | //we found the dupe. Set the var and stop checking.
95 | isDupe = true;
96 | }
97 | return !isDupe;
98 | });
99 |
100 | return isDupe;
101 | }
102 |
103 | function Notify(element, content, options) {
104 | // Setup Content of Notify
105 | var contentObj = {
106 | content: {
107 | message: typeof content === 'object' ? content.message : content,
108 | title: content.title ? content.title : '',
109 | icon: content.icon ? content.icon : '',
110 | url: content.url ? content.url : '#',
111 | target: content.target ? content.target : '-'
112 | }
113 | };
114 |
115 | options = $.extend(true, {}, contentObj, options);
116 | this.settings = $.extend(true, {}, defaults, options);
117 | this._defaults = defaults;
118 | if (this.settings.content.target === "-") {
119 | this.settings.content.target = this.settings.url_target;
120 | }
121 | this.animations = {
122 | start: 'webkitAnimationStart oanimationstart MSAnimationStart animationstart',
123 | end: 'webkitAnimationEnd oanimationend MSAnimationEnd animationend'
124 | };
125 |
126 | if (typeof this.settings.offset === 'number') {
127 | this.settings.offset = {
128 | x: this.settings.offset,
129 | y: this.settings.offset
130 | };
131 | }
132 |
133 | //if duplicate messages are not allowed, then only continue if this new message is not a duplicate of one that it already showing
134 | if (this.settings.allow_duplicates || (!this.settings.allow_duplicates && !isDuplicateNotification(this))) {
135 | this.init();
136 | }
137 | }
138 |
139 | $.extend(Notify.prototype, {
140 | init: function () {
141 | var self = this;
142 |
143 | this.buildNotify();
144 | if (this.settings.content.icon) {
145 | this.setIcon();
146 | }
147 | if (this.settings.content.url != "#") {
148 | this.styleURL();
149 | }
150 | this.styleDismiss();
151 | this.placement();
152 | this.bind();
153 |
154 | this.notify = {
155 | $ele: this.$ele,
156 | update: function (command, update) {
157 | var commands = {};
158 | if (typeof command === "string") {
159 | commands[command] = update;
160 | } else {
161 | commands = command;
162 | }
163 | for (var cmd in commands) {
164 | switch (cmd) {
165 | case "type":
166 | this.$ele.removeClass('alert-' + self.settings.type);
167 | this.$ele.find('[data-notify="progressbar"] > .progress-bar').removeClass('progress-bar-' + self.settings.type);
168 | self.settings.type = commands[cmd];
169 | this.$ele.addClass('alert-' + commands[cmd]).find('[data-notify="progressbar"] > .progress-bar').addClass('progress-bar-' + commands[cmd]);
170 | break;
171 | case "icon":
172 | var $icon = this.$ele.find('[data-notify="icon"]');
173 | if (self.settings.icon_type.toLowerCase() === 'class') {
174 | $icon.removeClass(self.settings.content.icon).addClass(commands[cmd]);
175 | } else {
176 | if (!$icon.is('img')) {
177 | $icon.find('img');
178 | }
179 | $icon.attr('src', commands[cmd]);
180 | }
181 | break;
182 | case "progress":
183 | var newDelay = self.settings.delay - (self.settings.delay * (commands[cmd] / 100));
184 | this.$ele.data('notify-delay', newDelay);
185 | this.$ele.find('[data-notify="progressbar"] > div').attr('aria-valuenow', commands[cmd]).css('width', commands[cmd] + '%');
186 | break;
187 | case "url":
188 | this.$ele.find('[data-notify="url"]').attr('href', commands[cmd]);
189 | break;
190 | case "target":
191 | this.$ele.find('[data-notify="url"]').attr('target', commands[cmd]);
192 | break;
193 | default:
194 | this.$ele.find('[data-notify="' + cmd + '"]').html(commands[cmd]);
195 | }
196 | }
197 | var posX = this.$ele.outerHeight() + parseInt(self.settings.spacing) + parseInt(self.settings.offset.y);
198 | self.reposition(posX);
199 | },
200 | close: function () {
201 | self.close();
202 | }
203 | };
204 |
205 | },
206 | buildNotify: function () {
207 | var content = this.settings.content;
208 | this.$ele = $(String.format(this.settings.template, this.settings.type, content.title, content.message, content.url, content.target));
209 | this.$ele.attr('data-notify-position', this.settings.placement.from + '-' + this.settings.placement.align);
210 | if (!this.settings.allow_dismiss) {
211 | this.$ele.find('[data-notify="dismiss"]').css('display', 'none');
212 | }
213 | if ((this.settings.delay <= 0 && !this.settings.showProgressbar) || !this.settings.showProgressbar) {
214 | this.$ele.find('[data-notify="progressbar"]').remove();
215 | }
216 | },
217 | setIcon: function () {
218 |
219 | this.$ele.addClass('alert-with-icon');
220 |
221 | if (this.settings.icon_type.toLowerCase() === 'class') {
222 | this.$ele.find('[data-notify="icon"]').addClass(this.settings.content.icon);
223 | } else {
224 | if (this.$ele.find('[data-notify="icon"]').is('img')) {
225 | this.$ele.find('[data-notify="icon"]').attr('src', this.settings.content.icon);
226 | } else {
227 | this.$ele.find('[data-notify="icon"]').append(' ');
228 | }
229 | }
230 | },
231 | styleDismiss: function () {
232 | this.$ele.find('[data-notify="dismiss"]').css({
233 | position: 'absolute',
234 | right: '10px',
235 | top: '50%',
236 | marginTop: '-13px',
237 | zIndex: this.settings.z_index + 2
238 | });
239 | },
240 | styleURL: function () {
241 | this.$ele.find('[data-notify="url"]').css({
242 | backgroundImage: 'url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)',
243 | height: '100%',
244 | left: 0,
245 | position: 'absolute',
246 | top: 0,
247 | width: '100%',
248 | zIndex: this.settings.z_index + 1
249 | });
250 | },
251 | placement: function () {
252 | var self = this,
253 | offsetAmt = this.settings.offset.y,
254 | css = {
255 | display: 'inline-block',
256 | margin: '0px auto',
257 | position: this.settings.position ? this.settings.position : (this.settings.element === 'body' ? 'fixed' : 'absolute'),
258 | transition: 'all .5s ease-in-out',
259 | zIndex: this.settings.z_index
260 | },
261 | hasAnimation = false,
262 | settings = this.settings;
263 |
264 | $('[data-notify-position="' + this.settings.placement.from + '-' + this.settings.placement.align + '"]:not([data-closing="true"])').each(function () {
265 | offsetAmt = Math.max(offsetAmt, parseInt($(this).css(settings.placement.from)) + parseInt($(this).outerHeight()) + parseInt(settings.spacing));
266 | });
267 | if (this.settings.newest_on_top === true) {
268 | offsetAmt = this.settings.offset.y;
269 | }
270 | css[this.settings.placement.from] = offsetAmt + 'px';
271 |
272 | switch (this.settings.placement.align) {
273 | case "left":
274 | case "right":
275 | css[this.settings.placement.align] = this.settings.offset.x + 'px';
276 | break;
277 | case "center":
278 | css.left = 0;
279 | css.right = 0;
280 | break;
281 | }
282 | this.$ele.css(css).addClass(this.settings.animate.enter);
283 | $.each(Array('webkit-', 'moz-', 'o-', 'ms-', ''), function (index, prefix) {
284 | self.$ele[0].style[prefix + 'AnimationIterationCount'] = 1;
285 | });
286 |
287 | $(this.settings.element).append(this.$ele);
288 |
289 | if (this.settings.newest_on_top === true) {
290 | offsetAmt = (parseInt(offsetAmt) + parseInt(this.settings.spacing)) + this.$ele.outerHeight();
291 | this.reposition(offsetAmt);
292 | }
293 |
294 | if ($.isFunction(self.settings.onShow)) {
295 | self.settings.onShow.call(this.$ele);
296 | }
297 |
298 | this.$ele.one(this.animations.start, function () {
299 | hasAnimation = true;
300 | }).one(this.animations.end, function () {
301 | if ($.isFunction(self.settings.onShown)) {
302 | self.settings.onShown.call(this);
303 | }
304 | });
305 |
306 | setTimeout(function () {
307 | if (!hasAnimation) {
308 | if ($.isFunction(self.settings.onShown)) {
309 | self.settings.onShown.call(this);
310 | }
311 | }
312 | }, 600);
313 | },
314 | bind: function () {
315 | var self = this;
316 |
317 | this.$ele.find('[data-notify="dismiss"]').on('click', function () {
318 | self.close();
319 | });
320 |
321 | this.$ele.mouseover(function () {
322 | $(this).data('data-hover', "true");
323 | }).mouseout(function () {
324 | $(this).data('data-hover', "false");
325 | });
326 | this.$ele.data('data-hover', "false");
327 |
328 | if (this.settings.delay > 0) {
329 | self.$ele.data('notify-delay', self.settings.delay);
330 | var timer = setInterval(function () {
331 | var delay = parseInt(self.$ele.data('notify-delay')) - self.settings.timer;
332 | if ((self.$ele.data('data-hover') === 'false' && self.settings.mouse_over === "pause") || self.settings.mouse_over != "pause") {
333 | var percent = ((self.settings.delay - delay) / self.settings.delay) * 100;
334 | self.$ele.data('notify-delay', delay);
335 | self.$ele.find('[data-notify="progressbar"] > div').attr('aria-valuenow', percent).css('width', percent + '%');
336 | }
337 | if (delay <= -(self.settings.timer)) {
338 | clearInterval(timer);
339 | self.close();
340 | }
341 | }, self.settings.timer);
342 | }
343 | },
344 | close: function () {
345 | var self = this,
346 | posX = parseInt(this.$ele.css(this.settings.placement.from)),
347 | hasAnimation = false;
348 |
349 | this.$ele.data('closing', 'true').addClass(this.settings.animate.exit);
350 | self.reposition(posX);
351 |
352 | if ($.isFunction(self.settings.onClose)) {
353 | self.settings.onClose.call(this.$ele);
354 | }
355 |
356 | this.$ele.one(this.animations.start, function () {
357 | hasAnimation = true;
358 | }).one(this.animations.end, function () {
359 | $(this).remove();
360 | if ($.isFunction(self.settings.onClosed)) {
361 | self.settings.onClosed.call(this);
362 | }
363 | });
364 |
365 | setTimeout(function () {
366 | if (!hasAnimation) {
367 | self.$ele.remove();
368 | if (self.settings.onClosed) {
369 | self.settings.onClosed(self.$ele);
370 | }
371 | }
372 | }, 600);
373 | },
374 | reposition: function (posX) {
375 | var self = this,
376 | notifies = '[data-notify-position="' + this.settings.placement.from + '-' + this.settings.placement.align + '"]:not([data-closing="true"])',
377 | $elements = this.$ele.nextAll(notifies);
378 | if (this.settings.newest_on_top === true) {
379 | $elements = this.$ele.prevAll(notifies);
380 | }
381 | $elements.each(function () {
382 | $(this).css(self.settings.placement.from, posX);
383 | posX = (parseInt(posX) + parseInt(self.settings.spacing)) + $(this).outerHeight();
384 | });
385 | }
386 | });
387 |
388 | $.notify = function (content, options) {
389 | var plugin = new Notify(this, content, options);
390 | return plugin.notify;
391 | };
392 | $.notifyDefaults = function (options) {
393 | defaults = $.extend(true, {}, defaults, options);
394 | return defaults;
395 | };
396 | $.notifyClose = function (command) {
397 | if (typeof command === "undefined" || command === "all") {
398 | $('[data-notify]').find('[data-notify="dismiss"]').trigger('click');
399 | } else {
400 | $('[data-notify-position="' + command + '"]').find('[data-notify="dismiss"]').trigger('click');
401 | }
402 | };
403 |
404 | }));
405 |
--------------------------------------------------------------------------------
/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/murilolivorato/vue-laravel-crud/952f86f2e62d7ece467c227bbdefdd740941467d/public/favicon.ico
--------------------------------------------------------------------------------
/public/index.php:
--------------------------------------------------------------------------------
1 |
8 | */
9 |
10 | /*
11 | |--------------------------------------------------------------------------
12 | | Register The Auto Loader
13 | |--------------------------------------------------------------------------
14 | |
15 | | Composer provides a convenient, automatically generated class loader for
16 | | our application. We just need to utilize it! We'll simply require it
17 | | into the script here so that we don't have to worry about manual
18 | | loading any of our classes later on. It feels great to relax.
19 | |
20 | */
21 |
22 | require __DIR__.'/../bootstrap/autoload.php';
23 |
24 | /*
25 | |--------------------------------------------------------------------------
26 | | Turn On The Lights
27 | |--------------------------------------------------------------------------
28 | |
29 | | We need to illuminate PHP development, so let us turn on the lights.
30 | | This bootstraps the framework and gets it ready for use, then it
31 | | will load up this application so that we can run it and send
32 | | the responses back to the browser and delight our users.
33 | |
34 | */
35 |
36 | $app = require_once __DIR__.'/../bootstrap/app.php';
37 |
38 | /*
39 | |--------------------------------------------------------------------------
40 | | Run The Application
41 | |--------------------------------------------------------------------------
42 | |
43 | | Once we have the application, we can handle the incoming request
44 | | through the kernel, and send the associated response back to
45 | | the client's browser allowing them to enjoy the creative
46 | | and wonderful application we have prepared for them.
47 | |
48 | */
49 |
50 | $kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);
51 |
52 | $response = $kernel->handle(
53 | $request = Illuminate\Http\Request::capture()
54 | );
55 |
56 | $response->send();
57 |
58 | $kernel->terminate($request, $response);
59 |
--------------------------------------------------------------------------------
/public/robots.txt:
--------------------------------------------------------------------------------
1 | User-agent: *
2 | Disallow:
3 |
--------------------------------------------------------------------------------
/public/web.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/readme.md:
--------------------------------------------------------------------------------
1 | ⚠️ This project is no longer maintained. It is kept here for reference purposes only. Please be aware that it contains outdated dependencies with known security vulnerabilities.
2 |
3 | ## ABOUT LARAVEL VUE CRUD
4 |
5 | Laravel Vue Crud , VUE 2.0 and LARAVEL 5.4 .
6 |
7 |
8 | - Create Items
9 | - Update Items
10 | - Delete Single Item
11 | - Delete Many Items
12 | - Pagination
13 | - Ajax Request with Axios
14 | - Validation with Laravel Request + Vue
15 |
16 | ## EXAMPLE VIDEO
17 |
18 | Example video at you tube
19 | https://www.youtube.com/watch?v=UBLjQkOwLDw
20 |
21 |
22 |
--------------------------------------------------------------------------------
/readme.md.bak:
--------------------------------------------------------------------------------
1 | ## About Laravel Vue Crud
2 |
3 | Laravel Vue Crud , VUE 2.0 and LARAVEL 5.4 .
4 |
5 |
6 | - Create Items
7 | - Update Items
8 | - Delete Single Item
9 | - Delete Many Items
10 | - Pagination
11 | - Ajax Request with Axios
12 | - Validation with Laravel Request + Vue
13 |
14 | ## Example Video
15 |
16 | Example video at you tube
17 | https://www.youtube.com/watch?v=UBLjQkOwLDw
18 |
19 |
20 |
--------------------------------------------------------------------------------
/resources/assets/js/app.js:
--------------------------------------------------------------------------------
1 |
2 | /**
3 | * First we will load all of this project's JavaScript dependencies which
4 | * includes Vue and other libraries. It is a great starting point when
5 | * building robust, powerful web applications using Vue and Laravel.
6 | */
7 |
8 | require('./bootstrap');
9 |
10 | /**
11 | * Next, we will create a fresh Vue application instance and attach it to
12 | * the page. Then, you may begin adding components to this application
13 | * or customize the JavaScript scaffolding to fit your unique needs.
14 | */
15 |
16 | Vue.component('example', require('./components/Example.vue'));
17 |
18 | const app = new Vue({
19 | el: '#app'
20 | });
21 |
--------------------------------------------------------------------------------
/resources/assets/js/bootstrap.js:
--------------------------------------------------------------------------------
1 |
2 | window._ = require('lodash');
3 |
4 | /**
5 | * We'll load jQuery and the Bootstrap jQuery plugin which provides support
6 | * for JavaScript based Bootstrap features such as modals and tabs. This
7 | * code may be modified to fit the specific needs of your application.
8 | */
9 |
10 | window.$ = window.jQuery = require('jquery');
11 |
12 | require('bootstrap-sass');
13 |
14 | /**
15 | * Vue is a modern JavaScript library for building interactive web interfaces
16 | * using reactive data binding and reusable components. Vue's API is clean
17 | * and simple, leaving you to focus on building your next great project.
18 | */
19 |
20 | window.Vue = require('vue');
21 |
22 | /**
23 | * We'll load the axios HTTP library which allows us to easily issue requests
24 | * to our Laravel back-end. This library automatically handles sending the
25 | * CSRF token as a header based on the value of the "XSRF" token cookie.
26 | */
27 |
28 | window.axios = require('axios');
29 |
30 | window.axios.defaults.headers.common['X-CSRF-TOKEN'] = window.Laravel.csrfToken;
31 | window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
32 |
33 | /**
34 | * Echo exposes an expressive API for subscribing to channels and listening
35 | * for events that are broadcast by Laravel. Echo and event broadcasting
36 | * allows your team to easily build robust real-time web applications.
37 | */
38 |
39 | // import Echo from 'laravel-echo'
40 |
41 | // window.Pusher = require('pusher-js');
42 |
43 | // window.Echo = new Echo({
44 | // broadcaster: 'pusher',
45 | // key: 'your-pusher-key'
46 | // });
47 |
--------------------------------------------------------------------------------
/resources/assets/js/components/Example.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
Example Component
7 |
8 |
9 | I'm an example component!
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
24 |
--------------------------------------------------------------------------------
/resources/assets/sass/_variables.scss:
--------------------------------------------------------------------------------
1 |
2 | // Body
3 | $body-bg: #f5f8fa;
4 |
5 | // Borders
6 | $laravel-border-color: darken($body-bg, 10%);
7 | $list-group-border: $laravel-border-color;
8 | $navbar-default-border: $laravel-border-color;
9 | $panel-default-border: $laravel-border-color;
10 | $panel-inner-border: $laravel-border-color;
11 |
12 | // Brands
13 | $brand-primary: #3097D1;
14 | $brand-info: #8eb4cb;
15 | $brand-success: #2ab27b;
16 | $brand-warning: #cbb956;
17 | $brand-danger: #bf5329;
18 |
19 | // Typography
20 | $icon-font-path: "~bootstrap-sass/assets/fonts/bootstrap/";
21 | $font-family-sans-serif: "Raleway", sans-serif;
22 | $font-size-base: 14px;
23 | $line-height-base: 1.6;
24 | $text-color: #636b6f;
25 |
26 | // Navbar
27 | $navbar-default-bg: #fff;
28 |
29 | // Buttons
30 | $btn-default-color: $text-color;
31 |
32 | // Inputs
33 | $input-border: lighten($text-color, 40%);
34 | $input-border-focus: lighten($brand-primary, 25%);
35 | $input-color-placeholder: lighten($text-color, 30%);
36 |
37 | // Panels
38 | $panel-default-heading-bg: #fff;
39 |
--------------------------------------------------------------------------------
/resources/assets/sass/app.scss:
--------------------------------------------------------------------------------
1 |
2 | // Fonts
3 | @import url(https://fonts.googleapis.com/css?family=Raleway:300,400,600);
4 |
5 | // Variables
6 | @import "variables";
7 |
8 | // Bootstrap
9 | @import "node_modules/bootstrap-sass/assets/stylesheets/bootstrap";
10 |
--------------------------------------------------------------------------------
/resources/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/lang/en/validation.php:
--------------------------------------------------------------------------------
1 | 'The :attribute must be accepted.',
17 | 'active_url' => 'The :attribute is not a valid URL.',
18 | 'after' => 'The :attribute must be a date after :date.',
19 | 'after_or_equal' => 'The :attribute must be a date after or equal to :date.',
20 | 'alpha' => 'The :attribute may only contain letters.',
21 | 'alpha_dash' => 'The :attribute may only contain letters, numbers, and dashes.',
22 | 'alpha_num' => 'The :attribute may only contain letters and numbers.',
23 | 'array' => 'The :attribute must be an array.',
24 | 'before' => 'The :attribute must be a date before :date.',
25 | 'before_or_equal' => 'The :attribute must be a date before or equal to :date.',
26 | 'between' => [
27 | 'numeric' => 'The :attribute must be between :min and :max.',
28 | 'file' => 'The :attribute must be between :min and :max kilobytes.',
29 | 'string' => 'The :attribute must be between :min and :max characters.',
30 | 'array' => 'The :attribute must have between :min and :max items.',
31 | ],
32 | 'boolean' => 'The :attribute field must be true or false.',
33 | 'confirmed' => 'The :attribute confirmation does not match.',
34 | 'date' => 'The :attribute is not a valid date.',
35 | 'date_format' => 'The :attribute does not match the format :format.',
36 | 'different' => 'The :attribute and :other must be different.',
37 | 'digits' => 'The :attribute must be :digits digits.',
38 | 'digits_between' => 'The :attribute must be between :min and :max digits.',
39 | 'dimensions' => 'The :attribute has invalid image dimensions.',
40 | 'distinct' => 'The :attribute field has a duplicate value.',
41 | 'email' => 'The :attribute must be a valid email address.',
42 | 'exists' => 'The selected :attribute is invalid.',
43 | 'file' => 'The :attribute must be a file.',
44 | 'filled' => 'The :attribute field must have a value.',
45 | 'image' => 'The :attribute must be an image.',
46 | 'in' => 'The selected :attribute is invalid.',
47 | 'in_array' => 'The :attribute field does not exist in :other.',
48 | 'integer' => 'The :attribute must be an integer.',
49 | 'ip' => 'The :attribute must be a valid IP address.',
50 | 'json' => 'The :attribute must be a valid JSON string.',
51 | 'max' => [
52 | 'numeric' => 'The :attribute may not be greater than :max.',
53 | 'file' => 'The :attribute may not be greater than :max kilobytes.',
54 | 'string' => 'The :attribute may not be greater than :max characters.',
55 | 'array' => 'The :attribute may not have more than :max items.',
56 | ],
57 | 'mimes' => 'The :attribute must be a file of type: :values.',
58 | 'mimetypes' => 'The :attribute must be a file of type: :values.',
59 | 'min' => [
60 | 'numeric' => 'The :attribute must be at least :min.',
61 | 'file' => 'The :attribute must be at least :min kilobytes.',
62 | 'string' => 'The :attribute must be at least :min characters.',
63 | 'array' => 'The :attribute must have at least :min items.',
64 | ],
65 | 'not_in' => 'The selected :attribute is invalid.',
66 | 'numeric' => 'The :attribute must be a number.',
67 | 'present' => 'The :attribute field must be present.',
68 | 'regex' => 'The :attribute format is invalid.',
69 | 'required' => 'The :attribute field is required.',
70 | 'required_if' => 'The :attribute field is required when :other is :value.',
71 | 'required_unless' => 'The :attribute field is required unless :other is in :values.',
72 | 'required_with' => 'The :attribute field is required when :values is present.',
73 | 'required_with_all' => 'The :attribute field is required when :values is present.',
74 | 'required_without' => 'The :attribute field is required when :values is not present.',
75 | 'required_without_all' => 'The :attribute field is required when none of :values are present.',
76 | 'same' => 'The :attribute and :other must match.',
77 | 'size' => [
78 | 'numeric' => 'The :attribute must be :size.',
79 | 'file' => 'The :attribute must be :size kilobytes.',
80 | 'string' => 'The :attribute must be :size characters.',
81 | 'array' => 'The :attribute must contain :size items.',
82 | ],
83 | 'string' => 'The :attribute must be a string.',
84 | 'timezone' => 'The :attribute must be a valid zone.',
85 | 'unique' => 'The :attribute has already been taken.',
86 | 'uploaded' => 'The :attribute failed to upload.',
87 | 'url' => 'The :attribute format is invalid.',
88 |
89 | /*
90 | |--------------------------------------------------------------------------
91 | | Custom Validation Language Lines
92 | |--------------------------------------------------------------------------
93 | |
94 | | Here you may specify custom validation messages for attributes using the
95 | | convention "attribute.rule" to name the lines. This makes it quick to
96 | | specify a specific custom language line for a given attribute rule.
97 | |
98 | */
99 |
100 | 'custom' => [
101 | 'attribute-name' => [
102 | 'rule-name' => 'custom-message',
103 | ],
104 | ],
105 |
106 | /*
107 | |--------------------------------------------------------------------------
108 | | Custom Validation Attributes
109 | |--------------------------------------------------------------------------
110 | |
111 | | The following language lines are used to swap attribute place-holders
112 | | with something more reader friendly such as E-Mail Address instead
113 | | of "email". This simply helps us make messages a little cleaner.
114 | |
115 | */
116 |
117 | 'attributes' => [],
118 |
119 | ];
120 |
--------------------------------------------------------------------------------
/resources/views/display_all_post_category.blade.php:
--------------------------------------------------------------------------------
1 | @extends('layout.admin')
2 |
3 | @section('content')
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 | Criar Categoria de Notícia
12 |
13 |
29 |
30 |
31 |
32 |
33 |
34 |
35 | Editar Categoria de Notícia
36 |
37 |
38 |
54 |
55 |
56 |
57 |
58 |
59 |
60 | Deletar Categoria de Notícia
61 |
62 |
63 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 | @include('admin/posts/sub_nav')
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
110 |
111 | @{{ message }}
112 |
113 |
114 |
115 |
189 |
190 |
191 |
192 |
217 |
218 |
219 |
220 |
221 |
222 |
223 |
224 |
225 |
226 |
227 |
228 |
229 |
230 |
231 |
232 |
233 |
234 |
235 |
236 |
237 |
238 | @stop
239 |
240 |
241 |
242 |
243 |
--------------------------------------------------------------------------------
/resources/views/errors.blade.php:
--------------------------------------------------------------------------------
1 | @if (count($errors) > 0)
2 |
3 |
4 | @foreach ($errors->all() as $error)
5 | {{ $error }}
6 | @endforeach
7 |
8 |
9 |
10 | @endif
--------------------------------------------------------------------------------
/resources/views/flash.blade.php:
--------------------------------------------------------------------------------
1 | @if(session()->has('flash_message'))
2 |
3 |
14 | @endif
15 |
16 |
17 |
18 | @if(session()->has('flash_message_overlay'))
19 |
20 |
30 | @endif
--------------------------------------------------------------------------------
/resources/views/layout/template.blade.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | Sistema Administrativo
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 | @yield('content')
58 |
59 |
60 |
61 |
62 |
63 |
64 |
75 |
76 |
77 |
78 |
79 |
80 |
81 | @yield('modal_window')
82 |
83 |
84 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 | @include('flash')
108 | @yield('scripts.footer')
109 |
110 |
111 |
112 |
113 |
--------------------------------------------------------------------------------
/resources/views/welcome.blade.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | Laravel
9 |
10 |
11 |
12 |
13 |
14 |
66 |
67 |
68 |
69 | @if (Route::has('login'))
70 |
71 | @if (Auth::check())
72 |
Home
73 | @else
74 |
Login
75 |
Register
76 | @endif
77 |
78 | @endif
79 |
80 |
81 |
82 | Laravel
83 |
84 |
85 |
92 |
93 |
94 |
95 |
96 |
--------------------------------------------------------------------------------
/routes/api.php:
--------------------------------------------------------------------------------
1 | get('/user', function (Request $request) {
17 | return $request->user();
18 | });
19 |
--------------------------------------------------------------------------------
/routes/channels.php:
--------------------------------------------------------------------------------
1 | id === (int) $id;
16 | });
17 |
--------------------------------------------------------------------------------
/routes/console.php:
--------------------------------------------------------------------------------
1 | comment(Inspiring::quote());
18 | })->describe('Display an inspiring quote');
19 |
--------------------------------------------------------------------------------
/routes/web.php:
--------------------------------------------------------------------------------
1 | 'VueCrudController@store' ,
26 | 'as' => 'vue_crud.store'
27 |
28 | ]);
29 |
30 | Route::post('vue-crud/{id}/edit' , [
31 | 'uses' => 'VueCrudController@edit' ,
32 | 'as' => 'vue_crud.edit'
33 | ]);
34 |
35 |
36 | Route::post('vue-crud/update' , [
37 | 'uses' => 'VueCrudController@update' ,
38 | 'as' => 'vue_crud.update'
39 | ]);
40 |
41 | Route::post('vue-crud/delete' , [
42 | 'uses' => 'VueCrudController@delete' ,
43 | 'as' => 'vue_crud.delete'
44 | ]);
45 |
46 |
47 | Route::get('vue-crud/load-display' , [
48 | 'uses' => 'VueCrudController@load_display' ,
49 | 'as' => 'vue_crud.load_display'
50 | ]);
51 |
52 | Route::get('vue-crud' , [
53 | 'uses' => 'VueCrudController@index' ,
54 | 'as' => 'vue_crud'
55 | ]);
--------------------------------------------------------------------------------
/server.php:
--------------------------------------------------------------------------------
1 |
8 | */
9 |
10 | $uri = urldecode(
11 | parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH)
12 | );
13 |
14 | // This file allows us to emulate Apache's "mod_rewrite" functionality from the
15 | // built-in PHP web server. This provides a convenient way to test a Laravel
16 | // application without having installed a "real" web server software here.
17 | if ($uri !== '/' && file_exists(__DIR__.'/public'.$uri)) {
18 | return false;
19 | }
20 |
21 | require_once __DIR__.'/public/index.php';
22 |
--------------------------------------------------------------------------------
/storage/app/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !public/
3 | !.gitignore
4 |
--------------------------------------------------------------------------------
/storage/app/public/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
3 |
--------------------------------------------------------------------------------
/storage/framework/.gitignore:
--------------------------------------------------------------------------------
1 | config.php
2 | routes.php
3 | schedule-*
4 | compiled.php
5 | services.json
6 | events.scanned.php
7 | routes.scanned.php
8 | down
9 |
--------------------------------------------------------------------------------
/storage/framework/cache/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
3 |
--------------------------------------------------------------------------------
/storage/framework/sessions/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
3 |
--------------------------------------------------------------------------------
/storage/framework/testing/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
3 |
--------------------------------------------------------------------------------
/storage/framework/views/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
3 |
--------------------------------------------------------------------------------
/storage/logs/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
3 |
--------------------------------------------------------------------------------
/tests/CreatesApplication.php:
--------------------------------------------------------------------------------
1 | make(Kernel::class)->bootstrap();
19 |
20 | return $app;
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/tests/Feature/ExampleTest.php:
--------------------------------------------------------------------------------
1 | get('/');
20 |
21 | $response->assertStatus(200);
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/tests/TestCase.php:
--------------------------------------------------------------------------------
1 | assertTrue(true);
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/webpack.mix.js:
--------------------------------------------------------------------------------
1 | const { mix } = require('laravel-mix');
2 |
3 | /*
4 | |--------------------------------------------------------------------------
5 | | Mix Asset Management
6 | |--------------------------------------------------------------------------
7 | |
8 | | Mix provides a clean, fluent API for defining some Webpack build steps
9 | | for your Laravel application. By default, we are compiling the Sass
10 | | file for the application as well as bundling up all the JS files.
11 | |
12 | */
13 |
14 | mix.js('resources/assets/js/app.js', 'public/js')
15 | .sass('resources/assets/sass/app.scss', 'public/css');
16 |
--------------------------------------------------------------------------------