Drupal 5.x: generazione form e ordinamento di risultati

2 contenuti / 0 new
Ultimo contenuto
Drupal 5.x: generazione form e ordinamento di risultati

Buongiorno a tutti,

dopo lungo tempo, e con l'uscita ufficiale di Drupal 5.0, ho deciso di cominciare a conoscere sul serio Drupal.

Il mio obiettivo è sviluppare applicazioni per l'intranet dell'azienda in cui lavoro, e credo che Drupal sia lo strumento più adatto, vista la (persino eccessiva :-)) flessibilità.

Cmq per cominciare sto sviluppando un moduletto che, previa richiesta all'utente, mostra i risultati di una query prelevata dal database. Ho seguito il tutorial introduttivo su drupal.org, e ho i seguenti dubbi:

1) In Drupal 5.0 si possono costruire form tramite array. Però mi sono accorto che ogni elemento del form è racchiuso da <div> </div>, pertanto gli elementi del form compaiono incolonnati. Siccome dovrei disegnare form anche complessi, come si fa a posizionare elementi allineati orizzontalmente, con le API di Drupal?

2) Ho scoperto l'oggetto il meraviglioso theme('pager'), che impagina da solo i risultati. Spettacolare.
C'è qualcosa di analogo che si occupi di ordinare i risultati cliccando sulle intestazioni della tabella? Mesi fa mi pareva di avere visto qualche funzione del genere, ma no ricordo se era core o contrib.

3) Seguendo il tutorial su drupal.org ho imbastito un "inizio" del modulo che mi serve. Il problema è che non so come strutturare le funzioni per:

1) presentare solo il form di ricerca, e successivamente l'elenco dei risultati in seguito al click sul submit.

2) cliccando su uno dei risultati dell'elenco, vorrei mostrare i dettagli associati a quel click (il modulo deve servire per cercare clienti e modificare qualche informazione).

Ho visto che se si crea una funzione con nome bottone_submit, il relativo codice viene chiamato 'automaticamente' dal submit.
Potrei usare questo sistema per realizzare quello che vorrei, ma non so come, dalla funzione bottone_submit, tornare alla funzione _all() (che mostra il form di ricerca e quindi ricomincia il "giro").

Spero di essermi spiegato bene, e che la comunità sia più attiva... sono in attesa di ricevere "Pro Drupal Developer" da Amazon ma nel frattempo vorrei chiarirmi questi (e altri!) dubbi.

ciao,
Panathos

1) esistono due soluzioni, una elegante, l'altra semplice ma più brutta (IMO).
La prima non te la posso spiegare in due righe, ma si tratta di disegnare il form all'interno di una tabella temizzata da drupal.
La soluzione semplice invece, consiste nel disegnare i campi all'interno di una tabella, sfruttando le proprietà "prefix" e "suffix" dei form ( http://api.drupal.org/api/HEAD/file/developer/topics/forms_api_reference... ). Queste proprietà, permettodo di inserire codice html prima e dopo il campo. Non farai altro che mettere i tag th, th table, opportunamente piazzati. Ti consiglio di iniziare con la soluzione semplice (2), quando ti sarai scontrato con le problematiche di questo sistema, sarai pronto per passare al metodo elegante (1)

2) http://api.drupal.org/api/5/function/theme_table ( oppure theme('table'....) ). Questa temizza tabelle, le ordina secondo un ordinazione prestabilita su colonna, ordinabile anche da utente secondo i campi da te prestabiliti

3) http://api.drupal.org/api/5/file/developer/topics/forms_api.html
Puoi farlo in vari modi. Personalmente, nello sviluppo di applicazioni io prendo i valori inseriti nella funzione xxx_submit (di cui parlavi), quì le trasformo in un link passando i valori ad un url tramite get (ovviamente un url definito negli hook_menu come MENU_CALLBACK). La funzione che riceve i dati esegue la ricerca e mostra una tabella temizzata con pager.
P.S.
Qualcuno potrebbe storcere il naso su questo modo di operare, ma la trasformazioni in dati da post a get, mi risolve alcuni problemi avuti poi con il pager...... ammetto che non è una soluzione bellissima, ma funziona egregiamente ;-)

Ciao
Gianni