Skip to content
Snippets Groups Projects
Commit c9201c18 authored by Myriam Delaruelle's avatar Myriam Delaruelle
Browse files

ajout modal activités

parent 8307ef30
Branches
Tags
No related merge requests found
Showing with 360 additions and 35 deletions
...@@ -32,6 +32,7 @@ ...@@ -32,6 +32,7 @@
require_login($course, false, NULL); require_login($course, false, NULL);
if ($_POST) { if ($_POST) {
//Donne les infos sur la comp
if (isset($_POST["idcompetence"])) { if (isset($_POST["idcompetence"])) {
$idcompetence = htmlspecialchars($_POST["idcompetence"]); $idcompetence = htmlspecialchars($_POST["idcompetence"]);
$compI = new block_competency_iena_competency(); $compI = new block_competency_iena_competency();
...@@ -41,7 +42,7 @@ ...@@ -41,7 +42,7 @@
$tab['id'] = $compI->id; $tab['id'] = $compI->id;
echo json_encode($tab); echo json_encode($tab);
} }
//Ajoute un tableau d'id de compétences à la matrice
if (isset($_POST["addcomp"])) { if (isset($_POST["addcomp"])) {
$value = $_POST["addcomp"]; $value = $_POST["addcomp"];
//return var_dump($value); //return var_dump($value);
...@@ -67,6 +68,32 @@ ...@@ -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 // updateTextRef
if (isset($_POST["idref"])) { if (isset($_POST["idref"])) {
......
...@@ -56,7 +56,8 @@ ...@@ -56,7 +56,8 @@
} else { } else {
echo 'false'; echo 'false';
} }
} // Insert or update DB }
// Insert or update DB
else { else {
$module_id = htmlspecialchars($_POST['info'][0]); $module_id = htmlspecialchars($_POST['info'][0]);
$competency_id = htmlspecialchars($_POST['info'][1]); $competency_id = htmlspecialchars($_POST['info'][1]);
...@@ -159,25 +160,79 @@ ...@@ -159,25 +160,79 @@
//$matrix_modules=new block_competency_iena_module();
$module_instance = 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(); //$section_instance = new block_competency_iena_section();
$sections = $section_instance->get_sections_by_id_course($courseid); //$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; $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 //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) { foreach ($sections as $section) {
$section->modules=array();
foreach ($modules as $module) { $section_modal=new stdClass();
if($module->sectionid == $section->id){ $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 = 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->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(); $module->mcompetencies=array();
foreach ($competencies as $competency) { foreach ($competencies as $competency) {
$key=array_search($competency->id, array_column($module_competencies, 'id')); $key=array_search($competency->id, array_column($module_competencies, 'id'));
...@@ -190,23 +245,25 @@ ...@@ -190,23 +245,25 @@
} }
array_push($section->modules,$module); array_push($section_matrix->matrix_modules,$module);
} }*/
}
if(count($section_matrix->matrix_modules)>0){
if ( $section->name == NULL ) { $section_matrix->name =$section->name;
$section->name = "Section " . $section->section; $section_matrix->id=$section->id;
} array_push($sections_matrix, $section_matrix);
if(count($section->modules)==0){
unset($sections[$index]);
} }
$section_modal->id=$section->id;
$section_modal->name=$section->name;
array_push($sections_modal, $section_modal);
$index++; $index++;
} }
//Comme on a unset, on réindexe le tableau pour des clés propres //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 //Pour les référentiels
$refI = new block_competency_iena_referentiel(); $refI = new block_competency_iena_referentiel();
$frameworks = $refI->get_referentiels_all(); $frameworks = $refI->get_referentiels_all();
...@@ -230,9 +287,12 @@ ...@@ -230,9 +287,12 @@
$data=array(); $data=array();
$data['competencies']=$competencies; $data['competencies']=$competencies;
//$data['modules']=$modules; //$data['modules']=$modules;
$data['sections']=$sections; $data['sections']=$sections_modal;
$data['sections_matrix']=$sections_matrix;
$data['frameworks']=array_values($frameworks); $data['frameworks']=array_values($frameworks);
$data['ordered_competencies']=$ordered_competencies; $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['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; $data['update_link']=$CFG->wwwroot . '/blocks/competency_iena/competency_iena_competencies_api.php?courseid=' . $COURSE->id;
......
<?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
<?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
<?php <?php
class block_competency_iena_module { class block_competency_iena_module {
...@@ -153,4 +153,28 @@ class block_competency_iena_module { ...@@ -153,4 +153,28 @@ class block_competency_iena_module {
} }
return $nbmoduleOk; 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;
}
} }
...@@ -104,5 +104,8 @@ class block_competency_iena_ressource { ...@@ -104,5 +104,8 @@ class block_competency_iena_ressource {
global $CFG; global $CFG;
$this->link = $CFG->wwwroot.'/mod/'.$this->type.'/view.php?id='.$this->id; $this->link = $CFG->wwwroot.'/mod/'.$this->type.'/view.php?id='.$this->id;
} }
} }
...@@ -84,9 +84,12 @@ ...@@ -84,9 +84,12 @@
console.log("iciiii"); console.log("iciiii");
//e.preventDefault(); //e.preventDefault();
let true_input = e.target.parentNode.parentNode.querySelector('.iena-drop-input-value'); let true_input = e.target.parentNode.parentNode.querySelector('.iena-drop-input-value');
let value = e.target.dataset.value; let value = e.target.dataset.value;
console.log(value);
true_input.value = value; true_input.value = value;
let input = e.target.parentNode.parentNode.querySelector('.iena-drop-input') let input = e.target.parentNode.parentNode.querySelector('.iena-drop-input')
console.log(input);
input.value = e.target.innerText; input.value = e.target.innerText;
let list = e.target.parentNode; let list = e.target.parentNode;
list.style.display="none"; list.style.display="none";
......
...@@ -18,6 +18,7 @@ jQuery(document).ready(function($){ ...@@ -18,6 +18,7 @@ jQuery(document).ready(function($){
$('.fram-iena').hide(); $('.fram-iena').hide();
$('#filter-iena-competence').keyup(function(){ $('#filter-iena-competence').keyup(function(){
console.log("hello filter");
var searchText = $(this).val(); var searchText = $(this).val();
$('ul > li').each(function(){ $('ul > li').each(function(){
var reg = new RegExp(searchText, 'gi'); var reg = new RegExp(searchText, 'gi');
...@@ -148,6 +149,33 @@ function addCompetencies(url, idcourse){ ...@@ -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) { function supprimer_lien(obj) {
var t = obj.parentNode; var t = obj.parentNode;
var p = t.parentNode; var p = t.parentNode;
...@@ -216,6 +244,7 @@ function supprimer_lien_cpt(cpt_id) { ...@@ -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){ function select_update(obj){
var t = obj.parentNode; var t = obj.parentNode;
var p = t.parentNode; var p = t.parentNode;
...@@ -315,6 +344,12 @@ function selectCompetency(obj){ ...@@ -315,6 +344,12 @@ function selectCompetency(obj){
$("#iena-counter-cpt").html(count); $("#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 //Compte le nombre de compétences sélectionnées
function countSelectedCompetencies(){ function countSelectedCompetencies(){
return $('#tree3').find('.iena-checkbox-cpt:checked').length; return $('#tree3').find('.iena-checkbox-cpt:checked').length;
......
...@@ -78,4 +78,8 @@ ...@@ -78,4 +78,8 @@
$string['competency_iena:addinstance'] = 'Add a new competency block'; $string['competency_iena:addinstance'] = 'Add a new competency block';
$string['error_insert']="Some competencies were not added:"; $string['error_insert']="Some competencies were not added:";
$string['count_cpt']=" competencies selected"; $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
...@@ -77,6 +77,10 @@ ...@@ -77,6 +77,10 @@
$string['competency_iena:addinstance'] = 'Ajouter un nouveau bloc Compétences'; $string['competency_iena:addinstance'] = 'Ajouter un nouveau bloc Compétences';
$string['error_insert']="Certaines compétences n'ont pas été ajoutées :"; $string['error_insert']="Certaines compétences n'ont pas été ajoutées :";
$string['count_cpt']=" compétence(s) sélectionnée(s)"; $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";
......
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
{{#sections}} {{#sections_matrix}}
<tr> <tr>
<td class="bg-primary text-white"> <td class="bg-primary text-white">
{{name}} {{name}}
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
<td class="td_section"></td> <td class="td_section"></td>
{{/competencies}} {{/competencies}}
</tr> </tr>
{{#modules}} {{#matrix_modules}}
<tr> <tr>
<td><a href="{{link}}">{{name}}</a></td> <td><a href="{{link}}">{{name}}</a></td>
{{#mcompetencies}} {{#mcompetencies}}
...@@ -61,12 +61,13 @@ ...@@ -61,12 +61,13 @@
</td> </td>
{{/mcompetencies}} {{/mcompetencies}}
</tr> </tr>
{{/modules}} {{/matrix_modules}}
{{/sections}} {{/sections_matrix}}
</tbody> </tbody>
</table> </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="#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}}
{{> block_competency_iena/modal_competencies}} {{> block_competency_iena/modal_activities}}
\ No newline at end of file
<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">&times;</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">&times;</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
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
*/ */
defined('MOODLE_INTERNAL') || die(); defined('MOODLE_INTERNAL') || die();
$plugin->version = 2020091500; $plugin->version = 2021070501;
$plugin->requires = 2014051200; $plugin->requires = 2014051200;
$plugin->component = 'block_competency_iena'; $plugin->component = 'block_competency_iena';
$plugin->release = 'v1.0'; $plugin->release = 'v1.0';
......
...@@ -18,8 +18,7 @@ class view_competency_iena_competency_mgmt extends moodleform ...@@ -18,8 +18,7 @@ class view_competency_iena_competency_mgmt extends moodleform
$competency_instance = new block_competency_iena_competency(); $competency_instance = new block_competency_iena_competency();
$competencies = $competency_instance->get_competencies_by_courseID($courseid); // ($COURSE->id); $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(); $section_instance = new block_competency_iena_section();
$sections = $section_instance->get_sections_by_id_course($courseid); $sections = $section_instance->get_sections_by_id_course($courseid);
......
...@@ -11,8 +11,7 @@ ...@@ -11,8 +11,7 @@
$competency_instance = new block_competency_iena_competency(); $competency_instance = new block_competency_iena_competency();
$competencies = $competency_instance->get_competencies_by_courseID($courseid); // ($COURSE->id); $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(); $section_instance = new block_competency_iena_section();
$sections = $section_instance->get_sections_by_id_course($courseid); $sections = $section_instance->get_sections_by_id_course($courseid);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment