diff --git a/competency_iena_competencies_api.php b/competency_iena_competencies_api.php index fb47e0b10ca7793c0a91d3746ca997047eb17ca0..d5b122c5140e9972ebf641f180b7c3246fd4268e 100644 --- a/competency_iena_competencies_api.php +++ b/competency_iena_competencies_api.php @@ -32,6 +32,7 @@ require_login($course, false, NULL); if ($_POST) { + //Donne les infos sur la comp if (isset($_POST["idcompetence"])) { $idcompetence = htmlspecialchars($_POST["idcompetence"]); $compI = new block_competency_iena_competency(); @@ -41,7 +42,7 @@ $tab['id'] = $compI->id; echo json_encode($tab); } - + //Ajoute un tableau d'id de compétences à la matrice if (isset($_POST["addcomp"])) { $value = $_POST["addcomp"]; //return var_dump($value); @@ -67,6 +68,32 @@ } + } + else if (isset($_POST["addactivity"])) { + $value = $_POST["addactivity"]; + //return var_dump($value); + + $resultInsert=""; + $errorInsert=false; + /*$refI = new block_competency_iena_referentiel(); + + foreach($value[0] as $compid){ + $is_insert = $refI->add_competency_in_course($compid, $value[1]); + if (!$is_insert) { + $resultInsert.=" ".$compid.","; + $errorInsert=true; + + } + } + if($errorInsert==false){ + echo "true"; + } + else{ + echo get_string('error_insert', 'block_competency_iena').$resultInsert; + }*/ + echo "hello"; + + } // updateTextRef if (isset($_POST["idref"])) { diff --git a/competency_iena_competencies_mgmt.php b/competency_iena_competencies_mgmt.php index afd06bc7b1a785d593ca7595f6c07697a2cc98ce..4e804cd98716aedaa6e7f29f9aeebcd3e2fe861a 100644 --- a/competency_iena_competencies_mgmt.php +++ b/competency_iena_competencies_mgmt.php @@ -56,7 +56,8 @@ } else { echo 'false'; } - } // Insert or update DB + } + // Insert or update DB else { $module_id = htmlspecialchars($_POST['info'][0]); $competency_id = htmlspecialchars($_POST['info'][1]); @@ -159,25 +160,79 @@ + //$matrix_modules=new block_competency_iena_module(); + $module_instance = new block_competency_iena_module(); - $modules = $module_instance->get_modules_by_courseID($courseid); + //$modules = $module_instance->get_modules_by_courseID($courseid); - $section_instance = new block_competency_iena_section(); - $sections = $section_instance->get_sections_by_id_course($courseid); + //$section_instance = new block_competency_iena_section(); + //$sections = $section_instance->get_sections_by_id_course($courseid); + $infos = get_fast_modinfo($COURSE->id); + $sections=$infos->get_section_info_all(); + $modules=$infos->get_cms(); $index=0; - + $sections_matrix=array(); + $sections_modal=array(); //Pour chaque section on va regarder s'il y a des modules, et si oui on formate et on ajoute les modules à la section foreach ($sections as $section) { - $section->modules=array(); - foreach ($modules as $module) { - if($module->sectionid == $section->id){ + + $section_modal=new stdClass(); + $section_modal->modules=array(); + //$section_modal->modules=array_values($section->modinfo->cms); + + $section_matrix=new stdClass(); + + $section_matrix->matrix_modules=array(); + + if ( $section->name == NULL ) { + $section->name = "Section " . $section->section; + + } + $matrix_modules=$module_instance->get_matrix_modules_by_id_section($section->id); + foreach ($modules as $key => $module) { + if($module->section == $section->id){ + if(in_array($key, array_column($matrix_modules, 'cmid'))){ + $module_matrix=new stdClass(); + $moduleI = new block_competency_iena_ressource(); + + $moduleI->get_ressource_by_id($key); + //var_dump($moduleI); + $module_matrix->name=$moduleI->name; + $module_matrix->link=$moduleI->link; + $module_competencies = $competency_instance->get_competencies_by_moduleID($key); + $module_matrix->mcompetencies=array(); + foreach ($competencies as $competency) { + $key=array_search($competency->id, array_column($module_competencies, 'id')); + if($key !== false){ + array_push($module_matrix->mcompetencies, $module_competencies[$key]); + } + else{ + array_push($module_matrix->mcompetencies, $competency); + } + + } + + array_push($section_matrix->matrix_modules,$module_matrix); + } + array_push($section_modal->modules, $module); + } + + + } + + + //$matrix=new block_competency_iena_ressource(); + + /*foreach ($matrix_modules as $module) { $moduleI = new block_competency_iena_ressource(); - $moduleI->get_ressource_by_id($module->moduleid); + + $moduleI->get_ressource_by_id($module->cmid); + $module->name=$moduleI->name; $module->link=$moduleI->link; - $module_competencies = $competency_instance->get_competencies_by_moduleID($module->moduleid); + $module_competencies = $competency_instance->get_competencies_by_moduleID($module->cmid); $module->mcompetencies=array(); foreach ($competencies as $competency) { $key=array_search($competency->id, array_column($module_competencies, 'id')); @@ -190,23 +245,25 @@ } - array_push($section->modules,$module); - } - } - - if ( $section->name == NULL ) { - $section->name = "Section " . $section->section; - } - if(count($section->modules)==0){ - unset($sections[$index]); + array_push($section_matrix->matrix_modules,$module); + }*/ + + if(count($section_matrix->matrix_modules)>0){ + $section_matrix->name =$section->name; + $section_matrix->id=$section->id; + array_push($sections_matrix, $section_matrix); } + $section_modal->id=$section->id; + $section_modal->name=$section->name; + array_push($sections_modal, $section_modal); $index++; } //Comme on a unset, on réindexe le tableau pour des clés propres - $sections=array_values($sections); - + //$sections=array_values($sections); + + //Pour les référentiels $refI = new block_competency_iena_referentiel(); $frameworks = $refI->get_referentiels_all(); @@ -230,9 +287,12 @@ $data=array(); $data['competencies']=$competencies; //$data['modules']=$modules; - $data['sections']=$sections; + $data['sections']=$sections_modal; + + $data['sections_matrix']=$sections_matrix; $data['frameworks']=array_values($frameworks); $data['ordered_competencies']=$ordered_competencies; + var_dump($ordered_competencies); $data['form_link']= $CFG->wwwroot . "/blocks/competency_iena/competency_iena_competency_mgmt.php?courseid=" . $COURSE->id; $data['update_link']=$CFG->wwwroot . '/blocks/competency_iena/competency_iena_competencies_api.php?courseid=' . $COURSE->id; diff --git a/db/install.xml b/db/install.xml new file mode 100644 index 0000000000000000000000000000000000000000..74d23db509fa814e480bb312cc4c06a7d804a43d --- /dev/null +++ b/db/install.xml @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<XMLDB PATH="blocks/competency_iena/db" VERSION="20210705" COMMENT="XMLDB file for Moodle blocks/competency_iena" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="../../../lib/xmldb/xmldb.xsd" +> + <TABLES> + <TABLE NAME="block_competency_iena" COMMENT="Default comment for block_competency_iena, please edit me"> + <FIELDS> + <FIELD NAME="id" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="true"/> + <FIELD NAME="cmid" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="false" COMMENT="module id"/> + <FIELD NAME="sectionid" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="false"/> + </FIELDS> + <KEYS> + <KEY NAME="primary" TYPE="primary" FIELDS="id"/> + <KEY NAME="cmid" TYPE="foreign" FIELDS="cmid" REFTABLE="course_modules" REFFIELDS="id"/> + <KEY NAME="sectionid" TYPE="foreign" FIELDS="sectionid" REFTABLE="course_sections" REFFIELDS="id"/> + </KEYS> + </TABLE> + <TABLE NAME="block_competency_iena" COMMENT="Default comment for block_competency_iena, please edit me"> + <FIELDS> + <FIELD NAME="id" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="true"/> + <FIELD NAME="cmid" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="false" COMMENT="module id"/> + <FIELD NAME="sectionid" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="false"/> + </FIELDS> + <KEYS> + <KEY NAME="primary" TYPE="primary" FIELDS="id"/> + <KEY NAME="cmid" TYPE="foreign" FIELDS="cmid" REFTABLE="course_modules" REFFIELDS="id"/> + <KEY NAME="sectionid" TYPE="foreign" FIELDS="sectionid" REFTABLE="course_sections" REFFIELDS="id"/> + </KEYS> + </TABLE> + </TABLES> +</XMLDB> \ No newline at end of file diff --git a/db/upgrade.php b/db/upgrade.php new file mode 100644 index 0000000000000000000000000000000000000000..839aa766ca11f966a5444e929bf60a66474ac1fa --- /dev/null +++ b/db/upgrade.php @@ -0,0 +1,55 @@ +<?php + + + +function xmldb_block_competency_iena_upgrade($oldversion) { + global $CFG, $DB; + $dbman = $DB->get_manager(); + $result = TRUE; + + if ($oldversion < 2021070600) { + + // Define field id to be added to block_competency_iena. + $table = new xmldb_table('block_competency_iena'); + $table->add_field('id', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, XMLDB_SEQUENCE, null, null); + $table->add_field('cmid', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null, 'id'); + $table->add_field('sectionid', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null, 'cmid'); + + $table->add_key('primary', XMLDB_KEY_PRIMARY, ['id']); + $table->add_key('cmid', XMLDB_KEY_FOREIGN, ['cmid'], 'course_modules', ['id']); + $table->add_key('sectionid', XMLDB_KEY_FOREIGN, ['sectionid'], 'course_sections', ['id']); + + // Conditionally launch add field id. + if (!$dbman->table_exists($table)) { + $dbman->create_table($table); + } + + //Support for old versions: we copy the already linked activities to the new database + try { + $modules= $DB->get_records_sql('select DISTINCT cmid FROM {competency_modulecomp}'); + } + catch (dml_exception $e) { + echo "Aucun module dans la base"; + } + if(count($modules) > 0){ + foreach ($modules as $module) { + try { + $data_exist = $DB->get_record_sql('select section FROM {course_modules} WHERE id=?', array($module->cmid)); + $module_data = new stdClass(); + $module_data->cmid = $module->cmid; + $module_data->sectionid = $data_exist->section; + $resultat = $DB->insert_record('block_competency_iena', $module_data, true); + } + catch (dml_exception $e) { + } + } + } + + // Competency_iena savepoint reached. + upgrade_block_savepoint(true, 2021070600, 'competency_iena'); + } + + return $result; +} + +?> \ No newline at end of file diff --git a/entity/block_competency_iena_module.php b/entity/block_competency_iena_module.php index 76c7a151e91a73b133e4d3d3fb45f29db4002e20..f4b1abec6a2324535f9a599e851dd4cbe841ac5a 100644 --- a/entity/block_competency_iena_module.php +++ b/entity/block_competency_iena_module.php @@ -1,4 +1,4 @@ -<?php + <?php class block_competency_iena_module { @@ -153,4 +153,28 @@ class block_competency_iena_module { } return $nbmoduleOk; } + + public function get_matrix_modules_by_id_section($sectionid){ + global $DB; + $requete = $DB->get_records_sql('SELECT cmid FROM {block_competency_iena} WHERE sectionid = ?', array($sectionid)); + + return $requete; + } + + public function add_matrix_modules($cmid, $sectionid){ + global $DB; + $record = new stdClass(); + $record->cmid=$cmid; + $record->sectionid=$sectionid; + $request = $DB->insert_record('block_competency_iena', $record, false); + return $request; + } + + public function delete_matrix_modules($cmid, $sectionid){ + global $DB; + $request = $DB->delete_records('block_competency_iena', array('cmid' => $cmid, 'sectionid' => $sectionid)); + return $request; + } + + } diff --git a/entity/block_competency_iena_ressource.php b/entity/block_competency_iena_ressource.php index 9b9da2bca032bfb55b7128e116dd7224663f1cd6..f1fcc8268e6eeded196ed7a40335771dc432aa12 100644 --- a/entity/block_competency_iena_ressource.php +++ b/entity/block_competency_iena_ressource.php @@ -104,5 +104,8 @@ class block_competency_iena_ressource { global $CFG; $this->link = $CFG->wwwroot.'/mod/'.$this->type.'/view.php?id='.$this->id; } + + + } diff --git a/js/dropdown.js b/js/dropdown.js index 38edcfb8c00d805eb55031429d9088a5a2c88415..a3ef9e04148ecc4b80f1015015a337695c475458 100644 --- a/js/dropdown.js +++ b/js/dropdown.js @@ -84,9 +84,12 @@ console.log("iciiii"); //e.preventDefault(); let true_input = e.target.parentNode.parentNode.querySelector('.iena-drop-input-value'); + let value = e.target.dataset.value; + console.log(value); true_input.value = value; let input = e.target.parentNode.parentNode.querySelector('.iena-drop-input') + console.log(input); input.value = e.target.innerText; let list = e.target.parentNode; list.style.display="none"; diff --git a/js/matrix.js b/js/matrix.js index 8b0fca1f4079e11c92fc269fde02d269bea7ea21..9bfbb1e8ce092f8c901ea78e7593139ecdba3c29 100644 --- a/js/matrix.js +++ b/js/matrix.js @@ -18,6 +18,7 @@ jQuery(document).ready(function($){ $('.fram-iena').hide(); $('#filter-iena-competence').keyup(function(){ + console.log("hello filter"); var searchText = $(this).val(); $('ul > li').each(function(){ var reg = new RegExp(searchText, 'gi'); @@ -148,6 +149,33 @@ function addCompetencies(url, idcourse){ }); } +function addActivities(url, idcourse){ + //var idcomp = $('#id-comp-iena').val(); + var arrayComp=[]; + var comp = $('#tree3').find('.iena-checkbox-cpt:checked'); + for(var i=0; i<comp.length;i++){ + arrayComp.push(comp[i].value); + } + var value = []; + value[0]=arrayComp; + value[1] = idcourse; + $.ajax({ + url: url, + type: 'POST', + timeout: 10000, + contentType: 'application/x-www-form-urlencoded', + data: {addcomp:value}, + success: function(result) { + if (result.trim() == "true"){ + location.reload(); + } else { + alert(result); + location.reload(); + } + } + }); +} + function supprimer_lien(obj) { var t = obj.parentNode; var p = t.parentNode; @@ -216,6 +244,7 @@ function supprimer_lien_cpt(cpt_id) { } +//Edite le lien entre compétence et activité dans la matrice function select_update(obj){ var t = obj.parentNode; var p = t.parentNode; @@ -315,6 +344,12 @@ function selectCompetency(obj){ $("#iena-counter-cpt").html(count); } + +//Sélectionne/déselectionne une compétence et ses enfants +function selectActivity(obj){ + console.log("on select une co"); +} + //Compte le nombre de compétences sélectionnées function countSelectedCompetencies(){ return $('#tree3').find('.iena-checkbox-cpt:checked').length; diff --git a/lang/en/block_competency_iena.php b/lang/en/block_competency_iena.php index 58b50dfd8170dac1cf4316a94a58e531a51e9871..05cf22046cccfe10522082b1af1497b670841014 100644 --- a/lang/en/block_competency_iena.php +++ b/lang/en/block_competency_iena.php @@ -78,4 +78,8 @@ $string['competency_iena:addinstance'] = 'Add a new competency block'; $string['error_insert']="Some competencies were not added:"; $string['count_cpt']=" competencies selected"; + $string['activities']="Activities/Resources"; + $string['activities_placeholder']="Filter activities/resources"; + $string['count_activities']=" activities/resources selected"; + $string['add_activities']="Add activities/resources"; ?> \ No newline at end of file diff --git a/lang/fr/block_competency_iena.php b/lang/fr/block_competency_iena.php index 727873c30e2177461856f80014d79fb95f835693..59f78f3f66fbd1099f2042f9275c1781876b9f89 100644 --- a/lang/fr/block_competency_iena.php +++ b/lang/fr/block_competency_iena.php @@ -77,6 +77,10 @@ $string['competency_iena:addinstance'] = 'Ajouter un nouveau bloc Compétences'; $string['error_insert']="Certaines compétences n'ont pas été ajoutées :"; $string['count_cpt']=" compétence(s) sélectionnée(s)"; + $string['activities']="Activités/Ressources"; + $string['activities_placeholder']="Filter les activités/ressources du cours"; + $string['count_activities']=" activité(s)/ressource(s) sélectionnée(s)"; + $string['add_activities']="Ajouter les activités/ressources"; diff --git a/templates/matrix_competencies.mustache b/templates/matrix_competencies.mustache index 92fdf535ea2f582b3fd11b8c31c3fc8badf6334b..e97200e3451205f409395dec25ae4180d047dae0 100644 --- a/templates/matrix_competencies.mustache +++ b/templates/matrix_competencies.mustache @@ -16,7 +16,7 @@ </tr> </thead> <tbody> - {{#sections}} + {{#sections_matrix}} <tr> <td class="bg-primary text-white"> {{name}} @@ -25,7 +25,7 @@ <td class="td_section"></td> {{/competencies}} </tr> - {{#modules}} + {{#matrix_modules}} <tr> <td><a href="{{link}}">{{name}}</a></td> {{#mcompetencies}} @@ -61,12 +61,13 @@ </td> {{/mcompetencies}} </tr> - {{/modules}} - {{/sections}} + {{/matrix_modules}} + {{/sections_matrix}} </tbody> </table> <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#cpt-modal">{{# str }} add_comp, block_competency_iena {{/ str }}</button> +<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#activities-modal">{{# str }} add_activities, block_competency_iena {{/ str }}</button> - -{{> block_competency_iena/modal_competencies}} \ No newline at end of file +{{> block_competency_iena/modal_competencies}} +{{> block_competency_iena/modal_activities}} diff --git a/templates/modal_activities.mustache b/templates/modal_activities.mustache new file mode 100644 index 0000000000000000000000000000000000000000..b07241fd130576c5127327ca6d0e79c4d931a36d --- /dev/null +++ b/templates/modal_activities.mustache @@ -0,0 +1,79 @@ +<div class="modal fade" id="activities-modal" role="dialog"> + <div class="modal-dialog modal-lg"> + + <!-- Modal content--> + <div class="modal-content"> + <div class="modal-header"> + <h4 class="modal-title">{{# str }}select_comp,block_competency_iena{{/str}}</h4> + <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> + </div> + <div class="modal-body"> + <div class='row'> + <div class='col-md-12 activities-col'> + <h4>{{# str }}activities, block_competency_iena{{/ str }}</h4> + + + <input placeholder='{{#str}}activities_placeholder, block_competency_iena{{/str}}' type='text' id='filter-iena-activities' class='form-control mb-3'> + + <div class="well well-lg iena-cpt-sel-tree mb-3"> + <ul id='tree3'> + <li class=''> + {{#sections}} + <li class="section-{{id}}"> + <input class="iena-checkbox-activities" onclick="selectActivity(this, 'section')" type="checkbox" id="{{name}}" value="{{id}}"><a>{{name}}</a> + <ul> + {{#modules}} + <li> + <input class="iena-checkbox-activities" onclick="selectActivity(this, 'activity')" type="checkbox" id="{{name}}" value="{{id}}"><a>{{name}}</a> + </li> + {{/modules}} + </ul> + </li> + {{/sections}} + </li> + + </ul> + + </div> + <div class="iena-footer-cpt"> + <div class="iena-text-counter"> + <span id="iena-counter-cpt">0</span> {{#str}} count_activities, block_competency_iena {{/str}} + </div> + <button id='btn-comp-iena' disabled='disabled' onclick="addActivities('{{update_activities_link}}', '{{courseid}}')" type="button" class="btn btn-success btn-block mb-3">{{# str }}add_activities, block_competency_iena{{/ str }}</button> + </div> + + </div> + + </div> + </div> + + </div> + </div> + + + <div class="modal fade" id="myModalRef" role="dialog"> + <div class="modal-dialog modal-lg" style='top: 33%;max-width: 25%;'> + + <!-- Modal content--> + <div class="modal-content" style='border: 5px solid rgba(0,0,0,.2);'> + <div class="modal-header"> + <button type="button" class="close" data-dismiss="modal">×</button> + <h4 class="modal-title">{{# str }}confirm, block_competency_iena{{/ str }}</h4> + </div> + <div class="modal-body"> + <p>{{# str }}ask_confirm, block_competency_iena{{/ str }}</p> + <div class='align_center'> + <button class='btn btn-danger' data-dismiss="modal">{{# str }}no, block_competency_iena{{/ str }}</button> + <form action='{{form_link}}' method='POST'> + <input type='hidden' id='' value='' name='ref_mod'> + <button type='submit' class='btn btn-success' style='margin-left: 2rem '>{{# str }}yes, block_competency_iena{{/ str }}</button> + </form> + </div> + + + </div> + </div> + </div> + </div> + +</div> \ No newline at end of file diff --git a/version.php b/version.php index 6a3dc73307c00fb0ceb4552ffb935ccf9385042b..f118cd3836e4626bfa6b556bd5c429b4697b5a27 100644 --- a/version.php +++ b/version.php @@ -28,7 +28,7 @@ */ defined('MOODLE_INTERNAL') || die(); -$plugin->version = 2020091500; +$plugin->version = 2021070501; $plugin->requires = 2014051200; $plugin->component = 'block_competency_iena'; $plugin->release = 'v1.0'; diff --git a/view/view_competency_iena_competency_mgmt.php b/view/view_competency_iena_competency_mgmt.php index 898a9f8b64914e6f11adde56885f359a5ceb2fbb..7356e6f5e776be85bfa599e8962c059bb8644d4c 100644 --- a/view/view_competency_iena_competency_mgmt.php +++ b/view/view_competency_iena_competency_mgmt.php @@ -18,8 +18,7 @@ class view_competency_iena_competency_mgmt extends moodleform $competency_instance = new block_competency_iena_competency(); $competencies = $competency_instance->get_competencies_by_courseID($courseid); // ($COURSE->id); - $module_instance = new block_competency_iena_module(); - $modules = $module_instance->get_modules_by_courseID($courseid); + $section_instance = new block_competency_iena_section(); $sections = $section_instance->get_sections_by_id_course($courseid); diff --git a/view/view_competency_iena_competency_validation.php b/view/view_competency_iena_competency_validation.php index ea7a09f39a9fc115f8e9ad8eafbb744b7c63c888..f734a6dd4214338d8e8945e205df513a9e713c98 100644 --- a/view/view_competency_iena_competency_validation.php +++ b/view/view_competency_iena_competency_validation.php @@ -11,8 +11,7 @@ $competency_instance = new block_competency_iena_competency(); $competencies = $competency_instance->get_competencies_by_courseID($courseid); // ($COURSE->id); - $module_instance = new block_competency_iena_module(); - $modules = $module_instance->get_modules_by_courseID($courseid); + $section_instance = new block_competency_iena_section(); $sections = $section_instance->get_sections_by_id_course($courseid);