Questa è una vecchia versione del documento!
Creare un nuovo strumento
Nelle prossime righe verrà indicata l'architettura base di uno strumento e ciò che lo sviluppatore deve creare per poterlo integrare nel Sistema.
Ogni strumento deve essere composto da:
-  un modello, che definisce lo strumento sia a livello di database sia a livello di classe che estende AppModel 
-  un controller, dove sono definite, oltre ad altre, le funzioni di creazione/modifica di uno strumento 
-  una vista, che ne permette la visualizzazione 
-  le api, che gli permettono di comunicare con gli altri moduli 
-  i “files stringhe” che permettono di gestire la visualizzazione in inglese o italiano delle stringhe di quello strumento
 
 
Esempio: creazione di uno strumento chiamato “Calendar”.
-  Creazione delle CARTELLE relative allo strumento: - 
-  home/app/apis/CALENDAR: contiene le api specifiche del nuovo strumento 
-  home/app/views/CALENDAR: contiene i files che permettono la visualizzazione dello strumento 
 
-  Creazione dei FILES relativi allo strumento: - 
-  home/app/models/CALENDAR.PHP: viene definita la classe CALENDAR e si specificano le sue dipendenze con altre classi. 
-  home/app/controllers/CALENDAR_CONTROLLERS.PHP: viene definito il controller di CALENDAR. Le sue funzioni dipendono dalla tipologia dello strumento e da ciò che lo stesso deve svolgere; presumibilmente, se lo strumento CALENDAR dovesse servire a creare un nuovo calendario con gli impegni di ogni utente, nel file calendar_controllers.php sarebbero racchiuse - tra le altre - le funzioni create ed edit che gestirebbero la creazione e modifica di un nuovo calendario per ogni singolo utente. 
-  home/app/strings/ita/CALENDAR.TPL: file che racchiude le coppie 'identificatore-stringa italiana' per il controller e per le view dello strumento. 
-  home/app/strings/eng/CALENDAR.TPL: file che racchiude le coppie 'identificatore-stringa inglese' per il controller e per le view dello strumento. 
-  home/app/apis/CALENDAR/CALENDAR_ API- _CONTROLLER.PHP: file contenente le funzioni che permettono allo strumento di interfacciarsi con gli altri moduli. 
-  home/app/apis/CALENDAR/CALENDAR_ API- _VIEW.PHP: file contenente la classe CalendarApiView che estende ApiView. 
-  home/app/apis/CALENDAR/CALENDAR_EVENT_HANDLERS.XML: file xml nel quale sono riportati gli eventi ai quali risponde lo strumento stesso. 
 
Ci sono poi dei files e delle cartelle che vengono create solo se lo strumento ne richiede l'utilizzo, come la cartella home/app/apis/CALENDAR/VIEWS con i file .tpl delle viste relative alle api.
All'interno di home/app/views/CALENDAR vanno inseriti i file .tpl che gestiscono la vista dei componenti dello strumento (come ad esempio edit.tpl, create.tpl, addstep.tpl etc…); questi file quindi dipendono dalla struttura dello strumento stesso.
Per la creazione di un nuovo strumento è utile sapere anche quali sono le funzioni che, indipendentemente dal tipo di strumento, vanno implementate; queste sono le funzioni di permission, ovvero quelle che gestiscono i permessi, riportate di seguito:
  function permissionsGetObjects() {
	
	$_agendas['Agenda:*'] = $this->s('ALL_AGENDAS');
	
	$agendas = $this->Agenda->findAll();
	foreach ($agendas as $Agenda) {
		
		$id = $Agenda['Agenda']['id'];
		$_agendas['Agenda:'.$id] = $Agenda['Agenda']['title'];
		
	}
	return $_agendas;
	
}