Browse Source

Ajout de la configuration d'authentification pour l'API Discourse.

Transfert des boutons d'actions vers des contrôles ezcheck
master
Eric Lupinacci 2 years ago
parent
commit
7e11cce18d
  1. 18
      action/rubrique_categorie_synchroniser_texte.php
  2. 14
      action/rubrique_plugin_synchroniser_texte.php
  3. 24
      ezcheck/controles/contrib_controle.php
  4. 47
      ezcheck/controles/contrib_rubrique_categorie_synchro.yaml
  5. 47
      ezcheck/controles/contrib_rubrique_plugin_synchro.yaml
  6. 2
      ezcheck/dashboards/contrib.yaml
  7. 39
      formulaires/configurer_contrib.html
  8. 12
      formulaires/configurer_contrib.php
  9. 11
      lang/contrib_fr.php
  10. 10
      prive/squelettes/extra/dashboard.html

18
action/rubrique_categorie_synchroniser_texte.php

@ -64,7 +64,6 @@ function action_rubrique_categorie_synchroniser_texte_dist($arguments = null) {
}
}
// TODO : ajouter le déblocage de toutes les éditions de l'auteur
include_spip('inc/contrib_rubrique');
rubrique_debloquer_edition($GLOBALS['visiteur_session']['id_auteur']);
}
@ -88,19 +87,18 @@ function rubrique_categorie_synchroniser($categorie, $rang, $forcer = false) {
$set['titre'] = "${numero}. {$categorie['titre']}";
}
// -- On traite le descriptif :
// on ne remplace le descriptif que si l'option de forçage est active ou que celui-ci est vide.
// - On traite le descriptif :
// on ne remplace le descriptif que si l'option de forçage est active ou que celui-ci est vide.
if ($rubrique['descriptif']) {
// Forçage du descriptif
if ($forcer) {
if ($categorie['descriptif']) {
$set['descriptif'] = $categorie['descriptif'];
}
}
} else {
if ($categorie['descriptif']) {
if (
$forcer
and $categorie['descriptif']
) {
$set['descriptif'] = $categorie['descriptif'];
}
} elseif ($categorie['descriptif']) {
$set['descriptif'] = $categorie['descriptif'];
}
// Si il y a un champ à modifier, on met à jour la rubrique.

14
action/rubrique_plugin_synchroniser_texte.php

@ -62,15 +62,14 @@ function action_rubrique_plugin_synchroniser_texte_dist($arguments = null) {
// on ne remplace le descriptif que si l'option de forçage est active ou que celui-ci est vide.
if ($_rubrique['descriptif']) {
// Forçage du descriptif
if ($forcer) {
if ($plugin['slogan']) {
$set['descriptif'] = $plugin['slogan'];
}
}
} else {
if ($plugin['slogan']) {
if (
$forcer
and $plugin['slogan']
) {
$set['descriptif'] = $plugin['slogan'];
}
} elseif ($plugin['slogan']) {
$set['descriptif'] = $plugin['slogan'];
}
// Si il y a un champ à modifier, on met à jour la rubrique.
@ -80,6 +79,5 @@ function action_rubrique_plugin_synchroniser_texte_dist($arguments = null) {
}
}
// TODO : ajouter le déblocage de toutes les éditions de l'auteur
rubrique_debloquer_edition($GLOBALS['visiteur_session']['id_auteur']);
}

24
ezcheck/controles/contrib_controle.php

@ -197,6 +197,30 @@ function contrib_rubrique_categorie($id_controle, $id_auteur, $options) {
return $erreur;
}
function contrib_rubrique_plugin_synchro($id_controle, $id_auteur, $options) {
// Initialisation de l'erreur à chaine vide soit 'aucune erreur'.
$erreur = '';
// On appelle l'action associée avec l'indicateur de forcage ou pas suivant la demande
$synchroniser = charger_fonction('rubrique_plugin_synchroniser_texte', 'action');
$synchroniser($options['forcer_texte']);
return $erreur;
}
function contrib_rubrique_categorie_synchro($id_controle, $id_auteur, $options) {
// Initialisation de l'erreur à chaine vide soit 'aucune erreur'.
$erreur = '';
// On appelle l'action associée avec l'indicateur de forcage ou pas suivant la demande
$synchroniser = charger_fonction('rubrique_categorie_synchroniser_texte', 'action');
$synchroniser($options['forcer_texte']);
return $erreur;
}
/**
* Ce contrôle permet d'identifier les affectations plugin-catégorie pour lesquelles le préfixe de plugin
* est erroné (c'est le cas si celui-ci a été changé ou si le plugin a été retiré du référentiel).

47
ezcheck/controles/contrib_rubrique_categorie_synchro.yaml

@ -0,0 +1,47 @@
# Description du type de contrôle:
# --------------------------------
# -- nom: nom littéral du type de contrôle en texte ou item de langue (facultatif, défaut: identifiant du type de contrôle)
# -- description: texte en item de langue ou en chaine (facultatif, défaut: vide)
# -- icone: chemin de l'icone limité à son nom de fichier car recherché dans le thème privé (facultatif, défaut: controle_defaut-24.png)
nom: '<:contrib:type_controle_rubrique_categorie_synchro_nom:>'
description: '<:contrib:type_controle_rubrique_categorie_synchro_desc:>'
icone: 'rubrique-24.png'
# Fonction PHP d'exécution du contrôle: objet 'execution'
# -------------------------------------------------------
# -- include: indique le chemin relatif du fichier dans le path, sans extension car toujours PHP, dans lequel est incluse
# la fonction (facultatif, défaut: vide). Si le champ n'est pas fourni c'est que le type de contrôle
# est sans fonction de contrôle. Trois formats sont autorisés:
# - '/nom_fichier' indique que le fichier est dans le répertoire relatif par défaut, soit 'ezcheck/controles/'.
# - 'dir_relatif/nom_fichier' indique qu'il faut utiliser le chemin relatif fourni tel que.
# - 'nom_fichier' indique que le fichier est à la racine d'un dossier du path (cas particulier du précédent).
# -- fonction: indique le nom de la fonction d'exécution du contrôle (facultatif, défaut: identifiant du type de contrôle).
# L'utilisation de la valeur par défaut est nécessaire pour gérer les observations et recevoir la liste des
# arguments standard, à savoir, l'id du type de contrôle, l'auteur et les paramètres fonction du formulaire.
# -- parametres: liste ordonnée des paramètres de la fonction définie sous forme d'une liste de saisies.
# On peut passer des paramètres 'fixes' avec une saisie de type hidden.
execution:
include: '/contrib_controle'
parametres:
- saisie: 'case'
options:
nom: 'forcer_texte'
label_case: '<:contrib:rubrique_forcer_texte_label:>'
# Anomalies & corrections: objet 'anomalies'
# ------------------------------------------
# -- include: indique le chemin relatif du fichier dans le path, sans extension car toujours PHP, dans lequel sont incluses
# les fonctions de correction automatique des anomalies.
# Si le champ est vide ou non fourni et que des corrections existent, c'est que l'include coincide avec celui
# de la fonction d'exécution du type de contrôle.
# Sinon, le format est identique à celui de la fonction d'exécution.
# -- corriger: liste des identifiants d'anomalies que l'on peut corriger (facultatif, défaut: vide)
# -- acquitter: liste des identifiants d'anomalies que l'on peut acquitter (facultatif, défaut: vide)
# Affichage complémentaire HTML: objet 'affichage'
# ------------------------------------------------
# -- squelette: indique le chemin relatif du fichier dans le path, sans extension car toujours HTML.
# -- contexte: liste des variables supplémentaires de contexte à passer au squelette
# -- parametres: liste des paramètres du squelette définie sous forme d'une liste de saisies.
# On peut passer des paramètres en plus des variables fixes de contexte, toute sera inséré dans
# l'environnement du squelette

47
ezcheck/controles/contrib_rubrique_plugin_synchro.yaml

@ -0,0 +1,47 @@
# Description du type de contrôle:
# --------------------------------
# -- nom: nom littéral du type de contrôle en texte ou item de langue (facultatif, défaut: identifiant du type de contrôle)
# -- description: texte en item de langue ou en chaine (facultatif, défaut: vide)
# -- icone: chemin de l'icone limité à son nom de fichier car recherché dans le thème privé (facultatif, défaut: controle_defaut-24.png)
nom: '<:contrib:type_controle_rubrique_plugin_synchro_nom:>'
description: '<:contrib:type_controle_rubrique_plugin_synchro_desc:>'
icone: 'rubrique-24.png'
# Fonction PHP d'exécution du contrôle: objet 'execution'
# -------------------------------------------------------
# -- include: indique le chemin relatif du fichier dans le path, sans extension car toujours PHP, dans lequel est incluse
# la fonction (facultatif, défaut: vide). Si le champ n'est pas fourni c'est que le type de contrôle
# est sans fonction de contrôle. Trois formats sont autorisés:
# - '/nom_fichier' indique que le fichier est dans le répertoire relatif par défaut, soit 'ezcheck/controles/'.
# - 'dir_relatif/nom_fichier' indique qu'il faut utiliser le chemin relatif fourni tel que.
# - 'nom_fichier' indique que le fichier est à la racine d'un dossier du path (cas particulier du précédent).
# -- fonction: indique le nom de la fonction d'exécution du contrôle (facultatif, défaut: identifiant du type de contrôle).
# L'utilisation de la valeur par défaut est nécessaire pour gérer les observations et recevoir la liste des
# arguments standard, à savoir, l'id du type de contrôle, l'auteur et les paramètres fonction du formulaire.
# -- parametres: liste ordonnée des paramètres de la fonction définie sous forme d'une liste de saisies.
# On peut passer des paramètres 'fixes' avec une saisie de type hidden.
execution:
include: '/contrib_controle'
parametres:
- saisie: 'case'
options:
nom: 'forcer_texte'
label_case: '<:contrib:rubrique_forcer_texte_label:>'
# Anomalies & corrections: objet 'anomalies'
# ------------------------------------------
# -- include: indique le chemin relatif du fichier dans le path, sans extension car toujours PHP, dans lequel sont incluses
# les fonctions de correction automatique des anomalies.
# Si le champ est vide ou non fourni et que des corrections existent, c'est que l'include coincide avec celui
# de la fonction d'exécution du type de contrôle.
# Sinon, le format est identique à celui de la fonction d'exécution.
# -- corriger: liste des identifiants d'anomalies que l'on peut corriger (facultatif, défaut: vide)
# -- acquitter: liste des identifiants d'anomalies que l'on peut acquitter (facultatif, défaut: vide)
# Affichage complémentaire HTML: objet 'affichage'
# ------------------------------------------------
# -- squelette: indique le chemin relatif du fichier dans le path, sans extension car toujours HTML.
# -- contexte: liste des variables supplémentaires de contexte à passer au squelette
# -- parametres: liste des paramètres du squelette définie sous forme d'une liste de saisies.
# On peut passer des paramètres en plus des variables fixes de contexte, toute sera inséré dans
# l'environnement du squelette

2
ezcheck/dashboards/contrib.yaml

@ -14,6 +14,8 @@ groupes:
controles:
- 'contrib_rubrique_plugin'
- 'contrib_rubrique_categorie'
- 'contrib_rubrique_plugin_synchro'
- 'contrib_rubrique_categorie_synchro'
-
identifiant: 'article'
nom: '<:contrib:groupe_contrib_article_nom:>'

39
formulaires/configurer_contrib.html

@ -9,18 +9,35 @@
<input type="hidden" name="_meta_casier" value="contrib" />
<div class="editer-groupe">
[(#SAISIE{selection_multiple, secteurs,
explication=<:contrib:configuration_secteur_galaxie_explication:>,
label=<:contrib:configuration_secteur_galaxie_label:>,
data=#ENV{_secteur_possibles},
})]
[(#SAISIE{selection_multiple, secteurs,
explication=<:contrib:configuration_secteur_galaxie_explication:>,
label=<:contrib:configuration_secteur_galaxie_label:>,
data=#ENV{_secteur_possibles},
})]
[(#SAISIE{input, token,
label=<:contrib:token_api_gitea_label:>,
obligatoire=oui,
size=40,
maxlength=40
})]
<fieldset>
<legend><:contrib:configuration_fieldset_gitea_label:></legend>
[(#SAISIE{input, token,
label=<:contrib:token_api_gitea_label:>,
obligatoire=oui,
size=40,
maxlength=40
})]
</fieldset>
<fieldset>
<legend><:contrib:configuration_fieldset_discourse_label:></legend>
[(#SAISIE{input, discourse_cle,
label=<:contrib:configuration_discourse_cle_label:>,
obligatoire=oui,
size=64,
})]
[(#SAISIE{input, discourse_username,
label=<:contrib:configuration_discourse_username_label:>,
obligatoire=oui,
size=30,
})]
</fieldset>
</div>
<p class="boutons">

12
formulaires/configurer_contrib.php

@ -18,7 +18,9 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
*/
function formulaires_configurer_contrib_charger() {
$valeurs = array();
// Chargement des données de configuration déjà en meta
include_spip('inc/cvt_configurer');
$valeurs = cvtconf_formulaires_configurer_recense('configurer_contrib');
// Liste des secteurs apropos et carnet pour les exclure car il ne peuvent pas être choisis.
include_spip('inc/config');
@ -36,13 +38,7 @@ function formulaires_configurer_contrib_charger() {
$secteurs = sql_allfetsel('id_rubrique, titre', $from, $where);
$valeurs['_secteur_possibles'] = array_column($secteurs, 'titre', 'id_rubrique');
// Récupération des secteurs déjà choisis.
include_spip('inc/config');
$valeurs['secteurs'] = lire_config('contrib/secteurs', array());
// Récupération du token
include_spip('inc/config');
$valeurs['token'] = lire_config('contrib/token', array());
$valeurs['editable'] = true;
return $valeurs;
}

11
lang/contrib_fr.php

@ -15,6 +15,10 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
// C
'categorie_vide_label' => 'Pas de catégorie',
'configuration_page_titre' => 'Configuration du plugin Contrib',
'configuration_fieldset_gitea_label' => 'Forge Gitea',
'configuration_fieldset_discourse_label' => 'Forum Discourse',
'configuration_discourse_cle_label' => 'Cle d\'authentifcation pour l\'accès à l\'API de Discourse',
'configuration_discourse_username_label' => 'Nom d\utilisateur associé à la clé',
'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',
@ -68,8 +72,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'repo_organisation_sinon' => 'Aucun fichier disponible',
'rubrique_plugin_generer_prefixe_label' => 'Générer les préfixes des rubriques-plugin',
'rubrique_couleur_label' => 'Couleur de la rubrique',
'rubrique_categorie_synchroniser_texte_label' => 'Synchroniser les rubriques-catégorie',
'rubrique_plugin_synchroniser_texte_label' => 'Synchroniser les rubriques-plugin',
'rubrique_forcer_texte_label' => 'Remplacer le descriptif de la rubrique même si celle-ci en possède déjà un.',
// T
'type_article_label' => 'Type d\'article',
@ -95,6 +98,10 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
Le contrôle prend pour référence la typologie &#171; catégorie des plugins &#187; qui doit donc être fiabilisée au préalable.
Néanmoins, avant de lancer la correction automatique pour l\'anomalie <code>rubplug_loc</code>, il est conseillé de vérifier que l\'affectation plugin-catégorie est correcte. Si oui, la correction automatique placera la rubrique là où il faut.',
'type_controle_rubrique_categorie_synchro_nom' => 'Synchroniser les rubriques-catégorie',
'type_controle_rubrique_categorie_synchro_desc' => 'Cette action permet de copier le titre et la description d\'une catégorie dans les champs idoines de la rubrique-catégorie associée si elle existe.',
'type_controle_rubrique_plugin_synchro_nom' => 'Synchroniser les rubriques-plugin',
'type_controle_rubrique_plugin_synchro_desc' => 'Cette action permet de copier le titre et la description d\'un plugin dans les champs idoines de la rubrique-plugin associée si elle existe.',
'type_controle_user_recent_nom' => 'Utilisateurs récemment inscrits',
'type_controle_orga_repos_nom' => 'Liste des repos des organisations',
'type_controle_user_recent_desc' => 'Ce contrôle permet de récupérer la liste des users Gitea dans un fichier JSON téléchargeable et affiche la liste des n derniers inscrits, n pouvant être choisi à chaque exécution.',

10
prive/squelettes/extra/dashboard.html

@ -1,11 +1 @@
[(#REM) <!-- Boutons de raccourcis --> ]
[(#AUTORISER{webmestre}|et{#IDENTIFIANT|=={contrib}}|oui)
#BOITE_OUVRIR{'', raccourcis}
[(#URL_ACTION_AUTEUR{rubrique_categorie_synchroniser_texte, '', #SELF}
|icone_horizontale{<:contrib:rubrique_categorie_synchroniser_texte_label:>, rubrique_categorie-24.png})]
[(#URL_ACTION_AUTEUR{rubrique_plugin_generer_prefixe, '', #SELF}
|icone_horizontale{<:contrib:rubrique_plugin_generer_prefixe_label:>, rubrique_plugin-24.png})]
[(#URL_ACTION_AUTEUR{rubrique_plugin_synchroniser_texte, '', #SELF}
|icone_horizontale{<:contrib:rubrique_plugin_synchroniser_texte_label:>, rubrique_plugin-24.png})]
#BOITE_FERMER
]

Loading…
Cancel
Save