diff --git a/competency_iena_competencies_2.php b/competency_iena_competencies_2.php index a82b3db57d016bb4ee6e4bad6062c73f764c377e..eaed897026471f7cb85d765efe0c5123bd9a3b61 100644 --- a/competency_iena_competencies_2.php +++ b/competency_iena_competencies_2.php @@ -26,6 +26,53 @@ if (!has_capability('moodle/course:update', $context = context_course::instance( } } + +//Si on a fait une évaluation +var_dump($_POST); +if(isset($_POST) && !empty($_POST)){ + $courseid = required_param('courseid', PARAM_INT); + $studentid = required_param('studentid', PARAM_INT); + $competencyid = required_param('competencyid', PARAM_INT); + + + $sql_rev = "SELECT * FROM {competency_usercomp} WHERE userid = ? AND competencyid = ? AND status = ?"; + $reviews_data = $DB->get_records_sql($sql_rev, [$studentid, $competencyid, 1]); + $review_asked = count($reviews_data) > 0 ? true : false; + + + /* <<< POST >>> */ + + /* POST EVALUATION */ + + if ( isset($_POST['grade']) ) { + $note = $_POST['note']; + \core_competency\api::grade_competency_in_course($courseid, $studentid, $competencyid, $_POST['grade'], $note); + if ( $review_asked ) { + \core_competency\api::user_competency_start_review($studentid, $competencyid); + \core_competency\api::user_competency_stop_review($studentid, $competencyid); + /* Refresh review data */ + $reviews_data = $DB->get_records_sql($sql_rev, [$studentid, $competencyid, 1]); + $review_asked = count($reviews_data) > 0 ? true : false; + } + } + + /* POST REVIEW */ + + if ( isset($_POST['review']) ) { + if ( $_POST['review'] == 'request' ) { + \core_competency\api::user_competency_request_review($studentid, $competencyid); + } elseif ( $_POST['review'] == 'cancel' ) { + \core_competency\api::user_competency_cancel_review_request($studentid, $competencyid); + } + /* Refresh review data */ + $reviews_data = $DB->get_records_sql($sql_rev, [$studentid, $competencyid, 1]); + $review_asked = count($reviews_data) > 0 ? true : false; + } + +} + + + $course_cpts = \core_competency\course_competency::list_competencies($COURSE->id); $count_course_cpts = count($course_cpts); $user_course_competencies = \core_competency\api::list_user_competencies_in_course($COURSE->id, $studentid); @@ -44,6 +91,14 @@ $thingnode->make_active(); $PAGE->requires->js("/blocks/competency_iena/js/dropdown.js"); $PAGE->requires->css("/blocks/competency_iena/styles.css"); + + + + + + + + echo $OUTPUT->header(); $sql = "SELECT * FROM {competency_usercomp} @@ -99,6 +154,17 @@ foreach ($user_course_competencies as $user_course_competency) { if ( $user_course_competency->get('grade') != null ) { $user_course_competency->eval = $cpt_scale[$user_course_competency->get('grade') - 1]; } + $user_course_competency->id=$user_course_competency->get('competencyid'); + + $user_course_competency->scale=array(); + for($i=0; $i<count($cpt_scale); $i++){ + $user_course_competency->scale[$i]=array('title'=>$cpt_scale[$i], 'value'=>$i+1); + if($cpt_scale[$i]==$user_course_competency->eval){ + $user_course_competency->scale[$i]['selected']='selected'; + } + + } + $user_course_competency->proficient_class = $user_course_competency->get('proficiency') == 1 ? " list-group-item-success" : ""; $user_course_competency->proficient_str = $user_course_competency->get('proficiency') == 1 ? "Oui" : "Non"; $user_course_competency->shortname=$cpt->get('shortname'); @@ -128,6 +194,7 @@ $data['link_dashboard']=$CFG->wwwroot."/blocks/competency_iena/competency_iena_c + $renderer = $PAGE->get_renderer('block_competency_iena'); $renderer->get_dashboard_students($data); diff --git a/db/upgrade.php b/db/upgrade.php index 7649b1e853207ecc594ec47e4552299b134bcc61..952628cc11c8587a909c10be9384782cfe0dd115 100644 --- a/db/upgrade.php +++ b/db/upgrade.php @@ -22,12 +22,10 @@ function xmldb_block_competency_iena_upgrade($oldversion) { // Conditionally launch add field id. if (!$dbman->table_exists($table)) { $dbman->create_table($table); - error_log("la table n'existait pas"); } else if(!$dbman->field_exists('block_competency_iena', 'cmid')){ $dbman->drop_table($table); $dbman->create_table($table); - error_log("la table ne contenait pas le champ"); } //Support for old versions: we copy the already linked activities to the new database diff --git a/js/dropdown.js b/js/dropdown.js index ed921b98fa4272e846f285192ed072553eaa5b96..88f5cc1ab3ebf42b2442d9f2e39836170c49c5da 100644 --- a/js/dropdown.js +++ b/js/dropdown.js @@ -105,9 +105,10 @@ /* Activation of previous and next buttons for dropdowns */ if (document.getElementById('student_list') !== null) { - var opts = document.getElementById('student_list').childNodes; + var opts = document.getElementById('student_list').getElementsByClassName('iena-drop-item'); var studentid = document.getElementById('studentid').innerHTML; for (var i = 0; i < opts.length; i++) { + console.log(opts[i].dataset); 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; diff --git a/styles.css b/styles.css index c27be45e6fecf6e2df13f36017303cc473cd34cb..4c34657df55ea6969bedcef548924cfdcc72c7b7 100644 --- a/styles.css +++ b/styles.css @@ -74,7 +74,7 @@ /* Page compétences d'un utilisateurs */ .list-group-item-action:hover .iena-cpt-action-title { - text-decoration: underline; + text-decoration: none!important; } .review-badge { @@ -307,3 +307,12 @@ table.dataTable{ .iena-taxonomy{ margin-bottom: 5px; } + +.iena-right-competency > div{ + display: inline-block; +} + +.iena-label-assess{ + font-weight: bold; + margin-right: 20px; +} \ No newline at end of file diff --git a/templates/dashboard_students.mustache b/templates/dashboard_students.mustache index 7f521b0c5a9e9da7cb6ce671258a9b219a19b0b6..df0d5b32a534c764ac3b2380c473750e44286617 100644 --- a/templates/dashboard_students.mustache +++ b/templates/dashboard_students.mustache @@ -35,25 +35,67 @@ <div class='list-group'> {{#user_course_competencies}} - <a href='{{link}}' class='list-group-item list-group-item-action{{proficient_class}}' style='padding-left: {{level_indentation}}rem;'> + <div class='list-group-item list-group-item-action{{proficient_class}}' style='padding-left: {{level_indentation}}rem;'> <div class="iena-taxonomy taxo-lvl{{cpt_level_in_framework}}"><small class='review-badge'>{{taxonomy}}</small></div> <div class='d-flex w-100 justify-content-between'> <h3 class='mb-1 iena-cpt-action-title h5'>{{shortname}}</h3> - {{#review_asked}} - <div><small class='review-badge'>Évaluation demandée</small></div> - {{/review_asked}} + <div class="iena-right-competency"> + {{#review_asked}} + <div><small class='review-badge'>Évaluation demandée</small></div> + {{/review_asked}} + <div class="user-competency-actions"> + <a href="#" data-toggle='modal' data-target='#modal-assess-{{id}}' class="action-icon" title="Evaluer" aria-label="Evaluation"><i class="icon fa fa-file-text-o fa-fw " aria-hidden="true"></i></a> + <a href="{{link}}" class="action-icon" title="Détails" aria-label="Evaluation"><i class="icon fa fa-search-plus fa-fw " aria-hidden="true"></i></a> + </div> + </div> + </div> - <p class='small' style='margin-bottom: 0;'>Évaluation : {{eval}} / Acquis : {{proficient_str}}</p> - </a> + <p class='small' style='margin-bottom: 0;'> + Évaluation : <span class="iena-label-assess">{{eval}}</span> + Acquis : <span class="iena-label-assess">{{proficient_str}}</span> </p> + </div> + <div class='modal fade' id="modal-assess-{{id}}" tabindex='-1' role='dialog' aria-labelledby='exampleModalScrollableTitle' aria-hidden='true'> + <div class='modal-dialog modal-dialog-scrollable modal-dialog-centered' role='document'> + <div class='modal-content'> + <div class='modal-header'> + <h5 class='modal-title'>{{#str}} eval {{/str}}</h5> + <button type='button' class='close' data-dismiss='modal' aria-label='Close'><span aria-hidden='true'>×</span></button> + </div> + <div class='modal-body'> + <form method='post' action='{{link_dashboard}}?courseid={{courseid}}&studentid={{student.studentid}}&competencyid={{id}}'> + <div class='form-group'><div class='form-group'> + <label>Évaluation</label> + <select name='grade' class='form-control'> + {{#scale}} + <option value='{{value}}'{{selected}}>{{title}}</option> + {{/scale}} + </select> + </div> + <div class='form-group'> + <textarea name='note' class='form-control' placeholder="Commentaire d'évaluation"></textarea> + </div> + <button type='submit' class='btn btn-primary'>Évaluer</button> + </form> + + + </div> + </div> + </div> + </div> + </div> {{/user_course_competencies}} </div> </div> </div> </div> + + + + {{/count_course_cpts}} {{^count_course_cpts}} <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='/blocks/competency_iena/competency_iena_competencies_mgmt.php?courseid={{courseid}}'>Gestion des compétences</a>. </p>