Ciao,
guarda il tuo codice mi era più o meno chiaro, o comunque la parte inerente a Joomla mi interessa poco.
Più che altro trovo difficoltà in questo pezzo di codice che poi sembra essere quello predominante
if ($this->_countryid)
{ // Se country è settata allora interviene, altrimenti niente (quindi settando solo lo state non interviene
$onchange = ''; // Conterrà il codice HTML relativo all'evento "onchange" dello stato (stateid)
$setstate = ''; // Conterrà il codice HTML relativo alla chiamata funzione Javascript dello stato (stateid)
// Inizialmente sono vuoti perchè se non è stato specificato stateid ma solo countrid non cambio nulla relativamente agli stati
// Agirò solo sulle nazioni (country) che già abbiamo verificato esistere
if ($this->_stateid != '')
{ // Se non c'è lo stato allora costruisco il codice HTML da sostituire
$onchange = 'onchange="print_state(\'' . $this->_stateid . '\',this.selectedIndex);print_province(\'' . $this->_provinciaid . '\',0);" ';
$setstate = '<script language="javascript">print_state(\'' . $this->_stateid . '\',0);</script>';
}
// Costruisco il pattern di ricerca (espressione regolare) ed il pattern di sostituzione
$pattern = '/<select(.*)(id=[\",\']'.$this->_countryid.'[\",\'])(.*)(\/?>)/i'; // ToDo: Verify if there's already the onchange action
$replacement = '<select ' . $this->_widthstr .$onchange . '${1}${2}${3}${4}<script language="javascript">print_country(\''.$this->_countryid.'\');' . '</script>';
$content = preg_replace($pattern, $replacement, $content); // Effettuo la sosituzione sul contenuto aggiungendo l'onchange sul campo country
$content = preg_replace('/(<\/body>)/i', $setstate . '${1}', $content); // Ed alla fine della pagina aggiungo anche la funzione per aggiornare il campo state
$changed = true; // Segnalo che qualche modifica è stata fatta
}
ammettendo che esista anche una funzione
function print_province(province_id, province_index)
in country.js, basterebbe inserirla in questo pezzo di codice.
E' qui l'unico problema che sto incontrando.
Anche, per esempio, in questa parte:
$pattern = '/<select(.*)(id=[\",\']'.$this->_countryid.'[\",\'])(.*)(\/?>)/i'; // ToDo: Verify if there's already the onchange action
$replacement = '<select ' . $this->_widthstr .$onchange . '${1}${2}${3}${4}<script language="javascript">print_country(\''.$this->_countryid.'\');' . '</script>';
che pare poco chiara, tipo
${1}${2}${3}${4}.
A me sembra una cosa motlo semplice da aggiungere per te che hai fatto il codice da 0, ma per me che mi ci devo mettere da capo a interpretarlo e manovrarlo non sembra molto semplice.
magari potresti spiegarmi meglio questi due pezzi che ti ho postato.
Vedi un po tu