Temizzare il form d'inserimento di un nodo (drupal 6)

2 contenuti / 0 new
Ultimo contenuto
Temizzare il form d'inserimento di un nodo (drupal 6)

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:

<?php
 
function nomenodo_theme() {
  return array(
   
'nomenodo_node_form' => array(
     
'arguments' => array('form' => NULL),
    )
  );
}
function
nomenodo_form() {
    .....
FORM_INSERIMENTO_MODIFICA....
    
$form['submit'] = array(
         
'#type' => 'submit',
         
'#value' => t('Conferma'),
    );
    return
$form;
}
function
theme_nomenodo_node_form ($form) {
......
QUI METTETE LA TABELLA CON I CAMPI NELLE CELLE.....
 
$output .= drupal_render($form);
 
$output .= theme('table', array(), $rows);
  return
$output;
}
?>

Più difficile da spiegare che da fare ;-)
Se qualcuno è interessato ma non ha capito, mi può contattare.

Ciao
Gianni