Salve a tutti.
Ho fatto una nuova tipologia di nodo, chiatao "navi". Esso ha i dati classici del nodo + N campi nuovi (passeggeri, armatore, tipo ecc...). Vorrei far uscire il form di inserimento, in orizzontale.... ossia:
titolo
body
passeggeri armatore tipo
anteprima conferma
NON VOGLIO usare #prefix o #suffix, ne usare file template esterni. Insomma, voglio risolvere tutto da dentro il modulo, in modo elegante.
Se non fosse un estensione del modulo farei:
<?php
function nave_theme() {
return array(
'nave_form_inserisci_modifica' => array(
'arguments' => array('form' => NULL),
)
);
}
function nave_form_inserisci_modifica() {
.....FORM_INSERIMENTO_MODIFICA....
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Conferma'),
);
return $form;
}
function theme_nave_form_inserisci_modifica($form) {
$rows[] = array(
array('data' => drupal_render($form['title']), 'colspan' => 3),
drupal_render($form['peso']),
drupal_render($form['pager']),
);
$rows[] = array(
drupal_render($form['durata']),
drupal_render($form['datavali']),
drupal_render($form['datafine']),
drupal_render($form['npassagg']),
drupal_render($form['tempotot'])
);
$rows[] = array(
array('data' => drupal_render($form['submit']), 'colspan' => 5)
);
$output .= drupal_render($form);
$output .= theme('table', array(), $rows);
return $output;
}
?>
Se non è un nodo, quello sopra funziona a meraviglia e crea il suo bel form di inserimento in orizzontale (l'ho usato molte volte).
Per il nodo però, succede che ovviamente la temizzazzione del form di inserimento, viene effettuato dalla funzione theme_node che ovviamente, scavalca la mia theme_nave_form_inserisci_modifica.
C'è una soluzione tipo quella sopra, oppure mi devo rassegnare ai bruttissimi #prefix e #suffix (o temizzarla con template esterno)?
P.S.
Su drupal 5 lo facevo da codice come sopra, con qualche variazione e funzionava.
Ciao e grazie anticipatamente
Gianni
Mi rispondo da solo....
il sistema che stavo usando andava bene, il mio errore stava nel fatto che scrivevo in modo errato l'id del form che inserisce le caratteristiche delle navi. Nel caso di un estensione di un nodo il suo form id diventa: nomenodo_node_form. Per i posteri, ricapitolando, se si vuol mettere in orizzontale un form, il metodo sopra va bene.
Se vi vuol mettere in orizzontale un form di un nodo con campi aggiuntivi (nuova tipologia di nodo) si dovrà fare in questo modo:
Più difficile da spiegare che da fare ;-)
Se qualcuno è interessato ma non ha capito, mi può contattare.
Ciao
Gianni