diff --git a/CHANGELOG.md b/CHANGELOG.md index 0d6f8e8ad236f2fe2dc88a0822e08d96f9421183..b2f441cb74443ff4475e413ca49c74d2f6b5b81b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -89,4 +89,17 @@ Le style n'est plus inclus directement dans le PHP, mais placé dans le fichier La taille des éléments de l'entête est modifiée pour qu'elle soit moins massive. +Modification du label d'accès au suivi des étudiants lorsqu'un groupe a été sélectionné pour harmonier avec aucune sélection (suivi et suivi étudiants au profit de suivi étudiants). + +## Tableau de suivi + +Si aucune donnée n'est disponible dans le tableau, alors un message l'indique au lieu de présenter un tableau vide. + +Sélectionner toute la liste ne sélectionne plus que les étudiants en effet affichés, au lieu de sélectionner également les étudiants qui n'y figurent pas à cause de l'application d'un filtre. Après avoir sélectionné tout, on ne peut pas changer de filtre et sélectionner tout pour le nouveau résultat du filtre appliqué, mais seulement désélectionner tout. Par exemple, il n'est pas possible de sélectionner tous < 25% puis tout > 75%. + +Lors de l'envoi d'un message à certains étudiants sélectionnés, le nombre d'étudiants concernés est affiché dans le titre. + +Lors de l'envoi d'un message à certains étudiants sélectionnés, si aucun destinataire n'a été sélectionné, un message l'indique et l'envoi est indisponible. Un bouton permet de revenir à la page précédente. + +Correction du fait que le filtre affichait >=0 au lieu de >0. diff --git a/renderer.php b/renderer.php index 8820a1650602ecdf95b961784c5214961065d090..5306fa309bff7eb325106d53c79855b624a6012a 100644 --- a/renderer.php +++ b/renderer.php @@ -574,7 +574,7 @@ foreach ($htmlsection as $section) { $view .= "</div>"; foreach ($course_groups as $group) { $view .="<div onclick='change_grouplink(this)' style=\"display:none;\" class=\"nb_pers set_height id_groupe".$group->id."\">"; - $view .= "Suivi"; + $view .= "Suivi étudiants"; $view .= "</div>"; } $view .="</a>"; diff --git a/view/view_send_message.php b/view/view_send_message.php index eac4c06c8dc1dfb98d4ded9fa2e56d4fc5ab7fff..4945c9c1ffa6694f6552b15b78b411e8220c3a96 100644 --- a/view/view_send_message.php +++ b/view/view_send_message.php @@ -44,35 +44,43 @@ { global $DB, $CFG, $COURSE; - - $content = "<h2>Envoi d'un message</h2> - <p>Envoi d'un message à tous les étudiants précédemment sélectionnés. Les informations suivantes seront automatiquement ajoutées au message : nom du cours, lien vers le cours, nom du l'enseignant émetteur du message (vous). </p> - <p>L'étudiant recevra le message dans le chat et sera notifié par mail s'il n'est pas connecté au moment où le message est envoyé.</p>"; - $mform = $this->_form; - $description = ""; - $courseID = required_param('courseid', PARAM_INT); - $mform->addElement('editor', 'summary', get_string('summary', 'format_iena')); - $mform->setType('summary', PARAM_RAW); - $mform->addRule('summary', get_string('error'), 'required', null, null, false, false); - $mform->setDefault('summary', array('text' => $description)); - - $content .= "<form class=\"m-t-1\" action=\"send_message_post.php?courseid=" . $COURSE->id . "\" method=\"post\"> - <fieldset> - <div class=\"form-group\">"; - $temp = $mform->toHtml(); - //Del <form> - $temp = substr($temp, (strpos($temp, '>') + 1)); - $temp = substr($temp, 0, -7); + $nb = $usersID != "" ? count( explode(",", $usersID) ) : 0; + + if ( $nb == 0 ) { + $content = "<div class='alert alert-warning'><h2>Attention</h2><p>Vous n'avez sélectionné aucun destinataire pour votre message.</p><a class='btn btn-secondary' href='". $_SERVER['HTTP_REFERER'] ."'>Retour</a></div>"; + } else { + + $content = "<h2>Envoi d'un message à ". $nb ." personnes</h2> + <p>Envoi d'un message à tous les étudiants précédemment sélectionnés. Les informations suivantes seront automatiquement ajoutées au message : nom du cours, lien vers le cours, nom du l'enseignant émetteur du message (vous). </p> + <p>L'étudiant recevra le message dans le chat et sera notifié par mail s'il n'est pas connecté au moment où le message est envoyé.</p>"; + + $mform = $this->_form; + $description = ""; + $courseID = required_param('courseid', PARAM_INT); + $mform->addElement('editor', 'summary', get_string('summary', 'format_iena')); + $mform->setType('summary', PARAM_RAW); + $mform->addRule('summary', get_string('error'), 'required', null, null, false, false); + $mform->setDefault('summary', array('text' => $description)); + + $content .= "<form class=\"m-t-1\" action=\"send_message_post.php?courseid=" . $COURSE->id . "\" method=\"post\"> + <fieldset> + <div class=\"form-group\">"; + $temp = $mform->toHtml(); - $content .= $temp; - $content .= "<input type='hidden' name='usersid' value='" . $usersID . "'>"; - $link_annuler = $CFG->wwwroot . "/course/view.php?id=" . $courseID; - $content .= '<section class="section m-t-1"> - <button type="submit" class="btn btn-primary">Envoyer à tous</button> - <a href=\' ' . $link_annuler . ' \' class=\'btn btn-secondary\'>Annuler </a> - </section>'; - $content .= "</form>"; + $temp = substr($temp, (strpos($temp, '>') + 1)); + $temp = substr($temp, 0, -7); + + $content .= $temp; + $content .= "<input type='hidden' name='usersid' value='" . $usersID . "'>"; + $link_annuler = $CFG->wwwroot . "/course/view.php?id=" . $courseID; + $content .= '<section class="section m-t-1"> + <button type="submit" class="btn btn-primary">Envoyer à tous</button> + <a href=\' ' . $link_annuler . ' \' class=\'btn btn-secondary\'>Annuler </a> + </section>'; + $content .= "</form>"; + + } return $content; diff --git a/view/view_suivi_unit3.php b/view/view_suivi_unit3.php index 4fb8dd812d77ff2cbaa1ef4c5f9059ee4b968394..8529dbb8c573222edecd080050a083cf6cd8962c 100644 --- a/view/view_suivi_unit3.php +++ b/view/view_suivi_unit3.php @@ -37,13 +37,15 @@ $groups = groups_get_all_groups($COURSE->id, 0, 0, 'g.*', false); $active_group_id = $_GET['groupid']; // @TODO à supprimer si pas utilisé dans le JS (mettre dans la clause IF pour éviter un appel inutile si le GET existe) $current_user_groups_ids = groups_get_user_groups($COURSE->id, $USER->id)[0]; -if ($active_group_id == NULL) { +/* 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 ($active_group_id == NULL || ($active_group_id == 0 && !has_capability('course/iena:suivi_edit', $context, $USER->id)) ) { if ( count($current_user_groups_ids) == 0 ) { $active_group_id = 0; } else { $active_group_id = $current_user_groups_ids[0]; } } + $current_user_groups = []; $active_group_name = ""; foreach ($groups as $group) { @@ -302,7 +304,7 @@ th.th-rotate > div > span { "<25" => "<25%", ">50" => ">=50%", ">25" => ">=25%", - ">0" => ">=0%", + ">0" => ">0%", ]; foreach ($filters as $value => $name) { if ( $value == $filter ) { @@ -318,24 +320,24 @@ th.th-rotate > div > span { <!-- <label class="my-1 mr-2" for="filter-select">Filtre %</label> <select class="custom-select my-1 mr-sm-2" id="filter-select" name="filter"> <?php - $filters = [ - "all" => "Tous", - "=100" => "100%", - "=0" => "0%", - "<100" => "<100%", - "<50" => "<50%", - "<25" => "<25%", - ">50" => ">50%", - ">25" => ">25%", - ">0" => ">0%", - ]; - foreach ($filters as $value => $name) { - if ( $value == $filter ) { - echo "<option selected='selected' value='$value'>$name</option>"; - } else { - echo "<option value='$value'>$name</option>"; - } - } + // $filters = [ + // "all" => "Tous", + // "=100" => "100%", + // "=0" => "0%", + // "<100" => "<100%", + // "<50" => "<50%", + // "<25" => "<25%", + // ">50" => ">50%", + // ">25" => ">25%", + // ">0" => ">0%", + // ]; + // foreach ($filters as $value => $name) { + // if ( $value == $filter ) { + // echo "<option selected='selected' value='$value'>$name</option>"; + // } else { + // echo "<option value='$value'>$name</option>"; + // } + // } ?> </select> --> @@ -354,6 +356,8 @@ th.th-rotate > div > span { <a href="#" class="select_all_studs">Sélectionner tout</a> || <a href="#" class="send_msg_sel">Message aux étudiants sélectionnés</a> </div> +<div id="no_result" class="alert alert-warning">Aucun étudiants trouvé. Vérifiez la section, le groupe et le filtre choisi.</div> + <table id="suivi"> <thead> <tr id="modules" style=""> @@ -393,6 +397,24 @@ var data = { set_table_body(); set_reactivity(); + function count_lines () { + var rows = document.querySelectorAll("#table-body > tr"); + var counter = 0; + for (var i = 0; i < rows.length; i++) { + if (rows[i].style.display != "none") { + counter++; + } + } + console.log(counter); + if (counter == 0) { + document.getElementById('suivi').style.display = "none"; + document.getElementById('no_result').style.display = ""; + } else { + document.getElementById('suivi').style.display = ""; + document.getElementById('no_result').style.display = "none"; + } + } + function set_table_head() { /* Insert la liste d'activité en entête */ var table_heads = document.getElementById('modules'); @@ -557,6 +579,7 @@ var data = { } } }) + count_lines(); } function filter_students(filter) { @@ -587,7 +610,7 @@ var data = { } } } - + count_lines(); } function display_percentage() { @@ -621,15 +644,22 @@ var data = { function select_all_studs(e) { e.preventDefault(); - var checks = document.querySelectorAll("#table-body input[type='checkbox']"); + var counter = 0; + var checks = document.querySelectorAll("#table-body tr"); for (var i = 0; i < checks.length; i++) { - checks[i].checked = !data.all_selected; + if ( checks[i].style.display != "none" || data.all_selected ) { + var box = checks[i].querySelector("input[type='checkbox']"); + box.checked = !data.all_selected; + counter++; + } } - var select_all_studs_boxes = document.querySelectorAll('.select_all_studs'); - for (var i = 0; i < select_all_studs_boxes.length; i++) { - select_all_studs_boxes[i].innerHTML = data.all_selected ? "Sélectionner tout" : "Désélectionner tout" + if ( counter > 0 ) { + var select_all_studs_boxes = document.querySelectorAll('.select_all_studs'); + for (var i = 0; i < select_all_studs_boxes.length; i++) { + select_all_studs_boxes[i].innerHTML = data.all_selected ? "Sélectionner tout" : "Désélectionner tout" + } + data.all_selected = !data.all_selected; } - data.all_selected = !data.all_selected; } function send_msg_sel(e) {