Skip to content
Snippets Groups Projects
Commit 47dc0d45 authored by DELARUELLE Myriam's avatar DELARUELLE Myriam
Browse files

Début select groupes

parent edc57a0e
Branches
Tags
No related merge requests found
......@@ -61,8 +61,8 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
//Evenement pour le selectall : créé une seule fois au chargement de la page
registerSelectAllActivitiesFilter:function(){
$('.selectall').click(function() {
if ($(".selectall").is(':checked')) {
$('.selectallactivities').click(function() {
if ($(".selectallactivities").is(':checked')) {
checkAllActivitiesFilter();
displayActivities();
} else {
......@@ -81,6 +81,7 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
initActivityFilter(false);
displayTotalActivitiesFilter(false);
displayActivities(false);
initGroupFilter(false)
changeSection(false);
reloadTable(data);
......@@ -132,12 +133,14 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
function changeGroup(){
completeUrl=getCompleteUrl();
loadMessage("loading");
$.ajax({ url: completeUrl,
data: {action: 'test'},
type: 'post',
success: function(request) {
console.log(request);
data=calcPercentage(JSON.parse(request));
initGroupFilter();
changeSection();
}
});
......@@ -246,11 +249,11 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
html="";
for (var i = 0; i<modules.length;i++){
if(modules[i].visible){
html+='<li><label class="checkbox"><input type="checkbox" name="options[]" checked value='+modules[i].id+' class="option justone">'+modules[i].displayname+'</label></li>';
html+='<li><label class="checkbox"><input type="checkbox" name="options[]" checked value='+modules[i].id+' class="option justone-activity">'+modules[i].displayname+'</label></li>';
}
}
$(".iena-dynamic-options").html(html);
$(".iena-dynamic-activities").html(html);
registerActivityFilter();
checkAllActivitiesFilter();
}
......@@ -530,16 +533,16 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
//On va recharger dynamiquement les options donc on doit recréer les événements à chaque fois qu'on change de section
function registerActivityFilter(){
$("input[type='checkbox'].justone").on('click', function(e){
$("input[type='checkbox'].justone-activity").on('click', function(e){
e.stopPropagation();
var a = $("input[type='checkbox'].justone");
var a = $("input[type='checkbox'].justone-activity");
if(a.length == a.filter(":checked").length){
$('.selectall').prop('checked', true);
$('.selectallactivities').prop('checked', true);
$(".select-text").html(' Deselect');
}
else {
$('.selectall').prop('checked', false);
$('.selectallactivities').prop('checked', false);
$(".select-text").html(' Select');
}
displayTotalActivitiesFilter();
......@@ -571,14 +574,14 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
function initActivityFilter(){
if(localStorage.activities){
var checkedActivities=JSON.parse(localStorage.activities);
var activities=$("input[type='checkbox'].justone");
if($("input[type='checkbox'].justone[value="+checkedActivities[0]+"]").length > 0){
var activities=$("input[type='checkbox'].justone-activity");
if($("input[type='checkbox'].justone-activity[value="+checkedActivities[0]+"]").length > 0){
if(activities.length===checkedActivities.length ){
$(".selectall").prop("checked", true);
$("input[type='checkbox'].justone").prop("checked", true);
$(".selectallactivities").prop("checked", true);
$("input[type='checkbox'].justone-activity").prop("checked", true);
}
else{
$(".selectall").prop("checked", false);
$(".selectallactivities").prop("checked", false);
for(var i=0; i<activities.length; i++){
if(checkedActivities.includes(activities[i].value)){
activities[i].checked=true;
......@@ -598,11 +601,60 @@ define(['jquery', 'core/ajax', 'core/templates', 'core/str'],
//Coche toutes les activités quand on change de section
function checkAllActivitiesFilter(){
$('.selectall').prop('checked', true);
$('.selectallactivities').prop('checked', true);
$('.option').prop('checked', true);
displayTotalActivitiesFilter();
$(".select-text").html(' Deselect');
}
function registerGroupFilter(){
$("input[type='checkbox'].justone-group").on('click', function(e){
e.stopPropagation();
var a = $("input[type='checkbox'].justone-group");
if(a.length == a.filter(":checked").length){
$('.selectallgroups').prop('checked', true);
$(".select-text").html(' Deselect');
}
else {
$('.selectallgroups').prop('checked', false);
$(".select-text").html(' Select');
}
//displayTotalActivitiesFilter();
//displayActivities();
});
}
function initGroupFilter(){
if(localStorage.groups){
var checkedGroups=JSON.parse(localStorage.groups);
var groups=$("input[type='checkbox'].justone-group");
if($("input[type='checkbox'].justone-group[value="+checkedGroups[0]+"]").length > 0){
if(groups.length===checkedGroups.length ){
$(".selectallgroups").prop("checked", true);
$("input[type='checkbox'].justone-group").prop("checked", true);
}
else{
$(".selectallgroups").prop("checked", false);
for(var i=0; i<groups.length; i++){
if(checkedGroups.includes(groups[i].value)){
groups[i].checked=true;
}
else{
groups[i].checked=false;
}
}
}
}
}
//displayTotalActivitiesFilter();
//displayActivities();
}
});
......@@ -312,7 +312,6 @@ class format_iena extends format_topics {
* @return null|moodle_url
*/
public function get_view_url($section, $options = array()) {
var_dump("on récupère l'url");
global $CFG;
$course = $this->get_course();
$url = new moodle_url('/course/view.php', array('id' => $course->id));
......
......@@ -56,7 +56,7 @@ function init_page($course) {
}
function get_groups($context, $activegroupid, $groups) {
function get_groups($context, $activegroupids, $groups) {
global $USER, $COURSE;
// Groupe du GET provenant du sélecteur de la page du cours
// ou premier groupe de l'utilisateur, ou groupe 0 (tous les groupes).
......@@ -66,14 +66,16 @@ function get_groups($context, $activegroupid, $groups) {
$currentusergroups = [];
$othergroups = [];
// Si pas de groupe dans le get ou groupe 0 (tous) mais pas le droit => premier groupe existant du user ou groupe 0 (tous).
if ($activegroupid == null || ($activegroupid == 0 &&
/*if ($activegroupid == null || ($activegroupid == 0 &&
!has_capability('course/iena:suivi_edit', $context, $USER->id)) ) {
if ( count($currentusergroupsids) == 0 ) {
$activegroupid = 0;
} else {
$activegroupid = $currentusergroupsids[0];
}
}
}*/
// Groupes du cours avec id, nom et liste des id utilisateur de tous les
// membres (3 clefs d'un tableau de groupes : id, name, member).
......@@ -81,10 +83,10 @@ function get_groups($context, $activegroupid, $groups) {
foreach ($groups as $group) {
// Récupération du nom du group actif au passage.
if ( $group->id == $activegroupid ) {
/*if ( $group->id == $activegroupid ) {
$activegroupname = $group->name;
$group->selected = 'selected';
}
}*/
if (in_array($group->id, $currentusergroupsids)) {
$currentusergroups[] = $group;
} else {
......@@ -101,7 +103,7 @@ function get_groups($context, $activegroupid, $groups) {
// Formate l'achèvement d'activités pour le tableau de suivi. Pour chaque étudiant, on aura
// dans le bon ordre la liste des modules et le completionstate.
function format_progress($progress, $modules, $groups, $activegroupid, $activesectionid) {
function format_progress($progress, $modules, $groups, $activegroupids, $activesectionid) {
global $CFG, $COURSE;
$students = array();
foreach ($progress as $proginfo) {
......@@ -333,10 +335,10 @@ if (!has_capability('course/iena:suivi', $context = context_course::instance($co
exit;
}
if (isset($_GET['groupid'])) {
$activegroupid = $_GET['groupid'];
if (isset($_POST['groupids'])) {
$activegroupids = $_POST['groupids'];
} else {
$activegroupid = 0;
$activegroupids = [0];
}
/*$progressrequest = $completion->get_progress_all(
......@@ -352,20 +354,25 @@ if (isset($_GET['groupid'])) {
*/
$cache = cache::make('format_iena', 'students');
if($cache->get($activegroupid) !== false){
$progress=$cache->get($activegroupid);
if($cache->get($activegroupids) !== false){
$progress=$cache->get($activegroupids);
}
else{
$progressrequest = $completion->get_progress_all(
'',
array(),
$activegroupid,
'u.lastname ASC, u.firstname ASC',
'',
'',
$context
);
$progress=$cache->set($activegroupid, $progressrequest);
$arrayprogressgroups=array();
//for($i=0; $i<count($activegroupids); $i++){
$progressrequest = $completion->get_progress_all(
'',
array(),
0,
'u.lastname ASC, u.firstname ASC',
'',
'',
$context
);
//array_push($arrayprogressgroups, $progressrequest);
//}
$progress=$cache->set($activegroupids, $progressrequest);
}
......@@ -452,30 +459,19 @@ if (isset($_POST['action']) && $_POST['action'] == "details") {
else if (isset($_POST['action']) && !empty($_POST['action'])) {
// Si on change les filtres.
$data = [];
$progress=$cache->get($activegroupid);
$progress=$cache->get($activegroupids);
$modules = get_activities($completion, $activesectionid);
$data = set_data($data, $modules, $progress, $groups, $activegroupid, $activesectionid, $listoptions);
$data = set_data($data, $modules, $progress, $groups, $activegroupids, $activesectionid, $listoptions);
echo json_encode($data);
} else {
//Si on cherche les détails d'une activité
init_page($course, $PAGE);
echo $OUTPUT->header();
/*$progress = $completion->get_progress_all(
'',
array(),
0,
'u.lastname ASC, u.firstname ASC',
'',
'',
$context
);
$result = $cache->set('key', $progress);*/
$progress=$cache->get($activegroupid);
$progress=$cache->get($activegroupids);
$data = [];
//Si la complétion du cours n'est pas activée on redirige l'enseignant vers l'interface pour l'activer
if(!$COURSE->enablecompletion){
......@@ -490,7 +486,7 @@ else if (isset($_POST['action']) && !empty($_POST['action'])) {
$modules = get_activities($completion, $activesectionid);
//Répartit les groupes en "mes groupes" et "les groupes dont je ne fais pas partie"
$groupsall = get_groups($context, $activegroupid, $groups);
$groupsall = get_groups($context, $activegroupids, $groups);
if (isset($groupsall->current_user_groups) && !empty($groupsall->current_user_groups)) {
$currentusergroups = $groupsall->current_user_groups;
......@@ -499,7 +495,7 @@ else if (isset($_POST['action']) && !empty($_POST['action'])) {
$sections = get_sections($activesectionid);
$data = set_filters($data, $filters, $symbols, $sections, array_values($groups), $groupsall->current_user_groups, $groupsall->othergroups, $activesectionid);
$data = set_data($data, $modules, $progress, $groups, $activegroupid, $activesectionid, $listoptions);
$data = set_data($data, $modules, $progress, $groups, $activegroupids, $activesectionid, $listoptions);
if (isset($_GET["msg_success"])) {
$msg = $_GET["msg_success"];
......
......@@ -55,16 +55,17 @@
<button class="btn btn-default dropdown-toggle" type="button" data-toggle="dropdown"><span class="dropdown-text">{{# str }} allActivities, format_iena {{/ str}}</span>
<span class="caret"></span></button>
<ul class="dropdown-menu dropdown-menu-form" id="iena-activities-dropdown">
<li><label class="checkbox"><input type="checkbox" class="selectall" checked value='all'>Toutes les activités</label></li>
<li class="divider"></li>
<ul class="iena-dynamic-options">
{{#modules}}
{{#visible}}
<li><label class="checkbox"><input type="checkbox" name="options[]" value={{id}} class="option justone">{{displayname}}</label></li>
{{/visible}}
{{/modules}}
<li><label class="checkbox">
<input type="checkbox" class="selectallactivities" checked value='all'>Toutes les activités</label></li>
<li class="divider"></li>
<ul class="iena-dynamic-activities">
{{#modules}}
{{#visible}}
<li><label class="checkbox"><input type="checkbox" name="options[]" value={{id}} class="option justone-activity">{{displayname}}</label></li>
{{/visible}}
{{/modules}}
</ul>
</ul>
</ul>
</div>
</div>
......@@ -74,7 +75,39 @@
<div class="input-group-prepend">
<div class="input-group-text">Groupes</div>
</div>
<select class="custom-select mr-sm-2" id="group-select" name="groupid">
<div class="dropdown mr-sm-2 iena-custom-dropdown" id="group-select" name="groupid">
<button class="btn btn-default dropdown-toggle" type="button" data-toggle="dropdown">
<span class="dropdown-text">Tous les groupes</span>
<span class="caret"></span></button>
<ul class="dropdown-menu dropdown-menu-form" id="iena-group-dropdown">
<li>
<label class="checkbox">
<input type="checkbox" class="selectallgroups" checked value='0' {{default_group}}>Tous les groupes</label>
</li>
<li class="divider"></li>
<optgroup label="Mes groupes">
</optgroup>
<ul class="iena-dynamic-options">
{{#current_user_groups}}
<li><label class="checkbox"><input type="checkbox" name="groupoptions[]" value={{id}} class="groupe-option justone-group">{{name}}</label></li>
{{/current_user_groups}}
</ul>
<optgroup label="Autres groupes">
</optgroup>
{{#othergroups}}
<li><label class="checkbox"><input type="checkbox" name="groupoptions[]" value={{id}} class="groupe-option justone-group">{{name}}</label></li>
{{/othergroups}}
</ul>
</div>
<!--<select class="custom-select mr-sm-2" id="group-select" name="groupid">
<option value="0" {{default_group}}>Tous</option>
......@@ -93,7 +126,8 @@
</select>
</select>-->
</div>
<label class="sr-only" for="filter-select">Filtre %</label>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment