File systeme V3

This commit is contained in:
Mathieu Lagacé
2020-10-19 18:45:05 -04:00
parent 1664bb06aa
commit 4f83774200
27 changed files with 2030 additions and 1223 deletions

View File

@@ -7,84 +7,10 @@
<h4>Configuration du système de fichier</h4>
</div>
<div class="card-body mt-5">
<form action="/admin/config/files" method="POST">
<form action="/admin/config/files" method="post" enctype="multipart/form-data">
@csrf
<div class="row ml-2">
<h3 class="col-12">Google Drive</h3>
<div class="col-md-6">
<div class="alert alert-info" role="alert">
Vous pouvez suivre un <a class="alert-link" target="_blank" href="https://github.com/ivanvermeyen/laravel-google-drive-demo/blob/master/README/1-getting-your-dlient-id-and-secret.md">tutoriel (Anglais) <i class="fas fa-external-link-square-alt text-white"></i></a> pour trouver c'est information.
</div>
</div>
<div class="col-md-6">
<div id="google-drive-status" class="alert alert-primary" role="alert">
<div class="row pb-1">
<div class="col-10" id="google-drive-status-text">
Google Drive est initialisé correctement
</div>
<div class="col-2">
<div id="loaderDot" class="float-right d-none" style="margin-top: -30px;height: 41px">
@loaderDot
</div>
<div class="float-right" id="btn-sync">
<button type="button" class="btn btn-round btn-fab" style="margin-top: -0.55rem" onclick="checkFileSystem()">
<i class="fas fa-sync"></i>
</button>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-8 p-2">
<div class="togglebutton">
<label>
<input id="is_active" type="checkbox" data-toggle="switch" name="is_active">
<span class="toggle"></span>
Activer Google Drive
</label>
</div>
</div>
<div class="col-md-4">
</div>
<div class="col-md-6 p-2">
<div class="form-group">
<label for="exampleInputEmail1">GOOGLE_DRIVE_CLIENT_ID</label>
<input type="text" class="form-control" id="GOOGLE_DRIVE_CLIENT_ID" name="GOOGLE_DRIVE_CLIENT_ID" aria-describedby="emailHelp" value="{{Crypt::decryptString(\App\Config::getData('GOOGLE_DRIVE_CLIENT_ID')) }}">
<small id="emailHelp" class="form-text text-muted">ID de client Google Drive</small>
</div>
</div>
<div class="col-md-6 p-2">
<div class="form-group">
<label for="exampleInputEmail1">GOOGLE_DRIVE_CLIENT_SECRET</label>
<input type="text" class="form-control" id="GOOGLE_DRIVE_CLIENT_SECRET" name="GOOGLE_DRIVE_CLIENT_SECRET" aria-describedby="emailHelp" value="{{Crypt::decryptString(\App\Config::getData('GOOGLE_DRIVE_CLIENT_SECRET'))}}">
<small id="emailHelp" class="form-text text-muted">ID secret du disque Google Drive</small>
</div>
</div>
<div class="col-md-6 p-2">
<div class="form-group">
<label for="exampleInputEmail1">GOOGLE_DRIVE_REFRESH_TOKEN</label>
<input type="text" class="form-control" id="GOOGLE_DRIVE_REFRESH_TOKEN" name="GOOGLE_DRIVE_REFRESH_TOKEN" aria-describedby="emailHelp" value="{{Crypt::decryptString(\App\Config::getData('GOOGLE_DRIVE_REFRESH_TOKEN'))}}">
<small id="emailHelp" class="form-text text-muted">Token de rafraichissement du disque Google Drive</small>
</div>
</div>
<div class="col-md-6 p-2">
<div class="form-group">
<label for="exampleInputEmail1">GOOGLE_DRIVE_FOLDER_ID</label>
<input type="text" class="form-control" id="GOOGLE_DRIVE_FOLDER_ID" name="GOOGLE_DRIVE_FOLDER_ID" aria-describedby="emailHelp" value="{{Crypt::decryptString(\App\Config::getData('GOOGLE_DRIVE_FOLDER_ID'))}}">
<small id="emailHelp" class="form-text text-muted">ID du dossier Google Drive, "null" pour la racine</small>
</div>
</div>
<h3 class="col-12">Configuration de la liste nominale</h3>
<div class="col-md-6 p-2">
<div class="form-group">
<label for="exampleInputEmail1">Liste nominative des cadets</label>
<input type="text" class="form-control" id="cadet_list" name="cadet_list" aria-describedby="emailHelp" value="{{\App\Config::getData('cadet_list')}}">
<small id="emailHelp" class="form-text text-muted">Url vers la liste nominative des cadets</small>
</div>
</div>
<div class="col-md-12 p-2">
<button type="submit" class="btn btn-primary">Sauvegarder</button>
</div>
<p class="col-12">Il n'y a rien ici pour le moment</h3>
</div>
</form>
</div>

View File

@@ -54,8 +54,16 @@
<tbody>
@foreach($courses as $course)
<tr class="cursor">
<td>{{$course->ocom}}</td>
<td>{{$course->name}}</td>
<td>
{{ $course->ocom }}
</td>
<td>
@if($course->name != "")
{{$course->name}}
@else
{{$course->desc }}
@endif
</td>
<td>{{$course->instructor()}}</td>
<td>{{$course->event->date_begin}}</td>
<td class="text-center">{{$course->level}}</td>

View File

@@ -12,7 +12,11 @@
<div class="row">
<div class="col-md-4">
<label>Nom</label>
<p>{{$course->name}}</p>
@if($course->name != "")
<p>{{$course->name}}</p>
@else
<p>{{$course->desc}}</p>
@endif
</div>
<div class="col-md-3">
<label>Instructeur</label>
@@ -111,7 +115,7 @@
<div class="col-md-1 text-center">
<label>Télécharger</label>
<p>
<a target="_blank" href="/file/get?d={{urlencode($lessonPlanDir)}}&f={{urlencode($course->lessonPlan->file)}}" class="btn btn-primary btn-fab btn-fab-mini btn-round m-0">
<a target="_blank" href="/admin/lessonPlan/{{$course->lessonPlan->file}}" class="btn btn-primary btn-fab btn-fab-mini btn-round m-0">
<i class="material-icons">cloud_download</i>
</a>
</p>

View File

@@ -0,0 +1,37 @@
@extends('layouts.admin.main')
@section('content')
<div class="col-md-12">
<div class="card">
<div class="card-header card-header-primary">
<h4>Mettre à jour la liste nominative</h4>
</div>
<div class="card-body mt-5">
<form method="post" enctype="multipart/form-data">
@csrf
<div class="row ml-2">
<div class="col-md-6 p-2">
<div class="form-group">
<label for="exampleInputEmail1">Liste nominative des cadets</label>
<div class="fileinput fileinput-new input-group" data-provides="fileinput" style="display: flex !important;">
<div class="form-control" data-trigger="fileinput">
<span class="fileinput-filename"></span>
</div>
<span class="input-group-append"><span class="input-group-text fileinput-exists cursor" data-dismiss="fileinput">Remove</span><span class="input-group-text btn-file"><span class="fileinput-new cursor">Select file</span><span class="fileinput-exists cursor">Change</span><input type="file" required name="nominativeList" accept="application/pdf"></span></span>
</div>
<small id="emailHelp" class="form-text text-muted">Veuillez choisir un pdf</small>
</div>
</div>
<div class="col-md-12 p-2">
<button type="submit" class="btn btn-primary">Sauvegarder</button>
</div>
</div>
</form>
</div>
</div>
</div>
@endsection
@section('custom_scripts')
@endsection

View File

@@ -0,0 +1,20 @@
@extends('layouts.admin.main')
@section('content')
<div class="card">
<div class="card-header">
<h4 class="card-title">Liste nominative</h4>
<p class="category">Télécharger ici la liste nominative</p>
</div>
<div class="card-body">
<a href="/admin/nominativelist/download" target="_blank" class="btn btn-info">Télécharger</a>
@if(\Auth::user()->p('cadet_list_edit') == 1)
<a href="/admin/nominativelist/edit" class="btn btn-warning">Modifier</a>
@endif
</div>
</div>
@endsection
@section('custom_scripts')
@endsection

View File

@@ -32,6 +32,7 @@
<th style="width: 4.5rem">Status</th>
<th style="width: 4.5rem">OREN</th>
<th style="width: 4.5rem">OCOM</th>
<th style="width: 4.5rem">Niveau</th>
<th style="width: 7rem">Nb Periode</th>
<th>Objectif de rendement</th>
<th>Objectif de compétence</th>
@@ -56,6 +57,7 @@
</td>
<td onclick="navigate({{$ocom->id}})">{{$ocom->oren}}</td>
<td onclick="navigate({{$ocom->id}})">{{$ocom->ocom}}</td>
<td onclick="navigate({{$ocom->id}})">{{$ocom->niveau()}}</td>
<td onclick="navigate({{$ocom->id}})">{{$ocom->nbPeriode}}</td>
<td onclick="navigate({{$ocom->id}})">{{$ocom->objectif_rendement}}</td>
<td onclick="navigate({{$ocom->id}})">{{$ocom->objectif_competence}}</td>

View File

@@ -70,7 +70,7 @@
<td>{{$course->level}}</td>
<td class="text-center">
@if($course->lessonPlan)
<a href="/file/get?d={{urlencode(\App\GoogleDriveFile::findByPath('.Systeme/.Fichier/.PlanDeCours')->id)}}&f={{urlencode($course->lessonPlan->file)}}">
<a href="/admin/lessonPlan/{{$course->lessonPlan->file}}">
@if($course->lessonPlan->approved == 1)
<i class="fas fa-check-circle text-success fa-2x" data-toggle="tooltip"
data-placement="top" title="Plan de cours remis et vérifié"></i>

View File

@@ -2,13 +2,136 @@
@section('content')
<div class="row">
<div class="col-md-12">
<div class="card">
<div class="card-header">
<div class="row">
<div class="col-sm-6">
<h3 class="card-title">3.2.6</h3>
<p class="category">2020-10-19</p>
</div>
<div class="col-sm-6 text-right">
<span class="badge badge-pill badge-success">STABLE</span>
</div>
</div>
</div>
<div class="card-body">
<div class="row">
<div class="col-md-6">
<p>
Nouveauté
</p>
<ul class="list-group list-group-flush ml-3">
<li class="list-group-item">
<div class="row">
<div class="text-success" style="font-size: 1.3rem;width: 1.5rem">
<i class="fas fa-plus"></i>
</div>
<div class="col m-auto text-left">
Ajout d'un affichage en table pour l'horaire
</div>
</div>
</li>
<li class="list-group-item">
<div class="row">
<div class="text-success" style="font-size: 1.3rem;width: 1.5rem">
<i class="fas fa-plus"></i>
</div>
<div class="col m-auto text-left">
Ajout d'une colonne niveau dans la BD des cours
</div>
</div>
</li>
<li class="list-group-item">
<div class="row">
<div class="text-success" style="font-size: 1.3rem;width: 1.5rem">
<i class="fas fa-coffee"></i>
</div>
<div class="col m-auto text-left">
Mise à jour du système de fichier
</div>
</div>
</li>
<li class="list-group-item">
<div class="row">
<div class="text-success" style="font-size: 1.3rem;width: 1.5rem">
<i class="fas fa-coffee"></i>
</div>
<div class="col m-auto text-left">
De la gestion de plan de cours
</div>
</div>
</li>
<li class="list-group-item">
<div class="row">
<div class="text-success" style="font-size: 1.3rem;width: 1.5rem">
<i class="fas fa-coffee"></i>
</div>
<div class="col m-auto text-left">
Mise à jour de la gestion de la liste nominative
</div>
</div>
</li>
<li class="list-group-item">
<div class="row">
<div class="text-success" style="font-size: 1.3rem;width: 1.5rem">
<i class="fas fa-coffee"></i>
</div>
<div class="col m-auto text-left">
Mise à jour de l'affichage des permissions pour les postes et grades
</div>
</div>
</li>
<li class="list-group-item">
<div class="row">
<div class="text-success" style="font-size: 1.3rem;width: 1.5rem">
<i class="fas fa-coffee"></i>
</div>
<div class="col m-auto text-left">
Mise à jour du profil d'utilisateur
</div>
</div>
</li>
</ul>
</div>
<div class="col-md-6">
<p>
Bug
</p>
<ul class="list-group list-group-flush ml-3">
<li class="list-group-item">
<div class="row">
<div class="text-success" style="font-size: 1.3rem;width: 1.5rem">
<i class="fas fa-bug"></i>
</div>
<div class="col m-auto text-left">
Correction de multiples bugs
</div>
</div>
</li>
<li class="list-group-item">
<div class="row">
<div class="text-success" style="font-size: 1.3rem;width: 1.5rem">
<i class="fas fa-bug"></i>
</div>
<div class="col m-auto text-left">
Correction d'un bug d'affichage des cours
</div>
</div>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-12">
<div class="card">
<div class="card-header">
<div class="row">
<div class="col-sm-6">
<h3 class="card-title">3.2.5</h3>
<p class="category">2019-10-19</p>
<p class="category">2020-10-01</p>
</div>
<div class="col-sm-6 text-right">
<span class="badge badge-pill badge-success">STABLE</span>

View File

@@ -38,7 +38,13 @@
@foreach($courses as $course)
<tr class="cursor">
<td>{{$course->ocom}}</td>
<td>{{$course->name}}</td>
<td>
@if($course->name != "")
{{$course->name}}
@else
{{$course->desc }}
@endif
</td>
<td>{{$course->instructor()}}</td>
<td>{{$course->event->date_begin}}</td>
<td class="text-center">{{$course->level}}</td>

View File

@@ -1,147 +1,184 @@
@php
$sidebar = [
'Nouvelle' => [
'route' => 'admin.news',
'icon' => 'new_releases',
'perm' => 'news_see',
'child' => null
],
'Horaire' => [
'route' => 'admin.schedule',
'icon' => 'calendar_today',
'perm' => 'schedule_see',
'child' => null
],
'Instruction' => [
'route' => null,
'icon' => 'menu_book',
'perm' => null,
'child' => [
'Guide et NQP' => [
'route' => 'admin.instruction.guide',
'icon' => 'fas fa-book',
'perm' => 'instruction_guide_see',
'child' => null
],
'BD des cours' => [
'route' => 'admin.ocom',
'icon' => 'fas fa-database',
'perm' => 'instruction_db_ocom_see',
'child' => null
],
'Liste des cours' => [
'route' => 'admin.course',
'icon' => 'fas fa-list',
'perm' => 'course_see_all',
'child' => null
],
//'Fichier' => [
// 'route' => 'admin.instruction.files',
// 'icon' => 'fas fa-folder',
// 'perm' => null,
// 'child' => null
//],
'Statistiques' => [
'route' => 'admin.stats.instruction',
'icon' => 'fas fa-chart-line',
'perm' => 'stats_instruction_see',
'child' => null
],
]
],
'Administration' => [
'route' => null,
'icon' => 'recent_actors',
'perm' => null,
'child' => [
//'Articles' => [
// 'route' => 'admin.article',
// 'icon' => 'fas fa-newspaper',
// 'perm' => 'article_see',
// 'child' => null
//],
//'Images' => [
// 'route' => 'admin.picture',
// 'icon' => 'fas fa-images',
// 'perm' => 'picture_see',
// 'child' => null
//],
'Utilisateurs' => [
'route' => 'admin.users',
'icon' => 'fas fa-users',
'perm' => 'user_see',
'child' => null
],
//'Liste nominative' => [
// 'route' => 'admin.users',
// 'icon' => 'fas fa-address-book',
// 'perm' => 'cadet_list_see',
// 'child' => null
//],
'Logs' => [
'route' => 'admin.stats.log',
'icon' => 'fas fa-stream',
'perm' => 'stats_see',
'child' => null
],
]
],
//'Fichiers' => [
// 'route' => null,
// 'icon' => 'folder',
// 'perm' => 'file_see',
// 'child' => \App\GoogleDriveFile::getSidebarFile(),
//],
'Configuration' => [
'route' => null,
'icon' => 'menu_book',
'perm' => 'config_see',
'child' => [
'Général' => [
'route' => 'admin.config.general',
'icon' => 'fas fa-cogs',
'perm' => 'config_edit',
'child' => null
],
'Instruction' => [
'route' => 'admin.config.schedule',
'icon' => 'fas fa-book-open',
'perm' => 'config_edit_instruction',
'child' => null
],
'Administration' => [
'route' => 'admin.config.complementary-activity',
'icon' => 'fas fa-file-alt',
'perm' => 'config_edit_administration',
'child' => null
],
'Grade' => [
'route' => 'admin.config.rank',
'icon' => 'fas fa-user-shield',
'perm' => 'config_edit_rank',
'child' => null
],
'Poste' => [
'route' => 'admin.config.jobs',
'icon' => 'fas fa-user-tag',
'perm' => 'config_edit_job',
'child' => null
],
//'Fichier' => [
// 'route' => 'admin.config.files',
// 'icon' => 'fas fa-folder',
// 'perm' => 'config_edit_files',
// 'child' => null
//],
'Apparence' => [
'route' => 'admin.config.customisation',
'icon' => 'fas fa-palette',
'perm' => 'config_edit_customization',
'child' => null
$sidebar = [
'Nouvelle' => [
'route' => 'admin.news',
'icon' => 'new_releases',
'perm' => 'news_see',
'child' => null
],
'Horaire' => [
'route' => 'admin.schedule',
'icon' => 'calendar_today',
'perm' => 'schedule_see',
'child' => null
],
'Instruction' => [
'route' => null,
'icon' => 'menu_book',
'perm' => null,
'child' => [
'Guide et NQP' => [
'route' => 'admin.instruction.guide',
'icon' => 'fas fa-book',
'perm' => 'instruction_guide_see',
'child' => null
],
'BD des cours' => [
'route' => 'admin.ocom',
'icon' => 'fas fa-database',
'perm' => 'instruction_db_ocom_see',
'child' => null
],
'Liste des cours' => [
'route' => 'admin.course',
'icon' => 'fas fa-list',
'perm' => 'course_see_all',
'child' => null
],
//'Fichier' => [
// 'route' => 'admin.instruction.files',
// 'icon' => 'fas fa-folder',
// 'perm' => null,
// 'child' => null
//],
'Statistiques' => [
'route' => 'admin.stats.instruction',
'icon' => 'fas fa-chart-line',
'perm' => 'stats_instruction_see',
'child' => null
],
]
]
],
]
],
'Administration' => [
'route' => null,
'icon' => 'recent_actors',
'perm' => null,
'child' => [
//'Articles' => [
// 'route' => 'admin.article',
// 'icon' => 'fas fa-newspaper',
// 'perm' => 'article_see',
// 'child' => null
//],
//'Images' => [
// 'route' => 'admin.picture',
// 'icon' => 'fas fa-images',
// 'perm' => 'picture_see',
// 'child' => null
//],
'Utilisateurs' => [
'route' => 'admin.users',
'icon' => 'fas fa-users',
'perm' => 'user_see',
'child' => null
],
'Liste nominative' => [
'route' => 'admin.admin.list',
'icon' => 'fas fa-address-book',
'perm' => 'cadet_list_see',
'child' => null
],
'Logs' => [
'route' => 'admin.stats.log',
'icon' => 'fas fa-stream',
'perm' => 'stats_see',
'child' => null
],
]
],
'Fichiers' => [
'route' => null,
'icon' => 'folder',
'perm' => null,
'child' => [
'Publique' => [
'route' => 'admin.files.publique',
'icon' => 'fas fa-folder-open',
'perm' => null,
'child' => null
],
'Cadets' => [
'route' => 'admin.files.cadet',
'icon' => 'fas fa-folder-open',
'perm' => 'files_cadets_see',
'child' => null
],
'Staff' => [
'route' => 'admin.files.staff',
'icon' => 'fas fa-folder-open',
'perm' => 'files_staff_see',
'child' => null
],
'Instruction' => [
'route' => 'admin.instruction.files',
'icon' => 'fas fa-folder-open',
'perm' => 'files_instruction_see',
'child' => null
],
'ETAMAS' => [
'route' => 'admin.files.etamas',
'icon' => 'fas fa-folder-open',
'perm' => 'files_etamas_see',
'child' => null
],
'Officiers' => [
'route' => 'admin.files.officier',
'icon' => 'fas fa-folder-open',
'perm' => 'files_officier_see',
'child' => null
]
],
],
'Configuration' => [
'route' => null,
'icon' => 'menu_book',
'perm' => 'config_see',
'child' => [
'Général' => [
'route' => 'admin.config.general',
'icon' => 'fas fa-cogs',
'perm' => 'config_edit',
'child' => null
],
'Instruction' => [
'route' => 'admin.config.schedule',
'icon' => 'fas fa-book-open',
'perm' => 'config_edit_instruction',
'child' => null
],
'Administration' => [
'route' => 'admin.config.complementary-activity',
'icon' => 'fas fa-file-alt',
'perm' => 'config_edit_administration',
'child' => null
],
'Grade' => [
'route' => 'admin.config.rank',
'icon' => 'fas fa-user-shield',
'perm' => 'config_edit_rank',
'child' => null
],
'Poste' => [
'route' => 'admin.config.jobs',
'icon' => 'fas fa-user-tag',
'perm' => 'config_edit_job',
'child' => null
],
'Fichier' => [
'route' => 'admin.config.files',
'icon' => 'fas fa-folder',
'perm' => 'config_edit_files',
'child' => null
],
'Apparence' => [
'route' => 'admin.config.customisation',
'icon' => 'fas fa-palette',
'perm' => 'config_edit_customization',
'child' => null
]
]
],
]
@endphp
<div class="sidebar" data-color="white" data-background-color="black" data-image="/images/sidebar.png">
<div class="logo">