Commit c234f51a authored by Thomas Fradet's avatar Thomas Fradet

Merge branch 'dev'

parents a65a84df 61ce089d
......@@ -13,3 +13,45 @@ Le chargement d'une page contenant des sous-compétences ne fonctionnait plus en
Il est peut-être possible de rappeler les preuves déposées dans les plans de formation au niveau de cette page et pourquoi pas d'y lier de nouvelles preuves, possiblement depuis les pages ou collections Mahara. La lecture et liaison de preuves au niveau user et non user x course, directement depuis le contexte d'un cours, sans passer par les plans de formation, éviterait d'y avoir recours et donc de les créer / paramétrer / suivre, etc.
Dans l'accordéon qui permet de visualiser les niveaux supérieur dans le référentiel de compétence, ajouter un bouton pour se rendre sur la page du niveau considéré. Actuellement, il n'est possible que de descendre dans un niveau inférieur.
# 29/05/2019
Les tableau de bord sont modifiés.
## Tableau de bord par étudiant
Etat de différences compétences du cours, étudiant par étudiant :
- ajout d'un graphique représentant la proportion de compétences validées
- ajout d'un compteur du nombre de compétences pour laquelle il y a une demande d'évaluation
- la présentation de la liste des compétences est améliorée
- le passage d'un étudiant à l'autre est facilité
## Tableau de bord par compétences
Etat des différents étudiants, compétence par compétence :
- ajout d'un graphique représentant la proportion d'étudiants ayant validé la compétence
- ajout d'un graphique représentant la distribution du nombre d'évaluation pour chaque point de l'échelle d'évaluations, et les étudiants non évalués
- ajout d'un compteur du nombre d'étudiants ayant demandé une évaluation pour cette compétence
- le passage d'un étudiant à l'autre et d'une compétence à l'autre sont facilités
- ajout de filtre par évaluation donnée (note sur l'échelle d'évaluation), par validation de la compétence (oui/non) et par demande d'évaluation (oui/non)
## Tableau de bord pour 1 étudiant et 1 compétence
Ce tableau de bord est accessible depuis les deux autres en sélectionnant une compétence d'un étudiant ou un étudiant pour une compétence. Il présente l'état de l'évaluation par rapport à un étudiant pour une compétence dans le cadre du cours considéré, tout en affichant des informations sur les évaluations portées dans d'autres cours — afin de pouvoir noter l'étudiant en toute connaissance des évaluations qu'il a déjà pu recevoir par ailleurs sur cette compétence.
Cette interface a fait l'objet d'une refonte totale :
- changement d'étudiant et de compétence via liste, recherche et boutons précédent, suivant
- tableau de bord visuel de la validation, l'évaluation, la demande d'évaluation
- l'étudiant peut demander à être évalué et annuler une demande d'évaluation
- l'enseignant peut évaluer
- un graphique montre l'historique de toutes les évaluations dans ce cours et dans d'autres de manière différenciée et filtrable
- historique complet de toutes les traces et évaluation sous forme de liste, présentée en 3 onglets : complet, dans ce cours, hors de ce cours ; évaluation, contexte, commentaire d'évaluation, date et heure, nom de l'évaluateur
- liste des modules de cours liés à cette compétence
## Divers
Mise en compatibilité Moodle 3.7.
Correction de bugs divers, notamment dus au passage de version.
Nous sommes plus qu'ouvert aux contributions ! Contactez <iena-contact@univ-lorraine.fr> pour plus d'informations.
Contributors are welcome, please contact <iena-contact@univ-lorraine.fr>.
# Plugin Compétences
Ce plugin MOODLE de type Bloc permet d'ajouter des fonctionnalités autours de la manipulation des Compétences dans MOODE et d'en simplifier l'usage. Il se base sur l'implémentation native des compétences dans MOODLE et est pleinement compatible avec elle.
Ce plugin Moodle de type Bloc permet d'ajouter des fonctionnalités autours de la manipulation des Compétences dans Moodle et d'en simplifier l'usage. Il se base sur l'implémentation native des compétences dans Moodle et est pleinement compatible avec elle.
This MOODLE plugin make Competency functionalities easier to use and add some news. It is based on native MOODLE competency object and offer full compatibility.
This Moodle plugin make Competency functionalities easier to use and add some news. It is based on native Moodle competency implementation and offer full compatibility.
## Auteurs
......@@ -16,7 +16,7 @@ Développement : Softia (<http://www.softia.fr/>).
## Compatibility
MOODLE 35.
MOODLE 3.7
## Contribution
......@@ -32,30 +32,38 @@ Other : <iena-contact@univ-lorraine.fr>.
## Installation
Plugin folder name have to be `competency_iena`.
Plugin folder name _have to be_ : `competency_iena`.
This plugin is build upon MOODLE Competency functionnalities. So it require competency activation in site administration.
## Fonctionnalités
__Pour plus d'informations, consultez le [wiki](https://gitlab.univ-lorraine.fr/fradet1/iena-competency/wikis/home).__
### Liaison de compétences à un cours
L'ajout des compétences à un cours utilise une interface plus simple qu'à l'origine en affichant la description des compétences sélectionnées. L'association des compétences aux activité se fait dans une matrice Compétences x Activité, évitant de se rendre dans les paramètres de chaque activité.
L'ajout des compétences à un cours utilise une nouvelle interface qui affiche la description des compétences sélectionnées. L'association des compétences aux activité se fait dans une matrice Compétences x Activité du cours, évitant de se rendre dans les paramètres de chaque activité.
### Information sur l'APC et gestion des accès aux référentiels
Une page paramétrable par l'administrateur permet de donner des renseignement sur l'APC directement dans le contexte du cours en ligne. L'enseignant pourra donc y trouver une aide directe et les contacts des services d'appui appropriés si nécessaire.
Une page paramétrable par l'administrateur permet de donner des renseignement sur l'APC directement dans le contexte du cours en ligne. L'enseignant pourra donc y trouver une aide directe et les contacts des services d'appui appropriés si nécessaire pour administrer les référentiels.
Cette page dispose d'un formulaire de contact qui permet à un administrateur de donner à un enseignant demandeur des droits d'édition des référentiels de compétences, afin de pouvoir adopter une approche concertée de l'implémentation et de l'évolution des référentiels de compétence dans la plateforme.
### Tableaux de bord
Enseignants et étudiants disposent de listes des compétences travaillés dans un cours et peuvent en voir l'état d'acquisition.
Enseignants et étudiants disposent de listes des compétences travaillés dans un cours et peuvent en voir l'état d'acquisition. Il existe un talbeau de bord compétence par compétence et un autre étudiant par étudiant.
### Page Compétence de l'étudiant
### Page Compétence de l'étudiant dans le cours
Pour chaque compétence au sein du cours, l'étudiant dispose d'une page à laquelle l'enseignant et lui peuvent accéder. Cette page contient l'état d'acquisition de la compétence, les modules de cours qui y sont liés, les fonctionnalités de demande d'évaluation et d'évaluation, une zone de commentaire pour échanger et un historique complet du travail sur cette compétence au sein du cours et en dehors.
Pour chaque compétence au sein du cours, l'étudiant dispose d'une page à laquelle l'enseignant et lui peuvent accéder. Cette page contient l'état d'acquisition de la compétence, les modules de cours qui y sont liés, les fonctionnalités de demande d'évaluation et d'évaluation, et un historique complet du travail sur cette compétence _au sein du cours et en dehors_.
Cette page permet de visualiser les informations principales des éléments "parents" et "enfants" dans le référentiel de compétences.
## Roadmap
Toute contribution est la bienvenue !
- auto-positionnement de l'étudiant sur une compétence
- tableau de bord par activité
- tableau de bord général du cours avec représentation graphique de l'acquisition des compétences et statistiques
- positionnement relatif d'un étudiant par rapport au reste de la cohorte sur le tableau de bord général
- interface d'évaluation rapide des compétences, probablement via un tableau
......@@ -51,52 +51,45 @@ class block_competency_iena extends block_base
}
$this->content = new stdClass;
$this->content->text = "";
if (has_capability('moodle/course:update', $context = context_course::instance($COURSE->id), $USER->id)) {
$this->content->text .= '<a href="' . $CFG->wwwroot . '/blocks/competency_iena/competency_iena_competencies.php?courseid=' . $COURSE->id . '" class="btn btn-primary w-100 mb-3" style="white-space: normal;">Acquisition des compétences</a>';
$this->content->text .= '<a href="' . $CFG->wwwroot . '/blocks/competency_iena/competency_iena_competencies_mgmt.php?courseid=' . $COURSE->id . '" type="button " class="btn btn-success w-100 mb-3" style="white-space: normal;">Gérer les compétences</a>';
$this->content->text .= '<h4>Tableaux de bord</h4>';
$this->content->text .= '<a href="' . $CFG->wwwroot . '/blocks/competency_iena/competency_iena_competencies_2.php?courseid=' . $COURSE->id . '" class="btn btn-primary w-100 mb-3" style="white-space: normal;">Par étudiant</a>';
$this->content->text .= '<a href="' . $CFG->wwwroot . '/blocks/competency_iena/competency_iena_competency_students_2.php?courseid=' . $COURSE->id . '" class="btn btn-primary w-100" style="white-space: normal;">Par compétence</a>';
// marche plus
// $this->content->text .= '<a href="' . $CFG->wwwroot . '/blocks/competency_iena/competency_iena_competencies.php?courseid=' . $COURSE->id . '" class="btn btn-primary w-100 mb-3" style="white-space: normal;">Acquisition des compétences</a>';
$this->content->text .= '<hr>';
$this->content->text .= '<a href="' . $CFG->wwwroot . '/blocks/competency_iena/competency_iena_competencies_mgmt.php?courseid=' . $COURSE->id . '" type="button " class="btn btn-secondary w-100 mb-3" style="white-space: normal;">Gérer les compétences</a>';
$this->content->text .= '<a href="' . $CFG->wwwroot . '/blocks/competency_iena/competency_iena_competency_mgmt.php?courseid=' . $COURSE->id . '" type="button " class="btn btn-secondary w-100 mb-3" style="white-space: normal;">Informations sur l\'APC</a>';
} else {
$this->content->text .= '<a href="' . $CFG->wwwroot . '/blocks/competency_iena/competency_iena_competencies.php?courseid=' . $COURSE->id . '" class="btn btn-primary w-100 mb-3">Mes Compétences</a>';
$this->content->text .= '<a href="' . $CFG->wwwroot . '/blocks/competency_iena/competency_iena_competencies_2.php?courseid=' . $COURSE->id . '" class="btn btn-primary w-100 mb-3" style="white-space: normal;">Mes compétences</a>';
}
$competenceI = new block_competency_iena_competency();
$competences = $competenceI->get_competencies_by_userID($USER->id);
$nb_ok = 0;
$nb_total = count($competences);
// var_dump($competences);
foreach ($competences as $comp) {
if ($comp->proficiency == 1) {
$nb_ok++;
}
}
// $this->content->text .= "<p></p>";
if ($nb_total > 0) {
$progress_percentage = ceil($nb_ok*100/$nb_total);
$this->content->text .= "
<div class=\"progress\">
<div class=\"progress-bar\" role=\"progressbar\" style=\"width: $progress_percentage%;\" aria-valuenow=\"$nb_ok\" aria-valuemin=\"0\" aria-valuemax=\"$nb_total\">$nb_ok/$nb_total</div>
</div>
";
} else {
$progress_percentage = 0;
$this->content->text .= "
<div class=\"progress\">
<div class=\"progress-bar\" role=\"progressbar\" style=\"width: $progress_percentage%;\" aria-valuenow=\"$nb_ok\" aria-valuemin=\"0\" aria-valuemax=\"$nb_total\"></div>
</div>
";
}
// $this->content->text .= "
// <div class=\"thermo\">
// <div class=\"round_thermo\">
// <span class=\"text_round_thermo\">
// $nb_ok/$nb_total
// </span>
// </div>
// <div class=\"thermo_bar\">
// <progress class=\"progress\" max=\"$nb_total\" value=\"$nb_ok\"></progress>
// </div>
// </div>
// ";
// $competenceI = new block_competency_iena_competency();
// $competences = $competenceI->get_competencies_by_userID($USER->id);
// $nb_ok = 0;
// $nb_total = count($competences);
// foreach ($competences as $comp) {
// if ($comp->proficiency == 1) {
// $nb_ok++;
// }
// }
// // $this->content->text .= "<p></p>";
// if ($nb_total > 0) {
// $progress_percentage = ceil($nb_ok*100/$nb_total);
// $this->content->text .= "
// <div class=\"progress\">
// <div class=\"progress-bar\" role=\"progressbar\" style=\"width: $progress_percentage%;\" aria-valuenow=\"$nb_ok\" aria-valuemin=\"0\" aria-valuemax=\"$nb_total\">$nb_ok/$nb_total</div>
// </div>
// ";
// } else {
// $progress_percentage = 0;
// $this->content->text .= "
// <div class=\"progress\">
// <div class=\"progress-bar\" role=\"progressbar\" style=\"width: $progress_percentage%;\" aria-valuenow=\"$nb_ok\" aria-valuemin=\"0\" aria-valuemax=\"$nb_total\"></div>
// </div>
// ";
// }
return $this->content;
}
......
......@@ -57,7 +57,7 @@
echo $OUTPUT->header();
} catch (coding_exception $e) {
}
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"styles.css\">";
// echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"styles.css\">";
/*$cron_test = new block_competency_iena_cron_roles();
$cron_test->attribute_roles_iena_complete();*/
......
<?php
require_once('../../config.php');
require_once('entity/block_competency_iena_student.php');
global $COURSE, $DB, $USER, $CFG;
$courseid = required_param('courseid', PARAM_INT);
$studentid = optional_param('studentid', $USER->id, PARAM_INT);
$url = new moodle_url('/blocks/competency_iena/competency_iena_competencies_2.php', array('courseid' => $courseid, 'studentid' => $studentid));
$PAGE->set_pagelayout('course');
$PAGE->set_url($url);
$course = $DB->get_record('course', array('id' => $courseid), '*', MUST_EXIST);
require_login($course, false, NULL);
$PAGE->set_title(get_string('title_plugin', 'block_competency_iena'));
$is_student = false;
if (!has_capability('moodle/course:update', $context = context_course::instance($course->id), $USER->id)) {
$is_student = true;
if ( $studentid != $USER->id ) {
$link = $CFG->wwwroot . '/blocks/competency_iena/competency_iena_competencies_2.php?courseid=' . $courseid . '&studentid=' . $USER->id;
header("Location: {$link}");
exit;
}
}
$course_cpts = \core_competency\course_competency::list_competencies($COURSE->id);
$count_course_cpts = count($course_cpts);
if ($count_course_cpts === 0) {
$PAGE->set_heading($OUTPUT->heading($COURSE->fullname, 2, 'headingblock header outline'));
echo $OUTPUT->header();
echo "<p class='alert alert-warning'>Pour le moment, aucune compétence n'a été liée à ce cours. Pour lier des compétences au cours et les associer à des activités, rendez-vous dans la page <a href='{$CFG->wwwroot}/blocks/competency_iena/competency_iena_competencies_mgmt.php?courseid={$courseid}'>Gestion des compétences</a>. </p>";
echo $OUTPUT->footer();
} else {
// L'état des compétences du cours pour un utilisateur
$user_course_competencies = \core_competency\api::list_user_competencies_in_course($COURSE->id, $studentid);
// Les étudiants.
$student = new block_competency_iena_student();
$students = $student->get_all_students_by_course($COURSE->id);
// L'étudiant
$student->get_student_by_id($studentid);
$PAGE->set_heading($OUTPUT->heading($student->firstname . " " . $student->lastname, 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();
/* Les demandes de validation de compétence (review) prises dans le cptuser car n'existent pas dans le contexte restreint à un cours. */
/* TODO : préciser sur quelles compétences ? */
$sql = "SELECT * FROM {competency_usercomp}
WHERE userid = ? AND status = ?";
$params_rev = array();
$params_rev[] = $student->studentid;
$params_rev[] = 1;
$reviews_data = $DB->get_records_sql($sql, $params_rev);
$reviews_count = count($reviews_data);
/* <<< DASHBORD >>> */
$count_proficients = 0;
foreach ($user_course_competencies as $u_c_cpt) {
if ( $u_c_cpt->get('proficiency') == 1 ) {
$count_proficients++;
}
}
/* DEBUT CONTAINER */
echo "<div class='container-fluid' id='dash-container'>";
/* <<< DASHBOARD >>> */
echo "<div class='alert alert-secondary row' style='padding-top: 1.5rem;'>"; /* Début tableau de bord. */
/* Left col */
echo "<div class='col-12 col-lg-6'>";
echo "<h2 class='h3'>{$student->firstname} {$student->lastname}</h2>";
if ( !$is_student ) {
echo "<form action='{$CFG->wwwroot}/blocks/competency_iena/competency_iena_competencies_2.php' id='change_stud_form' class='form-inline'>";
echo "<input type='text' hidden name='courseid' value='{$courseid}'>";
echo "<span hidden id='studentid'>{$studentid}</span>";
/* https://github.com/mfranzke/datalist-polyfill */
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 m-r-1'>";
echo "<datalist id='student_list' title='Select student'>";
foreach ($students as $stud) {
echo "<option value='{$stud->firstname} {$stud->lastname} ({$stud->id})' data-value='{$stud->id}'>{$stud->firstname} {$stud->lastname} ({$stud->id})</option>";
}
echo "</datalist>";
echo "<div><button class='btn btn-secondary' id='prevStud'>Précédent</button>";
echo "<button class='btn btn-secondary m-l-1' id='nextStud'>Suivant</button></div>";
echo "</form>";
}
echo "<h2 class='h4 m-t-2'>Demandes d'évaluations <span class='badge badge-pill badge-primary' style='border-radius: 0.15rem;'>$reviews_count</span></h2>";
echo "</div>"; /* Left col END */
/* Right col */
echo "<div class='col-12 col-lg-6'>";
echo "<h2 class='h4'>Compétences validées</h2>";
$chart = new \core\chart_pie();
$proficiency_serie = new core\chart_series('', [$count_proficients, $count_course_cpts - $count_proficients]);
$chart->set_doughnut(true);
$chart->add_series($proficiency_serie);
$chart->set_labels(["Validé", "Non validé"]);
echo $OUTPUT->render($chart);
echo "</div>"; /* Right col END */
echo "</div>"; /* Fin tableau de bord */
/* <<< COMPETENCY LIST >>> */
echo "<div class='row'>";
echo "<div class='col-12' style='padding: 0;'>";
echo "<div class='list-group'>";
foreach ($user_course_competencies as $user_course_competency) {
// Crée un obj cpt à partir de l'ID. Attention, id de compétence et course_competency sont différents.
$cpt = new \core_competency\competency($user_course_competency->get('competencyid'));
// Récupère les chaines de caractère de l'échelle d'évaluation
$cpt_scale = $cpt->get_scale()->scale_items;
$eval = "-";
if ( $user_course_competency->get('grade') != null ) {
$eval = $cpt_scale[$user_course_competency->get('grade') - 1];
}
$proficient_class = $user_course_competency->get('proficiency') == 1 ? " list-group-item-success" : "";
$proficient_str = $user_course_competency->get('proficiency') == 1 ? "Oui" : "Non";
echo "
<a href='{$CFG->wwwroot}/blocks/competency_iena/course_competency.php?courseid={$courseid}&studentid={$studentid}&competencyid={$cpt->get('id')}' class='list-group-item list-group-item-action{$proficient_class}'>
<div class='d-flex w-100 justify-content-between'>
<h3 class='mb-1 iena-cpt-action-title'>{$cpt->get('shortname')}</h3>";
foreach ($reviews_data as $review) {
if ( $review->competencyid == $cpt->get('id') ) {
echo "<div><small class='review-badge'>Évaluation demandée</small></div>";
break;
}
}
echo "</div>
<p class='' style='margin-bottom: 0;'>Évaluation : <em>{$eval}</em></p>
<small class=''>Acquis : {$proficient_str}</small>
</a>";
}
echo "</div>";
echo "</div>";
echo "</div>"; /* Fin de la liste. */
echo "</div>"; /* FIN CONTAINER */
echo $OUTPUT->footer();
} /* Fin else condition qu'il y ait des cpt liées au cours. */
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
define(['core/ajax'],
function(ajax) {
console.log('hello you')
// console.log('hello you')
requests = ajax.call([
{methodname: 'core_competency_remove_competency_from_course',
......
(function() {
function active_tabs(active_tab) {
var tabs = document.querySelectorAll('#hist-tabs .nav-link');
for ( var i=0; i < tabs.length; i++ ) {
tabs[i].setAttribute('class', 'nav-link');
}
active_tab.setAttribute('class', 'nav-link active');
}
function filter(type) {
var list_items = document.querySelectorAll('[data-evidenceorigin]');
for ( var j = 0; j < list_items.length; j++ ) {
if ( type.indexOf(list_items[j].dataset.evidenceorigin) != -1 ) {
list_items[j].style.display = '';
} else {
list_items[j].style.display = 'none';
}
}
}
window.addEventListener('load', function() {
document.getElementById('all_history_tab').addEventListener('click', function (e) { e.preventDefault(); active_tabs(e.target); filter('course and other'); });
document.getElementById('course_history_tab').addEventListener('click', function (e) { e.preventDefault(); active_tabs(e.target); filter('course'); });
document.getElementById('other_history_tab').addEventListener('click', function (e) { e.preventDefault(); active_tabs(e.target); filter('other'); });
})
})();
\ No newline at end of file
(function() {
/* Submit datalist selector to change current competency
on the dashboard listing avery student status regarding a particular competency. */
window.addEventListener('load', function () {
var opts = document.getElementById('competency_list').childNodes;
var competencyid = document.getElementById('competencyid').innerHTML;
for (var i = 0; i < opts.length; i++) {
if (opts[i].dataset.value === competencyid) {
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('prevCpt').setAttribute('disabled', 'disabled');
} else {
// document.getElementById('prevCpt').href += prev;
document.getElementById('prevCpt').dataset.prev = prev;
document.getElementById('prevCpt').onclick = function () {
document.getElementById('competencyid_sel').value = document.getElementById('prevCpt').dataset.prev;
}
}
if (next === false) {
document.getElementById('nextCpt').setAttribute('disabled', 'disabled');
} else {
// document.getElementById('nextCpt').href += next;
document.getElementById('nextCpt').dataset.next = next;
document.getElementById('nextCpt').onclick = function () {
document.getElementById('competencyid_sel').value = document.getElementById('nextCpt').dataset.next;
}
}
}
}
/* remplace le nom de l'étu par son id dans la valeur de l'input puis soumet le formulaire */
document.getElementById('competencyid_sel').oninput = function (e) {
var val = document.getElementById('competencyid_sel').value;
var opts = document.getElementById('competency_list').childNodes;
for (var i = 0; i < opts.length; i++) {
if (opts[i].value === val) {
document.getElementById('competencyid_sel').value = opts[i].dataset.value;
document.getElementById('change_cpt_form').submit();
}
}
};
});
})()
\ No newline at end of file
This diff is collapsed.
......@@ -13,7 +13,7 @@ function filter() {
function updateTextComp(value, idcourse,wwwroot){
console.log(value);
// console.log(value);
$.ajax({
url: wwwroot+'/blocks/competency_iena/competency_iena_competencies_api.php?courseid='+idcourse,
type: 'POST',
......@@ -32,7 +32,7 @@ function updateTextComp(value, idcourse,wwwroot){
}
function updateTextRef(value, idcourse,wwwroot) {
console.log(value);
// console.log(value);
$.ajax({
url: wwwroot + '/blocks/competency_iena/competency_iena_competencies_api.php?courseid=' + idcourse,
type: 'POST',
......@@ -41,7 +41,7 @@ function updateTextRef(value, idcourse,wwwroot) {
data: {idref: value},
success: function (result) {
var json_res = JSON.parse(result);
console.log(json_res.id);
// console.log(json_res.id);
$('#btn-comp-iena').attr('disabled', 'disabled');
$('#name_ref_iena').html(json_res.shortname);
$('#desc_ref_iena').html(json_res.description);
......
(function() {
window.addEventListener('load', 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
......@@ -4,7 +4,7 @@
$string['competency_iena'] = 'Moodle Version';
$string['competency_iena:addinstance'] = 'Add a new moodle version block';
$string['competency_iena:myaddinstance'] = 'Add a new moodle version block to the My Moodle page';
$string['pluginname'] = 'Competency iena block';
$string['pluginname'] = 'Competency block';
$string['release'] = 'Release: ';
$string['title_plugin'] = 'Competencies iena';
$string['titleadd_plugin'] = 'New competency';
......@@ -75,5 +75,5 @@
$string['apc_infos_title'] = 'Informations sur l\'APC';
$string['apc_demande_title'] = 'Demande d\'accès ou d\'informations';
$string['send_demande'] = 'Envoyer la demande';
$string['competency_iena:addinstance'] = 'Add a new competency block';
?>
\ No newline at end of file
......@@ -4,7 +4,7 @@
$string['competency_iena'] = 'Version Moodle';
$string['competency_iena:addinstance'] = 'Ajouter le module moodle version';
$string['competency_iena:myaddinstance'] = 'Ajouter le module moodle version sur ma page';
$string['pluginname'] = 'Bloc Compétences iena';
$string['pluginname'] = 'Bloc Compétences';
$string['title_plugin'] = 'Compétences';
$string['titleadd_plugin'] = 'Ajouter une compétence';
$string['titleaddname_plugin'] = 'Nom';
......@@ -74,6 +74,7 @@
$string['apc_infos_title'] = 'Informations sur l\'APC';
$string['apc_demande_title'] = 'Demande d\'accès ou d\'informations';
$string['send_demande'] = 'Envoyer la demande';
$string['competency_iena:addinstance'] = 'Ajouter un nouveau bloc Compétences';
......
......@@ -9,17 +9,17 @@ defined('MOODLE_INTERNAL') || die;
if ($ADMIN->fulltree) {
$settings->add(new admin_setting_configtext('role_iena', get_string('name_role','block_competency_iena' ),
null, "studentlpmanager"));
"ATTENTION : paramètre non utilisé pour le moment !", "studentlpmanager"));
$settings->add(new admin_setting_configtext('parcour_iena', get_string('name_parcour','block_competency_iena' ),
null, get_string('dynamic_path','block_competency_iena' )));
"ATTENTION : paramètre non utilisé pour le moment !", get_string('dynamic_path','block_competency_iena' )));
$settings->add(new admin_setting_configtext('mail_iena', get_string('mail_iena','block_competency_iena' ),
null, "noreply@example.com"));
"Adresse à laquelle sont envoyées les demandes via le block.", "noreply@example.com"));
$settings->add(new admin_setting_confightmleditor('apc_iena',get_string('apc_iena','block_competency_iena' ),
null, get_string('apc_iena', 'block_competency_iena') ));
"Champ d'information 1 sur l'APC.", get_string('apc_iena', 'block_competency_iena') ));
$settings->add(new admin_setting_confightmleditor('info_iena',get_string('info_iena','block_competency_iena' ),
null,get_string('info_iena','block_competency_iena' )));
"Champ d'information 2 sur l'APC.",get_string('info_iena','block_competency_iena' )));
}
\ No newline at end of file
......@@ -66,3 +66,15 @@
bottom: 0
}
/* Page compétences d'un utilisateurs */
.list-group-item-action:hover .iena-cpt-action-title {
text-decoration: underline;
}
.review-badge {
border-radius: 0.15rem;
padding: 0.12rem 0.35rem;
background-color: #008090;
color: white;
}
\ No newline at end of file
......@@ -28,7 +28,7 @@
*/
defined('MOODLE_INTERNAL') || die();
$plugin->version = 2019021904;
$plugin->version = 2019062101;
$plugin->requires = 2014051200;
$plugin->component = 'block_competency_iena';
$plugin->release = 'v1.0';
......
......@@ -38,8 +38,14 @@ class view_competency_iena_competencies
// liste des compétences avec toutes les infos
// TODO : traduire l'évaluation numérique en échelle
$competencies = new block_competency_iena_competency();
$cpts = $competencies->get_competencies_by_userID($studentid);
// var_dump($cpts);
// entête de la table
......
......@@ -183,7 +183,6 @@ function supprimer_lien_cpt(cpt_id) {
info[0] = \"delete_cpt\" ;
info[1] = $COURSE->id ;
info[2] = cpt_id ;
console.log(cpt_id)
$.ajax({
type: \"POST\",
data: {info:info},
......@@ -270,7 +269,6 @@ alert(status);
function changeColor(obj)
{
console.log(obj)
// if (obj.getAttibute('class').indexOf('text-success') > -1) {
// obj.setAttibute('class', 'text-success');
// } else {
......@@ -404,7 +402,7 @@ $content .= "
";
// var_dump($COURSE->id);
// $context = context_module::instance($COURSE->id);
$context = context_module::instance($COURSE->id);
// var_dump($context);
// var_dump($context->_id);
// var_dump($context->id);
......
......@@ -80,7 +80,7 @@ class view_competency_iena_competency_mgmt extends moodleform
$content .= "
<div class='mt-3'>
<a onclick=\"window.history.go(-1); return false;\" class='btn btn-secondary' >".get_string('cancel', 'block_competency_iena')."</a>
<button type='submit' id='" . $ref[1]->id . "' class='btn btn-primary'>".get_string('send_demande', 'block_competency_iena')."</button>
<button type='submit' class='btn btn-primary'>".get_string('send_demande', 'block_competency_iena')."</button>
</div>