Back to top

Autore Topic: Facileform: invio notifiche multiple, come?  (Letto 6089 volte)

Offline axxe16

  • Esploratore
  • **
  • Post: 150
  • Sesso: Maschio
    • Mostra profilo
Facileform: invio notifiche multiple, come?
« il: 22 Gen 2007, 14:39:09 »
Ciao a tutti,
non so se questa è la sezione più adatta
sto usando facileform (che ormai si è capito che facile non è...) e vorrei inviare le notifiche con i dati del form compilato a più di una mail. E' possibile? 
 Corsi 2008 a Mestre: Dreamweaver CS3,WebMarketing e tanti altri
 Il mio Blog

Offline vales

  • Global Moderator
  • Instancabile
  • ********
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
Re: Facileform: invio notifiche multiple, come?
« Risposta #1 il: 26 Apr 2007, 19:16:33 »
Uso Facileforms 1.47 ed avevo la necessità di far pervenire una email di conferma oltre che all'amministratore del sito anche a chi invia un form di dati fra cui la propria email.

Ho risolto in questo modo utilizzando un pezzo di codice php modificato di Facileform tratto dal file facileforms.process.php nella directory /com_facileforms, e più esattamente la function sendEmailNotification() che il sistema utilizza per notificare all'amministratore l'arrivo di un form.

1. Dopo creato e salvato il form cliccare sul "nome" del form non   sul "titolo".

2. Nella tab "impostazioni" regolare "Notifica email" a NO.

3. Cliccare sulla tab "Carica pezzi".

4. Nella sezione di questa linguetta "Fine caricamento" settare  il pulsante di opzione "custom". Ciò visualizzerà una casella di testo per scrivere dentro il codice  PHP. Inserire il codice qui sotto riportato.

Codice: [Seleziona]
// Send profile to Client

global $ff_config, $mosConfig_mailfrom, $mosConfig_fromname, $my;

$this->execPieceByName('ff_InitLib');


if ($this->dying) return;
$from = $mosConfig_mailfrom;
$fromname = $mosConfig_fromname.' - FacileForms';
if ($this->formrow->emailntf==2)
$recipient = $this->formrow->emailadr;
else
$recipient = $ff_config->emailadr;
$subject = _FACILEFORMS_PROCESS_FORMRECRECEIVED;
$body = '';
if ($this->record_id != '')
$body .= _FACILEFORMS_PROCESS_RECORDSAVEDID." ".$this->record_id.nl().nl();
$body .=
_FACILEFORMS_PROCESS_FORMID.": ".$this->form.nl().
_FACILEFORMS_PROCESS_FORMTITLE.": ".$this->formrow->title.nl().
_FACILEFORMS_PROCESS_FORMNAME.": ".$this->formrow->name.nl().nl().
_FACILEFORMS_PROCESS_SUBMITTEDAT.": ".$this->submitted.nl().
_FACILEFORMS_PROCESS_SUBMITTERIP.": ".$this->ip.nl().
_FACILEFORMS_PROCESS_PROVIDER.": ".$this->provider.nl().
_FACILEFORMS_PROCESS_BROWSER.": ".$this->browser.nl().
_FACILEFORMS_PROCESS_OPSYS.": ".$this->opsys.nl().nl();
if (count($this->maildata)) foreach ($this->maildata as $data)
$body .= $data[_FF_DATA_TITLE].": ".$data[_FF_DATA_VALUE].nl();

$attachment = NULL;
if ($this->formrow->emailxml>0) {
$attachment = $this->expxml();
if ($this->status != _FF_STATUS_OK) return;
} // if

$recipient2     = ff_getSubmit('email_input',     ''); // il campo email_input è il campo che io utilizzo come campo email nel form e va modificato in relazione al proprio form - email_input is the email field input in the form

// ora invia l'email all'amministratore - now send the mail to administrator

$this->sendMail($from, $fromname, $recipient, $subject, $body, $attachment);

// ora invia l'email all'utente nel campo $recipient2 - now send the mail a $recipient2

$this->sendMail($from, $fromname, $recipient2, $subject, $body, $attachment);


Ho visto che lavorando sul codice del componente nella funzione   sendmail() potrebbe essere possibile inserire nell'email di risposta anche il campo $cc (invio per conoscenza) che forse sarebbe un metodo più elegante.

Comunque già con questo codice è possibile agire su tutti gli altri campi della email.

Qui ho inserito in data 09.12.2007 delle importanti integrazioni a questo codice

Saluti a tutti.   Vales
« Ultima modifica: 09 Dic 2007, 19:26:51 da vales »
Download e demo di Albo Pretorio On Line per Joomla 1.5 e Joomla 2.5 e 3
Moduli scuola On Line v1 per Joomla 3
http://valesweb.altervista.org

remixe

  • Visitatore
Re: Facileform: invio notifiche multiple, come?
« Risposta #2 il: 25 Ago 2007, 11:54:36 »
ciao, Ho testato il tuo sistema e funziona benissimo.
Ora, io avrei però un altra esigenza:
praticamente la e-mail che ariva l'utente che invia il form non dovrebbe avere gli stessi contenuti della e-mail che arriva all'amministratore ma dovrebbe contenere un contenuto con dei link che ho preparato io.
E' possibile effettuare questa soluzione?
ho in mente di andare ad intervenire sul body del codice che hai postato tu, soltanto che ho paura che poi così facendo cambio anche la mail che arriva all'amministratore.
Puoi darmi una dritta?

GRAZIE 1000 :)

Offline vales

  • Global Moderator
  • Instancabile
  • ********
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
Re: Facileform: invio notifiche multiple, come?
« Risposta #3 il: 25 Ago 2007, 14:50:12 »
ciao, Ho testato il tuo sistema e funziona benissimo.
Ora, io avrei però un altra esigenza:
praticamente la e-mail che ariva l'utente che invia il form non dovrebbe avere gli stessi contenuti della e-mail che arriva all'amministratore ma dovrebbe contenere un contenuto con dei link che ho preparato io.
E' possibile effettuare questa soluzione?
ho in mente di andare ad intervenire sul body del codice che hai postato tu, soltanto che ho paura che poi così facendo cambio anche la mail che arriva all'amministratore.
Puoi darmi una dritta?

GRAZIE 1000 :)

Ciao,

Penso che dovresti sostituire la variabile $body nella funzione di invio all'utente (quella con $recipient2) con una $body2 costruita con il contenuto delle cose che ti interessano.
Non ho fatto prove ma dovrebbe funzionare.

Saluti Vales
Download e demo di Albo Pretorio On Line per Joomla 1.5 e Joomla 2.5 e 3
Moduli scuola On Line v1 per Joomla 3
http://valesweb.altervista.org

Offline vales

  • Global Moderator
  • Instancabile
  • ********
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
Re: Facileform: invio notifiche multiple, come?
« Risposta #4 il: 26 Ago 2007, 20:05:16 »
Funziona !

con $body2 = $body.nl()."testo riga   1".nl()."testo riga   2";

si può aggiungere righe al testo della risposta standard.

con $body2 ="testo riga 1".nl()."testo riga  2".nl();

invece si può creare una nuova email con righe a piacere.

nota -  nl() è la funzione che manda a capo il testo

Saluti Vales
« Ultima modifica: 28 Ago 2007, 06:13:30 da vales »
Download e demo di Albo Pretorio On Line per Joomla 1.5 e Joomla 2.5 e 3
Moduli scuola On Line v1 per Joomla 3
http://valesweb.altervista.org

remixe

  • Visitatore
Re: Facileform: invio notifiche multiple, come?
« Risposta #5 il: 28 Ago 2007, 15:25:30 »
ciao Vales ho fatto come mi dici tu e ora mi funziona benissimo!! GRAZIE 1000!

volevo chiederti anche un altra cosa, e cioè come si fa a creare una pagina con un testo di ringraziamento che appaia quando l'utente ha compilato il form e inviato i dati?
Attualmente infatti mi rimanda automaticamente alla pagina del form con i campi non compilati, mentre io appunto avrei l'esigenza che cliccando sul pulsante  e inviando i dati, mi comparisse una pagina con testo di ringraziamento...si può fare? come?

GRAZIE ancora ;)

Offline vales

  • Global Moderator
  • Instancabile
  • ********
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
Re: Facileform: invio notifiche multiple, come?
« Risposta #6 il: 28 Ago 2007, 18:06:08 »
Allora,

1) vai al tab scripts del tuo form
2) abiliti il tipo custom in script caricati
3) nella casella crea codice inserisci qualcosa come questo

---------------------------
function ff_tuoform_submitted(status)
{
    if (status != 0) {
        alert(
            "Spiacenti, ma l'invio della richiesta è fallito\n"+
            "Verificheremo il problema e ci scusiamo dell'inconveniente\n"+
            "Prova a riscrivere i campi inseriti\n"+
            "Ora sarai rinviato alla home page."
        );
        ff_returnHome();
    } else
        ff_switchpage(ff_getPageByName('grazie_info')); // thank you
} // ff_tuoform_submitted
-----------------------


dove "tuoform" sarà sostituito dal nome del tuo form.
le costanti di testo sopra potrai adeguarle a piacere alla tua situazione e compariranno nel caso in cui ci sia qualche problema nell'invio.

Attenzione che qui negli scripts non usiamo PHP ma Javascript quindi la sintassi è diversa. Il PHP si usa invece nei pezzi.

4) crei una seconda pagina nel tuo form e li inserisci un campo di testo fisso, che io ho chiamato "grazie_info", in cui potrai inserire il testo di ringraziamento che desideri. Ovviamente dovrai cambiare nello script "grazie_info" con il nome che tu userai.

Questo è tutto.

Ti segnalo che per capire meglio il funzionamento del tutto mi ha molto aiutato l'analisi del form di esempio della pizza inserito nel pacchetto.
Comunque sono sempre disponibile per quello che posso fare e se ci sono problemi chiedi pure.

i miei forms sono qui: http://www.montagnapistoiese.turismo.toscana.it

Saluti Vales
Download e demo di Albo Pretorio On Line per Joomla 1.5 e Joomla 2.5 e 3
Moduli scuola On Line v1 per Joomla 3
http://valesweb.altervista.org

Offline marcellov

  • Esploratore
  • **
  • Post: 79
    • Mostra profilo
Template
« Risposta #7 il: 06 Dic 2007, 16:53:14 »
Ciao a tutti,
ho lavorato un po' con il codice postato all'inizio della discussione, e ho fatto questo template. Spero possa essere utile a qualcuno. Capisco che l'inclusione del foglio di stile nel body sia tutt'altro che ortodossa, ma non sapevo come altro fare. Magari qualcuno riesce a migliorarlo.
Codice: [Seleziona]
// Send profile to Client

global $ff_config, $mosConfig_mailfrom, $mosConfig_fromname, $my;

$this->execPieceByName('ff_InitLib');


      if ($this->dying) return;
      $from = $mosConfig_mailfrom;
      $fromname = $mosConfig_fromname.' - FacileForms';
      if ($this->formrow->emailntf==2)
         $recipient = $this->formrow->emailadr;
      else
         $recipient = $ff_config->emailadr;
      $subject = _FACILEFORMS_PROCESS_FORMRECRECEIVED;
      $body = '';
      if ($this->record_id != '')
         $body .= "<style type='text/css'>
<!--
body, table, p {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
}

table {
width: 100%;
  border-width: 1px;
border-spacing: 0px;
border-style: solid;
border-color: #333;
border-collapse: collapse;
border-spacing: 0px;
margin-bottom: 15px;
}
table th {
border-width: 1px;
padding: 4px;
border-style: solid;
border-color: #333;
border-spacing: 0px;
text-align: left;
background-color:#CCCCCC;
font-size: 12px;
font-weight: bold;
}
table td {
border-width: 1px;
padding: 4px;
border-style: solid;
border-color: #333;
}
-->
</style><h1>Nome Ditta S.n.c.</h1><table><tr><th width=65% colspan=2>Risposta al form ".$this->formrow->title."</th></tr>";
      $body .=
         "<tr><td width=50%>"._FACILEFORMS_PROCESS_RECORDSAVEDID."<strong>".$this->record_id.nl()."</strong></td><td width=50%>"._FACILEFORMS_PROCESS_SUBMITTEDAT.": ".$this->submitted.nl()."</td></tr></table><p>Gentile Utente,<br />la sua richiesta è stata inviata correttamente. Sarà contattato al più presto dal nostro Direttore Commerciale.</p>Di seguito trova il riepilogo dei dati da lei inviatici.</p><table><tr><th colspan=2>Riepilogo informazioni</th></tr>";
         
      if (count($this->maildata)) foreach ($this->maildata as $data)
         $body .= "<tr><td style='text-transform:capitalize'>".$data[_FF_DATA_TITLE].": </td><td>".$data[_FF_DATA_VALUE].nl()."</td></tr>";
$body .= "</table><p>La ringraziamo per la fiducia accordataci.</p><p>Cordiali Saluti,</p><p>Mario Rossi<br />Responsabile Area Web.</p>";

      $attachment = NULL;
      if ($this->formrow->emailxml>0) {
         $attachment = $this->expxml();
         if ($this->status != _FF_STATUS_OK) return;
      } // if

$recipient2     = ff_getSubmit('email_n',     ''); // il campo email_n è il campo che io utilizzo come campo email nel form e va modificato in relazione al proprio form - email_input is the email field input in the form

// ora invia l'email all'amministratore - now send the mail to administrator

$this->sendMail($from, $fromname, $recipient, $subject, $body, $attachment, $html=true);

// ora invia l'email all'utente nel campo $recipient2 - now send the mail a $recipient2

$this->sendMail($from, $fromname, $recipient2, $subject, $body, $attachment, $html);
« Ultima modifica: 07 Dic 2007, 15:17:13 da marcellov »

 



Web Design Bolzano Kreatif