Man Tecnico:CMS home page
Analisi dei requisiti
Si vuole gestire l'home page dell'applicativo in modo dinamico, con la possibilità per gli amministratori di inserire testi formattati e allegati. Si intende comunque mantenere semplicità nella gestione e coerenza con lo stile grafico dell'applicativo. Risulta necessario poter gestire i contenuti in maniera storicizzata per gli anni di budget tramite una validità temporale per gli stessi. Si potrà decidere se un contenuto sarà presente per tutti gli anni di budget o solamente per uno o più anni, l'home page visualizzerà solamente i contenuti validi per l'anno selezionato.
Descrizione delle funzionalità
Le funzionalià identificate in fase di analisi verranno garantite da un'apposita sezione rappresentata da un tab nella pagina di configurazione del core. In questa sarà presente una grid con l'elenco di sezioni che compongono l'home page ed i relativi anni di validità. Inserendo una nuova sezione se ne potranno definire l'ordinamento in home page, la tipologia e gli anni di validità mentre modificandola se ne potrà definire il testo oppure allegare un file (ogni sezione può contenere un solo file), dipendentemente dalla tipologia della stessa.
Scelte implementative
Per l'implementazione delle funzionalità individuate vengono utilizzati i componenti standard del framework ffGrid ed ffRecord, e utilizzata la classe Helper degli allegati (AllegatoHelper) per poter procedere con il caricamento ajax dei file.
Modello ER
cms_home_sezione
| Campo | Tipo | Obbligatorio | Note |
|---|---|---|---|
| ID | Int | Si | (PK) Identificativo dell’allegato. Autoincrementale. |
| ordinamento | Int | No | Ordine di visualizzazione in home page". |
| tipo | Char | No | Tipologia della sezione. |
| testo | text | No | Eventuale testo della sezione. |
| anno_inizio | int | No | Anno di inizio validità della sezione. |
| anno_fine | int | No | Anno di fine validità della sezione. |
cms_home_sezione_allegato
| Campo | Tipo | Obbligatorio | Note |
|---|---|---|---|
| ID | Int | Si | (PK) Identificativo dell’allegato. Autoincrementale. |
| ID_allegato | Int | No | ID del record corrispondente nella tabella "allegato"". |
| ID_sezione | Int | No | ID del record corrispondente nella tabella "cms_home_sezione"". |
| createdAt | Datetime | No | Data e ora di creazione. |
Modello Classi
class CmsHomeSezione extends Entity
Rappresenta una sezione nell'home page.
- Attributi
:*protected static $tablename = "cms_home_sezione";
- Metodi
:*public static function getSezioneAnno(AnnoBudget $anno_budget) ::Restituisce un array contenente oggetti di tipo CmsHomeSezione rappresentanti le sezioni attive per l'anno passato come parametro :*public function isAllegato() ::Valorizza ad "A" l'attributo "tipo" dell'istanza. :*public function getTipoDescrizione() ::Restituisce "ALLEGATO" o "HTML" dipendentemente dalla tipologia della sezione istanziata. :*public function getTipoField($cm, $anno, $user) ::Restituisce un ffField valorizzato opportunamente in base alla tipologia della sezione istanziata. Riceve l'oggetto cm, l'anno di bdget e l'utente come parametro. :*public static function isValidRangeAnno($anno_introduzione, $anno_termine) ::Restituisce true o false a seconda che gli anni di introduzione e termine passati come parametro costituiscano un intervallo temporale valido. :*public function delete() ::Vengono eliminati tutti i file allegati alla sezione istanziata, sia lato db che fisicamente su disco.
class CmsHomeSezioneAllegato extends Allegato
Rappresenta un allegato alla sezione in home page.
- Attributi
:*public static $bridge_table_name = "cms_home_sezione_allegato";
- Metodi
:*public static function getAll($filters = array()) ::Viene restituito un array di istanze della classe, corrispondenti a tutti i record della tabella "cms_home_sezione_allegato" in join con la tabella "allegato". Il parametro $filters è un array di array associativi "campo_db"=>valore che permette di limitare i risultati ai soli elementi corrispondenti alle condizioni impostate nel parametro che vengono applicati alla query di recupero dei dati. :*public function save($array_row) ::Inserimento / aggiornamento del record della tabella "allegato" del DB corrispondente all'oggetto. :*public function hardDelete() ::Eliminazione fisica del record della tabella "cms_home_sezione" sul DB corrispondente all'istanza ed eliminazione fisica su disco.