mirror of
https://gitlab.com/TheGamecraft/c-cms.git
synced 2026-04-21 02:39:10 -04:00
Ajout de la modification des event_type
This commit is contained in:
@@ -9,4 +9,33 @@ class EventType extends Model
|
||||
protected $casts = [
|
||||
'schedule_model' => 'array',
|
||||
];
|
||||
|
||||
public function getScheduleModelData($level,$periode)
|
||||
{
|
||||
if (isset($this->schedule_model['default_value']))
|
||||
{
|
||||
dd($this->schedule_model ['default_value']);
|
||||
return $this->schedule_model['default_value'][$periode-1][$level-1];
|
||||
}
|
||||
else
|
||||
{
|
||||
return [
|
||||
'ocom' => 'M103.03',
|
||||
'name' => 'Super cours',
|
||||
'location' => 'Bic',
|
||||
'instructor' => 'Math',
|
||||
'desc' => ''
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
public function nbLevel()
|
||||
{
|
||||
return count($this->schedule_model['niveaux']);
|
||||
}
|
||||
|
||||
public function nbPeriode()
|
||||
{
|
||||
return count($this->schedule_model['periodes']);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -337,6 +337,9 @@ class GoogleDriveFile extends Model
|
||||
$user = \Auth::user();
|
||||
$sidebarArray = [];
|
||||
$dirList = \App\GoogleDriveFile::all();
|
||||
$temp = $dirList->where('path','=','.Privé/.Cadet')->first();
|
||||
if ($temp != null)
|
||||
{
|
||||
if ($dirList->where('path','=','.Privé/.Cadet')->first()->canAuthUser())
|
||||
{
|
||||
$sidebarArray['Cadet'] = [
|
||||
@@ -346,6 +349,11 @@ class GoogleDriveFile extends Model
|
||||
'child' => null
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
$temp = $dirList->where('path','=','.Privé/.Staff')->first();
|
||||
if ($temp != null)
|
||||
{
|
||||
if ($dirList->where('path','=','.Privé/.Staff')->first()->canAuthUser())
|
||||
{
|
||||
$sidebarArray['Staff'] = [
|
||||
@@ -355,6 +363,11 @@ class GoogleDriveFile extends Model
|
||||
'child' => null
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
$temp = $dirList->where('path','=','.Privé/.ETAMAS')->first();
|
||||
if ($temp != null)
|
||||
{
|
||||
if ($dirList->where('path','=','.Privé/.ETAMAS')->first()->canAuthUser())
|
||||
{
|
||||
$sidebarArray['ETAMAS'] = [
|
||||
@@ -364,6 +377,11 @@ class GoogleDriveFile extends Model
|
||||
'child' => null
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
$temp = $dirList->where('path','=','.Privé/.Officier')->first();
|
||||
if ($temp != null)
|
||||
{
|
||||
if ($dirList->where('path','=','.Privé/.Officier')->first()->canAuthUser())
|
||||
{
|
||||
$sidebarArray['Officier'] = [
|
||||
@@ -373,6 +391,7 @@ class GoogleDriveFile extends Model
|
||||
'child' => null
|
||||
];
|
||||
}
|
||||
}
|
||||
$sidebarArray['Publique'] = [
|
||||
'route' => 'admin.files.publique',
|
||||
'icon' => 'fas fa-folder-open',
|
||||
|
||||
@@ -68,9 +68,88 @@ class EventTypeController extends Controller
|
||||
* @param \App\EventType $eventType
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function update(Request $request, EventType $eventType)
|
||||
public function update(Request $request, $id)
|
||||
{
|
||||
//
|
||||
$eventType = EventType::findOrFail($id);
|
||||
|
||||
$eventType->name = $request->name;
|
||||
$eventType->location = $request->location;
|
||||
$eventType->begin_time = $request->begin_time;
|
||||
$eventType->end_time = $request->end_time;
|
||||
$eventType->calendar_icon = $request->calendar_icon;
|
||||
$eventType->calendar_color = $request->calendar_color;
|
||||
$eventType->admin_desc = $request->admin_desc;
|
||||
|
||||
if ($request->use_weekly_msg == 'on')
|
||||
{
|
||||
$eventType->use_weekly_msg = 1;
|
||||
$eventType->weekly_msg_publication_time = $request->weekly_msg_publication_time;
|
||||
$eventType->weekly_msg = $request->weekly_msg;
|
||||
}
|
||||
else
|
||||
{
|
||||
$eventType->use_weekly_msg = 0;
|
||||
$eventType->weekly_msg_publication_time = '';
|
||||
$eventType->weekly_msg = '';
|
||||
}
|
||||
if ($request->use_schedule == 'on')
|
||||
{
|
||||
$eventType->use_schedule = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
$eventType->use_schedule = 0;
|
||||
}
|
||||
if ($request->is_mandatory == 'on')
|
||||
{
|
||||
$eventType->is_mandatory = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
$eventType->is_mandatory = 0;
|
||||
}
|
||||
|
||||
$nbOfLevel = 1;
|
||||
while (\request('level_name_'.$nbOfLevel))
|
||||
{
|
||||
$nbOfLevel++;
|
||||
}
|
||||
$nbOfLevel = $nbOfLevel-1;
|
||||
|
||||
$nbOfPeriode = 1;
|
||||
while (\request('periode_name_'.$nbOfPeriode))
|
||||
{
|
||||
$nbOfPeriode++;
|
||||
}
|
||||
$nbOfPeriode = $nbOfPeriode -1;
|
||||
|
||||
$model = [];
|
||||
for ($x = 1; $x <= $nbOfPeriode; $x++) {
|
||||
$model['periodes'][$x-1] = [
|
||||
'name' => \Request('periode_name_'.$x),
|
||||
'begin_time' => \Request('periode_begin_time_'.$x),
|
||||
'end_time' => \Request('periode_end_time_'.$x)
|
||||
];
|
||||
}
|
||||
for ($i = 1; $i <= $nbOfLevel; $i++) {
|
||||
$model['niveaux'][$i-1] = [
|
||||
'name' => \Request('level_name_'.$i)
|
||||
];
|
||||
|
||||
for ($x = 1; $x <= $nbOfPeriode; $x++) {
|
||||
$model['default_value'][$x-1][$i-1] = [
|
||||
'ocom' => \Request('ocom_n'.$i.'_p'.$x),
|
||||
'name' => \Request('name_n'.$i.'_p'.$x),
|
||||
'location' => \Request('location_n'.$i.'_p'.$x),
|
||||
'instructor' => \Request('instruc_n'.$i.'_p'.$x),
|
||||
'desc' => \Request('desc_n'.$i.'_p'.$x),
|
||||
'use_course' => \Request('use_course_n'.$i.'_p'.$x),
|
||||
];
|
||||
}
|
||||
}
|
||||
$eventType->schedule_model = $model;
|
||||
$eventType->save();
|
||||
return redirect()->back()->with('success','Modification sauvegardé avec succès');
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -83,4 +162,9 @@ class EventTypeController extends Controller
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
public function toJson($id)
|
||||
{
|
||||
return EventType::findOrFail($id)->toArray();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,9 +11,24 @@ class ScheduleEditorController extends Controller
|
||||
return view('admin.schedule.editor.course');
|
||||
}
|
||||
|
||||
public function getCourseEmpty(int $niveau,int $periode)
|
||||
public function getCourseEmpty(int $niveau,int $periode,$event_type = 1)
|
||||
{
|
||||
return view('admin.schedule.editor.course',['periode' => $periode, 'niveau' => $niveau]);
|
||||
$eventType = \App\EventType::findOrFail($event_type);
|
||||
$data = $eventType->getScheduleModelData($niveau,$periode);
|
||||
$ocom = $data['ocom'];
|
||||
$name = $data['name'];
|
||||
$location = $data['location'];
|
||||
$instructor = $data['instructor'];
|
||||
$desc = $data['desc'];
|
||||
|
||||
return view('admin.schedule.editor.course',[
|
||||
'periode' => $periode,
|
||||
'niveau' => $niveau,
|
||||
'ocom' => $ocom,
|
||||
'name' => $name,
|
||||
'location' => $location,
|
||||
'instructor' => $instructor,
|
||||
'desc' => $desc]);
|
||||
}
|
||||
|
||||
public function getTemplate(int $id)
|
||||
|
||||
@@ -188,6 +188,15 @@ class Permission extends Model
|
||||
'valeur' => 0
|
||||
],
|
||||
],
|
||||
'Administration' => [
|
||||
'cadet_list_see' => [
|
||||
'ckey' => 'cadet_list_see',
|
||||
'communName' => 'Voir la liste nominative',
|
||||
'desc' => 'L\'utilisateur peut-il voir la liste nominative',
|
||||
'icon' => 'fa-eye',
|
||||
'valeur' => 0
|
||||
],
|
||||
],
|
||||
'Horaire' => [
|
||||
'schedule_see' => [
|
||||
'ckey' => 'schedule_see',
|
||||
|
||||
32
public/js/plugins/schedule/editor.js
vendored
32
public/js/plugins/schedule/editor.js
vendored
@@ -3,7 +3,7 @@ var nbOfPeriode;
|
||||
var nbOfLevel;
|
||||
var emptyPeriode;
|
||||
|
||||
function initScheduleEditor(id, eventType)
|
||||
function initScheduleEditor(id, eventType,mode = 'normal')
|
||||
{
|
||||
$.ajax({
|
||||
type: 'GET',
|
||||
@@ -12,7 +12,7 @@ function initScheduleEditor(id, eventType)
|
||||
$("#"+id).html(template);
|
||||
for (let pniveau = 1; pniveau <= nbOfLevel; pniveau++) {
|
||||
for (let pperiode = 1; pperiode <= nbOfPeriode; pperiode++) {
|
||||
loadCourse(pniveau,pperiode);
|
||||
loadCourse(pniveau,pperiode,eventType,mode);
|
||||
}
|
||||
}
|
||||
initAutoComplete("AutoCompleteUser");
|
||||
@@ -21,7 +21,7 @@ function initScheduleEditor(id, eventType)
|
||||
error: function () {
|
||||
showNotification('error','Impossible d\'initialiser l\'éditeur d\'horaire ...','top', 'center')
|
||||
}
|
||||
})
|
||||
});
|
||||
$('.datetimepicker').datetimepicker({
|
||||
icons: {
|
||||
time: "fa fa-clock-o",
|
||||
@@ -56,7 +56,6 @@ function initScheduleEditor(id, eventType)
|
||||
]
|
||||
});
|
||||
$('select').selectpicker();
|
||||
|
||||
}
|
||||
|
||||
function switchUseWeeklyMsg()
|
||||
@@ -85,13 +84,17 @@ function switchUseSchedule()
|
||||
}
|
||||
}
|
||||
|
||||
function loadCourse(periode,niveau)
|
||||
function loadCourse(periode,niveau,id = 1,mode = 'normal')
|
||||
{
|
||||
$.ajax({
|
||||
type: 'GET',
|
||||
url: '/api/schedule/editor/course/'+niveau+'/'+periode+'?api_token='+api_token,
|
||||
url: '/api/schedule/editor/course/'+niveau+'/'+periode+'/'+id+'?api_token='+api_token,
|
||||
success: function (course) {
|
||||
$("#container-"+niveau+"-"+periode).html(course);
|
||||
if (mode == 'editor')
|
||||
{
|
||||
$('.no-mandatory').removeAttr('required')
|
||||
}
|
||||
},
|
||||
error: function () {
|
||||
showNotification('error','Impossible de charger les cours ...','top', 'center')
|
||||
@@ -120,6 +123,21 @@ function addPeriode()
|
||||
})
|
||||
}
|
||||
|
||||
function removePeriode()
|
||||
{
|
||||
$('#row-'+nbOfPeriode).remove();
|
||||
nbOfPeriode--;
|
||||
}
|
||||
|
||||
function removeLevel()
|
||||
{
|
||||
$('#levelHeader-'+nbOfLevel).remove();
|
||||
for (let i = 0; i < nbOfPeriode+1; i++) {
|
||||
$('#container-'+nbOfLevel+'-'+i).remove();
|
||||
}
|
||||
nbOfLevel--;
|
||||
}
|
||||
|
||||
function addLevel()
|
||||
{
|
||||
var levelToAdd = nbOfLevel+1;
|
||||
@@ -159,7 +177,7 @@ function loadEventType(date)
|
||||
editorTemplate = result;
|
||||
nbOfLevel = editorTemplate.schedule_model.niveaux.length;
|
||||
nbOfPeriode = editorTemplate.schedule_model.periodes.length;
|
||||
initScheduleEditor("scheduleEditor",id)
|
||||
initScheduleEditor("scheduleEditor",id);
|
||||
$.each(result, function (i, val) {
|
||||
if(i == "is_mandatory" || i == "use_schedule" || i == "use_weekly_msg")
|
||||
{
|
||||
|
||||
393
public/js/plugins/schedule/editorv2.js
vendored
Normal file
393
public/js/plugins/schedule/editorv2.js
vendored
Normal file
@@ -0,0 +1,393 @@
|
||||
var nbOfLevel = 0;
|
||||
var nbOfPeriode = 0;
|
||||
var eventType;
|
||||
var editorMode = 'schedule';
|
||||
function initEditor(event_id = 1, mode = 'schedule')
|
||||
{
|
||||
let editor = $('#editor');
|
||||
editorMode = mode;
|
||||
eventType = null;
|
||||
let eventTypePromise = $.ajax({
|
||||
type: 'GET',
|
||||
url: '/api/eventType/'+event_id+'?api_token='+api_token,
|
||||
success: function (template) {
|
||||
eventType = template;
|
||||
},
|
||||
error: function () {
|
||||
showNotification('error','Impossible d\'initialiser l\'éditeur d\'horaire ...','top', 'center')
|
||||
}
|
||||
});
|
||||
|
||||
$.when(eventTypePromise).done(function () {
|
||||
console.log(eventType);
|
||||
nbOfLevel = eventType['schedule_model']['niveaux'].length;
|
||||
nbOfPeriode = eventType['schedule_model']['periodes'].length;
|
||||
updateWidth();
|
||||
editor.html(getTemplate(eventType['schedule_model']));
|
||||
|
||||
if (mode == 'eventType')
|
||||
{
|
||||
let scheduleModel = eventType['schedule_model'];
|
||||
if (scheduleModel['default_value'])
|
||||
{
|
||||
$.each(scheduleModel['niveaux'], function (level_id, level) {
|
||||
$.each(scheduleModel['periodes'], function (periode_id, value) {
|
||||
if (scheduleModel['default_value'][level_id,periode_id])
|
||||
{
|
||||
updateLevel(periode_id,level_id,scheduleModel['default_value'][periode_id][level_id]);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
$('.no-mandatory').removeAttr('required')
|
||||
}
|
||||
initAutoComplete("AutoCompleteUser");
|
||||
initAutoCompleteOCOM('AutoCompleteOCOM');
|
||||
});
|
||||
}
|
||||
|
||||
function updateWidth()
|
||||
{
|
||||
$('#editor').css('width',(23*(nbOfLevel+1))+'rem');
|
||||
}
|
||||
|
||||
function getTemplate(scheduleModel)
|
||||
{
|
||||
let headerHTML = '';
|
||||
$.each(scheduleModel['niveaux'], function (index, value) {
|
||||
headerHTML = headerHTML+getHeader(index,value['name']);
|
||||
});
|
||||
let periodesHTML = '';
|
||||
$.each(scheduleModel['periodes'], function (index, value) {
|
||||
periodesHTML = periodesHTML+getPeriode(index,value,scheduleModel['niveaux']);
|
||||
});
|
||||
return '<div class="row">\n' +
|
||||
' <div class="editor-header col p-3 border-right border-bottom bg-dark text-white">\n' +
|
||||
' <b>\n' +
|
||||
' Niveau/Periode\n' +
|
||||
' </b>\n' +
|
||||
' </div>\n' +
|
||||
headerHTML +
|
||||
' <div class="col-1">\n' +
|
||||
' <a class="btn btn-primary btn-fab btn-fab-mini btn-round text-white" onclick="addLevel()">\n' +
|
||||
' <i class="material-icons">add</i>\n' +
|
||||
' </a>\n' +
|
||||
' <a class="btn btn-primary btn-fab btn-fab-mini btn-round text-white" onclick="removeLevel()">\n' +
|
||||
' <i class="material-icons">remove</i>\n' +
|
||||
' </a>\n' +
|
||||
' </div>\n' +
|
||||
'</div>\n'+
|
||||
periodesHTML +
|
||||
'<div class="row">\n' +
|
||||
' <div class="col p-2">\n' +
|
||||
' <a class="btn btn-primary btn-fab btn-fab-mini btn-round text-white" onclick="addPeriode()">\n' +
|
||||
' <i class="material-icons">add</i>\n' +
|
||||
' </a>\n' +
|
||||
' <a class="btn btn-primary btn-fab btn-fab-mini btn-round text-white" onclick="removePeriode()">\n' +
|
||||
' <i class="material-icons">remove</i>\n' +
|
||||
' </a>\n' +
|
||||
' </div>\n' +
|
||||
'</div>\n';
|
||||
}
|
||||
|
||||
function getHeader(level_id,level_name)
|
||||
{
|
||||
return '<div id="levelHeader-'+level_id+'" class="col border-right border-bottom bg-dark text-white">\n' +
|
||||
' <div class="row">\n' +
|
||||
' <div class="col-9">\n' +
|
||||
' <div class="form-group label-floating">\n' +
|
||||
' <input type="text" placeholder="Niveau" name="level_name_'+(level_id+1)+'" class="form-control text-white" value="'+level_name+'" />\n' +
|
||||
' <span class="form-control-feedback">\n' +
|
||||
' <i class="material-icons">clear</i>\n' +
|
||||
' </span>\n' +
|
||||
' </div>\n' +
|
||||
' </div>\n' +
|
||||
' <div class="col-3 text-right">\n' +
|
||||
' <a type="button" class="btn btn-link btn-sm dropdown-toggle dropdown-toggle-split text-white" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">\n' +
|
||||
' <span class="sr-only">Toggle Dropdown</span>\n' +
|
||||
' </a>\n' +
|
||||
' <div class="dropdown-menu">\n' +
|
||||
' <a id="modeSwitchPeriodeC'+level_id+'" class="btn-secondary dropdown-item m-1" onclick="selectCourseModeNiveau(\'course\','+level_id+')">Mode "Cours" pour toutes les périodes</a>\n' +
|
||||
' <a id="modeSwitchPeriodeO'+level_id+'" class="btn-secondary dropdown-item m-1" onclick="selectCourseModeNiveau(\'other\','+level_id+')">Mode "Autre" pour toutes les période</a>\n' +
|
||||
' </div>\n' +
|
||||
' </div>\n' +
|
||||
' </div>\n' +
|
||||
'</div>'
|
||||
}
|
||||
|
||||
function getPeriode(id,periode,niveaux) {
|
||||
let temp = '';
|
||||
|
||||
$.each(niveaux, function (index, value) {
|
||||
temp = temp+getCourse(index,id);
|
||||
});
|
||||
|
||||
return '<div class="row" id="row-'+id+'">\n' +
|
||||
' <div class="col d-inline border-right border-bottom bg-light">\n' +
|
||||
' <div class="row">\n' +
|
||||
' <div class="col-9">\n' +
|
||||
' <div class="form-group label-floating">\n' +
|
||||
' <input type="text" placeholder="Période" name="periode_name_'+(id+1)+'" class="form-control" value="'+periode['name']+'" />\n' +
|
||||
' <span class="form-control-feedback">\n' +
|
||||
' <i class="material-icons">clear</i>\n' +
|
||||
' </span>\n' +
|
||||
' </div>\n' +
|
||||
' </div>\n' +
|
||||
' <div class="col-3 text-right">\n' +
|
||||
' <a type="button" class="btn btn-sm btn-secondary dropdown-toggle dropdown-toggle-split" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">\n' +
|
||||
' <span class="sr-only">Toggle Dropdown</span>\n' +
|
||||
' </a>\n' +
|
||||
' <div class="dropdown-menu">\n' +
|
||||
' <a id="modeSwitchPeriodeC'+id+'" class="btn-secondary dropdown-item m-1" onclick="selectCourseModePeriode(\'course\','+id+')">Mode "Cours" pour toute la période</a>\n' +
|
||||
' <a id="modeSwitchPeriodeO'+id+'" class="btn-secondary dropdown-item m-1" onclick="selectCourseModePeriode(\'other\','+id+')">Mode "Autre" pour toute la période</a>\n' +
|
||||
' </div>\n' +
|
||||
' </div>\n' +
|
||||
' </div>\n' +
|
||||
' <div class="row">\n' +
|
||||
' <div class="col-6">\n' +
|
||||
' <div class="form-group label-floating">\n' +
|
||||
' <input type="time" class="form-control" name="periode_begin_time_'+(id+1)+'" value="'+periode['begin_time']+'" />\n' +
|
||||
' <span class="form-control-feedback"><i class="material-icons">clear</i></span>\n' +
|
||||
' </div>\n' +
|
||||
' </div>\n' +
|
||||
' <div class="col-6">\n' +
|
||||
' <div class="form-group label-floating">\n' +
|
||||
' <input type="time" class="form-control" name="periode_end_time_'+(id+1)+'" value="'+periode['end_time']+'" />\n' +
|
||||
' <span class="form-control-feedback"><i class="material-icons">clear</i></span>\n' +
|
||||
' </div>\n' +
|
||||
' </div>\n' +
|
||||
' </div>\n' +
|
||||
' </div>\n' +
|
||||
temp +
|
||||
' <div class="col-1">\n' +
|
||||
'\n' +
|
||||
' </div>\n' +
|
||||
'</div>'
|
||||
}
|
||||
|
||||
function getCourse(level_id,periode_id)
|
||||
{
|
||||
level_id++;
|
||||
periode_id++;
|
||||
return '<div id="container-'+level_id+'-'+periode_id+'" niveau="'+level_id+'" periode="'+periode_id+'" class="col m-0 border-bottom border-right scheduleEditor-course">\n' +
|
||||
'<input class="d-none" type="checkbox" id="use_course_n'+level_id+'_p'+periode_id+'" name="use_course_n'+level_id+'_p'+periode_id+'" checked>\n' +
|
||||
'<div class="row bg-light">\n' +
|
||||
' <div class="col-8 pr-0 m-auto d-flex">\n' +
|
||||
' </div>\n' +
|
||||
' <div class="col-4 text-right">\n' +
|
||||
' <a type="button" class="btn btn-sm btn-secondary dropdown-toggle dropdown-toggle-split" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">\n' +
|
||||
' <span class="sr-only">Toggle Dropdown</span>\n' +
|
||||
' </a>\n' +
|
||||
' <div class="dropdown-menu">\n' +
|
||||
' <a id="modeSwitchC'+level_id+'-'+periode_id+'" class="btn-secondary dropdown-item active m-1" onclick="selectCourseMode(\'course\','+level_id+','+periode_id+')">Mode "Cours" pour cette période</a>\n' +
|
||||
' <a id="modeSwitchO'+level_id+'-'+periode_id+'" class="btn-secondary dropdown-item m-1" onclick="selectCourseMode(\'other\','+level_id+','+periode_id+')">Mode "Autre" pour cette période</a>\n' +
|
||||
' <div class="dropdown-divider"></div>\n' +
|
||||
' <a class="btn-secondary dropdown-item" href="#">Réinitialiser</a>\n' +
|
||||
' </div>\n' +
|
||||
' </div>\n' +
|
||||
'</div>\n' +
|
||||
'<div class="tab-content text-center">\n' +
|
||||
' <div class="tab-pane active">\n' +
|
||||
' <div class="row pt-2">\n' +
|
||||
' <div class="col-12 d-none" id="descContainer'+level_id+'-'+periode_id+'">\n' +
|
||||
' <div class="form-group">\n' +
|
||||
' <label for="exampleFormControlTextarea1">Description de la période</label>\n' +
|
||||
' <textarea class="form-control" id="desc_n'+level_id+'_p'+periode_id+' name="desc_n'+level_id+'_p'+periode_id+' no-mandatory" id="exampleFormControlTextarea1" rows="2"></textarea>\n' +
|
||||
' </div>\n' +
|
||||
' </div>\n' +
|
||||
' <div class="col-6 mb-1" id="OCOMContainer'+level_id+'-'+periode_id+'">\n' +
|
||||
' <div class="form-group label-floating">\n' +
|
||||
' <div class="autocomplete">\n' +
|
||||
' <input type="text" placeholder="OCOM du cours" id="ocom_n'+level_id+'_p'+periode_id+'" name="ocom_n'+level_id+'_p'+periode_id+'" class="form-control AutoCompleteOCOM no-mandatory" aria-describedby="nameHelp" autocomplete="off" required onblur="updateCourseName(\''+level_id+'\',\''+periode_id+'\')">\n' +
|
||||
' </div>\n' +
|
||||
' <span class="form-control-feedback">\n' +
|
||||
' <i class="material-icons">done</i>\n' +
|
||||
' </span>\n' +
|
||||
' </div>\n' +
|
||||
' </div>\n' +
|
||||
' <div class="col-6" id="nameContainer'+level_id+'-'+periode_id+'">\n' +
|
||||
' <div class="form-group label-floating">\n' +
|
||||
' <input type="text" placeholder="Nom du cours" id="name_n'+level_id+'_p'+periode_id+'" name="name_n'+level_id+'_p'+periode_id+'" class="form-control no-mandatory" required />\n' +
|
||||
' <span class="form-control-feedback">\n' +
|
||||
' <i class="material-icons">clear</i>\n' +
|
||||
' </span>\n' +
|
||||
' </div>\n' +
|
||||
' </div>\n' +
|
||||
' <div class="col-6 mb-1">\n' +
|
||||
' <div class="form-group label-floating">\n' +
|
||||
' <input type="text" placeholder="Lieu du cours" id="location_n'+level_id+'_p'+periode_id+'" name="location_n'+level_id+'_p'+periode_id+'" class="form-control no-mandatory" required/>\n' +
|
||||
' <span class="form-control-feedback">\n' +
|
||||
' <i class="material-icons">done</i>\n' +
|
||||
' </span>\n' +
|
||||
' </div>\n' +
|
||||
' </div>\n' +
|
||||
' <div class="col-6">\n' +
|
||||
' <div class="form-group label-floating">\n' +
|
||||
' <div class="autocomplete">\n' +
|
||||
' <input type="text" placeholder="Nom de l\'instructeur" id="instruc_n'+level_id+'_p'+periode_id+'" name="instruc_n'+level_id+'_p'+periode_id+'" class="form-control AutoCompleteUser no-mandatory" aria-describedby="nameHelp" autocomplete="off" required>\n' +
|
||||
' </div>\n' +
|
||||
' <span class="form-control-feedback">\n' +
|
||||
' <i class="material-icons">done</i>\n' +
|
||||
' </span>\n' +
|
||||
' </div>\n' +
|
||||
' </div>\n' +
|
||||
' </div>\n' +
|
||||
' </div>\n' +
|
||||
'</div>\n'+
|
||||
'</div>';
|
||||
}
|
||||
|
||||
function updateLevel(p,l,level)
|
||||
{
|
||||
p++;
|
||||
l++;
|
||||
$('#desc_n'+l+'_p'+p).val(level['desc']);
|
||||
$('#ocom_n'+l+'_p'+p).val(level['ocom']);
|
||||
$('#name_n'+l+'_p'+p).val(level['name']);
|
||||
$('#location_n'+l+'_p'+p).val(level['location']);
|
||||
$('#instruc_n'+l+'_p'+p).val(level['instructor']);
|
||||
|
||||
if (level['use_course'] != 'on')
|
||||
{
|
||||
selectCourseMode('autre',l,p);
|
||||
}
|
||||
}
|
||||
|
||||
function removePeriode()
|
||||
{
|
||||
$('#row-'+(nbOfPeriode-1)).remove();
|
||||
eventType['schedule_model']['periodes'].pop();
|
||||
nbOfPeriode--;
|
||||
}
|
||||
|
||||
function removeLevel()
|
||||
{
|
||||
$('#levelHeader-'+(nbOfLevel-1)).remove();
|
||||
for (let i = 0; i < nbOfPeriode; i++) {
|
||||
$('#container-'+(nbOfLevel)+'-'+(i+1)).remove();
|
||||
}
|
||||
eventType['schedule_model']['niveaux'].pop();
|
||||
updateWidth();
|
||||
nbOfLevel--;
|
||||
}
|
||||
|
||||
function addLevel()
|
||||
{
|
||||
$('#levelHeader-'+(nbOfLevel-1)).after(getHeader(nbOfLevel,'Niveau '+(nbOfLevel+1)));
|
||||
|
||||
let scheduleModel = eventType['schedule_model'];
|
||||
$.each(scheduleModel['periodes'], function (periode_id, value) {
|
||||
console.log($('#container-'+(nbOfLevel)+'-'+periode_id));
|
||||
$('#container-'+(nbOfLevel)+'-'+(periode_id+1)).after(getCourse(nbOfLevel,periode_id));
|
||||
});
|
||||
|
||||
eventType['schedule_model']['niveaux'].push({name:'Niveau '+(nbOfLevel+1)});
|
||||
updateWidth();
|
||||
nbOfLevel++;
|
||||
initAutoComplete("AutoCompleteUser");
|
||||
initAutoCompleteOCOM('AutoCompleteOCOM');
|
||||
if (editorMode == 'eventType')
|
||||
{
|
||||
$('.no-mandatory').removeAttr('required')
|
||||
}
|
||||
}
|
||||
|
||||
function addPeriode()
|
||||
{
|
||||
$('#row-'+(nbOfPeriode-1)).after(getPeriode(nbOfPeriode,{
|
||||
"name": "Periode "+nbOfPeriode,
|
||||
"begin_time": "",
|
||||
"end_time": ""
|
||||
},eventType['schedule_model']['niveaux']));
|
||||
|
||||
eventType['schedule_model']['periodes'].push({
|
||||
"name": "Periode "+nbOfPeriode,
|
||||
"begin_time": "",
|
||||
"end_time": ""
|
||||
});
|
||||
nbOfPeriode++;
|
||||
initAutoComplete("AutoCompleteUser");
|
||||
initAutoCompleteOCOM('AutoCompleteOCOM');
|
||||
if (editorMode == 'eventType')
|
||||
{
|
||||
$('.no-mandatory').removeAttr('required')
|
||||
}
|
||||
}
|
||||
|
||||
function selectCourseMode(mode, niveau, periode)
|
||||
{
|
||||
if(mode == "course")
|
||||
{
|
||||
$('#descContainer'+niveau+'-'+periode).addClass('d-none');
|
||||
$('#isDoneContainer'+niveau+'-'+periode).removeClass('d-none');
|
||||
$('#isDoneContainer'+niveau+'-'+periode).addClass('d-flex');
|
||||
$('#OCOMContainer'+niveau+'-'+periode).removeClass('d-none');
|
||||
$('#nameContainer'+niveau+'-'+periode).removeClass('d-none');
|
||||
$('#modeSwitchC'+niveau+'-'+periode).addClass('active');
|
||||
$('#modeSwitchO'+niveau+'-'+periode).removeClass('active');
|
||||
$('#use_course_n'+niveau+'_p'+periode).prop("checked", true);
|
||||
}
|
||||
else
|
||||
{
|
||||
$('#descContainer'+niveau+'-'+periode).removeClass('d-none');
|
||||
$('#isDoneContainer'+niveau+'-'+periode).addClass('d-none');
|
||||
$('#isDoneContainer'+niveau+'-'+periode).removeClass('d-flex');
|
||||
$('#OCOMContainer'+niveau+'-'+periode).addClass('d-none');
|
||||
$('#nameContainer'+niveau+'-'+periode).addClass('d-none');
|
||||
$('#modeSwitchC'+niveau+'-'+periode).removeClass('active');
|
||||
$('#modeSwitchO'+niveau+'-'+periode).addClass('active');
|
||||
$('#use_course_n'+niveau+'_p'+periode).prop("checked", false);
|
||||
}
|
||||
}
|
||||
|
||||
function selectCourseModePeriode(mode,periode)
|
||||
{
|
||||
for (let i = 0; i < nbOfLevel; i++) {
|
||||
selectCourseMode(mode,i+1,periode+1);
|
||||
}
|
||||
}
|
||||
|
||||
function selectCourseModeNiveau(mode,niveau)
|
||||
{
|
||||
for (let i = 0; i < nbOfPeriode; i++) {
|
||||
selectCourseMode(mode,niveau+1,i+1);
|
||||
}
|
||||
}
|
||||
|
||||
function updatePlantext(toggle,id)
|
||||
{
|
||||
if($('#'+toggle).is(":checked"))
|
||||
{
|
||||
$('#'+id).removeClass('text-warning');
|
||||
$('#'+id).addClass('text-success');
|
||||
$('#'+id).html('Plan de cours remis')
|
||||
}
|
||||
else
|
||||
{
|
||||
$('#'+id).addClass('text-warning');
|
||||
$('#'+id).removeClass('text-success');
|
||||
$('#'+id).html('Plan de cours non remis')
|
||||
}
|
||||
}
|
||||
|
||||
function updateCourseName(niveau, periode) {
|
||||
setTimeout(function(){
|
||||
let val = $('#ocom_n'+niveau+'_p'+periode).val();
|
||||
if(val != "")
|
||||
{
|
||||
$.ajax({
|
||||
type: 'GET',
|
||||
url: '/api/ocom/'+val+'/name?api_token='+api_token,
|
||||
success: function (data) {
|
||||
if(data != null && data != "")
|
||||
{
|
||||
$('#name_n'+niveau+'_p'+periode).val(data);
|
||||
}
|
||||
},
|
||||
error: function () {
|
||||
showNotification('error','Erreur impossible de charger l\'objectif de rendement ...','top', 'center')
|
||||
}
|
||||
})
|
||||
}
|
||||
}, 100);
|
||||
}
|
||||
@@ -12,30 +12,117 @@
|
||||
@method('PATCH')
|
||||
@csrf
|
||||
<div class="row">
|
||||
<div class="col-md-3">
|
||||
<div class="col-md-5">
|
||||
<div class="form-group">
|
||||
<label class="label-control">Nom</label>
|
||||
<input type="text" class="form-control" value="{{$event_type->name}}"/>
|
||||
<input type="text" class="form-control" value="{{$event_type->name}}" name="name" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="col-md-5">
|
||||
<div class="form-group">
|
||||
<label class="label-control">Emplacement</label>
|
||||
<input type="text" class="form-control" value="{{$event_type->name}}"/>
|
||||
<input type="text" class="form-control" value="{{$event_type->location}}" name="location" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<div class="togglebutton">
|
||||
<label>
|
||||
<input type="checkbox" checked="" name="is_mandatory">
|
||||
<span class="toggle"></span>
|
||||
Obligatoire
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="form-group">
|
||||
<label class="label-control">Date de début de l'année d'instruction</label>
|
||||
<label class="label-control">Heure de début</label>
|
||||
<input name="begin_time" type="time" class="form-control" value="{{$event_type->begin_time}}"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="form-group">
|
||||
<label class="label-control">Date de fin de l'année d'instruction</label>
|
||||
<label class="label-control">Heure de fin</label>
|
||||
<input name="end_time" type="time" class="form-control" value="{{$event_type->end_time}}"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="form-group iconpicker-container">
|
||||
<label for="type">Icone</label>
|
||||
<div class="input-group iconpicker-container">
|
||||
<input id="calendar_icon" name="calendar_icon" data-placement="bottomRight" class="form-control icp icp-auto iconpicker-element iconpicker-input" value="{{$event_type->calendar_icon}}" type="text">
|
||||
<span class="input-group-addon"><i id="calendar_icon_display" class="fas fa-assistive-listening-systems"></i></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="form-group">
|
||||
<label for="type">Couleur</label>
|
||||
<div class="input-group iconpicker-container">
|
||||
<input class="form-control" type="text" name="calendar_color" id="calendar_color" value="{{$event_type->calendar_color}}" onclick="pickr.show()">
|
||||
<span class="color-picker"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-12">
|
||||
<label class="mb-0">Description</label>
|
||||
<div class="form-group">
|
||||
<textarea name="admin_desc" class="form-control richeditor" name="admin_desc" id="admin_desc" rows="6" required>
|
||||
{!! $event_type->admin_desc !!}
|
||||
</textarea>
|
||||
</div>
|
||||
<hr>
|
||||
</div>
|
||||
<div class="col-md-12">
|
||||
<label class="mb-0">Message de la semaine</label>
|
||||
<div class="togglebutton float-right">
|
||||
<label>
|
||||
<input type="checkbox" name="use_weekly_msg" type="button" data-toggle="collapse" data-target="#collapseMSG" aria-expanded="false" aria-controls="collapseMSG" @if($event_type->use_weekly_msg == 1) checked @endif>
|
||||
<span class="toggle"></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="collapse w-100 @if($event_type->use_weekly_msg == 1) show @endif" id="collapseMSG">
|
||||
<div class="col-md-12">
|
||||
<div class="form-group">
|
||||
<label>Heure publication des messages de la semaine</label>
|
||||
<select class="form-control mt-3" name="weekly_msg_publication_time">
|
||||
<option value="-1days" @if($event_type->weekly_msg_publication_time == '-1days') selected @endif>-1 Jour</option>
|
||||
<option value="-2days" @if($event_type->weekly_msg_publication_time == '-2days') selected @endif>-2 Jours</option>
|
||||
<option value="-3days" @if($event_type->weekly_msg_publication_time == '-3days') selected @endif>-3 Jours</option>
|
||||
<option value="-4days" @if($event_type->weekly_msg_publication_time == '-4days') selected @endif>-4 Jours</option>
|
||||
<option value="-5days" @if($event_type->weekly_msg_publication_time == '-5days') selected @endif>-5 Jours</option>
|
||||
<option value="-6days" @if($event_type->weekly_msg_publication_time == '-6days') selected @endif>-6 Jours</option>
|
||||
<option value="-7days" @if($event_type->weekly_msg_publication_time == '-7days') selected @endif>-7 Jours</option>
|
||||
<option value="-2weeks" @if($event_type->weekly_msg_publication_time == '-2weeks') selected @endif>-2 Semaines</option>
|
||||
</select>
|
||||
</div>
|
||||
<label class="mb-0 mt-4">Message par défaut</label>
|
||||
<div class="form-group mt-0">
|
||||
<textarea name="weekly_msg" class="form-control richeditor" name="admin_desc" id="admin_desc" rows="6" required>
|
||||
{!! $event_type->weekly_msg!!}
|
||||
</textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-12">
|
||||
<hr>
|
||||
<label class="mb-0">Horaire</label>
|
||||
<div class="togglebutton float-right">
|
||||
<label>
|
||||
<input type="checkbox" name="use_schedule" type="button" data-toggle="collapse" data-target="#collapseSchedule" aria-expanded="false" aria-controls="collapseSchedule" @if($event_type->use_schedule == 1) checked @endif>
|
||||
<span class="toggle"></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-12">
|
||||
<div class="collapse @if($event_type->use_schedule == 1) show @endif" id="collapseSchedule">
|
||||
<div class="card-body" style="overflow: scroll">
|
||||
<div id="editor" class="m-3" style="width: 110vw">
|
||||
@loaderDot
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-12 text-right">
|
||||
<button type="submit" class="btn btn-primary">Sauvegarder</button>
|
||||
</div>
|
||||
@@ -48,8 +135,80 @@
|
||||
@endsection
|
||||
|
||||
@section('custom_scripts')
|
||||
<script src="https://cdn.jsdelivr.net/npm/@simonwep/pickr/dist/pickr.min.js"></script>
|
||||
<script src="/js/plugins/fontawesome-icon-picker/fontawesome-iconpicker.js"></script>
|
||||
<script src="/js/plugins/schedule/editorv2.js"></script>
|
||||
<script src="/js/plugins/autocomplete.js"></script>
|
||||
<script>
|
||||
let begin = moment('{{$event_type->begin_time}}');
|
||||
let end = moment('{{$event_type->end_time}}');
|
||||
|
||||
$('.richeditor').trumbowyg({
|
||||
lang: 'fr',
|
||||
btns: [
|
||||
['viewHTML'],
|
||||
['emoji'],
|
||||
['undo', 'redo'], // Only supported in Blink browsers
|
||||
['strong', 'em', 'del'],
|
||||
['superscript', 'subscript'],
|
||||
['fontfamily'],
|
||||
['fontsize'],
|
||||
['foreColor', 'backColor'],
|
||||
['link'],
|
||||
['justifyLeft', 'justifyCenter', 'justifyRight', 'justifyFull'],
|
||||
['unorderedList', 'orderedList'],
|
||||
['horizontalRule'],
|
||||
['removeformat'],
|
||||
['fullscreen']
|
||||
]
|
||||
});
|
||||
|
||||
$('.icp-auto').iconpicker({ placement: 'right',animation: 'false'});
|
||||
const pickr = Pickr.create({
|
||||
el: '.color-picker',
|
||||
theme: 'monolith', // or 'monolith', or 'nano'
|
||||
|
||||
swatches: [
|
||||
'rgba(244, 67, 54, 1)',
|
||||
'rgba(233, 30, 99, 1)',
|
||||
'rgba(156, 39, 176, 1)',
|
||||
'rgba(103, 58, 183, 1)',
|
||||
'rgba(63, 81, 181, 1)',
|
||||
'rgba(33, 150, 243, 1)',
|
||||
'rgba(3, 169, 244, 1)',
|
||||
'rgba(0, 188, 212, 1)',
|
||||
'rgba(0, 150, 136, 1)',
|
||||
'rgba(76, 175, 80, 1)',
|
||||
'rgba(139, 195, 74, 1)',
|
||||
'rgba(205, 220, 57, 1)',
|
||||
'rgba(255, 235, 59, 1)',
|
||||
'rgba(255, 193, 7, 1)'
|
||||
],
|
||||
comparison: false,
|
||||
default: '{{$event_type->calendar_color}}',
|
||||
components: {
|
||||
|
||||
// Main components
|
||||
preview: true,
|
||||
opacity: false,
|
||||
hue: true,
|
||||
|
||||
// Input / output Options
|
||||
interaction: {
|
||||
hex: true,
|
||||
rgba: false,
|
||||
hsla: false,
|
||||
hsva: false,
|
||||
cmyk: false,
|
||||
input: true,
|
||||
clear: false,
|
||||
save: false
|
||||
}
|
||||
}
|
||||
});
|
||||
pickr.on('change', (color,instance) => {
|
||||
$('#calendar_color').val(color.toHEXA().toString());
|
||||
});
|
||||
initEditor({{$event_type->id}},'eventType');
|
||||
</script>
|
||||
@endsection
|
||||
@@ -1,17 +1,6 @@
|
||||
<input class="d-none" type="checkbox" id="use_course_n{{$niveau}}_p{{$periode}}" name="use_course_n{{$niveau}}_p{{$periode}}" checked>
|
||||
<div class="row bg-light">
|
||||
<div class="col-8 pr-0 m-auto d-flex">
|
||||
<div class="pr-0 m-auto d-flex" id="isDoneContainer{{$niveau}}-{{$periode}}">
|
||||
<div class="togglebutton">
|
||||
<label class="m-auto">
|
||||
<input type="checkbox" id="plan_n{{$niveau}}_p{{$periode}}" name="plan_n{{$niveau}}_p{{$periode}}" onchange="updatePlantext('plan_n{{$niveau}}_p{{$periode}}','planText_n{{$niveau}}_p{{$periode}}')">
|
||||
<span class="toggle"></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="text-warning p-1 justify-content-center" id="planText_n{{$niveau}}_p{{$periode}}">
|
||||
Plan de cours non remis
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-4 text-right">
|
||||
<a type="button" class="btn btn-sm btn-secondary dropdown-toggle dropdown-toggle-split" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
@@ -31,13 +20,13 @@
|
||||
<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" name="desc_n{{$niveau}}_p{{$periode}}" id="exampleFormControlTextarea1" rows="2"></textarea>
|
||||
<textarea class="form-control" name="desc_n{{$niveau}}_p{{$periode}} no-mandatory" id="exampleFormControlTextarea1" rows="2">{{$desc}}</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}}" name="ocom_n{{$niveau}}_p{{$periode}}" class="form-control AutoCompleteOCOM" aria-describedby="nameHelp" autocomplete="off" value="M103.02" 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 no-mandatory" aria-describedby="nameHelp" autocomplete="off" value="{{$ocom}}" required onblur="updateCourseName('{{$niveau}}','{{$periode}}')">
|
||||
</div>
|
||||
<span class="form-control-feedback">
|
||||
<i class="material-icons">done</i>
|
||||
@@ -46,7 +35,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}}" name="name_n{{$niveau}}_p{{$periode}}" value="Nom du cours" class="form-control" required />
|
||||
<input type="text" placeholder="Nom du cours" id="name_n{{$niveau}}_p{{$periode}}" name="name_n{{$niveau}}_p{{$periode}}" value="{{$name}}" class="form-control no-mandatory" required />
|
||||
<span class="form-control-feedback">
|
||||
<i class="material-icons">clear</i>
|
||||
</span>
|
||||
@@ -54,7 +43,7 @@
|
||||
</div>
|
||||
<div class="col-6 mb-1">
|
||||
<div class="form-group label-floating">
|
||||
<input type="text" placeholder="Lieu du cours" name="location_n{{$niveau}}_p{{$periode}}" value="Lieu du cours" class="form-control" required/>
|
||||
<input type="text" placeholder="Lieu du cours" name="location_n{{$niveau}}_p{{$periode}}" value="{{$location}}" class="form-control no-mandatory" required/>
|
||||
<span class="form-control-feedback">
|
||||
<i class="material-icons">done</i>
|
||||
</span>
|
||||
@@ -63,7 +52,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}}" name="instruc_n{{$niveau}}_p{{$periode}}" value="Mathieu" 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="{{$instructor}}" class="form-control AutoCompleteUser no-mandatory" aria-describedby="nameHelp" autocomplete="off" required>
|
||||
</div>
|
||||
<span class="form-control-feedback">
|
||||
<i class="material-icons">done</i>
|
||||
|
||||
@@ -11,6 +11,9 @@
|
||||
<a class="btn btn-primary btn-fab btn-fab-mini btn-round text-white" onclick="addLevel()">
|
||||
<i class="material-icons">add</i>
|
||||
</a>
|
||||
<a class="btn btn-primary btn-fab btn-fab-mini btn-round text-white" onclick="removeLevel()">
|
||||
<i class="material-icons">remove</i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
@foreach($eventType->schedule_model['periodes'] as $periode)
|
||||
@@ -27,5 +30,8 @@
|
||||
<a class="btn btn-primary btn-fab btn-fab-mini btn-round text-white" onclick="addPeriode()">
|
||||
<i class="material-icons">add</i>
|
||||
</a>
|
||||
<a class="btn btn-primary btn-fab btn-fab-mini btn-round text-white" onclick="removePeriode()">
|
||||
<i class="material-icons">remove</i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -75,7 +75,7 @@ $sidebar = [
|
||||
'Liste nominative' => [
|
||||
'route' => 'admin.users',
|
||||
'icon' => 'fas fa-address-book',
|
||||
'perm' => 'stats_see',
|
||||
'perm' => 'cadet_list_see',
|
||||
'child' => null
|
||||
],
|
||||
'Logs' => [
|
||||
|
||||
@@ -20,7 +20,7 @@ Route::middleware('auth:api')->group(function () {
|
||||
Route::get('/schedule/events/modal/full/{id}/{db_type}','ScheduleController@loadModalFull')->middleware('perm:schedule_see');
|
||||
Route::get('/schedule/events/add/modal/{type}/{date}','ScheduleController@loadModalDefautType')->middleware('perm:schedule_add');
|
||||
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/course/{niveau}/{periode}/{event_type?}','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');
|
||||
@@ -34,6 +34,9 @@ Route::middleware('auth:api')->group(function () {
|
||||
/** Picture */
|
||||
Route::post('/picture/delete/{id}','PictureController@destroy')->middleware('perm:picture_delete');
|
||||
|
||||
/** Event Type */
|
||||
Route::get('/eventType/{id}','EventTypeController@toJson');
|
||||
|
||||
/** Message Route */
|
||||
Route::post('/message/delete', 'MessageController@destroy')->middleware('perm:msg_delete');
|
||||
|
||||
|
||||
@@ -94,6 +94,13 @@ Breadcrumbs::for('admin.config.schedule', function ($trail) {
|
||||
$trail->push('Instruction', route('admin.config.schedule'));
|
||||
});
|
||||
|
||||
// Admin > Config > Instruction > [EventType]
|
||||
Breadcrumbs::for('admin.config.schedule.event_type', function ($trail,$id) {
|
||||
$eventType = \App\EventType::findOrFail($id);
|
||||
$trail->parent('admin.config.schedule');
|
||||
$trail->push($eventType->name, route('admin.config.schedule.event_type',$id));
|
||||
});
|
||||
|
||||
// Admin > Config > Activite complementaire
|
||||
Breadcrumbs::for('admin.config.complementary-activity', function ($trail) {
|
||||
$trail->parent('admin.config.general');
|
||||
|
||||
@@ -69,8 +69,9 @@ Route::middleware(['auth'])->name('admin.')->group(function () {
|
||||
Route::post('/admin/user/edit/{id}' , 'UserController@update')->middleware('perm:user_edit');
|
||||
|
||||
/** Config */
|
||||
Route::get('/admin/config/instruction' , 'ScheduleController@index')->middleware('perm:config_edit')->name('config.schedule');
|
||||
Route::get('/admin/config/instruction/event_type/{id}' , 'EventTypeController@show')->middleware('perm:config_edit')->name('config.schedule.event_type');
|
||||
Route::get('/admin/config/instruction', 'ScheduleController@index')->middleware('perm:config_edit')->name('config.schedule');
|
||||
Route::get('/admin/config/instruction/event_type/{id}', 'EventTypeController@show')->middleware('perm:config_edit')->name('config.schedule.event_type');
|
||||
Route::patch('/admin/config/instruction/event_type/{id}', 'EventTypeController@update')->middleware('perm:config_edit');
|
||||
Route::patch('/admin/config/instruction' , 'ScheduleController@update')->middleware('perm:config_edit');
|
||||
Route::get('/admin/config/activity' , 'ComplementaryActivityController@index')->middleware('perm:config_edit')->name('config.complementary-activity');
|
||||
Route::get('/admin/config/activity/add' , 'ComplementaryActivityController@create')->middleware('perm:config_edit')->name('config.complementary-activity.add');
|
||||
|
||||
Reference in New Issue
Block a user