hellofacteurV1/vues/admin_annonces_maj.php

307 lines
11 KiB
PHP
Executable File

<?php
/**
* Vue affichant les formulaires permettant de gérer les annonces promotionnelles
* Saisie, affichage, mise à jour ou encore suppression.
* + scripts ajax testant la saisie
*
**/
$header_title="Les annonces pro >> ".SITE_NOM;
$body_title="Gestion des annonces pro.";
$ariane_items[0]["txt"]="<li><a href='".PAGE_ACCUEIL."'>Tableau de bord.</a></li>";
$ariane_items[0]["form"]=false;
$ariane_items[0]["actif"]=false;
$ariane_items[1]["txt"]="<li>Gestion des annonces promotionnelles.</li>";
$ariane_items[1]["form"]=true;
$ariane_items[1]["actif"]=true;
$msg_infos[0]="Formulaire de gestion des <i>annonces promotionnelles</i> à intégrer aux mailings.";
$form[0]["nom"]="Rechercher une annonce.";
$form[0]["champs"]="<form method='post' id='recherche_annonce' name='recherche_annonce' action='".PAGE_MAJ_ANNONCES."' class='form-inline' role='form'>
<div class='form-group'>
<label class='sr-only' for='recherche'>Saisir l'expression à rechercher</label>
<input type='text' class='form-control' name='recherche' id='recherche' placeholder=\"Saisir votre recherche\" required>
</div>
<button type='submit' class='btn btn-success'>Rechercher</button><br><br>
<div id='selection'>";
if(!empty($select))
$form[0]["champs"].=$select;
$form[0]["champs"].="</div>
</fieldset></form>";
if(!empty($encours))
{
$form[0]["champs"].="<h4>En cours de diffusion.</h4><ul>";
foreach($encours as $infos)
{
$form[0]["champs"].="<li><b>Annonce n°".$infos["id_annonce"]." (".$infos["emplacement"].") :</b> ".$infos["titre"].". Envoyée ".$infos["stats"]["nb_envois"]." fois à ".$infos["stats"]["nb_envois_uniques"]." abonnés différents, ce qui a généré ".$infos["stats"]["nb_clics"]." clics de ".$infos["stats"]["nb_clics_uniques"]." abonnés, soit ".round(($infos["stats"]["nb_clics_uniques"]/($infos["stats"]["nb_envois_uniques"]*0.01)))."% des abonnés ciblés.</li>";
}
$form[0]["champs"].="</ul>";
}
if(!empty($form_html))
{
$form[1]=$form_html[0];
$form[2]=$form_html[1];
}
else
{
$form[1]["nom"]="Saisie d'une nouvelle annonce.";
$form[1]["champs"]="<form method='post' id='maj_annonce' name='maj_annonce' action='".PAGE_MAJ_ANNONCES."' role='form' class='form-horizontal'>";
$emplacements=explode("|",ANNONCE_EMPLACEMENTS);
$form[1]["champs"].="<div class='form-group'><label for='emplacement' class='col-sm-3 control-label'>Emplacement de l'annonce :</label>";
foreach ($emplacements as $emplacement)
{
if($emplacement==$form["emplacement"])
$form[1]["champs"].="<label class='checkbox-inline'><input type='radio' name='emplacement' value='$emplacement' checked='checked'> ".$emplacement."</label>";
else
$form[1]["champs"].="<label class='checkbox-inline'><input type='radio' name='emplacement' value='$emplacement'> ".$emplacement."</label>";
}
$form[1]["champs"].="<div class='col-sm-offset-3 col-sm-9'><p class='help-block'><b>Obligatoire</b>. Où l'annonce doit-elle apparaître dans les mailings ?</p></div>
</div>
<div class='form-group'>
<label for='titre' class='col-sm-3 control-label'>Titre.</label>
<div class='col-sm-9'><input class='form-control' type='text' maxlength='".ANNONCE_MAX_TITRE."' name='titre' id='titre' value=\"".htmlspecialchars($form["titre"])."\" required></div>
<div class='col-sm-offset-3 col-sm-9'><p class='help-block'><b>Obligatoire</b>. Désignation interne de l'annonce (non publiée).</p></div>
</div>
<div class='form-group'>
<label for='annonce' class='col-sm-3 control-label'>Annonce.</label>
<div class='col-sm-9'><input class='form-control' type='text' maxlength='".ANNONCE_MAX_TEXTE."' name='annonce' id='annonce' value=\"".htmlspecialchars($form["annonce"])."\" required></div>
<div class='col-sm-offset-3 col-sm-9'><p class='help-block'><b>Obligatoire</b>. Le texte de l'annonce.</p></div>
</div>
<div class='form-group'>
<label for='url' class='col-sm-3 control-label'>Adresse du lien.</label>
<div class='col-sm-9'><input class='form-control' type='url' maxlength='".ANNONCE_MAX_URL."' name='url' id='url' value=\"".$form["url"]."\" required></div>
<div class='col-sm-offset-3 col-sm-9'><p class='help-block'><b>Obligatoire</b>. L'adresse de page dont le lien accompagne l'annonce.</p></div>
</div>
<div class='form-group'>
<label for='designation' class='col-sm-3 control-label'>Ancre du lien.</label>
<div class='col-sm-9'><input class='form-control' type='text' maxlength='".ANNONCE_MAX_ANCRE."' name='designation' id='designation' value=\"".htmlspecialchars($form["designation"])."\" required></div>
<div class='col-sm-offset-3 col-sm-9'><p class='help-block'><b>Obligatoire</b>. Le texte servant d'ancre au lien.</p></div>
</div>
<div class='form-group'>
<label for='time_debut' class='col-sm-3 control-label'>Date de début :</label>
<div class='col-sm-9'><input class='form-control' type='text' name='time_debut' id='time_debut' value=\"".htmlspecialchars($form["time_debut"])."\" required></div>
<div class='col-sm-offset-3 col-sm-9'><p class='help-block'><b>Obligatoire</b>. Le jour de début de diffusion de l'annonce. Format ".DATE_FORMAT."</p></div>
</div>
<div class='form-group'>
<label for='time_fin' class='col-sm-3 control-label'>Date de fin :</label>
<div class='col-sm-9'><input class='form-control' type='text' name='time_fin' id='time_fin' value=\"".htmlspecialchars($form["time_fin"])."\" required></div>
<div class='col-sm-offset-3 col-sm-9'><p class='help-block'><b>Obligatoire</b>.</p></div>
</div>
<div class='form-group'>
<label for='commentaires' class='col-sm-3 control-label'>Mémo.</label>
<div class='col-sm-9'><input class='form-control' type='text' maxlength='".ANNONCE_MAX_COMMENTAIRES."' name='commentaires' id='commentaires' value=\"".htmlspecialchars($form["commentaires"])."\"></div>
<div class='col-sm-offset-3 col-sm-9'><p class='help-block'><b>Facultatif</b>. Mémo interne non publié.</p></div>
</div>
<div id='msg_annonces'></div>
<div class='form-group'><div class='col-sm-offset-3 col-sm-9'><button type='submit' class='btn btn-success btn-lg'>Enregistrer.</button></div></div>
</form>";
}
//le code pour ajax
ob_start();
?>
<script src="<?=SITE_URL;?>/themes/seb/assets/js/pickadate/picker.js"></script>
<script src="<?=SITE_URL;?>/themes/seb/assets/js/pickadate/picker.date.js"></script>
<script src="<?=SITE_URL;?>/themes/seb/assets/js/pickadate/picker.time.js"></script>
<script src="<?=SITE_URL;?>/themes/seb/assets/js/pickadate/legacy.js"></script>
<script src="<?=SITE_URL;?>/themes/seb/assets/js/pickadate/fr_FR.js"></script>
<script>
function is_int(value)
{//source : http://www.inventpartners.com/javascript_is_int
if((parseFloat(value)==parseInt(value))&&!isNaN(value))
{
return true;
}
else
{
return false;
}
return true;
}
function annonce_affiche(id_annonce)
{
if(id_annonce!==0)
{
$.ajax(
{
url:'<?=SITE_URL;?>/JS/admin_annonces_affiche',
type:'GET',
data:'id_annonce='+id_annonce+'&ajax=1',
success:function(code)
{
if(code!=="")
{
$('#form1').html(code);
$("input[name=time_debut][type=text]").pickadate();//ne fait pas apparaître le calendrier qd input hidden
$("input[name=time_fin][type=text]").pickadate();
}
}
});
}
}
$(document).ready(function()
{
$("#time_debut").pickadate();
$("#time_fin").pickadate();
$('#recherche_annonce').on('submit', function(e)
{
e.preventDefault();
var $this=$(this);
var nom=$('#recherche').val();
if(recherche==='')
{
$('#msg_annonces').html('<?php echo str_replace("'","\"",get_html_alerte_msg((array) ERREUR_UTILISA_CHAMPS_ABSENTS));?>');
}
else
{
$.ajax(
{
url:'<?=SITE_URL;?>/JS/admin_annonces_recherche',
type:'POST',
data:$this.serialize()+'&ajax=1',
success:function(code)
{
if(code!=="")
{
$('#selection').html(code);
}
}
});
}
});
$('#selection').on('change','#liste_annonces', function()
{
var id_annonce=$('#liste_annonces').val();
annonce_affiche(id_annonce);
});
$('#form').on('submit','#maj_annonce', function(e)
{
e.preventDefault();
var $this=$(this);
var emplacement=$('#emplacement').val();
var titre=$('#titre').val();
var annonce=$('#annonce').val();
var url=$('#url').val();
var designation=$('#designation').val();
var time_debut=$('#time_debut').val();
var time_fin=$('#time_fin').val();
if((emplacement=='')||(titre=='')||(annonce=='')||(url=='')||(designation=='')||(time_debut=='')||(time_fin==''))
{
$('#msg_annonces').html('<?php echo str_replace("'","\"",get_html_alerte_msg((array) ERREUR_UTILISA_CHAMPS_ABSENTS));?>');
alert('<?=ERREUR_UTILISA_CHAMPS_ABSENTS;?>');
}
else
{
var suppr_ok=$("input[name=suppr_ok]:checked").val();
if(suppr_ok!=undefined)
{
$.ajax(
{
url:'<?=SITE_URL;?>/JS/admin_annonces_suppr_tests',
type:'POST',
data:$this.serialize()+'&ajax=1',
success:function(code)
{
if(code!=="")
{
if(code==='<?php echo str_replace("'","\"",get_html_alerte_msg((array) MSG_ADMIN_VALID,"alert-success"));?>')
{
$('#form1').html("");
$('#msg_form').html('<?php echo str_replace("'","\"",get_html_alerte_msg((array) MSG_ADMIN_VALID,"alert-success"))."<p><br><br><a href=\"".PAGE_MAJ_ANNONCES."\" title=\"Nouvelle annonce\" class=\"btn btn-info btn-sm\">+ Nouvelle annonce.</a></p>";?>');
}
else
{
$('#msg_annonces').html(code);
decode=code.replace(/(<([^>]+)>)/ig,"");//trouvé : http://css-tricks.com/snippets/javascript/strip-html-tags-in-javascript/
alert(decode);
}
}
}
});
}
else
{
$.ajax(
{
url:'<?=SITE_URL;?>/JS/admin_annonces_infos_tests',
type:'POST',
data:$this.serialize()+'&ajax=1',
success:function(code)
{
if(code!=="")
{
if(is_int(code))
{//tout s'est bien passé, l'id est retourné pour être affiché
annonce_affiche(code);
$('#msg_annonces').html('<?php echo str_replace("'","\"",get_html_alerte_msg((array) MSG_ADMIN_VALID,"alert-success"));?>');
alert('<?=MSG_ADMIN_VALID;?>');
}
else
{
$('#msg_annonces').html(code);
decode=code.replace(/(<([^>]+)>)/ig,"");//trouvé : http://css-tricks.com/snippets/javascript/strip-html-tags-in-javascript/
alert(decode);
}
}
}
});
}
}
});
$('#form').on('blur','#recherche_rubrique',function(e)
{
e.preventDefault();
var $this=$(this);
var recherche=$('#recherche_rubrique').val();
if(recherche==='')
{
$('#msg_annonces').html('<?php echo str_replace("'","\"",get_html_alerte_msg((array) ERREUR_UTILISA_CHAMPS_ABSENTS));?>');
}
else
{
$.ajax(
{
url:'<?=SITE_URL;?>/JS/admin_rubriques_recherche',
type:'POST',
data:'recherche='+recherche+'&ajax=1&get_nb_abos=1',
success:function(code)
{
if(code!=="")
{
$('#select_rubriques').html(code);
}
}
});
}
});
$('#form').on('submit','#rubriques_annonce', function(e)
{
e.preventDefault();
var $this=$(this);
$.ajax(
{
url:'<?=SITE_URL;?>/JS/admin_annonces_classement_tests',
type:'POST',
data:$this.serialize()+'&ajax=1',
success:function(code)
{
if(code!=="")
{
if(is_int(code))
{//tout s'est bien passé, l'id du hub est retourné pour être affiché
annonce_affiche(code);
}
else
{//des erreurs ont été rencontrées
$('#msg_annonces_classement').html(code);
}
}
}
});
});
});
</script>
<?php
$footer_JS=ob_get_contents();
ob_end_clean();
require(TEMPLATE_REP."/page.php");