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

Posts: 475
Iscritto il: 09 Giu 05
Sviluppatore DrupalDrupal Monkey. Mangio moduli e API a colazioneModeratore di Drupal ItaliaRedattore di Drupal Italia. Contribuisco a manuali

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


Posts: 475
Iscritto il: 09 Giu 05
Sviluppatore DrupalDrupal Monkey. Mangio moduli e API a colazioneModeratore di Drupal ItaliaRedattore di Drupal Italia. Contribuisco a manuali

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 Eye-wink
Se qualcuno è interessato ma non ha capito, mi può contattare.

Ciao
Gianni


Condividi contenuti