Phone

5 contenuti / 0 new
Ultimo contenuto
Phone

Ho installato il modulo Phone (CCk) (http://drupal.org/project/phone).
Ho creato un field "Telefono" in un tipo di contenuto mio. Il tipo è "Italian Phone Numbers".
Ma quando vado a creare contenuto e inserisco un numero di telefono (il mio, quindi sicuro che esiste) mi dà l'errore:
"is not a valid Italian phone number
Italian phone numbers should only ..."

Altri hanno riscontrato questo problema?
È bypassabile?

mi sono imbattuto in questa discussione
http://drupal.org/node/342195
magari può esserti utile

motocad wrote:
magari può esserti utile

Ho provato ad aggiungere un
include_once('./'. drupal_get_path('module', 'phone') .'/phone.it.inc');
all'inizio del modulo ma ritorna lo stesso errore.
Quel commento è del 2008 mentre l'ultima versione del modulo è di 2 mesi fa, mi sembra strano che non siano stati inseriti nelle ultime versioni gli include con le funzioni per validare i numeri per le varie nazioni. Cmq ho risposto nel thread, vediamo cosa succede...

Ciao,
penso che chi abbia sviluppato il modulo non l'abbia completato, almeno per la parte in italiano.
Fai così e dovrebbe funzionare:

  1. accedi al file phone.it.inc nel modulo phone;
  2. sotto a $regex = "/^(0([1345789][0159]|(37|54|73|96)[1234567]|(12|17|34|38|46|52|57|78|8[678]|9[2378])[12345]|(14|32|47)[1234]|(18|36|53|57|77|82)[345]|(33|72|83|94)[12]|1(31|6[1356]|8[27])|2|3(46|62|86)|4([23][123456789]|4[245]|81)|5([368]6|32|6[45]|[78][78]|8[345])|6|7(4[2346]|6[1356]|7[16]|89)|8(2[78]|3[356])|968|976)\/[1-9]|3([234][03789]|3[456]|46|6[0368]|8[0389]|9[0123])\/)[0-9 -]+[0-9]$/i";
    nella function valid_it_phone_number aggiungi
    $regex = "/^(\+39\s){0,1}(0[1-9]{1,3}|3[0-9]{2,})\s[0-9]{5,9}$/";
    La stringa $regex definisce il formato telefonico che può essere inserito, quello presente nel modulo non è corretto, quello inserito da me non è completo ma può bastare
  3. sempre nello stesso file modifica la function format_it_phone_number con:
    function format_it_phone_number($phonenumber, $field) {
      $phonenumber = trim($phonenumber);
      $first_space = strpos($phonenumber, ' ');
      $prefix = substr($phonenumber, 0, $first_space);
      $prefix = trim($prefix);
       // do some formatting on the phone number
       $phonenumber = str_replace("[ -]", "", $phonenumber);
       if ($field['phone_country_code']) {
          if ($prefix != "+39") {
      $phonenumber = "+39" . " " . $phonenumber;
          }
       }  
       return $phonenumber;
    }
    Questa funzione aggiunge '+39' nel caso non sia presente (s invece è presente, dopo il +39 ci dev'essere uno spazio altrimenti da errore di formattazione).

Così dovrebbe funzionare

Gabriele

Grazie mille della risposta!
Ho modificato l'espressione regolare con un paio di asterischi dopo le s, così gli spazi possono esserci ma anche no.
"/^(\+39\s*){0,1}(0[1-9]{1,3}|3[0-9]{2,})\s*[0-9]{5,9}$/";

La seconda funzione non l'ho modificata perché non credo di averne bisogno.

edit: tolti i commenti fatti mentre provavo a mettere in pratica il suggerimento di correzione...