Phone

5 contenuti / 0 new
Ultimo contenuto
Offline
Drupalitaliano
Iscritto: 15 Gen 2010
Messaggi: 234
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?

Ritratto di motocad
Offline
Drupalitaliano
Iscritto: 30 Ago 2009
Messaggi: 435

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

Offline
Drupalitaliano
Iscritto: 15 Gen 2010
Messaggi: 234

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...

Offline
DrupalNiubbo
Iscritto: 22 Mar 2010
Messaggi: 3

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

Offline
Drupalitaliano
Iscritto: 15 Gen 2010
Messaggi: 234

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...