mirror of
https://gitlab.com/TheGamecraft/c-cms.git
synced 2026-04-21 02:39:10 -04:00
To cegep
This commit is contained in:
@@ -36,6 +36,7 @@ class EventController extends Controller
|
||||
*/
|
||||
public function store()
|
||||
{
|
||||
dd(\request());
|
||||
$event = new Event();
|
||||
|
||||
$event->name = request('name');
|
||||
|
||||
@@ -625,6 +625,8 @@ X20,\"Participer à des activités
|
||||
$ocom = "";
|
||||
preg_match('/[MC]\S\d\d.\d\d[A-Z]?/',$match,$ocom);
|
||||
|
||||
if(!OCOM::where('ocom',$ocom)->first())
|
||||
{
|
||||
$oren = "";
|
||||
preg_match('/[X\d]\d\d/',$ocom[0],$oren);
|
||||
|
||||
@@ -642,6 +644,7 @@ X20,\"Participer à des activités
|
||||
$newocom->objectif_rendement = $orens[$oren[0]];
|
||||
$newocom->save();
|
||||
}
|
||||
}
|
||||
dd(\App\OCOM::all());
|
||||
}
|
||||
|
||||
|
||||
@@ -28,6 +28,27 @@ class ScheduleEditorController extends Controller
|
||||
return json_encode($eventType);
|
||||
}
|
||||
|
||||
public function getEmptyPeriode(int $id)
|
||||
{
|
||||
return view('admin.schedule.editor.periode',[
|
||||
'periode_name' => 'Periode '.$id,
|
||||
'periode_begin_time' => '00:00',
|
||||
'periode_end_time' => '00:00',
|
||||
'periode_id' => $id,
|
||||
'nbLevel' => request('nblevel')
|
||||
]);
|
||||
}
|
||||
|
||||
public function getEmptyLevel(int $id)
|
||||
{
|
||||
return view('admin.schedule.editor.level',['periode_id' => \request('nbPeriode'),'level_id' => $id]);
|
||||
}
|
||||
|
||||
public function getLevelHeader(int $id)
|
||||
{
|
||||
return view('admin.schedule.editor.levelHeader',['level_id' => $id,'level_name' => 'Niveau '.$id]);
|
||||
}
|
||||
|
||||
public function test()
|
||||
{
|
||||
$evenType = new \App\EventType();
|
||||
|
||||
6
public/css/material-dashboard.css
vendored
6
public/css/material-dashboard.css
vendored
@@ -3305,9 +3305,9 @@ fieldset:disabled a.btn {
|
||||
}
|
||||
|
||||
.btn-secondary:hover {
|
||||
color: #ffffff !important;
|
||||
background-color: #5a6268 !important;
|
||||
border-color: #545b62 !important;
|
||||
color: #ffffff;
|
||||
background-color: #5a6268;
|
||||
border-color: #545b62;
|
||||
}
|
||||
|
||||
.btn-secondary:focus,
|
||||
|
||||
66
public/js/plugins/schedule/editor.js
vendored
66
public/js/plugins/schedule/editor.js
vendored
@@ -1,4 +1,7 @@
|
||||
var editorTemplate;
|
||||
var nbOfPeriode;
|
||||
var nbOfLevel;
|
||||
var emptyPeriode;
|
||||
|
||||
function initScheduleEditor(id, eventType)
|
||||
{
|
||||
@@ -7,8 +10,8 @@ function initScheduleEditor(id, eventType)
|
||||
url: '/api/schedule/editor/init/'+eventType+'?api_token='+api_token,
|
||||
success: function (template) {
|
||||
$("#"+id).html(template);
|
||||
for (let pniveau = 1; pniveau <= 3; pniveau++) {
|
||||
for (let pperiode = 1; pperiode <= 3; pperiode++) {
|
||||
for (let pniveau = 1; pniveau <= nbOfLevel; pniveau++) {
|
||||
for (let pperiode = 1; pperiode <= nbOfPeriode; pperiode++) {
|
||||
loadCourse(pniveau,pperiode);
|
||||
}
|
||||
}
|
||||
@@ -36,6 +39,7 @@ function initScheduleEditor(id, eventType)
|
||||
lang: 'fr'
|
||||
});
|
||||
$('select').selectpicker();
|
||||
|
||||
}
|
||||
|
||||
function switchUseWeeklyMsg()
|
||||
@@ -78,6 +82,54 @@ function loadCourse(periode,niveau)
|
||||
})
|
||||
}
|
||||
|
||||
function addPeriode()
|
||||
{
|
||||
var periodeToAdd = nbOfPeriode+1;
|
||||
$.ajax({
|
||||
type: 'GET',
|
||||
url: '/api/schedule/editor/emptyperiode/'+periodeToAdd+'?api_token='+api_token+'&nblevel='+nbOfLevel,
|
||||
success: function (template) {
|
||||
$('#row-'+nbOfPeriode).after(template);
|
||||
for (let i = 1; i <= nbOfLevel; i++) {
|
||||
loadCourse(periodeToAdd,i);
|
||||
}
|
||||
nbOfPeriode = periodeToAdd;
|
||||
initAutoComplete("AutoCompleteUser");
|
||||
initAutoCompleteOCOM('AutoCompleteOCOM');
|
||||
},
|
||||
error: function () {
|
||||
showNotification('error','Impossible d\'initialiser l\'éditeur d\'horaire ...','top', 'center')
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
function addLevel()
|
||||
{
|
||||
var levelToAdd = nbOfLevel+1;
|
||||
var oldnbOfLevel = nbOfLevel;
|
||||
nbOfLevel++;
|
||||
$.ajax({
|
||||
type: 'GET',
|
||||
url: '/api/schedule/editor/levelHeader/'+levelToAdd+'?api_token='+api_token,
|
||||
success: function (template) {
|
||||
$('#levelHeader-'+oldnbOfLevel).after(template)
|
||||
for (let i = 1; i <= nbOfPeriode; i++) {
|
||||
$('#container-'+oldnbOfLevel+'-'+i).after('<div id="container-'+levelToAdd+'-'+i+'" niveau="'+levelToAdd+'" periode="'+i+'" class="col m-0 border-bottom border-right scheduleEditor-course">@loaderDot</div>');
|
||||
}
|
||||
for (let i = 1; i <= nbOfPeriode; i++) {
|
||||
loadCourse(i,levelToAdd);
|
||||
}
|
||||
},
|
||||
error: function () {
|
||||
showNotification('error','Impossible d\'ajouter une nouvelle entête de niveau ...','top', 'center')
|
||||
}
|
||||
})
|
||||
setTimeout(function () {
|
||||
initAutoComplete("AutoCompleteUser");
|
||||
initAutoCompleteOCOM('AutoCompleteOCOM');
|
||||
},1000)
|
||||
}
|
||||
|
||||
function loadEventType(date)
|
||||
{
|
||||
var selectInput = $('#type');
|
||||
@@ -88,6 +140,8 @@ function loadEventType(date)
|
||||
success: function (data) {
|
||||
var result = JSON.parse(data);
|
||||
editorTemplate = result;
|
||||
nbOfLevel = editorTemplate.schedule_model.niveaux.length;
|
||||
nbOfPeriode = editorTemplate.schedule_model.periodes.length;
|
||||
initScheduleEditor("scheduleEditor",id)
|
||||
$.each(result, function (i, val) {
|
||||
if(i == "is_mandatory" || i == "use_schedule" || i == "use_weekly_msg")
|
||||
@@ -212,16 +266,16 @@ function selectCourseMode(mode, niveau, periode)
|
||||
|
||||
function selectCourseModePeriode(mode,periode)
|
||||
{
|
||||
$.each(editorTemplate['schedule_model']['niveaux'], function (i, val) {
|
||||
for (let i = 0; i < nbOfLevel; i++) {
|
||||
selectCourseMode(mode,i+1,periode);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function selectCourseModeNiveau(mode,niveau)
|
||||
{
|
||||
$.each(editorTemplate['schedule_model']['periodes'], function (i, val) {
|
||||
for (let i = 0; i < nbOfPeriode; i++) {
|
||||
selectCourseMode(mode,niveau,i+1);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function updatePlantext(toggle,id)
|
||||
|
||||
@@ -25,18 +25,18 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="tab-content text-center">
|
||||
<div class="tab-pane active" id="home">
|
||||
<div class="tab-pane active">
|
||||
<div class="row pt-2">
|
||||
<div class="col-12 d-none" id="descContainer{{$niveau}}-{{$periode}}">
|
||||
<div class="form-group">
|
||||
<label for="exampleFormControlTextarea1">Description de la période</label>
|
||||
<textarea class="form-control" id="exampleFormControlTextarea1" rows="2"></textarea>
|
||||
<textarea class="form-control" name="desc_n{{$niveau}}_p{{$periode}}" id="exampleFormControlTextarea1" rows="2"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6 mb-1" id="OCOMContainer{{$niveau}}-{{$periode}}">
|
||||
<div class="form-group label-floating">
|
||||
<div class="autocomplete">
|
||||
<input type="text" placeholder="OCOM du cours" id="ocom_n{{$niveau}}_p{{$periode}}" class="form-control AutoCompleteOCOM" aria-describedby="nameHelp" autocomplete="off" required onblur="updateCourseName('{{$niveau}}','{{$periode}}')">
|
||||
<input type="text" placeholder="OCOM du cours" id="ocom_n{{$niveau}}_p{{$periode}}" name="ocom_n{{$niveau}}_p{{$periode}}" class="form-control AutoCompleteOCOM" aria-describedby="nameHelp" autocomplete="off" value="M103.02" required onblur="updateCourseName('{{$niveau}}','{{$periode}}')">
|
||||
</div>
|
||||
<span class="form-control-feedback">
|
||||
<i class="material-icons">done</i>
|
||||
@@ -45,7 +45,7 @@
|
||||
</div>
|
||||
<div class="col-6" id="nameContainer{{$niveau}}-{{$periode}}">
|
||||
<div class="form-group label-floating">
|
||||
<input type="text" placeholder="Nom du cours" id="name_n{{$niveau}}_p{{$periode}}" class="form-control" required />
|
||||
<input type="text" placeholder="Nom du cours" id="name_n{{$niveau}}_p{{$periode}}" name="name_n{{$niveau}}_p{{$periode}}" value="Nom du cours" class="form-control" required />
|
||||
<span class="form-control-feedback">
|
||||
<i class="material-icons">clear</i>
|
||||
</span>
|
||||
@@ -53,7 +53,7 @@
|
||||
</div>
|
||||
<div class="col-6 mb-1">
|
||||
<div class="form-group label-floating">
|
||||
<input type="text" placeholder="Lieu du cours" class="form-control" required/>
|
||||
<input type="text" placeholder="Lieu du cours" name="location_n{{$niveau}}_p{{$periode}}" value="Lieu du cours" class="form-control" required/>
|
||||
<span class="form-control-feedback">
|
||||
<i class="material-icons">done</i>
|
||||
</span>
|
||||
@@ -62,7 +62,7 @@
|
||||
<div class="col-6">
|
||||
<div class="form-group label-floating">
|
||||
<div class="autocomplete">
|
||||
<input type="text" placeholder="Nom de l'instructeur" id="instruc_n{{$niveau}}_p{{$periode}}" class="form-control AutoCompleteUser" aria-describedby="nameHelp" autocomplete="off" required>
|
||||
<input type="text" placeholder="Nom de l'instructeur" id="instruc_n{{$niveau}}_p{{$periode}}" name="instruc_n{{$niveau}}_p{{$periode}}" value="Mathieu" class="form-control AutoCompleteUser" aria-describedby="nameHelp" autocomplete="off" required>
|
||||
</div>
|
||||
<span class="form-control-feedback">
|
||||
<i class="material-icons">done</i>
|
||||
@@ -71,7 +71,4 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="tab-pane" id="updates">
|
||||
Test
|
||||
</div>
|
||||
</div>
|
||||
3
resources/views/admin/schedule/editor/level.blade.php
Normal file
3
resources/views/admin/schedule/editor/level.blade.php
Normal file
@@ -0,0 +1,3 @@
|
||||
<div id="container-{{$level_id}}-{{$periode_id}}" niveau="{{$level_id}}" periode="{{$periode_id}}" class="col m-0 border-bottom border-right scheduleEditor-course">
|
||||
@loaderDot
|
||||
</div>
|
||||
21
resources/views/admin/schedule/editor/levelHeader.blade.php
Normal file
21
resources/views/admin/schedule/editor/levelHeader.blade.php
Normal file
@@ -0,0 +1,21 @@
|
||||
<div id="levelHeader-{{$level_id}}" class="col border-right border-bottom bg-dark text-white">
|
||||
<div class="row">
|
||||
<div class="col-9">
|
||||
<div class="form-group label-floating">
|
||||
<input type="text" placeholder="Niveau" name="level_name_{{$level_id}}" class="form-control text-white" value="{{$level_name}}" />
|
||||
<span class="form-control-feedback">
|
||||
<i class="material-icons">clear</i>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-3 text-right">
|
||||
<button type="button" class="btn btn-link btn-sm dropdown-toggle dropdown-toggle-split text-white" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
<span class="sr-only">Toggle Dropdown</span>
|
||||
</button>
|
||||
<div class="dropdown-menu">
|
||||
<button id="modeSwitchPeriodeC{{$level_id}}" class="btn-secondary dropdown-item m-1" onclick="selectCourseModeNiveau('course',{{$level_id}})">Mode "Cours" pour toutes les périodes</button>
|
||||
<button id="modeSwitchPeriodeO{{$level_id}}" class="btn-secondary dropdown-item m-1" onclick="selectCourseModeNiveau('other',{{$level_id}})">Mode "Autre" pour toutes les période</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
43
resources/views/admin/schedule/editor/periode.blade.php
Normal file
43
resources/views/admin/schedule/editor/periode.blade.php
Normal file
@@ -0,0 +1,43 @@
|
||||
<div class="row" id="row-{{$periode_id}}">
|
||||
<div class="col-2 d-inline border-right border-bottom bg-light">
|
||||
<div class="row">
|
||||
<div class="col-9">
|
||||
<div class="form-group label-floating">
|
||||
<input type="text" placeholder="Période" name="periode_name_{{$periode_id}}" class="form-control" value="{{$periode_name}}" />
|
||||
<span class="form-control-feedback">
|
||||
<i class="material-icons">clear</i>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-3 text-right">
|
||||
<button type="button" class="btn btn-sm btn-secondary dropdown-toggle dropdown-toggle-split" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
<span class="sr-only">Toggle Dropdown</span>
|
||||
</button>
|
||||
<div class="dropdown-menu">
|
||||
<button id="modeSwitchPeriodeC{{$periode_id}}" class="btn-secondary dropdown-item m-1" onclick="selectCourseModePeriode('course',{{$periode_id}})">Mode "Cours" pour toute la période</button>
|
||||
<button id="modeSwitchPeriodeO{{$periode_id}}" class="btn-secondary dropdown-item m-1" onclick="selectCourseModePeriode('other',{{$periode_id}})">Mode "Autre" pour toute la période</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-6">
|
||||
<div class="form-group label-floating">
|
||||
<input type="time" class="form-control" name="periode_begin_time_{{$periode_id}}" value="{{$periode_begin_time}}" />
|
||||
<span class="form-control-feedback"><i class="material-icons">clear</i></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<div class="form-group label-floating">
|
||||
<input type="time" class="form-control" name="periode_end_time_{{$periode_id}}" value="{{$periode_end_time}}" />
|
||||
<span class="form-control-feedback"><i class="material-icons">clear</i></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@for($i = 1; $i <= $nbLevel;$i++)
|
||||
@include('admin.schedule.editor.level',['periode_id' => $periode_id,'level_id' => $i])
|
||||
@endfor
|
||||
<div class="col-1">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -5,84 +5,26 @@
|
||||
</b>
|
||||
</div>
|
||||
@foreach($eventType->schedule_model['niveaux'] as $niveau)
|
||||
<div class="col border-right border-bottom bg-dark text-white">
|
||||
<div class="row">
|
||||
<div class="col-9">
|
||||
<div class="form-group label-floating">
|
||||
<input type="text" placeholder="Niveau" class="form-control text-white" value="{{$niveau['name']}}" />
|
||||
<span class="form-control-feedback">
|
||||
<i class="material-icons">clear</i>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-3 text-right">
|
||||
<button type="button" class="btn btn-link btn-sm dropdown-toggle dropdown-toggle-split text-white" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
<span class="sr-only">Toggle Dropdown</span>
|
||||
</button>
|
||||
<div class="dropdown-menu">
|
||||
<button id="modeSwitchPeriodeC{{$loop->index+1}}" class="btn-secondary dropdown-item m-1" onclick="selectCourseModeNiveau('course',{{$loop->index+1}})">Mode "Cours" pour toutes les périodes</button>
|
||||
<button id="modeSwitchPeriodeO{{$loop->index+1}}" class="btn-secondary dropdown-item m-1" onclick="selectCourseModeNiveau('other',{{$loop->index+1}})">Mode "Autre" pour toutes les période</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@include('admin.schedule.editor.levelHeader',['level_id' => $loop->index+1,'level_name' => $niveau['name']])
|
||||
@endforeach
|
||||
<div class="col-1">
|
||||
<button class="btn btn-primary btn-fab btn-fab-mini btn-round">
|
||||
<button class="btn btn-primary btn-fab btn-fab-mini btn-round" onclick="addLevel()">
|
||||
<i class="material-icons">add</i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
@foreach($eventType->schedule_model['periodes'] as $periode)
|
||||
<div class="row">
|
||||
<div class="col-2 d-inline border-right border-bottom bg-light">
|
||||
<div class="row">
|
||||
<div class="col-9">
|
||||
<div class="form-group label-floating">
|
||||
<input type="text" placeholder="Période" class="form-control" value="{{$periode['name']}}" />
|
||||
<span class="form-control-feedback">
|
||||
<i class="material-icons">clear</i>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-3 text-right">
|
||||
<button type="button" class="btn btn-sm btn-secondary dropdown-toggle dropdown-toggle-split" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
<span class="sr-only">Toggle Dropdown</span>
|
||||
</button>
|
||||
<div class="dropdown-menu">
|
||||
<button id="modeSwitchPeriodeC{{$loop->index+1}}" class="btn-secondary dropdown-item m-1" onclick="selectCourseModePeriode('course',{{$loop->index+1}})">Mode "Cours" pour toute la période</button>
|
||||
<button id="modeSwitchPeriodeO{{$loop->index+1}}" class="btn-secondary dropdown-item m-1" onclick="selectCourseModePeriode('other',{{$loop->index+1}})">Mode "Autre" pour toute la période</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-6">
|
||||
<div class="form-group label-floating">
|
||||
<input type="time" class="form-control" value="{{$periode['begin_time']}}" />
|
||||
<span class="form-control-feedback"><i class="material-icons">clear</i></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<div class="form-group label-floating">
|
||||
<input type="time" class="form-control" value="{{$periode['end_time']}}" />
|
||||
<span class="form-control-feedback"><i class="material-icons">clear</i></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@foreach($eventType->schedule_model['niveaux'] as $niveau)
|
||||
<div id="container-{{$loop->index+1}}-{{$loop->parent->index+1}}" niveau="{{$loop->index+1}}" periode="{{$loop->parent->index+1}}" class="col m-0 border-bottom border-right scheduleEditor-course">
|
||||
@loaderDot
|
||||
</div>
|
||||
@endforeach
|
||||
<div class="col-1">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@include('admin.schedule.editor.periode',[
|
||||
'periode_name' => $periode['name'],
|
||||
'periode_begin_time' => $periode['begin_time'],
|
||||
'periode_end_time' => $periode['end_time'],
|
||||
'periode_id' => $loop->index+1,
|
||||
'nbLevel' => count($eventType->schedule_model['niveaux'])
|
||||
])
|
||||
@endforeach
|
||||
<div class="row">
|
||||
<div class="col-2 p-2">
|
||||
<button class="btn btn-primary btn-fab btn-fab-mini btn-round">
|
||||
<button class="btn btn-primary btn-fab btn-fab-mini btn-round" onclick="addPeriode()">
|
||||
<i class="material-icons">add</i>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
@@ -22,6 +22,9 @@ Route::middleware('auth:api')->group(function () {
|
||||
Route::get('/schedule/editor/init/{id}','ScheduleEditorController@getTemplate')->middleware('perm:schedule_edit');
|
||||
Route::get('/schedule/editor/course/{niveau}/{periode}','ScheduleEditorController@getCourseEmpty')->middleware('perm:schedule_edit');
|
||||
Route::get('/schedule/editor/template/{id}','ScheduleEditorController@getEventTemplate')->middleware('perm:schedule_add');
|
||||
Route::get('/schedule/editor/emptyperiode/{id}','ScheduleEditorController@getEmptyPeriode')->middleware('perm:schedule_add');
|
||||
Route::get('/schedule/editor/emptylevel/{id}','ScheduleEditorController@getEmptyLevel')->middleware('perm:schedule_add');
|
||||
Route::get('/schedule/editor/levelHeader/{id}','ScheduleEditorController@getLevelHeader')->middleware('perm:schedule_add');
|
||||
Route::post('/schedule/event/delete/{id}','ScheduleController@delete')->middleware('perm:schedule_delete');
|
||||
|
||||
/** Booking */
|
||||
|
||||
@@ -16,6 +16,9 @@ use Illuminate\Support\Facades\Storage;
|
||||
Auth::routes();
|
||||
Route::get('logout', 'Auth\LoginController@logout')->name('logout');
|
||||
Route::get("/test/{id}",'ScheduleEditorController@getEventTemplate');
|
||||
Route::get("/test/{id}",'ScheduleEditorController@getEventTemplate');
|
||||
Route::get('/ocom/create','OCOMController@create');
|
||||
|
||||
|
||||
|
||||
/** Public Route */
|
||||
|
||||
Reference in New Issue
Block a user