Plugin CMS version VALEISTI (Valery Fremaux)

Re: Plugin CMS version VALEISTI (Valery Fremaux)

par Valery Fremaux,
Nombre de réponses : 0

Oui,

Le problème de base est qu'il n'existe pas de prise en charge de l'enregistrement des nouvelles valeurs de format de page.

A l'origine, l'intégration d'un format de page d'accueil supplémentaire demande :

  • un ajout dans course/lib.php (on se demande pourquoi c'est là)
  • une modif dans lib/adminlib.php, classe admin_setting_courselist_frontpage::loadChoices()

Soit deux points d'ancrage dans le core triste

 J'ai pu mettre au point un patch qui essaie de diminuer l'impact :

class admin_setting_courselist_frontpage extends admin_setting {
    var $choices;

       ...

        function load_choices() {
        if (is_array($this->choices)) {
            return true;
        }
        $this->choices = array(FRONTPAGENEWS          => get_string('frontpagenews'),
                               FRONTPAGECOURSELIST    => get_string('frontpagecourselist'),
                               FRONTPAGECATEGORYNAMES => get_string('frontpagecategorynames'),
                               FRONTPAGECATEGORYCOMBO => get_string('frontpagecategorycombo'),
        // PATCH : Generic hook for adding any custom frontpage plugin
        );
        if (file_exists($CFG->dirroot.'/local/frontpage/lib.php')){
            include_once($CFG->dirroot.'/local/frontpage/lib.php');
            if (function_exists('local_add_frontpage_hook')){
                $this->choices += local_add_frontpage_hook();
            }
        }

        $this->choices += array('none'                 => get_string('none'));
        //                  'none'                 => get_string('none'));
        // /PATCH
        if ($this->name == 'frontpage' and count_records('course') > FRONTPAGECOURSELIMIT) {
            unset($this->choices[FRONTPAGECOURSELIST]);
        }
        return true;
    }

Ce patch délègue à une customisation "/local" le soin de déclarer les nouveaux types de pages. Il suffit de créer un fichier /local/frontpage/lib.php qui effectue la définition :

define('FRONTPAGECMS', 30);

L'essentiel du problème est qu'il n'existe pas de possibilité de "réserver" un code de page d'accueil, (comme on "réserve" un numéro de port TCP ou UDP auprès de l'IANA). Cette modification reporte le problème HORS du code noyau, onc à un endroit plus acceptable pour les exploitants. Il n'est donc plus nécessaire de toucher à course/lib.php.

Cheers.