Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
creare_un_nuovo_strumento [14/06/2010 10:51] |
creare_un_nuovo_strumento [14/07/2010 16:09] |
||
---|---|---|---|
Linea 5: | Linea 5: | ||
Ogni strumento deve essere composto da: | 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 modello, che definisce lo strumento sia a livello di database sia a livello di //classe// che estende //AppModel// | ||
- | * un controller, dove sono definite le funzioni di creazione/modifica di uno strumento | + | * un controller, dove sono definite, oltre ad altre, le funzioni di creazione/modifica di uno strumento |
* una vista, che ne permette la visualizzazione | * una vista, che ne permette la visualizzazione | ||
* le api, che gli permettono di comunicare con gli altri moduli | * le api, che gli permettono di comunicare con gli altri moduli | ||
- | * i "files stringhe" che permettono di gestire la traduzione in inglese o italiano delle stringhe visualizzate per quello strumento\\ | + | * i "files stringhe" che permettono di gestire la visualizzazione in inglese o italiano delle stringhe di quello strumento\\ |
---- | ---- | ||
Linea 14: | Linea 14: | ||
**Esempio: creazione di uno strumento chiamato "Calendar".**\\ | **Esempio: creazione di uno strumento chiamato "Calendar".**\\ | ||
- | - Creazione delle cartelle relative allo strumento: | + | - Creazione delle CARTELLE relative allo strumento: |
- home/app/apis/CALENDAR: contiene le api specifiche del nuovo 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 | - home/app/views/CALENDAR: contiene i files che permettono la visualizzazione dello strumento | ||
- | + | - Creazione dei FILES relativi allo 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/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/controllers/CALENDAR_CONTROLLERS.PHP: | + | - 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/ita/CALENDAR.TPL | + | - 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/strings/eng/CALENDAR.TPL | + | - 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_CONTROLLER.PHP | + | - home/app/apis/CALENDAR/CALENDAR_API_VIEW.PHP: file contenente la classe CalendarApiView che estende ApiView. |
- | - home/app/apis/CALENDAR/CALENDAR_API_VIEW.PHP | + | - home/app/apis/CALENDAR/CALENDAR_EVENT_HANDLERS.XML: file xml nel quale sono riportati gli eventi ai quali risponde lo strumento stesso. |
- | - home/app/apis/CALENDAR/CALENDAR_EVENT_HANDLERS.XML | + | |
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.\\ | 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.\\ | 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:\\ | ||
+ | \\ | ||
+ | * Es. PERMISSION GET OBJECTS per lo strumento AGENDA - produce un array con all'interno tutte le agende prodotte dal modulo agenda. | ||
+ | |||
+ | 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; | ||
+ | |||
+ | } | ||
+ | \\ | ||
+ | * Es. PERMISSION GET ACTIONS per lo strumento AGENDA - produce un array di stringhe contenente tutte le azioni prodotte dal modulo agenda. | ||
+ | |||
+ | function permissionsGetActions() { | ||
+ | |||
+ | return array( | ||
+ | 'admin' => $this->s('PERMISSION_ADMIN_DESCRIPTION'), | ||
+ | 'view' => $this->s('PERMISSION_VIEW_DESCRIPTION'), | ||
+ | 'create' => $this->s('PERMISSION_CREATE_DESCRIPTION'), | ||
+ | 'upload' => $this->s('PERMISSION_UPLOAD_DESCRIPTION'), | ||
+ | 'rate' => $this->s('PERMISSION_RATE_DESCRIPTION'), | ||
+ | 'download' => $this->s('PERMISSION_DOWNLOAD_DESCRIPTION'), | ||
+ | 'edit' => $this->s('PERMISSION_EDIT_DESCRIPTION'), | ||
+ | 'delete' => $this->s('PERMISSION_DELETE_DESCRIPTION'), | ||
+ | ); | ||
+ | } | ||
+ | \\ | ||
+ | * Es. PERMISSION GET ROLES per lo strumento AGENDA - produce un array dove sono definiti i ruoli del modulo agenda. | ||
+ | |||
+ | function permissionsGetRoles() { | ||
+ | |||
+ | $roles['moderator']['label'] = $this->s('AGENDA_MODERATOR'); | ||
+ | $roles['moderator']['values'] = array( 'admin' =>'deny', | ||
+ | 'edit' =>'allow', | ||
+ | 'delete'=>'deny' | ||
+ | ); | ||
+ | |||
+ | $roles['administrator']['label'] = $this->s('AGENDA_ADMINISTRATOR'); | ||
+ | $roles['administrator']['values'] = array( 'admin' =>'allow', | ||
+ | 'edit' =>'allow', | ||
+ | 'delete' => 'allow' | ||
+ | ); | ||
+ | return $roles; | ||
+ | } | ||
+ | |||
+ | \\ | ||
+ | Oltre alle funzioni che gestiscono i permessi, se il nuovo strumento fa parte della classe degli strumenti deliberativi - come ad esempio lo strumento di //consultazione certificata// -, è fondamentale inserire il metodo //toolinfo//, che restituisce un array con le informazioni sullo strumento: | ||
+ | \\ | ||
+ | * Es. TOOLINFO dello strumento Consultazione Certificata: | ||
+ | |||
+ | function toolInfo() { | ||
+ | |||
+ | $info['owner'] = 'Polls'; | ||
+ | $info['toolName'] = $this->s('POLLS_NAME'); | ||
+ | $info['toolDescription'] = $this->s('POLL_TOOL_DESCRIPTION'); | ||
+ | $info['createApiMethod'] = 'toolCreate'; | ||
+ | $info['editPath'] = '/polls/edit/%d'; | ||
+ | $info['viewPath'] = '/polls/view/%d'; | ||
+ | $info['accessPermission'] = 'view'; | ||
+ | |||
+ | $info['resultPath'] = '/polls/showresults/%d'; | ||
+ | $info['resultPermission'] = 'view_results'; | ||
+ | |||
+ | return $info; | ||
+ | } | ||
+ | \\ | ||
+ | Tutte queste funzioni sono gestite tramite gli [[gli eventi|eventi]] e riportate nei file XML all'interno delle api di ogni strumento. | ||
+ | |||
+ | ---- | ||
+ | \\ | ||
+ | |||