suscribe 2.6

This commit is contained in:
Fred Tempez 2025-01-05 17:58:54 +01:00
parent 384dc2503b
commit 3736c2ebc9
20 changed files with 1118 additions and 1103 deletions

View File

@ -1,11 +1,15 @@
# Version 2.4
- L'approbation par un administrateur initialise le pseudo avec l'id de l'utilisateur.
# Version 2.3
- Warning lors de la saisie d'un email vide
# Version 2.2
- Ajoute la gestion des profils
# Version 2.1
- N'envoie pas d'email lorsque le domaine est invalide.
- Corrige la validation de domaines multiples séparés par des points virgules.
# Version 2.0
# Version 2.6
- Corrige d'un bug empêchat de terminer la procédure d'inscription après approbation.
# Version 2.5
- Reformatage du formulaire d'approbation pour mettre en avant les actions à réaliser par l'administrateur.
# Version 2.4
- L'approbation par un administrateur initialise le pseudo avec l'id de l'utilisateur.
# Version 2.3
- Warning lors de la saisie d'un email vide
# Version 2.2
- Ajoute la gestion des profils
# Version 2.1
- N'envoie pas d'email lorsque le domaine est invalide.
- Corrige la validation de domaines multiples séparés par des points virgules.
# Version 2.0
- trop de corrections.

View File

@ -1 +1 @@
{"name":"suscribe","realName":"Auto Inscription","version":"2.4","update":"0.0","delete":true,"dataDirectory":""}
{"name":"suscribe","realName":"Auto Inscription","version":"2.6","update":"0.0","delete":true,"dataDirectory":""}

View File

@ -1,9 +1,9 @@
<?php $moduleData['suscribe'] = [
'edit' => $this->getInput('profilAddSuscribeEdit', helper::FILTER_BOOLEAN),
'delete' => $this->getInput('profilAddSuscribeDelete', helper::FILTER_BOOLEAN),
'user' => $this->getInput('profilAddSuscribeUser', helper::FILTER_BOOLEAN),
'config' => $this->getInput('profilAddSuscribeAdd', helper::FILTER_BOOLEAN) ||
$this->getInput('profilAddSuscribeEdit', helper::FILTER_BOOLEAN) ||
$this->getInput('profilAddSuscribeDelete', helper::FILTER_BOOLEAN) ||
$this->getInput('profilAddSuscribeUser', helper::FILTER_BOOLEAN)
<?php $moduleData['suscribe'] = [
'edit' => $this->getInput('profilAddSuscribeEdit', helper::FILTER_BOOLEAN),
'delete' => $this->getInput('profilAddSuscribeDelete', helper::FILTER_BOOLEAN),
'user' => $this->getInput('profilAddSuscribeUser', helper::FILTER_BOOLEAN),
'config' => $this->getInput('profilAddSuscribeAdd', helper::FILTER_BOOLEAN) ||
$this->getInput('profilAddSuscribeEdit', helper::FILTER_BOOLEAN) ||
$this->getInput('profilAddSuscribeDelete', helper::FILTER_BOOLEAN) ||
$this->getInput('profilAddSuscribeUser', helper::FILTER_BOOLEAN)
];

View File

@ -1,9 +1,9 @@
<?php $moduleData['suscribe'] = [
'edit' => $this->getInput('profilEditSuscribeEdit', helper::FILTER_BOOLEAN),
'delete' => $this->getInput('profilEditSuscribeDelete', helper::FILTER_BOOLEAN),
'user' => $this->getInput('profilEditSuscribeUser', helper::FILTER_BOOLEAN),
'config' => $this->getInput('profilEditSuscribeAdd', helper::FILTER_BOOLEAN) ||
$this->getInput('profilEditSuscribeEdit', helper::FILTER_BOOLEAN) ||
$this->getInput('profilEditSuscribeDelete', helper::FILTER_BOOLEAN) ||
$this->getInput('profilEditSuscribeUser', helper::FILTER_BOOLEAN)
<?php $moduleData['suscribe'] = [
'edit' => $this->getInput('profilEditSuscribeEdit', helper::FILTER_BOOLEAN),
'delete' => $this->getInput('profilEditSuscribeDelete', helper::FILTER_BOOLEAN),
'user' => $this->getInput('profilEditSuscribeUser', helper::FILTER_BOOLEAN),
'config' => $this->getInput('profilEditSuscribeAdd', helper::FILTER_BOOLEAN) ||
$this->getInput('profilEditSuscribeEdit', helper::FILTER_BOOLEAN) ||
$this->getInput('profilEditSuscribeDelete', helper::FILTER_BOOLEAN) ||
$this->getInput('profilEditSuscribeUser', helper::FILTER_BOOLEAN)
];

View File

@ -1,20 +1,20 @@
<div class="row">
<div class="col12">
<div class="block">
<h4>
<?php echo sprintf('%s %s', helper::translate('Permissions'), helper::translate('Auto-inscription')); ?>
</h4>
<div class="row">
<div class="col3">
<?php echo template::checkbox('profilAddSuscribeEdit', true, 'Éditer inscription'); ?>
</div>
<div class="col3">
<?php echo template::checkbox('profilAddSuscribeDelete', true, 'Effacer inscription'); ?>
</div>
<div class="col3">
<?php echo template::checkbox('profilAddSuscribeUser', true, 'Valider inscriptions'); ?>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col12">
<div class="block">
<h4>
<?php echo sprintf('%s %s', helper::translate('Permissions'), helper::translate('Auto-inscription')); ?>
</h4>
<div class="row">
<div class="col3">
<?php echo template::checkbox('profilAddSuscribeEdit', true, 'Éditer inscription'); ?>
</div>
<div class="col3">
<?php echo template::checkbox('profilAddSuscribeDelete', true, 'Effacer inscription'); ?>
</div>
<div class="col3">
<?php echo template::checkbox('profilAddSuscribeUser', true, 'Valider inscriptions'); ?>
</div>
</div>
</div>
</div>
</div>

View File

@ -1,26 +1,26 @@
<div class="row">
<div class="col12">
<div class="block">
<h4>
<?php echo sprintf('%s %s', helper::translate('Permissions'), helper::translate('Auto-inscription')); ?>·
</h4>
<div class="row">
<div class="col3">
<?php echo template::checkbox('profilEditSuscribeEdit', true, 'Éditer inscription', [
'checked' => $this->getData(['profil', $this->getUrl(2), $this->getUrl(3), 'suscribe', 'edit'])
]); ?>
</div>
<div class="col3">
<?php echo template::checkbox('profilEditSuscribeDelete', true, 'Effacer inscription', [
'checked' => $this->getData(['profil', $this->getUrl(2), $this->getUrl(3), 'suscribe', 'delete'])
]); ?>
</div>
<div class="col3">
<?php echo template::checkbox('profilEditSuscribeUser', true, 'Valider inscriptions', [
'checked' => $this->getData(['profil', $this->getUrl(2), $this->getUrl(3), 'suscribe', 'user'])
]); ?>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col12">
<div class="block">
<h4>
<?php echo sprintf('%s %s', helper::translate('Permissions'), helper::translate('Auto-inscription')); ?>·
</h4>
<div class="row">
<div class="col3">
<?php echo template::checkbox('profilEditSuscribeEdit', true, 'Éditer inscription', [
'checked' => $this->getData(['profil', $this->getUrl(2), $this->getUrl(3), 'suscribe', 'edit'])
]); ?>
</div>
<div class="col3">
<?php echo template::checkbox('profilEditSuscribeDelete', true, 'Effacer inscription', [
'checked' => $this->getData(['profil', $this->getUrl(2), $this->getUrl(3), 'suscribe', 'delete'])
]); ?>
</div>
<div class="col3">
<?php echo template::checkbox('profilEditSuscribeUser', true, 'Valider inscriptions', [
'checked' => $this->getData(['profil', $this->getUrl(2), $this->getUrl(3), 'suscribe', 'user'])
]); ?>
</div>
</div>
</div>
</div>
</div>

File diff suppressed because it is too large Load Diff

View File

@ -1,21 +1,21 @@
/**
* 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 <remi.jean@outlook.com>
* @copyright Copyright (C) 2008-2018, Rémi Jean
* @author Frédéric Tempez <frederic.tempez@outlook.com>
* @copyright Copyright (C) 2018-2020, Frédéric Tempez
* @license CC Attribution-NonCommercial-NoDerivatives 4.0 International
* @link http://zwiicms.com/
*/
/** NE PAS EFFACER
* admin.css
*/
textarea .editorWysiwyg {
height : 100px;
/**
* 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 <remi.jean@outlook.com>
* @copyright Copyright (C) 2008-2018, Rémi Jean
* @author Frédéric Tempez <frederic.tempez@outlook.com>
* @copyright Copyright (C) 2018-2020, Frédéric Tempez
* @license CC Attribution-NonCommercial-NoDerivatives 4.0 International
* @link http://zwiicms.com/
*/
/** NE PAS EFFACER
* admin.css
*/
textarea .editorWysiwyg {
height : 100px;
}

View File

@ -1,103 +1,103 @@
<?php echo template::formOpen('registrationConfig'); ?>
<div class="row">
<div class="col1">
<?php echo template::button('registrationConfigBack', [
'class' => 'buttonGrey',
'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(0) . '/' . self::$siteContent,
'value' => template::ico('left')
]); ?>
</div>
<div class="col2 offset7">
<?php echo template::button('registrationConfigBack', [
'href' => helper::baseUrl() . $this->getUrl(0) . '/users',
'value' => 'Inscriptions'
]); ?>
</div>
<div class="col2">
<?php echo template::submit('registrationConfigSubmit', [
'class' => 'green'
]); ?>
</div>
</div>
<div class="row">
<div class="col12">
<div class="block">
<h4>Paramètres</h4>
<div class="row">
<div class="col4">
<?php echo template::select('registrationConfigLayout', $module::$layout, [
'label' => 'Disposition',
'selected' => $this->getData(['module', $this->getUrl(0), 'config', 'layout'])
]); ?>
</div>
<div class="col4">
<?php echo template::select('registrationConfigSuccess', helper::arraycollumn($this->getData(['page']), 'title', 'SORT_ASC'), [
'label' => 'Redirection après confirmation',
'selected' => $this->getData(['module', $this->getUrl(0), 'config', 'pageSuccess'])
]); ?>
</div>
<div class="col4">
<?php echo template::select('registrationConfigError', helper::arraycollumn($this->getData(['page']), 'title', 'SORT_ASC'), [
'label' => 'Redirection après erreur',
'selected' => $this->getData(['module', $this->getUrl(0), 'config', 'pageError'])
]); ?>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col12">
<div class="block">
<h4>Communication</h4>
<div class="row">
<div class="col6">
<?php echo template::select('registrationConfigTimeOut', $module::$timeLimit, [
'label' => 'Validité du lien',
'selected' => $this->getData(['module', $this->getUrl(0), 'config', 'timeOut']) / 60
]); ?>
</div>
<div class="col6">
<?php echo template::text('registrationConfigFilter', [
'label' => '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 ;'
]); ?>
</div>
</div>
<div class="row">
<div class="col12">
<?php $messageDefault = '<p>Confirmez votre inscription en cliquant sur ce lien dans les ... minutes.</p>'; ?>
<?php echo template::textarea('registrationconfigMailRegisterContent', [
'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.'
]); ?>
</div>
</div>
<div class="row">
<div class="col6 verticalAlignMiddle">
<?php echo template::checkbox('registrationConfigState', true, 'Approbation préalable', [
'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
]); ?>
</div>
</div>
<div class="row">
<div class="col12">
<?php $messageDefault = '<p>Votre inscription a été approuvée par un administrateur.</p>'; ?>
<?php echo template::textarea('registrationconfigMailValidateContent', [
'label' => 'Corps du mail d\'approbation',
'value' => !empty($this->getData(['module', $this->getUrl(0), 'config', 'mailValidateContent'])) ? $this->getData(['module', $this->getUrl(0), 'config', 'mailValidateContent']) : $messageDefault,
'class' => 'editorWysiwyg'
]); ?>
</div>
</div>
</div>
</div>
</div>
<?php echo template::formClose(); ?>
<div class="moduleVersion">Version <?php echo $module::VERSION; ?>
<?php echo template::formOpen('registrationConfig'); ?>
<div class="row">
<div class="col1">
<?php echo template::button('registrationConfigBack', [
'class' => 'buttonGrey',
'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(0) . '/' . self::$siteContent,
'value' => template::ico('left')
]); ?>
</div>
<div class="col2 offset7">
<?php echo template::button('registrationConfigBack', [
'href' => helper::baseUrl() . $this->getUrl(0) . '/users',
'value' => 'Inscriptions'
]); ?>
</div>
<div class="col2">
<?php echo template::submit('registrationConfigSubmit', [
'class' => 'green'
]); ?>
</div>
</div>
<div class="row">
<div class="col12">
<div class="block">
<h4>Paramètres</h4>
<div class="row">
<div class="col4">
<?php echo template::select('registrationConfigLayout', $module::$layout, [
'label' => 'Disposition',
'selected' => $this->getData(['module', $this->getUrl(0), 'config', 'layout'])
]); ?>
</div>
<div class="col4">
<?php echo template::select('registrationConfigSuccess', helper::arraycollumn($this->getData(['page']), 'title', 'SORT_ASC'), [
'label' => 'Redirection après confirmation',
'selected' => $this->getData(['module', $this->getUrl(0), 'config', 'pageSuccess'])
]); ?>
</div>
<div class="col4">
<?php echo template::select('registrationConfigError', helper::arraycollumn($this->getData(['page']), 'title', 'SORT_ASC'), [
'label' => 'Redirection après erreur',
'selected' => $this->getData(['module', $this->getUrl(0), 'config', 'pageError'])
]); ?>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col12">
<div class="block">
<h4>Communication</h4>
<div class="row">
<div class="col6">
<?php echo template::select('registrationConfigTimeOut', $module::$timeLimit, [
'label' => 'Validité du lien',
'selected' => $this->getData(['module', $this->getUrl(0), 'config', 'timeOut']) / 60
]); ?>
</div>
<div class="col6">
<?php echo template::text('registrationConfigFilter', [
'label' => '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 ;'
]); ?>
</div>
</div>
<div class="row">
<div class="col12">
<?php $messageDefault = '<p>Confirmez votre inscription en cliquant sur ce lien dans les ... minutes.</p>'; ?>
<?php echo template::textarea('registrationconfigMailRegisterContent', [
'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.'
]); ?>
</div>
</div>
<div class="row">
<div class="col6 verticalAlignMiddle">
<?php echo template::checkbox('registrationConfigState', true, 'Approbation préalable', [
'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
]); ?>
</div>
</div>
<div class="row">
<div class="col12">
<?php $messageDefault = '<p>Votre inscription a été approuvée par un administrateur.</p>'; ?>
<?php echo template::textarea('registrationconfigMailValidateContent', [
'label' => 'Corps du mail d\'approbation',
'value' => !empty($this->getData(['module', $this->getUrl(0), 'config', 'mailValidateContent'])) ? $this->getData(['module', $this->getUrl(0), 'config', 'mailValidateContent']) : $messageDefault,
'class' => 'editorWysiwyg'
]); ?>
</div>
</div>
</div>
</div>
</div>
<?php echo template::formClose(); ?>
<div class="moduleVersion">Version <?php echo $module::VERSION; ?>
</div>

View File

@ -1,21 +1,21 @@
/**
* 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 <remi.jean@outlook.com>
* @copyright Copyright (C) 2008-2018, Rémi Jean
* @author Frédéric Tempez <frederic.tempez@outlook.com>
* @copyright Copyright (C) 2018-2020, Frédéric Tempez
* @license CC Attribution-NonCommercial-NoDerivatives 4.0 International
* @link http://zwiicms.com/
*/
/** NE PAS EFFACER
* admin.css
*/
#registrationUserEditProfil1Wrapper,
#registrationUserEditProfil2Wrapper {
padding: 0;
}
/**
* 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 <remi.jean@outlook.com>
* @copyright Copyright (C) 2008-2018, Rémi Jean
* @author Frédéric Tempez <frederic.tempez@outlook.com>
* @copyright Copyright (C) 2018-2020, Frédéric Tempez
* @license CC Attribution-NonCommercial-NoDerivatives 4.0 International
* @link http://zwiicms.com/
*/
/** NE PAS EFFACER
* admin.css
*/
#registrationUserEditProfil1Wrapper,
#registrationUserEditProfil2Wrapper {
padding: 0;
}

View File

@ -1,31 +1,31 @@
/**
* 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 Frédéric Tempez <frederic.tempez@outlook.com>
* @copyright Copyright (C) 2018-2020, Frédéric Tempez
* @license CC Attribution-NonCommercial-NoDerivatives 4.0 International
* @link http://zwiicms.com/
*/
/**
* Droits des groupes
*/
$(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();
});
/**
* 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 Frédéric Tempez <frederic.tempez@outlook.com>
* @copyright Copyright (C) 2018-2020, Frédéric Tempez
* @license CC Attribution-NonCommercial-NoDerivatives 4.0 International
* @link http://zwiicms.com/
*/
/**
* Droits des groupes
*/
$(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();
});
});

View File

@ -1,140 +1,148 @@
<?php echo template::formOpen('registrationUserEditForm'); ?>
<div class="row">
<div class="col1">
<?php echo template::button('registrationUserEditBack', [
'class' => 'buttonGrey',
'href' => helper::baseUrl() . $this->geturl(0) . '/users',
'value' => template::ico('left')
]); ?>
</div>
<div class="col2 offset9">
<?php echo template::submit('registrationUserEditSubmit', [
'class' => 'green'
]); ?>
</div>
</div>
<div class="row">
<div class="col12">
<div class="block">
<h4>Confirmation de l'inscription</h4>
<div class="row">
<div class="col12">
<div class="row">
<div class="col6">
<?php echo template::text('registrationUserEditFirstname', [
'autocomplete' => 'off',
'label' => 'Prénom',
'value' => $this->getData(['module', $this->getUrl(0), 'users', $this->getUrl(2), 'firstname']),
'disabled' => true
]); ?>
</div>
<div class="col6">
<?php echo template::text('registrationUserEditLastname', [
'autocomplete' => 'off',
'label' => 'Nom',
'value' => $this->getData(['module', $this->getUrl(0), 'users', $this->getUrl(2), 'lastname']),
'disabled' => true
]); ?>
</div>
</div>
<div class="row">
<div class="col12">
<?php echo template::mail('registrationUserEditMail', [
'autocomplete' => 'off',
'label' => 'Adresse électronique',
'value' => $this->getData(['module', $this->getUrl(0), 'users', $this->getUrl(2), 'mail']),
'disabled' => true
]); ?>
</div>
</div>
<div class="row">
<div class="col8">
<?php echo template::text('registrationUserState', [
'label' => 'É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é<br>Email validé : approbation nécessaire.'
]); ?>
</div>
<div class="col4">
<?php echo template::text('registrationUsertimer', [
'label' => '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
]); ?>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col4">
<?php echo template::text('registrationUserLabel', [
'label' => 'Étiquette'
]); ?>
</div>
<div class="col4">
<?php if ($this->getUser('group') === self::GROUP_ADMIN): ?>
<?php echo template::select('registrationUserEditGroup', $module::$groups, [
'disabled' => ($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'])
]); ?>
<?php endif; ?>
</div>
<div class="col4">
<div class="registrationUserEditGroupProfil"
id="registrationUserEditGroupProfil<?php echo self::GROUP_MEMBER; ?>">
<?php echo template::select('registrationUserEditProfil' . self::GROUP_MEMBER, $module::$userProfils[self::GROUP_MEMBER], [
'label' => 'Profil',
'selected' => $this->getData(['user', $this->getUrl(2), 'profil']),
'disabled' => $this->getUser('group') !== self::GROUP_ADMIN,
]); ?>
</div>
<div class="registrationUserEditGroupProfil"
id="registrationUserEditGroupProfil<?php echo self::GROUP_EDITOR; ?>">
<?php echo template::select('registrationUserEditProfil' . self::GROUP_EDITOR, $module::$userProfils[self::GROUP_EDITOR], [
'label' => 'Profil',
'selected' => $this->getData(['user', $this->getUrl(2), 'profil']),
'disabled' => $this->getUser('group') !== self::GROUP_ADMIN,
]); ?>
</div>
</div>
<div class="row">
<div class="col12">
<div id="registrationUserCommentProfil<?php echo self::GROUP_MEMBER; ?>"
class="col12 registrationUserCommentProfil">
<?php echo template::textarea('registrationUserEditProfilComment' . self::GROUP_MEMBER, [
'label' => 'Commentaire',
'value' => implode("\n", $module::$userProfilsComments[self::GROUP_MEMBER]),
'readonly' => true,
]);
?>
</div>
<div id="registrationUserCommentProfil<?php echo self::GROUP_EDITOR; ?>"
class="col12 registrationUserCommentProfil">
<?php echo template::textarea('registrationUserEditProfilComment' . self::GROUP_EDITOR, [
'label' => 'Commentaire',
'value' => implode("\n", $module::$userProfilsComments[self::GROUP_EDITOR]),
'readonly' => true,
]);
?>
</div>
<div id="registrationUserCommentProfil<?php echo self::GROUP_ADMIN; ?>"
class="col12 registrationUserCommentProfil">
<?php echo template::textarea('registrationUserEditProfilComment' . self::GROUP_ADMIN, [
'label' => 'Commentaire',
'value' => implode("\n", $module::$userProfilsComments[self::GROUP_ADMIN]),
'readonly' => true,
]);
?>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<?php echo template::formOpen('registrationUserEditForm'); ?>
<div class="row">
<div class="col1">
<?php echo template::button('registrationUserEditBack', [
'class' => 'buttonGrey',
'href' => helper::baseUrl() . $this->geturl(0) . '/users',
'value' => template::ico('left')
]); ?>
</div>
<div class="col2 offset9">
<?php echo template::submit('registrationUserEditSubmit', [
'class' => 'green'
]); ?>
</div>
</div>
<div class="row">
<div class="col12">
<div class="block">
<h4>Approbation de l'inscription</h4>
<div class="row">
<div class="col4">
<?php echo template::text('registrationUserLabel', [
'label' => 'Étiquettes',
'help' => 'Les étiquettes sont séparées par des espaces',
]); ?>
</div>
<div class="col4">
<?php if ($this->getUser('group') === self::GROUP_ADMIN): ?>
<?php echo template::select('registrationUserEditGroup', $module::$groups, [
'disabled' => ($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'])
]); ?>
<?php endif; ?>
</div>
<div class="col4">
<div class="registrationUserEditGroupProfil"
id="registrationUserEditGroupProfil<?php echo self::GROUP_MEMBER; ?>">
<?php echo template::select('registrationUserEditProfil' . self::GROUP_MEMBER, $module::$userProfils[self::GROUP_MEMBER], [
'label' => 'Profil',
'selected' => $this->getData(['user', $this->getUrl(2), 'profil']),
'disabled' => $this->getUser('group') !== self::GROUP_ADMIN,
]); ?>
</div>
<div class="registrationUserEditGroupProfil"
id="registrationUserEditGroupProfil<?php echo self::GROUP_EDITOR; ?>">
<?php echo template::select('registrationUserEditProfil' . self::GROUP_EDITOR, $module::$userProfils[self::GROUP_EDITOR], [
'label' => 'Profil',
'selected' => $this->getData(['user', $this->getUrl(2), 'profil']),
'disabled' => $this->getUser('group') !== self::GROUP_ADMIN,
]); ?>
</div>
</div>
<div class="row">
<div class="col12">
<div id="registrationUserCommentProfil<?php echo self::GROUP_MEMBER; ?>"
class="col12 registrationUserCommentProfil">
<?php echo template::textarea('registrationUserEditProfilComment' . self::GROUP_MEMBER, [
'label' => 'Commentaire',
'value' => implode("\n", $module::$userProfilsComments[self::GROUP_MEMBER]),
'readonly' => true,
]);
?>
</div>
<div id="registrationUserCommentProfil<?php echo self::GROUP_EDITOR; ?>"
class="col12 registrationUserCommentProfil">
<?php echo template::textarea('registrationUserEditProfilComment' . self::GROUP_EDITOR, [
'label' => 'Commentaire',
'value' => implode("\n", $module::$userProfilsComments[self::GROUP_EDITOR]),
'readonly' => true,
]);
?>
</div>
<div id="registrationUserCommentProfil<?php echo self::GROUP_ADMIN; ?>"
class="col12 registrationUserCommentProfil">
<?php echo template::textarea('registrationUserEditProfilComment' . self::GROUP_ADMIN, [
'label' => 'Commentaire',
'value' => implode("\n", $module::$userProfilsComments[self::GROUP_ADMIN]),
'readonly' => true,
]);
?>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col12">
<div class="block">
<h4>Identité du compte</h4>
<div class="row">
<div class="col12">
<div class="row">
<div class="col6">
<?php echo template::text('registrationUserEditFirstname', [
'autocomplete' => 'off',
'label' => 'Prénom',
'value' => $this->getData(['module', $this->getUrl(0), 'users', $this->getUrl(2), 'firstname']),
'disabled' => true
]); ?>
</div>
<div class="col6">
<?php echo template::text('registrationUserEditLastname', [
'autocomplete' => 'off',
'label' => 'Nom',
'value' => $this->getData(['module', $this->getUrl(0), 'users', $this->getUrl(2), 'lastname']),
'disabled' => true
]); ?>
</div>
</div>
<div class="row">
<div class="col12">
<?php echo template::mail('registrationUserEditMail', [
'autocomplete' => 'off',
'label' => 'Adresse électronique',
'value' => $this->getData(['module', $this->getUrl(0), 'users', $this->getUrl(2), 'mail']),
'disabled' => true
]); ?>
</div>
</div>
<div class="row">
<div class="col8">
<?php echo template::text('registrationUserState', [
'label' => 'É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é<br>Email validé : approbation nécessaire.'
]); ?>
</div>
<div class="col4">
<?php echo template::text('registrationUsertimer', [
'label' => '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
]); ?>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<?php echo template::formClose(); ?>

View File

@ -1,37 +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 <remi.jean@outlook.com>
* @copyright Copyright (C) 2008-2018, Rémi Jean
* @author Frédéric Tempez <frederic.tempez@outlook.com>
* @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 */
/**
* 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 <remi.jean@outlook.com>
* @copyright Copyright (C) 2008-2018, Rémi Jean
* @author Frédéric Tempez <frederic.tempez@outlook.com>
* @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 */
}

View File

@ -1,47 +1,47 @@
/**
* 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 Frédéric Tempez <frederic.tempez@outlook.com>
* @copyright Copyright (C) 2018-2020, Frédéric Tempez
* @license CC Attribution-NonCommercial-NoDerivatives 4.0 International
* @link http://zwiicms.com/
*/
/**
* Affichage de l'id en simulant FILTER_ID
*/
$("#registrationAddId").on("change keydown keyup", function(event) {
var userId = $(this).val();
if(
event.keyCode !== 8 // BACKSPACE
&& event.keyCode !== 37 // LEFT
&& event.keyCode !== 39 // RIGHT
&& event.keyCode !== 46 // DELETE
&& window.getSelection().toString() !== userId // Texte sélectionné
) {
var searchReplace = {
"á": "a", "à": "a", "â": "a", "ä": "a", "ã": "a", "å": "a", "ç": "c", "é": "e", "è": "e", "ê": "e", "ë": "e", "í": "i", "ì": "i", "î": "i", "ï": "i", "ñ": "n", "ó": "o", "ò": "o", "ô": "o", "ö": "o", "õ": "o", "ú": "u", "ù": "u", "û": "u", "ü": "u", "ý": "y", "ÿ": "y",
"Á": "A", "À": "A", "Â": "A", "Ä": "A", "Ã": "A", "Å": "A", "Ç": "C", "É": "E", "È": "E", "Ê": "E", "Ë": "E", "Í": "I", "Ì": "I", "Î": "I", "Ï": "I", "Ñ": "N", "Ó": "O", "Ò": "O", "Ô": "O", "Ö": "O", "Õ": "O", "Ú": "U", "Ù": "U", "Û": "U", "Ü": "U", "Ý": "Y", "Ÿ": "Y",
"'": "-", "\"": "-", " ": "-"
};
userId = userId.replace(/[áàâäãåçéèêëíìîïñóòôöõúùûüýÿ'" ]/ig, function(match) {
return searchReplace[match];
});
userId = userId.replace(/[^a-z0-9-]/ig, "");
$(this).val(userId);
}
});
/**
* Droits des groupes
*/
$("#registrationAddGroup").on("change", function() {
$(".registrationAddGroupDescription").hide();
$("#registrationAddGroupDescription" + $(this).val()).show();
}).trigger("change");
/**
* 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 Frédéric Tempez <frederic.tempez@outlook.com>
* @copyright Copyright (C) 2018-2020, Frédéric Tempez
* @license CC Attribution-NonCommercial-NoDerivatives 4.0 International
* @link http://zwiicms.com/
*/
/**
* Affichage de l'id en simulant FILTER_ID
*/
$("#registrationAddId").on("change keydown keyup", function(event) {
var userId = $(this).val();
if(
event.keyCode !== 8 // BACKSPACE
&& event.keyCode !== 37 // LEFT
&& event.keyCode !== 39 // RIGHT
&& event.keyCode !== 46 // DELETE
&& window.getSelection().toString() !== userId // Texte sélectionné
) {
var searchReplace = {
"á": "a", "à": "a", "â": "a", "ä": "a", "ã": "a", "å": "a", "ç": "c", "é": "e", "è": "e", "ê": "e", "ë": "e", "í": "i", "ì": "i", "î": "i", "ï": "i", "ñ": "n", "ó": "o", "ò": "o", "ô": "o", "ö": "o", "õ": "o", "ú": "u", "ù": "u", "û": "u", "ü": "u", "ý": "y", "ÿ": "y",
"Á": "A", "À": "A", "Â": "A", "Ä": "A", "Ã": "A", "Å": "A", "Ç": "C", "É": "E", "È": "E", "Ê": "E", "Ë": "E", "Í": "I", "Ì": "I", "Î": "I", "Ï": "I", "Ñ": "N", "Ó": "O", "Ò": "O", "Ô": "O", "Ö": "O", "Õ": "O", "Ú": "U", "Ù": "U", "Û": "U", "Ü": "U", "Ý": "Y", "Ÿ": "Y",
"'": "-", "\"": "-", " ": "-"
};
userId = userId.replace(/[áàâäãåçéèêëíìîïñóòôöõúùûüýÿ'" ]/ig, function(match) {
return searchReplace[match];
});
userId = userId.replace(/[^a-z0-9-]/ig, "");
$(this).val(userId);
}
});
/**
* Droits des groupes
*/
$("#registrationAddGroup").on("change", function() {
$(".registrationAddGroupDescription").hide();
$("#registrationAddGroupDescription" + $(this).val()).show();
}).trigger("change");

View File

@ -1,29 +1,29 @@
<?php echo template::formOpen('registrationAddForm'); ?>
<div class="<?php echo $this->getData(['module', $this->getUrl(0), 'config', 'layout']); ?>">
<?php echo template::text('registrationAddFirstname', [
'autocomplete' => 'off',
'label' => 'Prénom'
]); ?>
<?php echo template::text('registrationAddLastname', [
'autocomplete' => 'off',
'label' => 'Nom'
]); ?>
<?php echo template::text('registrationAddId', [
'autocomplete' => 'off',
'label' => 'Identifiant de connexion'
]); ?>
<?php echo template::mail('registrationAddMail', [
'autocomplete' => 'off',
'label' => 'Adresse électronique'
]); ?>
</div>
<div class='submitContainer'>
<div class="row">
<div class="col2 offset10">
<?php echo template::submit('registrationAddSubmit', [
'value' => 'Envoyer'
]); ?>
</div>
</div>
</div>
<?php echo template::formOpen('registrationAddForm'); ?>
<div class="<?php echo $this->getData(['module', $this->getUrl(0), 'config', 'layout']); ?>">
<?php echo template::text('registrationAddFirstname', [
'autocomplete' => 'off',
'label' => 'Prénom'
]); ?>
<?php echo template::text('registrationAddLastname', [
'autocomplete' => 'off',
'label' => 'Nom'
]); ?>
<?php echo template::text('registrationAddId', [
'autocomplete' => 'off',
'label' => 'Identifiant de connexion'
]); ?>
<?php echo template::mail('registrationAddMail', [
'autocomplete' => 'off',
'label' => 'Adresse électronique'
]); ?>
</div>
<div class='submitContainer'>
<div class="row">
<div class="col2 offset10">
<?php echo template::submit('registrationAddSubmit', [
'value' => 'Envoyer'
]); ?>
</div>
</div>
</div>
<?php echo template::formClose(); ?>

View File

@ -1,17 +1,17 @@
/**
* 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 <remi.jean@outlook.com>
* @copyright Copyright (C) 2008-2018, Rémi Jean
* @author Frédéric Tempez <frederic.tempez@outlook.com>
* @copyright Copyright (C) 2018-2020, Frédéric Tempez
* @license CC Attribution-NonCommercial-NoDerivatives 4.0 International
* @link http://zwiicms.com/
*/
/** NE PAS EFFACER
* admin.css
/**
* 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 <remi.jean@outlook.com>
* @copyright Copyright (C) 2008-2018, Rémi Jean
* @author Frédéric Tempez <frederic.tempez@outlook.com>
* @copyright Copyright (C) 2018-2020, Frédéric Tempez
* @license CC Attribution-NonCommercial-NoDerivatives 4.0 International
* @link http://zwiicms.com/
*/
/** NE PAS EFFACER
* admin.css
*/

View File

@ -1,21 +1,21 @@
/**
* 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 Frédéric Tempez <frederic.tempez@outlook.com>
* @copyright Copyright (C) 2018-2020, Frédéric Tempez
* @license CC Attribution-NonCommercial-NoDerivatives 4.0 International
* @link http://zwiicms.com/
*/
/**
* Confirmation de suppression
*/
$(".registrationUserDelete").on("click", function() {
var _this = $(this);
return core.confirm("Êtes-vous sûr de vouloir supprimer cet utilisateur ?", function() {
$(location).attr("href", _this.attr("href"));
});
/**
* 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 Frédéric Tempez <frederic.tempez@outlook.com>
* @copyright Copyright (C) 2018-2020, Frédéric Tempez
* @license CC Attribution-NonCommercial-NoDerivatives 4.0 International
* @link http://zwiicms.com/
*/
/**
* Confirmation de suppression
*/
$(".registrationUserDelete").on("click", function() {
var _this = $(this);
return core.confirm("Êtes-vous sûr de vouloir supprimer cet utilisateur ?", function() {
$(location).attr("href", _this.attr("href"));
});
});

View File

@ -1,15 +1,15 @@
<div class="row">
<div class="col1">
<?php echo template::button('registrationUserBack', [
'class' => 'buttonGrey',
'href' => helper::baseUrl() . $this->getUrl(0) . '/config',
'value' => template::ico('left')
]); ?>
</div>
</div>
<?php if($module::$users): ?>
<?php echo template::table([3, 3, 2,21, 1, 1], $module::$users, ['Identifiant', 'Nom', 'Etat', 'Date', '', '']); ?>
<?php else: ?>
<?php echo template::speech('Pas d\'inscription en attente.'); ?>
<div class="row">
<div class="col1">
<?php echo template::button('registrationUserBack', [
'class' => 'buttonGrey',
'href' => helper::baseUrl() . $this->getUrl(0) . '/config',
'value' => template::ico('left')
]); ?>
</div>
</div>
<?php if($module::$users): ?>
<?php echo template::table([3, 3, 2,21, 1, 1], $module::$users, ['Identifiant', 'Nom', 'Etat', 'Date', '', '']); ?>
<?php else: ?>
<?php echo template::speech('Pas d\'inscription en attente.'); ?>
<?php endif; ?>

View File

@ -1,34 +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 <remi.jean@outlook.com>
* @copyright Copyright (C) 2008-2018, Rémi Jean
* @author Frédéric Tempez <frederic.tempez@outlook.com>
* @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);
/**
* 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 <remi.jean@outlook.com>
* @copyright Copyright (C) 2008-2018, Rémi Jean
* @author Frédéric Tempez <frederic.tempez@outlook.com>
* @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);
}

View File

@ -1,23 +1,23 @@
<?php echo template::formOpen('registrationValidForm'); ?>
<h3>Email confirmé</h3>
<div class="<?php echo $this->getData(['module',$this->getUrl(0),'config','layout']); ?>">
<?php echo template::password('registrationValidPassword', [
'autocomplete' => 'off',
'label' => 'Mot de passe'
]); ?>
<?php echo template::password('registrationValidConfirmPassword', [
'autocomplete' => 'off',
'label' => 'Confirmation du mot de passe'
]); ?>
</div>
<div class='submitContainer'>
<div class="row">
<div class="col2 offset10">
<?php echo template::submit('registrationValidSubmit', [
'value' => 'Envoyer',
'class' => 'green'
]); ?>
</div>
</div>
</div>
<?php echo template::formOpen('registrationValidForm'); ?>
<h3>Email confirmé</h3>
<div class="<?php echo $this->getData(['module',$this->getUrl(0),'config','layout']); ?>">
<?php echo template::password('registrationValidPassword', [
'autocomplete' => 'off',
'label' => 'Mot de passe'
]); ?>
<?php echo template::password('registrationValidConfirmPassword', [
'autocomplete' => 'off',
'label' => 'Confirmation du mot de passe'
]); ?>
</div>
<div class='submitContainer'>
<div class="row">
<div class="col2 offset10">
<?php echo template::submit('registrationValidSubmit', [
'value' => 'Envoyer',
'class' => 'green'
]); ?>
</div>
</div>
</div>
<?php echo template::formClose(); ?>