Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
creare_un_nuovo_strumento [02/07/2010 14:52] |
creare_un_nuovo_strumento [16/11/2015 15:50] (versione attuale) Massimo Colombi Revisione della creazione di uno strumento |
||
|---|---|---|---|
| Linea 12: | Linea 12: | ||
| ---- | ---- | ||
| \\ | \\ | ||
| - | **Esempio: creazione di uno strumento chiamato "Calendar".**\\ | + | **Esempio: creazione di uno strumento chiamato "Calendars".**\\ |
| - 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/calendars: contiene le api specifiche del nuovo strumento |
| - | - home/app/views/CALENDAR: contiene i files che permettono la visualizzazione dello strumento | + | - home/app/views/calendars: 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/calendars_controller.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 //calendars_controller.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/ita/calendars.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/strings/eng/calendars.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/calendars/calendars_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/calendars/calendars_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. | + | - home/app/apis/calendars/calendars_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.\\ | + | 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/calendars/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/calendars// 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:\\ | 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:\\ | ||
| \\ | \\ | ||
| - | * PERMISSION GET OBJECTS per lo strumento AGENDA - produce un array con all'interno tutte le agende prodotte dal modulo agenda. | + | * Es. PERMISSION GET OBJECTS per lo strumento AGENDA - produce un array con all'interno tutte le agende prodotte dal modulo agenda. |
| function permissionsGetObjects() { | function permissionsGetObjects() { | ||
| Linea 49: | Linea 50: | ||
| } | } | ||
| \\ | \\ | ||
| - | * PERMISSION GET ACTIONS per lo strumento AGENDA - produce un array di stringhe contenente tutte le azioni prodotte dal modulo agenda. | + | * Es. PERMISSION GET ACTIONS per lo strumento AGENDA - produce un array di stringhe contenente tutte le azioni prodotte dal modulo agenda. |
| function permissionsGetActions() { | function permissionsGetActions() { | ||
| Linea 65: | Linea 66: | ||
| } | } | ||
| \\ | \\ | ||
| - | * PERMISSION GET ROLES per lo strumento AGENDA - produce un array dove sono definiti i ruoli del modulo agenda. | + | * Es. PERMISSION GET ROLES per lo strumento AGENDA - produce un array dove sono definiti i ruoli del modulo agenda. |
| function permissionsGetRoles() { | function permissionsGetRoles() { | ||
| Linea 82: | Linea 83: | ||
| return $roles; | 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. | ||
| + | |||
| + | ---- | ||
| + | \\ | ||
| + | |||
| + | All'interno del controller che gestisce il nuovo strumento, per utilizzare le API relative agli strumenti con i quali relazionarsi, basta richiamare le stesse attraverso la funzione "loadApi()". | ||
| + | Riportiamo qui di seguito l'esempio di come lo strumento 'Infodisc' richiama le API del modulo wikitool:\\ | ||
| + | |||
| + | [...] | ||
| + | $this->loadApi('Wikitool'); | ||
| + | $wiki=$this->WikitoolApi->getWikiFor('Infodisc',$id); | ||
| + | $this->set('wiki',$wiki ); | ||
| + | [...] | ||
| + | \\ | ||
| + | \\ | ||
| + | \\ | ||
| \\ | \\ | ||
| + | [[gli strumenti | indietro]] - [[il modello generale | avanti]] | ||