Questo sito utilizza cookie anche di terze parti. Per avere maggiori informazioni e per negare il tuo consenso al l'utilizzo dei cookie clicca qui. Se prosegui la navigazione acconsenti all'utilizzo dei cookie.OK
  • salta al contenuto

Documentazione openDCN

Strumenti Utente

  • Entra

Strumenti Sito

  • Ultime modifiche
  • Informativa sui cookie
Ti trovi qui: start » creare_un_nuovo_strumento

creare_un_nuovo_strumento

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Both sides previous revision Previous revision
Next revision
Previous revision
creare_un_nuovo_strumento [14/06/2010 11:07]
creare_un_nuovo_strumento [16/11/2015 15:50] (versione attuale)
Massimo Colombi Revisione della creazione di uno strumento
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\\
  
 ---- ----
 \\ \\
-**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:​ 
 +    - home/​app/​models/​calendar.php:​ viene definita la classe Calendar e si specificano le sue dipendenze con altre classi. 
 +    - 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/​calendars.tpl:​ file che racchiude le coppie '​identificatore-stringa italiana'​ 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/​calendars/​calendars_api_controller.php:​ file contenente le funzioni che permettono allo strumento di interfacciarsi con gli altri moduli. 
 +    - home/​app/​apis/​calendars/​calendars_api_view.php:​ file contenente la classe CalendarApiView che estende ApiView. 
 +    - home/​app/​apis/​calendars/​calendars_event_handlers.xml:​ file xml nel quale sono riportati gli eventi ai quali risponde lo strumento stesso.
  
-  - Creazione ​dei files relativi allo strumento:​ +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.\\ 
-    - home/​app/​models/​CALENDAR.PHP:​ viene definita la classe CALENDAR ​e si specificano le sue dipendenze con altre classi.  +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.\\
-    - 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 +
-    - home/app/strings/eng/CALENDAR.TPL +
-    - home/app/apis/CALENDAR/CALENDAR_API_CONTROLLER.PHP +
-    - home/app/apis/​CALENDAR/​CALENDAR_API_VIEW.PHP +
-    - 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.\\ +----
-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.
 +
 +----
 +\\
 +
 +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]]
creare_un_nuovo_strumento.1276506446.txt.gz · Ultima modifica: 05/06/2013 17:08 (modifica esterna)

Strumenti Pagina

  • Mostra pagina
  • Revisioni precedenti
  • Puntano qui
  • Torna su
Ad eccezione da dove è diversamente indicato, il contenuto di questo wiki è soggetto alla seguente licenza: CC Attribution-Noncommercial-Share Alike 3.0 Unported
CC Attribution-Noncommercial-Share Alike 3.0 Unported Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki