Browse Source

Plugin auteur_nom_prenom, commit initial

master
nicod_ 3 years ago
commit
0a386d3ba6
  1. 52
      auteur_nom_prenom_administrations.php
  2. 22
      auteur_nom_prenom_autorisations.php
  3. 14
      auteur_nom_prenom_fonctions.php
  4. 14
      auteur_nom_prenom_options.php
  5. 121
      auteur_nom_prenom_pipelines.php
  6. 20
      formulaires/configurer_auteur_nom_prenom.html
  7. 32
      lang/auteur_nom_prenom_fr.php
  8. 12
      lang/ecrire_fr.php
  9. 15
      lang/paquet-auteur_nom_prenom_fr.php
  10. 28
      paquet.xml
  11. 35
      prive/fonds/auteur_edit.html
  12. 7
      prive/squelettes/contenu/configurer_auteur_nom_prenom.html
  13. BIN
      prive/themes/spip/images/auteur_nom_prenom-128.png
  14. BIN
      prive/themes/spip/images/auteur_nom_prenom-32.png
  15. BIN
      prive/themes/spip/images/auteur_nom_prenom-64.png

52
auteur_nom_prenom_administrations.php

@ -0,0 +1,52 @@
<?php
/**
* Fichier gérant l'installation et désinstallation du plugin Nom et prénom des auteurs
*
* @plugin Nom et prénom des auteurs
* @copyright 2019
* @author nicod_
* @licence GNU/GPL
* @package SPIP\Auteur_nom_prenom\Installation
*/
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
include_spip('base/upgrade');
include_spip('inc/cextras');
include_spip('auteur_nom_prenom_pipelines');
/**
* Fonction d'installation et de mise à jour du plugin Nom et prénom des auteurs.
*
* @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 auteur_nom_prenom_upgrade($nom_meta_base_version, $version_cible) {
$maj = array();
cextras_api_upgrade(auteur_nom_prenom_declarer_champs_extras(), $maj['create']);
include_spip('base/upgrade');
maj_plugin($nom_meta_base_version, $version_cible, $maj);
ecrire_config('auteur_nom_prenom/ordre','prenom');
}
/**
* Fonction de désinstallation du plugin Nom et prénom des auteurs.
*
* @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 auteur_nom_prenom_vider_tables($nom_meta_base_version) {
effacer_meta($nom_meta_base_version);
}

22
auteur_nom_prenom_autorisations.php

@ -0,0 +1,22 @@
<?php
/**
* Définit les autorisations du plugin Nom et prénom des auteurs
*
* @plugin Nom et prénom des auteurs
* @copyright 2019
* @author nicod_
* @licence GNU/GPL
* @package SPIP\Auteur_nom_prenom\Autorisations
*/
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Fonction d'appel pour le pipeline
*
* @pipeline autoriser
*/
function auteur_nom_prenom_autoriser() {
}

14
auteur_nom_prenom_fonctions.php

@ -0,0 +1,14 @@
<?php
/**
* Fonctions utiles au plugin Nom et prénom des auteurs
*
* @plugin Nom et prénom des auteurs
* @copyright 2019
* @author nicod_
* @licence GNU/GPL
* @package SPIP\Auteur_nom_prenom\Fonctions
*/
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}

14
auteur_nom_prenom_options.php

@ -0,0 +1,14 @@
<?php
/**
* Options au chargement du plugin Nom et prénom des auteurs
*
* @plugin Nom et prénom des auteurs
* @copyright 2019
* @author nicod_
* @licence GNU/GPL
* @package SPIP\Auteur_nom_prenom\Options
*/
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}

121
auteur_nom_prenom_pipelines.php

@ -0,0 +1,121 @@
<?php
/**
* Utilisations de pipelines par Nom et prénom des auteurs
*
* @plugin Nom et prénom des auteurs
* @copyright 2019
* @author nicod_
* @licence GNU/GPL
* @package SPIP\Auteur_nom_prenom\Pipelines
*/
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
function auteur_nom_prenom_affiche_milieu($flux) {
if ($flux['args']['exec'] == "auteur_edit") {
$texte = recuperer_fond('prive/fonds/auteur_edit', array('ordre'=>lire_config('auteur_nom_prenom/ordre')));
if (($p = strpos($flux['data'], '<!--affiche_milieu-->')) !== false) {
$flux['data'] = substr_replace($flux['data'], $texte, $p, 0);
} else {
$flux['data'] .= $texte;
}
}
return $flux;
}
function auteur_nom_prenom_formulaire_verifier($flux) {
if ($flux['args']['form'] == "editer_auteur") {
if (!(trim(_request('auteur_nom'))) && !(trim(_request('auteur_prenom')))) {
$flux['data']['auteur_nom'] = _T('auteur_nom_prenom:au_moins_un_champ');
$flux['data']['auteur_prenom'] = _T('auteur_nom_prenom:au_moins_un_champ');
unset($flux['data']['nom']);
}
}
return $flux;
}
function auteur_nom_prenom_post_edition($flux) {
if (isset($flux['args']['table']) && $flux['args']['table'] == 'spip_auteurs') {
$nom = '';
if (trim(_request('auteur_prenom')) || trim(_request('auteur_nom'))) {
// si on a saisi les champs extra auteur_prenom ou auteur_nom, renseigner le nom
$auteur_prenom = trim(_request('auteur_prenom'));
$auteur_nom = trim(_request('auteur_nom'));
} else {
if (trim($flux['data']['auteur_prenom']) || trim($flux['data']['auteur_nom'])) {
// sinon ils sont peut être dans le contexte
$auteur_prenom = trim($flux['data']['auteur_prenom']);
$auteur_nom = trim($flux['data']['auteur_nom']);
} else {
// sinon on les lit dans la table
$infos_auteur = sql_fetsel(
'auteur_prenom, auteur_nom, nom',
'spip_auteurs',
'id_auteur = ' . intval($flux['args']['id_objet'])
);
$auteur_prenom = trim($infos_auteur['auteur_prenom']);
$auteur_nom = trim($infos_auteur['auteur_nom']);
}
}
if (trim($auteur_prenom) || trim($auteur_nom)) {
if(lire_config('auteur_nom_prenom/ordre')=='prenom') {
$nom = $auteur_prenom . ' ' . $auteur_nom;
} else {
$nom = $auteur_nom . ' ' . $auteur_prenom;
}
}
if (trim($nom)) {
sql_updateq('spip_auteurs', array('nom' => $nom), 'id_auteur = ' . $flux['args']['id_objet']);
}
}
return $flux;
}
function auteur_nom_prenom_declarer_champs_extras($champs = array()) {
if(lire_config('auteur_nom_prenom/civilite') ) {
$champs["spip_auteurs"]['auteur_civilite'] = array(
'options' =>
array(
'nom' => 'auteur_civilite',
'label' => _T('auteur_nom_prenom:auteur_civilite'),
'sql' => 'varchar(3) NULL DEFAULT NULL',
'versionner' => 'on',
'datas' => array(
'M' => 'M',
'Mme' => 'Mme',
),
),
'saisie' => 'radio',
);
}
$champs["spip_auteurs"]['auteur_nom'] = array(
'options' =>
array(
'nom' => 'auteur_nom',
'label' => _T('auteur_nom_prenom:auteur_nom'),
'sql' => 'text NULL DEFAULT NULL',
'versionner' => 'on',
),
'saisie' => 'input',
);
$champs["spip_auteurs"]['auteur_prenom'] = array(
'options' =>
array(
'nom' => 'auteur_prenom',
'label' => _T('auteur_nom_prenom:auteur_prenom'),
'sql' => 'text NULL DEFAULT NULL',
'versionner' => 'on',
),
'saisie' => 'input',
);
return $champs;
}

20
formulaires/configurer_auteur_nom_prenom.html

@ -0,0 +1,20 @@
<div class="formulaire_spip formulaire_configurer formulaire_#FORM">
<h3 class="titrem"><:auteur_nom_prenom: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
[(#SAISIE{radio, ordre, label=<:auteur_nom_prenom:ordre_champs:/>, explication=<:auteur_nom_prenom:ordre_champs_explication:/>,
datas=#ARRAY{prenom,<:auteur_nom_prenom:ordre_prenom:/>,nom,<:auteur_nom_prenom:ordre_nom:/>}})]
[(#SAISIE{case, civilite, label=<:auteur_nom_prenom:auteur_civilite:/>,label_case=<:auteur_nom_prenom:utiliser_civilite:/>})]
<p class="boutons"><span class="image_loading">&nbsp;</span><input type="submit" class="submit" value="<:bouton_enregistrer:/>" /></p>
</div>
</form>
</div>

32
lang/auteur_nom_prenom_fr.php

@ -0,0 +1,32 @@
<?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
'au_moins_un_champ' => 'Merci de renseigner un des deux champs',
'auteur_civilite' => 'Civilité',
'auteur_nom' => 'Nom',
'auteur_prenom' => 'Prénom',
'auteur_nom_prenom_titre' => 'Nom et prénom des auteurs',
// C
'cfg_titre_parametrages' => 'Paramétrages',
// O
'ordre_champs' => 'Ordre',
'ordre_champs_explication' => 'Dans quel ordre afficher les champs ?',
'ordre_nom' => 'Nom Prénom',
'ordre_prenom' => 'Prénom Nom',
// T
'titre_page_configurer_auteur_nom_prenom' => 'Configuration',
// U
'utiliser_civilite' => 'Utiliser le choix de la civilité',
);

12
lang/ecrire_fr.php

@ -0,0 +1,12 @@
<?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(
'titre_cadre_signature_obligatoire' => 'Nom affiché',
);

15
lang/paquet-auteur_nom_prenom_fr.php

@ -0,0 +1,15 @@
<?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
'auteur_nom_prenom_description' => '',
'auteur_nom_prenom_nom' => 'Nom et prénom des auteurs',
'auteur_nom_prenom_slogan' => '',
);

28
paquet.xml

@ -0,0 +1,28 @@
<paquet
prefix="auteur_nom_prenom"
categorie="auteur"
version="1.0.0"
etat="dev"
compatibilite="[3.2.0;3.3.*]"
logo="prive/themes/spip/images/auteur_nom_prenom-64.png"
documentation=""
schema="1.0.0"
>
<nom>Nom et prénom des auteurs</nom>
<auteur>nicod_</auteur>
<credit>Logo : name by Xela Ub from the Noun Project</credit>
<licence>GNU/GPL</licence>
<necessite nom="cextras" />
<necessite nom="iextras" />
<necessite nom="saisies" />
<pipeline nom="autoriser" inclure="auteur_nom_prenom_autorisations.php"/>
<pipeline nom="declarer_champs_extras" inclure="auteur_nom_prenom_pipelines.php"/>
<pipeline nom="post_edition" inclure="auteur_nom_prenom_pipelines.php"/>
<pipeline nom="affiche_milieu" inclure="auteur_nom_prenom_pipelines.php"/>
<pipeline nom="formulaire_verifier" inclure="auteur_nom_prenom_pipelines.php"/>
</paquet>

35
prive/fonds/auteur_edit.html

@ -0,0 +1,35 @@
<script>
$(document).ready(function() {
if($('.formulaire_editer_auteur').length) {
// placer les champs extra nom/prenom juste avant le nom complet (signature)
$('.formulaire_editer_auteur .editer.editer_auteur_civilite').insertBefore('.formulaire_editer_auteur .editer.editer_nom');
[(#ENV{ordre}|=={prenom}|non)
$('.formulaire_editer_auteur .editer.editer_auteur_nom').insertBefore('.formulaire_editer_auteur .editer.editer_nom');
]
$('.formulaire_editer_auteur .editer.editer_auteur_prenom').insertBefore('.formulaire_editer_auteur .editer.editer_nom');
[(#ENV{ordre}|=={prenom}|oui)
$('.formulaire_editer_auteur .editer.editer_auteur_nom').insertBefore('.formulaire_editer_auteur .editer.editer_nom');
]
$('.formulaire_editer_auteur .editer.editer_nom input').attr('readonly', 'readonly').addClass('disabled');
$('.formulaire_editer_auteur .editer.editer_nom p.explication').hide();
// mettre à jour le champ nom avec auteur_prenom + auteur_nom
function update_nom() {
var prenom = $('.formulaire_editer_auteur .editer.editer_auteur_prenom input').val();
var nom = $('.formulaire_editer_auteur .editer.editer_auteur_nom input').val();
var nom_complet = [(#ENV{ordre}|=={prenom}|?{prenom+' '+nom,nom+' '+prenom})];
$('.formulaire_editer_auteur .editer.editer_nom input').val(nom_complet);
}
$('.formulaire_editer_auteur .editer.editer_auteur_nom input').on('keyup change',update_nom);
$('.formulaire_editer_auteur .editer.editer_auteur_prenom input').on('keyup change',update_nom);
}
});
</script>
<style type="text/css">
.formulaire_editer_auteur input[name=nom].disabled {
color: #666;
background: #EEE;
}
</style>

7
prive/squelettes/contenu/configurer_auteur_nom_prenom.html

@ -0,0 +1,7 @@
[(#AUTORISER{configurer,_auteur_nom_prenom}|sinon_interdire_acces)]
<h1 class="grostitre"><:auteur_nom_prenom:titre_page_configurer_auteur_nom_prenom:/></h1>
<div class="ajax">
#FORMULAIRE_CONFIGURER_AUTEUR_NOM_PRENOM
</div>

BIN
prive/themes/spip/images/auteur_nom_prenom-128.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

BIN
prive/themes/spip/images/auteur_nom_prenom-32.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 933 B

BIN
prive/themes/spip/images/auteur_nom_prenom-64.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Loading…
Cancel
Save