sortie de la fabrique

This commit is contained in:
Christophe 2020-04-24 20:57:04 +02:00
parent ee79f8ba8a
commit 9daa2e8ec6
23 changed files with 819 additions and 0 deletions

88
base/gamumail.php Normal file
View file

@ -0,0 +1,88 @@
<?php
/**
* Déclarations relatives à la base de données
*
* @plugin GamuMail
* @copyright 2020
* @author tofulm
* @licence GNU/GPL
* @package SPIP\Gamumail\Pipelines
*/
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Déclaration des alias de tables et filtres automatiques de champs
*
* @pipeline declarer_tables_interfaces
* @param array $interfaces
* Déclarations d'interface pour le compilateur
* @return array
* Déclarations d'interface pour le compilateur
*/
function gamumail_declarer_tables_interfaces($interfaces) {
$interfaces['table_des_tables']['gamumails'] = 'gamumails';
return $interfaces;
}
/**
* Déclaration des objets éditoriaux
*
* @pipeline declarer_tables_objets_sql
* @param array $tables
* Description des tables
* @return array
* Description complétée des tables
*/
function gamumail_declarer_tables_objets_sql($tables) {
$tables['spip_gamumails'] = array(
'type' => 'gamumail',
'principale' => 'oui',
'field'=> array(
'id_gamumail' => 'bigint(21) NOT NULL',
'slug' => 'varchar(255) NOT NULL DEFAULT ""',
'sujet' => 'varchar(255) NOT NULL DEFAULT ""',
'texte' => 'text NOT NULL DEFAULT ""',
'statut' => 'varchar(20) DEFAULT "0" NOT NULL',
'maj' => 'TIMESTAMP'
),
'key' => array(
'PRIMARY KEY' => 'id_gamumail',
'KEY statut' => 'statut',
),
'titre' => 'slug AS titre, "" AS lang',
#'date' => '',
'champs_editables' => array('slug', 'sujet', 'texte'),
'champs_versionnes' => array('slug', 'sujet', 'texte'),
'rechercher_champs' => array("slug" => 8),
'tables_jointures' => array(),
'statut_textes_instituer' => array(
'prepa' => 'texte_statut_en_cours_redaction',
'prop' => 'texte_statut_propose_evaluation',
'publie' => 'texte_statut_publie',
'refuse' => 'texte_statut_refuse',
'poubelle' => 'texte_statut_poubelle',
),
'statut'=> array(
array(
'champ' => 'statut',
'publie' => 'publie',
'previsu' => 'publie,prop,prepa',
'post_date' => 'date',
'exception' => array('statut','tout')
)
),
'texte_changer_statut' => 'gamumail:texte_changer_statut_gamumail',
);
return $tables;
}

221
fabrique_gamumail.php Normal file

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,16 @@
<div class="formulaire_spip formulaire_configurer formulaire_#FORM">
<h3 class="titrem"><:gamumail:cfg_titre_parametrages:></h3>
[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
<form method="post" action="#ENV{action}">
<div>
#ACTION_FORMULAIRE
<input type="hidden" name="_meta_casier" value="gamumail" />
<p class="boutons"><span class="image_loading">&nbsp;</span><input type="submit" class="submit" value="<:bouton_enregistrer:>" /></p>
</div>
</form>
</div>

View file

@ -0,0 +1,17 @@
<div class='formulaire_spip formulaire_editer formulaire_#FORM formulaire_#FORM-#ENV{id_gamumail,nouveau}'>
[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV**{message_ok})</p>]
[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
[(#ENV{editable})
<form method="post" action="#ENV{action}"><div>
#ACTION_FORMULAIRE
<input type="hidden" name="id_gamumail" value="#ENV{id_gamumail}" />
<div class="editer-groupe">
</div>
[(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ]
<!--extra-->
<p class="boutons"><input type="submit" class="submit" value="<:bouton_enregistrer:>" /></p>
</div></form>
]
</div>

View file

@ -0,0 +1,124 @@
<?php
/**
* Gestion du formulaire de d'édition de gamumail
*
* @plugin GamuMail
* @copyright 2020
* @author tofulm
* @licence GNU/GPL
* @package SPIP\Gamumail\Formulaires
*/
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
include_spip('inc/actions');
include_spip('inc/editer');
/**
* Identifier le formulaire en faisant abstraction des paramètres qui ne représentent pas l'objet edité
*
* @param int|string $id_gamumail
* Identifiant du gamumail. 'new' pour un nouveau gamumail.
* @param string $retour
* URL de redirection après le traitement
* @param int $lier_trad
* Identifiant éventuel d'un gamumail source d'une traduction
* @param string $config_fonc
* Nom de la fonction ajoutant des configurations particulières au formulaire
* @param array $row
* Valeurs de la ligne SQL du gamumail, si connu
* @param string $hidden
* Contenu HTML ajouté en même temps que les champs cachés du formulaire.
* @return string
* Hash du formulaire
*/
function formulaires_editer_gamumail_identifier_dist($id_gamumail = 'new', $retour = '', $lier_trad = 0, $config_fonc = '', $row = array(), $hidden = '') {
return serialize(array(intval($id_gamumail)));
}
/**
* Chargement du formulaire d'édition de gamumail
*
* Déclarer les champs postés et y intégrer les valeurs par défaut
*
* @uses formulaires_editer_objet_charger()
*
* @param int|string $id_gamumail
* Identifiant du gamumail. 'new' pour un nouveau gamumail.
* @param string $retour
* URL de redirection après le traitement
* @param int $lier_trad
* Identifiant éventuel d'un gamumail source d'une traduction
* @param string $config_fonc
* Nom de la fonction ajoutant des configurations particulières au formulaire
* @param array $row
* Valeurs de la ligne SQL du gamumail, si connu
* @param string $hidden
* Contenu HTML ajouté en même temps que les champs cachés du formulaire.
* @return array
* Environnement du formulaire
*/
function formulaires_editer_gamumail_charger_dist($id_gamumail = 'new', $retour = '', $lier_trad = 0, $config_fonc = '', $row = array(), $hidden = '') {
$valeurs = formulaires_editer_objet_charger('gamumail', $id_gamumail, '', $lier_trad, $retour, $config_fonc, $row, $hidden);
return $valeurs;
}
/**
* Vérifications du formulaire d'édition de gamumail
*
* Vérifier les champs postés et signaler d'éventuelles erreurs
*
* @uses formulaires_editer_objet_verifier()
*
* @param int|string $id_gamumail
* Identifiant du gamumail. 'new' pour un nouveau gamumail.
* @param string $retour
* URL de redirection après le traitement
* @param int $lier_trad
* Identifiant éventuel d'un gamumail source d'une traduction
* @param string $config_fonc
* Nom de la fonction ajoutant des configurations particulières au formulaire
* @param array $row
* Valeurs de la ligne SQL du gamumail, si connu
* @param string $hidden
* Contenu HTML ajouté en même temps que les champs cachés du formulaire.
* @return array
* Tableau des erreurs
*/
function formulaires_editer_gamumail_verifier_dist($id_gamumail = 'new', $retour = '', $lier_trad = 0, $config_fonc = '', $row = array(), $hidden = '') {
$erreurs = array();
$erreurs = formulaires_editer_objet_verifier('gamumail', $id_gamumail);
return $erreurs;
}
/**
* Traitement du formulaire d'édition de gamumail
*
* Traiter les champs postés
*
* @uses formulaires_editer_objet_traiter()
*
* @param int|string $id_gamumail
* Identifiant du gamumail. 'new' pour un nouveau gamumail.
* @param string $retour
* URL de redirection après le traitement
* @param int $lier_trad
* Identifiant éventuel d'un gamumail source d'une traduction
* @param string $config_fonc
* Nom de la fonction ajoutant des configurations particulières au formulaire
* @param array $row
* Valeurs de la ligne SQL du gamumail, si connu
* @param string $hidden
* Contenu HTML ajouté en même temps que les champs cachés du formulaire.
* @return array
* Retours des traitements
*/
function formulaires_editer_gamumail_traiter_dist($id_gamumail = 'new', $retour = '', $lier_trad = 0, $config_fonc = '', $row = array(), $hidden = '') {
$retours = formulaires_editer_objet_traiter('gamumail', $id_gamumail, '', $lier_trad, $retour, $config_fonc, $row, $hidden);
return $retours;
}

View file

@ -0,0 +1,57 @@
<?php
/**
* Fichier gérant l'installation et désinstallation du plugin GamuMail
*
* @plugin GamuMail
* @copyright 2020
* @author tofulm
* @licence GNU/GPL
* @package SPIP\Gamumail\Installation
*/
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Fonction d'installation et de mise à jour du plugin GamuMail.
*
* @param string $nom_meta_base_version
* Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP
* @param string $version_cible
* Version du schéma de données dans ce plugin (déclaré dans paquet.xml)
* @return void
**/
function gamumail_upgrade($nom_meta_base_version, $version_cible) {
$maj = array();
$maj['create'] = array(array('maj_tables', array('spip_gamumails')));
include_spip('base/upgrade');
maj_plugin($nom_meta_base_version, $version_cible, $maj);
}
/**
* Fonction de désinstallation du plugin GamuMail.
*
* @param string $nom_meta_base_version
* Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP
* @return void
**/
function gamumail_vider_tables($nom_meta_base_version) {
sql_drop_table('spip_gamumails');
# Nettoyer les liens courants (le génie optimiser_base_disparus se chargera de nettoyer toutes les tables de liens)
sql_delete('spip_documents_liens', sql_in('objet', array('gamumail')));
sql_delete('spip_mots_liens', sql_in('objet', array('gamumail')));
sql_delete('spip_auteurs_liens', sql_in('objet', array('gamumail')));
# Nettoyer les versionnages et forums
sql_delete('spip_versions', sql_in('objet', array('gamumail')));
sql_delete('spip_versions_fragments', sql_in('objet', array('gamumail')));
sql_delete('spip_forum', sql_in('objet', array('gamumail')));
effacer_meta($nom_meta_base_version);
}

View file

@ -0,0 +1,84 @@
<?php
/**
* Définit les autorisations du plugin GamuMail
*
* @plugin GamuMail
* @copyright 2020
* @author tofulm
* @licence GNU/GPL
* @package SPIP\Gamumail\Autorisations
*/
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Fonction d'appel pour le pipeline
* @pipeline autoriser */
function gamumail_autoriser() {
}
// -----------------
// Objet gamumails
/**
* Autorisation de créer (gamumail)
*
* @param string $faire Action demandée
* @param string $type Type d'objet sur lequel appliquer l'action
* @param int $id Identifiant de l'objet
* @param array $qui Description de l'auteur demandant l'autorisation
* @param array $opt Options de cette autorisation
* @return bool true s'il a le droit, false sinon
**/
function autoriser_gamumail_creer_dist($faire, $type, $id, $qui, $opt) {
return in_array($qui['statut'], array('0minirezo', '1comite'));
}
/**
* Autorisation de voir (gamumail)
*
* @param string $faire Action demandée
* @param string $type Type d'objet sur lequel appliquer l'action
* @param int $id Identifiant de l'objet
* @param array $qui Description de l'auteur demandant l'autorisation
* @param array $opt Options de cette autorisation
* @return bool true s'il a le droit, false sinon
**/
function autoriser_gamumail_voir_dist($faire, $type, $id, $qui, $opt) {
return true;
}
/**
* Autorisation de modifier (gamumail)
*
* @param string $faire Action demandée
* @param string $type Type d'objet sur lequel appliquer l'action
* @param int $id Identifiant de l'objet
* @param array $qui Description de l'auteur demandant l'autorisation
* @param array $opt Options de cette autorisation
* @return bool true s'il a le droit, false sinon
**/
function autoriser_gamumail_modifier_dist($faire, $type, $id, $qui, $opt) {
return in_array($qui['statut'], array('0minirezo', '1comite'));
}
/**
* Autorisation de supprimer (gamumail)
*
* @param string $faire Action demandée
* @param string $type Type d'objet sur lequel appliquer l'action
* @param int $id Identifiant de l'objet
* @param array $qui Description de l'auteur demandant l'autorisation
* @param array $opt Options de cette autorisation
* @return bool true s'il a le droit, false sinon
**/
function autoriser_gamumail_supprimer_dist($faire, $type, $id, $qui, $opt) {
return $qui['statut'] == '0minirezo' and !$qui['restreint'];
}

14
gamumail_fonctions.php Normal file
View file

@ -0,0 +1,14 @@
<?php
/**
* Fonctions utiles au plugin GamuMail
*
* @plugin GamuMail
* @copyright 2020
* @author tofulm
* @licence GNU/GPL
* @package SPIP\Gamumail\Fonctions
*/
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}

14
gamumail_options.php Normal file
View file

@ -0,0 +1,14 @@
<?php
/**
* Options au chargement du plugin GamuMail
*
* @plugin GamuMail
* @copyright 2020
* @author tofulm
* @licence GNU/GPL
* @package SPIP\Gamumail\Options
*/
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}

34
gamumail_pipelines.php Normal file
View file

@ -0,0 +1,34 @@
<?php
/**
* Utilisations de pipelines par GamuMail
*
* @plugin GamuMail
* @copyright 2020
* @author tofulm
* @licence GNU/GPL
* @package SPIP\Gamumail\Pipelines
*/
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Optimiser la base de données
*
* Supprime les objets à la poubelle.
*
* @pipeline optimiser_base_disparus
* @param array $flux Données du pipeline
* @return array Données du pipeline
*/
function gamumail_optimiser_base_disparus($flux) {
sql_delete('spip_gamumails', "statut='poubelle' AND maj < " . $flux['args']['date']);
return $flux;
}

46
lang/gamumail_fr.php Normal file
View file

@ -0,0 +1,46 @@
<?php
// This is a SPIP language file -- Ceci est un fichier langue de SPIP
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
$GLOBALS[$GLOBALS['idx_lang']] = array(
// A
'ajouter_lien_gamumail' => 'Ajouter ce gamumail',
// C
'champ_slug_label' => 'Slug',
'champ_sujet_label' => 'Sujet',
'champ_texte_label' => 'Texte',
'confirmer_supprimer_gamumail' => 'Confirmez-vous la suppression de cet gamumail ?',
// I
'icone_creer_gamumail' => 'Créer un gamumail',
'icone_modifier_gamumail' => 'Modifier ce gamumail',
'info_1_gamumail' => 'Un gamumail',
'info_aucun_gamumail' => 'Aucun gamumail',
'info_gamumails_auteur' => 'Les gamumails de cet auteur',
'info_nb_gamumails' => '@nb@ gamumails',
// R
'retirer_lien_gamumail' => 'Retirer ce gamumail',
'retirer_tous_liens_gamumails' => 'Retirer tous les gamumails',
// S
'supprimer_gamumail' => 'Supprimer cet gamumail',
// T
'texte_ajouter_gamumail' => 'Ajouter un gamumail',
'texte_changer_statut_gamumail' => 'Ce gamumail est :',
'texte_creer_associer_gamumail' => 'Créer et associer un gamumail',
'texte_definir_comme_traduction_gamumail' => 'Ce gamumail est une traduction du gamumail numéro :',
'titre_gamumail' => 'Gamumail',
'titre_gamumails' => 'Gamumails',
'titre_gamumails_rubrique' => 'Gamumails de la rubrique',
'titre_langue_gamumail' => 'Langue de ce gamumail',
'titre_logo_gamumail' => 'Logo de ce gamumail',
'titre_objets_lies_gamumail' => 'Liés à ce gamumail',
);

View file

@ -0,0 +1,14 @@
<?php
// This is a SPIP language file -- Ceci est un fichier langue de SPIP
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
$GLOBALS[$GLOBALS['idx_lang']] = array(
// G
'gamumail_description' => '',
'gamumail_nom' => 'GamuMail',
'gamumail_slogan' => '',
);

30
paquet.xml Normal file
View file

@ -0,0 +1,30 @@
<paquet
prefix="gamumail"
categorie="communication"
version="1.0.0"
etat="dev"
compatibilite="[3.3.0-dev;3.3.*]"
logo="prive/themes/spip/images/gamumail-64.png"
documentation=""
schema="1.0.0"
>
<!--
Paquet généré le 2020-04-24 20:56:15
-->
<nom>GamuMail</nom>
<auteur lien='https://gamuza.fr'>tofulm</auteur>
<licence>GNU/GPL</licence>
<necessite nom="saisies" compatibilite="[3.23.2;]" />
<pipeline nom="autoriser" inclure="gamumail_autorisations.php" />
<pipeline nom="declarer_tables_objets_sql" inclure="base/gamumail.php" />
<pipeline nom="declarer_tables_interfaces" inclure="base/gamumail.php" />
<pipeline nom="optimiser_base_disparus" inclure="gamumail_pipelines.php" />
</paquet>

View file

@ -0,0 +1,17 @@
<BOUCLE_gamumail(GAMUMAILS){id_gamumail}{statut?}>
[<div class="champ contenu_slug[ (#SLUG*|strlen|?{'',vide})]">
<div class="label"><:gamumail:champ_slug_label:> : </div>
<span dir="#LANG_DIR" class="#EDIT{slug} slug">(#SLUG)</span>
</div>]
[<div class="champ contenu_sujet[ (#SUJET*|strlen|?{'',vide})]">
<div class="label"><:gamumail:champ_sujet_label:> : </div>
<span dir="#LANG_DIR" class="#EDIT{sujet} sujet">(#SUJET)</span>
</div>]
[<div class="champ contenu_texte[ (#TEXTE*|strlen|?{'',vide})]">
<div class="label"><:gamumail:champ_texte_label:> : </div>
<span dir="#LANG_DIR" class="#EDIT{texte} texte">(#TEXTE)</span>
</div>]
</BOUCLE_gamumail>

View file

@ -0,0 +1,36 @@
[(#SET{defaut_tri,#ARRAY{
slug,1,
id_gamumail,1,
points,-1
}})]<B_liste_gamumails>
#ANCRE_PAGINATION
<div class="liste-objets gamumails">
<table class="spip liste">
[<caption><strong class="caption">(#ENV*{titre,#GRAND_TOTAL|singulier_ou_pluriel{gamumail:info_1_gamumail,gamumail:info_nb_gamumails}})</strong></caption>]
<thead>
<tr class="first_row">
<th class="picto" scope="col"></th>
<th class="statut" scope="col">[(#TRI{statut,<span title="<:lien_trier_statut|attribut_html:>">#</span>,ajax})]</th>
<th class="slug" scope="col">[(#TRI{slug,<:gamumail:champ_slug_label:>,ajax})]</th>
<th class="id" scope="col">[(#TRI{id_gamumail,<:info_numero_abbreviation:>,ajax})]</th>
</tr>
</thead>
<tbody>
<BOUCLE_liste_gamumails(GAMUMAILS){id_mot?}{id_auteur?}{where?}{statut?}{recherche?}{tri #ENV{par,num slug},#GET{defaut_tri}}{par slug}{pagination #ENV{nb,10}}>
<tr class="[(#COMPTEUR_BOUCLE|alterner{row_odd,row_even})]">
<td class="picto">[(#CHEMIN_IMAGE{gamumail-16.png}|balise_img)]</td>
<td class="statut">[(#STATUT|puce_statut{gamumail,#ID_GAMUMAIL})]</td>
<td class="slug principale">[(#LOGO_GAMUMAIL|image_reduire{20,26})]<a href="[(#ID_GAMUMAIL|generer_url_entite{gamumail})]" title="<:info_numero_abbreviation|attribut_html:> #ID_GAMUMAIL">[(#RANG). ]#SLUG</a></td>
<td class="id">[(#AUTORISER{modifier,gamumail,#ID_GAMUMAIL}|?{
<a href="[(#URL_ECRIRE{gamumail_edit,id_gamumail=#ID_GAMUMAIL})]">#ID_GAMUMAIL</a>,
#ID_GAMUMAIL
})]</td>
</tr>
</BOUCLE_liste_gamumails>
</tbody>
</table>
[<p class="pagination">(#PAGINATION{prive})</p>]
</div>
</B_liste_gamumails>[
<div class="liste-objets gamumails caption-wrap"><strong class="caption">(#ENV*{sinon,''})</strong></div>
]<//B_liste_gamumails>

View file

@ -0,0 +1,7 @@
[(#AUTORISER{configurer,_gamumail}|sinon_interdire_acces)]
<h1 class="grostitre"><:gamumail:titre_page_configurer_gamumail:></h1>
<div class="ajax">
#FORMULAIRE_CONFIGURER_GAMUMAIL
</div>

Binary file not shown.

After

Width:  |  Height:  |  Size: 414 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 542 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 637 B