Per un pugno di ID edit-submit in Drupal

Chi usa Drupal 5 può incorrere in un piccolo bug che impedisce la corretta validazione delle pagine web. Sia il pulsante del modulo di ricerca che il pulsante per pubblicare gli articoli (o i commenti) hanno come ID la stringa edit-submit, chiaramente ciò non è corretto poichè gli identificatori degli elementi di una pagina web devono essere univoci.

Ci sono diversi metodi per risolvere il problema:

  • Applicare una patch disponibile nel sito ufficiale che gestisce eventuali conflitti, a mio parere, in maniera poco elegante (ora non ho sotto mano il link, cercatevelo con google se proprio volete infognarvi).
  • Modificare il file search.module specificando l'ID per il pulsante di ricerca. È una buona soluzione, ma non è mantenibile: ad ogni aggiornamento del CMS bisogna ricordarsi di rimodificare il file. Sarebbe molto più semplice se tale modifica fosse eseguita direttamente nella versione ufficiale.
  • Se si usa PHPTemplate basta modificare il file template.php per modificare in fase di rendering la stringa edit-submit con un altra stringa.

Modificare il file search.module

Nella funzione search_box() si deve banalmente modificare la linea:

$form['submit'] = array(
  '#type' => 'submit',
  '#value' => t('Search')
);

aggiungendo il nuovo ID, ad esempio così:

$form['submit'] = array(
  '#type' => 'submit',
  '#value' => t('Search'),
  '#id' => 'edit-submit-search'
);

Modificare il file template.php:

Anche in questo caso la modifica è molto semplice, si tratta di aggiungere il seguente codice:

function phptemplate_search_theme_form($form) {
  return str_replace(
    'edit-submit',
    'edit-submit-search',
    drupal_render($form)
  );
}
function phptemplate_search_block_form($form) {
  return str_replace(
     'edit-submit',
     'edit-submit-search',
     drupal_render($form)
  );
}

Finché il problema non verrà risolto alla radice, preferisco questo metodo, al momento è il più valido.