Commit 2fa14061 authored by Thomas Fradet's avatar Thomas Fradet

maj

parent f64f919b
......@@ -89,4 +89,15 @@ 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.
......@@ -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>";
......
......@@ -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&nbsp;: 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&nbsp;: 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;
......
......@@ -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" => "&lt;25%",
">50" => "&gt;=50%",
">25" => "&gt;=25%",
">0" => "&gt;=0%",
">0" => "&gt;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" => "&lt;100%",
"<50" => "&lt;50%",
"<25" => "&lt;25%",
">50" => "&gt;50%",
">25" => "&gt;25%",
">0" => "&gt;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" => "&lt;100%",
// "<50" => "&lt;50%",
// "<25" => "&lt;25%",
// ">50" => "&gt;50%",
// ">25" => "&gt;25%",
// ">0" => "&gt;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) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment