Compare commits
162 Commits
v0.1.0-alp
...
devel
| Author | SHA1 | Date | |
|---|---|---|---|
| dec89c2098 | |||
|
|
4120662b12 | ||
| 6163d8a5bd | |||
| ec5b6c8b8b | |||
| cffdcce067 | |||
| a219553f4b | |||
| 5a3780ca85 | |||
| 1736f17d83 | |||
| d53e6ac581 | |||
| 085611cde1 | |||
| eafa0f270f | |||
| 62308e8daa | |||
| eef847e302 | |||
| cd5b57e909 | |||
| f9a28a3d0e | |||
| 1e1b319a6f | |||
| 4a2a17e32c | |||
| e4b3ab0a3c | |||
| a819ef01ff | |||
| 908d8f9328 | |||
| fbb0276055 | |||
| 1ed12d7f31 | |||
| 98b58b5bf7 | |||
| 0e777445e9 | |||
| cae02dfebf | |||
| 0ba070ba54 | |||
| d25fe1cef1 | |||
| cea9baa838 | |||
| b64d954309 | |||
| 11f819cfbc | |||
| b8b39f45e6 | |||
| e0c8491e45 | |||
| 7443d52215 | |||
| bf8bf40a1d | |||
| cbbaf0bf3e | |||
| 0fc166ebeb | |||
| 1a55a1d1e8 | |||
| c6f82a9c62 | |||
| 03900b5b61 | |||
| c0ce480235 | |||
| 2fe5027f8e | |||
| f32e57d3bc | |||
| 9f74c49b76 | |||
| 48ec4d62f3 | |||
| 0a166d75c9 | |||
| 72523344bc | |||
| 0121ed8381 | |||
| 67775716b8 | |||
| 21cc195ce4 | |||
| 0440bba9f4 | |||
| 4f5b745031 | |||
| 8a579a27fd | |||
| a965983b57 | |||
| b008787c61 | |||
| ac1ac587f9 | |||
| e22868bef5 | |||
| 40eb51f836 | |||
| 44c27a9520 | |||
| b852a8e753 | |||
| 8d3d56a219 | |||
| b6a5c99fb6 | |||
| d7fe1fcb81 | |||
| 8ff62254bf | |||
| fc675ce07b | |||
| 9cf1f9a388 | |||
| 109ead8daa | |||
| 60e9f77d2c | |||
| 2b8a9c0d4d | |||
| a174a31b0d | |||
| 717e1be95d | |||
| 0668026eb7 | |||
| bd6d7046db | |||
| d3629f1e75 | |||
| a827342a30 | |||
| 8381aa068d | |||
| 58e9344180 | |||
| b5eb6c383b | |||
| 48606856c4 | |||
| 9f0c93c921 | |||
| 8dff2e0853 | |||
| 0f382d4182 | |||
| 0050c3547e | |||
| 350c5737b7 | |||
| fabf85ffb5 | |||
| 4f9378899b | |||
| 031e4957b4 | |||
| 957cc88a3f | |||
| 6a26529bbf | |||
| ff39c80f27 | |||
| e4f3834488 | |||
| beec4b8dce | |||
| a773b825d0 | |||
| b3df3f0b47 | |||
| 8d0576099c | |||
| 69b93bc3f6 | |||
| 75761353ca | |||
| ea11579670 | |||
| 1e2b85910c | |||
| c020fe86f0 | |||
| 03449a5c27 | |||
| 1318b50fcc | |||
| d3f0695866 | |||
| 4850b5bbef | |||
| 0ee7d4d363 | |||
| 83ccd7ec19 | |||
| 920584d779 | |||
| 54b2dda9ea | |||
| f90974ba09 | |||
| 36a863eafd | |||
| 7f80290ff8 | |||
| 3dc54235c5 | |||
| 8f5ccad560 | |||
| 7a85f2280a | |||
| d5f4d5c827 | |||
| b82ec0adc0 | |||
| fcbe1e1a4e | |||
| 66157c3477 | |||
|
|
792d1a0580 | ||
|
|
84c0eaa48b | ||
| 30cf03bd7d | |||
| dd62afe67c | |||
| f22943403a | |||
| 2ed8ede5f0 | |||
| 20f050044b | |||
| dab7869fdf | |||
| 19ea72be6c | |||
| 7183e9d96c | |||
| d3729c6fe3 | |||
| a8a25063ac | |||
| 9952c06c71 | |||
| c78fa832a2 | |||
| 3ebca7bb4a | |||
| 91608dcb7d | |||
| 235508dd15 | |||
| b05d49b72b | |||
| d554066dd5 | |||
| f172afdfc8 | |||
| 2af799240c | |||
| d8a8e363d2 | |||
| a9136cb13f | |||
| ce5527ecde | |||
| 8fc2b6ae83 | |||
| 401a061aeb | |||
| 33f6d84f4f | |||
| ca4a7a9fc3 | |||
| 9f7bab7688 | |||
| d616b5c2e9 | |||
| 2f1678684e | |||
| 2fdb5ec721 | |||
| c865d6f205 | |||
| d036e2f0d9 | |||
| a03157062f | |||
| 11b62f5a44 | |||
| 27f74bd726 | |||
| 4ca2bc11d2 | |||
| 96f95220a1 | |||
| 4f44841e8a | |||
| 9a14f95ad7 | |||
| b7bf393f3b | |||
| 1504919945 | |||
| bebac2cd6d | |||
| 2021efb8b8 |
52
.env_new
Normal file
52
.env_new
Normal file
@@ -0,0 +1,52 @@
|
||||
APP_NAME=BuBoFamily
|
||||
APP_ENV=local
|
||||
APP_KEY=base64:YQ7wQmtsVJrAkX5v40lzXuJX03OA20NTQHcnDHsFOp0=
|
||||
APP_DEBUG=true
|
||||
APP_URL=http://bubofamily.mydomain.loc
|
||||
|
||||
LOG_CHANNEL=stack
|
||||
LOG_DEPRECATIONS_CHANNEL=null
|
||||
LOG_LEVEL=debug
|
||||
|
||||
DB_CONNECTION=mysql
|
||||
DB_HOST=127.0.0.1
|
||||
DB_PORT=3306
|
||||
DB_DATABASE=bubofamily_db
|
||||
DB_USERNAME=flavio
|
||||
DB_PASSWORD=Portalnet3
|
||||
|
||||
BROADCAST_DRIVER=log
|
||||
CACHE_DRIVER=file
|
||||
FILESYSTEM_DRIVER=local
|
||||
QUEUE_CONNECTION=sync
|
||||
SESSION_DRIVER=file
|
||||
SESSION_LIFETIME=120
|
||||
|
||||
MEMCACHED_HOST=127.0.0.1
|
||||
|
||||
REDIS_HOST=127.0.0.1
|
||||
REDIS_PASSWORD=null
|
||||
REDIS_PORT=6379
|
||||
|
||||
MAIL_MAILER=smtp
|
||||
MAIL_HOST=mailhog
|
||||
MAIL_PORT=1025
|
||||
MAIL_USERNAME=null
|
||||
MAIL_PASSWORD=null
|
||||
MAIL_ENCRYPTION=null
|
||||
MAIL_FROM_ADDRESS=null
|
||||
MAIL_FROM_NAME="${APP_NAME}"
|
||||
|
||||
AWS_ACCESS_KEY_ID=
|
||||
AWS_SECRET_ACCESS_KEY=
|
||||
AWS_DEFAULT_REGION=us-east-1
|
||||
AWS_BUCKET=
|
||||
AWS_USE_PATH_STYLE_ENDPOINT=false
|
||||
|
||||
PUSHER_APP_ID=
|
||||
PUSHER_APP_KEY=
|
||||
PUSHER_APP_SECRET=
|
||||
PUSHER_APP_CLUSTER=mt1
|
||||
|
||||
MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
|
||||
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
|
||||
33
.gitea/workflows/compile.yaml
Normal file
33
.gitea/workflows/compile.yaml
Normal file
@@ -0,0 +1,33 @@
|
||||
name: Laravel
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ "devel" ]
|
||||
pull_request:
|
||||
branches: [ "devel" ]
|
||||
|
||||
jobs:
|
||||
laravel-tests:
|
||||
|
||||
runs-on: linux_amd64
|
||||
|
||||
steps:
|
||||
- uses: shivammathur/setup-php@15c43e89cdef867065b0213be354c2841860869e
|
||||
with:
|
||||
php-version: '8.1'
|
||||
- uses: actions/checkout@v3
|
||||
- name: Copy .env
|
||||
run: php -r "file_exists('.env') || copy('.env.example', '.env');"
|
||||
- name: Install Dependencies
|
||||
run: composer install -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist
|
||||
- name: Generate key
|
||||
run: php artisan key:generate
|
||||
- name: styles and js creation
|
||||
run: npm install && npm prod
|
||||
- name: Directory Permissions
|
||||
run: chmod -R 777 storage bootstrap/cache
|
||||
- name: Execute tests (Unit and Feature tests) via PHPUnit
|
||||
env:
|
||||
DB_CONNECTION: mysql
|
||||
DB_DATABASE: bubofamily
|
||||
run: vendor/bin/phpunit
|
||||
20
.gitea/workflows/test.yaml
Normal file
20
.gitea/workflows/test.yaml
Normal file
@@ -0,0 +1,20 @@
|
||||
name: Gitea Actions Demo
|
||||
run-name: ${{ gitea.actor }} is testing out Gitea Actions
|
||||
on: [push]
|
||||
|
||||
jobs:
|
||||
Explore-Gitea-Actions:
|
||||
runs-on: linux_amd64
|
||||
steps:
|
||||
- run: echo "The job was automatically triggered by a ${{ gitea.event_name }} event."
|
||||
- run: echo "This job is now running on a ${{ runner.os }} server hosted by Gitea!"
|
||||
- run: echo "The name of your branch is ${{ gitea.ref }} and your repository is ${{ gitea.repository }}."
|
||||
- run: echo "${{ GITHUB_WORKSPACE }}"
|
||||
- name: Check out repository code
|
||||
uses: actions/checkout@v3
|
||||
- run: echo "The ${{ gitea.repository }} repository has been cloned to the runner."
|
||||
- run: echo "The workflow is now ready to test your code on the runner."
|
||||
- name: List files in the repository
|
||||
run: |
|
||||
ls ${{ gitea.workspace }}
|
||||
- run: echo "This job's status is ${{ job.status }}."
|
||||
2
.gitignore
vendored
2
.gitignore
vendored
@@ -19,3 +19,5 @@ yarn-error.log
|
||||
/.vscode
|
||||
resources/views/tmp/*
|
||||
|
||||
public/ovpn_config.ovpn
|
||||
*.txt
|
||||
40
README.md
40
README.md
@@ -1,37 +1,27 @@
|
||||
# Gestionale di Famiglia
|
||||
Piccolo sistema di gestione famigliare.
|
||||
# Gestionale per le famiglie
|
||||
|
||||
Questo progetto nasce sia come esercizio per utilizzare Laravel, che come esigenza personale.
|
||||
Nato come sola gestione finanziaria per un utilizzo domestico, piano piano si sono aggiunte delle necessità e idee che hanno reso il "piccolo" gestionale di diventare ciò che è ora. L'obiettivo finale è di creare un sistema di gestione centrale per tutte le esigenze e necessità che si incontrano nel gestire una famiglia ( o almeno quelle parametrizzabili )
|
||||
|
||||
Piccolo sistema di gestione.
|
||||
Al momento sono presenti:
|
||||
|
||||
- Gestione delle Entrate e uscite con possibilità di inserimento delle foto degli scontrini ed eventuali documenti in PDF.
|
||||
- Possibilità di importare gli estratti conto da un file excel o csv.
|
||||
- Un sistema di gestione delle letture dei contatori per il GAS e per l'Energia elettrica
|
||||
- Un sistema di gestione delle autovetture e relative operazioni effettuate su di esse.
|
||||
- Un sistema di gestione delle letture dei contatori per il GAS e per l'Energia elettrica [Da rivedere]
|
||||
- Un sistema di gestione delle autovetture e relative operazioni effettuate su di esse. [Da rivedere]
|
||||
- Una rubrica telefonica e degli indirizzi
|
||||
- Una gestione dei progetti (ancora in sviluppo)
|
||||
- Una gestione degli utenti e dei gruppi e relativi permessi.
|
||||
- Una gestione dei progetti (ancora in sviluppo) [Da rivedere]
|
||||
- Una gestione degli utenti e dei gruppi e relativi permessi. [Da migliorare]
|
||||
- Gestione dei documenti
|
||||
- Gestione di un calendario condiviso
|
||||
|
||||
*Sviluppato in php, mysql, jquery su framework Laravel*.
|
||||
|
||||
|
||||
## Installazione
|
||||
- clonare il repository
|
||||
- copiare il file .env.example
|
||||
- inserire le informazioni del database (username,password,dbname)
|
||||
- lanciare >composer install
|
||||
- lanciare php artisan migrate
|
||||
- lanciare i seeds (categorie e utenti di default)
|
||||
|
||||
|
||||
## Sviluppatori
|
||||
## Sviluppatori (attualmente)
|
||||
Flavio Barachino <flavio.barachino@lavorain.cloud>
|
||||
|
||||
### Vuoi partecipare?
|
||||
Scrivimi con le tue proposte, le tue critiche, i tuoi suggerimenti.
|
||||
|
||||
=======
|
||||
## Sviluppatori
|
||||
Flavio Barachino <flavio.barachino@lavorain.cloud>
|
||||
|
||||
### Vuoi partecipare?
|
||||
Scrivimi con le tue proposte, le tue critiche, i tuoi suggerimenti.
|
||||
|
||||
Scrivici con le tue proposte, le tue critiche, i tuoi suggerimenti.
|
||||
Gestionale <bubofamily@lavorain.cloud>
|
||||
|
||||
@@ -5,10 +5,76 @@ namespace App\Http\Controllers;
|
||||
use App\Models\anagrafica;
|
||||
use App\Models\contatto;
|
||||
use Illuminate\Http\Request;
|
||||
use Google\Client;
|
||||
Use Google\Service\PeopleService;
|
||||
|
||||
class AnagraficaController extends Controller
|
||||
{
|
||||
//
|
||||
// GOOGLE CONTACTS PART
|
||||
|
||||
// private $google_client;
|
||||
|
||||
/* public function getToken()
|
||||
{
|
||||
$client = new Client();
|
||||
$client->setApplicationName('gestionale.lavorain.cloud');
|
||||
if(!is_null($client->getAccessToken())){}
|
||||
elseif(!is_null(session('access_token'))) // is_null(Session::get('access_token', null))
|
||||
{
|
||||
$client->setAccessToken(session('access_token'));
|
||||
}
|
||||
else
|
||||
{
|
||||
$scope = array();
|
||||
$scope[] = 'https://www.googleapis.com/auth/contacts';
|
||||
// $client->
|
||||
putenv('GOOGLE_APPLICATION_CREDENTIALS='.storage_path('app/google-calendar/service_key.json')); //this can be created with other ENV mode server side
|
||||
$client->useApplicationDefaultCredentials();
|
||||
$token = $client->getAccessToken();
|
||||
session(['access_token' => $token]);
|
||||
}
|
||||
return $client;
|
||||
}*/
|
||||
|
||||
public function getGoogleContacts()
|
||||
{
|
||||
$client = $this->getToken();
|
||||
$service = new PeopleService($client);
|
||||
$profile = $service->people_connections->listPeopleConnections('people/me', array('personFields' => 'names,emailAddresses,phoneNumbers'));
|
||||
}
|
||||
public function getToken()
|
||||
{
|
||||
$configJson =storage_path('app/google-calendar/service_key.json');
|
||||
// $configJson =storage_path('app/google-calendar/people.json');
|
||||
// define an application name
|
||||
$applicationName = 'gestionale-di-famiglia';
|
||||
|
||||
// create the client
|
||||
$client = new \Google_Client();
|
||||
$client->setApplicationName($applicationName);
|
||||
$client->setAuthConfig($configJson);
|
||||
$client->setAccessType('offline'); // necessary for getting the refresh token
|
||||
$client->setApprovalPrompt ('force'); // necessary for getting the refresh token
|
||||
// scopes determine what google endpoints we can access. keep it simple for now.
|
||||
|
||||
$client->setScopes(
|
||||
[
|
||||
/*
|
||||
\Google\Service\Oauth2::USERINFO_PROFILE,
|
||||
\Google\Service\Oauth2::USERINFO_EMAIL,
|
||||
\Google\Service\Oauth2::OPENID,
|
||||
*/
|
||||
\Google\Service\PeopleService::CONTACTS // allows reading of google drive metadata
|
||||
]
|
||||
);
|
||||
$client->setIncludeGrantedScopes(true);
|
||||
|
||||
return $client;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public function newContact()
|
||||
{
|
||||
return view('anagrafica.form');
|
||||
|
||||
10
app/Http/Controllers/AssociazioneController.php
Normal file
10
app/Http/Controllers/AssociazioneController.php
Normal file
@@ -0,0 +1,10 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class AssociazioneController extends Controller
|
||||
{
|
||||
//
|
||||
}
|
||||
16
app/Http/Controllers/AvvisoController.php
Normal file
16
app/Http/Controllers/AvvisoController.php
Normal file
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use App\Models\Avviso;
|
||||
|
||||
class AvvisoController extends Controller
|
||||
{
|
||||
//
|
||||
public function saveAvviso(Request $request)
|
||||
{
|
||||
Avviso::newAvviso($request);
|
||||
return redirect()->back();
|
||||
}
|
||||
}
|
||||
@@ -18,7 +18,7 @@ class CategorieController extends Controller
|
||||
|
||||
public static function insCategorie(Request $request)
|
||||
{
|
||||
Categorie::inserisci($request['cat_name']);
|
||||
Categorie::inserisci($request);
|
||||
return view('conti.categorie.list',['categorie'=>Categorie::list()]);
|
||||
}
|
||||
|
||||
@@ -32,14 +32,14 @@ class CategorieController extends Controller
|
||||
|
||||
public function updatePostCategorie(Request $request)
|
||||
{
|
||||
Categorie::updateNameById($request['id'],$request['cat_name']);
|
||||
Categorie::updateNameById($request);
|
||||
return redirect(route('categorie'));
|
||||
}
|
||||
|
||||
|
||||
public function apiList()
|
||||
{
|
||||
$categorie=Categorie::list();
|
||||
$categorie=Categorie::listCategorieAPI();
|
||||
return json_encode($categorie);
|
||||
}
|
||||
|
||||
@@ -48,4 +48,16 @@ class CategorieController extends Controller
|
||||
$categorie = Categorie::getById($id);
|
||||
return json_encode($categorie);
|
||||
}
|
||||
|
||||
public function apiListSpesa()
|
||||
{
|
||||
$categorie=Categorie::listSpesa();
|
||||
return json_encode($categorie);
|
||||
}
|
||||
|
||||
public function apiListEntrata()
|
||||
{
|
||||
$categorie=Categorie::listEntrata();
|
||||
return json_encode($categorie);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,4 +23,6 @@ class CondominioController extends Controller
|
||||
{
|
||||
abort(403);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
65
app/Http/Controllers/ContrattiController.php
Normal file
65
app/Http/Controllers/ContrattiController.php
Normal file
@@ -0,0 +1,65 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use App\Models\Contratti;
|
||||
use App\Models\GenDoc;
|
||||
use Carbon\Carbon;
|
||||
|
||||
class ContrattiController extends Controller
|
||||
{
|
||||
//
|
||||
public function contratti()
|
||||
{
|
||||
return view('contratti.lista',['data'=>Contratti::getAllContratto()]);
|
||||
}
|
||||
|
||||
public function newContratto(Request $request)
|
||||
{
|
||||
// Contratti::storeContratto($request);
|
||||
//dd($request);
|
||||
if (isset($request['filename'])) {
|
||||
$filename = $request->file('filename')->store('Contratti');
|
||||
}else{
|
||||
$filename=null;
|
||||
}
|
||||
Contratti::create([
|
||||
'numero'=>$request['numero'],
|
||||
'nome'=>$request['nome'],
|
||||
'datainizio'=>date_format(date_create($request['datainizio']),'Y-m-d'),
|
||||
'datatermine'=>date_format(date_create($request['datatermine']),'Y-m-d'),
|
||||
'fornitore'=>$request['fornitore'],
|
||||
'tipo'=>$request['tipo'],
|
||||
'importo'=>$request['importo'],
|
||||
'scadenzapagamento'=>date_format(date_create($request['scadenzapagamento']),'Y-m-d'),
|
||||
'stato'=>$request['stato'],
|
||||
'note'=>$request['note'],
|
||||
'filename'=>$filename,
|
||||
]);
|
||||
return redirect()->back();
|
||||
}
|
||||
/* */
|
||||
|
||||
public function schedaContratto($id)
|
||||
{
|
||||
$contratto = Contratti::getContrattoById($id);
|
||||
return view('contratti.detail',[
|
||||
'contratto'=>$contratto,
|
||||
'docs' => \App\Models\GenDoc::listDocument(1,$id)
|
||||
]);
|
||||
}
|
||||
|
||||
public function documentDelete(Request $id)
|
||||
{
|
||||
// return dd($id);
|
||||
// $entity=1;
|
||||
$contratto=GenDoc::find($id['id']);
|
||||
if(file_exists('/storage/'.$contratto->filename))
|
||||
{
|
||||
unlink('storage/'.$contratto->filename);
|
||||
}
|
||||
GenDoc::find($id['id'])->delete();
|
||||
return redirect('/admin/contratti/'.$id['entity_id']);
|
||||
}
|
||||
}
|
||||
@@ -22,10 +22,25 @@ class DocumentiController extends Controller
|
||||
}
|
||||
|
||||
public function fileForm(Request $request){
|
||||
$documenti = Documenti::getList($request->input('id'));
|
||||
return view('conti.documenti.insert', [
|
||||
'id'=>$request->input('id'),
|
||||
$documenti = Documenti::getList($request->input('entity_id'));
|
||||
|
||||
return view('conti.documenti.insert', [
|
||||
'id'=>$request->input('entity_id'),
|
||||
'documenti'=>$documenti
|
||||
]);
|
||||
}
|
||||
|
||||
public function newFolder(Request $req)
|
||||
{
|
||||
// crea una nuova caregoria per i documenti
|
||||
Documenti::store($req);
|
||||
return redirect(route('folders'));
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function listaDocumenti()
|
||||
{
|
||||
return view('documenti.lista',['data'=>Documenti::all()]);
|
||||
}
|
||||
}
|
||||
@@ -4,6 +4,8 @@ namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\Event;
|
||||
use Illuminate\Http\Request;
|
||||
use Spatie\GoogleCalendar\Event as Events;
|
||||
use Carbon\Carbon;
|
||||
|
||||
class FullCalenderController extends Controller
|
||||
{
|
||||
@@ -18,31 +20,14 @@ class FullCalenderController extends Controller
|
||||
*/
|
||||
|
||||
public function index(Request $request)
|
||||
|
||||
{
|
||||
|
||||
|
||||
|
||||
if($request->ajax()) {
|
||||
|
||||
|
||||
|
||||
$data = Event::whereDate('start', '>=', $request->start)
|
||||
|
||||
$data = Event::whereDate('start', '>=', $request->start)
|
||||
->whereDate('end', '<=', $request->end)
|
||||
|
||||
->get(['id', 'title', 'start', 'end']);
|
||||
|
||||
|
||||
|
||||
return response()->json($data);
|
||||
|
||||
return response()->json($data);
|
||||
}
|
||||
|
||||
|
||||
|
||||
return view('fullcalendar');
|
||||
|
||||
return view('calendario.fullcalendar');
|
||||
}
|
||||
|
||||
|
||||
@@ -58,72 +43,53 @@ class FullCalenderController extends Controller
|
||||
*/
|
||||
|
||||
public function ajax(Request $request)
|
||||
|
||||
{
|
||||
|
||||
|
||||
|
||||
switch ($request->type) {
|
||||
|
||||
case 'add':
|
||||
|
||||
$event = Event::create([
|
||||
|
||||
'title' => $request->title,
|
||||
|
||||
'start' => $request->start,
|
||||
|
||||
'end' => $request->end,
|
||||
|
||||
]);
|
||||
|
||||
|
||||
|
||||
return response()->json($event);
|
||||
|
||||
break;
|
||||
|
||||
|
||||
|
||||
case 'update':
|
||||
|
||||
$event = Event::find($request->id)->update([
|
||||
|
||||
'title' => $request->title,
|
||||
|
||||
'start' => $request->start,
|
||||
|
||||
'end' => $request->end,
|
||||
|
||||
]);
|
||||
|
||||
|
||||
|
||||
return response()->json($event);
|
||||
|
||||
break;
|
||||
|
||||
|
||||
|
||||
case 'delete':
|
||||
|
||||
$event = Event::find($request->id)->delete();
|
||||
|
||||
|
||||
|
||||
return response()->json($event);
|
||||
|
||||
break;
|
||||
|
||||
|
||||
|
||||
default:
|
||||
|
||||
# code...
|
||||
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function showDemo()
|
||||
{
|
||||
return view('calendario.fullcalendar');
|
||||
}
|
||||
|
||||
public function saveEventToGoogle(Request $request){
|
||||
$event = new Events;
|
||||
$event->name = $request['title'];
|
||||
$event->description=$request['descrizione'];
|
||||
$tzStart = $request['DateStart'].'T'.$request['HourStart'].' +02:00';
|
||||
$tzEnd = $request['DateEnd'].'T'.$request['HourEnd'].' +02:00';
|
||||
$event->startDateTime = Carbon::parse($tzStart);
|
||||
$event->endDateTime = Carbon::parse($tzEnd);
|
||||
$event->save();
|
||||
return view('calendario.fullcalendar');
|
||||
}
|
||||
}
|
||||
|
||||
35
app/Http/Controllers/GenDocController.php
Normal file
35
app/Http/Controllers/GenDocController.php
Normal file
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use App\Models\GenDoc;
|
||||
|
||||
class GenDocController extends Controller
|
||||
{
|
||||
//
|
||||
public function fileForm(Request $request){
|
||||
$entity_id=$request->input('entity_id');
|
||||
$entity=$request->input('entity');
|
||||
|
||||
if(!$request->input('entity_id'))
|
||||
{
|
||||
$entity_id=0;
|
||||
}
|
||||
$documenti = GenDoc::listDocument($entity,$entity_id);
|
||||
return view('conti.documenti.gendoc', [
|
||||
'id'=>$entity_id,
|
||||
'entity'=>$entity,
|
||||
'documenti'=>$documenti,
|
||||
]);
|
||||
}
|
||||
|
||||
public function storeFile(Request $request){
|
||||
GenDoc::saveDocument($request);
|
||||
return redirect()->back();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
10
app/Http/Controllers/GruppiController.php
Normal file
10
app/Http/Controllers/GruppiController.php
Normal file
@@ -0,0 +1,10 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class GruppiController extends Controller
|
||||
{
|
||||
//
|
||||
}
|
||||
24
app/Http/Controllers/HomeAssistantAPIController.php
Normal file
24
app/Http/Controllers/HomeAssistantAPIController.php
Normal file
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use App\Models\HomeAssistantAPI;
|
||||
|
||||
class HomeAssistantAPIController extends Controller
|
||||
{
|
||||
// Connessione RestAPI di HomeAssistant
|
||||
|
||||
public function getContatore()
|
||||
{
|
||||
$kwh = HomeAssistantAPI::getSensorState('sensor.contatore_casa');
|
||||
return $kwh->state;
|
||||
}
|
||||
|
||||
public function getStatoPompa()
|
||||
{
|
||||
$statoPompa = HomeAssistantAPI::getSensorState('switch.pompa_pozzo');
|
||||
return $statoPompa->state;
|
||||
//dd($statoPompa);
|
||||
}
|
||||
}
|
||||
@@ -5,8 +5,12 @@ namespace App\Http\Controllers;
|
||||
use App\Models\Categorie;
|
||||
use App\Models\Movimenti;
|
||||
use App\Models\tag;
|
||||
use App\Models\Task;
|
||||
use App\Models\Avviso;
|
||||
// use App\Http\Controllers\Auth;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Rap2hpoutre\FastExcel\FastExcel;
|
||||
|
||||
class MovimentiController extends Controller
|
||||
@@ -37,11 +41,22 @@ class MovimentiController extends Controller
|
||||
|
||||
public static function dashboard()
|
||||
{
|
||||
$bilancio=Movimenti::getSaldo(date('Y'));
|
||||
/*$bilancio=Movimenti::getSaldo(date('Y'));*/
|
||||
$entrate=Movimenti::getEntrate(date('Y'));
|
||||
$uscite=Movimenti::getUscite(date('Y'));
|
||||
$saldo=Movimenti::getSaldoTot();
|
||||
$mieiTasks=Task::getTaskAssignedToUser(Auth::id());
|
||||
// $TasksAssegnati=Task::getTaskAssignedByUser(Auth::id());
|
||||
// $avvisi=Avviso::getAvvisi();
|
||||
$avvisi=Avviso::getActualAvvisi();
|
||||
|
||||
return view('layouts.dashboard',[
|
||||
'bilancio'=>$bilancio,
|
||||
'entrate'=>$entrate,
|
||||
'uscite'=>$uscite,
|
||||
'saldo'=>$saldo,
|
||||
'mieitask' => $mieiTasks,
|
||||
// 'assegnati' => $TasksAssegnati,
|
||||
'avvisi'=>$avvisi,
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -49,7 +64,7 @@ class MovimentiController extends Controller
|
||||
{
|
||||
Movimenti::insSpesa($request);
|
||||
$mov=Movimenti::getList();
|
||||
$categorie=Categorie::list();
|
||||
$categorie=Categorie::listSpesa();
|
||||
$tags=tag::getList();
|
||||
return view('conti.movimenti.list',
|
||||
[
|
||||
@@ -64,7 +79,7 @@ class MovimentiController extends Controller
|
||||
{
|
||||
Movimenti::insEntrata($request);
|
||||
$mov=Movimenti::getList();
|
||||
$categorie=Categorie::list();
|
||||
$categorie=Categorie::listEntrata();
|
||||
$tags=tag::getList();
|
||||
return view('conti.movimenti.list',
|
||||
[
|
||||
@@ -81,7 +96,7 @@ class MovimentiController extends Controller
|
||||
foreach ($movimenti as $movimento)
|
||||
{
|
||||
$lista[]=[
|
||||
'Data'=>$movimento->Data,
|
||||
'Data'=> date_format(date_create($movimento->Data),'d/m/Y'),
|
||||
'Categoria'=>$movimento->Categoria,
|
||||
'Tag'=>$movimento->Tag,
|
||||
'Descrizione'=>$movimento->Descrizione,
|
||||
@@ -119,30 +134,16 @@ class MovimentiController extends Controller
|
||||
]);
|
||||
}
|
||||
|
||||
/*public function updateMovimenti(Request $request)
|
||||
{
|
||||
$id=$request['id'];
|
||||
$mov=Movimenti::getMovimentoById($id);
|
||||
$categorie=Categorie::list();
|
||||
$tags=tag::getList();
|
||||
return view('conti.movimenti.update',
|
||||
[
|
||||
'categorie'=> $categorie,
|
||||
'movimenti'=> $mov,
|
||||
'tags'=>$tags,
|
||||
]);
|
||||
}*/
|
||||
|
||||
public function updatePostMovimenti(Request $request)
|
||||
{
|
||||
Movimenti::updateMovimenti($request);
|
||||
return redirect(route('movimenti'));
|
||||
return redirect()->back();
|
||||
}
|
||||
|
||||
public function deleteMovimenti(Request $request)
|
||||
{
|
||||
Movimenti::deleteMovimento($request['id']);
|
||||
return redirect(route('movimenti'));
|
||||
return redirect()->back();
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -6,7 +6,9 @@ use App\Models\Progetti;
|
||||
use App\Models\User;
|
||||
use Illuminate\Http\Request;
|
||||
use App\Models\RigaProgetto;
|
||||
use App\Models\GenDoc;
|
||||
use function GuzzleHttp\json_encode;
|
||||
use Barryvdh\DomPDF\Facade\Pdf;
|
||||
|
||||
class ProgettiController extends Controller
|
||||
{
|
||||
@@ -52,4 +54,62 @@ class ProgettiController extends Controller
|
||||
//dd($righe);
|
||||
}
|
||||
|
||||
public function chiudiProgetto(Request $id)
|
||||
{
|
||||
Progetti::chiudiProgetto($id['id']);
|
||||
return redirect(Route('progetti'));
|
||||
}
|
||||
|
||||
public function riapriProgetto(Request $id)
|
||||
{
|
||||
Progetti::riapriProgetto($id['id']);
|
||||
return redirect(Route('progetti'));
|
||||
}
|
||||
|
||||
public function stampaPDFProgetto(Request $id)
|
||||
{
|
||||
$progetto_id=$id['id'];
|
||||
$progetto = Progetti::getProgettoById($progetto_id);
|
||||
$righe = RigaProgetto::getRigheProgetto($progetto_id);
|
||||
$costo_tot=RigaProgetto::getCostoRighe($progetto_id);
|
||||
$pdf=Pdf::loadview('progetti.PDF.scheda',['dettaglio'=>$progetto,'righe'=>$righe, 'tot'=>$costo_tot]);
|
||||
return $pdf->stream();
|
||||
}
|
||||
|
||||
public function documentoProgetto(Request $request)
|
||||
{
|
||||
$documenti = GenDoc::listDocument(3,$request->input('entity_id'));
|
||||
|
||||
return view('conti.documenti.insert', [
|
||||
'id'=>$request->input('entity_id'),
|
||||
'entity'=>$request->input('entity'),
|
||||
'documenti'=>$documenti
|
||||
]);
|
||||
|
||||
}
|
||||
|
||||
public function modificaProgetto(Request $data)
|
||||
{
|
||||
// funzione di modifica del progetto (form inserimento modificato in js)
|
||||
Progetti::where('id', $data['id'])
|
||||
->update([
|
||||
'nome' => $data['nome'],
|
||||
'descrizione' => $data['descrizione'],
|
||||
//'data_creazione'=>$data['data_creazione'],
|
||||
'data_inizio'=>$data['data_inizio'],
|
||||
'data_fine'=>$data['data_fine'],
|
||||
'fk_user'=>$data['coordinatore'],
|
||||
'budget'=>$data['budget'],
|
||||
'stato'=>$data['stato'],
|
||||
'note' =>$data['note'],
|
||||
]);
|
||||
return redirect()->back();
|
||||
/* dd($data);*/
|
||||
}
|
||||
|
||||
public function getProgettobyId(Request $id)
|
||||
{
|
||||
return json_encode(Progetti::getProgettoById($id['id']));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
10
app/Http/Controllers/RivistaController.php
Normal file
10
app/Http/Controllers/RivistaController.php
Normal file
@@ -0,0 +1,10 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class RivistaController extends Controller
|
||||
{
|
||||
//
|
||||
}
|
||||
@@ -39,7 +39,7 @@ class TagController extends Controller
|
||||
|
||||
public function apiList()
|
||||
{
|
||||
$tags=tag::getList();
|
||||
$tags=tag::getApiList();
|
||||
return json_encode($tags);
|
||||
}
|
||||
|
||||
|
||||
40
app/Http/Controllers/TaskController.php
Normal file
40
app/Http/Controllers/TaskController.php
Normal file
@@ -0,0 +1,40 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use App\Models\Task;
|
||||
|
||||
class TaskController extends Controller
|
||||
{
|
||||
//
|
||||
public function listTask()
|
||||
{
|
||||
return Task::where('termine_il','>=', now())->get();
|
||||
// debug
|
||||
// return get_class_methods($this);
|
||||
}
|
||||
|
||||
public function Task()
|
||||
{
|
||||
return view('tasks.list',['tasks'=>$this->listTask()]);
|
||||
}
|
||||
|
||||
public function newTask(Request $data)
|
||||
{
|
||||
Task::create([
|
||||
'titolo'=>$data['titolo'],
|
||||
'descrizione'=>$data['descrizione'],
|
||||
'assegnato_a'=>$data['assegnato_a'],
|
||||
'creato_da'=>$data['creato_da'],
|
||||
'termine_il'=>$data['termine_il'],
|
||||
'creato_il'=>$data['creato_il'],
|
||||
'chiuso_il'=>$data['chiuso_il'],
|
||||
'stato'=>$data['stato'],
|
||||
]);
|
||||
return redirect()->back();
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -4,58 +4,106 @@ namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Junges\ACL\Models\Group;
|
||||
use Junges\ACL\Models\Permission;
|
||||
// use Junges\ACL\Models\Group;
|
||||
// use Junges\ACL\Models\Permission;
|
||||
use Spatie\Permission\Models\Role;
|
||||
use Spatie\Permission\Models\Permission;
|
||||
use App\Models\User;
|
||||
|
||||
class Utenti extends Controller
|
||||
{
|
||||
//
|
||||
public function nuovoGruppo()
|
||||
|
||||
public function createRole($ruolo)
|
||||
{
|
||||
return view('vendor.junges.form_addGroup',['gruppi'=>Utenti::getGruppi()]);
|
||||
$role=Role::create(['name'=>$ruolo]);
|
||||
return json_encode(Role::all()->pluck('name'));
|
||||
}
|
||||
|
||||
public function saveNuovoGruppo(Request $request)
|
||||
{
|
||||
$group=Group::create(['name' => $request['gruppo'],'description'=>$request['descrizione']]);
|
||||
return view('vendor.junges.form_addGroup',['gruppi'=>Utenti::getGruppi()]);
|
||||
function createPermission($permesso){
|
||||
$permission=Permission::create(['name'=>$permesso]);
|
||||
return json_encode(Permission::all()->pluck('name'));
|
||||
}
|
||||
|
||||
public function nuovoPermesso()
|
||||
{
|
||||
return view('vendor.junges.form_addPermission',['permessi'=>Utenti::getPermessi()]);
|
||||
}
|
||||
public function saveNuovoPermesso(Request $request)
|
||||
{
|
||||
$group=Permission::create(['name' => $request['permesso'],'description'=>$request['descrizione']]);
|
||||
return view('vendor.junges.form_addPermission',['permessi'=>Utenti::getPermessi()]);
|
||||
function userClass() {
|
||||
$user=new User();
|
||||
return get_class_methods($user);
|
||||
}
|
||||
|
||||
public function getPermessi()
|
||||
{
|
||||
return DB::table('permissions')->orderBy('name')->get();
|
||||
// post del create user
|
||||
function createUser(Request $params){
|
||||
User::addUser($params);
|
||||
return redirect('/admin/users/new');
|
||||
}
|
||||
|
||||
public function getGruppi()
|
||||
{
|
||||
return DB::table('groups')->orderBy('name')->get();
|
||||
// mostra il form della creazione dell'utente
|
||||
function addUser(){
|
||||
$roles = Role::all();
|
||||
$users = User::all();
|
||||
return view('users.create',['ruoli'=>$roles,'users'=>$users]);
|
||||
}
|
||||
|
||||
public function vw_assignToGroup()
|
||||
{
|
||||
return view('vendor.junges.assignPermissionToGroup',[
|
||||
'permessi'=>Utenti::getPermessi(),
|
||||
'gruppi'=>Utenti::getGruppi(),
|
||||
]);
|
||||
function listUser(){
|
||||
$users = User::all();
|
||||
return view('users.list',['users'=>$users]);
|
||||
}
|
||||
|
||||
public function assignPermissionToGroup(Request $request)
|
||||
function getUsers(){
|
||||
return User::getUsers();
|
||||
}
|
||||
|
||||
function listRoles(){
|
||||
$roles = Role::all();
|
||||
return $roles;
|
||||
}
|
||||
|
||||
function deleteUser($id) {
|
||||
User::destroy($id);
|
||||
|
||||
return redirect('/admin/users/new');
|
||||
}
|
||||
|
||||
function givePermissionToUser()
|
||||
{
|
||||
$group=Group::findByName($request['gruppo']);
|
||||
$group->assignPermission($request['permesso']);
|
||||
return view('vendor.junges.assignPermissionToGroup',[
|
||||
'permessi'=>Utenti::getPermessi(),
|
||||
'gruppi'=>Utenti::getGruppi(),
|
||||
]);
|
||||
$users=User::all();
|
||||
$permissions=Permission::all();
|
||||
return view('users.assignperm',['users'=>$users,'permissions'=>$permissions]);
|
||||
}
|
||||
|
||||
function assignPermission(Request $request)
|
||||
{
|
||||
//$user=User::getUserbyId($request['user']);
|
||||
$user=User::findOrFail($request['user']);
|
||||
foreach($request['permesso'] as $key => $value){
|
||||
if($value=='true')
|
||||
{
|
||||
$key=str_replace('\'','',$key);
|
||||
$user->givePermissionTo($key);
|
||||
// $permission['allowed'][]=$key;
|
||||
}
|
||||
else
|
||||
{
|
||||
$key=str_replace('\'','',$key);
|
||||
$user->revokePermissionTo($key);
|
||||
// $permission['denied'][]=$key;
|
||||
}
|
||||
|
||||
}
|
||||
return redirect('/admin/users/givepermission');
|
||||
}
|
||||
|
||||
function giveRoleToUser()
|
||||
{
|
||||
$users=User::all();
|
||||
$roles=Role::all();
|
||||
return view('users.assignrole',['users'=>$users,'roles'=>$roles]);
|
||||
}
|
||||
|
||||
function assignRole(Request $request)
|
||||
{
|
||||
//$user=User::getUserbyId($request['user']);
|
||||
$user=User::findOrFail($request['user']);
|
||||
$user->assignRole($request['role']);
|
||||
return redirect('/admin/users/giverole');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -63,6 +63,8 @@ class Kernel extends HttpKernel
|
||||
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
|
||||
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
|
||||
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
|
||||
|
||||
'role' => \Spatie\Permission\Middlewares\RoleMiddleware::class,
|
||||
'permission' => \Spatie\Permission\Middlewares\PermissionMiddleware::class,
|
||||
'role_or_permission' => \Spatie\Permission\Middlewares\RoleOrPermissionMiddleware::class,
|
||||
];
|
||||
}
|
||||
|
||||
39
app/Mail/myTestEmail.php
Normal file
39
app/Mail/myTestEmail.php
Normal file
@@ -0,0 +1,39 @@
|
||||
<?php
|
||||
|
||||
namespace App\Mail;
|
||||
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Mail\Mailable;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
|
||||
|
||||
class myTestEmail extends Mailable
|
||||
{
|
||||
use Queueable, SerializesModels;
|
||||
public $email;
|
||||
/**
|
||||
* Create a new message instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct($email)
|
||||
{
|
||||
//
|
||||
$this->email=$email;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Build the message.
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function build()
|
||||
{
|
||||
$name='none';
|
||||
return $this
|
||||
->subject('Email di Test')
|
||||
->markdown('mail.test',['name' => $name]);
|
||||
}
|
||||
}
|
||||
11
app/Models/Associazione.php
Normal file
11
app/Models/Associazione.php
Normal file
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Associazione extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
}
|
||||
55
app/Models/Avviso.php
Normal file
55
app/Models/Avviso.php
Normal file
@@ -0,0 +1,55 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Facades\Http;
|
||||
|
||||
class Avviso extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
|
||||
protected $fillable=['avviso','creato_il', 'creato_da', 'urgente'];
|
||||
|
||||
public static function newAvviso($data)
|
||||
{
|
||||
self::create([
|
||||
'avviso'=>$data['avviso'],
|
||||
'creato_da'=>$data['creato_da'],
|
||||
'creato_il'=>date('Y-m-d'),
|
||||
'urgente'=>$data['urgente'],
|
||||
]);
|
||||
}
|
||||
|
||||
public static function getAvvisi()
|
||||
{
|
||||
return self::all();
|
||||
}
|
||||
|
||||
public static function getActualAvvisi()
|
||||
{
|
||||
return self::where('creato_il','>=', now()->subMonth())->get();
|
||||
}
|
||||
|
||||
public static function getHAstatus()
|
||||
{
|
||||
/*$response = Http::withHeaders([
|
||||
'Authorization'=>' Bearer '.env('HA_TOKEN'),
|
||||
'Content-Type'=>' application/json',
|
||||
])->get('https://ha.lavorain.cloud/api/services',['domain']);
|
||||
return $response;
|
||||
// return dd($response);*/
|
||||
}
|
||||
|
||||
public static function getAnsaNews()
|
||||
{
|
||||
/*$xmlstring = Http::get('https://www.ansa.it/trentino/notizie/trentino_rss.xml');
|
||||
$xml_file = simplexml_load_string($xmlstring);
|
||||
$json = json_encode($xml_file );
|
||||
$array = json_decode($json,TRUE);
|
||||
dd($array); // return $array;*/
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -17,17 +17,52 @@ class Categorie extends Model
|
||||
|
||||
public static function list()
|
||||
{
|
||||
return DB::table('categories')->orderBy('cat_name')->get();
|
||||
return self::all();
|
||||
}
|
||||
public static function listCategorieAPI()
|
||||
{
|
||||
return self::select('cat_name')->pluck('cat_name');
|
||||
}
|
||||
public static function listSpesa()
|
||||
{
|
||||
return DB::table('categories')->where('cat_uscita','=',1)->orderBy('cat_name')->get();
|
||||
}
|
||||
|
||||
public static function inserisci($name){
|
||||
return DB::table('categories')->insert(['cat_name'=> $name]);
|
||||
public static function listEntrata()
|
||||
{
|
||||
return DB::table('categories')->where('cat_entrata','=',1)->orderBy('cat_name')->get();
|
||||
}
|
||||
|
||||
public static function inserisci($request){
|
||||
if ($request['cat_entrata']==='on')
|
||||
{
|
||||
$entrata=1;
|
||||
}
|
||||
else
|
||||
{
|
||||
$entrata=0;
|
||||
}
|
||||
|
||||
if ($request['cat_uscita']==='on')
|
||||
{
|
||||
$uscita=1;
|
||||
}
|
||||
else
|
||||
{
|
||||
$uscita=0;
|
||||
}
|
||||
|
||||
return DB::table('categories')->insert([
|
||||
'cat_name'=> $request['cat_name'],
|
||||
'cat_entrata'=>$entrata,
|
||||
'cat_uscita'=>$uscita
|
||||
]);
|
||||
}
|
||||
|
||||
public static function deleteById($id){
|
||||
DB::table('categories')
|
||||
->where('id','=', $id)
|
||||
->delete();
|
||||
DB::table('categories')
|
||||
->where('id','=', $id)
|
||||
->delete();
|
||||
}
|
||||
|
||||
public static function getById($id) {
|
||||
@@ -36,11 +71,31 @@ class Categorie extends Model
|
||||
->get();
|
||||
}
|
||||
|
||||
public static function updateNameById($id,$name) {
|
||||
public static function updateNameById($request) {
|
||||
if ($request['cat_entrata']==='on')
|
||||
{
|
||||
$entrata=1;
|
||||
}
|
||||
else
|
||||
{
|
||||
$entrata=0;
|
||||
}
|
||||
|
||||
if ($request['cat_uscita']==='on')
|
||||
{
|
||||
$uscita=1;
|
||||
}
|
||||
else
|
||||
{
|
||||
$uscita=0;
|
||||
}
|
||||
|
||||
DB::table('categories')
|
||||
->where('id','=', $id)
|
||||
->where('id','=', $request['id'])
|
||||
->update([
|
||||
'cat_name' => $name,
|
||||
'cat_name' => $request['cat_name'],
|
||||
'cat_entrata' => $entrata,
|
||||
'cat_uscita'=>$uscita,
|
||||
]);
|
||||
|
||||
}
|
||||
|
||||
43
app/Models/Contratti.php
Normal file
43
app/Models/Contratti.php
Normal file
@@ -0,0 +1,43 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
|
||||
class Contratti extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
|
||||
protected $fillable=[
|
||||
'numero',
|
||||
'nome',
|
||||
'datainizio',
|
||||
'datatermine',
|
||||
'fornitore',
|
||||
'tipo',
|
||||
'importo',
|
||||
'scadenzapagamento',
|
||||
'stato',
|
||||
'note',
|
||||
'filename'
|
||||
];
|
||||
|
||||
|
||||
public static function storeContratto(Request $req){
|
||||
/* dd($req); */
|
||||
|
||||
}
|
||||
|
||||
public static function getAllContratto(){
|
||||
return self::all();
|
||||
}
|
||||
|
||||
public static function getContrattoById($id){
|
||||
return DB::table('contrattis')->where('id','=',$id)->get();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -10,6 +10,12 @@ class Documenti extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
|
||||
|
||||
protected $fillable = [
|
||||
'descrizione',
|
||||
'path',
|
||||
];
|
||||
|
||||
public static function countDocument($id){
|
||||
$quanti=DB::table('documentis')
|
||||
->where('movimenti_id','=',$id)
|
||||
@@ -17,22 +23,52 @@ class Documenti extends Model
|
||||
return $quanti;
|
||||
}
|
||||
|
||||
// Proposta modifica {issue #5} gitea (generalizzazione del documento)
|
||||
/*
|
||||
public static function countDocument($id,$entity)
|
||||
{
|
||||
return self::where('entita','=',$entity)->where('entita_id','=',$id)->count();
|
||||
}
|
||||
*/
|
||||
|
||||
public static function store($req) {
|
||||
// $movimento_id=$req->input('id');
|
||||
// $filename=$req->file('filename')->store('Documenti');
|
||||
DB::table('documentis')
|
||||
->insert([
|
||||
// 'movimenti_id'=>$movimento_id,
|
||||
'descrizione'=>$req->input('descrizione'),
|
||||
'path'=>$req->input('path'),
|
||||
// 'filename'=>$filename,
|
||||
]);
|
||||
}
|
||||
|
||||
// Proposta modifica {issue #5} gitea (generalizzazione del documento)
|
||||
/*
|
||||
public static function store($req) {
|
||||
$movimento_id=$req->input('id');
|
||||
$filename=$req->file('filename')->store('Documenti');
|
||||
DB::table('documentis')
|
||||
->insert([
|
||||
'movimenti_id'=>$movimento_id,
|
||||
'descrizione'=>$req->input('descrizione'),
|
||||
'filename'=>$filename,
|
||||
self::create([
|
||||
'entità'=>$req['entita'], // aggiunto per determinare il tipo di entità a cui si riferisce il documento
|
||||
'entita_id'=>$req['entita_id'], // aggiunto per identificare il record al quale associare il documento (al posto di id_movimento)
|
||||
'descrizione'=>$req['descrizione'],
|
||||
'filename'=>$filename
|
||||
]);
|
||||
}
|
||||
*/
|
||||
|
||||
public static function getList($id)
|
||||
{
|
||||
return DB::table('documentis')
|
||||
->where('movimenti_id','=',$id)
|
||||
->where('movimenti_id','=', $id)
|
||||
->get();
|
||||
}
|
||||
|
||||
// Proposta modifica issue {#5 gitea} (generalizzazione del documento)
|
||||
/*
|
||||
public static function getList($id,$entity)
|
||||
{
|
||||
self::where('entita','=',$entity)->where('entita_id','=',$id)->get();
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
51
app/Models/GenDoc.php
Normal file
51
app/Models/GenDoc.php
Normal file
@@ -0,0 +1,51 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use App\Models\Documenti;
|
||||
|
||||
class GenDoc extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
|
||||
// DocumentiGenerali
|
||||
|
||||
public static function saveDocument($data){
|
||||
|
||||
$filename=$data->file('filename')->store(self::getEntityFolder($data['entity']));
|
||||
DB::table('gen_docs')
|
||||
->insert([
|
||||
'entity'=>$data['entity'],
|
||||
'entity_id'=>($data['entity_id'] ?? 0 ),
|
||||
'descrizione'=>$data['descrizione'],
|
||||
'filename'=>$filename,
|
||||
]);
|
||||
}
|
||||
|
||||
public static function listDocument($entity,$entity_id = 0)
|
||||
{
|
||||
// Ritorna la lista dei documenti in base all'entità e al rispettivo id
|
||||
return DB::table('gen_docs')->where('entity','=',$entity)->where('entity_id','=',$entity_id)->get(); //nuova funzione
|
||||
// return DB::table('documentis')->where('movimenti_id','=', $entity_id)->get();
|
||||
}
|
||||
|
||||
public static function countDocument($entity,$entity_id = 0){
|
||||
// Conta i documenti inseriti per la determinata entità e id
|
||||
$quanti=DB::table('gen_docs')
|
||||
->where('entity','=',$entity)
|
||||
->andWhere('entity_id','=',$entity_id)
|
||||
->count();
|
||||
return $quanti;
|
||||
}
|
||||
|
||||
private static function getEntityFolder($id)
|
||||
{
|
||||
$entita = Documenti::where('id',$id)->pluck('path');
|
||||
|
||||
return $entita[0];
|
||||
//return $entita->path;
|
||||
}
|
||||
}
|
||||
11
app/Models/Gruppi.php
Normal file
11
app/Models/Gruppi.php
Normal file
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Gruppi extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
}
|
||||
26
app/Models/HomeAssistantAPI.php
Normal file
26
app/Models/HomeAssistantAPI.php
Normal file
@@ -0,0 +1,26 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Facades\Http;
|
||||
|
||||
class HomeAssistantAPI extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
|
||||
public static function getSensorState($sensor)
|
||||
{
|
||||
$result=Http::withHeaders(
|
||||
[
|
||||
'Authorization'=>'Bearer '.env('HA_TOKEN'),
|
||||
'Content-Type'=>'application/json',
|
||||
]
|
||||
)->get('https://ha.lavorain.cloud/api/states/'.$sensor);
|
||||
|
||||
return json_decode($result);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -10,15 +10,37 @@ use Rap2hpoutre\FastExcel\FastExcel;
|
||||
class Movimenti extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
protected $dates = ['mov_data'];
|
||||
protected $casts = [ 'mov_data'=>'datetime'];
|
||||
|
||||
public static $query='SELECT
|
||||
a.id,
|
||||
a.mov_data,
|
||||
a.mov_importo,
|
||||
a.mov_descrizione,
|
||||
c.cat_name,
|
||||
t.tag_name,
|
||||
(SELECT Count(entity_id) as quanti FROM gen_docs WHERE entity=0 AND entity_id = a.id) as quanti
|
||||
FROM movimentis as a
|
||||
JOIN tags as t ON a.mov_fk_tags=t.id
|
||||
JOIN categories as c ON a.mov_fk_categoria=c.id';
|
||||
|
||||
public static function getList() {
|
||||
return DB::table('movimentis')
|
||||
->join('categories','movimentis.mov_fk_categoria','=','categories.id')
|
||||
->join('tags','movimentis.mov_fk_tags','=','tags.id')
|
||||
->leftJoin('documentis', 'movimenti_id','=','movimentis.id')
|
||||
->select('movimentis.id','mov_data','mov_descrizione','mov_importo','cat_name','tag_name', DB::raw('Count(movimenti_id) as quanti'))
|
||||
->groupBy('movimentis.id','mov_data','mov_descrizione','mov_importo','cat_name','tag_name')
|
||||
->get();
|
||||
|
||||
|
||||
return DB::select(DB::raw(
|
||||
'SELECT
|
||||
a.id,
|
||||
a.mov_data,
|
||||
a.mov_importo,
|
||||
a.mov_descrizione,
|
||||
c.cat_name,
|
||||
t.tag_name,
|
||||
(SELECT Count(entity_id) as quanti FROM gen_docs WHERE entity=0 AND entity_id = a.id) as quanti
|
||||
FROM movimentis as a
|
||||
JOIN tags as t ON a.mov_fk_tags=t.id
|
||||
JOIN categories as c ON a.mov_fk_categoria=c.id'
|
||||
));
|
||||
}
|
||||
|
||||
public static function getSaldo($date) {
|
||||
@@ -112,38 +134,51 @@ class Movimenti extends Model
|
||||
}
|
||||
|
||||
public static function listByCatMonth($month,$cat,$year) {
|
||||
return DB::table('movimentis')
|
||||
->join('categories','movimentis.mov_fk_categoria','=','categories.id')
|
||||
->join('tags','movimentis.mov_fk_tags','=','tags.id')
|
||||
->where('movimentis.mov_fk_categoria','=',$cat)
|
||||
->whereMonth('mov_data','=',$month)
|
||||
->whereYear('mov_data', '=' , $year)
|
||||
->leftJoin('documentis', 'movimenti_id','=','movimentis.id')
|
||||
->select('movimentis.id','mov_data','mov_descrizione','mov_importo','cat_name','tag_name', DB::raw('Count(movimenti_id) as quanti'))
|
||||
->groupBy('movimentis.id','mov_data','mov_descrizione','mov_importo','cat_name','tag_name')
|
||||
->get();
|
||||
return DB::select(DB::raw('SELECT
|
||||
a.id,
|
||||
a.mov_data,
|
||||
a.mov_importo,
|
||||
a.mov_descrizione,
|
||||
c.cat_name,
|
||||
t.tag_name,
|
||||
(SELECT Count(entity_id) as quanti FROM gen_docs WHERE entity=0 AND entity_id = a.id) as quanti
|
||||
FROM movimentis as a
|
||||
JOIN tags as t ON a.mov_fk_tags=t.id
|
||||
JOIN categories as c ON a.mov_fk_categoria=c.id
|
||||
WHERE Month(a.mov_data)='.$month.' AND Year(a.mov_data)='.$year.' AND a.mov_fk_categoria='.$cat
|
||||
));
|
||||
|
||||
}
|
||||
|
||||
public static function listByCategory($cat) {
|
||||
return DB::table('movimentis')
|
||||
->join('categories','movimentis.mov_fk_categoria','=','categories.id')
|
||||
->join('tags','movimentis.mov_fk_tags','=','tags.id')
|
||||
->where('movimentis.mov_fk_categoria','=',$cat)
|
||||
->leftJoin('documentis', 'movimenti_id','=','movimentis.id')
|
||||
->select('movimentis.id','mov_data','mov_descrizione','mov_importo','cat_name','tag_name', DB::raw('Count(movimenti_id) as quanti'))
|
||||
->groupBy('movimentis.id','mov_data','mov_descrizione','mov_importo','cat_name','tag_name')
|
||||
->get();
|
||||
return DB::select(DB::raw('SELECT
|
||||
a.id,
|
||||
a.mov_data,
|
||||
a.mov_importo,
|
||||
a.mov_descrizione,
|
||||
c.cat_name,
|
||||
t.tag_name,
|
||||
(SELECT Count(entity_id) as quanti FROM gen_docs WHERE entity=0 AND entity_id = a.id) as quanti
|
||||
FROM movimentis as a
|
||||
JOIN tags as t ON a.mov_fk_tags=t.id
|
||||
JOIN categories as c ON a.mov_fk_categoria=c.id
|
||||
WHERE a.mov_fk_categoria = '.$cat ));
|
||||
|
||||
}
|
||||
|
||||
public static function getByTag($tag) {
|
||||
return DB::table('movimentis')
|
||||
->where('mov_fk_tags','=',$tag)
|
||||
->join('categories','movimentis.mov_fk_categoria','=','categories.id')
|
||||
->join('tags','movimentis.mov_fk_tags','=','tags.id')
|
||||
->leftJoin('documentis', 'movimenti_id','=','movimentis.id')
|
||||
->select('movimentis.id','mov_data','mov_descrizione','mov_importo','cat_name','tag_name', DB::raw('Count(movimenti_id) as quanti'))
|
||||
->groupBy('movimentis.id','mov_data','mov_descrizione','mov_importo','cat_name','tag_name')
|
||||
->get();
|
||||
return DB::select(DB::raw('SELECT
|
||||
a.id,
|
||||
a.mov_data,
|
||||
a.mov_importo,
|
||||
a.mov_descrizione,
|
||||
c.cat_name,
|
||||
t.tag_name,
|
||||
(SELECT Count(entity_id) as quanti FROM gen_docs WHERE entity=0 AND entity_id = a.id) as quanti
|
||||
FROM movimentis as a
|
||||
JOIN tags as t ON a.mov_fk_tags=t.id
|
||||
JOIN categories as c ON a.mov_fk_categoria=c.id
|
||||
WHERE a.mov_fk_tags = '.$tag ));
|
||||
}
|
||||
|
||||
public static function importEstrattoIng($filename)
|
||||
@@ -180,6 +215,8 @@ class Movimenti extends Model
|
||||
{
|
||||
$dati=[
|
||||
'mov_data'=>self::dateFormat(0,$line['VALUTA']),
|
||||
// date_format(date_create($movimento->mov_data),'d/m/Y'
|
||||
// 'mov_data'=>date_format(date_create($line['VALUTA']),'Y-m-d'),
|
||||
'mov_fk_categoria'=>1,
|
||||
'mov_descrizione'=>$line['DESCRIZIONE OPERAZIONE'],
|
||||
'mov_importo'=>'-'.trim(str_replace(',','.',(str_replace('.','',$line['DARE'])))),
|
||||
@@ -191,6 +228,7 @@ class Movimenti extends Model
|
||||
{
|
||||
$dati=[
|
||||
'mov_data'=>self::dateFormat(0,$line['VALUTA']),
|
||||
//'mov_data'=>date_format(date_create($line['VALUTA']),'Y-m-d'),
|
||||
'mov_fk_categoria'=>1,
|
||||
'mov_descrizione'=>$line['DESCRIZIONE OPERAZIONE'],
|
||||
'mov_importo'=>trim(str_replace(',','.',(str_replace('.','',$line['AVERE'])))),
|
||||
@@ -213,17 +251,37 @@ class Movimenti extends Model
|
||||
|
||||
private static function dateFormat($type,$string)
|
||||
{
|
||||
|
||||
// $string=(string)$string;
|
||||
if($type)
|
||||
{
|
||||
$string=$string->format('Y-m-d');
|
||||
// $string=$string->format('Y-m-d');
|
||||
list($year,$month,$day) = explode('-',$string);
|
||||
return $day.'/'.$month.'/'.$year;
|
||||
} else {
|
||||
$string=$string->format('d/m/Y');
|
||||
// $string=$string->format('d/m/Y');
|
||||
list($day,$month,$year) =explode('/',$string);
|
||||
return $year.'-'.$month.'-'.$day;
|
||||
}
|
||||
}
|
||||
|
||||
public static function getEntrate($year)
|
||||
{
|
||||
$entrate_anno=DB::table('movimentis')
|
||||
->where('mov_importo','>',0)
|
||||
->whereYear('mov_data', '=' , $year)
|
||||
->sum('mov_importo');
|
||||
//->get();
|
||||
return $entrate_anno;
|
||||
}
|
||||
|
||||
public static function getUscite($year)
|
||||
{
|
||||
$uscite_anno=DB::table('movimentis')
|
||||
->where('mov_importo','<',0)
|
||||
->whereYear('mov_data', '=' , $year)
|
||||
->sum('mov_importo');
|
||||
//->get();
|
||||
return ($uscite_anno);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -54,4 +54,27 @@ class Progetti extends Model
|
||||
DB::table('progettis')->delete($progetto_id);
|
||||
}
|
||||
|
||||
public static function chiudiProgetto($progetto_id)
|
||||
{
|
||||
// chiude il progetto e lo rende non cancellabile e non più editabile
|
||||
// potrà solo essere esportato in PDF
|
||||
DB::table('progettis')
|
||||
->where('id','=', $progetto_id)
|
||||
->update([
|
||||
'stato'=>'chiuso',
|
||||
'data_fine'=>date('Y-m-d'),
|
||||
]);
|
||||
|
||||
}
|
||||
|
||||
public static function riapriProgetto($progetto_id)
|
||||
{
|
||||
DB::table('progettis')
|
||||
->where('id','=', $progetto_id)
|
||||
->update([
|
||||
'stato'=>'aperto',
|
||||
'data_fine'=>null,
|
||||
]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
11
app/Models/Rivista.php
Normal file
11
app/Models/Rivista.php
Normal file
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Rivista extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
}
|
||||
46
app/Models/Task.php
Normal file
46
app/Models/Task.php
Normal file
@@ -0,0 +1,46 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Task extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
|
||||
protected $fillable=['titolo','descrizione','creato_da','assegnato_a','creato_il','termine_il','chiuso_il','stato'];
|
||||
|
||||
public function getAllTasks()
|
||||
{
|
||||
return self::all();
|
||||
}
|
||||
|
||||
//
|
||||
public static function getTaskAssignedToUser($userid)
|
||||
{
|
||||
return self::where('assegnato_a',$userid)->where('termine_il','>=', now())->get();
|
||||
}
|
||||
|
||||
//
|
||||
public static function getTaskAssignedByUser($userid)
|
||||
{
|
||||
return self::where('creato_da',$userid)->get();
|
||||
}
|
||||
|
||||
public static function saveTask($collection)
|
||||
{
|
||||
self::create(
|
||||
[
|
||||
'titolo' => $collection['titolo'],
|
||||
'descrizione'=>$collection['descrizione'],
|
||||
'creato_da'=>$collection['creato_da'],
|
||||
'assegnato_a'=>$collection['assegnato_a'],
|
||||
'creato_il'=>date('Y-m-d'),
|
||||
'termine_il'=>$collection['termine_il'],
|
||||
'stato'=>'Aperto',
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -2,21 +2,18 @@
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Contracts\Auth\MustVerifyEmail;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||
use Illuminate\Foundation\Auth\User as Authenticatable;
|
||||
use Illuminate\Notifications\Notifiable;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Hash;
|
||||
use Laravel\Sanctum\HasApiTokens;
|
||||
//use LdapRecord\Laravel\Auth\Authenticatable;
|
||||
use LdapRecord\Laravel\Auth\AuthenticatesWithLdap;
|
||||
use Junges\ACL\Concerns\HasGroups;
|
||||
|
||||
use Spatie\Permission\Traits\HasRoles;
|
||||
use Illuminate\Foundation\Auth\Access\Authorizable;
|
||||
|
||||
class User extends Authenticatable
|
||||
{
|
||||
use HasApiTokens, HasFactory, Notifiable, AuthenticateswithLdap, HasGroups, SoftDeletes;
|
||||
use HasApiTokens, HasFactory, Notifiable, HasRoles,Authorizable;
|
||||
|
||||
/**
|
||||
* The attributes that are mass assignable.
|
||||
@@ -27,6 +24,7 @@ class User extends Authenticatable
|
||||
'name',
|
||||
'email',
|
||||
'password',
|
||||
'user_role',
|
||||
];
|
||||
|
||||
/**
|
||||
@@ -48,6 +46,8 @@ class User extends Authenticatable
|
||||
'email_verified_at' => 'datetime',
|
||||
];
|
||||
|
||||
protected $guard_name = 'web';
|
||||
|
||||
public function getLdapDomainColumn()
|
||||
{
|
||||
return 'domain';
|
||||
@@ -66,13 +66,22 @@ class User extends Authenticatable
|
||||
|
||||
public static function getUserById($id)
|
||||
{
|
||||
return DB::table('users')->where('id','=',$id)->get();
|
||||
return DB::table('users')->where('id','=',$id)->first();
|
||||
}
|
||||
|
||||
public static function getUsers()
|
||||
{
|
||||
return DB::table('users')->orderBy('name')->get();
|
||||
}
|
||||
|
||||
// Aggiunge un utente e assegna un ruolo
|
||||
public static function addUser($params)
|
||||
{
|
||||
self::create([
|
||||
'name'=>$params['name'],
|
||||
'email'=>$params['email'],
|
||||
'password'=>Hash::make($params['password']),
|
||||
])->assignRole($params['role']);
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,4 +30,5 @@ class contatto extends Model
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -14,6 +14,11 @@ class tag extends Model
|
||||
return DB::table('tags')->orderBy('tag_name')->get();
|
||||
}
|
||||
|
||||
public static function getApiList()
|
||||
{
|
||||
return self::select('tag_name')->pluck('tag_name');
|
||||
}
|
||||
|
||||
public static function inserisci($param) {
|
||||
DB::table('tags')->insert(['tag_name'=> $param['tag_name']]);
|
||||
}
|
||||
|
||||
@@ -26,5 +26,10 @@ class AuthServiceProvider extends ServiceProvider
|
||||
$this->registerPolicies();
|
||||
|
||||
//
|
||||
Gate::before(function ($user, $ability) {
|
||||
if ($user->hasRole('admin')) {
|
||||
return true;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
31
app/View/Components/Widget/Avvisi.php
Normal file
31
app/View/Components/Widget/Avvisi.php
Normal file
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
namespace App\View\Components\Widget;
|
||||
|
||||
use Illuminate\View\Component;
|
||||
|
||||
class Avvisi extends Component
|
||||
{
|
||||
/**
|
||||
* Create a new component instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
// public $avvisi ="";
|
||||
|
||||
public function __construct(public array $avvisi)
|
||||
{
|
||||
//
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the view / contents that represent the component.
|
||||
*
|
||||
* @return \Illuminate\Contracts\View\View|\Closure|string
|
||||
*/
|
||||
public function render():View
|
||||
{
|
||||
return view('components.widget.avvisi', ['avvisi'=>$this->avvisi]);
|
||||
}
|
||||
}
|
||||
@@ -10,22 +10,27 @@
|
||||
"require" : {
|
||||
"php": "^7.3|^8.0",
|
||||
"barryvdh/laravel-dompdf": "^2.0",
|
||||
"creativeorange/gravatar": "^1.0",
|
||||
"directorytree/ldaprecord": "^2.9",
|
||||
"directorytree/ldaprecord-laravel": "^2.5",
|
||||
"fruitcake/laravel-cors": "^2.0",
|
||||
"google/apiclient": "^2.15.0",
|
||||
"guzzlehttp/guzzle": "^7.0.1",
|
||||
"jeroennoten/laravel-adminlte": "^3.9",
|
||||
"laravel-notification-channels/telegram": "^2.0",
|
||||
"laravel/framework": "^8.75",
|
||||
"laravel/sanctum": "^2.11",
|
||||
"laravel/tinker": "^2.5",
|
||||
"laravel/ui": "^3.4",
|
||||
"laraveldaily/laravel-charts": "^0.1.29",
|
||||
"mateusjunges/laravel-acl": "^4.2",
|
||||
"nesbot/carbon": "^2.71",
|
||||
"pcloud/pcloud-php-sdk": "^3.0",
|
||||
"rap2hpoutre/fast-excel": "^3.2",
|
||||
"secondtruth/startmin": "^1.1",
|
||||
"sfneal/view-export": "^2.10",
|
||||
"snapappointments/bootstrap-select": "^1.13",
|
||||
"spatie/laravel-backup": "^7.0",
|
||||
"spatie/laravel-google-calendar": "^3.7",
|
||||
"spatie/laravel-permission": "^5.10",
|
||||
"webklex/laravel-imap": "^2.4"
|
||||
},
|
||||
"require-dev" : {
|
||||
|
||||
2873
composer.lock
generated
2873
composer.lock
generated
File diff suppressed because it is too large
Load Diff
106
config/acl.php
106
config/acl.php
@@ -1,106 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Models
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| When using this package, we need to know which Eloquent Model should be used
|
||||
| to retrieve your groups and permissions. Of course, it is just the basics models
|
||||
| needed, but you can use whatever you like.
|
||||
|
|
||||
*/
|
||||
'models' => [
|
||||
/*
|
||||
| The model you want to use as Permission model must use the MateusJunges\ACL\Traits\PermissionsTrait
|
||||
*/
|
||||
'permission' => Junges\ACL\Models\Permission::class,
|
||||
|
||||
/*
|
||||
| The model you want to use as Group model must use the MateusJunges\ACL\Traits\GroupsTrait
|
||||
*/
|
||||
'group' => Junges\ACL\Models\Group::class,
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Route Model Binding
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| If you would like model binding to use a database column other than id when
|
||||
| retrieving a given model class, you may override the getRouteKeyName method
|
||||
| on the Eloquent model with yours. The default key used for route model binding
|
||||
| in this package is the `id` database column. You can modify it by changing the
|
||||
| following configuration:
|
||||
|
|
||||
*/
|
||||
'route_model_binding_keys' => [
|
||||
'group_model' => 'id',
|
||||
'permission_model' => 'id',
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Tables
|
||||
|--------------------------------------------------------------------------
|
||||
| Specify the basics authentication tables that you are using.
|
||||
| Once you required this package, the following tables are
|
||||
| created by default when you run the command
|
||||
|
|
||||
| php artisan migrate
|
||||
|
|
||||
| If you want to change this tables, please keep the basic structure unchanged.
|
||||
|
|
||||
*/
|
||||
'tables' => [
|
||||
'groups' => 'groups',
|
||||
'permissions' => 'permissions',
|
||||
'users' => 'users',
|
||||
'group_has_permissions' => 'group_has_permissions',
|
||||
'model_has_permissions' => 'model_has_permissions',
|
||||
'model_has_groups' => 'model_has_groups',
|
||||
],
|
||||
|
||||
'column_names' => [
|
||||
'group_pivot_key' => null,
|
||||
'permission_pivot_key' => null,
|
||||
'model_morph_key' => 'model_id',
|
||||
'team_foreign_key' => 'team_id'
|
||||
],
|
||||
|
||||
'teams' => false,
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Ignition Solution Suggestions
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| To enable the ignition solutions for laravel-acl, set this flag to true.
|
||||
|
|
||||
| The solutions will then be automatically registered with ignition if its installed.
|
||||
|
|
||||
*/
|
||||
'offer_solutions' => false,
|
||||
|
||||
'register_permission_check_method' => true,
|
||||
|
||||
'cache' => [
|
||||
/*
|
||||
* All permissions are cached for 24 hours by default. If permissions or groups are updated,
|
||||
* then the cache is flushed automatically.
|
||||
*/
|
||||
'expiration_time' => DateInterval::createFromDateString('24 hours'),
|
||||
|
||||
/*
|
||||
* The cache key used to store permissions.
|
||||
*/
|
||||
'key' => 'junges.acl.cache',
|
||||
|
||||
/*
|
||||
* You can optionally specify a cache driver to use for permissions caching using
|
||||
* store drivers listed in config/cache.php.
|
||||
*/
|
||||
'store' => 'default'
|
||||
]
|
||||
];
|
||||
714
config/adminlte.php
Normal file
714
config/adminlte.php
Normal file
@@ -0,0 +1,714 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Title
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Here you can change the default title of your admin panel.
|
||||
|
|
||||
| For detailed instructions you can look the title section here:
|
||||
| https://github.com/jeroennoten/Laravel-AdminLTE/wiki/Basic-Configuration
|
||||
|
|
||||
*/
|
||||
|
||||
'title' => 'Gestionale',
|
||||
'title_prefix' => '',
|
||||
'title_postfix' => '',
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Favicon
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Here you can activate the favicon.
|
||||
|
|
||||
| For detailed instructions you can look the favicon section here:
|
||||
| https://github.com/jeroennoten/Laravel-AdminLTE/wiki/Basic-Configuration
|
||||
|
|
||||
*/
|
||||
|
||||
'use_ico_only' => false,
|
||||
'use_full_favicon' => false,
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Google Fonts
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Here you can allow or not the use of external google fonts. Disabling the
|
||||
| google fonts may be useful if your admin panel internet access is
|
||||
| restricted somehow.
|
||||
|
|
||||
| For detailed instructions you can look the google fonts section here:
|
||||
| https://github.com/jeroennoten/Laravel-AdminLTE/wiki/Basic-Configuration
|
||||
|
|
||||
*/
|
||||
|
||||
'google_fonts' => [
|
||||
'allowed' => true,
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Admin Panel Logo
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Here you can change the logo of your admin panel.
|
||||
|
|
||||
| For detailed instructions you can look the logo section here:
|
||||
| https://github.com/jeroennoten/Laravel-AdminLTE/wiki/Basic-Configuration
|
||||
|
|
||||
*/
|
||||
|
||||
'logo' => '<b>Gestionale</b>',
|
||||
'logo_img' => 'vendor/adminlte/dist/img/AdminLTELogo.png',
|
||||
'logo_img_class' => 'brand-image img-circle elevation-3',
|
||||
'logo_img_xl' => null,
|
||||
'logo_img_xl_class' => 'brand-image-xs',
|
||||
'logo_img_alt' => 'Admin Logo',
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Authentication Logo
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Here you can setup an alternative logo to use on your login and register
|
||||
| screens. When disabled, the admin panel logo will be used instead.
|
||||
|
|
||||
| For detailed instructions you can look the auth logo section here:
|
||||
| https://github.com/jeroennoten/Laravel-AdminLTE/wiki/Basic-Configuration
|
||||
|
|
||||
*/
|
||||
|
||||
'auth_logo' => [
|
||||
'enabled' => false,
|
||||
'img' => [
|
||||
'path' => 'vendor/adminlte/dist/img/AdminLTELogo.png',
|
||||
'alt' => 'Auth Logo',
|
||||
'class' => '',
|
||||
'width' => 50,
|
||||
'height' => 50,
|
||||
],
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Preloader Animation
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Here you can change the preloader animation configuration.
|
||||
|
|
||||
| For detailed instructions you can look the preloader section here:
|
||||
| https://github.com/jeroennoten/Laravel-AdminLTE/wiki/Basic-Configuration
|
||||
|
|
||||
*/
|
||||
|
||||
'preloader' => [
|
||||
'enabled' => false,
|
||||
'img' => [
|
||||
'path' => 'vendor/adminlte/dist/img/AdminLTELogo.png',
|
||||
'alt' => 'AdminLTE Preloader Image',
|
||||
'effect' => 'animation__shake',
|
||||
'width' => 60,
|
||||
'height' => 60,
|
||||
],
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| User Menu
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Here you can activate and change the user menu.
|
||||
|
|
||||
| For detailed instructions you can look the user menu section here:
|
||||
| https://github.com/jeroennoten/Laravel-AdminLTE/wiki/Basic-Configuration
|
||||
|
|
||||
*/
|
||||
|
||||
'usermenu_enabled' => true,
|
||||
'usermenu_header' => false,
|
||||
'usermenu_header_class' => 'bg-primary',
|
||||
'usermenu_image' => false,
|
||||
'usermenu_desc' => false,
|
||||
'usermenu_profile_url' => false,
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Layout
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Here we change the layout of your admin panel.
|
||||
|
|
||||
| For detailed instructions you can look the layout section here:
|
||||
| https://github.com/jeroennoten/Laravel-AdminLTE/wiki/Layout-and-Styling-Configuration
|
||||
|
|
||||
*/
|
||||
|
||||
'layout_topnav' => null,
|
||||
'layout_boxed' => null,
|
||||
'layout_fixed_sidebar' => null,
|
||||
'layout_fixed_navbar' => null,
|
||||
'layout_fixed_footer' => null,
|
||||
'layout_dark_mode' => null,
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Authentication Views Classes
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Here you can change the look and behavior of the authentication views.
|
||||
|
|
||||
| For detailed instructions you can look the auth classes section here:
|
||||
| https://github.com/jeroennoten/Laravel-AdminLTE/wiki/Layout-and-Styling-Configuration
|
||||
|
|
||||
*/
|
||||
|
||||
'classes_auth_card' => 'card-outline card-primary',
|
||||
'classes_auth_header' => '',
|
||||
'classes_auth_body' => '',
|
||||
'classes_auth_footer' => '',
|
||||
'classes_auth_icon' => '',
|
||||
'classes_auth_btn' => 'btn-flat btn-primary',
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Admin Panel Classes
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Here you can change the look and behavior of the admin panel.
|
||||
|
|
||||
| For detailed instructions you can look the admin panel classes here:
|
||||
| https://github.com/jeroennoten/Laravel-AdminLTE/wiki/Layout-and-Styling-Configuration
|
||||
|
|
||||
*/
|
||||
|
||||
'classes_body' => '',
|
||||
'classes_brand' => '',
|
||||
'classes_brand_text' => '',
|
||||
'classes_content_wrapper' => '',
|
||||
'classes_content_header' => '',
|
||||
'classes_content' => '',
|
||||
'classes_sidebar' => 'sidebar-dark-primary elevation-4',
|
||||
'classes_sidebar_nav' => '',
|
||||
'classes_topnav' => 'navbar-white navbar-light',
|
||||
'classes_topnav_nav' => 'navbar-expand',
|
||||
'classes_topnav_container' => 'container',
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Sidebar
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Here we can modify the sidebar of the admin panel.
|
||||
|
|
||||
| For detailed instructions you can look the sidebar section here:
|
||||
| https://github.com/jeroennoten/Laravel-AdminLTE/wiki/Layout-and-Styling-Configuration
|
||||
|
|
||||
*/
|
||||
|
||||
'sidebar_mini' => 'lg',
|
||||
'sidebar_collapse' => false,
|
||||
'sidebar_collapse_auto_size' => false,
|
||||
'sidebar_collapse_remember' => false,
|
||||
'sidebar_collapse_remember_no_transition' => true,
|
||||
'sidebar_scrollbar_theme' => 'os-theme-light',
|
||||
'sidebar_scrollbar_auto_hide' => 'l',
|
||||
'sidebar_nav_accordion' => true,
|
||||
'sidebar_nav_animation_speed' => 300,
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Control Sidebar (Right Sidebar)
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Here we can modify the right sidebar aka control sidebar of the admin panel.
|
||||
|
|
||||
| For detailed instructions you can look the right sidebar section here:
|
||||
| https://github.com/jeroennoten/Laravel-AdminLTE/wiki/Layout-and-Styling-Configuration
|
||||
|
|
||||
*/
|
||||
|
||||
'right_sidebar' => false,
|
||||
'right_sidebar_icon' => 'fas fa-cogs',
|
||||
'right_sidebar_theme' => 'dark',
|
||||
'right_sidebar_slide' => true,
|
||||
'right_sidebar_push' => true,
|
||||
'right_sidebar_scrollbar_theme' => 'os-theme-light',
|
||||
'right_sidebar_scrollbar_auto_hide' => 'l',
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| URLs
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Here we can modify the url settings of the admin panel.
|
||||
|
|
||||
| For detailed instructions you can look the urls section here:
|
||||
| https://github.com/jeroennoten/Laravel-AdminLTE/wiki/Basic-Configuration
|
||||
|
|
||||
*/
|
||||
|
||||
'use_route_url' => false,
|
||||
'dashboard_url' => 'home',
|
||||
'logout_url' => 'logout',
|
||||
'login_url' => 'login',
|
||||
'register_url' => 'register',
|
||||
'password_reset_url' => 'password/reset',
|
||||
'password_email_url' => 'password/email',
|
||||
'profile_url' => false,
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Laravel Mix
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Here we can enable the Laravel Mix option for the admin panel.
|
||||
|
|
||||
| For detailed instructions you can look the laravel mix section here:
|
||||
| https://github.com/jeroennoten/Laravel-AdminLTE/wiki/Other-Configuration
|
||||
|
|
||||
*/
|
||||
|
||||
'enabled_laravel_mix' => false,
|
||||
'laravel_mix_css_path' => 'css/app.css',
|
||||
'laravel_mix_js_path' => 'js/app.js',
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Menu Items
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Here we can modify the sidebar/top navigation of the admin panel.
|
||||
|
|
||||
| For detailed instructions you can look here:
|
||||
| https://github.com/jeroennoten/Laravel-AdminLTE/wiki/Menu-Configuration
|
||||
|
|
||||
*/
|
||||
|
||||
'menu' => [
|
||||
// Navbar items:
|
||||
[
|
||||
'type' => 'navbar-search',
|
||||
'text' => 'search',
|
||||
'topnav_right' => true,
|
||||
],
|
||||
[
|
||||
'type' => 'fullscreen-widget',
|
||||
'topnav_right' => true,
|
||||
],
|
||||
|
||||
// Sidebar items:
|
||||
[
|
||||
'type' => 'sidebar-menu-search',
|
||||
'text' => 'search',
|
||||
],
|
||||
[
|
||||
'text' => 'Dashboard',
|
||||
'url' => '/admin',
|
||||
// 'can' => 'manage-blog',
|
||||
],
|
||||
[
|
||||
'text' => 'Gestione Economica',
|
||||
'url' => '#',
|
||||
'icon' => 'fas fa-fw fa-money-bill', //<i class="fa-solid fa-money-bill"></i>
|
||||
'can' => ['conti'],
|
||||
'submenu' => [
|
||||
[
|
||||
'text' => 'Lista movimenti',
|
||||
'route' => 'movimenti',
|
||||
'icon' => 'fas fa-fw fa-list-check'
|
||||
],
|
||||
[ 'text' => 'Liste',
|
||||
'url' => '#',
|
||||
'icon' => 'fas fa-fw fa-gears',
|
||||
'submenu' => [
|
||||
[
|
||||
'text' => 'Categorie',
|
||||
'route' => 'categorie',
|
||||
'icon' => 'fas fa-fw fa-wine-bottle'
|
||||
],
|
||||
[
|
||||
'text' => 'Tags',
|
||||
'route' => 'tags',
|
||||
'icon' => 'fas fa-fw fa-tags'
|
||||
],
|
||||
]
|
||||
],
|
||||
[ 'text' => 'Reports',
|
||||
'url' => '#',
|
||||
'icon' => 'fas fa-fw fa-file',
|
||||
'submenu' => [
|
||||
|
||||
[
|
||||
'text' => 'Report movimenti',
|
||||
'route' => 'resoconto',
|
||||
'icon' => 'fas fa-fw fa-piggy-bank',
|
||||
],
|
||||
[
|
||||
'text' => 'Bilancio annuale',
|
||||
'route' => 'budget',
|
||||
'icon' => 'fas fa-fw fa-scale-balanced'
|
||||
],
|
||||
]
|
||||
],
|
||||
[
|
||||
'text' => 'Import/Export',
|
||||
'url' => '#',
|
||||
'icon' => 'fas fa-fw fa-file-arrow-down',
|
||||
'submenu' => [
|
||||
[
|
||||
'text' => 'Esporta tutti i movimenti',
|
||||
'route' => 'export',
|
||||
],
|
||||
[
|
||||
'text' => 'Importa Estratto conto ING',
|
||||
'route' => 'importING',
|
||||
],
|
||||
[
|
||||
'text' => 'Importa Estratto conto Cassa Rurale',
|
||||
'route' => 'importCR',
|
||||
],
|
||||
],
|
||||
],
|
||||
],
|
||||
],
|
||||
['header' => 'GESTIONE DOCUMENTALE',
|
||||
'can' => ['documenti','contratti','progetti'],
|
||||
],
|
||||
[
|
||||
'text' => 'Documenti gen.',
|
||||
'url' => '/admin/documenti',
|
||||
'icon' => 'fas fa-fw fa-stop',
|
||||
'can' => ['documenti'],
|
||||
'color' => 'red',
|
||||
],
|
||||
[
|
||||
'text' => 'Contratti',
|
||||
'route' => 'contratti',
|
||||
'icon' => 'fas fa-fw fa-newspaper',
|
||||
'can' => ['contratti'],
|
||||
],
|
||||
[
|
||||
'text' => 'Progetti',
|
||||
'route' => 'progetti',
|
||||
'icon' => 'fas fa-fw fa-diagram-project',
|
||||
'can' => ['progetti'],
|
||||
],
|
||||
['header' => 'GESTIONE BENI',
|
||||
'can' => ['automobili'],],
|
||||
|
||||
[
|
||||
'text' => 'Automobili',
|
||||
'url' => '/admin/auto',
|
||||
'icon' => 'fas fa-fw fa-car',
|
||||
'can' => ['automobili'],
|
||||
],
|
||||
|
||||
['header' => 'GESTIONE PIM',
|
||||
'can' => ['contatti','tasks','appuntamenti','meetingroom'],
|
||||
],
|
||||
[
|
||||
'text' => 'Contatti',
|
||||
'url' => '/admin/contatti',
|
||||
'icon' => 'fas fa-fw fa-user',
|
||||
'can' => ['contatti'],
|
||||
'submenu' => [
|
||||
[
|
||||
'text' => 'Nuovo Contatto',
|
||||
'route' => 'newContact',
|
||||
'icon' => 'fas fa-fw fa-plus',
|
||||
],
|
||||
[
|
||||
'text' => 'Rubrica',
|
||||
'route' => 'contatti',
|
||||
'icon' => 'fas fa-fw fa-mobile',
|
||||
],
|
||||
],
|
||||
],
|
||||
[
|
||||
'text' => 'Attività',
|
||||
'route' => 'tasks',
|
||||
'icon' => 'fas fa-fw fa-circle-check',
|
||||
'can' => ['tasks'],
|
||||
],
|
||||
[
|
||||
'text' => 'Appuntamenti',
|
||||
'route' => 'calendario',
|
||||
'icon' => 'fas fa-fw fa-calendar',
|
||||
'can' => ['appuntamenti'],
|
||||
],
|
||||
[
|
||||
'text' => 'Meeting Room',
|
||||
'route' => 'meeting',
|
||||
'icon' => 'fas fa-fw fa-file-video',
|
||||
'can' => ['meetingroom']
|
||||
],
|
||||
['header' => 'CONSUMI',
|
||||
'can' => ['consumi'],
|
||||
],
|
||||
[
|
||||
'text' => 'GAS',
|
||||
'route' => 'gas',
|
||||
'icon' => 'fas fa-fw fa-fire',
|
||||
'can' => ['consumi'],
|
||||
],
|
||||
['header' => 'AMMINISTRAZIONE',
|
||||
'can' => ['amministrazione'],
|
||||
],
|
||||
[
|
||||
'text' => 'Utenti',
|
||||
'url' => '/admin/users/new',
|
||||
'icon' => 'fas fa-fw fa-user',
|
||||
'can' => ['amministrazione']
|
||||
],
|
||||
[
|
||||
'text' => 'Permessi',
|
||||
'route' => 'permessi',
|
||||
'icon' => 'fas fa-fw fa-solid fa-unlock-keyhole',
|
||||
'can' => ['amministrazione']
|
||||
],
|
||||
|
||||
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Menu Filters
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Here we can modify the menu filters of the admin panel.
|
||||
|
|
||||
| For detailed instructions you can look the menu filters section here:
|
||||
| https://github.com/jeroennoten/Laravel-AdminLTE/wiki/Menu-Configuration
|
||||
|
|
||||
*/
|
||||
|
||||
'filters' => [
|
||||
JeroenNoten\LaravelAdminLte\Menu\Filters\GateFilter::class,
|
||||
JeroenNoten\LaravelAdminLte\Menu\Filters\HrefFilter::class,
|
||||
JeroenNoten\LaravelAdminLte\Menu\Filters\SearchFilter::class,
|
||||
JeroenNoten\LaravelAdminLte\Menu\Filters\ActiveFilter::class,
|
||||
JeroenNoten\LaravelAdminLte\Menu\Filters\ClassesFilter::class,
|
||||
JeroenNoten\LaravelAdminLte\Menu\Filters\LangFilter::class,
|
||||
JeroenNoten\LaravelAdminLte\Menu\Filters\DataFilter::class,
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Plugins Initialization
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Here we can modify the plugins used inside the admin panel.
|
||||
|
|
||||
| For detailed instructions you can look the plugins section here:
|
||||
| https://github.com/jeroennoten/Laravel-AdminLTE/wiki/Plugins-Configuration
|
||||
|
|
||||
*/
|
||||
|
||||
'plugins' => [
|
||||
'Datatables' => [
|
||||
'active' => true,
|
||||
'files' => [
|
||||
[
|
||||
'type' => 'js',
|
||||
'asset' => false,
|
||||
'location' => '//cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js',
|
||||
],
|
||||
[
|
||||
'type' => 'js',
|
||||
'asset' => false,
|
||||
'location' => '//cdn.datatables.net/1.10.19/js/dataTables.bootstrap4.min.js',
|
||||
],
|
||||
[
|
||||
'type' => 'js',
|
||||
'asset' => false,
|
||||
'location' => '//cdn.datatables.net/v/dt/dt-1.13.4/date-1.4.1/r-2.4.1/sb-1.4.2/sp-2.1.2/datatables.min.js',
|
||||
],
|
||||
[
|
||||
'type' => 'css',
|
||||
'asset' => false,
|
||||
'location' => '//cdn.datatables.net/1.10.19/css/dataTables.bootstrap4.min.css',
|
||||
],
|
||||
[
|
||||
'type' => 'css',
|
||||
'asset' => false,
|
||||
'location' => '//cdn.datatables.net/v/dt/dt-1.13.4/date-1.4.1/r-2.4.1/sb-1.4.2/sp-2.1.2/datatables.min.css',
|
||||
],
|
||||
],
|
||||
],
|
||||
'DateRangePicker' => [
|
||||
'active' => false,
|
||||
'files' => [
|
||||
[
|
||||
'type' => 'js',
|
||||
'asset' => false,
|
||||
'location' => '//cdn.jsdelivr.net/npm/daterangepicker/daterangepicker.min.js',
|
||||
],
|
||||
[
|
||||
'type' => 'css',
|
||||
'asset' => false,
|
||||
'location' => '//cdn.jsdelivr.net/npm/daterangepicker/daterangepicker.css',
|
||||
],
|
||||
],
|
||||
],
|
||||
'JqueryUi' =>[
|
||||
'active' => false,
|
||||
'files' =>[
|
||||
[
|
||||
'type' => 'js',
|
||||
'asset' => false,
|
||||
'location' => '//code.jquery.com/ui/1.13.1/jquery-ui.js',
|
||||
/// https://code.jquery.com/ui/1.13.1/jquery-ui.js
|
||||
],
|
||||
[
|
||||
'type' => 'css',
|
||||
'asset' => false,
|
||||
'location' => '//code.jquery.com/ui/1.13.1/themes/smoothness/jquery-ui.css',
|
||||
],
|
||||
],
|
||||
],
|
||||
'Select2' => [
|
||||
'active' => true,
|
||||
'files' => [
|
||||
[
|
||||
'type' => 'js',
|
||||
'asset' => false,
|
||||
'location' => '//cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/js/select2.min.js',
|
||||
],
|
||||
[
|
||||
'type' => 'css',
|
||||
'asset' => false,
|
||||
'location' => '//cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/css/select2.css',
|
||||
],
|
||||
],
|
||||
],
|
||||
'Chartjs' => [
|
||||
'active' => false,
|
||||
'files' => [
|
||||
[
|
||||
'type' => 'js',
|
||||
'asset' => false,
|
||||
'location' => '//cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.0/Chart.bundle.min.js',
|
||||
],
|
||||
],
|
||||
],
|
||||
'Sweetalert2' => [
|
||||
'active' => false,
|
||||
'files' => [
|
||||
[
|
||||
'type' => 'js',
|
||||
'asset' => false,
|
||||
'location' => '//cdn.jsdelivr.net/npm/sweetalert2@8',
|
||||
],
|
||||
],
|
||||
],
|
||||
'Pace' => [
|
||||
'active' => false,
|
||||
'files' => [
|
||||
[
|
||||
'type' => 'css',
|
||||
'asset' => false,
|
||||
'location' => '//cdnjs.cloudflare.com/ajax/libs/pace/1.0.2/themes/blue/pace-theme-center-radar.min.css',
|
||||
],
|
||||
[
|
||||
'type' => 'js',
|
||||
'asset' => false,
|
||||
'location' => '//cdnjs.cloudflare.com/ajax/libs/pace/1.0.2/pace.min.js',
|
||||
],
|
||||
],
|
||||
],
|
||||
'Fullcalendar' => [
|
||||
'active' => false,
|
||||
'files' => [
|
||||
[
|
||||
'type' => 'css',
|
||||
'asset' => true,
|
||||
'location' => '/vendor/fullcalendar/main.min.css',
|
||||
],
|
||||
[
|
||||
'type' => 'js',
|
||||
'asset' => true,
|
||||
'location' => '/vendor/fullcalendar/main.min.js',
|
||||
],
|
||||
[
|
||||
'type' => 'js',
|
||||
'asset' => true,
|
||||
'location' => '/vendor/fullcalendar/locales-all.min.js',
|
||||
],
|
||||
|
||||
],
|
||||
],
|
||||
'FontAwesome' =>[
|
||||
'active' => true,
|
||||
'files' =>[
|
||||
[
|
||||
'type' => 'css',
|
||||
'asset' => false,
|
||||
'location' => '//cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css',
|
||||
],
|
||||
],
|
||||
],
|
||||
'MomentJs' =>[
|
||||
'active' => false,
|
||||
'files' =>[
|
||||
[
|
||||
'type' => 'js',
|
||||
'asset' => false,
|
||||
'location' => '//cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.4/moment-with-locales.min.js',
|
||||
],
|
||||
],
|
||||
],
|
||||
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| IFrame
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Here we change the IFrame mode configuration. Note these changes will
|
||||
| only apply to the view that extends and enable the IFrame mode.
|
||||
|
|
||||
| For detailed instructions you can look the iframe mode section here:
|
||||
| https://github.com/jeroennoten/Laravel-AdminLTE/wiki/IFrame-Mode-Configuration
|
||||
|
|
||||
*/
|
||||
|
||||
'iframe' => [
|
||||
'default_tab' => [
|
||||
'url' => null,
|
||||
'title' => null,
|
||||
],
|
||||
'buttons' => [
|
||||
'close' => true,
|
||||
'close_all' => true,
|
||||
'close_all_other' => true,
|
||||
'scroll_left' => true,
|
||||
'scroll_right' => true,
|
||||
'fullscreen' => true,
|
||||
],
|
||||
'options' => [
|
||||
'loading_screen' => 1000,
|
||||
'auto_show_new_tab' => true,
|
||||
'use_navbar_items' => true,
|
||||
],
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Livewire
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Here we can enable the Livewire support.
|
||||
|
|
||||
| For detailed instructions you can look the livewire here:
|
||||
| https://github.com/jeroennoten/Laravel-AdminLTE/wiki/Other-Configuration
|
||||
|
|
||||
*/
|
||||
|
||||
'livewire' => false,
|
||||
];
|
||||
@@ -80,7 +80,7 @@ return [
|
||||
|
|
||||
*/
|
||||
|
||||
'locale' => 'en',
|
||||
'locale' => 'it',
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
@@ -93,7 +93,7 @@ return [
|
||||
|
|
||||
*/
|
||||
|
||||
'fallback_locale' => 'en',
|
||||
'fallback_locale' => 'it',
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
@@ -106,7 +106,7 @@ return [
|
||||
|
|
||||
*/
|
||||
|
||||
'faker_locale' => 'en_US',
|
||||
'faker_locale' => 'it_IT',
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
@@ -161,6 +161,8 @@ return [
|
||||
Illuminate\Translation\TranslationServiceProvider::class,
|
||||
Illuminate\Validation\ValidationServiceProvider::class,
|
||||
Illuminate\View\ViewServiceProvider::class,
|
||||
Creativeorange\Gravatar\GravatarServiceProvider::class,
|
||||
|
||||
|
||||
/*
|
||||
* Package Service Providers...
|
||||
@@ -174,6 +176,7 @@ return [
|
||||
// App\Providers\BroadcastServiceProvider::class,
|
||||
App\Providers\EventServiceProvider::class,
|
||||
App\Providers\RouteServiceProvider::class,
|
||||
Spatie\Permission\PermissionServiceProvider::class,
|
||||
|
||||
],
|
||||
|
||||
@@ -230,6 +233,7 @@ return [
|
||||
'Validator' => Illuminate\Support\Facades\Validator::class,
|
||||
'View' => Illuminate\Support\Facades\View::class,
|
||||
'FastExcel' => Rap2hpoutre\FastExcel\Facades\FastExcel::class,
|
||||
'Gravatar' => Creativeorange\Gravatar\Facade\Gravatar::class,
|
||||
|
||||
],
|
||||
|
||||
|
||||
@@ -60,26 +60,14 @@ return [
|
||||
*/
|
||||
|
||||
'providers' => [
|
||||
'ldap' => [
|
||||
'driver' => 'ldap', //'eloquent',
|
||||
'model' => LdapRecord\Models\ActiveDirectory\User::class, //App\Models\User::class,
|
||||
'rules' => [
|
||||
App\Ldap\Rules\OnlyInGroupUsers::class,
|
||||
],
|
||||
'database' => [
|
||||
'model' => App\Models\User::class,
|
||||
'sync_passwords'=> false,
|
||||
'sync_attributes' => [
|
||||
'name' => 'displayname',
|
||||
'email' => 'mail',
|
||||
],
|
||||
],
|
||||
'users' => [
|
||||
'driver' => 'eloquent',
|
||||
'model' => App\Models\User::class,
|
||||
],
|
||||
|
||||
'users' => [
|
||||
/*'users' => [
|
||||
'driver' => 'database',
|
||||
'table' => 'users',
|
||||
],
|
||||
],*/
|
||||
],
|
||||
|
||||
/*
|
||||
|
||||
@@ -74,6 +74,7 @@ return [
|
||||
|
||||
'links' => [
|
||||
public_path('storage') => storage_path('app/public'),
|
||||
public_path('contratti') => storage_path('app/Contratti'),
|
||||
],
|
||||
|
||||
];
|
||||
|
||||
44
config/google-calendar.php
Normal file
44
config/google-calendar.php
Normal file
@@ -0,0 +1,44 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
'default_auth_profile' => env('GOOGLE_CALENDAR_AUTH_PROFILE', 'service_account'),
|
||||
|
||||
'auth_profiles' => [
|
||||
|
||||
/*
|
||||
* Authenticate using a service account.
|
||||
*/
|
||||
'service_account' => [
|
||||
/*
|
||||
* Path to the json file containing the credentials.
|
||||
*/
|
||||
'credentials_json' => storage_path('app/google-calendar/service-account-credentials.json'),
|
||||
],
|
||||
|
||||
/*
|
||||
* Authenticate with actual google user account.
|
||||
*/
|
||||
'oauth' => [
|
||||
/*
|
||||
* Path to the json file containing the oauth2 credentials.
|
||||
*/
|
||||
'credentials_json' => storage_path('app/google-calendar/oauth-credentials.json'),
|
||||
|
||||
/*
|
||||
* Path to the json file containing the oauth2 token.
|
||||
*/
|
||||
'token_json' => storage_path('app/google-calendar/oauth-token.json'),
|
||||
],
|
||||
],
|
||||
|
||||
/*
|
||||
* The id of the Google Calendar that will be used by default.
|
||||
*/
|
||||
'calendar_id' => env('GOOGLE_CALENDAR_ID'),
|
||||
|
||||
/*
|
||||
* The email address of the user account to impersonate.
|
||||
*/
|
||||
'user_to_impersonate' => env('GOOGLE_CALENDAR_IMPERSONATE'),
|
||||
];
|
||||
161
config/permission.php
Normal file
161
config/permission.php
Normal file
@@ -0,0 +1,161 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
|
||||
'models' => [
|
||||
|
||||
/*
|
||||
* When using the "HasPermissions" trait from this package, we need to know which
|
||||
* Eloquent model should be used to retrieve your permissions. Of course, it
|
||||
* is often just the "Permission" model but you may use whatever you like.
|
||||
*
|
||||
* The model you want to use as a Permission model needs to implement the
|
||||
* `Spatie\Permission\Contracts\Permission` contract.
|
||||
*/
|
||||
|
||||
'permission' => Spatie\Permission\Models\Permission::class,
|
||||
|
||||
/*
|
||||
* When using the "HasRoles" trait from this package, we need to know which
|
||||
* Eloquent model should be used to retrieve your roles. Of course, it
|
||||
* is often just the "Role" model but you may use whatever you like.
|
||||
*
|
||||
* The model you want to use as a Role model needs to implement the
|
||||
* `Spatie\Permission\Contracts\Role` contract.
|
||||
*/
|
||||
|
||||
'role' => Spatie\Permission\Models\Role::class,
|
||||
|
||||
],
|
||||
|
||||
'table_names' => [
|
||||
|
||||
/*
|
||||
* When using the "HasRoles" trait from this package, we need to know which
|
||||
* table should be used to retrieve your roles. We have chosen a basic
|
||||
* default value but you may easily change it to any table you like.
|
||||
*/
|
||||
|
||||
'roles' => 'roles',
|
||||
|
||||
/*
|
||||
* When using the "HasPermissions" trait from this package, we need to know which
|
||||
* table should be used to retrieve your permissions. We have chosen a basic
|
||||
* default value but you may easily change it to any table you like.
|
||||
*/
|
||||
|
||||
'permissions' => 'permissions',
|
||||
|
||||
/*
|
||||
* When using the "HasPermissions" trait from this package, we need to know which
|
||||
* table should be used to retrieve your models permissions. We have chosen a
|
||||
* basic default value but you may easily change it to any table you like.
|
||||
*/
|
||||
|
||||
'model_has_permissions' => 'model_has_permissions',
|
||||
|
||||
/*
|
||||
* When using the "HasRoles" trait from this package, we need to know which
|
||||
* table should be used to retrieve your models roles. We have chosen a
|
||||
* basic default value but you may easily change it to any table you like.
|
||||
*/
|
||||
|
||||
'model_has_roles' => 'model_has_roles',
|
||||
|
||||
/*
|
||||
* When using the "HasRoles" trait from this package, we need to know which
|
||||
* table should be used to retrieve your roles permissions. We have chosen a
|
||||
* basic default value but you may easily change it to any table you like.
|
||||
*/
|
||||
|
||||
'role_has_permissions' => 'role_has_permissions',
|
||||
],
|
||||
|
||||
'column_names' => [
|
||||
/*
|
||||
* Change this if you want to name the related pivots other than defaults
|
||||
*/
|
||||
'role_pivot_key' => null, //default 'role_id',
|
||||
'permission_pivot_key' => null, //default 'permission_id',
|
||||
|
||||
/*
|
||||
* Change this if you want to name the related model primary key other than
|
||||
* `model_id`.
|
||||
*
|
||||
* For example, this would be nice if your primary keys are all UUIDs. In
|
||||
* that case, name this `model_uuid`.
|
||||
*/
|
||||
|
||||
'model_morph_key' => 'model_id',
|
||||
|
||||
/*
|
||||
* Change this if you want to use the teams feature and your related model's
|
||||
* foreign key is other than `team_id`.
|
||||
*/
|
||||
|
||||
'team_foreign_key' => 'team_id',
|
||||
],
|
||||
|
||||
/*
|
||||
* When set to true, the method for checking permissions will be registered on the gate.
|
||||
* Set this to false, if you want to implement custom logic for checking permissions.
|
||||
*/
|
||||
|
||||
'register_permission_check_method' => true,
|
||||
|
||||
/*
|
||||
* When set to true the package implements teams using the 'team_foreign_key'. If you want
|
||||
* the migrations to register the 'team_foreign_key', you must set this to true
|
||||
* before doing the migration. If you already did the migration then you must make a new
|
||||
* migration to also add 'team_foreign_key' to 'roles', 'model_has_roles', and
|
||||
* 'model_has_permissions'(view the latest version of package's migration file)
|
||||
*/
|
||||
|
||||
'teams' => false,
|
||||
|
||||
/*
|
||||
* When set to true, the required permission names are added to the exception
|
||||
* message. This could be considered an information leak in some contexts, so
|
||||
* the default setting is false here for optimum safety.
|
||||
*/
|
||||
|
||||
'display_permission_in_exception' => false,
|
||||
|
||||
/*
|
||||
* When set to true, the required role names are added to the exception
|
||||
* message. This could be considered an information leak in some contexts, so
|
||||
* the default setting is false here for optimum safety.
|
||||
*/
|
||||
|
||||
'display_role_in_exception' => false,
|
||||
|
||||
/*
|
||||
* By default wildcard permission lookups are disabled.
|
||||
*/
|
||||
|
||||
'enable_wildcard_permission' => false,
|
||||
|
||||
'cache' => [
|
||||
|
||||
/*
|
||||
* By default all permissions are cached for 24 hours to speed up performance.
|
||||
* When permissions or roles are updated the cache is flushed automatically.
|
||||
*/
|
||||
|
||||
'expiration_time' => \DateInterval::createFromDateString('24 hours'),
|
||||
|
||||
/*
|
||||
* The cache key used to store all permissions.
|
||||
*/
|
||||
|
||||
'key' => 'spatie.permission.cache',
|
||||
|
||||
/*
|
||||
* You may optionally indicate a specific cache driver to use for permission and
|
||||
* role caching using any of the `store` drivers listed in the cache.php config
|
||||
* file. Using 'default' here means to use the `default` set in cache.php.
|
||||
*/
|
||||
|
||||
'store' => 'default',
|
||||
],
|
||||
];
|
||||
@@ -16,9 +16,11 @@ class CreateDocumentisTable extends Migration
|
||||
Schema::create('documentis', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->timestamps();
|
||||
$table->foreignId('movimenti_id');
|
||||
$table->string('descrizione');
|
||||
$table->string('filename');
|
||||
// $table->foreignId('movimenti_id');
|
||||
// Aggiunto per definire il nome della cartella
|
||||
$table->string('path');
|
||||
// $table->string('filename');
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -1,29 +0,0 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
class CreatePermissionsTable extends Migration
|
||||
{
|
||||
public function up()
|
||||
{
|
||||
$permissionsTable = config('acl.tables.permissions', 'permissions');
|
||||
Schema::create($permissionsTable, function (Blueprint $table) {
|
||||
$table->bigIncrements('id');
|
||||
$table->string('name');
|
||||
$table->string('guard_name');
|
||||
$table->text('description')->nullable();
|
||||
$table->softDeletes();
|
||||
$table->timestamps();
|
||||
|
||||
$table->unique(['name', 'guard_name']);
|
||||
});
|
||||
}
|
||||
|
||||
public function down()
|
||||
{
|
||||
$tables = config('acl.tables');
|
||||
Schema::dropIfExists($tables['permissions']);
|
||||
}
|
||||
}
|
||||
@@ -1,42 +0,0 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
class CreateGroupsTable extends Migration
|
||||
{
|
||||
public function up()
|
||||
{
|
||||
$groupsTable = config('acl.tables.groups', 'groups');
|
||||
$teams = config('acl.teams');
|
||||
$columnNames = config('acl.column_names');
|
||||
|
||||
Schema::create($groupsTable, function (Blueprint $table) use ($teams, $columnNames) {
|
||||
$table->bigIncrements('id');
|
||||
|
||||
if ($teams || config("acl.testing")) {
|
||||
$table->unsignedBigInteger($columnNames['team_foreign_key'])->nullable();
|
||||
$table->index($columnNames['team_foreign_key'], 'groups_team_foreign_key_index');
|
||||
}
|
||||
|
||||
$table->string('name');
|
||||
$table->string('guard_name');
|
||||
$table->text('description')->nullable();
|
||||
$table->softDeletes();
|
||||
$table->timestamps();
|
||||
|
||||
if ($teams || config('acl.testing')) {
|
||||
$table->unique([$columnNames['team_foreign_key'], 'name', 'guard_name']);
|
||||
} else {
|
||||
$table->unique(['name', 'guard_name']);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public function down()
|
||||
{
|
||||
$groupsTable = config('acl.tables.groups', 'groups');
|
||||
Schema::dropIfExists($groupsTable);
|
||||
}
|
||||
}
|
||||
@@ -1,47 +0,0 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Junges\ACL\AclRegistrar;
|
||||
|
||||
class CreateModelHasPermissionsTable extends Migration
|
||||
{
|
||||
public function up()
|
||||
{
|
||||
$columnNames = config('acl.column_names');
|
||||
|
||||
$modelHasPermissions = config('acl.tables.model_has_permissions', 'model_has_permissions');
|
||||
$permissionsTable = config('acl.tables.permissions', 'permissions');
|
||||
$teams = config('acl.teams');
|
||||
|
||||
Schema::create($modelHasPermissions, function (Blueprint $table) use ($permissionsTable, $columnNames, $teams) {
|
||||
$table->unsignedBigInteger(AclRegistrar::$pivotPermission);
|
||||
$table->string('model_type');
|
||||
$table->unsignedBigInteger($columnNames['model_morph_key']);
|
||||
$table->index([$columnNames['model_morph_key'], 'model_type'], 'model_has_permissions_id_model_type_index');
|
||||
|
||||
$table->foreign(AclRegistrar::$pivotPermission)
|
||||
->references('id')
|
||||
->on($permissionsTable)
|
||||
->cascadeOnDelete();
|
||||
|
||||
if ($teams) {
|
||||
$table->unsignedBigInteger($columnNames['team_foreign_key']);
|
||||
$table->index($columnNames['team_foreign_key'], 'model_has_permissions_team_foreign_key_index');
|
||||
|
||||
$table->primary([$columnNames['team_foreign_key'], AclRegistrar::$pivotPermission, $columnNames['model_morph_key'], 'model_type'],
|
||||
'model_has_permissions_permission_model_type_primary');
|
||||
} else {
|
||||
$table->primary([AclRegistrar::$pivotPermission, $columnNames['model_morph_key'], 'model_type'],
|
||||
'model_has_permissions_permission_model_type_primary');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public function down()
|
||||
{
|
||||
$modelHasPermissionTable = config('acl.tables.model_has_permissions', 'model_has_permissions');
|
||||
Schema::dropIfExists($modelHasPermissionTable);
|
||||
}
|
||||
}
|
||||
@@ -1,47 +0,0 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Junges\ACL\AclRegistrar;
|
||||
|
||||
class CreateModelHasGroupsTable extends Migration
|
||||
{
|
||||
public function up()
|
||||
{
|
||||
$columnNames = config('acl.column_names');
|
||||
$modelHasGroups = config('acl.tables.model_has_groups', 'model_has_groups');
|
||||
$groupsTable = config('acl.tables.groups', 'groups');
|
||||
$teams = config('acl.teams');
|
||||
|
||||
Schema::create($modelHasGroups, function (Blueprint $table) use ($groupsTable, $columnNames, $teams) {
|
||||
$table->unsignedBigInteger(AclRegistrar::$pivotGroup);
|
||||
|
||||
$table->string('model_type');
|
||||
$table->unsignedBigInteger($columnNames['model_morph_key']);
|
||||
$table->index([$columnNames['model_morph_key'], 'model_type'], 'model_has_groups_model_id_model_type_index');
|
||||
|
||||
$table->foreign(AclRegistrar::$pivotGroup)
|
||||
->references('id')
|
||||
->on($groupsTable)
|
||||
->cascadeOnDelete();
|
||||
|
||||
if ($teams) {
|
||||
$table->unsignedBigInteger($columnNames['team_foreign_key']);
|
||||
$table->index($columnNames['team_foreign_key'], 'model_has_groups_team_foreign_key_index');
|
||||
|
||||
$table->primary([$columnNames['team_foreign_key'], AclRegistrar::$pivotGroup, $columnNames['model_morph_key'], 'model_type'],
|
||||
'model_has_groups_group_model_type_primary');
|
||||
} else {
|
||||
$table->primary([AclRegistrar::$pivotGroup, $columnNames['model_morph_key'], 'model_type'],
|
||||
'model_has_groups_group_model_type_primary');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public function down()
|
||||
{
|
||||
$modelHasGroupsTable = config('acl.tables.model_has_groups', 'model_has_groups');
|
||||
Schema::dropIfExists($modelHasGroupsTable);
|
||||
}
|
||||
}
|
||||
@@ -1,40 +0,0 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Junges\ACL\AclRegistrar;
|
||||
|
||||
class CreateGroupHasPermissionsTable extends Migration
|
||||
{
|
||||
public function up()
|
||||
{
|
||||
$groupHasPermissionTable = config('acl.tables.group_has_permissions', 'group_has_permissions');
|
||||
$groupsTable = config('acl.tables.groups', 'groups');
|
||||
$permissionsTable = config('acl.tables.permissions', 'permissions');
|
||||
|
||||
Schema::create($groupHasPermissionTable, function (Blueprint $table) use ($groupsTable, $permissionsTable) {
|
||||
$table->unsignedBigInteger(AclRegistrar::$pivotPermission);
|
||||
$table->unsignedBigInteger(AclRegistrar::$pivotGroup);
|
||||
|
||||
$table->foreign(AclRegistrar::$pivotPermission)
|
||||
->references('id')
|
||||
->on($permissionsTable)
|
||||
->cascadeOnDelete();
|
||||
|
||||
$table->foreign(AclRegistrar::$pivotGroup)
|
||||
->references('id')
|
||||
->on($groupsTable)
|
||||
->cascadeOnDelete();
|
||||
|
||||
$table->primary([AclRegistrar::$pivotPermission, AclRegistrar::$pivotGroup], 'group_has_permission_permission_id_group_id_primary');
|
||||
});
|
||||
}
|
||||
|
||||
public function down()
|
||||
{
|
||||
$groupHasPermissionsTable = config('acl.tables.group_has_permissions', 'group_has_permissions');
|
||||
|
||||
Schema::dropIfExists($groupHasPermissionsTable);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,141 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Spatie\Permission\PermissionRegistrar;
|
||||
|
||||
class CreatePermissionTables extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
$tableNames = config('permission.table_names');
|
||||
$columnNames = config('permission.column_names');
|
||||
$teams = config('permission.teams');
|
||||
|
||||
if (empty($tableNames)) {
|
||||
throw new \Exception('Error: config/permission.php not loaded. Run [php artisan config:clear] and try again.');
|
||||
}
|
||||
if ($teams && empty($columnNames['team_foreign_key'] ?? null)) {
|
||||
throw new \Exception('Error: team_foreign_key on config/permission.php not loaded. Run [php artisan config:clear] and try again.');
|
||||
}
|
||||
|
||||
Schema::create($tableNames['permissions'], function (Blueprint $table) {
|
||||
$table->bigIncrements('id'); // permission id
|
||||
$table->string('name'); // For MySQL 8.0 use string('name', 125);
|
||||
$table->string('guard_name'); // For MySQL 8.0 use string('guard_name', 125);
|
||||
$table->timestamps();
|
||||
|
||||
$table->unique(['name', 'guard_name']);
|
||||
});
|
||||
|
||||
Schema::create($tableNames['roles'], function (Blueprint $table) use ($teams, $columnNames) {
|
||||
$table->bigIncrements('id'); // role id
|
||||
if ($teams || config('permission.testing')) { // permission.testing is a fix for sqlite testing
|
||||
$table->unsignedBigInteger($columnNames['team_foreign_key'])->nullable();
|
||||
$table->index($columnNames['team_foreign_key'], 'roles_team_foreign_key_index');
|
||||
}
|
||||
$table->string('name'); // For MySQL 8.0 use string('name', 125);
|
||||
$table->string('guard_name'); // For MySQL 8.0 use string('guard_name', 125);
|
||||
$table->timestamps();
|
||||
if ($teams || config('permission.testing')) {
|
||||
$table->unique([$columnNames['team_foreign_key'], 'name', 'guard_name']);
|
||||
} else {
|
||||
$table->unique(['name', 'guard_name']);
|
||||
}
|
||||
});
|
||||
|
||||
Schema::create($tableNames['model_has_permissions'], function (Blueprint $table) use ($tableNames, $columnNames, $teams) {
|
||||
$table->unsignedBigInteger(PermissionRegistrar::$pivotPermission);
|
||||
|
||||
$table->string('model_type');
|
||||
$table->unsignedBigInteger($columnNames['model_morph_key']);
|
||||
$table->index([$columnNames['model_morph_key'], 'model_type'], 'model_has_permissions_model_id_model_type_index');
|
||||
|
||||
$table->foreign(PermissionRegistrar::$pivotPermission)
|
||||
->references('id') // permission id
|
||||
->on($tableNames['permissions'])
|
||||
->onDelete('cascade');
|
||||
if ($teams) {
|
||||
$table->unsignedBigInteger($columnNames['team_foreign_key']);
|
||||
$table->index($columnNames['team_foreign_key'], 'model_has_permissions_team_foreign_key_index');
|
||||
|
||||
$table->primary([$columnNames['team_foreign_key'], PermissionRegistrar::$pivotPermission, $columnNames['model_morph_key'], 'model_type'],
|
||||
'model_has_permissions_permission_model_type_primary');
|
||||
} else {
|
||||
$table->primary([PermissionRegistrar::$pivotPermission, $columnNames['model_morph_key'], 'model_type'],
|
||||
'model_has_permissions_permission_model_type_primary');
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
Schema::create($tableNames['model_has_roles'], function (Blueprint $table) use ($tableNames, $columnNames, $teams) {
|
||||
$table->unsignedBigInteger(PermissionRegistrar::$pivotRole);
|
||||
|
||||
$table->string('model_type');
|
||||
$table->unsignedBigInteger($columnNames['model_morph_key']);
|
||||
$table->index([$columnNames['model_morph_key'], 'model_type'], 'model_has_roles_model_id_model_type_index');
|
||||
|
||||
$table->foreign(PermissionRegistrar::$pivotRole)
|
||||
->references('id') // role id
|
||||
->on($tableNames['roles'])
|
||||
->onDelete('cascade');
|
||||
if ($teams) {
|
||||
$table->unsignedBigInteger($columnNames['team_foreign_key']);
|
||||
$table->index($columnNames['team_foreign_key'], 'model_has_roles_team_foreign_key_index');
|
||||
|
||||
$table->primary([$columnNames['team_foreign_key'], PermissionRegistrar::$pivotRole, $columnNames['model_morph_key'], 'model_type'],
|
||||
'model_has_roles_role_model_type_primary');
|
||||
} else {
|
||||
$table->primary([PermissionRegistrar::$pivotRole, $columnNames['model_morph_key'], 'model_type'],
|
||||
'model_has_roles_role_model_type_primary');
|
||||
}
|
||||
});
|
||||
|
||||
Schema::create($tableNames['role_has_permissions'], function (Blueprint $table) use ($tableNames) {
|
||||
$table->unsignedBigInteger(PermissionRegistrar::$pivotPermission);
|
||||
$table->unsignedBigInteger(PermissionRegistrar::$pivotRole);
|
||||
|
||||
$table->foreign(PermissionRegistrar::$pivotPermission)
|
||||
->references('id') // permission id
|
||||
->on($tableNames['permissions'])
|
||||
->onDelete('cascade');
|
||||
|
||||
$table->foreign(PermissionRegistrar::$pivotRole)
|
||||
->references('id') // role id
|
||||
->on($tableNames['roles'])
|
||||
->onDelete('cascade');
|
||||
|
||||
$table->primary([PermissionRegistrar::$pivotPermission, PermissionRegistrar::$pivotRole], 'role_has_permissions_permission_id_role_id_primary');
|
||||
});
|
||||
|
||||
app('cache')
|
||||
->store(config('permission.cache.store') != 'default' ? config('permission.cache.store') : null)
|
||||
->forget(config('permission.cache.key'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
$tableNames = config('permission.table_names');
|
||||
|
||||
if (empty($tableNames)) {
|
||||
throw new \Exception('Error: config/permission.php not found and defaults could not be merged. Please publish the package configuration before proceeding, or drop the tables manually.');
|
||||
}
|
||||
|
||||
Schema::drop($tableNames['role_has_permissions']);
|
||||
Schema::drop($tableNames['model_has_roles']);
|
||||
Schema::drop($tableNames['model_has_permissions']);
|
||||
Schema::drop($tableNames['roles']);
|
||||
Schema::drop($tableNames['permissions']);
|
||||
}
|
||||
}
|
||||
@@ -4,7 +4,7 @@ use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
class ColumnUsersRoles extends Migration
|
||||
class ColumnsAnagrafica extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
@@ -13,11 +13,14 @@ class ColumnUsersRoles extends Migration
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::table('users', function (Blueprint $table) {
|
||||
//
|
||||
$table->softDeletes();
|
||||
$table->string('user_role',25)->default('user')->nullable(false);
|
||||
});
|
||||
/*Schema::table('anagraficas', function (Blueprint $table) {
|
||||
/* //
|
||||
// $table->longText('ang_indirizzo');
|
||||
$table->string('ang_CAP');
|
||||
$table->string('ang_Citta');
|
||||
$table->string('ang_Provincia');
|
||||
$table->string('ang_telefono');
|
||||
});*/
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -27,10 +30,8 @@ class ColumnUsersRoles extends Migration
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::table('users', function (Blueprint $table) {
|
||||
Schema::table('anagraficas', function (Blueprint $table) {
|
||||
//
|
||||
$table->dropColumn('user_role');
|
||||
$table->dropSoftDeletes();
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
class CreateRivistasTable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('rivistas', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('rivistas');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
class CreateAssociazionesTable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('associaziones', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('associaziones');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
class CreateGruppisTable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('gruppis', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('gruppis');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
class UpdateCategoriesAddingSpesaEntrata extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
//
|
||||
Schema::table('categories', function (Blueprint $table) {
|
||||
|
||||
$table->smallInteger('cat_entrata')->after('cat_name')->default(0);
|
||||
$table->smallInteger('cat_uscita')->after('cat_entrata')->default(0);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
//
|
||||
Schema::table('categories', function (Blueprint $table) {
|
||||
$table->dropColumn('cat_entrata');
|
||||
$table->dropColumn('cat_uscita');
|
||||
});
|
||||
}
|
||||
}
|
||||
39
database/migrations/2023_07_14_123253_create_tasks_table.php
Normal file
39
database/migrations/2023_07_14_123253_create_tasks_table.php
Normal file
@@ -0,0 +1,39 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
class CreateTasksTable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('tasks', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->timestamps();
|
||||
$table->string('titolo',255);
|
||||
$table->longText('descrizione')->nullable();
|
||||
$table->bigInteger('creato_da');
|
||||
$table->bigInteger('assegnato_a');
|
||||
$table->date('creato_il');
|
||||
$table->date('termine_il');
|
||||
$table->date('chiuso_il');
|
||||
$table->enum('stato', ['Aperto', 'Chiuso'])->nullable()->default('Aperto');
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('tasks');
|
||||
}
|
||||
}
|
||||
42
database/migrations/2023_07_14_123350_subtask.php
Normal file
42
database/migrations/2023_07_14_123350_subtask.php
Normal file
@@ -0,0 +1,42 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
class Subtask extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
//
|
||||
Schema::create('subtasks', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->timestamps();
|
||||
// $table->bigInteger('tasks_id');
|
||||
$table->foreignId('tasks_id')->onDelete('cascade');
|
||||
$table->string('titolo',255);
|
||||
$table->longText('descrizione')->nullable();
|
||||
$table->bigInteger('creato_da');
|
||||
$table->bigInteger('assegnato_a');
|
||||
$table->date('creato_il');
|
||||
$table->date('termine_il');
|
||||
$table->date('chiuso_il');
|
||||
$table->enum('stato', ['Aperto', 'Chiuso'])->nullable()->default('Aperto');
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
//
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
class CreateAvvisosTable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('avvisos', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->timestamps();
|
||||
$table->longtext('avviso');
|
||||
$table->date('creato_il')->nullable()->default(date('Y-m-d'));
|
||||
$table->bigInteger('creato_da');
|
||||
$table->boolean('urgente')->nullable()->default(false);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('avvisos');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
class CreateContrattisTable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('contrattis', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->timestamps();
|
||||
$table->string('numero', 100)->nullable();
|
||||
$table->string('nome', 100);
|
||||
$table->date('datainizio');
|
||||
$table->date('datatermine');
|
||||
$table->string('fornitore', 100)->default('text');
|
||||
$table->string('tipo', 100)->default('utenze');
|
||||
$table->decimal('importo', 5, 2);
|
||||
$table->date('scadenzapagamento');
|
||||
$table->string('stato', 100)->default('attivo');
|
||||
$table->longText('note')->nullable();
|
||||
$table->string('filename',255)->nullable();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('contrattis');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
class CreateGenDocsTable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('gen_docs', function (Blueprint $table) {
|
||||
// Documenti generali definibili agganciabili a diverse entità
|
||||
$table->id();
|
||||
$table->timestamps();
|
||||
$table->integer('entity')->unsigned();
|
||||
$table->bigInteger('entity_id');
|
||||
$table->string('filename', 255);
|
||||
$table->longText('descrizione');
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('gen_docs');
|
||||
}
|
||||
}
|
||||
@@ -16,7 +16,23 @@ class CategorieSeeder extends Seeder
|
||||
{
|
||||
// Inserisce le categorie necessarie
|
||||
DB::table('categories')->insert(
|
||||
['cat_name'=>'Automobili']
|
||||
[
|
||||
'cat_name'=>'Automobili',
|
||||
'cat_uscita'=>1,
|
||||
'cat_entrata'=>0,
|
||||
]
|
||||
);
|
||||
DB::table('categories')->insert(
|
||||
[
|
||||
'cat_name'=>'Stipendio',
|
||||
'cat_uscita'=>0,
|
||||
'cat_entrata'=>1]
|
||||
);
|
||||
DB::table('categories')->insert(
|
||||
[
|
||||
'cat_name'=>'Utenze',
|
||||
'cat_uscita'=>1,
|
||||
'cat_entrata'=>0]
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,6 +18,7 @@ class DatabaseSeeder extends Seeder
|
||||
UserSeeder::class,
|
||||
TagSeeder::class,
|
||||
CategorieSeeder::class,
|
||||
RoleSeeder::class,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
44
database/seeders/Documenti.php
Normal file
44
database/seeders/Documenti.php
Normal file
@@ -0,0 +1,44 @@
|
||||
<?php
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use Illuminate\Database\Seeder;
|
||||
use App\Models\Documenti as Doc;
|
||||
|
||||
class Documenti extends Seeder
|
||||
{
|
||||
/**
|
||||
* Run the database seeds.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function run()
|
||||
{
|
||||
//
|
||||
Doc::create([
|
||||
'id'=>0,
|
||||
'descrizione' => 'Movimenti',
|
||||
'path' => 'Movimenti',
|
||||
],
|
||||
[
|
||||
'id' => 1,
|
||||
'descrizione' => 'Contratti',
|
||||
'path' => 'Contratti',
|
||||
],
|
||||
[
|
||||
'id' => 2,
|
||||
'descrizione' => 'Automobili',
|
||||
'path' => 'Automobili',
|
||||
],
|
||||
[
|
||||
'id' => 3,
|
||||
'descrizione' => 'Progetti',
|
||||
'path' => 'Progetti',
|
||||
],
|
||||
[
|
||||
'id' => 4,
|
||||
'descrizione' => 'Documenti',
|
||||
'path' => 'Documenti',
|
||||
]);
|
||||
}
|
||||
}
|
||||
84
database/seeders/OnlySeeder.php
Normal file
84
database/seeders/OnlySeeder.php
Normal file
@@ -0,0 +1,84 @@
|
||||
<?php
|
||||
namespace Database\Seeders;
|
||||
|
||||
use App\Models\User;
|
||||
use Illuminate\Database\Seeder;
|
||||
use Illuminate\Support\Facades\Hash;
|
||||
use Spatie\Permission\Models\Permission;
|
||||
use Spatie\Permission\Models\Role;
|
||||
use Spatie\Permission\PermissionRegistrar;
|
||||
|
||||
class OnlySeeder extends Seeder
|
||||
{
|
||||
|
||||
/**
|
||||
* Run the database seeds.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function run()
|
||||
{
|
||||
// Role Creation
|
||||
$role_admin = Role::create([
|
||||
'name' => 'admin'
|
||||
]);
|
||||
$role_user = Role::create([
|
||||
'name' => 'user'
|
||||
]);
|
||||
$role_guest = Role::create([
|
||||
'name' => 'guest'
|
||||
]);
|
||||
|
||||
// Permission Creation
|
||||
Permission::create([
|
||||
'name' => 'conti'
|
||||
]);
|
||||
Permission::create([
|
||||
'name' => 'consumi'
|
||||
]);
|
||||
Permission::create([
|
||||
'name' => 'automobili'
|
||||
]);
|
||||
Permission::create([
|
||||
'name' => 'contatti'
|
||||
]);
|
||||
Permission::create([
|
||||
'name' => 'affitti'
|
||||
]);
|
||||
Permission::create([
|
||||
'name' => 'progetti'
|
||||
]);
|
||||
Permission::create([
|
||||
'name' => 'amministrazione'
|
||||
]);
|
||||
|
||||
// Assegnazione permessi al ruolo user
|
||||
$role_user->givePermissionTo('affitti');
|
||||
$role_user->givePermissionTo('automobili');
|
||||
$role_user->givePermissionTo('contatti');
|
||||
$role_user->givePermissionTo('consumi');
|
||||
$role_user->givePermissionTo('conti');
|
||||
$role_user->givePermissionTo('progetti');
|
||||
// Assegnazione permessi al ruolo guest
|
||||
$role_guest->givePermissionTo('affitti');
|
||||
// Il ruolo admin ha già tutti i permessi da middleware
|
||||
|
||||
$admin = User::create([
|
||||
'name'=>'Amministratore',
|
||||
'email'=>'admin@localhost.local',
|
||||
'password'=>Hash::make('admin'),
|
||||
])->assignRole('admin');
|
||||
|
||||
$user = User::create([
|
||||
'name'=>'Utente',
|
||||
'email'=>'user@localhost.local',
|
||||
'password'=>Hash::make('user'),
|
||||
])->assignRole('user');
|
||||
|
||||
$guest = User::create([
|
||||
'name'=>'Guest',
|
||||
'email'=>'guest@localhost.local',
|
||||
'password'=>Hash::make('guest'),
|
||||
])->assignRole('guest');
|
||||
}
|
||||
}
|
||||
83
database/seeders/RoleSeeder.php
Normal file
83
database/seeders/RoleSeeder.php
Normal file
@@ -0,0 +1,83 @@
|
||||
<?php
|
||||
namespace Database\Seeders;
|
||||
|
||||
use App\Models\User;
|
||||
use Illuminate\Database\Seeder;
|
||||
use Illuminate\Support\Facades\Hash;
|
||||
use Spatie\Permission\Models\Permission;
|
||||
use Spatie\Permission\Models\Role;
|
||||
use Spatie\Permission\PermissionRegistrar;
|
||||
|
||||
class RoleSeeder extends Seeder
|
||||
{
|
||||
|
||||
/**
|
||||
* Run the database seeds.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function run()
|
||||
{
|
||||
// Role Creation
|
||||
$role_admin = Role::create([
|
||||
'name' => 'admin'
|
||||
]);
|
||||
$role_user = Role::create([
|
||||
'name' => 'user'
|
||||
]);
|
||||
$role_guest = Role::create([
|
||||
'name' => 'guest'
|
||||
]);
|
||||
|
||||
// Permission Creation
|
||||
Permission::create([
|
||||
'name' => 'conti'
|
||||
]);
|
||||
Permission::create([
|
||||
'name' => 'consumi'
|
||||
]);
|
||||
Permission::create([
|
||||
'name' => 'automobili'
|
||||
]);
|
||||
Permission::create([
|
||||
'name' => 'contatti'
|
||||
]);
|
||||
Permission::create([
|
||||
'name' => 'affitti'
|
||||
]);
|
||||
Permission::create([
|
||||
'name' => 'progetti'
|
||||
]);
|
||||
Permission::create([
|
||||
'name' => 'amministrazione'
|
||||
]);
|
||||
|
||||
// Assegnazione permessi al ruolo user
|
||||
$role_user->givePermissionTo('affitti');
|
||||
$role_user->givePermissionTo('automobili');
|
||||
$role_user->givePermissionTo('contatti');
|
||||
$role_user->givePermissionTo('consumi');
|
||||
$role_user->givePermissionTo('conti');
|
||||
$role_user->givePermissionTo('progetti');
|
||||
// Assegnazione permessi al ruolo guest
|
||||
$role_guest->givePermissionTo('affitti');
|
||||
|
||||
$admin = User::create([
|
||||
'name'=>'Amministratore',
|
||||
'email'=>'admin@localhost.local',
|
||||
'password'=>Hash::make('password'),
|
||||
])->assignRole($role_admin);
|
||||
|
||||
$user = User::create([
|
||||
'name'=>'Utente',
|
||||
'email'=>'user@localhost.local',
|
||||
'password'=>Hash::make('password'),
|
||||
])->assignRole($role_user);
|
||||
|
||||
$guest = User::create([
|
||||
'name'=>'Guest',
|
||||
'email'=>'guest@localhost.local',
|
||||
'password'=>Hash::make('password'),
|
||||
])->assignRole($role_guest);
|
||||
}
|
||||
}
|
||||
@@ -18,5 +18,8 @@ class TagSeeder extends Seeder
|
||||
DB::table('tags')->insert(
|
||||
['tag_name'=>'System']
|
||||
);
|
||||
DB::table('tags')->insert(
|
||||
['tag_name'=>'da verificare']
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,9 +20,11 @@ class UserSeeder extends Seeder
|
||||
DB::table('users')->insert(
|
||||
[
|
||||
'name'=>'SystemUser',
|
||||
'email'=>env('SYSADMIN_MAIL'),
|
||||
'email'=>'system@localhost.local',
|
||||
'password'=>Hash::make(Str::random(16)),
|
||||
|
||||
]
|
||||
);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
12291
package-lock.json
generated
12291
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -21,6 +21,7 @@
|
||||
"sass-loader": "^11.0.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"@fullcalendar/google-calendar": "^6.1.9",
|
||||
"bootstrap-select": "^1.13.18",
|
||||
"fullcalendar": "^5.10.2"
|
||||
}
|
||||
|
||||
1
public/contratti
Symbolic link
1
public/contratti
Symbolic link
@@ -0,0 +1 @@
|
||||
/var/www/html/bubofamily/storage/app/Contratti
|
||||
152
public/css/Blog-Template.css
vendored
Normal file
152
public/css/Blog-Template.css
vendored
Normal file
@@ -0,0 +1,152 @@
|
||||
.u-section-1 .u-sheet-1 {
|
||||
min-height: 561px;
|
||||
}
|
||||
|
||||
.u-section-1 .u-repeater-1 {
|
||||
margin-top: 60px;
|
||||
margin-bottom: 60px;
|
||||
min-height: 441px;
|
||||
grid-template-columns: calc(33.3333% - 15px) calc(33.3333% - 15px) calc(33.3333% - 15px);
|
||||
height: auto;
|
||||
grid-gap: 22px;
|
||||
}
|
||||
|
||||
.u-section-1 .u-repeater-item-1 {
|
||||
background-image: none;
|
||||
}
|
||||
|
||||
.u-section-1 .u-container-layout-1 {
|
||||
padding: 30px 20px;
|
||||
}
|
||||
|
||||
.u-section-1 .u-text-1 {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.u-section-1 .u-image-1 {
|
||||
height: 222px;
|
||||
margin-top: 17px;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.u-section-1 .u-text-2 {
|
||||
margin-top: 20px;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.u-section-1 .u-btn-1 {
|
||||
background-image: none;
|
||||
border-style: none none solid;
|
||||
margin: 17px auto 0 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.u-section-1 .u-container-layout-2 {
|
||||
padding: 30px 20px;
|
||||
}
|
||||
|
||||
.u-section-1 .u-text-3 {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.u-section-1 .u-image-2 {
|
||||
height: 222px;
|
||||
margin-top: 17px;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.u-section-1 .u-text-4 {
|
||||
margin-top: 20px;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.u-section-1 .u-btn-2 {
|
||||
background-image: none;
|
||||
border-style: none none solid;
|
||||
margin: 17px auto 0 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.u-section-1 .u-container-layout-3 {
|
||||
padding: 30px 20px;
|
||||
}
|
||||
|
||||
.u-section-1 .u-text-5 {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.u-section-1 .u-image-3 {
|
||||
height: 222px;
|
||||
margin-top: 17px;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.u-section-1 .u-text-6 {
|
||||
margin-top: 20px;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.u-section-1 .u-btn-3 {
|
||||
background-image: none;
|
||||
border-style: none none solid;
|
||||
margin: 17px auto 0 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
@media (max-width: 1199px) {
|
||||
.u-section-1 .u-sheet-1 {
|
||||
min-height: 484px;
|
||||
}
|
||||
|
||||
.u-section-1 .u-repeater-1 {
|
||||
min-height: 364px;
|
||||
grid-template-columns: repeat(3, calc(33.333333333333336% - 15px));
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 991px) {
|
||||
.u-section-1 .u-sheet-1 {
|
||||
min-height: 956px;
|
||||
}
|
||||
|
||||
.u-section-1 .u-repeater-1 {
|
||||
min-height: 836px;
|
||||
grid-template-columns: repeat(2, calc(50% - 11.25px));
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 767px) {
|
||||
.u-section-1 .u-repeater-1 {
|
||||
grid-template-columns: 100%;
|
||||
}
|
||||
|
||||
.u-section-1 .u-container-layout-1 {
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
}
|
||||
|
||||
.u-section-1 .u-image-1 {
|
||||
height: 278px;
|
||||
}
|
||||
|
||||
.u-section-1 .u-container-layout-2 {
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
}
|
||||
|
||||
.u-section-1 .u-image-2 {
|
||||
height: 278px;
|
||||
}
|
||||
|
||||
.u-section-1 .u-container-layout-3 {
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
}
|
||||
|
||||
.u-section-1 .u-image-3 {
|
||||
height: 278px;
|
||||
}
|
||||
}
|
||||
186
public/css/Page-2.css
vendored
Normal file
186
public/css/Page-2.css
vendored
Normal file
@@ -0,0 +1,186 @@
|
||||
.u-section-1 {
|
||||
background-image: url("/images/aw.jpg");
|
||||
background-position: 50% 50%;
|
||||
}
|
||||
|
||||
.u-section-1 .u-sheet-1 {
|
||||
min-height: 500px;
|
||||
}
|
||||
|
||||
.u-section-1 .u-layout-wrap-1 {
|
||||
width: 1140px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.u-section-1 .u-image-1 {
|
||||
min-height: 691px;
|
||||
background-image: url("/images/s-min.jpg");
|
||||
background-position: 50% 50%;
|
||||
}
|
||||
|
||||
.u-section-1 .u-container-layout-1 {
|
||||
padding: 30px;
|
||||
}
|
||||
|
||||
.u-section-1 .u-layout-cell-2 {
|
||||
min-height: 691px;
|
||||
}
|
||||
|
||||
.u-section-1 .u-container-layout-2 {
|
||||
padding: 30px 36px;
|
||||
}
|
||||
|
||||
.u-section-1 .u-text-1 {
|
||||
font-size: 1.25rem;
|
||||
font-weight: 700;
|
||||
line-height: 1.2;
|
||||
background-image: none;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 5px;
|
||||
font-family: "PT Sans", sans-serif;
|
||||
margin: 110px 28px 0 0;
|
||||
}
|
||||
|
||||
.u-section-1 .u-text-2 {
|
||||
font-size: 4.5rem;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: normal;
|
||||
font-weight: 700;
|
||||
font-family: "Roboto Condensed", sans-serif;
|
||||
margin: 0 28px 0 0;
|
||||
}
|
||||
|
||||
.u-section-1 .u-text-3 {
|
||||
font-size: 1.125rem;
|
||||
font-style: italic;
|
||||
margin: 20px 14px 0 0;
|
||||
}
|
||||
|
||||
.u-section-1 .u-text-4 {
|
||||
margin: 18px auto 0 14px;
|
||||
}
|
||||
|
||||
.u-section-1 .u-btn-1 {
|
||||
border-style: solid;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.u-section-1 .u-btn-2 {
|
||||
background-image: none;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 3px;
|
||||
font-weight: 700;
|
||||
font-size: 1rem;
|
||||
border-style: none;
|
||||
margin: 28px auto 0 0;
|
||||
padding: 10px 52px 10px 51px;
|
||||
}
|
||||
|
||||
@media (max-width: 1199px) {
|
||||
.u-section-1 .u-sheet-1 {
|
||||
min-height: 291px;
|
||||
}
|
||||
|
||||
.u-section-1 .u-layout-wrap-1 {
|
||||
width: 940px;
|
||||
}
|
||||
|
||||
.u-section-1 .u-image-1 {
|
||||
min-height: 570px;
|
||||
}
|
||||
|
||||
.u-section-1 .u-layout-cell-2 {
|
||||
min-height: 570px;
|
||||
}
|
||||
|
||||
.u-section-1 .u-text-1 {
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
.u-section-1 .u-text-2 {
|
||||
font-size: 3.75rem;
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
.u-section-1 .u-text-3 {
|
||||
margin-right: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 991px) {
|
||||
.u-section-1 .u-sheet-1 {
|
||||
min-height: 158px;
|
||||
}
|
||||
|
||||
.u-section-1 .u-layout-wrap-1 {
|
||||
width: 720px;
|
||||
}
|
||||
|
||||
.u-section-1 .u-image-1 {
|
||||
min-height: 437px;
|
||||
}
|
||||
|
||||
.u-section-1 .u-layout-cell-2 {
|
||||
min-height: 100px;
|
||||
}
|
||||
|
||||
.u-section-1 .u-container-layout-2 {
|
||||
padding-left: 30px;
|
||||
padding-right: 30px;
|
||||
}
|
||||
|
||||
.u-section-1 .u-text-2 {
|
||||
font-size: 3rem;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 767px) {
|
||||
.u-section-1 .u-sheet-1 {
|
||||
min-height: 477px;
|
||||
}
|
||||
|
||||
.u-section-1 .u-layout-wrap-1 {
|
||||
width: 540px;
|
||||
}
|
||||
|
||||
.u-section-1 .u-image-1 {
|
||||
min-height: 656px;
|
||||
order: 1;
|
||||
}
|
||||
|
||||
.u-section-1 .u-container-layout-1 {
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
}
|
||||
|
||||
.u-section-1 .u-layout-cell-2 {
|
||||
order: 0;
|
||||
}
|
||||
|
||||
.u-section-1 .u-container-layout-2 {
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
}
|
||||
|
||||
.u-section-1 .u-text-2 {
|
||||
font-size: 4.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 575px) {
|
||||
.u-section-1 .u-sheet-1 {
|
||||
min-height: 234px;
|
||||
}
|
||||
|
||||
.u-section-1 .u-layout-wrap-1 {
|
||||
width: 340px;
|
||||
}
|
||||
|
||||
.u-section-1 .u-image-1 {
|
||||
min-height: 413px;
|
||||
}
|
||||
|
||||
.u-section-1 .u-text-2 {
|
||||
font-size: 2.25rem;
|
||||
}
|
||||
}
|
||||
87
public/css/Post-Template.css
vendored
Normal file
87
public/css/Post-Template.css
vendored
Normal file
@@ -0,0 +1,87 @@
|
||||
.u-section-1 .u-sheet-1 {
|
||||
min-height: 835px;
|
||||
}
|
||||
|
||||
.u-section-1 .u-post-details-1 {
|
||||
min-height: 375px;
|
||||
margin-top: 60px;
|
||||
margin-bottom: -10px;
|
||||
}
|
||||
|
||||
.u-section-1 .u-container-layout-1 {
|
||||
padding: 30px;
|
||||
}
|
||||
|
||||
.u-section-1 .u-image-1 {
|
||||
height: 486px;
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
.u-section-1 .u-text-1 {
|
||||
margin-top: 20px;
|
||||
margin-bottom: 0;
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
.u-section-1 .u-metadata-1 {
|
||||
margin-top: 30px;
|
||||
margin-bottom: 0;
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
.u-section-1 .u-text-2 {
|
||||
margin-bottom: 0;
|
||||
margin-top: 20px;
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
@media (max-width: 1199px) {
|
||||
.u-section-1 .u-image-1 {
|
||||
margin-left: initial;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 991px) {
|
||||
.u-section-1 .u-sheet-1 {
|
||||
min-height: 782px;
|
||||
}
|
||||
|
||||
.u-section-1 .u-post-details-1 {
|
||||
margin-bottom: 60px;
|
||||
}
|
||||
|
||||
.u-section-1 .u-image-1 {
|
||||
height: 423px;
|
||||
margin-left: initial;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 767px) {
|
||||
.u-section-1 .u-sheet-1 {
|
||||
min-height: 722px;
|
||||
}
|
||||
|
||||
.u-section-1 .u-container-layout-1 {
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
}
|
||||
|
||||
.u-section-1 .u-image-1 {
|
||||
height: 354px;
|
||||
margin-top: 9px;
|
||||
margin-left: initial;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 575px) {
|
||||
.u-section-1 .u-sheet-1 {
|
||||
min-height: 656px;
|
||||
}
|
||||
|
||||
.u-section-1 .u-image-1 {
|
||||
height: 275px;
|
||||
margin-left: initial;
|
||||
}
|
||||
}
|
||||
48
public/css/calendaricon.css
vendored
Normal file
48
public/css/calendaricon.css
vendored
Normal file
@@ -0,0 +1,48 @@
|
||||
time.icon
|
||||
{
|
||||
font-size: 0.5em; /* change icon size */
|
||||
display: block;
|
||||
position: relative;
|
||||
width: 7em;
|
||||
height: 7em;
|
||||
background-color: #fff;
|
||||
border-radius: 0.6em;
|
||||
box-shadow: 0 1px 0 #bdbdbd, 0 2px 0 #fff, 0 3px 0 #bdbdbd, 0 4px 0 #fff, 0 5px 0 #bdbdbd, 0 0 0 1px #bdbdbd;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
time.icon *
|
||||
{
|
||||
display: block;
|
||||
width: 100%;
|
||||
font-size: 1em;
|
||||
font-weight: bold;
|
||||
font-style: normal;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
time.icon strong
|
||||
{
|
||||
position: absolute;
|
||||
top: 0;
|
||||
padding: 0.4em 0;
|
||||
color: #fff;
|
||||
background-color: #fd9f1b;
|
||||
border-bottom: 1px dashed #f37302;
|
||||
box-shadow: 0 2px 0 #fd9f1b;
|
||||
}
|
||||
|
||||
time.icon em
|
||||
{
|
||||
position: absolute;
|
||||
bottom: 0.3em;
|
||||
color: #fd9f1b;
|
||||
}
|
||||
|
||||
time.icon span
|
||||
{
|
||||
font-size: 2.8em;
|
||||
letter-spacing: -0.05em;
|
||||
padding-top: 0.8em;
|
||||
color: #2f2f2f;
|
||||
}
|
||||
41239
public/css/nicepage.css
vendored
Normal file
41239
public/css/nicepage.css
vendored
Normal file
File diff suppressed because it is too large
Load Diff
BIN
public/fontawesome-free-6.4.2-web.zip
Normal file
BIN
public/fontawesome-free-6.4.2-web.zip
Normal file
Binary file not shown.
165
public/fontawesome-free-6.4.2-web/LICENSE.txt
Normal file
165
public/fontawesome-free-6.4.2-web/LICENSE.txt
Normal file
@@ -0,0 +1,165 @@
|
||||
Fonticons, Inc. (https://fontawesome.com)
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
Font Awesome Free License
|
||||
|
||||
Font Awesome Free is free, open source, and GPL friendly. You can use it for
|
||||
commercial projects, open source projects, or really almost whatever you want.
|
||||
Full Font Awesome Free license: https://fontawesome.com/license/free.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
# Icons: CC BY 4.0 License (https://creativecommons.org/licenses/by/4.0/)
|
||||
|
||||
The Font Awesome Free download is licensed under a Creative Commons
|
||||
Attribution 4.0 International License and applies to all icons packaged
|
||||
as SVG and JS file types.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
# Fonts: SIL OFL 1.1 License
|
||||
|
||||
In the Font Awesome Free download, the SIL OFL license applies to all icons
|
||||
packaged as web and desktop font files.
|
||||
|
||||
Copyright (c) 2023 Fonticons, Inc. (https://fontawesome.com)
|
||||
with Reserved Font Name: "Font Awesome".
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
http://scripts.sil.org/OFL
|
||||
|
||||
SIL OPEN FONT LICENSE
|
||||
Version 1.1 - 26 February 2007
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting — in part or in whole — any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
# Code: MIT License (https://opensource.org/licenses/MIT)
|
||||
|
||||
In the Font Awesome Free download, the MIT license applies to all non-font and
|
||||
non-icon files.
|
||||
|
||||
Copyright 2023 Fonticons, Inc.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal in the
|
||||
Software without restriction, including without limitation the rights to use, copy,
|
||||
modify, merge, publish, distribute, sublicense, and/or sell copies of the Software,
|
||||
and to permit persons to whom the Software is furnished to do so, subject to the
|
||||
following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
|
||||
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
|
||||
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
# Attribution
|
||||
|
||||
Attribution is required by MIT, SIL OFL, and CC BY licenses. Downloaded Font
|
||||
Awesome Free files already contain embedded comments with sufficient
|
||||
attribution, so you shouldn't need to do anything additional when using these
|
||||
files normally.
|
||||
|
||||
We've kept attribution comments terse, so we ask that you do not actively work
|
||||
to remove them from files, especially code. They're a great way for folks to
|
||||
learn about Font Awesome.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
# Brand Icons
|
||||
|
||||
All brand icons are trademarks of their respective owners. The use of these
|
||||
trademarks does not indicate endorsement of the trademark holder by Font
|
||||
Awesome, nor vice versa. **Please do not use brand logos for any purpose except
|
||||
to represent the company, product, or service to which they refer.**
|
||||
7970
public/fontawesome-free-6.4.2-web/css/all.css
vendored
Normal file
7970
public/fontawesome-free-6.4.2-web/css/all.css
vendored
Normal file
File diff suppressed because it is too large
Load Diff
9
public/fontawesome-free-6.4.2-web/css/all.min.css
vendored
Normal file
9
public/fontawesome-free-6.4.2-web/css/all.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1537
public/fontawesome-free-6.4.2-web/css/brands.css
vendored
Normal file
1537
public/fontawesome-free-6.4.2-web/css/brands.css
vendored
Normal file
File diff suppressed because it is too large
Load Diff
6
public/fontawesome-free-6.4.2-web/css/brands.min.css
vendored
Normal file
6
public/fontawesome-free-6.4.2-web/css/brands.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
6372
public/fontawesome-free-6.4.2-web/css/fontawesome.css
vendored
Normal file
6372
public/fontawesome-free-6.4.2-web/css/fontawesome.css
vendored
Normal file
File diff suppressed because it is too large
Load Diff
9
public/fontawesome-free-6.4.2-web/css/fontawesome.min.css
vendored
Normal file
9
public/fontawesome-free-6.4.2-web/css/fontawesome.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
19
public/fontawesome-free-6.4.2-web/css/regular.css
vendored
Normal file
19
public/fontawesome-free-6.4.2-web/css/regular.css
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
/*!
|
||||
* Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
||||
* Copyright 2023 Fonticons, Inc.
|
||||
*/
|
||||
:root, :host {
|
||||
--fa-style-family-classic: 'Font Awesome 6 Free';
|
||||
--fa-font-regular: normal 400 1em/1 'Font Awesome 6 Free'; }
|
||||
|
||||
@font-face {
|
||||
font-family: 'Font Awesome 6 Free';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
font-display: block;
|
||||
src: url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.ttf") format("truetype"); }
|
||||
|
||||
.far,
|
||||
.fa-regular {
|
||||
font-weight: 400; }
|
||||
6
public/fontawesome-free-6.4.2-web/css/regular.min.css
vendored
Normal file
6
public/fontawesome-free-6.4.2-web/css/regular.min.css
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
/*!
|
||||
* Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
||||
* Copyright 2023 Fonticons, Inc.
|
||||
*/
|
||||
:host,:root{--fa-style-family-classic:"Font Awesome 6 Free";--fa-font-regular:normal 400 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype")}.fa-regular,.far{font-weight:400}
|
||||
19
public/fontawesome-free-6.4.2-web/css/solid.css
vendored
Normal file
19
public/fontawesome-free-6.4.2-web/css/solid.css
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
/*!
|
||||
* Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
||||
* Copyright 2023 Fonticons, Inc.
|
||||
*/
|
||||
:root, :host {
|
||||
--fa-style-family-classic: 'Font Awesome 6 Free';
|
||||
--fa-font-solid: normal 900 1em/1 'Font Awesome 6 Free'; }
|
||||
|
||||
@font-face {
|
||||
font-family: 'Font Awesome 6 Free';
|
||||
font-style: normal;
|
||||
font-weight: 900;
|
||||
font-display: block;
|
||||
src: url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.ttf") format("truetype"); }
|
||||
|
||||
.fas,
|
||||
.fa-solid {
|
||||
font-weight: 900; }
|
||||
6
public/fontawesome-free-6.4.2-web/css/solid.min.css
vendored
Normal file
6
public/fontawesome-free-6.4.2-web/css/solid.min.css
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
/*!
|
||||
* Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
||||
* Copyright 2023 Fonticons, Inc.
|
||||
*/
|
||||
:host,:root{--fa-style-family-classic:"Font Awesome 6 Free";--fa-font-solid:normal 900 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}.fa-solid,.fas{font-weight:900}
|
||||
639
public/fontawesome-free-6.4.2-web/css/svg-with-js.css
vendored
Normal file
639
public/fontawesome-free-6.4.2-web/css/svg-with-js.css
vendored
Normal file
@@ -0,0 +1,639 @@
|
||||
/*!
|
||||
* Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
||||
* Copyright 2023 Fonticons, Inc.
|
||||
*/
|
||||
:root, :host {
|
||||
--fa-font-solid: normal 900 1em/1 'Font Awesome 6 Solid';
|
||||
--fa-font-regular: normal 400 1em/1 'Font Awesome 6 Regular';
|
||||
--fa-font-light: normal 300 1em/1 'Font Awesome 6 Light';
|
||||
--fa-font-thin: normal 100 1em/1 'Font Awesome 6 Thin';
|
||||
--fa-font-duotone: normal 900 1em/1 'Font Awesome 6 Duotone';
|
||||
--fa-font-sharp-solid: normal 900 1em/1 'Font Awesome 6 Sharp';
|
||||
--fa-font-sharp-regular: normal 400 1em/1 'Font Awesome 6 Sharp';
|
||||
--fa-font-sharp-light: normal 300 1em/1 'Font Awesome 6 Sharp';
|
||||
--fa-font-brands: normal 400 1em/1 'Font Awesome 6 Brands'; }
|
||||
|
||||
svg:not(:root).svg-inline--fa, svg:not(:host).svg-inline--fa {
|
||||
overflow: visible;
|
||||
box-sizing: content-box; }
|
||||
|
||||
.svg-inline--fa {
|
||||
display: var(--fa-display, inline-block);
|
||||
height: 1em;
|
||||
overflow: visible;
|
||||
vertical-align: -.125em; }
|
||||
.svg-inline--fa.fa-2xs {
|
||||
vertical-align: 0.1em; }
|
||||
.svg-inline--fa.fa-xs {
|
||||
vertical-align: 0em; }
|
||||
.svg-inline--fa.fa-sm {
|
||||
vertical-align: -0.07143em; }
|
||||
.svg-inline--fa.fa-lg {
|
||||
vertical-align: -0.2em; }
|
||||
.svg-inline--fa.fa-xl {
|
||||
vertical-align: -0.25em; }
|
||||
.svg-inline--fa.fa-2xl {
|
||||
vertical-align: -0.3125em; }
|
||||
.svg-inline--fa.fa-pull-left {
|
||||
margin-right: var(--fa-pull-margin, 0.3em);
|
||||
width: auto; }
|
||||
.svg-inline--fa.fa-pull-right {
|
||||
margin-left: var(--fa-pull-margin, 0.3em);
|
||||
width: auto; }
|
||||
.svg-inline--fa.fa-li {
|
||||
width: var(--fa-li-width, 2em);
|
||||
top: 0.25em; }
|
||||
.svg-inline--fa.fa-fw {
|
||||
width: var(--fa-fw-width, 1.25em); }
|
||||
|
||||
.fa-layers svg.svg-inline--fa {
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
margin: auto;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0; }
|
||||
|
||||
.fa-layers-text, .fa-layers-counter {
|
||||
display: inline-block;
|
||||
position: absolute;
|
||||
text-align: center; }
|
||||
|
||||
.fa-layers {
|
||||
display: inline-block;
|
||||
height: 1em;
|
||||
position: relative;
|
||||
text-align: center;
|
||||
vertical-align: -.125em;
|
||||
width: 1em; }
|
||||
.fa-layers svg.svg-inline--fa {
|
||||
-webkit-transform-origin: center center;
|
||||
transform-origin: center center; }
|
||||
|
||||
.fa-layers-text {
|
||||
left: 50%;
|
||||
top: 50%;
|
||||
-webkit-transform: translate(-50%, -50%);
|
||||
transform: translate(-50%, -50%);
|
||||
-webkit-transform-origin: center center;
|
||||
transform-origin: center center; }
|
||||
|
||||
.fa-layers-counter {
|
||||
background-color: var(--fa-counter-background-color, #ff253a);
|
||||
border-radius: var(--fa-counter-border-radius, 1em);
|
||||
box-sizing: border-box;
|
||||
color: var(--fa-inverse, #fff);
|
||||
line-height: var(--fa-counter-line-height, 1);
|
||||
max-width: var(--fa-counter-max-width, 5em);
|
||||
min-width: var(--fa-counter-min-width, 1.5em);
|
||||
overflow: hidden;
|
||||
padding: var(--fa-counter-padding, 0.25em 0.5em);
|
||||
right: var(--fa-right, 0);
|
||||
text-overflow: ellipsis;
|
||||
top: var(--fa-top, 0);
|
||||
-webkit-transform: scale(var(--fa-counter-scale, 0.25));
|
||||
transform: scale(var(--fa-counter-scale, 0.25));
|
||||
-webkit-transform-origin: top right;
|
||||
transform-origin: top right; }
|
||||
|
||||
.fa-layers-bottom-right {
|
||||
bottom: var(--fa-bottom, 0);
|
||||
right: var(--fa-right, 0);
|
||||
top: auto;
|
||||
-webkit-transform: scale(var(--fa-layers-scale, 0.25));
|
||||
transform: scale(var(--fa-layers-scale, 0.25));
|
||||
-webkit-transform-origin: bottom right;
|
||||
transform-origin: bottom right; }
|
||||
|
||||
.fa-layers-bottom-left {
|
||||
bottom: var(--fa-bottom, 0);
|
||||
left: var(--fa-left, 0);
|
||||
right: auto;
|
||||
top: auto;
|
||||
-webkit-transform: scale(var(--fa-layers-scale, 0.25));
|
||||
transform: scale(var(--fa-layers-scale, 0.25));
|
||||
-webkit-transform-origin: bottom left;
|
||||
transform-origin: bottom left; }
|
||||
|
||||
.fa-layers-top-right {
|
||||
top: var(--fa-top, 0);
|
||||
right: var(--fa-right, 0);
|
||||
-webkit-transform: scale(var(--fa-layers-scale, 0.25));
|
||||
transform: scale(var(--fa-layers-scale, 0.25));
|
||||
-webkit-transform-origin: top right;
|
||||
transform-origin: top right; }
|
||||
|
||||
.fa-layers-top-left {
|
||||
left: var(--fa-left, 0);
|
||||
right: auto;
|
||||
top: var(--fa-top, 0);
|
||||
-webkit-transform: scale(var(--fa-layers-scale, 0.25));
|
||||
transform: scale(var(--fa-layers-scale, 0.25));
|
||||
-webkit-transform-origin: top left;
|
||||
transform-origin: top left; }
|
||||
|
||||
.fa-1x {
|
||||
font-size: 1em; }
|
||||
|
||||
.fa-2x {
|
||||
font-size: 2em; }
|
||||
|
||||
.fa-3x {
|
||||
font-size: 3em; }
|
||||
|
||||
.fa-4x {
|
||||
font-size: 4em; }
|
||||
|
||||
.fa-5x {
|
||||
font-size: 5em; }
|
||||
|
||||
.fa-6x {
|
||||
font-size: 6em; }
|
||||
|
||||
.fa-7x {
|
||||
font-size: 7em; }
|
||||
|
||||
.fa-8x {
|
||||
font-size: 8em; }
|
||||
|
||||
.fa-9x {
|
||||
font-size: 9em; }
|
||||
|
||||
.fa-10x {
|
||||
font-size: 10em; }
|
||||
|
||||
.fa-2xs {
|
||||
font-size: 0.625em;
|
||||
line-height: 0.1em;
|
||||
vertical-align: 0.225em; }
|
||||
|
||||
.fa-xs {
|
||||
font-size: 0.75em;
|
||||
line-height: 0.08333em;
|
||||
vertical-align: 0.125em; }
|
||||
|
||||
.fa-sm {
|
||||
font-size: 0.875em;
|
||||
line-height: 0.07143em;
|
||||
vertical-align: 0.05357em; }
|
||||
|
||||
.fa-lg {
|
||||
font-size: 1.25em;
|
||||
line-height: 0.05em;
|
||||
vertical-align: -0.075em; }
|
||||
|
||||
.fa-xl {
|
||||
font-size: 1.5em;
|
||||
line-height: 0.04167em;
|
||||
vertical-align: -0.125em; }
|
||||
|
||||
.fa-2xl {
|
||||
font-size: 2em;
|
||||
line-height: 0.03125em;
|
||||
vertical-align: -0.1875em; }
|
||||
|
||||
.fa-fw {
|
||||
text-align: center;
|
||||
width: 1.25em; }
|
||||
|
||||
.fa-ul {
|
||||
list-style-type: none;
|
||||
margin-left: var(--fa-li-margin, 2.5em);
|
||||
padding-left: 0; }
|
||||
.fa-ul > li {
|
||||
position: relative; }
|
||||
|
||||
.fa-li {
|
||||
left: calc(var(--fa-li-width, 2em) * -1);
|
||||
position: absolute;
|
||||
text-align: center;
|
||||
width: var(--fa-li-width, 2em);
|
||||
line-height: inherit; }
|
||||
|
||||
.fa-border {
|
||||
border-color: var(--fa-border-color, #eee);
|
||||
border-radius: var(--fa-border-radius, 0.1em);
|
||||
border-style: var(--fa-border-style, solid);
|
||||
border-width: var(--fa-border-width, 0.08em);
|
||||
padding: var(--fa-border-padding, 0.2em 0.25em 0.15em); }
|
||||
|
||||
.fa-pull-left {
|
||||
float: left;
|
||||
margin-right: var(--fa-pull-margin, 0.3em); }
|
||||
|
||||
.fa-pull-right {
|
||||
float: right;
|
||||
margin-left: var(--fa-pull-margin, 0.3em); }
|
||||
|
||||
.fa-beat {
|
||||
-webkit-animation-name: fa-beat;
|
||||
animation-name: fa-beat;
|
||||
-webkit-animation-delay: var(--fa-animation-delay, 0s);
|
||||
animation-delay: var(--fa-animation-delay, 0s);
|
||||
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
||||
animation-direction: var(--fa-animation-direction, normal);
|
||||
-webkit-animation-duration: var(--fa-animation-duration, 1s);
|
||||
animation-duration: var(--fa-animation-duration, 1s);
|
||||
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||
-webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);
|
||||
animation-timing-function: var(--fa-animation-timing, ease-in-out); }
|
||||
|
||||
.fa-bounce {
|
||||
-webkit-animation-name: fa-bounce;
|
||||
animation-name: fa-bounce;
|
||||
-webkit-animation-delay: var(--fa-animation-delay, 0s);
|
||||
animation-delay: var(--fa-animation-delay, 0s);
|
||||
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
||||
animation-direction: var(--fa-animation-direction, normal);
|
||||
-webkit-animation-duration: var(--fa-animation-duration, 1s);
|
||||
animation-duration: var(--fa-animation-duration, 1s);
|
||||
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||
-webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));
|
||||
animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); }
|
||||
|
||||
.fa-fade {
|
||||
-webkit-animation-name: fa-fade;
|
||||
animation-name: fa-fade;
|
||||
-webkit-animation-delay: var(--fa-animation-delay, 0s);
|
||||
animation-delay: var(--fa-animation-delay, 0s);
|
||||
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
||||
animation-direction: var(--fa-animation-direction, normal);
|
||||
-webkit-animation-duration: var(--fa-animation-duration, 1s);
|
||||
animation-duration: var(--fa-animation-duration, 1s);
|
||||
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||
-webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));
|
||||
animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); }
|
||||
|
||||
.fa-beat-fade {
|
||||
-webkit-animation-name: fa-beat-fade;
|
||||
animation-name: fa-beat-fade;
|
||||
-webkit-animation-delay: var(--fa-animation-delay, 0s);
|
||||
animation-delay: var(--fa-animation-delay, 0s);
|
||||
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
||||
animation-direction: var(--fa-animation-direction, normal);
|
||||
-webkit-animation-duration: var(--fa-animation-duration, 1s);
|
||||
animation-duration: var(--fa-animation-duration, 1s);
|
||||
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||
-webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));
|
||||
animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); }
|
||||
|
||||
.fa-flip {
|
||||
-webkit-animation-name: fa-flip;
|
||||
animation-name: fa-flip;
|
||||
-webkit-animation-delay: var(--fa-animation-delay, 0s);
|
||||
animation-delay: var(--fa-animation-delay, 0s);
|
||||
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
||||
animation-direction: var(--fa-animation-direction, normal);
|
||||
-webkit-animation-duration: var(--fa-animation-duration, 1s);
|
||||
animation-duration: var(--fa-animation-duration, 1s);
|
||||
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||
-webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);
|
||||
animation-timing-function: var(--fa-animation-timing, ease-in-out); }
|
||||
|
||||
.fa-shake {
|
||||
-webkit-animation-name: fa-shake;
|
||||
animation-name: fa-shake;
|
||||
-webkit-animation-delay: var(--fa-animation-delay, 0s);
|
||||
animation-delay: var(--fa-animation-delay, 0s);
|
||||
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
||||
animation-direction: var(--fa-animation-direction, normal);
|
||||
-webkit-animation-duration: var(--fa-animation-duration, 1s);
|
||||
animation-duration: var(--fa-animation-duration, 1s);
|
||||
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||
-webkit-animation-timing-function: var(--fa-animation-timing, linear);
|
||||
animation-timing-function: var(--fa-animation-timing, linear); }
|
||||
|
||||
.fa-spin {
|
||||
-webkit-animation-name: fa-spin;
|
||||
animation-name: fa-spin;
|
||||
-webkit-animation-delay: var(--fa-animation-delay, 0s);
|
||||
animation-delay: var(--fa-animation-delay, 0s);
|
||||
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
||||
animation-direction: var(--fa-animation-direction, normal);
|
||||
-webkit-animation-duration: var(--fa-animation-duration, 2s);
|
||||
animation-duration: var(--fa-animation-duration, 2s);
|
||||
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||
-webkit-animation-timing-function: var(--fa-animation-timing, linear);
|
||||
animation-timing-function: var(--fa-animation-timing, linear); }
|
||||
|
||||
.fa-spin-reverse {
|
||||
--fa-animation-direction: reverse; }
|
||||
|
||||
.fa-pulse,
|
||||
.fa-spin-pulse {
|
||||
-webkit-animation-name: fa-spin;
|
||||
animation-name: fa-spin;
|
||||
-webkit-animation-direction: var(--fa-animation-direction, normal);
|
||||
animation-direction: var(--fa-animation-direction, normal);
|
||||
-webkit-animation-duration: var(--fa-animation-duration, 1s);
|
||||
animation-duration: var(--fa-animation-duration, 1s);
|
||||
-webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||
animation-iteration-count: var(--fa-animation-iteration-count, infinite);
|
||||
-webkit-animation-timing-function: var(--fa-animation-timing, steps(8));
|
||||
animation-timing-function: var(--fa-animation-timing, steps(8)); }
|
||||
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
.fa-beat,
|
||||
.fa-bounce,
|
||||
.fa-fade,
|
||||
.fa-beat-fade,
|
||||
.fa-flip,
|
||||
.fa-pulse,
|
||||
.fa-shake,
|
||||
.fa-spin,
|
||||
.fa-spin-pulse {
|
||||
-webkit-animation-delay: -1ms;
|
||||
animation-delay: -1ms;
|
||||
-webkit-animation-duration: 1ms;
|
||||
animation-duration: 1ms;
|
||||
-webkit-animation-iteration-count: 1;
|
||||
animation-iteration-count: 1;
|
||||
-webkit-transition-delay: 0s;
|
||||
transition-delay: 0s;
|
||||
-webkit-transition-duration: 0s;
|
||||
transition-duration: 0s; } }
|
||||
|
||||
@-webkit-keyframes fa-beat {
|
||||
0%, 90% {
|
||||
-webkit-transform: scale(1);
|
||||
transform: scale(1); }
|
||||
45% {
|
||||
-webkit-transform: scale(var(--fa-beat-scale, 1.25));
|
||||
transform: scale(var(--fa-beat-scale, 1.25)); } }
|
||||
|
||||
@keyframes fa-beat {
|
||||
0%, 90% {
|
||||
-webkit-transform: scale(1);
|
||||
transform: scale(1); }
|
||||
45% {
|
||||
-webkit-transform: scale(var(--fa-beat-scale, 1.25));
|
||||
transform: scale(var(--fa-beat-scale, 1.25)); } }
|
||||
|
||||
@-webkit-keyframes fa-bounce {
|
||||
0% {
|
||||
-webkit-transform: scale(1, 1) translateY(0);
|
||||
transform: scale(1, 1) translateY(0); }
|
||||
10% {
|
||||
-webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);
|
||||
transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); }
|
||||
30% {
|
||||
-webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));
|
||||
transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); }
|
||||
50% {
|
||||
-webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);
|
||||
transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); }
|
||||
57% {
|
||||
-webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));
|
||||
transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); }
|
||||
64% {
|
||||
-webkit-transform: scale(1, 1) translateY(0);
|
||||
transform: scale(1, 1) translateY(0); }
|
||||
100% {
|
||||
-webkit-transform: scale(1, 1) translateY(0);
|
||||
transform: scale(1, 1) translateY(0); } }
|
||||
|
||||
@keyframes fa-bounce {
|
||||
0% {
|
||||
-webkit-transform: scale(1, 1) translateY(0);
|
||||
transform: scale(1, 1) translateY(0); }
|
||||
10% {
|
||||
-webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);
|
||||
transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); }
|
||||
30% {
|
||||
-webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));
|
||||
transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); }
|
||||
50% {
|
||||
-webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);
|
||||
transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); }
|
||||
57% {
|
||||
-webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));
|
||||
transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); }
|
||||
64% {
|
||||
-webkit-transform: scale(1, 1) translateY(0);
|
||||
transform: scale(1, 1) translateY(0); }
|
||||
100% {
|
||||
-webkit-transform: scale(1, 1) translateY(0);
|
||||
transform: scale(1, 1) translateY(0); } }
|
||||
|
||||
@-webkit-keyframes fa-fade {
|
||||
50% {
|
||||
opacity: var(--fa-fade-opacity, 0.4); } }
|
||||
|
||||
@keyframes fa-fade {
|
||||
50% {
|
||||
opacity: var(--fa-fade-opacity, 0.4); } }
|
||||
|
||||
@-webkit-keyframes fa-beat-fade {
|
||||
0%, 100% {
|
||||
opacity: var(--fa-beat-fade-opacity, 0.4);
|
||||
-webkit-transform: scale(1);
|
||||
transform: scale(1); }
|
||||
50% {
|
||||
opacity: 1;
|
||||
-webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));
|
||||
transform: scale(var(--fa-beat-fade-scale, 1.125)); } }
|
||||
|
||||
@keyframes fa-beat-fade {
|
||||
0%, 100% {
|
||||
opacity: var(--fa-beat-fade-opacity, 0.4);
|
||||
-webkit-transform: scale(1);
|
||||
transform: scale(1); }
|
||||
50% {
|
||||
opacity: 1;
|
||||
-webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));
|
||||
transform: scale(var(--fa-beat-fade-scale, 1.125)); } }
|
||||
|
||||
@-webkit-keyframes fa-flip {
|
||||
50% {
|
||||
-webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));
|
||||
transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); } }
|
||||
|
||||
@keyframes fa-flip {
|
||||
50% {
|
||||
-webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));
|
||||
transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); } }
|
||||
|
||||
@-webkit-keyframes fa-shake {
|
||||
0% {
|
||||
-webkit-transform: rotate(-15deg);
|
||||
transform: rotate(-15deg); }
|
||||
4% {
|
||||
-webkit-transform: rotate(15deg);
|
||||
transform: rotate(15deg); }
|
||||
8%, 24% {
|
||||
-webkit-transform: rotate(-18deg);
|
||||
transform: rotate(-18deg); }
|
||||
12%, 28% {
|
||||
-webkit-transform: rotate(18deg);
|
||||
transform: rotate(18deg); }
|
||||
16% {
|
||||
-webkit-transform: rotate(-22deg);
|
||||
transform: rotate(-22deg); }
|
||||
20% {
|
||||
-webkit-transform: rotate(22deg);
|
||||
transform: rotate(22deg); }
|
||||
32% {
|
||||
-webkit-transform: rotate(-12deg);
|
||||
transform: rotate(-12deg); }
|
||||
36% {
|
||||
-webkit-transform: rotate(12deg);
|
||||
transform: rotate(12deg); }
|
||||
40%, 100% {
|
||||
-webkit-transform: rotate(0deg);
|
||||
transform: rotate(0deg); } }
|
||||
|
||||
@keyframes fa-shake {
|
||||
0% {
|
||||
-webkit-transform: rotate(-15deg);
|
||||
transform: rotate(-15deg); }
|
||||
4% {
|
||||
-webkit-transform: rotate(15deg);
|
||||
transform: rotate(15deg); }
|
||||
8%, 24% {
|
||||
-webkit-transform: rotate(-18deg);
|
||||
transform: rotate(-18deg); }
|
||||
12%, 28% {
|
||||
-webkit-transform: rotate(18deg);
|
||||
transform: rotate(18deg); }
|
||||
16% {
|
||||
-webkit-transform: rotate(-22deg);
|
||||
transform: rotate(-22deg); }
|
||||
20% {
|
||||
-webkit-transform: rotate(22deg);
|
||||
transform: rotate(22deg); }
|
||||
32% {
|
||||
-webkit-transform: rotate(-12deg);
|
||||
transform: rotate(-12deg); }
|
||||
36% {
|
||||
-webkit-transform: rotate(12deg);
|
||||
transform: rotate(12deg); }
|
||||
40%, 100% {
|
||||
-webkit-transform: rotate(0deg);
|
||||
transform: rotate(0deg); } }
|
||||
|
||||
@-webkit-keyframes fa-spin {
|
||||
0% {
|
||||
-webkit-transform: rotate(0deg);
|
||||
transform: rotate(0deg); }
|
||||
100% {
|
||||
-webkit-transform: rotate(360deg);
|
||||
transform: rotate(360deg); } }
|
||||
|
||||
@keyframes fa-spin {
|
||||
0% {
|
||||
-webkit-transform: rotate(0deg);
|
||||
transform: rotate(0deg); }
|
||||
100% {
|
||||
-webkit-transform: rotate(360deg);
|
||||
transform: rotate(360deg); } }
|
||||
|
||||
.fa-rotate-90 {
|
||||
-webkit-transform: rotate(90deg);
|
||||
transform: rotate(90deg); }
|
||||
|
||||
.fa-rotate-180 {
|
||||
-webkit-transform: rotate(180deg);
|
||||
transform: rotate(180deg); }
|
||||
|
||||
.fa-rotate-270 {
|
||||
-webkit-transform: rotate(270deg);
|
||||
transform: rotate(270deg); }
|
||||
|
||||
.fa-flip-horizontal {
|
||||
-webkit-transform: scale(-1, 1);
|
||||
transform: scale(-1, 1); }
|
||||
|
||||
.fa-flip-vertical {
|
||||
-webkit-transform: scale(1, -1);
|
||||
transform: scale(1, -1); }
|
||||
|
||||
.fa-flip-both,
|
||||
.fa-flip-horizontal.fa-flip-vertical {
|
||||
-webkit-transform: scale(-1, -1);
|
||||
transform: scale(-1, -1); }
|
||||
|
||||
.fa-rotate-by {
|
||||
-webkit-transform: rotate(var(--fa-rotate-angle, none));
|
||||
transform: rotate(var(--fa-rotate-angle, none)); }
|
||||
|
||||
.fa-stack {
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
height: 2em;
|
||||
position: relative;
|
||||
width: 2.5em; }
|
||||
|
||||
.fa-stack-1x,
|
||||
.fa-stack-2x {
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
margin: auto;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
z-index: var(--fa-stack-z-index, auto); }
|
||||
|
||||
.svg-inline--fa.fa-stack-1x {
|
||||
height: 1em;
|
||||
width: 1.25em; }
|
||||
|
||||
.svg-inline--fa.fa-stack-2x {
|
||||
height: 2em;
|
||||
width: 2.5em; }
|
||||
|
||||
.fa-inverse {
|
||||
color: var(--fa-inverse, #fff); }
|
||||
|
||||
.sr-only,
|
||||
.fa-sr-only {
|
||||
position: absolute;
|
||||
width: 1px;
|
||||
height: 1px;
|
||||
padding: 0;
|
||||
margin: -1px;
|
||||
overflow: hidden;
|
||||
clip: rect(0, 0, 0, 0);
|
||||
white-space: nowrap;
|
||||
border-width: 0; }
|
||||
|
||||
.sr-only-focusable:not(:focus),
|
||||
.fa-sr-only-focusable:not(:focus) {
|
||||
position: absolute;
|
||||
width: 1px;
|
||||
height: 1px;
|
||||
padding: 0;
|
||||
margin: -1px;
|
||||
overflow: hidden;
|
||||
clip: rect(0, 0, 0, 0);
|
||||
white-space: nowrap;
|
||||
border-width: 0; }
|
||||
|
||||
.svg-inline--fa .fa-primary {
|
||||
fill: var(--fa-primary-color, currentColor);
|
||||
opacity: var(--fa-primary-opacity, 1); }
|
||||
|
||||
.svg-inline--fa .fa-secondary {
|
||||
fill: var(--fa-secondary-color, currentColor);
|
||||
opacity: var(--fa-secondary-opacity, 0.4); }
|
||||
|
||||
.svg-inline--fa.fa-swap-opacity .fa-primary {
|
||||
opacity: var(--fa-secondary-opacity, 0.4); }
|
||||
|
||||
.svg-inline--fa.fa-swap-opacity .fa-secondary {
|
||||
opacity: var(--fa-primary-opacity, 1); }
|
||||
|
||||
.svg-inline--fa mask .fa-primary,
|
||||
.svg-inline--fa mask .fa-secondary {
|
||||
fill: black; }
|
||||
|
||||
.fad.fa-inverse,
|
||||
.fa-duotone.fa-inverse {
|
||||
color: var(--fa-inverse, #fff); }
|
||||
6
public/fontawesome-free-6.4.2-web/css/svg-with-js.min.css
vendored
Normal file
6
public/fontawesome-free-6.4.2-web/css/svg-with-js.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
26
public/fontawesome-free-6.4.2-web/css/v4-font-face.css
vendored
Normal file
26
public/fontawesome-free-6.4.2-web/css/v4-font-face.css
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
/*!
|
||||
* Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
||||
* Copyright 2023 Fonticons, Inc.
|
||||
*/
|
||||
@font-face {
|
||||
font-family: 'FontAwesome';
|
||||
font-display: block;
|
||||
src: url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.ttf") format("truetype"); }
|
||||
|
||||
@font-face {
|
||||
font-family: 'FontAwesome';
|
||||
font-display: block;
|
||||
src: url("../webfonts/fa-brands-400.woff2") format("woff2"), url("../webfonts/fa-brands-400.ttf") format("truetype"); }
|
||||
|
||||
@font-face {
|
||||
font-family: 'FontAwesome';
|
||||
font-display: block;
|
||||
src: url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.ttf") format("truetype");
|
||||
unicode-range: U+F003,U+F006,U+F014,U+F016-F017,U+F01A-F01B,U+F01D,U+F022,U+F03E,U+F044,U+F046,U+F05C-F05D,U+F06E,U+F070,U+F087-F088,U+F08A,U+F094,U+F096-F097,U+F09D,U+F0A0,U+F0A2,U+F0A4-F0A7,U+F0C5,U+F0C7,U+F0E5-F0E6,U+F0EB,U+F0F6-F0F8,U+F10C,U+F114-F115,U+F118-F11A,U+F11C-F11D,U+F133,U+F147,U+F14E,U+F150-F152,U+F185-F186,U+F18E,U+F190-F192,U+F196,U+F1C1-F1C9,U+F1D9,U+F1DB,U+F1E3,U+F1EA,U+F1F7,U+F1F9,U+F20A,U+F247-F248,U+F24A,U+F24D,U+F255-F25B,U+F25D,U+F271-F274,U+F278,U+F27B,U+F28C,U+F28E,U+F29C,U+F2B5,U+F2B7,U+F2BA,U+F2BC,U+F2BE,U+F2C0-F2C1,U+F2C3,U+F2D0,U+F2D2,U+F2D4,U+F2DC; }
|
||||
|
||||
@font-face {
|
||||
font-family: 'FontAwesome';
|
||||
font-display: block;
|
||||
src: url("../webfonts/fa-v4compatibility.woff2") format("woff2"), url("../webfonts/fa-v4compatibility.ttf") format("truetype");
|
||||
unicode-range: U+F041,U+F047,U+F065-F066,U+F07D-F07E,U+F080,U+F08B,U+F08E,U+F090,U+F09A,U+F0AC,U+F0AE,U+F0B2,U+F0D0,U+F0D6,U+F0E4,U+F0EC,U+F10A-F10B,U+F123,U+F13E,U+F148-F149,U+F14C,U+F156,U+F15E,U+F160-F161,U+F163,U+F175-F178,U+F195,U+F1F8,U+F219,U+F27A; }
|
||||
6
public/fontawesome-free-6.4.2-web/css/v4-font-face.min.css
vendored
Normal file
6
public/fontawesome-free-6.4.2-web/css/v4-font-face.min.css
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
/*!
|
||||
* Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com
|
||||
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
|
||||
* Copyright 2023 Fonticons, Inc.
|
||||
*/
|
||||
@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype");unicode-range:u+f003,u+f006,u+f014,u+f016-f017,u+f01a-f01b,u+f01d,u+f022,u+f03e,u+f044,u+f046,u+f05c-f05d,u+f06e,u+f070,u+f087-f088,u+f08a,u+f094,u+f096-f097,u+f09d,u+f0a0,u+f0a2,u+f0a4-f0a7,u+f0c5,u+f0c7,u+f0e5-f0e6,u+f0eb,u+f0f6-f0f8,u+f10c,u+f114-f115,u+f118-f11a,u+f11c-f11d,u+f133,u+f147,u+f14e,u+f150-f152,u+f185-f186,u+f18e,u+f190-f192,u+f196,u+f1c1-f1c9,u+f1d9,u+f1db,u+f1e3,u+f1ea,u+f1f7,u+f1f9,u+f20a,u+f247-f248,u+f24a,u+f24d,u+f255-f25b,u+f25d,u+f271-f274,u+f278,u+f27b,u+f28c,u+f28e,u+f29c,u+f2b5,u+f2b7,u+f2ba,u+f2bc,u+f2be,u+f2c0-f2c1,u+f2c3,u+f2d0,u+f2d2,u+f2d4,u+f2dc}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-v4compatibility.woff2) format("woff2"),url(../webfonts/fa-v4compatibility.ttf) format("truetype");unicode-range:u+f041,u+f047,u+f065-f066,u+f07d-f07e,u+f080,u+f08b,u+f08e,u+f090,u+f09a,u+f0ac,u+f0ae,u+f0b2,u+f0d0,u+f0d6,u+f0e4,u+f0ec,u+f10a-f10b,u+f123,u+f13e,u+f148-f149,u+f14c,u+f156,u+f15e,u+f160-f161,u+f163,u+f175-f178,u+f195,u+f1f8,u+f219,u+f27a}
|
||||
2194
public/fontawesome-free-6.4.2-web/css/v4-shims.css
vendored
Normal file
2194
public/fontawesome-free-6.4.2-web/css/v4-shims.css
vendored
Normal file
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user