Compare commits

..

2 commits

18 changed files with 38 additions and 348 deletions

View file

@ -1,23 +0,0 @@
<?php
if (!defined('_ECRIRE_INC_VERSION')) return;
function action_changer_statut_message_dist(){
include_spip('inc/autoriser');
if (!autoriser("modifier","message")) {
return false;
}
$securiser_action = charger_fonction('securiser_action', 'inc');
$args = $securiser_action();
list($id_message, $statut) = explode('-', $args);
if (!intval($id_message) || !in_array($statut, ['prepa', 'prop', 'publie', 'poubelle'])) {
return false;
}
sql_updateq('spip_messages', ['statut' => $statut], ['id_message=' . $id_message]);
// Cache
include_spip('inc/invalideur');
suivre_invalideur("id='messages/$id_message'");
}

View file

@ -28,7 +28,6 @@ function gamucontact_declarer_tables_interfaces($interfaces) {
*/
function gamucontact_declarer_tables_objets_sql($tables) {
$tables['spip_messages'] = [
'type' => 'message',
'principale' => 'oui',
'field'=> [
'id_message' => 'bigint(21) NOT NULL',
@ -38,12 +37,11 @@ function gamucontact_declarer_tables_objets_sql($tables) {
'nom' => "varchar(255) NOT NULL",
'telephone' => "varchar(55) NOT NULL",
'email_contact' => "varchar(255) NOT NULL",
'origine' => "tinytext NOT NULL",
'type' => "varchar(25) NOT NULL DEFAULT ''",
'date_heure' => "datetime NOT NULL DEFAULT '0000-00-00 00:00:00'",
'date_fin' => "datetime NOT NULL DEFAULT '0000-00-00 00:00:00'",
'rv' => "varchar(3) NOT NULL DEFAULT ''",
'statut' => "varchar(10) NOT NULL DEFAULT '0'",
'statut' => "varchar(6) NOT NULL DEFAULT '0'",
'id_auteur' => "bigint(21) NOT NULL DEFAULT '0'",
'destinataires' => 'text NOT NULL',
'ip' => "varchar(50) NOT NULL DEFAULT '0'",

View file

@ -1,7 +0,0 @@
#CACHE{0}
[(#AUTORISER{modifier,message}|sinon_interdire_acces)]
<h2><:gamucontact:changer_statut_messages:></h2>
<div class="ajax">
[(#FORMULAIRE_CHANGER_STATUT_MESSAGES{#ENV*{data}})]
</div>

View file

@ -1,8 +0,0 @@
[(#REM)
si pas 0minirezo neutraliser l'accès aux messages créés par le formulaire de contact
via le scaffolding pour ?page=message
][(#AUTORISER{0minirezo}|non) <INCLURE{fond=content/404,env} />
][(#AUTORISER{0minirezo}|oui) <INCLURE{fond=inclure/vue_message,env} />]

View file

@ -1,6 +0,0 @@
[(#REM)
intégrer le gamutable de gestion des messages
]<div class="inner_fluid mrm mlm mr-2 ml-2">
<INCLURE{fond=inclure/inc_messages,env}>
</div>

View file

@ -1,30 +0,0 @@
<style type="text/css" media="screen">
.editer_dateInter{
text-align: center;
}
#champ_dateInter{
width: 120px;
}
</style>
<div class="formulaire_spip formulaire_#FORM">
[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{error_data})</p>]
<form name="formulaire_#FORM" action="#ENV{action}" method="post">
<div class="flex justify-between align-items-center">
#ACTION_FORMULAIRE{#ENV{action}}
[(#REM) SAISIE{radio, statut, label=Statut, data=#ARRAY{}} ]
<div class="mt-3">
<button name="statut" type="submit" class="btn" value="publie"><i class="fa fa-check verte"></i> <:gamucontact:publier:></button>
</div>
<div class="mt-3">
<button name="statut" type="submit" class="btn" value="poubelle"><i class="fa fa-trash rouge"></i> <:gamucontact:poubelle:></button>
</div>
</div>
</form>
</div>

View file

@ -1,50 +0,0 @@
<?php
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
function formulaires_changer_statut_messages_charger_dist($data, $redirect = '') {
$valeurs = [];
$data = json_decode($data,true);
if (empty($data)) {
$valeurs['error_data'] = 'Il faut avoir sélectionné au moins 1 message';
}
return $valeurs;
}
function formulaires_changer_statut_messages_verifier_dist($data, $redirect = '') {
$erreurs = [];
$data = json_decode($data, true);
if (empty($data)) {
$erreurs['message_erreur'] = "Il faut avoir sélectionné au moins 1 message";
}
$statut = _request('statut');
if (!in_array($statut, ['prepa', 'prop', 'publie', 'poubelle'])) {
$erreurs['message_erreur'] = "Le statut envoyé n'est pas valide";
}
return $erreurs;
}
function formulaires_changer_statut_messages_traiter_dist($data, $redirect = '') {
$statut = _request('statut');
$data = json_decode($data,true);
$sql_in = sql_in('id_message', $data);
sql_updateq('spip_messages', ['statut' => $statut], $sql_in);
// Cache
include_spip('inc/invalideur');
suivre_invalideur("id='messages/$data[0]");
$retour = [];
$retour['redirect'] = "";
$retour['message_ok'] = gamutable_fermer_modalbox();
return $retour;
}

View file

@ -10,13 +10,13 @@
#ACTION_FORMULAIRE
<input type='submit' class='btn submit' value='<:bouton_enregistrer:>' style="display:none;"/>
<fieldset id="destinataires">
<legend><:gamucontacts:destinataires:></legend>
<div class="editer_groupe">
#SAISIE{input, liste_id_auteur, label=Destinaires auteurs SPIP, explication=une liste d'id_auteur séparés par des ;}
#SAISIE{textarea, liste_emails, label=Destinaires sans compte auteur, explication=une liste d'emails séparés par des ;, rows=3}
</div>
</fieldset>
<fieldset id="destinataires">
<legend><:gamucontacts:destinataires:></legend>
<div class="editer_groupe">
#SAISIE{input, liste_id_auteur, label=Destinaires auteurs SPIP, explication=une liste d'id_auteur séparés par des ;}
#SAISIE{textarea, liste_emails, label=Destinaires sans compte auteur, explication=une liste d'emails séparés par des ;, rows=3}
</div>
</fieldset>
<fieldset id="telephone">
<legend><:gamucontacts:telephone:></legend>
<div class="editer_groupe">
@ -24,13 +24,6 @@
#SAISIE{radio, telephone_obligatoire, label=Obligatoire ?, data=#ARRAY{oui,Oui, '',Non} }
</div>
</fieldset>
<fieldset id="destinataires">
<legend><:gamucontacts:interface_messages:></legend>
<div class="editer_groupe">
#SAISIE{radio, gamutable_afficher_type, label=Afficher le type, data=#ARRAY{oui, Oui, '', Non}}
</div>
</fieldset>
<fieldset id="anti-spam">
<legend><:gamucontacts:antispam:></legend>
<div class="editer_groupe">
@ -38,7 +31,6 @@
#SAISIE{radio, verif_ip, defaut=oui, data=#ARRAY{oui,Oui,non,Non}, label=Utilisation de l'IP stocké pour détecter un robot spammeur }
#SAISIE{input, temps_verif_ip, defaut=300, label=Durée maximale entre 2 messages provenant de la meme IP}
#SAISIE{input, temps_hash_ip, defaut=24, label=Durée avant hashage de l'IP dans la bdd }
#SAISIE{radio, supprimer_si_arobase, defaut=oui, data=#ARRAY{oui,Oui,non,Non}, label=Pas d'envoi si précense d'un @ dans le corps du message }
</div>
</fieldset>

View file

@ -58,10 +58,6 @@ function formulaires_gamucontact_verifier_dist($id_auteur = 0, $redirect = '') {
$erreurs['texte'] = _T('nospam:erreur_spam');
}
}
$supprimer_si_arobase = lire_config('gamucontact/supprimer_si_arobase');
if ($supprimer_si_arobase !== 'non' && strrchr($texte, '@')) {
$erreurs['texte'] = _T('nospam:erreur_spam');
}
}
if (count($erreurs)) {
@ -114,6 +110,33 @@ function formulaires_gamucontact_traiter_dist($id_auteur = 0, $redirect = '') {
$set[$champ] = _request($champ);
}
}
// Enregistrement de l'expéditaur si demandé par la config
if (lire_config('gamucontact/sauvegarder_contacts')) {
// Il s'agit d'un visiteur : on va donc l'enregistrer dans la table auteur pour garder son mail.
// Sauf s'il existe déjà.
$id_aut = sql_getfetsel(
'id_auteur',
'spip_auteurs',
'email = '.sql_quote($set['email_contact'])
);
if (!$id_aut) {
$nom_auteur = trim($set['nom']);
if (!$nom_auteur) {
$nom_auteur = $set['email_contact'];
}
$id_aut = sql_insertq(
'spip_auteurs',
array(
'nom' => $nom_auteur,
'email' => $set['email_contact'],
'statut' => 'contact'
)
);
}
$set['id_auteur'] = $id_aut;
}
$set['date_heure'] = date("Y-m-d H:i:s");
$set['statut'] = 'publie';
$set['titre'] = _T('gamucontact:formulaire_contact');

View file

@ -29,10 +29,6 @@ function gamucontact_upgrade($nom_meta_base_version, $version_cible) {
$maj['create'] = array(array('maj_tables', array('spip_messages')));
$maj['1.0.5'] = array(array('maj_tables', array('spip_messages')));
$maj['1.0.6'] = array(array('maj_tables', array('spip_messages')));
$maj['1.0.7'] = array(array('maj_tables', array('spip_messages')));
$maj['1.0.8'] = array(
array('sql_alter', "TABLE spip_messages CHANGE statut statut VARCHAR(10) NOT NULL DEFAULT '0'"),
);
include_spip('base/upgrade');
maj_plugin($nom_meta_base_version, $version_cible, $maj);

View file

@ -18,11 +18,3 @@ if (!defined('_ECRIRE_INC_VERSION')) {
* @pipeline autoriser */
function gamucontact_autoriser() {
}
/**
* autorisation pour voir les messages : par défaut 0minirezo
*
**/
function gamucontact_autoriser_messages_voir_dist($faire, $type, $id, $qui, $opt) {
return in_array($qui['statut'], ['0minirezo']);
}

View file

@ -1,35 +0,0 @@
[(#AUTORISER{voir,messages}|sinon_interdire_acces)]
#SET{url,#URL_PAGE{json_messages.json}}
[(#SET{titre_un, <i class="fa fa-send"></i> <:gamucontact:messages_envoyes_site:>})]
<div class="">
<div class="gamucontact-gamutable">
<INCLURE{fond=inclure/gamutable,
titregamutable=#GET{titre_un},
apiuri=#GET{url},
tparpage=[25,50,'Tous'],
champcsv="search",
delimitercsv=";",
namecsv="messages.csv",
id_gamutable="id_premier",
env
}>
</div>
<style type="text/css">
.gamutable table .filtreColonne .statut,
.gamutable table .filtreColonne .nom,
.gamutable table .filtreColonne .objet {
border-left: 1px solid rgb(184, 184, 184);
}
.gamutable table .filtreColonne button {
padding: .2rem;
display: inline-flex;
background-color: #f5f5f5;
border: 1px solid #cecece;
border-radius: 5px;
margin-left: .5rem;
}
.gamutable table .filtreColonne button::after {
content: "Valider";
}
</style>

View file

@ -1,28 +0,0 @@
[(#REM)
afficher le contenu d'un message de contact
si ENV{message_seul} on affiche que le texte
]<div class="inner">
<BOUCLE_message(MESSAGES){id_message}{tout}>
[(#ENV{message_seul}|non)
<h2>Message n°[(#ID_MESSAGE)] <small>reçu le [(#DATE|affdate{d/m/Y à H:i:s})]</small></h2>
<div class="objet">
<strong>Objet :</strong> [(#OBJET)]
</div>
<div class="origine">
<strong>Origine :</strong> <a class="small nowrap" href="[(#ORIGINE)]" title="Accéder à la page d'origine du message">[(#ORIGINE|couper{35})...]</a>
</div>
[<div class="formulaire">
<strong>Formulaire :</strong> (#TITRE|replace{Formulaire de, ''})
</div>]
<div class="expediteur">
<strong>Expéditeur :</strong> [(#NOM)]
[<br><strong>Email :</strong> (#EMAIL_CONTACT)]
[<br><strong>Téléphone :</strong> (#TELEPHONE)]
</div>
]
<div class="texte">
<strong>Message :</strong> [(#TEXTE)]
</div>
</BOUCLE_message>
</div>

View file

@ -1,118 +0,0 @@
#HTTP_HEADER{Content-Type: application/json; charset=#CHARSET}
[(#AUTORISER{voir,messages}|sinon_interdire_acces)]
[(#ENV{id}|setenv{id_message})]
[{
"header_top":{
"Infos": {"class":"header_infos", "colspan": 4},
"Statut": {"class":"header_statut", "colspan" :3},
"Expéditeur": {"class":"header_exp", "colspan": 3},
"Message": {"class":"message", "colspan": 2}
},
"header":{
"id": "_",
"date": "Date",
"origine": "Origine",
"formulaire": "Formulaire",
[(#CONFIG{gamucontact/gamutable_afficher_type}|oui)
"type": "Type",
]
"statut": " ",
"actions_masse": " ",
"actions": " ",
"nom": "Expéditeur",
"email_contact": "Email",
"telephone": "Tel",
"objet": "Objet",
"message": "Message"
},
"checkbox": {
"actions_masse": [(#URL_PAGE{changer_statut_messages}|json_encode)]
},
"crayons": {},
"ordreCol" : {
"date": "desc"
},
"filtreCol" : {
"statut": "select",
"formulaire": "select",
"nom": "input",
[(#CONFIG{gamucontact/gamutable_afficher_type}|oui)
"type": "select",
]
"email_contact" : "input"
},
"filtreColValeurs" : {},
"classes": {
"id": "w80p",
"objet": "minw250p span_g",
"statut": "minw140p span_g",
"formulaire": "w150p",
"nom": "span_g"
}
}
<B_messages>
,
<BOUCLE_messages(MESSAGES){','}{!par date_heure}>
[(#SET{message, <a class="modalbox" href="[(#URL_PAGE{message, id_message=#ID_MESSAGE}|parametre_url{message_seul, oui})]" title="Afficher le texte complet du message"><i class="gt-eye"></i> [(#TEXTE*|couper{100})]</a>})]
#SET{statut, #LISTE{prepa,prop,publie,poubelle}|str_replace{#LISTE{Brouillon,Proposé,Publié,Poubelle}, #STATUT}}
#SET{formulaire, #TITRE|replace{Formulaire de, ''}}
[(#SET{origine, [<a class="nowrap" href="(#ORIGINE)" title="Accéder à la page d'origine du message"><i class="gt-lien"></i> <:gamucontact:acces_page:></a>]})]
#SET{args,#ID_MESSAGE}
[(#STATUT|!={publie}|oui)
#SET{args, #GET{args}|concat{-}|concat{publie}}
[(#SET{actions,
<a class="url_action" data-id="#ID_MESSAGE" href="[(#URL_ACTION_AUTEUR{changer_statut_message,#GET{args}})]">
<i title="Publier le message" class="gt-check fa-2x grise" aria-hidden="true"></i>
</a>
})]
][(#STATUT|=={publie}|oui)
#SET{args, #GET{args}|concat{-}|concat{poubelle}}
[(#SET{actions,
<a class="url_action" data-id="#ID_MESSAGE" href="[(#URL_ACTION_AUTEUR{changer_statut_message,#GET{args}})]">
<i title="Passer à la poubelle le message" class="gt-trash fa-2x rouge" aria-hidden="true"></i>
</a>
})]
]
[(#SET{actions_masse, dataid-#ID_MESSAGE})]
{
"html": {
"id": #ID_MESSAGE,
"date": [(#DATE_HEURE|affdate{d/m/Y H:i:s}|json_encode)],
"origine": [(#GET{origine}|json_encode)],
"formulaire": [(#GET{formulaire}|json_encode)],
[(#CONFIG{gamucontact/gamutable_afficher_type}|oui)
"type": [(#TYPE|json_encode)],
]
"statut": [(#GET{statut}|json_encode)],
"actions_masse": [(#GET{actions_masse}|json_encode)],
"actions": [(#GET{actions}|json_encode)],
"nom": [(#NOM|json_encode)],
"email_contact": [(#EMAIL_CONTACT|json_encode)],
"telephone": [(#TELEPHONE|json_encode)],
"objet": [(#OBJET|json_encode)],
"message": [(#GET{message}|json_encode)]
},
"search": {
"id": #ID_MESSAGE,
"date": [(#DATE_HEURE|affdate{Y-m-d H:i:s}|json_encode)],
"origine": [(#ORIGINE|json_encode)],
"formulaire": [(#GET{formulaire}|json_encode)],
[(#CONFIG{gamucontact/gamutable_afficher_type}|oui)
"type": [(#TYPE|json_encode)],
]
"statut": [(#STATUT|json_encode)],
"actions_masse": "",
"actions": "",
"nom": [(#NOM|json_encode)],
"email_contact": [(#EMAIL_CONTACT|json_encode)],
"telephone": [(#TELEPHONE|json_encode)],
"objet": [(#OBJET|json_encode)],
"message": [(#GET{message}|json_encode)]
}
}
</BOUCLE_messages>
]

View file

@ -14,7 +14,6 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'cfg_exemple' => 'Example',
'cfg_exemple_explication' => 'Explication de cet exemple',
'cfg_titre_parametrages' => 'Parameters',
'changer_statut_messages' => 'Modify the status of selected messages?',
// EE
'envoyer' => "Send",
@ -27,7 +26,6 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
// M
'message' => 'Message',
'messages_envoyes_site' => 'Messages sent on the website',
// N
'nom' => 'Name',

View file

@ -14,7 +14,6 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'cfg_exemple' => 'Exemple',
'cfg_exemple_explication' => 'Explication de cet exemple',
'cfg_titre_parametrages' => 'Paramétrages',
'changer_statut_messages' => 'Modifier le statut des messages sélectionnés ?',
// EE
'envoyer' => "Envoyer",
@ -27,7 +26,6 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
// M
'message' => 'Message',
'messages_envoyes_site' => 'Messages envoyés sur le site',
// N
'nom' => 'Nom',

View file

@ -1,3 +0,0 @@
[<a href="tel:(#ENV{tel})" class="btn mt-5 mb-5 mtm mbm">
<i class="fa fa-phone"></i>[ (#ENV{titre, Contactez nous})]
</a>]

View file

@ -1,12 +1,12 @@
<paquet
prefix="gamucontact"
categorie="communication"
version="1.0.9"
version="1.0.7"
etat="test"
compatibilite="[3.2.10;4.*]"
logo="./gamucontact-xx.svg"
documentation=""
schema="1.0.8"
schema="1.0.6"
>
<nom>GamuContact</nom>
@ -21,4 +21,5 @@
<pipeline nom="declarer_tables_objets_sql" inclure="base/gamucontact.php" />
<pipeline nom="declarer_tables_interfaces" inclure="base/gamucontact.php" />
</paquet>