passage en bouton action de la création d'un slug. Ajout d'une action suppression + bouton édition du titre (trigger sur le crayon)

This commit is contained in:
clem 2020-08-19 12:53:34 +02:00
parent ec2c6b29e1
commit f56ddbc85e
6 changed files with 112 additions and 198 deletions

39
action/creer_slug.php Normal file
View file

@ -0,0 +1,39 @@
<?php
if (!defined('_ECRIRE_INC_VERSION')) return;
/**
* créer un slug Gamumail
*
* @plugin GamuMail
*
* @copyright 2020
* @author cy_altern
* @licence GNU/GPL
*
**/
include_spip('inc/editer');
include_spip('action/editer_objet');
include_spip('inc/autoriser');
function action_creer_slug_dist(){
include_spip('inc/autoriser');
if (! autoriser("webmestre")) {
return false;
}
$set = [
'slug' => '',
'titre' => 'Le titre du modèle',
'sujet' => 'Le sujet du mail',
'texte' => 'Le texte du mail',
'statut' => 'publie',
];
if ($id_slug = objet_inserer('gamumail', null, $set)) {
sql_updateq('spip_gamumails', ['slug' => 'slug_'.$id_slug], 'id_gamumail = '.$id_slug);
}
// Cache
include_spip('inc/invalideur');
suivre_invalideur("id='id_gamumail/$id_gamumail'");
}

33
action/supprimer_slug.php Normal file
View file

@ -0,0 +1,33 @@
<?php
if (!defined('_ECRIRE_INC_VERSION')) return;
/**
* supprimer un slug Gamumail
*
* @plugin GamuMail
*
* @copyright 2020
* @author cy_altern
* @licence GNU/GPL
*
**/
include_spip('inc/autoriser');
function action_supprimer_slug_dist(){
include_spip('inc/autoriser');
if (! autoriser("webmestre")) {
return false;
}
$securiser_action = charger_fonction('securiser_action', 'inc');
$arg = $securiser_action();
$id_gamumail = intval($arg);
if ($id_gamumail) {
sql_delete('spip_gamumails','id_gamumail ='.$id_gamumail);
}
// Cache
include_spip('inc/invalideur');
suivre_invalideur("id='id_gamumail/$id_gamumail'");
}

View file

@ -1,34 +0,0 @@
[(#REM)
la page d'édition d'un modèle pour GamuMail
]
[(#AUTORISER{webmestre}|sinon_interdire_acces)]
<div class="inner">
<div class="ajax mbl">
[(#FORMULAIRE_EDITER_SLUG{#ENV{id_gamumail,0}, #ENV{redirect}})]
</div>
</div>
<style type="text/css">
.formulaire_editer_slug legend.legend {
font-size: 2.5rem;
font-weight: bold;
border-bottom: 1px solid #a6a6a6;
padding: 0 0.5rem;
white-space: normal;
}
.formulaire_editer_slug label {
min-width: 200px;
}
.formulaire_editer_slug input {
width: 90%;
}
.formulaire_editer_slug .editer_groupe {
margin-bottom: 2rem;
}
.formulaire_editer_slug .markItUp .markItUpHeader ul a em {
width: 2rem;
height: 2rem;
}
.formulaire_editer_slug textarea {
width: 90%;
}
</style>

View file

@ -1,84 +0,0 @@
<div class="formulaire_spip formulaire_#FORM formulaire_#FORM-#ENV{id_gamumail,nouveau}">
[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
<form name="formulaire_#FORM" action="#ENV{action}" method="post"><div>
#ACTION_FORMULAIRE{#ENV{action}}
<input type="hidden" name="id_gamumail" value="#ENV{id_gamumail}" />
[(#ENV{id_gamumail}|non)
<h1 class="txtcenter">Créer un modèle de mail</h1>
]
[(#ENV{id_gamumail}|oui)
<h1 class="txtcenter">Editer ce modèle de mail</h1>
]
<div class="editer-groupe">
<div class="fieldset">
<fieldset>
<legend class="legend">
Paramètres du modèle
</legend>
<div class="editer_groupe">
#SET{name,slug}
#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
#SET{obli,"obligatoire"}
<div class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
<label for="#GET{name}">Identifiant du modèle <em>*</em></label>
[<span class="erreur_message">(#GET{erreurs})</span>]
<input required type="text" class="text slug" name="#GET{name}" id="#GET{name}" value="#ENV{#GET{name}}" >
</div>
</div>
<div class="editer_groupe">
#SET{name,titre}
#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
#SET{obli,"obligatoire"}
<div class="editer editer_[(#GET{name})][ (#GET{erreurs}|oui)erreur]">
<label for="#GET{name}">Nom du modèle <em>*</em></label>
[<span class="erreur_message">(#GET{erreurs})</span>]
<input type="text" class="text titre" name="#GET{name}" id="#GET{name}" value="#ENV{#GET{name}}" >
</div>
</div>
</fieldset>
</div>
</div>
<div class="editer-groupe">
<div class="fieldset">
<fieldset>
<legend class="legend">
Contenus du modèle
</legend>
<div class="editer_groupe">
#SET{name,sujet}
#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
#SET{obli,"obligatoire"}
<div class="editer editer_[(#GET{name})][ (#GET{erreurs}|oui)erreur]">
<label for="#GET{name}">Sujet du mail <em>*</em></label>
[<span class="erreur_message">(#GET{erreurs})</span>]
<input type="text" class="text sujet" name="#GET{name}" id="#GET{name}" value="#ENV{#GET{name}}" >
</div>
</div>
<div class="editer_groupe">
#SET{name,texte}
#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
#SET{obli,"obligatoire"}
<div class="editer editer_[(#GET{name})][ (#GET{erreurs}|oui)erreur]">
<label for="#GET{name}">Texte du mail</label>
[<span class="erreur_message">(#GET{erreurs})</span>]
<textarea class="text no_barre no_previsualisation " name="#GET{name}" id="#GET{name}">#ENV{#GET{name}}</textarea>
</div>
</div>
</fieldset>
</div>
</div>
<div class="boutons">
<button type="submit" class="btn"><:gamumail:valider:></button>
</div>
</div></form>
</div>

View file

@ -1,71 +0,0 @@
<?php
if (!defined('_ECRIRE_INC_VERSION')) return;
/**
* formulaire pour créer / modifier un slug Gamumail
*
* @plugin GamuMail
*
* @copyright 2020
* @author cy_altern
* @licence GNU/GPL
*
**/
include_spip('inc/actions');
include_spip('inc/editer');
include_spip('action/editer_objet');
include_spip('inc/autoriser');
function formulaires_editer_slug_charger_dist($id_gamumail = 'new', $redirect = ''){
$valeurs = array(
"id_gamumail" => intval($id_gamumail),
);
return $valeurs;
}
function formulaires_editer_slug_verifier_dist($id_gamumail = 'new', $redirect = ''){
$slug = _request('slug');
$titre = _request('titre');
$sujet = _request('sujet');
$texte = _request('texte');
$erreurs = array();
//champs obligatoires
foreach (array ('slug', 'titre') as $obligatoire) {
if (!_request($obligatoire)) {
$erreurs[$obligatoire] = 'Ce champs est obligatoire';
}
}
//Il y a des erreurs
if (count($erreurs)) {
$erreurs['message_erreur'] = 'Votre saisie contient des erreurs !';
}
return $erreurs;
}
function formulaires_editer_slug_traiter_dist($id_gamumail = 'new', $redirect = ''){
$slug = _request('slug');
$titre = _request('titre');
$sujet = _request('sujet');
$texte = _request('texte');
$set = [
'slug' => $slug,
'titre' => $titre,
'sujet' => $sujet,
'texte' => $texte,
];
$id_slug = objet_inserer('gamumail', null, $set);
echo $id_slug; die;
$retour = array();
$retour['message_ok'] = "Modèle enregistré";
if ($redirect) {
$retour['redirect'] = $redirect;
}
return $retour;
}

View file

@ -21,21 +21,49 @@
display: inline-block; display: inline-block;
width: 180px; width: 180px;
} }
span.crayon, div.crayon {
background-color: #fff;
padding: .5rem;
}
.wp600 {
width: 600px;
}
.btn_supprimer {
float: right;
}
.btn_editer {
float: right;
margin-right: 2rem;
}
.btn {
display: inline-block;
padding: 1rem 1.5rem;
cursor: pointer;
user-select: none;
transition: 0.25s;
transition-property: box-shadow, background-color, color, border;
text-align: center;
vertical-align: middle;
white-space: nowrap;
border: none;
border-radius: 0;
background-color: #e7e9ed;
font-family: inherit;
font-size: inherit;
line-height: 1;
}
</style> </style>
<div class="inner configuration_mails"> <div class="inner configuration_mails">
<div class="configuration_generale"> <div class="configuration_generale">
<div class="well"> <div class="well">
<div class="une_conf"> <div class="une_conf">
<h4>Emails en copie "cc" des différents messages <h4>Emails en copie "cc" des différents messages</h4>
<span class="#EDIT{meta-gamumail/mail_cc} inbl w600p">[(#CONFIG{gamumail/mail_cc}|sinon{<i>double clic pour éditer</i>})]</span> <div class="#EDIT{meta-gamumail/mail_cc} inbl w600p">[(#CONFIG{gamumail/mail_cc}|sinon{<i>double clic pour éditer</i>})]</div>
</h4>
<p class="explication">Si plusieurs emails, les séparer par une virgule. Double clic pour éditer.</p> <p class="explication">Si plusieurs emails, les séparer par une virgule. Double clic pour éditer.</p>
</div> </div>
<div class="une_conf"> <div class="une_conf">
<h4>Emails en copie cachée "cci" des différents messages <h4>Emails en copie cachée "cci" des différents messages</h4>
<span class="#EDIT{meta-gamumail/mail_cci} inbl w600p">[(#CONFIG{gamumail/mail_cci}|sinon{<i>double clic pour éditer</i>})]</span> <div class="#EDIT{meta-gamumail/mail_cci} inbl w600p">[(#CONFIG{gamumail/mail_cci}|sinon{<i>double clic pour éditer</i>})]</div>
</h4>
<p class="explication">Si plusieurs emails, les séparer par une virgule. Double clic pour éditer.</p> <p class="explication">Si plusieurs emails, les séparer par une virgule. Double clic pour éditer.</p>
</div> </div>
</div> </div>
@ -43,7 +71,10 @@
<BOUCLE_message(GAMUMAILS)> <BOUCLE_message(GAMUMAILS)>
<div class="well"> <div class="well">
<div class="une_conf"> <div class="une_conf">
<h4 class="toggle cursor" <a class="btn btn_supprimer" title="Supprimer le modèle" href="[(#URL_ACTION_AUTEUR{supprimer_slug,#ID_GAMUMAIL,#SELF})]"><i class="fa fa-trash"></i></a>
<span class="btn btn_editer" title="Editer le titre" onClick="$('#h4_#SLUG em.crayon-crayon').trigger('click');"><i class="fa fa-edit"></i></span>
<h4 class="toggle cursor #EDIT{titre}"
id="h4_#SLUG"
data-id="#SLUG"> data-id="#SLUG">
<i class="fa fa-envelope mrs"></i> <i class="fa fa-envelope mrs"></i>
[(#TITRE)] [(#TITRE)]
@ -79,7 +110,7 @@
</div> </div>
</BOUCLE_message> </BOUCLE_message>
<a class="mediabox btn" title="Créer un modèle de mail" href="[(#URL_PAGE{editer_slug}|parametre_url{var_zajax,content}|parametre_url{redirect,#SELF})]"><i class="fa fa-envelope"></i> Nouveau modèle</a> <a class="btn" title="Créer un modèle de mail" href="[(#URL_ACTION_AUTEUR{creer_slug,null,#SELF})]"><i class="fa fa-envelope"></i> Nouveau modèle</a>
</div> </div>
</div> </div>