Dialogue PHP / JavaScript - popup et checkbox
greg2205
-
greg2205 Messages postés 1 Statut Membre -
greg2205 Messages postés 1 Statut Membre -
Bonsoir tout le monde,
Depuis trois jours, je tourne en rond et m'arrache les cheveux.
J'ai une page principale avec un formulaire et un textarea, ainsi qu'une fonction window.open :
Ensuite j'ai une popup avec un formulaire et toute une série de checkbox qui peuvent être très nombreuses :
Et une fonction Reporter dans la popup :
Vous l'aurez compris, mon objectif est d'importer dans mon textarea de la page principale, toutes les adresses emails cochées dans la popup.
Malheureusement, je ne parviens pas à mes fins. Le mieux que j'ai pu faire est d'importer la réponse "undefinied" ou un chiffre représentant le nombre total de checkbox cochées !
J'ai parcouru de nombreux forums et topic mais je n'ai trouvé que très peu d'info sur la fonction Reporter dans le cadre de checkbox et d'un textarea.
Si vous auriez une petite idée ou même une petite piste à me soumettre, je ne cracherais pas dessus !!!
En attendant, bonne soirée...
PS : pour info, le formulaire de ma popup est intégrer à une page php que j'ai récupérée (ne vient pas de moi) et qui me permet d'importer toutes les adresses emails de mon carnet d'adresse depuis gmail. Si nécessaire, je peux poster tout le code.
Depuis trois jours, je tourne en rond et m'arrache les cheveux.
J'ai une page principale avec un formulaire et un textarea, ainsi qu'une fonction window.open :
<form method="post" action="pageprincipale.php" name="saveForm" enctype="multipart/form-data" >
<a href="#" onclick="window.open('/index.php?tmpl=component&amp;option=com_openinviter','Pensées','menubar=no, status=no, scrollbars=yes, menubar=no, width=650px, height=650px');return false;" >Contacts supplémentaires</a>
<textarea class='adsmanager_required' mosReq='1' mosLabel='Contacts supplémentaires' id='ad_emails' name='ad_emails' cols='46' rows='12'></textarea>
</form>
Ensuite j'ai une popup avec un formulaire et toute une série de checkbox qui peuvent être très nombreuses :
<form action=' ' method='POST' name='openinviter'>
<table>
<tr>
<td><input type='checkbox' name='email_{$counter}' value='{$email}' checked>
<input type='hidden' name='name_{$counter}' value='{$name}'>
<input type='hidden' name='email_{$counter}' value='{$email}'></td>
<td>{$name}</td>
<td>{$email}</td>
</tr>
<tr><td><input type='button' value='Importer' onclick='Reporter(this.value);' /></td></tr>
<table>
</form>
Et une fonction Reporter dans la popup :
function Reporter(choix) {
window.opener.document.forms["saveForm"].elements["ad_emails"].value= choix ;
Fermer();
}
function Fermer() {
window.close();
return true;
}
Vous l'aurez compris, mon objectif est d'importer dans mon textarea de la page principale, toutes les adresses emails cochées dans la popup.
Malheureusement, je ne parviens pas à mes fins. Le mieux que j'ai pu faire est d'importer la réponse "undefinied" ou un chiffre représentant le nombre total de checkbox cochées !
J'ai parcouru de nombreux forums et topic mais je n'ai trouvé que très peu d'info sur la fonction Reporter dans le cadre de checkbox et d'un textarea.
Si vous auriez une petite idée ou même une petite piste à me soumettre, je ne cracherais pas dessus !!!
En attendant, bonne soirée...
PS : pour info, le formulaire de ma popup est intégrer à une page php que j'ai récupérée (ne vient pas de moi) et qui me permet d'importer toutes les adresses emails de mon carnet d'adresse depuis gmail. Si nécessaire, je peux poster tout le code.
A voir également:
- Dialogue PHP / JavaScript - popup et checkbox
- Dialogue boost - Accueil - Guide streaming
- Fake mcafee popup - Accueil - Piratage
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Telecharger javascript - Télécharger - Langages
10 réponses
Comme un petit code en dit plus qu'un long discours :
http://www.cijoint.fr/cj201005/cij5LX6CoU.zip
Je te laisse analyser mon joli script et comprendre son fonctionnement :)
http://www.cijoint.fr/cj201005/cij5LX6CoU.zip
Je te laisse analyser mon joli script et comprendre son fonctionnement :)
Un tout tout grand merci, cela semble parfait !!!
Malheureusement, en intégrant cela dans mon popup, je ne parviens même plus à la seconde étape du formulaire pour sélectionner et importer les adresses.
En gros, il y a deux étapes dans le forumaire du popup :
- 1ère étape : champ adresse email + login + fournisseur gmail
+ submit pour afficher toutes les adresses
- 2ème étape : affichage de toutes les checkbox que l'on choisit de sélectionner
+ submit pour importer les adresses dans le textarea
Quand je clique sur le premier submit, mon popup se ferme simplement, avant même d'afficher toutes les checkbox, comme s'il faisait appel à la fonction du second submit...
Si tu as l'occasion et la patience de jeter un petit coup d'oeil sur le code en entier, ce serait vraiment top !
Le voici avec l'ajout de ton petit code :
Merci beaucoup & bonne soirée ;)
greg
Malheureusement, en intégrant cela dans mon popup, je ne parviens même plus à la seconde étape du formulaire pour sélectionner et importer les adresses.
En gros, il y a deux étapes dans le forumaire du popup :
- 1ère étape : champ adresse email + login + fournisseur gmail
+ submit pour afficher toutes les adresses
- 2ème étape : affichage de toutes les checkbox que l'on choisit de sélectionner
+ submit pour importer les adresses dans le textarea
Quand je clique sur le premier submit, mon popup se ferme simplement, avant même d'afficher toutes les checkbox, comme s'il faisait appel à la fonction du second submit...
Si tu as l'occasion et la patience de jeter un petit coup d'oeil sur le code en entier, ce serait vraiment top !
Le voici avec l'ajout de ton petit code :
<?php
include('openinviter.php');
$inviter=new OpenInviter();
$oi_services=$inviter->getPlugins();
if (isset($_POST['provider_box']))
{
if (isset($oi_services['email'][$_POST['provider_box']])) $plugType='email';
elseif (isset($oi_services['social'][$_POST['provider_box']])) $plugType='social';
else $plugType='';
}
else $plugType = '';
function ers($ers)
{
if (!empty($ers))
{
$contents="<table cellspacing='0' cellpadding='0' style='border:1px solid red;' align='center' class='tbErrorMsgGrad'><tr><td valign='middle' style='padding:3px' valign='middle' class='tbErrorMsg'><img src='/images/ers.gif'></td><td valign='middle' style='color:red;padding:5px;'>";
foreach ($ers as $key=>$error)
$contents.="{$error}<br >";
$contents.="</td></tr></table><br >";
return $contents;
}
}
function oks($oks)
{
if (!empty($oks))
{
$contents="<table border='0' cellspacing='0' cellpadding='10' style='border:1px solid #5897FE;' align='center' class='tbInfoMsgGrad'><tr><td valign='middle' valign='middle' class='tbInfoMsg'><img src='/images/oks.gif' ></td><td valign='middle' style='color:#5897FE;padding:5px;'> ";
foreach ($oks as $key=>$msg)
$contents.="{$msg}<br >";
$contents.="</td></tr></table><br >";
return $contents;
}
}
if (!empty($_POST['step'])) $step=$_POST['step'];
else $step='get_contacts';
$ers=array();$oks=array();$import_ok=false;$done=false;
if ($_SERVER['REQUEST_METHOD']=='POST')
{
if ($step=='get_contacts')
{
if (empty($_POST['email_box']))
$ers['email']="Email missing";
if (empty($_POST['password_box']))
$ers['password']="Password missing";
if (empty($_POST['provider_box']))
$ers['provider']="Provider missing";
if (count($ers)==0)
{
$inviter->startPlugin($_POST['provider_box']);
$internal=$inviter->getInternalError();
if ($internal)
$ers['inviter']=$internal;
elseif (!$inviter->login($_POST['email_box'],$_POST['password_box']))
{
$internal=$inviter->getInternalError();
$ers['login']=($internal?$internal:"Login failed. Please check the email and password you have provided and try again later");
}
elseif (false===$contacts=$inviter->getMyContacts())
$ers['contacts']="Unable to get contacts.";
else
{
$import_ok=true;
$step='send_invites';
$_POST['oi_session_id']=$inviter->plugin->getSessionID();
$_POST['message_box']='';
}
}
}
elseif ($step=='send_invites')
{
if (empty($_POST['provider_box'])) $ers['provider']='Provider missing';
else
{
$inviter->startPlugin($_POST['provider_box']);
$internal=$inviter->getInternalError();
if ($internal) $ers['internal']=$internal;
else
{
if (empty($_POST['email_box'])) $ers['inviter']='Inviter information missing';
if (empty($_POST['oi_session_id'])) $ers['session_id']='No active session';
if (empty($_POST['message_box'])) $ers['message_body']='Message missing';
else $_POST['message_box']=strip_tags($_POST['message_box']);
$selected_contacts=array();$contacts=array();
$message=array('subject'=>$inviter->settings['message_subject'],'body'=>$inviter->settings['message_body'],'attachment'=>"\n\rAttached message: \n\r".$_POST['message_box']);
if ($inviter->showContacts())
{
foreach ($_POST as $key=>$val)
if (strpos($key,'check_')!==false)
$selected_contacts[$_POST['email_'.$val]]=$_POST['name_'.$val];
elseif (strpos($key,'email_')!==false)
{
$temp=explode('_',$key);$counter=$temp[1];
if (is_numeric($temp[1])) $contacts[$val]=$_POST['name_'.$temp[1]];
}
if (count($selected_contacts)==0) $ers['contacts']="You haven't selected any contacts to invite";
}
}
}
if (count($ers)==0)
{
$sendMessage=$inviter->sendMessage($_POST['oi_session_id'],$message,$selected_contacts);
$inviter->logout();
if ($sendMessage===-1)
{
$message_footer="\r\n\r\nThis invite was sent using OpenInviter technology.";
$message_subject=$_POST['email_box'].$message['subject'];
$message_body=$message['body'].$message['attachment'].$message_footer;
$headers="From: {$_POST['email_box']}";
foreach ($selected_contacts as $email=>$name)
{
$mailer =& JFactory::getMailer();
// Build e-mail message format
$mailer->setSender(array($mainframe->getCfg('mailfrom'), $mainframe->getCfg('fromname')));
$mailer->setSubject($message_subject);
$mailer->setBody($message_body);
$mailer->IsHTML(true);
$mailer->addRecipient($email);
$rs = $mailer->Send();
unset($mailer);
}
$oks['mails']="Mails sent successfully";
}
elseif ($sendMessage===false)
{
$internal=$inviter->getInternalError();
$ers['internal']=($internal?$internal:"There were errors while sending your invites.<br>Please try again later!");
}
else $oks['internal']="Invites sent successfully!";
$done=true;
}
}
}
else
{
$_POST['email_box']='';
$_POST['password_box']='';
$_POST['provider_box']='';
}
$contents="";
$contents.="<form action='' method='POST' name='openinviter'>".ers($ers).oks($oks);
if (!$done)
{
if ($step=='get_contacts')
{
$contents.="<table align='center' class='thTable' cellspacing='0' cellpadding='0' style='border:none;'>
<tr><td align='center'><br><strong>Si votre entourage n'est pas inscrit à la Newsletter de Carnet Familial Online,<br>sélectionnez les contacts supplémentaires que vous souhaitez ajouter à la liste de diffusion de votre annonce.<br><br></strong></td></td>
</table>
<table align='center' class='thTable' cellspacing='0' cellpadding='0' style='border:none;'>
<tr><td> </td><td align='left'><label for='email_box'>Adresse email</label> <input class='thTextbox' type='text' name='email_box' value='{$_POST['email_box']}'><br><br></td></tr>
<tr><td> </td><td align='left'><label for='password_box'>Mot de passe </label> <input class='thTextbox' type='password' name='password_box' value='{$_POST['password_box']}'></td></tr>
<tr><td> </td><td align='center'><br><br><label for='provider_box'>Fournisseur (Gmail, Yahoo, Facebook, ...)</label><br><br><select class='thSelect' name='provider_box'><option value=''></option>";
foreach ($oi_services as $type=>$providers)
{
$contents.="<option disabled>".$inviter->pluginTypes[$type]."</option>";
foreach ($providers as $provider=>$details)
$contents.="<option value='{$provider}'".($_POST['provider_box']==$provider?' selected':'').">{$details['name']}</option>";
}
$contents.="</select></td></tr>
<tr><td colspan='2' align='center'><br><input class='thButton' type='submit' name='import' value='Importer les contacts'></td></tr>
</table><input type='hidden' name='step' value='get_contacts'>";
}
else
$contents.="<table align='center' class='thTable' cellspacing='0' cellpadding='0' style='border:none;'>
<tr><td align='center'><br><strong>Si votre entourage n'est pas inscrit à la Newsletter de Carnet Familial Online,<br>sélectionnez les contacts supplémentaires que vous souhaitez ajouter à la liste de diffusion de votre annonce.<br><br></strong></td></tr>
</table>";
}
if (!$done)
{
if ($step=='send_invites')
{
if ($inviter->showContacts())
{
$contents.="<table class='thTable' align='center' cellspacing='0' cellpadding='0'><tr class='thTableHeader'><td colspan='".($plugType=='email'? "3":"2")."'>Vos contacts :<br><br></td></tr>";
if (count($contacts)==0)
$contents.="<tr class='thTableOddRow'><td align='center' style='padding:20px;' colspan='".($plugType=='email'? "3":"2")."'>Vous n'avez pas de contact dans votre carnet d'adresse</td></tr>";
else
{
$contents.="<tr class='thTableDesc'><td><input type='checkbox' onChange='toggleAll(this)' name='toggle_all' title='Select/Deselect all' checked></td><td><strong>Nom</strong></td>".($plugType == 'email' ?"<td><strong>Email</strong></td>":"")."</tr>";
$odd=true;$counter=0;
foreach ($contacts as $email=>$name)
{
$counter++;
if ($odd) $class='thTableOddRow'; else $class='thTableEvenRow';
$contents.="<tr class='{$class}'>
<td>
<input type='checkbox' name='email_{$counter}' id='email_{$counter}' value='{$email}' class='thCheckbox' checked>
<input type='hidden' name='name_{$counter}' value='{$name}'>
<input type='hidden' name='email_{$counter}' value='{$email}'></td>
<td>{$name}</td>".($plugType == 'email' ?"<td>{$email}</td>":"")."</tr>";
$odd=!$odd;
}
$contents.="<tr class='thTableFooter'><td colspan='".($plugType=='email'? "3":"2")."' style='padding:3px;'><br><br>
<input type='hidden' size='50' name='champ' id='champ' /><br />
<input type='submit' name='ajouter' value='Ajouter les contacts' onclick='Reporter(this.value);' />
</td></tr>";
}
$contents.="</table>";
}
$contents.="<input type='hidden' name='step' value='send_invites'>
<input type='hidden' name='provider_box' value='{$_POST['provider_box']}'>
<input type='hidden' name='email_box' value='{$_POST['email_box']}'>
<input type='hidden' name='oi_session_id' value='{$_POST['oi_session_id']}'>";
}
}
$contents.="</form>";
?>
Merci beaucoup & bonne soirée ;)
greg
Je ne parviens tjs pas à le faire fonctionner. Est-ce qu'il serait possible de spécifier à chaque submit quelle fonction doit être appelée ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Il ne faut inclure que le Javascript dans la deuxième étape.
Ou plus simple : remplace
Et ajoute id="secondForm" sur la balise du formulaire de la 2ème étape.
Ou plus simple : remplace
var formulaire = document.forms[0];Par
var formulaire = document.getElementById('secondForm');
Et ajoute id="secondForm" sur la balise du formulaire de la 2ème étape.
Je viens d'essayer, le résultat est le même : le popup se ferme.
Les deux étapes se déroulent dans le même <form></form>.
Je ne comprends pas !
Les deux étapes se déroulent dans le même <form></form>.
Je ne comprends pas !
Ok, maintenant la première étape se déroule correctement et je parviens à nouveau à afficher les contact.
Par contre le submit pour ajouter les contacts dans le textarea ne fonctionne tjs pas...
En fait, la fonction initiale du formulaire popup était d'envoyer un message aux contacts sélectionnés... fonction que je tente de remplacer par celle que tu m'as proposée.
Mais je n'y arrive tjs pas et cela commence à m'agacer... pffff !
<script type="text/javascript">
window.onload = function() {
var formulaire = document.getElementById('secondForm');
formulaire.onsubmit = function() {
var liste = '';
var cases = formulaire.getElementsByTagName('input');
for(i = 0 ; i < cases.length ; i++) {
checkbox = cases[i];
if(checkbox.getAttribute('type') == 'checkbox') {
if(checkbox.checked == true) {
baliseP = checkbox.parentNode;
liste += baliseP.getElementsByTagName('label').item(0).firstChild.nodeValue + '\n';
}
}
}
window.opener.document.getElementById('ad_emails').value += liste;
window.close();
return false;
};
};
</script>
<?php
include('openinviter.php');
$inviter=new OpenInviter();
$oi_services=$inviter->getPlugins();
if (isset($_POST['provider_box']))
{
if (isset($oi_services['email'][$_POST['provider_box']])) $plugType='email';
elseif (isset($oi_services['social'][$_POST['provider_box']])) $plugType='social';
else $plugType='';
}
else $plugType = '';
function ers($ers)
{
if (!empty($ers))
{
$contents="<table cellspacing='0' cellpadding='0' style='border:1px solid red;' align='center' class='tbErrorMsgGrad'><tr><td valign='middle' style='padding:3px' valign='middle' class='tbErrorMsg'><img src='/images/ers.gif'></td><td valign='middle' style='color:red;padding:5px;'>";
foreach ($ers as $key=>$error)
$contents.="{$error}<br >";
$contents.="</td></tr></table><br >";
return $contents;
}
}
function oks($oks)
{
if (!empty($oks))
{
$contents="<table border='0' cellspacing='0' cellpadding='10' style='border:1px solid #5897FE;' align='center' class='tbInfoMsgGrad'><tr><td valign='middle' valign='middle' class='tbInfoMsg'><img src='/images/oks.gif' ></td><td valign='middle' style='color:#5897FE;padding:5px;'> ";
foreach ($oks as $key=>$msg)
$contents.="{$msg}<br >";
$contents.="</td></tr></table><br >";
return $contents;
}
}
if (!empty($_POST['step'])) $step=$_POST['step'];
else $step='get_contacts';
$ers=array();$oks=array();$import_ok=false;$done=false;
if ($_SERVER['REQUEST_METHOD']=='POST')
{
if ($step=='get_contacts')
{
if (empty($_POST['email_box']))
$ers['email']="Email missing";
if (empty($_POST['password_box']))
$ers['password']="Password missing";
if (empty($_POST['provider_box']))
$ers['provider']="Provider missing";
if (count($ers)==0)
{
$inviter->startPlugin($_POST['provider_box']);
$internal=$inviter->getInternalError();
if ($internal)
$ers['inviter']=$internal;
elseif (!$inviter->login($_POST['email_box'],$_POST['password_box']))
{
$internal=$inviter->getInternalError();
$ers['login']=($internal?$internal:"Login failed. Please check the email and password you have provided and try again later");
}
elseif (false===$contacts=$inviter->getMyContacts())
$ers['contacts']="Unable to get contacts.";
else
{
$import_ok=true;
$step='send_invites';
$_POST['oi_session_id']=$inviter->plugin->getSessionID();
$_POST['message_box']='';
}
}
}
}
else
{
$_POST['email_box']='';
$_POST['password_box']='';
$_POST['provider_box']='';
}
$contents="<script type='text/javascript'>
function toggleAll(element)
{
var form = document.forms.openinviter, z = 0;
for(z=0; z<form.length;z++)
{
if(form[z].type == 'checkbox')
form[z].checked = element.checked;
}
}
</script>";
$contents.="<form action='' method='POST' name='openinviter'>".ers($ers).oks($oks);
if (!$done)
{
if ($step=='get_contacts')
{
$contents.="<table align='center' class='thTable' cellspacing='0' cellpadding='0' style='border:none;'>
<tr><td align='center'><br><strong>Si votre entourage n'est pas inscrit à la Newsletter de Carnet Familial Online,<br>sélectionnez les contacts supplémentaires que vous souhaitez ajouter à la liste de diffusion de votre annonce.<br><br></strong></td></td>
</table>
<table align='center' class='thTable' cellspacing='0' cellpadding='0' style='border:none;'>
<tr><td> </td><td align='left'><label for='email_box'>Adresse email</label> <input class='thTextbox' type='text' name='email_box' value='{$_POST['email_box']}'><br><br></td></tr>
<tr><td> </td><td align='left'><label for='password_box'>Mot de passe </label> <input class='thTextbox' type='password' name='password_box' value='{$_POST['password_box']}'></td></tr>
<tr><td> </td><td align='center'><br><br><label for='provider_box'>Fournisseur (Gmail, Yahoo, Facebook, ...)</label><br><br><select class='thSelect' name='provider_box'><option value=''></option>";
foreach ($oi_services as $type=>$providers)
{
$contents.="<option disabled>".$inviter->pluginTypes[$type]."</option>";
foreach ($providers as $provider=>$details)
$contents.="<option value='{$provider}'".($_POST['provider_box']==$provider?' selected':'').">{$details['name']}</option>";
}
$contents.="</select></td></tr>
<tr><td colspan='2' align='center'><br><input class='thButton' type='submit' name='import' value='Importer les contacts'></td></tr>
</table><input type='hidden' name='step' value='get_contacts'>";
}
else
$contents.="<tr><td align='center'><br><strong>Si votre entourage n'est pas inscrit à la Newsletter de Carnet Familial Online,<br>sélectionnez les contacts supplémentaires que vous souhaitez ajouter à la liste de diffusion de votre annonce.<br><br></strong></td></tr>
</table>";
}
if (!$done)
{
if ($step=='send_invites')
{
if ($inviter->showContacts())
{
$contents.="<table class='thTable' align='center' cellspacing='0' cellpadding='0'><tr class='thTableHeader'><td colspan='".($plugType=='email'? "3":"2")."'>Vos contacts :<br><br></td></tr>";
if (count($contacts)==0)
$contents.="<tr class='thTableOddRow'><td align='center' style='padding:20px;' colspan='".($plugType=='email'? "3":"2")."'>Vous n'avez pas de contact dans votre carnet d'adresse</td></tr>";
else
{
$contents.="<tr class='thTableDesc'><td><input type='checkbox' onChange='toggleAll(this)' name='toggle_all' title='Select/Deselect all' checked></td><td><strong>Nom</strong></td>".($plugType == 'email' ?"<td><strong>Email</strong></td>":"")."</tr>";
$odd=true;$counter=0;
foreach ($contacts as $email=>$name)
{
$counter++;
if ($odd) $class='thTableOddRow'; else $class='thTableEvenRow';
$contents.="<tr class='{$class}'>
<td>
<input type='checkbox' name='email_{$counter}' id='email_{$counter}' class='thCheckbox' checked>
<input type='hidden' name='name_{$counter}' value='{$name}'>
<input type='hidden' name='email_{$counter}' value='{$email}'></td>
<td><label for='name_{$counter}'>{$name}</label></td>".($plugType == 'email' ?"<td><label for='email_{$counter}'>{$email}</label></td>":"")."</tr>
";
$odd=!$odd;
}
$contents.="<tr class='thTableFooter'><td colspan='".($plugType=='email'? "3":"2")."' style='padding:3px;'><br><br>
<input type='submit' name='ajouter' value='Ajouter les contacts' onclick='Reporter(this.value);' />
</td></tr>";
}
$contents.="</table>";
}
$contents.="<input type='hidden' name='step' value='send_invites'>
<input type='hidden' name='provider_box' value='{$_POST['provider_box']}'>
<input type='hidden' name='email_box' value='{$_POST['email_box']}'>
<input type='hidden' name='oi_session_id' value='{$_POST['oi_session_id']}'>";
}
}
$contents.="</form>";
?>
Par contre le submit pour ajouter les contacts dans le textarea ne fonctionne tjs pas...
En fait, la fonction initiale du formulaire popup était d'envoyer un message aux contacts sélectionnés... fonction que je tente de remplacer par celle que tu m'as proposée.
Mais je n'y arrive tjs pas et cela commence à m'agacer... pffff !
<script type="text/javascript">
window.onload = function() {
var formulaire = document.getElementById('secondForm');
formulaire.onsubmit = function() {
var liste = '';
var cases = formulaire.getElementsByTagName('input');
for(i = 0 ; i < cases.length ; i++) {
checkbox = cases[i];
if(checkbox.getAttribute('type') == 'checkbox') {
if(checkbox.checked == true) {
baliseP = checkbox.parentNode;
liste += baliseP.getElementsByTagName('label').item(0).firstChild.nodeValue + '\n';
}
}
}
window.opener.document.getElementById('ad_emails').value += liste;
window.close();
return false;
};
};
</script>
<?php
include('openinviter.php');
$inviter=new OpenInviter();
$oi_services=$inviter->getPlugins();
if (isset($_POST['provider_box']))
{
if (isset($oi_services['email'][$_POST['provider_box']])) $plugType='email';
elseif (isset($oi_services['social'][$_POST['provider_box']])) $plugType='social';
else $plugType='';
}
else $plugType = '';
function ers($ers)
{
if (!empty($ers))
{
$contents="<table cellspacing='0' cellpadding='0' style='border:1px solid red;' align='center' class='tbErrorMsgGrad'><tr><td valign='middle' style='padding:3px' valign='middle' class='tbErrorMsg'><img src='/images/ers.gif'></td><td valign='middle' style='color:red;padding:5px;'>";
foreach ($ers as $key=>$error)
$contents.="{$error}<br >";
$contents.="</td></tr></table><br >";
return $contents;
}
}
function oks($oks)
{
if (!empty($oks))
{
$contents="<table border='0' cellspacing='0' cellpadding='10' style='border:1px solid #5897FE;' align='center' class='tbInfoMsgGrad'><tr><td valign='middle' valign='middle' class='tbInfoMsg'><img src='/images/oks.gif' ></td><td valign='middle' style='color:#5897FE;padding:5px;'> ";
foreach ($oks as $key=>$msg)
$contents.="{$msg}<br >";
$contents.="</td></tr></table><br >";
return $contents;
}
}
if (!empty($_POST['step'])) $step=$_POST['step'];
else $step='get_contacts';
$ers=array();$oks=array();$import_ok=false;$done=false;
if ($_SERVER['REQUEST_METHOD']=='POST')
{
if ($step=='get_contacts')
{
if (empty($_POST['email_box']))
$ers['email']="Email missing";
if (empty($_POST['password_box']))
$ers['password']="Password missing";
if (empty($_POST['provider_box']))
$ers['provider']="Provider missing";
if (count($ers)==0)
{
$inviter->startPlugin($_POST['provider_box']);
$internal=$inviter->getInternalError();
if ($internal)
$ers['inviter']=$internal;
elseif (!$inviter->login($_POST['email_box'],$_POST['password_box']))
{
$internal=$inviter->getInternalError();
$ers['login']=($internal?$internal:"Login failed. Please check the email and password you have provided and try again later");
}
elseif (false===$contacts=$inviter->getMyContacts())
$ers['contacts']="Unable to get contacts.";
else
{
$import_ok=true;
$step='send_invites';
$_POST['oi_session_id']=$inviter->plugin->getSessionID();
$_POST['message_box']='';
}
}
}
}
else
{
$_POST['email_box']='';
$_POST['password_box']='';
$_POST['provider_box']='';
}
$contents="<script type='text/javascript'>
function toggleAll(element)
{
var form = document.forms.openinviter, z = 0;
for(z=0; z<form.length;z++)
{
if(form[z].type == 'checkbox')
form[z].checked = element.checked;
}
}
</script>";
$contents.="<form action='' method='POST' name='openinviter'>".ers($ers).oks($oks);
if (!$done)
{
if ($step=='get_contacts')
{
$contents.="<table align='center' class='thTable' cellspacing='0' cellpadding='0' style='border:none;'>
<tr><td align='center'><br><strong>Si votre entourage n'est pas inscrit à la Newsletter de Carnet Familial Online,<br>sélectionnez les contacts supplémentaires que vous souhaitez ajouter à la liste de diffusion de votre annonce.<br><br></strong></td></td>
</table>
<table align='center' class='thTable' cellspacing='0' cellpadding='0' style='border:none;'>
<tr><td> </td><td align='left'><label for='email_box'>Adresse email</label> <input class='thTextbox' type='text' name='email_box' value='{$_POST['email_box']}'><br><br></td></tr>
<tr><td> </td><td align='left'><label for='password_box'>Mot de passe </label> <input class='thTextbox' type='password' name='password_box' value='{$_POST['password_box']}'></td></tr>
<tr><td> </td><td align='center'><br><br><label for='provider_box'>Fournisseur (Gmail, Yahoo, Facebook, ...)</label><br><br><select class='thSelect' name='provider_box'><option value=''></option>";
foreach ($oi_services as $type=>$providers)
{
$contents.="<option disabled>".$inviter->pluginTypes[$type]."</option>";
foreach ($providers as $provider=>$details)
$contents.="<option value='{$provider}'".($_POST['provider_box']==$provider?' selected':'').">{$details['name']}</option>";
}
$contents.="</select></td></tr>
<tr><td colspan='2' align='center'><br><input class='thButton' type='submit' name='import' value='Importer les contacts'></td></tr>
</table><input type='hidden' name='step' value='get_contacts'>";
}
else
$contents.="<tr><td align='center'><br><strong>Si votre entourage n'est pas inscrit à la Newsletter de Carnet Familial Online,<br>sélectionnez les contacts supplémentaires que vous souhaitez ajouter à la liste de diffusion de votre annonce.<br><br></strong></td></tr>
</table>";
}
if (!$done)
{
if ($step=='send_invites')
{
if ($inviter->showContacts())
{
$contents.="<table class='thTable' align='center' cellspacing='0' cellpadding='0'><tr class='thTableHeader'><td colspan='".($plugType=='email'? "3":"2")."'>Vos contacts :<br><br></td></tr>";
if (count($contacts)==0)
$contents.="<tr class='thTableOddRow'><td align='center' style='padding:20px;' colspan='".($plugType=='email'? "3":"2")."'>Vous n'avez pas de contact dans votre carnet d'adresse</td></tr>";
else
{
$contents.="<tr class='thTableDesc'><td><input type='checkbox' onChange='toggleAll(this)' name='toggle_all' title='Select/Deselect all' checked></td><td><strong>Nom</strong></td>".($plugType == 'email' ?"<td><strong>Email</strong></td>":"")."</tr>";
$odd=true;$counter=0;
foreach ($contacts as $email=>$name)
{
$counter++;
if ($odd) $class='thTableOddRow'; else $class='thTableEvenRow';
$contents.="<tr class='{$class}'>
<td>
<input type='checkbox' name='email_{$counter}' id='email_{$counter}' class='thCheckbox' checked>
<input type='hidden' name='name_{$counter}' value='{$name}'>
<input type='hidden' name='email_{$counter}' value='{$email}'></td>
<td><label for='name_{$counter}'>{$name}</label></td>".($plugType == 'email' ?"<td><label for='email_{$counter}'>{$email}</label></td>":"")."</tr>
";
$odd=!$odd;
}
$contents.="<tr class='thTableFooter'><td colspan='".($plugType=='email'? "3":"2")."' style='padding:3px;'><br><br>
<input type='submit' name='ajouter' value='Ajouter les contacts' onclick='Reporter(this.value);' />
</td></tr>";
}
$contents.="</table>";
}
$contents.="<input type='hidden' name='step' value='send_invites'>
<input type='hidden' name='provider_box' value='{$_POST['provider_box']}'>
<input type='hidden' name='email_box' value='{$_POST['email_box']}'>
<input type='hidden' name='oi_session_id' value='{$_POST['oi_session_id']}'>";
}
}
$contents.="</form>";
?>
Fais deux balises <form> différentes pour chaque étape.
Par exemple :
Par exemple :
<form method="post" action="" id="connexionOpenInviter"> et <form method="post" action="" id="importForm">Et dans le Javascript :
<script type="text/javascript">
window.onload = function() {
if(document.getElementById('importForm') !== null) {
formulaire = document.getElementById('importForm');
formulaire.onsubmit = function() {
var liste = '';
var cases = formulaire.getElementsByTagName('input');
for(i = 0 ; i < cases.length ; i++) {
checkbox = cases[i];
if(checkbox.getAttribute('type') == "checkbox") {
if(checkbox.checked == true) {
baliseP = checkbox.parentNode;
liste += baliseP.getElementsByTagName('label').item(0).firstChild.nodeValue + "\n";
}
}
}
window.opener.document.getElementById('ad_emails').value += liste;
window.close();
return false;
};
} else
alert('Formulaire absent');
};
</script>
Hello avion-f16...
Merci pour ton message et toute ton aide !
Je viens d'essayer et malheureusement, cela ne fonctionne pas encore.
J'imagine que la fonction identifie correctement le formulaire puisque il n'y a pas d'alerte. Toutefois, après avoir cliqué sur le submit, aucune adresse n'est importée et le popup reste ouvert avec la page toute blanche.
Si tu veux, tu peux le constater par toi-même en sélectionnant un des formulaires pour publier une nouvelle annonce et en cliquant sur "Contacts supplémentaires" à l'adresse http://www.carnetfamilial.be/index.php?option=com_adsmanager&page=write_ad&Itemid=1 (id : demo16 ; pw : demo16).
Voici où j'en suis avec le code du popup :
Merci pour ton message et toute ton aide !
Je viens d'essayer et malheureusement, cela ne fonctionne pas encore.
J'imagine que la fonction identifie correctement le formulaire puisque il n'y a pas d'alerte. Toutefois, après avoir cliqué sur le submit, aucune adresse n'est importée et le popup reste ouvert avec la page toute blanche.
Si tu veux, tu peux le constater par toi-même en sélectionnant un des formulaires pour publier une nouvelle annonce et en cliquant sur "Contacts supplémentaires" à l'adresse http://www.carnetfamilial.be/index.php?option=com_adsmanager&page=write_ad&Itemid=1 (id : demo16 ; pw : demo16).
Voici où j'en suis avec le code du popup :
<?php
include('openinviter.php');
$inviter=new OpenInviter();
$oi_services=$inviter->getPlugins();
if (isset($_POST['provider_box']))
{
if (isset($oi_services['email'][$_POST['provider_box']])) $plugType='email';
elseif (isset($oi_services['social'][$_POST['provider_box']])) $plugType='social';
else $plugType='';
}
else $plugType = '';
function ers($ers)
{
if (!empty($ers))
{
$contents="<table cellspacing='0' cellpadding='0' style='border:1px solid red;' align='center' class='tbErrorMsgGrad'><tr><td valign='middle' style='padding:3px' valign='middle' class='tbErrorMsg'><img src='/images/ers.gif'></td><td valign='middle' style='color:red;padding:5px;'>";
foreach ($ers as $key=>$error)
$contents.="{$error}<br >";
$contents.="</td></tr></table><br >";
return $contents;
}
}
function oks($oks)
{
if (!empty($oks))
{
$contents="<table border='0' cellspacing='0' cellpadding='10' style='border:1px solid #5897FE;' align='center' class='tbInfoMsgGrad'><tr><td valign='middle' valign='middle' class='tbInfoMsg'><img src='/images/oks.gif' ></td><td valign='middle' style='color:#5897FE;padding:5px;'> ";
foreach ($oks as $key=>$msg)
$contents.="{$msg}<br >";
$contents.="</td></tr></table><br >";
return $contents;
}
}
if (!empty($_POST['step'])) $step=$_POST['step'];
else $step='get_contacts';
$ers=array();$oks=array();$import_ok=false;$done=false;
if ($_SERVER['REQUEST_METHOD']=='POST')
{
if ($step=='get_contacts')
{
if (empty($_POST['email_box']))
$ers['email']="Email missing";
if (empty($_POST['password_box']))
$ers['password']="Password missing";
if (empty($_POST['provider_box']))
$ers['provider']="Provider missing";
if (count($ers)==0)
{
$inviter->startPlugin($_POST['provider_box']);
$internal=$inviter->getInternalError();
if ($internal)
$ers['inviter']=$internal;
elseif (!$inviter->login($_POST['email_box'],$_POST['password_box']))
{
$internal=$inviter->getInternalError();
$ers['login']=($internal?$internal:"Login failed. Please check the email and password you have provided and try again later");
}
elseif (false===$contacts=$inviter->getMyContacts())
$ers['contacts']="Unable to get contacts.";
else
{
$import_ok=true;
$step='send_invites';
$_POST['oi_session_id']=$inviter->plugin->getSessionID();
$_POST['message_box']='';
}
}
}
elseif ($step=='send_invites')
{
$done=true;
}
}
else
{
$_POST['email_box']='';
$_POST['password_box']='';
$_POST['provider_box']='';
}
$contents="<script type='text/javascript'>
function toggleAll(element)
{
var form = document.forms.openinviter, z = 0;
for(z=0; z<form.length;z++)
{
if(form[z].type == 'checkbox')
form[z].checked = element.checked;
}
}
</script>";
$contents.="<form action='' method='POST' id='connexionOpenInviter' name='openinviter'>".ers($ers).oks($oks);
if (!$done)
{
if ($step=='get_contacts')
{
$contents.="<table align='center' class='thTable' cellspacing='0' cellpadding='0' style='border:none;'>
<tr><td align='center'><br><strong>Si votre entourage n'est pas inscrit à la Newsletter de Carnet Familial Online,<br>sélectionnez les contacts supplémentaires que vous souhaitez ajouter à la liste de diffusion de votre annonce.<br><br></strong></td></td>
</table>
<table align='center' class='thTable' cellspacing='0' cellpadding='0' style='border:none;'>
<tr><td> </td><td align='left'><label for='email_box'>Adresse email</label> <input class='thTextbox' type='text' name='email_box' value='{$_POST['email_box']}'><br><br></td></tr>
<tr><td> </td><td align='left'><label for='password_box'>Mot de passe </label> <input class='thTextbox' type='password' name='password_box' value='{$_POST['password_box']}'></td></tr>
<tr><td> </td><td align='center'><br><br><label for='provider_box'>Fournisseur (Gmail, Yahoo, Facebook, ...)</label><br><br><select class='thSelect' name='provider_box'><option value=''></option>";
foreach ($oi_services as $type=>$providers)
{
$contents.="<option disabled>".$inviter->pluginTypes[$type]."</option>";
foreach ($providers as $provider=>$details)
$contents.="<option value='{$provider}'".($_POST['provider_box']==$provider?' selected':'').">{$details['name']}</option>";
}
$contents.="</select></td></tr>
<tr class='thTableImportantRow'><td colspan='2' align='center'><input class='thButton' type='submit' name='import' value='Import Contacts'></td></tr>
</table><input type='hidden' name='step' value='get_contacts'></form>";
}
else
$contents.="<script type='text/javascript'>
window.onload = function() {
if(document.getElementById('saveForm') !== null) {
formulaire = document.getElementById('saveForm');
formulaire.onsubmit = function() {
var liste = '';
var cases = formulaire.getElementsByTagName('input');
for(i = 0 ; i < cases.length ; i++) {
checkbox = cases[i];
if(checkbox.getAttribute('type') == 'checkbox') {
if(checkbox.checked == true) {
baliseP = checkbox.parentNode;
liste += baliseP.getElementsByTagName('label').item(0).firstChild.nodeValue + '\n';
}
}
}
window.opener.document.forms['saveForm'].elements['ad_emails'].value += liste;
window.close();
return false;
};
} else
alert('Formulaire absent');
};
</script>";
$contents.="<form method='post' action='' name='saveForm'><table><tr><td align='center'><br><strong>Si votre entourage n'est pas inscrit à la Newsletter de Carnet Familial Online,<br>sélectionnez les contacts supplémentaires que vous souhaitez ajouter à la liste de diffusion de votre annonce.<br><br></strong></td></tr>
</table>";
}
if (!$done)
{
if ($step=='send_invites')
{
if ($inviter->showContacts())
{
$contents.="<table class='thTable' align='center' cellspacing='0' cellpadding='0'><tr class='thTableHeader'><td colspan='".($plugType=='email'? "3":"2")."'>Your contacts</td></tr>";
if (count($contacts)==0)
$contents.="<tr class='thTableOddRow'><td align='center' style='padding:20px;' colspan='".($plugType=='email'? "3":"2")."'>You do not have any contacts in your address book.</td></tr>";
else
{
$contents.="<tr class='thTableDesc'>
<td>Name</td>".($plugType == 'email' ?"<td>E-mail</td>":"")."</tr>";
foreach ($contacts as $email=>$name)
{
$counter++;
$contents.="<tr class='{$class}'>
<td><input name='{$email}' id='{$email}' value='{$email}' type='checkbox' class='thCheckbox' checked='checked'>
<td><label for='{$name}'>{$name}</label></td><td><label for='{$email}'>{$email}</label></td></tr>";
}
$contents.="<tr class='thTableFooter'><td style='padding:3px;'>
<input type='submit' value='Importer' onclick='Reporter(this.value);' /></td></tr>";
}
$contents.="</table>";
}
$contents.="<input type='hidden' name='step' value='send_invites'>
<input type='hidden' name='provider_box' value='{$_POST['provider_box']}'>
<input type='hidden' name='email_box' value='{$_POST['email_box']}'>
<input type='hidden' name='oi_session_id' value='{$_POST['oi_session_id']}'>";
}
}
$contents.="</form>";
?>