Posts made by Valery Fremaux

Il faudrait clarifier un tout petit peu ta situation. Les exos peuvent être décrits en XML mais pas "codés" en XML, XML étant un langage de balisage (donc de descriptions) et non un langage d'instructions. Pour le php c'est différent, il s'agit bien d'une "procédure" de construction du contenu par des instructions formant un script qui pourrait être exécuté dans la séquence de production d'une page.

De ce fait, la question change de nature :

puis-je appeler du php comme contenu d'une ressource ? La réponse est : pas franchement permis à moins de construire quelquechose spécifique pour celà. En principe, si le php à exécuter est totalement indépendant de Moodle, et peut s'exécuter en une seule page (pas de micro-application), on doit pouvoir créer un nouveau type de ressource qui diffuse son contenu comme un include() plutôt que sous forme d'un affichage de texte. Moodle ne pousse pas à celà car ce type de ressource s'il est librement manipulable par des acteurs de Moodle peut constituer un trou de sécurité majeur.

Pour le XML, il faut préciser comment ce XML fonctionne ce qu'il produit dans le navigateur, avec quelle transformation, si c'est le serveur qui transforme ou la page XML qui appelle sa transformée XSL dans le client (le navigateur). Sans celà le problème est trop vague.

Por la primera pregunta, si estas en 1.8, hay un problema de instalacion que borra o modifica la cuenta "guest". El efecto es que el "guest" no logra logarse, incluso cuando el curso esta abierto.

Ademas, existe una opcion de administracion que autoriza un login implicita con la cuenta "guest" cuando se accede directamente a un curso o un contenido de un curso sin protegir.

Para arreglar el primero caso, hay que ir con phpMyAdmin en la tabla prefix_user if verificar la cuenta guest. "mnethostid" deberia ser puesta a 1 (resulta a veces puesta a 0) y el password deberia ser puesto à MD5('guest').

La id de esta cuenta deberia ser 2.

En los peores casos, la cuenta "guest" ha sido deletada completamente. Creandola con los datos esenciales encima deberia arreglar la cosa.

Il y a deux façons en effet de transférer de Moodle à Sakai : en Java si on est plutôt coté Sakai ou en Php si on est plutôt côté Moodle.

Dans les deux cas on peut aussi envisager deux sous cas :

  • moulinette end to end (la moulinette transporte "brutalement et intrusivement les données d'un système à un autre, avec éventuellement un "transformer" pluggable (de façon à pouvoir le modifier pas trop difficilement).
  • exporter en format standard (??) C'est le fond du problème, Scorm n'est pas fait pour ça. C'est un format d'empaquetage des ressources d'un cours intégrant quelques API de communication cours <-> LMS. Je pensais à AICC, mais sa position est également entre le LMS et un module de cours.

En fait, les formats d'échange standardisés entre plates-formes n'existent pas aujourd"hui. Les plates-formes étant dans une phase de guerre fratricide de conquête du marché, leur coopération directe n'est pas à l'ordre du jour. Proposer un format pivot pour la transmission de données de suivi de cursus serait fantastique, mais il faut avoir une sacré position politique pour ça ou avoir une surface qui permettrait de "poser" une proposition de fait.

Va falloir faire du "custom" j'en ai bien peur.

En effet, la modification n'est pas très importante. Elle concerne essentiellement les fichiers du répertoire "course" notemment celui qui prend en charge la boucle d'affichage des sections (thématique ou calendaire).

Les développeurs du module/patch opencourseware ont du faire quelque chose de similaire, puisqu'ils modifient la barre d'outils affiché pour chaque entrée de module :

http://metasolutions.us/resources/moodle/mods/ocw_metamod.php

A noter que tout semble se passer dans la fonction "print_section" dans course/lib.php.

Il doit être possible de caler un piège dans la boucle de construction de la section pour prendre en compte le cas particulier d'une ressource "in-course", se substituant au lien habituellement imprimé, et remplaçant ce lien (dont on voit très bien la construction dans cette fonction) par le résultat d'un appel de fonction supplémentaire dans l'activité (modname_get_incourse_content($moduleid)) pourrait le faire.

On peut même généraliser cette production à tous les modules, pourvu qu'ils fournissent cette fonction :

$incourse_function = $mod->modname . '_get_incourse_content';
if (isset($mod->hasincoursecontent) && $mod->hasincoursecontent){
   include_once("{$CFG->rootdir}/mod/{$mod->modname}/lib.php");
   if (function_exists($incourse_function)){
      echo $incourse_function($mod->id);
   }
}

Voilà un type de wrapping dynamique très utilisé dans Moodle.

On suppose ici que le module dispose d'un champ optionnel hasincoursecontent booléen à 1 dans la base.