WIP : ajout d'un Gamutable pour administrer les messages de contact et assimilés

This commit is contained in:
cy_altern 2025-07-01 00:48:29 +02:00
parent 5465c0c6b0
commit 5bcf3af1bd
8 changed files with 138 additions and 10 deletions

View file

@ -28,6 +28,7 @@ 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',
@ -37,6 +38,7 @@ 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 DEFAULT ""',
'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'",

6
content/messages.html Normal file
View file

@ -0,0 +1,6 @@
[(#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

@ -24,6 +24,13 @@
#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">

View file

@ -29,6 +29,7 @@ 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')));
include_spip('base/upgrade');
maj_plugin($nom_meta_base_version, $version_cible, $maj);

View file

@ -18,3 +18,12 @@ 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']);
}

18
inclure/inc_messages.html Normal file
View file

@ -0,0 +1,18 @@
[(#AUTORISER{voir,messages}|sinon_interdire_acces)]
#SET{url,#URL_PAGE{json_messages.json}}
<div class="">
[(#SET{titre_un,<i class="fa fa-send"></i> Messages envoyés sur le site})]
<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>

86
json_messages.json.html Normal file
View file

@ -0,0 +1,86 @@
#HTTP_HEADER{Content-Type: application/json; charset=#CHARSET}
[(#AUTORISER{voir,messages}|sinon_interdire_acces)]
[(#ENV{id}|setenv{id_message})]
[{
"header":{
"id": "_",
"date": "Date",
"formulaire": "Formulaire",
[(#CONFIG{gamucontact/gamutable_afficher_type}|oui)
"type": "Type",
]
"objet": "Objet",
"statut": "Statut",
"nom": "Expéditeur",
"email_contact": "Email",
"telephone": "Tel",
"message": "Message"
},
"crayons":{
"statut": ""
},
"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": "minw150p",
"statut": "minw80p",
"formulaire": "w150p"
}
}
<B_messages>
,
<BOUCLE_messages(MESSAGES){statut?}{','}{!par date_heure}>
[(#SET{message, <div class="aff_masq" data-aff_masq="[(#ID_MESSAGE)]">[(#TEXTE*|couper{150})]</div>
<div class="message_complet js-hidden" id="message_[(#ID_MESSAGE)]">
[(#TEXTE*)]
</div>
})]
#SET{statut, #LISTE{prepa,prop,publie,poubelle}|str_replace{#LISTE{Brouillon,Proposé,Publié,Poubelle}, #STATUT}}
#SET{formulaire, #TITRE|replace{Formulaire de, ''}}
{
"html": {
"id": #ID_MESSAGE,
"date": [(#DATE_HEURE|affdate{d/m/Y H:i:s}|json_encode)],
"formulaire": [(#GET{formulaire}|json_encode)],
[(#CONFIG{gamucontact/gamutable_afficher_type}|oui)
"type": [(#TYPE|json_encode)],
]
"objet": [(#OBJET|json_encode)],
"statut": [(#GET{statut}|json_encode)],
"nom": [(#NOM|json_encode)],
"email_contact": [(#EMAIL_CONTACT|json_encode)],
"telephone": [(#TELEPHONE|json_encode)],
"message": [(#GET{message}|json_encode)]
},
"search": {
"id": #ID_MESSAGE,
"date": [(#DATE_HEURE|affdate{Y-m-d H:i:s}|json_encode)],
"formulaire": [(#GET{formulaire}|json_encode)],
[(#CONFIG{gamucontact/gamutable_afficher_type}|oui)
"type": [(#TYPE|json_encode)],
]
"objet": [(#OBJET|json_encode)],
"statut": [(#GET{statut}|json_encode)],
"nom": [(#NOM|json_encode)],
"email_contact": [(#EMAIL_CONTACT|json_encode)],
"telephone": [(#TELEPHONE|json_encode)],
"message": [(#GET{message}|json_encode)]
}
}
</BOUCLE_messages>
]

View file

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