Big Calendar/Schedule update

This commit is contained in:
Mathieu Lagace
2019-08-18 17:26:49 -04:00
parent 3546298a08
commit cf5f7effbf
40 changed files with 33844 additions and 110 deletions

View File

@@ -7,10 +7,10 @@
<strong>Modification d'une activité</strong>
</div>
<div class="card-body">
<div class="row form-group">
<form class="w-100" method="POST" action="/admin/config/activity/edit/{{$activity->id}}">
<form method="POST" action="/admin/config/activity/edit/{{$activity->id}}">
<div class="row">
@csrf
<div class="col col-md-6" style="margin: auto;">
<div class="col-md-6" >
<div class="form-group">
<label for="name">Nom de l'activite</label>
<input type="text"
@@ -18,7 +18,7 @@
<small id="helpName" class="form-text text-muted">Veuillez entrer le nom de l'activité</small>
</div>
</div>
<div class="col col-md-3" style="margin: auto;">
<div class="col-md-3" >
<div class="form-group">
<label for="calendar_color">Couleur dans le calendrier</label>
<input type="text"
@@ -26,7 +26,7 @@
<small id="helpcalendar_color" class="form-text text-muted">Nom de la couleur en anglais ou <a href="https://htmlcolorcodes.com/fr/">valeur HTML</a></small>
</div>
</div>
<div class="col col-md-3" style="margin: auto;">
<div class="col-md-3" >
<div class="form-group">
<label for="calendar_icon">Icone dans le calendrier</label>
<input type="text"
@@ -35,53 +35,7 @@
<small id="helpcalendar_icon" class="form-text text-muted">Balise complete de l'icon <a href="https://fontawesome.com/v4.7.0/"> Font-Awesome</a></small>
</div>
</div>
<div class="col col-md-3" style="margin: auto;">
<div class="form-group">
<div class="col col-md-8">
<label for="text-input" class=" form-control-label">Obligatoire par défaut</label>
<small class="form-text text-muted">L'activitée est t-elle obligatoire par défaut lors de la création d'activité dans l'horaire</small>
</div>
<div class="col-md-4" style="margin: auto;">
<label for="disabled-input" class=" form-control-label"></label>
<label class="switch switch-3d switch-primary mr-3" style="margin-left: 3rem;">
<input id="is_mandatory" name="is_mandatory" class="switch-input" @if($activity->is_mandatory == 1) checked="true" @endif type="checkbox">
<span class="switch-label"></span><span class="switch-handle"></span>
</label>
</div>
</div>
</div>
<div class="col col-md-3" style="margin: auto;">
<div class="form-group">
<div class="col col-md-8">
<label for="text-input" class=" form-control-label">Promu sur la page d'accueil</label>
<small class="form-text text-muted">L'activitée doit-elle être visible sur la page d'accueil</small>
</div>
<div class="col col-md-4" style="margin: auto;">
<label for="disabled-input" class=" form-control-label"></label>
<label class="switch switch-3d switch-primary mr-3" style="margin-left: 3rem;">
<input id="is_promoted" name="is_promoted" class="switch-input" @if($activity->is_promoted == 1) checked="true" @endif type="checkbox">
<span class="switch-label"></span><span class="switch-handle"></span>
</label>
</div>
</div>
</div>
<div class="col col-md-3" style="margin: auto;">
<div class="form-group">
<label for="begin_time">Heure de début par défaut</label>
<input type="time"
class="form-control" name="begin_time" id="begin_time" aria-describedby="helpName" value="{{$activity->begin_time}}">
<small id="helpName" class="form-text text-muted">Heure de début par défaut lors de la création d'activité dans l'horaire</small>
</div>
</div>
<div class="col col-md-3" style="margin: auto;">
<div class="form-group">
<label for="end_time">Heure de fin par défaut</label>
<input type="time"
class="form-control" name="end_time" id="end_time" aria-describedby="helpName" value="{{$activity->end_time}}">
<small id="helpName" class="form-text text-muted">Heure de fin par défaut lors de la création d'activité dans l'horaire</small>
</div>
</div>
<div class="col col-md-6" style="margin: auto;">
<div class="col-md-6" >
<div class="form-group">
<label for="location">Emplacement par défaut</label>
<input type="text"
@@ -89,7 +43,49 @@
<small id="helpName" class="form-text text-muted">Emplacement par défaut de l'activité</small>
</div>
</div>
<div class="col col-md-6" style="margin: auto;">
<div class="col-md-3" >
<div class="form-group">
<label for="begin_time">Heure de début par défaut</label>
<input type="time"
class="form-control" name="begin_time" id="begin_time" aria-describedby="helpName" value="{{$activity->begin_time}}">
<small id="helpName" class="form-text text-muted">Heure de début par défaut lors de la création d'activité dans l'horaire</small>
</div>
</div>
<div class="col-md-3" >
<div class="form-group">
<label for="end_time">Heure de fin par défaut</label>
<input type="time"
class="form-control" name="end_time" id="end_time" aria-describedby="helpName" value="{{$activity->end_time}}">
<small id="helpName" class="form-text text-muted">Heure de fin par défaut lors de la création d'activité dans l'horaire</small>
</div>
</div>
<div class="col-md-6" >
<div class="form-group">
<div class="form-check">
<label class="form-check-label">
<input class="form-check-input" name="is_mandatory" type="checkbox" value="true" @if($activity->is_mandatory == 1) checked @endif>
L'activitée est t-elle obligatoire par défaut lors de la création d'activité dans l'horaire
<span class="form-check-sign">
<span class="check"></span>
</span>
</label>
</div>
</div>
</div>
<div class="col-md-6" >
<div class="form-group">
<div class="form-check">
<label class="form-check-label">
<input class="form-check-input" name="is_promoted" type="checkbox" value="true" @if($activity->is_promoted == 1) checked @endif>
L'activitée doit-elle être visible sur la page d'accueil
<span class="form-check-sign">
<span class="check"></span>
</span>
</label>
</div>
</div>
</div>
<div class="col-md-12 mt-3" >
<div class="form-group">
<label for="admin_desc">Description par défaut sur le calendrier</label>
<textarea type="text"
@@ -97,14 +93,14 @@
<small id="helpName" class="form-text text-muted">Description par défaut lors de la création d'activité dans l'horaire</small>
</div>
</div>
<div class="col col-md-6" style="margin: auto;">
<div class="col-md-6" >
<div class="form-group">
<a href="/admin/config/activity" class="btn btn-secondary">Annuler</a>
<button type="submit" class="btn btn-primary">Sauvegarder</button>
</div>
</div>
</form>
</div>
</div>
</form>
</div>
</div>
</div>

View File

@@ -10,10 +10,17 @@
<div class="row form-group">
@foreach ($activities as $activity)
<div class="col-md-6 p-2">
<div class="col col-md-8"><label for="text-input" class=" form-control-label">{{$activity->name}}</label><small class="form-text text-muted">L'horaire est t-il disponible publique sur la page d'accueil du site</small></div>
<div class="col col-md-4" style="margin: auto;">
<a href="/admin/config/activity/edit/{{$activity->id}}" class="btn btn-primary"><i class="fa fa-cog" aria-hidden="true"></i> Modifier</a>
<a class="btn btn-danger" onclick="delActivity({{$activity->id}})" ><i class="fa fa-times" aria-hidden="true" data-toggle="tooltip" data-placement="bottom" title="Supprimer"></i></a>
<div class="row m-auto">
<div class="col-md-8">
<label for="text-input" class=" form-control-label">{{$activity->name}}</label>
<small class="form-text text-muted">{{$activity->admin_desc}}</small>
</div>
<div class="col-md-3">
<div class="btn-group">
<a href="/admin/config/activity/edit/{{$activity->id}}" class="btn btn-primary"><i class="fa fa-cog" aria-hidden="true"></i> Modifier</a>
<button class="btn btn-danger" onclick="delActivity({{$activity->id}})" ><i class="fa fa-times" aria-hidden="true" data-toggle="tooltip" data-placement="bottom" title="Supprimer"></i></button>
</div>
</div>
</div>
</div>
@endforeach

View File

@@ -3,26 +3,42 @@
@section('content')
<div class="col-md-12">
<div class="card">
<div class="card-header">
Configuration Générale
<div class="card-header card-header-primary">
<h4>Configuration Générale</h4>
</div>
<div class="card-body">
<div class="row form-group">
<div class="col-md-6">
<div class="col col-md-8"><label for="text-input" class=" form-control-label">Horaire publique</label><small class="form-text text-muted">L'horaire est t-il disponible publique sur la page d'accueil du site</small></div>
<div class="col col-md-4" style="margin: auto;">
<label for="disabled-input" class=" form-control-label"></label>
<label class="switch switch-3d switch-primary mr-3" style="margin-left: 3rem;"><input id="is_schedule_public" name="is_schedule_public" class="switch-input" @if(\App\Config::getData('is_schedule_public') === "true") checked="true" @endif type="checkbox" onchange="saveChange('is_schedule_public')"><span class="switch-label"></span><span class="switch-handle"></span></label>
<div class="card-body mt-5">
<form action="/admin/config/general/edit" method="POST">
@csrf
<div class="row ml-2">
<div class="col-md-6">
<div class="form-check">
<label class="form-check-label">
<input class="form-check-input" name="is_schedule_public" type="checkbox" value="true" @if(\App\Config::getData('is_schedule_public') === "true") checked @endif>
L'horaire doit t-il etre disponible publique sur la page d'accueil du site
<span class="form-check-sign">
<span class="check"></span>
</span>
</label>
</div>
</div>
<div class="col-md-6">
<div class="form-check">
<label class="form-check-label">
<input class="form-check-input" name="is_schedule_build" type="checkbox" value="true" @if(\App\Config::getData('is_schedule_build') === "true") checked @endif>
L'horaire est t-il complet ? Si cette option est désactivé les utilisateurs ne reseverons pas de notification concernant l'horaire
<span class="form-check-sign">
<span class="check"></span>
</span>
</label>
</div>
</div>
<div class="col-md-12">
<button type="submit" class="btn btn-primary">Sauvegarder</button>
</div>
</div>
<div class="col-md-6">
<div class="col col-md-8"><label for="text-input" class=" form-control-label">Horaire complet</label><small class="form-text text-muted">L'horaire est t-il complet ? Si cette option est désactivé les utilisateurs ne reseverons pas de notification concernant l'horaire</small></div>
<div class="col col-md-4" style="margin: auto;">
<label for="disabled-input" class=" form-control-label"></label>
<label class="switch switch-3d switch-primary mr-3" style="margin-left: 3rem;"><input id="is_schedule_build" name="is_schedule_build" class="switch-input" @if(\App\Config::getData('is_schedule_build') === "true") checked="true" @endif type="checkbox" onchange="saveChange('is_schedule_build')"><span class="switch-label"></span><span class="switch-handle"></span></label>
</div>
</div>
</div>
</form>
</div>
</div>
</div>

View File

@@ -0,0 +1,54 @@
@extends('layouts.admin.main')
@section('content')
<div class="row">
<div class="card ">
<div class="card-header card-header-primary">
<h4 class="card-title">Ajouter un evenement a l'horaire</h4>
</div>
<div class="card-body ">
<form action="/admin/schedule/event/add" method="POST">
@csrf
<div class="row">
<div class="col-md-12">
<div class="form-group">
<label for="type">Type d'evenement</label>
<select class="form-control selectpicker" data-style="btn btn-link" name="type" id="type" onchange="switchType('{{$date}}')" required>
@foreach (\App\ComplementaryActivity::all() as $item)
<option value="{{$item->id}}">{{$item->name}}</option>
@endforeach
</select>
</div>
</div>
</div>
<div class="row" id="container">
</div>
<button type="submit" class="btn btn-primary mt-5">Sauvegarder</button>
</form>
</div>
</div>
</div>
@endsection
@section('custom_scripts')
<script src="/js/calendar.js"></script>
<script>
switchType('{{$date}}')
$('.datetimepicker').datetimepicker({
icons: {
time: "fa fa-clock-o",
date: "fa fa-calendar",
up: "fa fa-chevron-up",
down: "fa fa-chevron-down",
previous: 'fa fa-chevron-left',
next: 'fa fa-chevron-right',
today: 'fa fa-screenshot',
clear: 'fa fa-trash',
close: 'fa fa-remove'
}
});
</script>
@endsection

View File

@@ -0,0 +1,152 @@
<div class="col-md-12">
<div class="form-group">
<label for="name">Nom de l'evenement</label>
<input type="text" name="name" id="name" class="form-control" placeholder="" aria-describedby="nameHelp" value="{{$activity->name}}" required>
<small id="nameHelp" class="text-muted">Veuillez entrer le nom de l'evenement</small>
</div>
</div>
<div class="col-md-2">
<div class="form-group">
<label class="label-control">Date et Heure de debut</label>
<input name="begin" type="text" id="datetimepickerbegin" class="form-control datetimepicker" required/>
</div>
</div>
<div class="col-md-2">
<div class="form-group">
<label class="label-control">Date et Heure de fin</label>
<input name="end" type="text" id="datetimepickerend" class="form-control datetimepicker" required/>
</div>
</div>
<div class="col-md-5">
<div class="form-group">
<label for="name">Lieux</label>
<input type="text" name="location" id="location" class="form-control" placeholder="" aria-describedby="nameHelp" value="{{$activity->location}}" required>
<small id="nameHelp" class="text-muted">Veuillez entrer le nom de l'evenement</small>
</div>
</div>
<div class="col-md-3 m-auto">
<div class="form-group">
<div class="form-check">
<label class="form-check-label">
<input class="form-check-input" name="is_mandatory" type="checkbox" value="1"
@if ($activity->is_mandatory == 1)
checked
@endif required>
L'evenement est obligatoire
<span class="form-check-sign">
<span class="check"></span>
</span>
</label>
</div>
</div>
</div>
<div class="col-md-12">
<div class="form-group">
<label for="desc">Commentaire</label>
<textarea class="form-control" name="desc" id="desc" rows="6" required>{{$activity->admin_desc}}</textarea>
</div>
</div>
@if ($activity->id == 1)
<div class="col-md-12">
<div id="accordion" role="tablist">
@for ($i = 1; $i <= \App\Config::getData('admin_level_in_schedule_nb'); $i++)
<div class="card card-collapse">
<div class="card-header" role="tab" id="heading{{$i}}">
<h5 class="mb-0">
<a data-toggle="collapse" href="#collapse{{$i}}" aria-expanded="true" aria-controls="collapse{{$i}}">
Horaire Niveau {{$i}}
<i class="material-icons">keyboard_arrow_down</i>
</a>
</h5>
</div>
<div id="collapse{{$i}}" class="collapse" role="tabpanel" aria-labelledby="heading{{$i}}" data-parent="#accordion">
<div class="card-body">
@for ($p = 1; $p <= \App\Config::getData('admin_periode_nb'); $p++)
<h4 class="mt-3" >Periode {{$p}}</h4>
<div class="row">
<div class="col-sm-6 my-2">
<div class="form-group">
<label for="name">Nom du cours</label>
<input type="text" name="name_n{{$i}}_p{{$p}}" id="name_n{{$i}}_p{{$p}}" class="form-control" aria-describedby="nameHelp" required>
<small id="nameHelp" class="text-muted">Veuillez entrer le nom du cours</small>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<div class="form-group">
<label for="name">Instructeur</label>
<input type="text" name="instruc_n{{$i}}_p{{$p}}" id="instruc_n{{$i}}_p{{$p}}" class="form-control basicAutoComplete" aria-describedby="nameHelp" required>
<small id="nameHelp" class="text-muted">Veuillez entrer le nom de l'instructeur</small>
</div>
</div>
</div>
<div class="col-sm-6 my-2">
<div class="form-group">
<label for="name">OCOM</label>
<input type="text" name="ocom_n{{$i}}_p{{$p}}" id="ocom_n{{$i}}_p{{$p}}" class="form-control" aria-describedby="nameHelp" required>
<small id="nameHelp" class="text-muted">Veuillez entrer l'OCOM</small>
</div>
</div>
<div class="col-sm-6 my-2">
<div class="form-group">
<label for="name">Lieux</label>
<input type="text" name="loc_n{{$i}}_p{{$p}}" id="loc_n{{$i}}_p{{$p}}" class="form-control" placeholder="" aria-describedby="nameHelp" required>
<small id="nameHelp" class="text-muted">Veuillez entrer le lieux</small>
</div>
</div>
<div class="col-sm-12">
<button type="button" class="btn btn-primary btn-block" disabled>Réservation de materiel (Disponible une fois l'evenement sauvegarder)</button>
</div>
</div>
<hr>
@endfor
</div>
</div>
</div>
@endfor
</div>
</div>
@endif
<script>
var begin = "<?php echo $begin_time ?>";
var end = "<?php echo $end_time ?>";
$('#datetimepickerbegin').datetimepicker({
icons: {
time: "fa fa-clock-o",
date: "fa fa-calendar",
up: "fa fa-chevron-up",
down: "fa fa-chevron-down",
previous: 'fa fa-chevron-left',
next: 'fa fa-chevron-right',
today: 'fa fa-screenshot',
clear: 'fa fa-trash',
close: 'fa fa-remove'
},
date: new Date(begin)
});
$('#datetimepickerend').datetimepicker({
icons: {
time: "fa fa-clock-o",
date: "fa fa-calendar",
up: "fa fa-chevron-up",
down: "fa fa-chevron-down",
previous: 'fa fa-chevron-left',
next: 'fa fa-chevron-right',
today: 'fa fa-screenshot',
clear: 'fa fa-trash',
close: 'fa fa-remove'
},
date: new Date(end)
});
$('#desc').trumbowyg({
lang: 'fr'
});
$( ".basicAutoComplete" ).autocomplete({
source: '/api/user/list?api_token='+api_token
});
</script>

View File

@@ -22,7 +22,7 @@
</div>
<div class="row mt-4">
<div class="col-md-12">
{{$event->desc}}
{!!$event->desc!!}
</div>
</div>
@if (!$event->courses->isEmpty())
@@ -101,5 +101,4 @@
</div>
</div>
@endif
@endsection

View File

@@ -28,7 +28,7 @@
@endif
@endif
@if ($configs->where('name','is_schedule_public')->first()->state == 0)
@if (\App\Config::getData('is_schedule_public') === "false")
@if (\Auth::User()->getPerm('schedule_edit'))
<div class="alert alert-danger" role="alert">
Attention ! L'horaire n'est présentement pas visible par le publique ! <a href="/admin/config#schedule_public">Cliquer ici pour accéder aux options</a>
@@ -36,7 +36,7 @@
@endif
@endif
@if ($configs->where('name','is_schedule_build')->first()->state == 0)
@if (\App\Config::getData('is_schedule_public') === "false")
@if (\Auth::User()->getPerm('schedule_edit'))
<div class="alert alert-warning" role="alert">
Attention ! L'horaire n'est pas marqué comme complet, les utilisateurs ne receverons pas de notification concernant l'horaire <a href="/admin/config#schedule_build">Cliquer ici pour accéder aux options</a>

View File

@@ -23,6 +23,8 @@
<!-- Plugin CSS -->
<link href='/assets/fullcalendar/core/main.css' rel='stylesheet' />
<link href='/assets/fullcalendar/daygrid/main.css' rel='stylesheet' />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Trumbowyg/2.18.0/ui/trumbowyg.css">
<link rel="stylesheet" href="/assets/jquery-ui-1.12.1/jquery-ui.theme.css">
<!-- Custom CSS -->
<link rel="stylesheet" href="/css/custom.css">

View File

@@ -11,6 +11,8 @@
<script src="/js/plugins/sweetalert2.js"></script>
<!-- Plugin for the DateTimePicker, full documentation here: https://eonasdan.github.io/bootstrap-datetimepicker/ -->
<script src="/js/plugins/bootstrap-datetimepicker.min.js"></script>
<!-- Plugin for Select, full documentation here: http://silviomoreto.github.io/bootstrap-select -->
<script src="/js/plugins/bootstrap-selectpicker.js" ></script>
<!-- DataTables.net Plugin, full documentation here: https://datatables.net/ -->
<script src="/js/plugins/jquery.dataTables.min.js"></script>
<!-- Plugin for the Sliders, full documentation here: http://refreshless.com/nouislider/ -->
@@ -21,6 +23,11 @@
<script src="/js/plugins/chartist.min.js"></script>
<!-- Notifications Plugin -->
<script src="/js/plugins/bootstrap-notify.js"></script>
<script src="/assets/jquery-ui-1.12.1/jquery-ui.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Trumbowyg/2.18.0/trumbowyg.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Trumbowyg/2.18.0/langs/fr.js"></script>
<script src="/js/notify.js"></script>
<script>

View File

@@ -1,9 +1,9 @@
<div class="sidebar" data-background-color="black">
<div class="logo">
<a href="http://www.creative-tim.com" class="logo-mini">
<a href="/" class="logo-mini">
<img class="img-fluid" src="/assets/admin/images/favicon.png" alt="Logo">
</a>
<a href="http://www.creative-tim.com" class="simple-text logo-normal">
<a href="/" class="simple-text logo-normal">
C-CMS
</a>
</div>

View File

@@ -10,5 +10,16 @@
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Fermer</button>
<div class="col-md-6">
<div class="btn-group">
<a class="btn btn-primary" href="/admin/schedule/edit/{{$event->id}}" data-toggle="tooltip" data-placement="bottom" title="Modifier"><i class="material-icons">edit</i></a>
<a class="btn btn-primary" href="/admin/schedule/pdf/event/{{$event->id}}" target="_blank" data-toggle="tooltip" data-placement="bottom" title="Imprimer"><i class="material-icons">print</i></a>
<a class="btn btn-danger" data-toggle="tooltip" data-placement="bottom" title="Supprimer"><i class="material-icons">close</i></a>
</div>
</div>
<div class="col-md-6 text-right">
<div class="btn-group">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Fermer</button>
</div>
</div>
</div>

View File

@@ -65,7 +65,7 @@
events: '/api/schedule/events',
eventClick: function(info) {
console.log(info.event.id)
$.get( "/api/schedule/events/" + info.event.id + "/"+ info.event.extendedProps.extraParams.db_type + "/modal", function( data ) {
$.get( "/api/schedule/events/modal/" + info.event.id + "/"+ info.event.extendedProps.extraParams.db_type, function( data ) {
$( "#modal-content" ).html( data );
});
$('#schedulemodal').modal('toggle')

View File

@@ -25,7 +25,7 @@
</div>
<div class="row mt-4">
<div class="col-md-12">
{{$event->desc}}
{!!$event->desc!!}
</div>
</div>
</div>