Quelle che seguono sono alcune convenzioni usate nella scrittura del codice PHP in Docebo.
OUTPUT BUFFERIZZATO
Per mostrare il codice HTML della pagina si devono evitare le funzioni print ed echo del PHP ed usare invece le funzioni della classe PageWriter. L'istanza della classe PageWriter è spesso passata alle funzioni attraverso un parametro indicato con $out, ma è comunque ricavibile con il codice seguente:
$out=& $GLOBALS['page'];
Le funzioni della classe PageWriter permettono di memorizzare il codice HTML in più buffer, separati logicamente ed indicati come "zone". In ognuna di queste zone è possibile aggiungere del codice HTML sia all'inizio che alla fine. Le principali funzioni sono:
function getWorkingZone()
restituisce la zona attualmente utilizzata
function setWorkingZone($zone)
definisce la zona attualmente utilizzata (deve essere una di quelle previste)
function add($content, $zone = null)
aggiunge il testo al contenuto della zona indicata, o quella attualmente utilizzata se non è stata specificata.
Le zone predefinite sono le seguenti:
'page_head'
il testo è inserito all'interno dell'header della pagina HTML (all'interno del tag HEAD)
'blind_navigation'
il testo è inserito nella parte dedicata ai link non visibili, presenti per rispettare i requisiti di accessibilità del sito
'header'
il testo è inserito nella parte dell'intestazione (all'interno del tag BODY)
'menu_over'
il testo è inserito nel menu orizzontale principale
'menu'
il testo è inserito nella parte dei menu della pagina
'content'
il testo è inserito nella parte dei contenuti della pagina
'footer'
il testo è inserito nella parte del piè di pagina
'debug'
il testo è inserito nella parte dedicata al debug
Per approfondire la conoscenza dell'output bufferizato in Docebo, si faccia riferimento al file:
doceboCore/lib/lib.pagewriter.php
USO DEI FORM
Nello scrivere i form si deve evitare di utilizzare direttamente i tag HTML. E' presente una classe Form che semplifica la gestione dei moduli e garantisce che vengano scritti nel rispetto dello standard XHTML. La classe Form ha come funzioni principali:
function openForm( $id , $action, $css_form = false, $method = false, $enctype = '', $other = '' )
apre il tag FORM con i relativi attributi
function closeForm()
chiude il tag FORM
function openElementSpace( $css_class = 'form_elem' )
inizia lo spazio dedicato al contenuto del form
function closeElementSpace( )
termina lo spazio dedicato al contenuto del form
function openButtonSpace($css_div = false)
inizia lo spazio dedicato ai pulsanti
function closeButtonSpace( )
termina lo spazio dedicato ai pulsanti
function getTextBox( $text , $css_line = 'form_line_text', $inline = false )
crea un box di testo
function getLineBox( $span_text, $text , $css_line = 'form_line_l', $css_f_effect = 'label_effect' )
crea una riga di testo
function getHidden( $id, $name, $value, $other_param = '' )
crea un campo HIDDEN
function getTextfield( $label_name, $id, $name, $maxlenght, $value = '', $alt_name = '', $other_after = '', $other_before = '')
crea un campo di testo
function getDatefield( $label_name, $id, $name, $value = '', $date_format = FALSE, $sel_time = FALSE, $alt_name = '', $other_after = '', $other_before = '' )
crea un campo data
function getPassword( $label_name, $id, $name, $maxlenght, $alt_name = '', $other_after = '', $other_before = '' )
crea un campo PASSWORD
function getFilefield( $label_name, $id, $name, $value = '', $alt_name = '', $other_after = '', $other_before = '' )
crea un campo per la scelta di un file
function getDropdown( $label_name, $id, $name, $all_value , $selected = '', $other_after = '', $other_before = '' )
crea un campo con menu a discesa
function getListbox( $label_name, $id, $name, $all_value, $selected = FALSE, $multiple = TRUE, $other_after = '', $other_before = '' )
crea un campo di tipo lista
function getCheckbox( $label_name, $id, $name, $value, $is_checked = false, $other_param = '' )
crea un campo di tipo checkbox
function getRadio( $label_name, $id, $name, $value, $is_checked = false )
crea un campo di tipo radio button
function getRadioSet( $group_name, $id, $name, $all_value , $selected = '', $other_after = '', $other_before = '' )
crea un insieme di campi di tipo radio button
function getButton( $id, $name, $value, $css_button = 'button', $other_param = '' )
crea un pulsante
Altre informazioni si possono ottenere esaminando il file:
doceboCore/lib/lib.form.php
USO DELLE CHIAVI DI LINGUAGGIO
Per consentire una facile traduzione di tutti i messaggi visualizzati nelle applicazioni, deve essere sempre evitato l'inserimento nel codice dei messaggi da visualizzare. Si utilizzerà invece una chiave di linguaggio, cioè una costante simbolica che fa riferimento ad un messaggio che può essere presente in più lingue all'interno del database di Docebo.
La gestione delle lingue è presente nell'interfaccia di amministrazione e permette di aggiungere nuove chiavi, di modificare quelle esistenti, e di inserire nuove traduzioni per le chiavi non ancora tradotte in una data lingua.
Dal punto di vista del programmatore è importante tenere presente che i nomi scelti per le nuove chiavi di linguaggio devono avere un apposito prefisso, in modo che non vadano a sovrapporsi con altre chiavi previste in Docebo.
Per visualizzare il contenuto di un messaggio si usa un'istanza della classe DoceboLanguage, che può essere ottenuta nel seguente modo:
$lang=& DoceboLanguage::createInstance($module, $platform, $lang_code);
dove i parametri hanno i significati seguenti:
$module = nome del modulo che contiene le chiavi di linguaggio (es. 'admin_content')
$platform = la piattaforma in uso (cms, lms, framework, ecc.)
$lang_code = lingua da utilizzare (se omesso, si considera la lingua in uso)
A questo punto i messaggi si possono estrarre con il codice seguente:
$msg = $lang->def($key);
dove il parametro $key è la chiave di linguaggio desiderata (es. '_BACK_TOLIST').
Per maggiori informazioni sulla classe DoceboLanguage si può consultare il file:
doceboCore/lib/lib.lang.php