Browse Source

Mise en place des demandes d'inscription pour contribuer à SPIP.

Pour l'instant c'est une pièce à casser.
master
Eric Lupinacci 7 months ago
parent
commit
cd8e21a291
  1. 91
      action/supprimer_inscription.php
  2. 88
      base/contrib_declarations.php
  3. 6
      contrib_administrations.php
  4. 2
      contrib_options.php
  5. 42
      ezcheck/controles/gitea_inscription.yaml
  6. 3
      ezcheck/dashboards/contrib.yaml
  7. 42
      formulaires/contribution_inscrire.html
  8. 68
      formulaires/contribution_inscrire.php
  9. 24
      lang/contrib_fr.php
  10. 49
      lang/inscription_fr.php
  11. 6
      paquet.xml
  12. 27
      prive/objets/contenu/inscription.html
  13. 45
      prive/objets/liste/inscriptions.html
  14. 56
      prive/squelettes/contenu/inscription.html
  15. 7
      prive/squelettes/contenu/inscriptions.html

91
action/supprimer_inscription.php

@ -0,0 +1,91 @@
<?php
/**
* Utilisation de l'action supprimer pour l'objet inscription
*
* @plugin Maintenance de Contrib
* @copyright 2021
* @author Eric Lupinacci
* @licence GNU/GPL
* @package SPIP\Contrib\Action
*/
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Action pour supprimer un·e inscription
*
* Vérifier l'autorisation avant d'appeler l'action.
*
* @param null|int $arg
* Identifiant à supprimer.
* En absence de id utilise l'argument de l'action sécurisée.
**/
function action_supprimer_inscription_dist($arg=null) {
$need_confirm = false;
if (is_null($arg)){
$securiser_action = charger_fonction('securiser_action', 'inc');
$arg = $securiser_action();
$need_confirm = true;
}
$arg = intval($arg);
if ($need_confirm){
$ok = confirmer_supprimer_inscription_avant_action(_T('inscription:confirmer_supprimer_inscription'), _T('item_oui') . '! ' . _T('inscription:supprimer_inscription'));
}
// cas suppression
if (autoriser('supprimer', 'inscription', $arg)) {
if ($arg) {
$objet = sql_fetsel('*', 'spip_inscriptions', 'id_inscription=' . sql_quote($arg));
$qui = (!empty($GLOBALS['visiteur_session']['id_auteur']) ? 'auteur #' . $GLOBALS['visiteur_session']['id_auteur'] : 'IP ' . $GLOBALS['ip']);
spip_log("SUPPRESSION inscription#$arg par $qui : " . json_encode($objet), "suppressions" . _LOG_INFO_IMPORTANTE);
sql_delete('spip_inscriptions', 'id_inscription=' . sql_quote($arg));
// invalider le cache
include_spip('inc/invalideur');
suivre_invalideur("id='inscription/$arg'");
}
else {
spip_log("action_supprimer_inscription_dist $arg pas compris");
}
}
}
/**
* Confirmer avant suppression si on arrive par un bouton action
* @param string $titre
* @param string $titre_bouton
* @param string|null $url_action
* @return bool
*/
function confirmer_supprimer_inscription_avant_action($titre, $titre_bouton, $url_action=null) {
if (!$url_action) {
$url_action = self();
$action = _request('action');
$url_action = parametre_url($url_action, 'action', $action, '&');
}
else {
$action = parametre_url($url_action, 'action');
}
$arg = parametre_url($url_action, 'arg');
$confirm = md5("$action:$arg:".realpath(__FILE__));
if (_request('confirm_action') === $confirm) {
return true;
}
$url_confirm = parametre_url($url_action, "confirm_action", $confirm, '&');
include_spip("inc/filtres");
$bouton_action = bouton_action($titre_bouton, $url_confirm);
$corps = "<div style='text-align:center;'>$bouton_action</div>";
include_spip("inc/minipres");
echo minipres($titre,$corps);
exit;
}

88
base/contrib_declarations.php

@ -30,9 +30,9 @@ function contrib_declarer_champs_extras($champs = array()) {
'voir' => false,
),
'sql' => "varchar(100) DEFAULT '' NOT NULL",
'rechercher' => true,
'rechercher' => true,
'rechercher_ponderation' => 2,
'versionner' => false,
'versionner' => false,
),
'verifier' => array(
),
@ -51,9 +51,9 @@ function contrib_declarer_champs_extras($champs = array()) {
'voir' => false,
),
'sql' => "varchar(30) DEFAULT '' NOT NULL",
'rechercher' => true,
'rechercher' => true,
'rechercher_ponderation' => 10,
'versionner' => false,
'versionner' => false,
),
'verifier' => array(
),
@ -82,7 +82,7 @@ function contrib_declarer_champs_extras($champs = array()) {
'auteur' => 'webmestre',
),
),
'sql' => "varchar(16) DEFAULT '' NOT NULL",
'sql' => "varchar(16) DEFAULT '' NOT NULL",
'versionner' => false,
),
'verifier' => array(
@ -91,3 +91,81 @@ function contrib_declarer_champs_extras($champs = array()) {
return $champs;
}
/**
* 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 contrib_declarer_tables_interfaces($interfaces) {
// Les tables : permet d'appeler une boucle avec le *type* de la table uniquement
$interfaces['table_des_tables']['inscriptions'] = 'inscriptions';
// Les traitements
// - on desérialise les tableaux
$interface['table_des_traitements']['PARAMETRES']['inscriptions'] = 'unserialize(%s)';
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 contrib_declarer_tables_objets_sql($tables) {
$tables['spip_inscriptions'] = array(
'type' => 'inscription',
'principale' => 'oui',
'field'=> array(
'id_inscription' => 'bigint(21) NOT NULL',
'username' => 'varchar(100) DEFAULT "" NOT NULL',
'email' => 'tinytext DEFAULT "" NOT NULL',
'charte_approuvee' => 'varchar(3) DEFAULT "non" NOT NULL',
'parametres' => 'text DEFAULT "" NOT NULL',
'date' => 'datetime DEFAULT "0000-00-00 00:00:00" NOT NULL',
'statut' => 'varchar(20) DEFAULT "0" NOT NULL',
'maj' => 'timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'
),
'key' => array(
'PRIMARY KEY' => 'id_inscription',
'KEY statut' => 'statut',
),
'titre' => '',
'champs_editables' => array('username', 'email', 'charte_approuvee', 'parametres'),
'champs_versionnes' => array(),
'rechercher_champs' => array("username" => 10, "email" => 10),
'tables_jointures' => array(),
'statut_textes_instituer' => array(
'prop' => 'texte_statut_proposee',
'publie' => 'texte_statut_traitee',
'refuse' => 'texte_statut_refusee',
'poubelle' => 'texte_statut_poubelle',
),
'statut'=> array(
array(
'champ' => 'statut',
'publie' => 'publie',
'previsu' => 'publie,prop',
'post_date' => 'date',
'exception' => array('statut','tout')
)
),
'texte_changer_statut' => 'inscription:texte_changer_statut_inscription',
);
return $tables;
}

6
contrib_administrations.php

@ -20,6 +20,9 @@ function contrib_upgrade($nom_meta_base_version, $version_cible) {
include_spip('base/contrib_declarations');
cextras_api_upgrade(contrib_declarer_champs_extras(), $maj['create']);
// Ajout de la tables des demandes d'inscription
$maj['2'] = array(array('maj_tables', array('spip_inscriptions')));
include_spip('base/upgrade');
maj_plugin($nom_meta_base_version, $version_cible, $maj);
}
@ -38,6 +41,9 @@ function contrib_vider_tables($nom_meta_base_version) {
include_spip('base/contrib_declarations');
cextras_api_vider_tables(contrib_declarer_champs_extras());
// Suppression de la table des demandes d'inscription à Gitea
sql_drop_table('spip_inscriptions');
// on efface la meta du schéma du plugin
effacer_meta($nom_meta_base_version);
}

2
contrib_options.php

@ -30,7 +30,7 @@ if (!defined('_PLUGINSPIP_BRANCHE_STABLE'))
// Branches SPIP maintenues
if (!defined('_PLUGINSPIP_BRANCHES_MAINTENUES'))
define('_PLUGINSPIP_BRANCHES_MAINTENUES', '3.2,3.1,3.0');
define('_PLUGINSPIP_BRANCHES_MAINTENUES', '4.0,3.2,3.1');
// Période de rafaichissement du cache autodoc
if (!defined('_PLUGINSPIP_TIMEOUT_AUTODOC'))

42
ezcheck/controles/gitea_inscription.yaml

@ -0,0 +1,42 @@
# 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_inscription_nom:>'
description: '<:contrib:type_controle_inscription_desc:>'
icone: 'auteur-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.
# 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
affichage:
squelette: 'prive/objets/liste/inscriptions'

3
ezcheck/dashboards/contrib.yaml

@ -25,5 +25,6 @@ groupes:
identifiant: 'gitea'
nom: '<:contrib:groupe_contrib_gitea_nom:>'
controles:
- 'gitea_orga_repos'
- 'gitea_inscription'
- 'gitea_user_recent'
- 'gitea_orga_repos'

42
formulaires/contribution_inscrire.html

@ -0,0 +1,42 @@
<div class="formulaire_spip formulaire_#FORM">
[<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>
[(#REM) declarer les hidden qui declencheront le service du formulaire
parametre : url d'action ]
#ACTION_FORMULAIRE{#ENV{action}}
<div class="editer-groupe">
<fieldset>
<legend><:contrib:inscription_forge_fieldset:></legend>
[(#SAISIE{input, username,
label=<:contrib:inscription_username_label:>,
obligatoire=oui,
size=40,
maxlength=40
})]
[(#SAISIE{email, email,
label=<:contrib:inscription_email_label:>,
obligatoire=oui,
size=100,
maxlength=100
})]
</fieldset>
<fieldset>
<legend><:contrib:inscription_charte_fieldset:></legend>
[(#SAISIE{case, charte_approuvee,
label_case=<:contrib:inscription_charte_approuvee_label:>,
})]
</fieldset>
</div>
[(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ]
<!--extra-->
<p class="boutons">
<input type="submit" name="save" class="submit" value="<:bouton_enregistrer:>" />
</p>
</div></form>
]
</div>

68
formulaires/contribution_inscrire.php

@ -0,0 +1,68 @@
<?php
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Formulaire de demande d'inscription au réseau de contribution de SPIP.
*
* @return array
* Tableau des champs postés pour l'affichage du formulaire.
*/
function formulaires_contribution_inscrire_charger_dist() {
// Ajout à la liste des valeurs l'identifiant de la page ou de l'objet concerné
$valeurs = array();
return $valeurs;
}
function formulaires_contribution_inscrire_verifier_dist() {
$erreurs = array();
$verifier = charger_fonction('verifier', 'inc/');
// Vérifier l'email
if ($erreur = $verifier(_request('email'), 'email')) {
$erreurs['email'] = $erreur;
}
if (!_request('charte_approuvee')) {
$erreurs['charte_approuvee'] = _T('contrib:inscription_charte_approuvee_erreur');
}
return $erreurs;
}
function formulaires_contribution_inscrire_traiter_dist() {
$retour = array();
// Récupération des saisies
$set['username'] = _request('username');
$set['email'] = _request('email');
$set['charte_approuvee'] = 'oui';
// Pour l'instant, on ouvre le compte pour commit et ticket.
$parametres = array(
'forge' => array(
'acces' => 'complet',
)
);
$set['parametres'] = serialize($parametres);
// On crée la demande avec l'état 'proposée'
include_spip('action/editer_objet');
$id = objet_inserer('inscription', null, $set);
if ($id) {
$retour['message_ok'] = _T('contrib:inscription_demande_ok_message');
} else {
$retour['message_erreur'] = _T('contrib:inscription_demande_nok_message');
}
return $retour;
}

24
lang/contrib_fr.php

@ -29,16 +29,18 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'groupe_contrib_rubrique_nom' => 'Rubriques',
'groupe_contrib_gitea_nom' => 'Forge',
// L
// I
'icone_voir_plugin' => 'Voir le plugin',
'icone_voir_rubrique_plugin' => 'Voir la rubrique de documentation',
// L
'type_article_label' => 'Type d\'article',
'type_article_utilisation_label' => 'documentation générale',
'type_article_conception_label' => 'documentation de conception',
'type_article_actualite_label' => 'article d\'actualité',
'inscription_form_titre' => 'Contribuer à SPIP',
'inscription_forge_fieldset' => 'Forge SPIP',
'inscription_charte_fieldset' => 'Charte SPIP',
'inscription_username_label' => 'Nom d\'utilisateur',
'inscription_email_label' => 'Adresse e-mail',
'inscription_charte_approuvee_label' => 'J\'approuve la <a href="https://www.spip.net/fr_article6431.html">Charte d’accueil de SPIP</a>',
'inscription_charte_approuvee_erreur' => 'Pour contribuer à SPIP, vous devez approuver la charte de fonctionnement.',
'inscription_demande_ok_message' => 'L\'inscription a bien été prise en compte. Un administrateur va s\'en occuper rapidement et vous recevrez un email pour vous avertir de la mise à disposition de votre compte.',
'inscription_demande_nok_message' => 'Erreur lors de l\'enregistrement de votre demande. Veuillez essayer ultérieurement.',
// R
'repo_organisation_titre' => 'Fichiers des repos des organisations Gitea',
'repo_organisation_sinon' => 'Aucun fichier disponible',
@ -48,7 +50,13 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'rubrique_plugin_synchroniser_texte_label' => 'Synchroniser les rubriques-plugin',
// T
'type_article_label' => 'Type d\'article',
'type_article_utilisation_label' => 'documentation générale',
'type_article_conception_label' => 'documentation de conception',
'type_article_actualite_label' => 'article d\'actualité',
'token_api_gitea_label' => 'Token d\'autorisation d\'accès à l\'API Gitea',
'type_controle_inscription_nom' => 'Inscriptions à Gitea',
'type_controle_inscription_desc' => 'Ce contrôle permet d\'identifier les demandes d\'inscription à la forge SPIP. Suivant leur statut, il est possible de les acquitter, de les refuser ou de les supprimer.',
'type_controle_article_prepa_nom' => 'Articles en cours de rédaction',
'type_controle_article_prepa_desc' => 'Les articles sont classés par année, des plus anciens aux plus récents.',
'type_controle_plugin_affectation_nom' => 'Affectations avec plugin invalide',

49
lang/inscription_fr.php

@ -0,0 +1,49 @@
<?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_inscription' => 'Ajouter cette demande d\'inscription',
// C
'champ_charte_approuvee_label' => 'Approbation de la charte',
'champ_date_label' => 'Date du statut',
'champ_email_label' => 'Adresse email',
'champ_parametres_label' => 'Paramètres de l\'inscription',
'champ_username_label' => 'Nom d\'utilisateur',
'confirmer_supprimer_inscription' => 'Confirmez-vous la suppression de cette demande d\'inscription ?',
// I
'icone_creer_inscription' => 'Créer une demande d\'inscription',
'icone_modifier_inscription' => 'Modifier cette demande d\'inscription',
'info_1_inscription' => 'Une demande d\'inscription',
'info_aucun_inscription' => 'Aucune demande d\'inscription',
'info_inscriptions_auteur' => 'Les demandes d\'inscription de cet auteur',
'info_nb_inscriptions' => '@nb@ demandes d\'inscription',
// R
'retirer_lien_inscription' => 'Retirer cette demande d\'inscription',
'retirer_tous_liens_inscriptions' => 'Retirer toutes les demandes d\'inscription',
// S
'supprimer_inscription' => 'Supprimer cette demande d\'inscription',
// T
'texte_ajouter_inscription' => 'Ajouter une demande d\'inscription',
'texte_changer_statut_inscription' => 'Cette demande d\'inscription est :',
'texte_creer_associer_inscription' => 'Créer et associer une demande d\'inscription',
'texte_definir_comme_traduction_inscription' => 'Cette demande d\'inscription est une traduction de la demande d\'inscription numéro :',
'titre_inscription' => 'Demande d\'inscription',
'titre_inscriptions' => 'Demandes d\'inscription',
'titre_inscriptions_rubrique' => 'Demandes d\'inscription de la rubrique',
'titre_langue_inscription' => 'Langue de cette demande d\'inscription',
'titre_logo_inscription' => 'Logo de cette demande d\'inscription',
'titre_objets_lies_inscription' => 'Liés à cette demande d\'inscription',
'titre_page_inscriptions' => 'Les demandes d\'inscription',
);

6
paquet.xml

@ -1,11 +1,11 @@
<paquet
prefix="contrib"
categorie="outil"
version="0.2.0"
version="0.3.0"
etat="test"
compatibilite="]3.2.999;4.0.*]"
logo="contrib_logo-64.png"
schema="1"
schema="2"
>
<nom>Contrib - Mécanismes et espace privé</nom>
@ -24,6 +24,8 @@
<necessite nom="ezcheck" compatibilite="[0.4.0;[" />
<pipeline nom="declarer_champs_extras" inclure="base/contrib_declarations.php" />
<pipeline nom="declarer_tables_objets_sql" inclure="base/contrib_declarations.php" />
<pipeline nom="declarer_tables_interfaces" inclure="base/contrib_declarations.php" />
<pipeline nom="autoriser" inclure="contrib_autorisations.php" />
<pipeline nom="formulaire_charger" inclure="contrib_pipelines.php" />
<pipeline nom="affiche_droite" inclure="contrib_pipelines.php" />

27
prive/objets/contenu/inscription.html

@ -0,0 +1,27 @@
<BOUCLE_inscription(INSCRIPTIONS){id_inscription}{statut?}>
[<div class="champ contenu_username[ (#USERNAME*|strlen|?{'',vide})]">
<div class="label"><:inscription:champ_username_label:/> : </div>
<span dir="#LANG_DIR" class="#EDIT{username} username">(#USERNAME)</span>
</div>]
[<div class="champ contenu_email[ (#EMAIL*|strlen|?{'',vide})]">
<div class="label"><:inscription:champ_email_label:/> : </div>
<span dir="#LANG_DIR" class="#EDIT{email} email">(#EMAIL)</span>
</div>]
[<div class="champ contenu_charte_approuvee[ (#CHARTE_APPROUVEE*|strlen|?{'',vide})]">
<div class="label"><:inscription:champ_charte_approuvee_label:/> : </div>
<span dir="#LANG_DIR" class="#EDIT{charte_approuvee} charte_approuvee">(#CHARTE_APPROUVEE)</span>
</div>]
[<div class="champ contenu_parametres[ (#PARAMETRES*|strlen|?{'',vide})]">
<div class="label"><:inscription:champ_parametres_label:/> : </div>
<span dir="#LANG_DIR" class="#EDIT{parametres} parametres">(#PARAMETRES)</span>
</div>]
[<div class="champ contenu_date[ (#DATE*|strlen|?{'',vide})]">
<div class="label"><:inscription:champ_date_label:/> : </div>
<span dir="#LANG_DIR" class="#EDIT{date} date">(#DATE)</span>
</div>]
</BOUCLE_inscription>

45
prive/objets/liste/inscriptions.html

@ -0,0 +1,45 @@
[(#SET{defaut_tri,#ARRAY{
date, -1
email, 1
id_inscription, -1,
points, -1
}})]<B_liste_inscriptions>
#ANCRE_PAGINATION
<div class="liste-objets inscriptions">
<table class="spip liste">
[<caption><strong class="caption">(#ENV*{titre,#GRAND_TOTAL|singulier_ou_pluriel{inscription:info_1_inscription,inscription:info_nb_inscriptions}})</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="date" scope="col">[(#TRI{date,<:inscription:champ_date_label:/>,ajax})]</th>
<th class="titre principale" scope="col">[(#TRI{username,<:inscription:champ_username_label:/>,ajax})]</th>
<th class="email" scope="col">[(#TRI{email,<:inscription:champ_email_label:/>,ajax})]</th>
<th class="id" scope="col">[(#TRI{id_inscription,<:info_numero_abbreviation:/>,ajax})]</th>
</tr>
</thead>
<tbody>
<BOUCLE_liste_inscriptions(INSCRIPTIONS){where?}{statut?}{recherche?}{tri #ENV{par, date},#GET{defaut_tri}}{pagination #ENV{nb,10}}>
<tr class="[(#COMPTEUR_BOUCLE|alterner{row_odd,row_even})]">
<td class="picto">[(#CHEMIN_IMAGE{inscription-16.png}|balise_img)]</td>
<td class="statut">[(#STATUT|puce_statut{inscription,#ID_INSCRIPTION})]</td>
<td class="date">[(#DATE|affdate_heure)]</td>
<td class="titre principale">
<a href="[(#ID_INSCRIPTION|generer_url_entite{inscription})]" title="<:info_numero_abbreviation|attribut_html:/> #ID_INSCRIPTION">
[(#RANG). ]#USERNAME
</a>
</td>
<td class="email">#EMAIL</td>
<td class="id">[(#AUTORISER{modifier,inscription,#ID_INSCRIPTION}|?{
<a href="[(#URL_ECRIRE{inscription_edit,id_inscription=#ID_INSCRIPTION})]">#ID_INSCRIPTION</a>,
#ID_INSCRIPTION
})]</td>
</tr>
</BOUCLE_liste_inscriptions>
</tbody>
</table>
[<nav role="navigation" class="pagination">(#PAGINATION{prive})</nav>]
</div>
</B_liste_inscriptions>[
<div class="liste-objets inscriptions caption-wrap"><strong class="caption">(#ENV*{sinon,''})</strong></div>
]<//B_liste_inscriptions>

56
prive/squelettes/contenu/inscription.html

@ -0,0 +1,56 @@
[(#AUTORISER{voir,inscription,#ID_INSCRIPTION}|sinon_interdire_acces)]
[(#SET{url_voir,#VAL{inscription}|objet_info{url_voir}})]
[(#SET{url_edit,#VAL{inscription}|objet_info{url_edit}})]
<BOUCLE_inscription(INSCRIPTIONS){id_inscription}{statut==.*}{si #ENV{exec}|=={#GET{url_voir}}}>
[(#BOITE_OUVRIR{[
[(#AUTORISER{modifier,inscription,#ID_INSCRIPTION})
[(#ID_INSCRIPTION|afficher_qui_edite{inscription}|non)
[(#URL_ECRIRE{#GET{url_edit},id_inscription=#ID_INSCRIPTION}|icone_verticale{<:inscription:icone_modifier_inscription:/>,inscription,edit,right ajax preload})]
]
[(#ID_INSCRIPTION|afficher_qui_edite{inscription}|oui)
[(#URL_ECRIRE{#GET{url_edit},id_inscription=#ID_INSCRIPTION}|icone_verticale{#ID_INSCRIPTION|afficher_qui_edite{inscription},warning-24,'',right edition_deja ajax preload})]
]
]
<h1>[(#RANG). ](#|sinon{<:info_sans_titre:/>})[(#CHEMIN_IMAGE{inscription-24.png}|balise_img{inscription,cadre-icone})]</h1>
],simple fiche_objet})]
<div class="ajax">
#FORMULAIRE_DATER{inscription,#ID_INSCRIPTION}
</div>
<!--affiche_milieu-->
<div id="wysiwyg">
<INCLURE{fond=prive/objets/contenu/inscription,id=#ID_INSCRIPTION,id_inscription=#ID_INSCRIPTION,virtuel=oui,ajax=wysiwyg,wysiwyg=1}>
</div>
<div class="nettoyeur"></div>
[(#AUTORISER{modifier,inscription,#ID_INSCRIPTION})
[(#ID_INSCRIPTION|afficher_qui_edite{inscription}|non)
[(#URL_ECRIRE{#GET{url_edit},id_inscription=#ID_INSCRIPTION}|icone_verticale{<:inscription:icone_modifier_inscription:/>,inscription,edit,right ajax preload})]
]
[(#ID_INSCRIPTION|afficher_qui_edite{inscription}|oui)
[(#URL_ECRIRE{#GET{url_edit},id_inscription=#ID_INSCRIPTION}|icone_verticale{#ID_INSCRIPTION|afficher_qui_edite{inscription},warning-24,'',right edition_deja ajax preload})]
]
]
#PIPELINE{afficher_complement_objet,#ARRAY{args,#ARRAY{type,inscription,id,#ID_INSCRIPTION},data,'<div class="nettoyeur"></div>'}}
#BOITE_FERMER
#SET{enfants,''}
[(#VAL{prive/objets/contenu/inscription-enfants}|trouver_fond|oui)
[(#SET{enfants,[(#INCLURE{fond=prive/objets/contenu/inscription-enfants,id_inscription,env})]})]
]
[(#PIPELINE{affiche_enfants,[(#ARRAY{args,#ARRAY{exec,inscription,id_inscription,#ID_INSCRIPTION,objet,inscription,id_objet,#ID_INSCRIPTION},data,#GET{enfants}})]})]
[(#CONST{_AJAX}|oui)
<script type="text/javascript">/*<!\\[CDATA\\[*/reloadExecPage('#ENV{exec}','#navigation,#chemin,#extra');/*\\]\\]>*/</script>
]
</BOUCLE_inscription>
[(#ENV**{exec}|=={#GET{url_edit}}|?{#INCLURE{fond=prive/squelettes/contenu/#GET{url_edit},redirect='',env,retourajax=oui},#REM|sinon_interdire_acces})]
<//B_inscription>

7
prive/squelettes/contenu/inscriptions.html

@ -0,0 +1,7 @@
[(#AUTORISER{voir,_inscriptions}|sinon_interdire_acces)]
<h1 class="grostitre"><:inscription:titre_page_inscriptions:/></h1>
#FORMULAIRE_RECHERCHE_ECRIRE{#SELF,ajax}
<div class="nettoyeur"></div>
<INCLURE{fond=prive/objets/liste/inscriptions, env, ajax, sinon=<:inscription:info_aucun_inscription:/>}>
Loading…
Cancel
Save