Ciao a tutti,
mi sono accorto che modificando un menu già associato ad uno o più corsi queste non propaga le modifiche al menu degli utenti già iscritti a tali corsi, l'unico modo sarebbe cancellare il corso e ricrearlo oppure disiscrivere tutti gli utenti dei corsi che hanno quel menu e iscriverli nuovamente.
Ora chiedo se una possibile soluzione sia modificare il file /appLms/admin/modules/amanmenu/amanmenu.php come segue:
Ho modificato la funzione 'mancustom()':
070: if($mod_perm) {
071: $content_h[] = '<img src="'.getPathImage().'standard/edit.png" title="'.$lang->def('_MOD').'" '
072: .'alt="'.$lang->def('_MOD').'" />';
073: $type_h[] = 'image';
074:
075: $content_h[] = '<img src="'.getPathImage().'standard/move.png" title="'.$lang->def('_MOD').' '.$lang->def('_COURSES').'" '
076: .'alt="'.$lang->def('_MOD').' '.$lang->def('_COURSES').'" height="19" width="19" />';
077: $type_h[] = 'image';
078:
079: $content_h[] = '<img src="'.getPathImage().'standard/delete.png" title="'.$lang->def('_DEL').'" '
080: .'alt="'.$lang->def('_DEL').'" />';
081: $type_h[] = 'image';
082: }
104: $content[] = '<a href="index.php?modname=amanmenu&op=modcustom&id_custom='.$id_custom.'"'
105: .'title="'.$lang->def('_MOD').' : '.$title_custom.'">'
106: .'<img src="'.getPathImage().'standard/edit.png" alt="'.$lang->def('_MOD').' : '.$title_custom.'" /></a>';
107:
108: $content[] = '<a class="confirm-popup" href="index.php?modname=amanmenu&op=fixuccustom&id_custom='.$id_custom.'"'
109: .' title="'.$lang->def('_MOD').' '.$lang->def('_COURSES').' : '.$title_custom.'">'
110: .'<img src="'.getPathImage().'standard/move.png" alt="'.$lang->def('_MOD').' '.$lang->def('_COURSES').' : '.$title_custom.'" height="19" width="19" /></a>';
111:
112: $content[] = '<a class="confirm-popup" href="index.php?modname=amanmenu&op=delcustom&id_custom='.$id_custom.'"'
113: .' title="'.$lang->def('_DEL').' : '.$title_custom.'">'
114: .'<img src="'.getPathImage().'standard/delete.png" alt="'.$lang->def('_DEL').' : '.$title_custom.'" /></a>';
119: require_once(_base_.'/lib/lib.dialog.php');
120: //setupHrefDialogBox('a[href*=delcustom]');
121: setupHrefDialogBox('a.confirm-popup');
Ho modificato la funzione 'manmenuDispatch($op)':
1283: case "delcustom" : {
1284: delcustom();
1285: };break;
1286: case "fixuccustom" : {
1287: fixUserCourseMenu();
1288: };break;
Ho creato la nuova funzione 'fixUserCourseMenu()' che deve essere sicuramente migliorata sia nella gestione degli errori che nelle prestazioni:
function fixUserCourseMenu() {
checkPerm('mod');
require_once(_base_.'/lib/lib.form.php');
$out =& $GLOBALS['page'];
$out->setWorkingZone('content');
$id_custom = Get::req('id_custom', DOTY_INT, 0);
if(Get::req('confirm', DOTY_INT, 0) == 1) {
require_once(_lms_.'/lib/lib.track_user.php');
require_once(_lms_.'/lib/lib.course.php');
require_once(_lms_.'/lib/lib.manmenu.php');
$course_man = new Man_Course();
$acl_man = Docebo::aclm();
$result = 1;
$query = "SELECT idCourse FROM ".$GLOBALS['prefix_lms']."_course WHERE id_menucustom = '$id_custom'";
$idCourses = sql_query($query);
while(list($id_course) = sql_fetch_row($idCourses)) {
$docebo_course = new DoceboCourse($id_course);
$user_levels = getSubscribedLevel($id_course, true);
$course_idst_list =& $course_man->getCourseIdstGroupLevel($id_course);
foreach(array_keys($user_levels) as $level) {
foreach ($user_levels[$level] as $user_id) {
$acl_man->removeFromGroup($course_idst_list[$level], $user_id);
}
}
foreach ($course_idst_list as $lv => $idst) {
$acl_man->deleteGroup($idst);
}
$alluser = getIDGroupAlluser($id_course);
$acl_man->deleteGroup($alluser);
$course_man->removeCourseMenu($id_course);
$course_idst_list =& $docebo_course->createCourseLevel($id_course);
createCourseMenuFromCustom($id_custom, $id_course, $course_idst_list);
foreach(array_keys($user_levels) as $level) {
foreach ($user_levels[$level] as $user_id) {
$acl_man->addToGroup($course_idst_list[$level], $user_id);
}
}
}
}
Util::jump_to('index.php?modname=amanmenu&op=mancustom&result='.$result);
}
E' possibile sapere se può essere una soluzione percorribile e se, dopo gli eventuali accorgimenti del caso da parte di un programmatore esperto, essere inserita in una prossima release?
Grazie,
Luca
Forma 2.1 - Problema Configurazione Elearning -> Gestione Menu
Re: Forma 2.1 - Problema Configurazione Elearning -> Gestione Menu
Ciao Luca, in realtà il comportamento che descrivi è normale in forma, per consentire di avere menu personalizzati per ogni corso senza che le personalizzazioni vengano sovrascritte per errore quando si modifica il modello di menu.
Nell'elenco dei corsi c'è una funzione apposita che ti consente di applicare o riapplicare un menu ad un corso: una volta modificato il modello di menu, ti basta riapplicarlo per aggiornare le voci per tutti gli utenti iscritti
Nell'elenco dei corsi c'è una funzione apposita che ti consente di applicare o riapplicare un menu ad un corso: una volta modificato il modello di menu, ti basta riapplicarlo per aggiornare le voci per tutti gli utenti iscritti