mercoledì 3 febbraio 2010

Lyra, parametri di configurazione globali

Dopo la gestione dei parametri di configurazione a livello di contenuto e di tipo di contenuto, mi è sembrato logico creare una funzione che consenta di impostare dal backend dei parametri di configurazione globali.

Le definizioni di tali parametri, analogamente a quanto avviene per i parametri dei contenuti, è contenuta in un file YAML (config/lyra_params.yml). A partire da questo file viene generato il form (LyraSettingsForm) per l'inserimento e la modifica dei valori che vengono salvati nel database (tabella settings, modello LyraSettings). Infine la classe LyraCfg serve a leggere il valore di un parametro.

Come si vede dalla figura attualmente ci sono solo due parametri di configurazione, quando ne serviranno altri sarà sufficiente aggiungere le definizioni in lyra_params.yml.

Tanto per fare un esempio vediamo come si utilizza il parametro Moderazione commenti.

config/lyra_params.yml

...
moderate_comments:
    type: list
    choices: [moderate_all, moderate_no_auth, moderate_none]
    default: moderate_all
...

Il tipo list indica che il parametro può assumere un valore tra quelli indicati in choices.

  • moderate_all: tutti i commenti sono sempre moderati. Compaiono sul sito solo previa approvazione dell'amministratore.
  • moderate_no_auth: solo i commenti degli utenti anonimi (cioè che visitano il sito senza aver fatto il login) sono moderati.
  • moderate_none: nessuna moderazione, ogni commento è immediatamente visibile sul sito.

Da notare che gli identificativi dei parametri come i valori delle opzioni sono sempre in inglese nel file YAML, ma vengono tradotti nei file di lingua (nella figura all'inizio si vedono infatti in italiano).

In questa parte della funzione updateObject() di LyraCommentForm, a seconda del valore scelto per il parametro si imposta o meno a true il campo is_active (pubblicato) del commento appena inserito.

lib/form/doctrine/LyraCommentsForm.class.php
...
      switch(LyraCfg::get('moderate_comments')) {
        case 'moderate_none':
          $publish = true;
          break;
        case 'moderate_no_auth':
          $publish = $user_auth;
          break;
        case 'moderate_all':
        default:
          $publish = false;
          break;
      }
      $item->setIsActive($publish);
...

Accenno solo brevemente alle altre modifiche contenute nelle revisioni 37 e 38: i file contenenti le definizioni dei parametri di configurazione dei contenuti / tipi di contenuto non sono più nella cartella config dell'applicazione, ma nella cartella config del modulo (backend). Ad esempio

config/params/article.yml

non esiste più, l'equivalente è ora

apps/backend/modules/article/config/params.yml

Il codice nel metodo configure() di LyraArticleForm che gestiva la configurazione dei form embedded usati per visualizzare e modificare i parametri di configurazione dell'articolo è stato spostato in LyraContentForm. Questa parte sarà standard e comune a tutti i tipi di contenuto, inserendola nella classe base eviteremo future duplicazioni di codice. Il tutto sarà più chiaro in seguito appena saranno creati altri tipi di contenuto in aggiunta ad article.

Sono stati aggiunti nuovi campi a LyraContentType: type, model, plugin. A cosa servono si avrà modo di vederlo nelle prossime puntate. Per il momento è tutto.

Nessun commento:

Posta un commento

Nota. Solo i membri di questo blog possono postare un commento.