diff --git a/module/suscribe/changes.md b/module/suscribe/changes.md index bc857a9..e69de29 100644 --- a/module/suscribe/changes.md +++ b/module/suscribe/changes.md @@ -1,6 +0,0 @@ -# Version 1.4 -- Masque le code de vérification -# Version 1.3 -- Remplacement de flatpick par date -# Version 1.2 -- Compatiblité PHP 8.2 \ No newline at end of file diff --git a/module/suscribe/enum.json b/module/suscribe/enum.json index d71c1fe..5a49588 100644 --- a/module/suscribe/enum.json +++ b/module/suscribe/enum.json @@ -1 +1 @@ -{"name":"registration","realName":"Auto-Inscription","version":"1.2","update":"0.0","delete":true,"dataDirectory":""} \ No newline at end of file +suscribeAuto-Inscription2.0test0.01 \ No newline at end of file diff --git a/module/suscribe/suscribe.php b/module/suscribe/suscribe.php index 1efbcbc..be8b6c2 100755 --- a/module/suscribe/suscribe.php +++ b/module/suscribe/suscribe.php @@ -15,7 +15,7 @@ class suscribe extends common { - const VERSION = '1.4'; + const VERSION = '2.0test3'; const REALNAME = 'Auto-Inscription'; const DELETE = true; const UPDATE = '0.0'; @@ -27,21 +27,25 @@ class suscribe extends common const STATUS_ACCOUNT_VALID = 3; public static $statusGroups = [ self::STATUS_EMAIL_AWAITING => 'Email non confirmé', - self::STATUS_EMAIL_VALID => 'Email confimé', - self::STATUS_ACCOUNT_AWAITING => 'Email validé, en attente de validation', - self::STATUS_ACCOUNT_VALID => 'Email validé, compte activé', + self::STATUS_EMAIL_VALID => 'Email valide', + self::STATUS_ACCOUNT_AWAITING => 'Email valide, en attente de confirmation', + self::STATUS_ACCOUNT_VALID => 'Email valide, compte activé', ]; public static $actions = [ 'index' => self::GROUP_VISITOR, 'validate' => self::GROUP_VISITOR, 'config' => self::GROUP_EDITOR, - 'user' => self::GROUP_EDITOR, + 'users' => self::GROUP_EDITOR, 'delete' => self::GROUP_EDITOR, 'edit' => self::GROUP_EDITOR ]; - + public static $layout = [ + 'inputRowContainer1' => 'Un élément par ligne', + 'inputRowContainer2' => 'Deux éléments par ligne', + 'inputRowContainer4' => 'Quatre éléments par ligne', + ]; public static $timeLimit = [ 2 => '2 minutes', @@ -51,21 +55,23 @@ class suscribe extends common public static $users = []; - + public static $groups = []; + public static $userProfils = []; + public static $userProfilsComments = []; /** * Liste des utilisateurs en attente */ - public function user() + public function users() { - $userIdsFirstnames = helper::arraycollumn($this->getData(['module', $this->getUrl(0), 'user']), 'firstname'); + $userIdsFirstnames = helper::arraycollumn($this->getData(['module', $this->getUrl(0), 'users']), 'firstname'); ksort($userIdsFirstnames); foreach ($userIdsFirstnames as $userId => $userFirstname) { self::$users[] = [ $userId, - $userFirstname . ' ' . $this->getData(['module', $this->getUrl(0), 'user', $userId, 'lastname']), - self::$statusGroups[$this->getData(['module', $this->getUrl(0), 'user', $userId, 'status'])], - helper::dateUTF8(date('Y-m-d G:i'), $this->getData(['module', $this->getUrl(0), 'user', $userId, 'timer'])), + $userFirstname . ' ' . $this->getData(['module', $this->getUrl(0), 'users', $userId, 'lastname']), + self::$statusGroups[$this->getData(['module', $this->getUrl(0), 'users', $userId, 'status'])], + helper::dateUTF8(date('Y-m-d G:i'), $this->getData(['module', $this->getUrl(0), 'users', $userId, 'timer'])), template::button('registrationUserEdit' . $userId, [ 'href' => helper::baseUrl() . $this->getUrl(0) . '/edit/' . $userId, 'value' => template::ico('pencil') @@ -79,8 +85,8 @@ class suscribe extends common } // Valeurs en sortie $this->addOutput([ - 'title' => 'Demandes d\'inscriptions', - 'view' => 'user' + 'title' => 'Inscription en attente', + 'view' => 'users' ]); } @@ -101,7 +107,7 @@ class suscribe extends common // Accès refusé if ( // L'utilisateur n'existe pas - $this->getData(['module', $this->getUrl(0), 'user']) === null + $this->getData(['module', $this->getUrl(0), 'users', $this->getUrl(2)]) === null // Droit d'édition and ( // Impossible de s'auto-éditer @@ -125,45 +131,69 @@ class suscribe extends common $this->getUser('permission', __CLASS__, __FUNCTION__) === true && $this->isPost() ) { - // Modification du groupe + // Créer le user dans la base $this->setData([ - 'module', - $this->getUrl(0), 'user', + $this->getUrl(2), [ - 'firstname' => $this->getData(['module', $this->getUrl(0), 'user', 'firstname']), + 'firstname' => $this->getData(['module', $this->getUrl(0), 'users', $this->getUrl(2), 'firstname']), 'forgot' => 0, 'group' => $this->getInput('registrationUserEditGroup', helper::FILTER_INT), - 'lastname' => $this->getData(['module', $this->getUrl(0), 'user', 'lastname']), - 'mail' => $this->getData(['module', $this->getUrl(0), 'user', 'mail']), - 'password' => $this->getData(['module', $this->getUrl(0), 'user', 'password']), - 'connectFail' => $this->getData(['module', $this->getUrl(0), 'user', 'connectFail']), - 'connectTimeout' => $this->getData(['module', $this->getUrl(0), 'user', 'connectTimeout']), - 'accessUrl' => $this->getData(['module', $this->getUrl(0), 'user', 'accessUrl']), - 'accessTimer' => $this->getData(['module', $this->getUrl(0), 'user', 'accessTimer']), - 'accessCsrf' => $this->getData(['module', $this->getUrl(0), 'user', 'accessCsrf']) + // Le profil vaut 0 pour les amdins et 1 pour les autres membres, profil par défaut. + 'profil' => $this->getInput('registrationUserEditGroup', helper::FILTER_INT) === self::GROUP_ADMIN + ? 0 : 1, + 'lastname' => $this->getData(['module', $this->getUrl(0), 'users', $this->getUrl(2), 'lastname']), + 'mail' => $this->getData(['module', $this->getUrl(0), 'users', $this->getUrl(2), 'mail']), + 'password' => $this->getData(['module', $this->getUrl(0), 'users', $this->getUrl(2), 'password']), + 'connectFail' => $this->getData(['module', $this->getUrl(0), 'users', $this->getUrl(2), 'connectFail']), + 'connectTimeout' => $this->getData(['module', $this->getUrl(0), 'users', $this->getUrl(2), 'connectTimeout']), + 'accessUrl' => $this->getData(['module', $this->getUrl(0), 'users', $this->getUrl(2), 'accessUrl']), + 'accessTimer' => $this->getData(['module', $this->getUrl(0), 'users', $this->getUrl(2), 'accessTimer']), + 'accessCsrf' => $this->getData(['module', $this->getUrl(0), 'users', $this->getUrl(2), 'accessCsrf']) ] ]); // Notifier le user uniquement si le groupe est membre au moins membre if ($this->getInput('registrationUserEditGroup') >= 1) { $this->sendMail( - $this->getData(['module', $this->getUrl(0), 'user', 'mail']), + $this->getData(['module', $this->getUrl(0), 'users', 'mail']), 'Approbation de l\'inscription', '

' . $this->getdata(['module', $this->getUrl(0), 'config', 'mailValidateContent']) . '

', null, $this->getData(['config', 'smtp', 'from']) ); } + // Supprimer le user de la base temporaire, + $this->deleteData(['module', $this->getUrl(0), 'users', $this->getUrl(2)]); // Valeurs en sortie $this->addOutput([ - 'redirect' => helper::baseUrl() . $this->getUrl(0) . '/user', + 'redirect' => helper::baseUrl() . $this->getUrl(0) . '/users', 'notification' => 'Modifications enregistrées', 'state' => true ]); } + // Changement temporaire de libellé du groupe 0 + self::$groups = self::$groupEdits; + self::$groups[self::GROUP_BANNED] = 'En attente d\'approbation'; + + // Profils disponibles + foreach ($this->getData(['profil']) as $profilId => $profilData) { + if ($profilId < self::GROUP_MEMBER) { + continue; + } + if ($profilId === self::GROUP_ADMIN) { + self::$userProfils[$profilId][self::GROUP_ADMIN] = $profilData['name']; + self::$userProfilsComments[$profilId][self::GROUP_ADMIN] = $profilData['comment']; + continue; + } + foreach ($profilData as $key => $value) { + self::$userProfils[$profilId][$key] = $profilData[$key]['name']; + self::$userProfilsComments[$profilId][$key] = $profilData[$key]['name'] . ' : ' . $profilData[$key]['comment']; + } + } + // Valeurs en sortie $this->addOutput([ - 'title' => $this->getData(['module', $this->getUrl(0), 'user', 'firstname']) . ' ' . $this->getData(['user', $this->getUrl(0), 'lastname']), + 'title' => $this->getData(['module', $this->getUrl(0), 'users', 'firstname']) . ' ' . $this->getData(['user', $this->getUrl(0), 'lastname']), 'view' => 'edit' ]); } @@ -178,7 +208,7 @@ class suscribe extends common // Accès refusé if ( // L'utilisateur n'existe pas - $this->getData(['module', $this->getUrl(0), 'user', $this->getUrl(2)]) === null + $this->getData(['module', $this->getUrl(0), 'users', $this->getUrl(2)]) === null // Groupe insuffisant && $this->getUser('permission', __CLASS__, __FUNCTION__) !== true ) { @@ -189,10 +219,10 @@ class suscribe extends common } // Suppression else { - $this->deleteData(['module', $this->getUrl(0), 'user', $this->getUrl(2)]); + $this->deleteData(['module', $this->getUrl(0), 'users', $this->getUrl(2)]); // Valeurs en sortie $this->addOutput([ - 'redirect' => helper::baseUrl() . $this->getUrl(0) . '/user', + 'redirect' => helper::baseUrl() . $this->getUrl(0) . '/users', 'notification' => 'Utilisateur supprimé', 'state' => true ]); @@ -212,23 +242,32 @@ class suscribe extends common */ // Soumission du formulaire if ($this->isPost()) { + // Le domaine saisi est invalide si un filtre existe + if ( + !empty($this->getData(['module', $this->getUrl(0), 'config', 'filter'])) + ) { + // Contrôler la validité du domaine saisi parmi les domaines valides + $email_to_check = $this->getInput('registrationAddMail', helper::FILTER_MAIL, true); + $valid_domains[] = strpos($this->getData(['module', $this->getUrl(0), 'config', 'filter']), ';') === false + ? $this->getData(['module', $this->getUrl(0), 'config', 'filter']) + : explode(';', $this->getData(['module', $this->getUrl(0), 'config', 'filter'])); + if (in_array(explode('@', $email_to_check)[1], $valid_domains) === false) { + self::$inputNotices['registrationAddMail'] = 'Ce domaine n\'est pas autorisé'; + } + } // Drapeau de contrôle des données saisies. $check = true; + $sentMailtoUser = false; // L'identifiant d'utilisateur est indisponible $userId = $this->getInput('registrationAddId', helper::FILTER_ID, true); - if ($this->getData(['module', $userId])) { - self::$inputNotices['registrationAddId'] = 'Identifiant déjà enregistré'; + if (is_array($this->getData(['user', $userId]))) { + self::$inputNotices['registrationAddId'] = 'Identifiant invalide'; $check = false; } - // Double vérification pour le mot de passe - if ($this->getInput('registrationAddPassword', helper::FILTER_STRING_SHORT, true) !== $this->getInput('registrationAddConfirmPassword', helper::FILTER_STRING_SHORT, true)) { - self::$inputNotices['registrationAddConfirmPassword'] = 'Les mots de passe ne sont pas identiques'; - $check = false; - } - // Le mail existe déjà + // Le compte existe déjà foreach ($this->getData(['user']) as $usersId => $user) { if ($user['mail'] === $this->getInput('registrationAddMail', helper::FILTER_MAIL, true)) { - self::$inputNotices['registrationAddMail'] = 'Adresse de courriel déjà enregistrée'; + self::$inputNotices['registrationAddMail'] = 'Vous ne pouvez pas utilisez cette boite mail'; $check = false; break; } @@ -240,26 +279,24 @@ class suscribe extends common // Pas de nom saisi if ( empty($userFirstname) || - empty($userLastname) || - empty($this->getInput('registrationAddPassword', helper::FILTER_STRING_SHORT, true)) || - empty($this->getInput('registrationAddConfirmPassword', helper::FILTER_STRING_SHORT, true)) + empty($userLastname) ) { $check = false; } // Si tout est ok if ($check === true) { - // Enregistrement du compte dans les donénes du module + // Enregistrement du compte dans les données du module $auth = uniqid('', true); $this->setData([ 'module', $this->getUrl(0), - 'user', + 'users', $userId, [ 'firstname' => $userFirstname, 'lastname' => $userLastname, 'mail' => $userMail, - 'password' => $this->getInput('registrationAddPassword', helper::FILTER_PASSWORD, true), + 'password' => '', // pas de groupe afin de le différencier dans la liste des users 'timer' => time(), 'auth' => $auth, @@ -275,14 +312,14 @@ class suscribe extends common } } // Envoi du mail à l'administrateur - if ($to) { + if ($check && is_array($to)) { $this->sendMail( $to, 'Auto-inscription sur le site ' . $this->getData(['config', 'title']), - '

Un nouveau membre s\'est inscrit, son email est en attentde validation

' . + '

Un nouveau membre s\'est inscrit, son email est en attente de validation

' . '

Identifiant du compte : ' . $userId . ' (' . $userFirstname . ' ' . $userLastname . ')
' . 'Email : ' . $userMail . '

' . - 'Validation de l\'inscription', + 'Validation de l\'inscription', null, $this->getData(['config', 'smtp', 'from']) ); @@ -292,8 +329,7 @@ class suscribe extends common // forger le lien de vérification $validateLink = helper::baseUrl(true) . $this->getUrl() . '/validate/' . $userId . '/' . $auth; // Envoi - $sentMailtoUser = false; - if ($check === true) { + if ($check) { $sentMailtoUser = $this->sendMail( $userMail, 'Confirmation de votre inscription', @@ -328,63 +364,81 @@ class suscribe extends common */ public function validate() { - // Vérifie la session + l'id + le timer - $check = true; - $notification = 'Bienvenue sur le site' . $this->getData(['config', 'title']); - $userId = $this->getUrl(2); - $auth = $this->getUrl(3); - // la validité du lien est dépassé - if (time() - $this->getData(['module', $this->getUrl(0), 'user', $userId, 'timer']) <= (60 * $this->getdata(['module', $this->getUrl(0), 'config', 'pageTimeOut']))) { - $check = false; - $notification = 'La validité est dépassée'; - } - - // La clé est incorrecte ou le compte n'est pas en attente de validation - if ( - $check - && $auth !== $this->getData(['module', $this->getUrl(0), 'user', $userId, 'auth']) - && $this->getData(['module', $this->getUrl(0), 'user', $userId, 'status']) !== self::STATUS_EMAIL_AWAITING - ) { - $check = false; - $notification = 'L\adresse transmise est incorrecte !'; - } - - if ($check) { + // Soumission du formulaire + if ($this->isPost()) { + // Vérifie la session + l'id + le timer + $check = true; + $notification = 'Bienvenue sur le site ' . $this->getData(['config', 'title']); + $userId = $this->getUrl(2); + $auth = $this->getUrl(3); + // la validité du lien est dépassé if ( - // Pas d'approbation par un administrateur - $this->getData(['module', $this->getUrl(0), 'config', 'approval']) === false + (time() - $this->getData(['module', $this->getUrl(0), 'users', $userId, 'timer'])) + >= $this->getdata(['module', $this->getUrl(0), 'config', 'timeOut']) ) { - // Créer le compte - $this->setData([ - 'user', - $userId, - [ - 'firstname' => $this->getData(['module', $this->getUrl(0), 'user', $userId, 'firstname']), - 'lastname' => $this->getData(['module', $this->getUrl(0), 'user', $userId, 'lastname']), - 'mail' => $this->getData(['module', $this->getUrl(0), 'user', $userId, 'mail']), - 'password' => $this->getData(['module', $this->getUrl(0), 'user', $userId, 'password']), - 'group' => self::GROUP_MEMBER, - 'profil' => 1, - 'forgot' => 0, - 'pseudo' => $userId, - 'signature' => 1, - 'language' => self::$siteContent, - ] - ]); - // Modifier le statut dans le module - $this->setData(['module', $this->getUrl(0), 'user', $userId, 'status', self::STATUS_ACCOUNT_VALID]); - $notification = 'Votre inscription est confirmée'; - } else { - // Approbation nécessaire - $this->setData(['module', $this->getUrl(0), 'user', $userId, 'status', self::STATUS_ACCOUNT_AWAITING]); - $notification = 'L\'inscription doit être approuvée par un administrateur'; + $check = false; + $notification = 'La validité du lien est dépassée'; } + // La clé est incorrecte ou le compte n'est pas en attente de validation + if ( + $check + && $auth !== $this->getData(['module', $this->getUrl(0), 'users', $userId, 'auth']) + && $this->getData(['module', $this->getUrl(0), 'users', $userId, 'status']) !== self::STATUS_EMAIL_AWAITING + ) { + $check = false; + $notification = 'Données incorrectes !'; + } + // Double vérification pour le mot de passe + if ( + $check + && $this->getInput('registrationValidPassword', helper::FILTER_STRING_SHORT, true) !== $this->getInput('registrationValidConfirmPassword', helper::FILTER_STRING_SHORT, true) + ) { + self::$inputNotices['registrationAddConfirmPassword'] = 'Les mots de passe ne sont pas identiques'; + $check = false; + } + + if ($check) { + if ( + // Pas d'approbation par un administrateur + $this->getData(['module', $this->getUrl(0), 'config', 'approval']) === false + ) { + // Créer le compte + $this->setData([ + 'user', + $userId, + [ + 'firstname' => $this->getData(['module', $this->getUrl(0), 'users', $userId, 'firstname']), + 'lastname' => $this->getData(['module', $this->getUrl(0), 'users', $userId, 'lastname']), + 'mail' => $this->getData(['module', $this->getUrl(0), 'users', $userId, 'mail']), + 'password' => $this->getInput('registrationValidPassword', helper::FILTER_PASSWORD, true), + 'group' => self::GROUP_MEMBER, + 'profil' => 1, + 'forgot' => 0, + 'pseudo' => $userId, + 'signature' => 1, + 'language' => self::$siteContent, + ] + ]); + // Modifier le statut dans le module + $this->deleteData(['module', $this->getUrl(0), 'users', $userId]); + $notification = 'Votre inscription est confirmée'; + } else { + // Approbation nécessaire + $this->setData(['module', $this->getUrl(0), 'users', $userId, 'status', self::STATUS_ACCOUNT_AWAITING]); + $notification = 'L\'inscription doit être approuvée par un administrateur'; + } + } + // Valeurs en sortie + $this->addOutput([ + 'redirect' => $check ? helper::baseUrl() . $this->getdata(['module', $this->getUrl(0), 'config', 'pageSuccess']) : helper::baseUrl() . $this->getdata(['module', $this->getUrl(0), 'config', 'pageError']), + 'notification' => $notification, + 'state' => $check + ]); } // Valeurs en sortie $this->addOutput([ - 'redirect' => $check ? helper::baseUrl() . $this->getdata(['module', $this->getUrl(0), 'config', 'pageSuccess']) : helper::baseUrl() . $this->getdata(['module', $this->getUrl(0), 'config', 'pageError']), - 'notificaton' => $notification, - 'state' => $check + 'title' => 'Saisie du mot de passe', + 'view' => 'validate' ]); } @@ -398,18 +452,21 @@ class suscribe extends common $this->getUser('permission', __CLASS__, __FUNCTION__) === true && $this->isPost() ) { + // Lire les options et les enregistrer $this->setData([ 'module', $this->getUrl(0), 'config', [ - 'timeOut' => $this->getInput('registrationConfigTimeOut', helper::FILTER_INT), + 'timeOut' => $this->getInput('registrationConfigTimeOut', helper::FILTER_INT) * 60, 'pageSuccess' => $this->getInput('registrationConfigSuccess'), 'pageError' => $this->getInput('registrationConfigError'), 'approval' => $this->getInput('registrationConfigState', helper::FILTER_BOOLEAN), 'mailRegisterContent' => $this->getInput('registrationconfigMailRegisterContent', null, true), 'mailValidateContent' => $this->getInput('registrationconfigMailValidateContent', null, true), + 'layout' => $this->getInput('registrationConfigLayout'), + 'filter' => $this->getInput('registrationConfigFilter', helper::FILTER_STRING_SHORT) ] ]); $this->addOutput([ diff --git a/module/suscribe/view/config/config.php b/module/suscribe/view/config/config.php index 3d11892..061e7cc 100755 --- a/module/suscribe/view/config/config.php +++ b/module/suscribe/view/config/config.php @@ -1,24 +1,22 @@ -
-
+
'', - 'href' => helper::baseUrl() .'page/edit/' . $this->getUrl(0) . '/' . self::$siteContent, - 'ico' => 'left', - 'value' => 'Retour' + 'class' => 'buttonGrey', + 'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(0) . '/' . self::$siteContent, + 'value' => template::ico('left') ]); ?>
-
+
helper::baseUrl() .$this->getUrl(0) . '/user' , + 'href' => helper::baseUrl() . $this->getUrl(0) . '/users', 'value' => 'Inscriptions' ]); ?>
- 'green' - ]); ?> + 'green' + ]); ?>
@@ -26,55 +24,75 @@

Paramètres

-
- 'Validité du lien', - 'selected' => $this->getData(['module',$this->getUrl(0),'config','timeOut']) +
+ 'Disposition', + 'selected' => $this->getData(['module', $this->getUrl(0), 'config', 'layout']) + ]); ?> +
+
+ getData(['page']), 'title', 'SORT_ASC'), [ + 'label' => 'Redirection après confirmation', + 'selected' => $this->getData(['module', $this->getUrl(0), 'config', 'pageSuccess']) + ]); ?> +
+
+ getData(['page']), 'title', 'SORT_ASC'), [ + 'label' => 'Redirection après erreur', + 'selected' => $this->getData(['module', $this->getUrl(0), 'config', 'pageError']) ]); ?>
+
+
+
+
+
+
+

Communication

- getData(['page']), 'title', 'SORT_ASC'), [ - 'label' => 'Redirection après confirmation', - 'selected' => $this->getData(['module',$this->getUrl(0),'config','pageSuccess']) + 'Validité du lien', + 'selected' => $this->getData(['module', $this->getUrl(0), 'config', 'timeOut']) / 60 ]); ?>
- getData(['page']), 'title', 'SORT_ASC'), [ - 'label' => 'Redirection après erreur', - 'selected' => $this->getData(['module',$this->getUrl(0),'config','pageError']) - ]); ?> + 'Domaines acceptés', + 'value' => $this->getData(['module', $this->getUrl(0), 'config', 'filter']), + 'help' => 'Champ vide sinon limitation à des domaines spécifiques, le séparateur est ;' + ]); ?>
Confirmez votre inscription en cliquant sur ce lien dans les ... minutes.

'; ?> 'Corps du mail de confirmation', - 'value' => !empty($this->getData(['module',$this->getUrl(0),'config','mailRegisterContent'])) ? $this->getData(['module',$this->getUrl(0),'config','mailRegisterContent']) : $messageDefault, - 'class' => 'editorWysiwyg', - 'help' => 'Précisez la durée de validité. Le lien sera inséré après ces explications.' - ]); ?> + 'label' => 'Corps du mail de confirmation', + 'value' => !empty($this->getData(['module', $this->getUrl(0), 'config', 'mailRegisterContent'])) ? $this->getData(['module', $this->getUrl(0), 'config', 'mailRegisterContent']) : $messageDefault, + 'class' => 'editorWysiwyg', + 'help' => 'Précisez la durée de validité. Le lien sera inséré après ces explications.' + ]); ?>
$this->getData(['module',$this->getUrl(0),'config','approval']), + 'checked' => $this->getData(['module', $this->getUrl(0), 'config', 'approval']), 'help' => 'Les comptes sont inactifs tant que les inscriptions ne sont pas approuvées par un administrateur.', 'check' => true - ]); ?> + ]); ?>
- Votre inscription a été approuvée par un administrateur.

'; ?> + Votre inscription a été approuvée par un administrateur.

'; ?> 'Corps du mail d\'approbation', - 'value' =>!empty($this->getData(['module',$this->getUrl(0),'config','mailValidateContent'])) ? $this->getData(['module',$this->getUrl(0),'config','mailValidateContent']) : $messageDefault, + 'value' => !empty($this->getData(['module', $this->getUrl(0), 'config', 'mailValidateContent'])) ? $this->getData(['module', $this->getUrl(0), 'config', 'mailValidateContent']) : $messageDefault, 'class' => 'editorWysiwyg' - ]); ?> + ]); ?>
@@ -82,4 +100,4 @@
Version n° -
+
\ No newline at end of file diff --git a/module/suscribe/view/edit/edit.css b/module/suscribe/view/edit/edit.css index 85db3ce..0a71300 100755 --- a/module/suscribe/view/edit/edit.css +++ b/module/suscribe/view/edit/edit.css @@ -14,4 +14,8 @@ /** NE PAS EFFACER * admin.css -*/ \ No newline at end of file +*/ +#registrationUserEditProfil1Wrapper, +#registrationUserEditProfil2Wrapper { + padding: 0; +} diff --git a/module/suscribe/view/edit/edit.js.php b/module/suscribe/view/edit/edit.js.php index 05b585a..20080fb 100755 --- a/module/suscribe/view/edit/edit.js.php +++ b/module/suscribe/view/edit/edit.js.php @@ -13,7 +13,19 @@ /** * Droits des groupes */ -$("#registrationUserEditGroup").on("change", function() { - $(".registrationUserEditGroupDescription").hide(); - $("#registrationUserEditGroupDescription" + $(this).val()).show(); -}).trigger("change"); + + +$(document).ready(function () { + $(".registrationUserEditGroupProfil").hide(); + $(".registrationUserCommentProfil").hide(); + $("#registrationUserEditGroupProfil" + $("#registrationUserEditGroup").val()).show(); + $("#registrationUserCommentProfil" + $("#registrationUserEditGroup").val()).show(); + + $("#registrationUserEditGroup").on("change", function () { + $(".registrationUserEditGroupProfil").hide(); + $(".registrationUserCommentProfil").hide(); + $("#registrationUserEditGroupProfil" + $(this).val()).show(); + $("#registrationUserCommentProfil" + $(this).val()).show(); + }); + +}); \ No newline at end of file diff --git a/module/suscribe/view/edit/edit.php b/module/suscribe/view/edit/edit.php index 07c8102..9815e1d 100755 --- a/module/suscribe/view/edit/edit.php +++ b/module/suscribe/view/edit/edit.php @@ -1,111 +1,135 @@ -
-
- getUrl(3)): ?> - '', - 'href' => helper::baseUrl() . $this->geturl(0) . '/user', - 'ico' => 'left', - 'value' => 'Retour' - ]); ?> - - '', - 'href' => helper::baseUrl(false), - 'ico' => 'home', - 'value' => 'Accueil' - ]); ?> - -
-
- 'green' - ]); ?> -
+
+
+ 'buttonGrey', + 'href' => helper::baseUrl() . $this->geturl(0) . '/users', + 'value' => template::ico('left') + ]); ?>
-
-
-
-

Confirmation de l'inscription

-
-
-
-
- 'off', - 'label' => 'Prénom', - 'value' => $this->getData(['user', $this->getUrl(2), 'firstname']), - 'disabled'=> true - ]); ?> -
-
- 'off', - 'label' => 'Nom', - 'value' => $this->getData(['user', $this->getUrl(2), 'lastname']), - 'disabled'=> true - ]); ?> -
+
+ 'green' + ]); ?> +
+
+
+
+
+

Confirmation de l'inscription

+
+
+
+
+ 'off', + 'label' => 'Prénom', + 'value' => $this->getData(['module', $this->getUrl(0), 'users', $this->getUrl(2), 'firstname']), + 'disabled' => true + ]); ?>
-
-
- 'off', - 'label' => 'Adresse électronique', - 'value' => $this->getData(['user', $this->getUrl(2), 'mail']), - 'disabled'=> true - ]); ?> -
-
-
-
- getData(['user', $this->getUrl(2), 'group'])];?> - 'État de l\'inscription', - 'value' => $status, - 'disabled'=> true, - 'help' => 'En attente : le mail n\'a pas encore été validé
Email validé : approbation nécessaire.' - ]); ?> -
-
- 'Date', - 'value' => helper::dateUTF8(date('Y-m-d G:i'), $this->getData(['user', $userId, 'timer'])), - 'disabled'=> true - ]); ?> -
+
+ 'off', + 'label' => 'Nom', + 'value' => $this->getData(['module', $this->getUrl(0), 'users', $this->getUrl(2), 'lastname']), + 'disabled' => true + ]); ?>
- -
- getUser('group') === self::GROUP_ADMIN): ?> - ($this->getUrl(2) === $this->getUser('id')), - 'help' => ($this->getUrl(2) === $this->getUser('id') ? 'Impossible de modifier votre propre groupe.' : ''), - 'label' => 'Groupe (Banni : en attente d\'approbation)', - 'selected' => $this->getData(['user', $this->getUrl(2), 'group']) +
+
+ 'off', + 'label' => 'Adresse électronique', + 'value' => $this->getData(['module', $this->getUrl(0), 'users', $this->getUrl(2), 'mail']), + 'disabled' => true ]); ?> - Autorisations : -
    -
  • Accès aux pages privées membres
  • -
-
    -
  • Accès aux pages privées membres et éditeurs
  • -
  • Ajout - Édition - Suppression de pages
  • -
  • Ajout - Édition - Suppression de fichiers
  • -
-
    -
  • Accès à toutes les pages privées
  • -
  • Ajout - Édition - Suppression de pages
  • -
  • Ajout - Édition - Suppression de fichiers
  • -
  • Ajout / Édition / Suppression d'utilisateurs
  • -
  • Configuration du site
  • -
  • Personnalisation du thème
  • -
- +
+
+
+
+ 'État de l\'inscription', + 'value' => $module::$statusGroups[$this->getData(['module', $this->getUrl(0), 'users', $this->getUrl(2), 'status'])], + 'disabled' => true, + 'help' => 'En attente : le mail n\'a pas encore été validé
Email validé : approbation nécessaire.' + ]); ?> +
+
+ 'Date de demande', + 'value' => helper::dateUTF8(date('Y-m-d G:i'), $this->getData(['module', $this->getUrl(0), 'users', $this->getUrl(2), 'timer'])), + 'disabled' => true + ]); ?> +
+
+
+
+
+
+ getUser('group') === self::GROUP_ADMIN): ?> + ($this->getUrl(2) === $this->getUser('id')), + 'help' => ($this->getUrl(2) === $this->getUser('id') ? 'Impossible de modifier votre propre groupe.' : ''), + 'label' => 'Groupe', + 'selected' => $this->getData(['module', $this->getUrl(0), 'registrationUsers', $this->getUrl(2), 'status']) + ]); ?> + +
+
+
+ 'Profil', + 'selected' => $this->getData(['user', $this->getUrl(2), 'profil']), + 'disabled' => $this->getUser('group') !== self::GROUP_ADMIN, + ]); ?> +
+
+ 'Profil', + 'selected' => $this->getData(['user', $this->getUrl(2), 'profil']), + 'disabled' => $this->getUser('group') !== self::GROUP_ADMIN, + ]); ?> +
+
+
+
+
+ 'Commentaire', + 'value' => implode("\n", $module::$userProfilsComments[self::GROUP_MEMBER]), + 'readonly' => true, + + ]); + ?> +
+
+ 'Commentaire', + 'value' => implode("\n", $module::$userProfilsComments[self::GROUP_EDITOR]), + 'readonly' => true, + + ]); + ?> +
+
+ 'Commentaire', + 'value' => implode("\n", $module::$userProfilsComments[self::GROUP_ADMIN]), + 'readonly' => true, + ]); + ?> +
+
\ No newline at end of file diff --git a/module/suscribe/view/index/index.css b/module/suscribe/view/index/index.css new file mode 100644 index 0000000..459b7ed --- /dev/null +++ b/module/suscribe/view/index/index.css @@ -0,0 +1,37 @@ +/** + * This file is part of Zwii. + * + * For full copyright and license information, please see the LICENSE + * file that was distributed with this source code. + * + * @author Rémi Jean + * @copyright Copyright (C) 2008-2018, Rémi Jean + * @author Frédéric Tempez + * @copyright Copyright (C) 2018-2020, Frédéric Tempez + * @license CC Attribution-NonCommercial-NoDerivatives 4.0 International + * @link http://zwiicms.com/ + */ + +.inputRowContainer1, +.inputRowContainer2, +.inputRowContainer4, +.inputColContainer { + display: grid; + gap: 10px; /* Espacement entre les inputs */ +} + +/* En lignes */ +.inputRowContainer1 { + grid-template-columns: repeat(1, 1fr); /* 3 colonnes de largeur égale */ +} +.inputRowContainer2 { + grid-template-columns: repeat(2, 1fr); /* 3 colonnes de largeur égale */ +} +.inputRowContainer4 { + grid-template-columns: repeat(4, 1fr); /* 3 colonnes de largeur égale */ +} + +.inputColContainer { + grid-template-rows: repeat(50px, auto); /* 3 rangées ajustées à la hauteur des contenus */ + +} \ No newline at end of file diff --git a/module/suscribe/view/index/index.php b/module/suscribe/view/index/index.php index 8caa7b0..fe523b6 100755 --- a/module/suscribe/view/index/index.php +++ b/module/suscribe/view/index/index.php @@ -1,5 +1,5 @@ -
+
'off', 'label' => 'Prénom' @@ -8,30 +8,22 @@ 'autocomplete' => 'off', 'label' => 'Nom' ]); ?> - 'off', - 'label' => 'Adresse électronique' - ]); ?> 'off', 'label' => 'Identifiant de connexion' ]); ?> - 'off', - 'label' => 'Mot de passe' + 'label' => 'Adresse électronique' ]); ?> - 'off', - 'label' => 'Confirmation du mot de passe' - ]); - ?>
-
-
- 'Envoyer', - 'class' => 'green' - ]); ?> +
+
+
+ 'Envoyer' + ]); ?> +
\ No newline at end of file diff --git a/module/suscribe/view/user/user.css b/module/suscribe/view/users/users.css old mode 100755 new mode 100644 similarity index 100% rename from module/suscribe/view/user/user.css rename to module/suscribe/view/users/users.css diff --git a/module/suscribe/view/user/user.js.php b/module/suscribe/view/users/users.js.php old mode 100755 new mode 100644 similarity index 100% rename from module/suscribe/view/user/user.js.php rename to module/suscribe/view/users/users.js.php diff --git a/module/suscribe/view/user/user.php b/module/suscribe/view/users/users.php old mode 100755 new mode 100644 similarity index 78% rename from module/suscribe/view/user/user.php rename to module/suscribe/view/users/users.php index 34650e3..3cad998 --- a/module/suscribe/view/user/user.php +++ b/module/suscribe/view/users/users.php @@ -1,9 +1,9 @@
-
+
'', + 'class' => 'buttonGrey', 'href' => helper::baseUrl() . $this->getUrl(0) . '/config', - 'value' => 'Retour' + 'value' => template::ico('left') ]); ?>
diff --git a/module/suscribe/view/validate/validate.css b/module/suscribe/view/validate/validate.css new file mode 100644 index 0000000..6fb8540 --- /dev/null +++ b/module/suscribe/view/validate/validate.css @@ -0,0 +1,34 @@ +/** + * This file is part of Zwii. + * + * For full copyright and license information, please see the LICENSE + * file that was distributed with this source code. + * + * @author Rémi Jean + * @copyright Copyright (C) 2008-2018, Rémi Jean + * @author Frédéric Tempez + * @copyright Copyright (C) 2018-2020, Frédéric Tempez + * @license CC Attribution-NonCommercial-NoDerivatives 4.0 International + * @link http://zwiicms.com/ + */ + +.inputRowContainer1, +.inputRowContainer2, +.inputRowContainer4, +.inputColContainer { + display: grid; + gap: 10px; +} + +/* En lignes */ +.inputRowContainer1 { + grid-template-columns: repeat(1, 1fr); +} + +.inputRowContainer2 { + grid-template-columns: repeat(2, 1fr); +} + +.inputRowContainer4 { + grid-template-columns: repeat(2, 1fr); +} \ No newline at end of file diff --git a/module/suscribe/view/validate/validate.php b/module/suscribe/view/validate/validate.php index 923a0a1..b50d659 100755 --- a/module/suscribe/view/validate/validate.php +++ b/module/suscribe/view/validate/validate.php @@ -1,2 +1,23 @@ - +

Email confirmé

+
+ 'off', + 'label' => 'Mot de passe' + ]); ?> + 'off', + 'label' => 'Confirmation du mot de passe' + ]); ?> +
+
+
+
+ 'Envoyer', + 'class' => 'green' + ]); ?> +
+
+
+ \ No newline at end of file