diff --git a/CHANGELOG.md b/CHANGELOG.md index 3a20ea0d5d66a64bae42df2350081ffe5bc2ea1d..821116ceac39b66b82bcf65ed3ceb9d4db011f20 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -84,14 +84,12 @@ Changement du nom du plugin (fichiers de langue). Ne pas utiliser de méthodes root, quitte à abandonner des fonctionnalités. Trop instable. [x] Lister les compétences de l'utilisateur -- ne trouve pas les users qui n'ont jamais eu d'évaluation sur les compétences : trouver la méthode qui les crée au passage (il y en a une dans l'api) parmi celles qui sont capables de lister les cpt des users => ou constituer la liste des cpt users d'une autre manière [ ] Générer un tableau ou une liste propre -[ ] Pouvoir changer d'utilisateur via un champ de recherche dynamique -- champ intégré mais affiche un id au lieu du nom +[x] Pouvoir changer d'utilisateur via un champ de recherche dynamique -[ ] Pouvoir changer d'utilisateur via des boutons précédent, suivant +[x] Pouvoir changer d'utilisateur via des boutons précédent, suivant [ ] Permettre de filtrer par proficiency et par grade diff --git a/competency_iena_competencies_2.php b/competency_iena_competencies_2.php index 1ee11dad48856a10605d6705538ca57505d367f6..72134e4885c1e540230bfa337c699998a05e1d00 100644 --- a/competency_iena_competencies_2.php +++ b/competency_iena_competencies_2.php @@ -25,6 +25,7 @@ require_login($course, false, NULL); $PAGE->set_title(get_string('title_plugin', 'block_competency_iena')); $PAGE->set_heading($OUTPUT->heading($COURSE->fullname, 2, 'headingblock header outline')); $PAGE->requires->js("/blocks/competency_iena/js/datalist-polyfill.min.js"); +$PAGE->requires->js("/blocks/competency_iena/js/stud-x-cpts.js"); echo $OUTPUT->header(); @@ -60,28 +61,38 @@ $user_course_competencies = \core_competency\api::list_user_competencies_in_cour // } // echo "</pre>"; -echo "<form action='{$CFG->wwwroot}/blocks/competency_iena/competency_iena_competencies_2.php'>"; +echo "<form action='{$CFG->wwwroot}/blocks/competency_iena/competency_iena_competencies_2.php' id='change_stud_form' class='form-inline m-b-1 alert alert-secondary'>"; echo "<input type='text' hidden name='courseid' value='{$courseid}'>"; +echo "<span hidden id='studentid'>{$studentid}</span>"; + // https://github.com/mfranzke/datalist-polyfill -echo "<input type='text' name='studentid' id='studentid_sel' value='' list='student_list' class='dtlst'>"; +echo "<label class='m-y-1 m-r-1' for='studentid_sel' style='color: black;'>Etudiant</label>"; +echo "<input type='text' name='studentid' id='studentid_sel' value='' list='student_list' class='form-control'>"; echo "<datalist id='student_list' title='Select student'>"; foreach ($students as $stud) { - echo "<option value='{$stud->id}'>{$stud->firstname} {$stud->lastname}</option>"; + echo "<option value='{$stud->firstname} {$stud->lastname} ({$stud->id})' data-value='{$stud->id}'>{$stud->firstname} {$stud->lastname} ({$stud->id})</option>"; } echo "</datalist>"; -echo "<button type='submit'>Rechercher</button>"; + +$change_stud_url = $CFG->wwwroot."/blocks/competency_iena/competency_iena_competencies_2.php?courseid=".$courseid."&studentid="; + +// echo "<a href='{$change_stud_url}' class='btn btn-secondary m-l-1' id='prevStud'>Précédent</a>"; +// echo "<a href='{$change_stud_url}' class='btn btn-secondary m-l-1' id='nextStud'>Suivant</a>"; +echo "<button class='btn btn-secondary m-l-1' id='prevStud'>Précédent</button>"; +echo "<button class='btn btn-secondary m-l-1' id='nextStud'>Suivant</button>"; + echo "</form>"; echo "<h2>{$student->firstname} {$student->lastname}</h2>"; foreach ($user_course_competencies as $user_course_competency) { echo "<div class='alert alert-secondary'>"; - $cpt = new \core_competency\competency($user_course_competency->get('id')); + $cpt = new \core_competency\competency($user_course_competency->get('competencyid')); echo "<h3 id='{$cpt->get('id')}'>{$cpt->get('shortname')}</h3>"; $cpt_scale = $cpt->get_scale()->scale_items; if ( $user_course_competency->get('grade') == null ) { - $eval = "Non évalué"; + $eval = "-"; } else { $eval = $cpt_scale[$user_course_competency->get('grade') - 1]; } diff --git a/js/stud-x-cpts.js b/js/stud-x-cpts.js new file mode 100644 index 0000000000000000000000000000000000000000..35e4dc57f9e9d02ff909e91fd6b2a03b4303aeb4 --- /dev/null +++ b/js/stud-x-cpts.js @@ -0,0 +1,42 @@ +(function() { + window.onload = function () { + var opts = document.getElementById('student_list').childNodes; + var studentid = document.getElementById('studentid').innerHTML; + for (var i = 0; i < opts.length; i++) { + if (opts[i].dataset.value === studentid) { + var prev = opts[i - 1] === undefined ? false : opts[i - 1].dataset.value; + var next = opts[i + 1] === undefined ? false : opts[i + 1].dataset.value; + if (prev === false) { + document.getElementById('prevStud').setAttribute('disabled', 'disabled'); + } else { + // document.getElementById('prevStud').href += prev; + document.getElementById('prevStud').dataset.prev = prev; + document.getElementById('prevStud').onclick = function () { + document.getElementById('studentid_sel').value = document.getElementById('prevStud').dataset.prev; + } + } + if (next === false) { + document.getElementById('nextStud').setAttribute('disabled', 'disabled'); + } else { + // document.getElementById('nextStud').href += next; + document.getElementById('nextStud').dataset.next = next; + document.getElementById('nextStud').onclick = function () { + document.getElementById('studentid_sel').value = document.getElementById('nextStud').dataset.next; + } + } + } + } + }; + + // remplace le nom de l'étu par son id dans la valeur de l'input puis soumet le formulaire + document.getElementById('studentid_sel').oninput = function (e) { + var val = document.getElementById('studentid_sel').value; + var opts = document.getElementById('student_list').childNodes; + for (var i = 0; i < opts.length; i++) { + if (opts[i].value === val) { + document.getElementById('studentid_sel').value = opts[i].dataset.value; + document.getElementById('change_stud_form').submit(); + } + } + }; +})() \ No newline at end of file