Browse Source

On surcharge la page d'inscription de Contrib pour présenter les deux form d'inscription (contrib + gitea).

On informe l'auteur sur le fait qu'il possède ou pas un compte sur gitea avec son adresse mail de contrib
master
Eric Lupinacci 6 months ago
parent
commit
a881b1b0b0
  1. 48
      aside/dist.html
  2. 21
      content/identifiants.html
  3. 42
      contrib_fonctions.php
  4. 8
      ezcache/contrib.php
  5. 6
      formulaires/contribution_inscrire.html
  6. 30
      formulaires/contribution_inscrire.php
  7. 7
      lang/contrib_fr.php
  8. 41
      services/gitea.php

48
aside/dist.html

@ -0,0 +1,48 @@
#SET{auteur_est_connecte, ''}
#SET{auteur_email, ''}
<BOUCLE_auteur_connecte(AUTEURS){id_auteur = #SESSION{id_auteur}}{statut !IN poubelle}{si #SESSION{id_auteur}}>
#SET{auteur_est_connecte, 'oui'}
#SET{auteur_email, #EMAIL}
<div class="menu-aside menu-aside--user">
<div class="user__shortdesc">
[<a href="#URL_AUTEUR">(#LOGO_AUTEUR|image_reduire{80})</a>]
<strong class="username">#NOM</strong>
</div>
<ul class="user__links list-reset">
<li>
<a href="#URL_AUTEUR"><:galactic_contrib:ma_page:></a>
</li>
<li>
<a href="#URL_LOGOUT" rel="nofollow"><:icone_deconnecter:></a>
</li>
<BOUCLE_admin(CONDITION){si #STATUT|=={0minirezo}}>
<li>
<a href="#URL_ECRIRE" rel="nofollow"><:espace_prive:></a>
</li>
</BOUCLE_admin>
</ul>
</div>
</BOUCLE_auteur_connecte>
<div class="menu-aside menu-aside--action block-link-parent">
<a class="block-link" href="[(#URL_PAGE{login}|parametre_url{url,#SELF}|parametre_url{lang,#LANG})]" onclick="if (jQuery.modalbox) {jQuery.modalbox('[(#URL_PAGE{login}|parametre_url{url,#SELF}|parametre_url{lang,#LANG}|parametre_url{var_zajax,content})]');return false;}">
<:lien_connecter:>
</a>
[(#CHEMIN{images/icone-login.svg}|generer_svg{28,18})]
</div>
<//B_auteur_connecte>
<div class="menu-aside menu-aside--action block-link-parent">
<a class="block-link" href="[(#URL_PAGE{identifiants,focus=nom_inscription}|parametre_url{mode,#URL_SITE_SPIP|tester_config{1comite}}|parametre_url{lang,#LANG})]">
<:contrib:contribution_sincrire|ucfirst:>
</a>
[(#CHEMIN{images/icone-inscrire.svg}|generer_svg{28,18})]
</div>
[<div class="menu-aside menu-aside--lien block-link-parent">
<a class="block-link" href="(#URL_RUBRIQUE{#ID_RUBRIQUE_CARNET})"><:galactic_contrib:wiki:></a>
[(#CHEMIN{images/icone-crayon.svg}|generer_svg{28,18})]
</div>]
<div class="menu-aside menu-aside--lien [ (#ENV{page}|=={auteurs}|oui)actif] block-link-parent">
<a class="block-link" href="#URL_PAGE{auteurs}"><:galactic_contrib:info_auteurs:></a>
[(#CHEMIN{images/icone-users.svg}|generer_svg{28,18})]
</div>

21
content/identifiants.html

@ -0,0 +1,21 @@
<div class="cartouche">
<h1>INSCRIPTIONS</h1>
</div>
<div class="cartouche">
<h2>Rédiger sur SPIP-Contrib</h2>
</div>
#SET{auteur_email, ''}
<BOUCLE_auteur_connecte(AUTEURS){id_auteur = #SESSION{id_auteur}}{statut !IN poubelle}{si #SESSION{id_auteur}}>
#SET{auteur_email, #EMAIL}
#BOITE_OUVRIR{'', info}
<:contrib:contribution_deja_redacteur:>
#BOITE_FERMER
</BOUCLE_auteur_connecte>
#FORMULAIRE_INSCRIPTION{#ENV{mode},#ENV{id_rubrique}}
<//B_auteur_connecte>
<div class="cartouche">
<h2>Contribuer au développement</h2>
</div>
#FORMULAIRE_CONTRIBUTION_INSCRIRE{#GET{auteur_email}}

42
contrib_fonctions.php

@ -15,3 +15,45 @@ function generer_titre_inscription($id_objet, $champs) {
return $titre;
}
function gitea_user_existe($email) {
// Par défaut on considère que le user n'existe pas
$user_existe = false;
if ($email) {
include_spip('services/gitea');
$users = gitea_user_repertorier();
// On parcours la liste pour trouver un user avec l'email fourni
foreach($users as $_user) {
if ($_user['email'] === $email) {
$user_existe = true;
break;
}
}
}
return $user_existe;
}
function gitea_user_lire($email) {
// Par défaut on considère que le user n'existe pas
$user = [];
if ($email) {
include_spip('services/gitea');
$users = gitea_user_repertorier();
// On parcours la liste pour trouver un user avec l'email fourni
foreach($users as $_user) {
if ($_user['email'] === $email) {
$user = $_user;
break;
}
}
}
return $user;
}

8
ezcache/contrib.php

@ -19,7 +19,7 @@ function contrib_cache_configurer($plugin) {
// Initialisation du tableau de configuration avec les valeurs par défaut du plugin Check Factory.
$configuration = array(
'repo' => array(
'racine' => '_DIR_VAR',
'racine' => '_DIR_TMP',
'sous_dossier' => false,
'nom_prefixe' => 'repo',
'nom_obligatoire' => array('organisation'),
@ -29,10 +29,10 @@ function contrib_cache_configurer($plugin) {
'serialisation' => false,
'decodage' => false,
'separateur' => '_',
'conservation' => 0
'conservation' => 3600 * 24 * 30
),
'user' => array(
'racine' => '_DIR_VAR',
'racine' => '_DIR_TMP',
'sous_dossier' => false,
'nom_prefixe' => 'user',
'nom_obligatoire' => array('liste'),
@ -42,7 +42,7 @@ function contrib_cache_configurer($plugin) {
'serialisation' => false,
'decodage' => true,
'separateur' => '_',
'conservation' => 0
'conservation' => 3600 * 6
),
);

6
formulaires/contribution_inscrire.html

@ -11,6 +11,12 @@
<div class="editer-groupe">
<fieldset>
<legend><:contrib:inscription_fieldset_forge_label:></legend>
[(#ENV{user_forge}|oui)
[(#SET{texte, <:contrib:contribution_deja_forgeron:>})]
#BOITE_OUVRIR{'', notice}
#GET{texte}
#BOITE_FERMER
]
[(#SAISIE{explication, exuser,
texte=<:contrib:inscription_fieldset_forge_explication:>,
})]

30
formulaires/contribution_inscrire.php

@ -11,7 +11,7 @@ if (!defined('_ECRIRE_INC_VERSION')) {
* @return array
* Tableau des champs postés pour l'affichage du formulaire.
*/
function formulaires_contribution_inscrire_charger_dist() {
function formulaires_contribution_inscrire_charger_dist($email) {
// Initialisation des champs du formulaire
$valeurs = array(
@ -20,10 +20,17 @@ function formulaires_contribution_inscrire_charger_dist() {
'charte_approuvee' => ''
);
// On vérifie si l'email de l'auteur connecté correspond à un compte sur la forge
include_spip('contrib_fonctions');
$user = gitea_user_lire($email);
if ($user) {
$valeurs['user_forge'] = $user;
}
return $valeurs;
}
function formulaires_contribution_inscrire_verifier_dist() {
function formulaires_contribution_inscrire_verifier_dist($email) {
$erreurs = array();
@ -92,7 +99,7 @@ function formulaires_contribution_inscrire_verifier_dist() {
}
function formulaires_contribution_inscrire_traiter_dist() {
function formulaires_contribution_inscrire_traiter_dist($email) {
$retour = array();
@ -114,9 +121,22 @@ function formulaires_contribution_inscrire_traiter_dist() {
$id = objet_inserer('inscription', null, $set);
if ($id) {
$retour['message_ok'] = _T('contrib:inscription_demande_ok_message');
// On envoie un mail sur la liste spip-dev pour prévenir les administrateurs de l'arrivée d'une demande
$to = 'spip-dev@rezo.net';
$sujet = 'SPIP-Contrib - Inscription à la Forge de ' . $set['username'];
$corps['texte'] = 'Une demande d\'inscription à la Forge SPIP a été faite le : ' . affdate_heure(date());
// -- on récupère la config Facteur pour le from
include_spip('inc/facteur');
$config = facteur_config();
$corps['from'] = $config['adresse_envoi_email'];
$corps['nom_envoyeur'] = $config['adresse_envoi_nom'];
$envoyer_mail = charger_fonction('envoyer_mail', 'inc/');
$envoyer_mail($to, $sujet, $corps);
$retour['message_ok'] = _T('contrib:inscription_ajout_ok_message');
} else {
$retour['message_erreur'] = _T('contrib:inscription_demande_nok_message');
$retour['message_erreur'] = _T('contrib:inscription_ajout_nok_message');
}
return $retour;

7
lang/contrib_fr.php

@ -17,6 +17,9 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'configuration_page_titre' => 'Configuration du plugin Contrib',
'configuration_secteur_galaxie_label' => 'Secteurs disponibles',
'configuration_secteur_galaxie_explication' => 'Choisir parmi les secteurs disponibles (hors secteur-carnet, secteur-apropos et secteurs-plugin) le ou les secteurs qui composeront la partie Galaxie du site.',
'contribution_sincrire' => 's\'inscrire pour contribuer',
'contribution_deja_redacteur' => 'Bravo ! Vous êtes déjà une rédacteur du site SPIP-Contrib.',
'contribution_deja_forgeron' => 'Il existe déjà un compte sur la Forge de SPIP avec votre adresse email @email@. Si c\'est bien votre compte, bravo il est inutile de vous inscrire à nouveau.',
// D
'dashboard_menu' => 'Dashboard SPIP-Contrib',
@ -37,9 +40,9 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'inscription_btn_supprimer_label' => 'Supprimer',
'inscription_form_titre' => 'Contribuer à SPIP',
'inscription_fieldset_forge_label' => 'Forge SPIP',
'inscription_fieldset_forge_explication' => 'La <a href="https://git.spip.net">Forge SPIP</a> est l\'espace de développement de SPIP et de ses plugins. Vous pouvez vous inscrire afin de soumettre des rapports d\'anomalies, des demandes d\'évolution, de les discuter voire de contribuer au code des plugins et des squelettes.',
'inscription_fieldset_forge_explication' => 'La <a href="https://git.spip.net">Forge SPIP</a> est l\'espace de développement de SPIP et de ses plugins. Vous pouvez vous inscrire afin de soumettre et discuter des rapports d\'anomalies ou d\'évolution ou de contribuer au code des plugins et des squelettes.',
'inscription_fieldset_charte_label' => 'Charte SPIP',
'inscription_fieldset_charte_explication' => 'SPIP est un logiciel libre, chaque personne peut l’utiliser et le modifier à sa convenance. Cependant, toute participation doit se faire dans le respect des buts et valeurs promus par le projet initial du minirézo qui sont rappelés dans la <a href="https://www.spip.net/fr_article6431.html" target="blank">Charte d\'accueil de SPIP</a>.',
'inscription_fieldset_charte_explication' => 'SPIP est un logiciel libre, chaque personne peut l’utiliser et le modifier à sa convenance. Cependant, toute participation à la communauté doit se faire dans le respect des buts et valeurs promus par le projet initial du minirézo et inscrits dans la <a href="https://www.spip.net/fr_article6431.html" target="blank">Charte d\'accueil de SPIP</a>.',
'inscription_username_label' => 'Nom d\'utilisateur ou d\'utilisatrice',
'inscription_email_label' => 'Adresse e-mail',
'inscription_charte_label' => 'J\'approuve la Charte d’accueil de SPIP',

41
services/gitea.php

@ -87,21 +87,36 @@ function gitea_user_repertorier() {
// Initialisation de l'erreur à chaine vide soit 'aucune erreur'.
$users = array();
// Construction de l'url de la requête de récupération de tous les users de la forge
include_spip('services/gitea');
$parametres = array(
'admin',
'users'
include_spip('inc/ezcache_cache');
$cache = array(
'liste' => 'all'
);
$url = gitea_construire_url($parametres);
// Requête, gestion des erreurs et traitement des users
$reponse = gitea_requeter($url);
if (empty($reponse['erreur'])) {
// On retraite le tableau de façon à pouvoir classer les users du plus récent au plus ancien.
// Pour cela on utilise l'id.
$users = $reponse['donnees'];
if ($fichier_cache = cache_est_valide('contrib', 'user', $cache)) {
// Lecture des données du fichier cache valide et peuplement de l'index données
$users = cache_lire('contrib', 'user', $fichier_cache);
} else {
// Construction de l'url de la requête de récupération de tous les users de la forge
include_spip('services/gitea');
$parametres = array(
'admin', 'users'
);
$url = gitea_construire_url($parametres);
// Requête, gestion des erreurs et traitement des users
$reponse = gitea_requeter($url);
if (empty($reponse['erreur'])) {
// On retraite le tableau de façon à pouvoir classer les users du plus récent au plus ancien.
// Pour cela on utilise l'id.
$users = $reponse['donnees'];
// On passe les deux tableaux users en chaine JSON avant la mise en cache
$contenu = json_encode($users);
// Création des fichiers cache pour chaque contenu
cache_ecrire('contrib', 'user', $cache, $contenu);
}
}
return $users;
}
Loading…
Cancel
Save