From f104c1b61b9a3a007d9df1d674bd35168bf0520f Mon Sep 17 00:00:00 2001 From: "George Frederick \"Buzz\" Beurling" Date: Thu, 16 Apr 2020 18:32:02 -0400 Subject: [PATCH] Ajout de la modification des event_type --- app/EventType.php | 29 ++ app/GoogleDriveFile.php | 75 ++-- app/Http/Controllers/EventTypeController.php | 88 +++- .../Controllers/ScheduleEditorController.php | 19 +- app/Permission.php | 9 + public/js/plugins/schedule/editor.js | 32 +- public/js/plugins/schedule/editorv2.js | 393 ++++++++++++++++++ .../views/admin/event_type/show.blade.php | 171 +++++++- .../admin/schedule/editor/course.blade.php | 21 +- .../admin/schedule/editor/template.blade.php | 6 + .../views/layouts/admin/sidebar.blade.php | 2 +- routes/api.php | 5 +- routes/breadcrumbs.php | 7 + routes/web.php | 5 +- 14 files changed, 797 insertions(+), 65 deletions(-) create mode 100644 public/js/plugins/schedule/editorv2.js diff --git a/app/EventType.php b/app/EventType.php index 9d98e112..29fd3b92 100644 --- a/app/EventType.php +++ b/app/EventType.php @@ -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']); + } } diff --git a/app/GoogleDriveFile.php b/app/GoogleDriveFile.php index ea2851d3..d0ef1bf4 100644 --- a/app/GoogleDriveFile.php +++ b/app/GoogleDriveFile.php @@ -337,41 +337,60 @@ class GoogleDriveFile extends Model $user = \Auth::user(); $sidebarArray = []; $dirList = \App\GoogleDriveFile::all(); - if ($dirList->where('path','=','.Privé/.Cadet')->first()->canAuthUser()) + $temp = $dirList->where('path','=','.Privé/.Cadet')->first(); + if ($temp != null) { - $sidebarArray['Cadet'] = [ - 'route' => 'admin.files.cadet', - 'icon' => 'fas fa-folder-open', - 'perm' => null, - 'child' => null - ]; + if ($dirList->where('path','=','.Privé/.Cadet')->first()->canAuthUser()) + { + $sidebarArray['Cadet'] = [ + 'route' => 'admin.files.cadet', + 'icon' => 'fas fa-folder-open', + 'perm' => null, + 'child' => null + ]; + } } - if ($dirList->where('path','=','.Privé/.Staff')->first()->canAuthUser()) + + $temp = $dirList->where('path','=','.Privé/.Staff')->first(); + if ($temp != null) { - $sidebarArray['Staff'] = [ - 'route' => 'admin.files.staff', - 'icon' => 'fas fa-folder-open', - 'perm' => null, - 'child' => null - ]; + if ($dirList->where('path','=','.Privé/.Staff')->first()->canAuthUser()) + { + $sidebarArray['Staff'] = [ + 'route' => 'admin.files.staff', + 'icon' => 'fas fa-folder-open', + 'perm' => null, + 'child' => null + ]; + } } - if ($dirList->where('path','=','.Privé/.ETAMAS')->first()->canAuthUser()) + + $temp = $dirList->where('path','=','.Privé/.ETAMAS')->first(); + if ($temp != null) { - $sidebarArray['ETAMAS'] = [ - 'route' => 'admin.files.etamas', - 'icon' => 'fas fa-folder-open', - 'perm' => null, - 'child' => null - ]; + if ($dirList->where('path','=','.Privé/.ETAMAS')->first()->canAuthUser()) + { + $sidebarArray['ETAMAS'] = [ + 'route' => 'admin.files.etamas', + 'icon' => 'fas fa-folder-open', + 'perm' => null, + 'child' => null + ]; + } } - if ($dirList->where('path','=','.Privé/.Officier')->first()->canAuthUser()) + + $temp = $dirList->where('path','=','.Privé/.Officier')->first(); + if ($temp != null) { - $sidebarArray['Officier'] = [ - 'route' => 'admin.files.officier', - 'icon' => 'fas fa-folder-open', - 'perm' => null, - 'child' => null - ]; + if ($dirList->where('path','=','.Privé/.Officier')->first()->canAuthUser()) + { + $sidebarArray['Officier'] = [ + 'route' => 'admin.files.officier', + 'icon' => 'fas fa-folder-open', + 'perm' => null, + 'child' => null + ]; + } } $sidebarArray['Publique'] = [ 'route' => 'admin.files.publique', diff --git a/app/Http/Controllers/EventTypeController.php b/app/Http/Controllers/EventTypeController.php index 55f99d88..66649050 100644 --- a/app/Http/Controllers/EventTypeController.php +++ b/app/Http/Controllers/EventTypeController.php @@ -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(); + } } diff --git a/app/Http/Controllers/ScheduleEditorController.php b/app/Http/Controllers/ScheduleEditorController.php index 324325c3..9c8840bd 100644 --- a/app/Http/Controllers/ScheduleEditorController.php +++ b/app/Http/Controllers/ScheduleEditorController.php @@ -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) diff --git a/app/Permission.php b/app/Permission.php index 6f2d4330..5c47664a 100644 --- a/app/Permission.php +++ b/app/Permission.php @@ -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', diff --git a/public/js/plugins/schedule/editor.js b/public/js/plugins/schedule/editor.js index 7bf39432..21dd7686 100644 --- a/public/js/plugins/schedule/editor.js +++ b/public/js/plugins/schedule/editor.js @@ -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") { diff --git a/public/js/plugins/schedule/editorv2.js b/public/js/plugins/schedule/editorv2.js new file mode 100644 index 00000000..b4444e2f --- /dev/null +++ b/public/js/plugins/schedule/editorv2.js @@ -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 '
\n' + + '
\n' + + ' \n' + + ' Niveau/Periode\n' + + ' \n' + + '
\n' + + headerHTML + + ' \n' + + '
\n'+ + periodesHTML + + '
\n' + + ' \n' + + '
\n'; +} + +function getHeader(level_id,level_name) +{ + return '
\n' + + '
\n' + + '
\n' + + '
\n' + + ' \n' + + ' \n' + + '
\n' + + '
\n' + + ' \n' + + '
\n' + + '
' +} + +function getPeriode(id,periode,niveaux) { + let temp = ''; + + $.each(niveaux, function (index, value) { + temp = temp+getCourse(index,id); + }); + + return '
\n' + + '
\n' + + '
\n' + + '
\n' + + '
\n' + + ' \n' + + ' \n' + + '
\n' + + '
\n' + + ' \n' + + '
\n' + + '
\n' + + '
\n' + + '
\n' + + ' \n' + + ' \n' + + '
\n' + + '
\n' + + '
\n' + + '
\n' + + ' \n' + + ' \n' + + '
\n' + + '
\n' + + '
\n' + + '
\n' + + temp + + '
\n' + + '\n' + + '
\n' + + '
' +} + +function getCourse(level_id,periode_id) +{ + level_id++; + periode_id++; + return '
\n' + + '\n' + + '
\n' + + '
\n' + + '
\n' + + '
\n' + + ' \n' + + ' \n' + + '
\n' + + '
\n' + + '
\n' + + '
\n' + + '
\n' + + '
\n' + + '
\n' + + ' \n' + + ' \n' + + '
\n' + + '
\n' + + '
\n' + + '
\n' + + '
\n' + + ' \n' + + '
\n' + + ' \n' + + '
\n' + + '
\n' + + '
\n' + + '
\n' + + ' \n' + + ' \n' + + '
\n' + + '
\n' + + '
\n' + + '
\n' + + ' \n' + + ' \n' + + '
\n' + + '
\n' + + '
\n' + + '
\n' + + '
\n' + + ' \n' + + '
\n' + + ' \n' + + '
\n' + + '
\n' + + '
\n' + + '
\n' + + '
\n'+ + '
'; +} + +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); +} \ No newline at end of file diff --git a/resources/views/admin/event_type/show.blade.php b/resources/views/admin/event_type/show.blade.php index d1e4e4fd..534196b2 100644 --- a/resources/views/admin/event_type/show.blade.php +++ b/resources/views/admin/event_type/show.blade.php @@ -12,30 +12,117 @@ @method('PATCH') @csrf
-
+
- +
-
+
- + +
+
+
+
+
- +
- +
+
+
+ +
+ + +
+
+
+
+
+ +
+ + +
+
+
+
+ +
+ +
+
+
+
+ +
+ +
+
+
+
+
+ + +
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+
+
+
+ @loaderDot +
+
+
+
@@ -48,8 +135,80 @@ @endsection @section('custom_scripts') + + + + @endsection \ No newline at end of file diff --git a/resources/views/admin/schedule/editor/course.blade.php b/resources/views/admin/schedule/editor/course.blade.php index ec3bf608..3564d020 100644 --- a/resources/views/admin/schedule/editor/course.blade.php +++ b/resources/views/admin/schedule/editor/course.blade.php @@ -1,17 +1,6 @@
-
-
- -
-
- Plan de cours non remis -
-
diff --git a/resources/views/layouts/admin/sidebar.blade.php b/resources/views/layouts/admin/sidebar.blade.php index 855ac61f..82210c6f 100644 --- a/resources/views/layouts/admin/sidebar.blade.php +++ b/resources/views/layouts/admin/sidebar.blade.php @@ -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' => [ diff --git a/routes/api.php b/routes/api.php index 04831bee..44f7ec3d 100644 --- a/routes/api.php +++ b/routes/api.php @@ -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'); diff --git a/routes/breadcrumbs.php b/routes/breadcrumbs.php index 501c12ea..292b725a 100644 --- a/routes/breadcrumbs.php +++ b/routes/breadcrumbs.php @@ -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'); diff --git a/routes/web.php b/routes/web.php index 0c9a9ebb..86435138 100644 --- a/routes/web.php +++ b/routes/web.php @@ -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');