Compare commits
10 Commits
Author | SHA1 | Date | |
---|---|---|---|
1f91f501d5 | |||
62d4954572 | |||
b0b5c9292b | |||
b0799c0f7b | |||
05a85c0e4c | |||
9a5d9870c4 | |||
c62f182b16 | |||
1b9027a24a | |||
234bf9d6bc | |||
72c791045d |
@ -1,4 +1,4 @@
|
||||
# ZwiiCampus 1.21.00
|
||||
# ZwiiCampus 1.21.03
|
||||
|
||||
ZwiiCampus (Learning Management System) est logiciel auteur destiné à mettre en ligne des tutoriels. Il dispose de plusieurs modalités d'ouverture et d'accès des contenus. Basé sur la version 13 du CMS Zwii, la structure logicielle est solide, le framework de Zwii est éprouvé.
|
||||
|
||||
|
@ -1143,7 +1143,7 @@ class layout extends common
|
||||
'help' => 'Langues',
|
||||
'href' => helper::baseUrl() . 'language'
|
||||
]) . '</li>';
|
||||
$rightItems .= '<li>' . template::ico('users', [
|
||||
$rightItems .= '<li>' . template::ico('address-book', [
|
||||
'help' => 'Utilisateurs',
|
||||
'href' => helper::baseUrl() . 'user'
|
||||
]) . '</li>';
|
||||
@ -1209,7 +1209,7 @@ class layout extends common
|
||||
'href' => helper::baseUrl() . 'plugin'
|
||||
]) . '</li>';
|
||||
}
|
||||
// Boutons depuis le groupe éditeur
|
||||
// Boutons depuis le rôle éditeur
|
||||
if (
|
||||
$this->getUser('role') >= self::ROLE_EDITOR
|
||||
&& $this->getUser('permission', 'user', 'edit')
|
||||
|
@ -705,7 +705,7 @@ class core extends common
|
||||
if (array_key_exists($action, $module::$actions)) {
|
||||
$module->$action();
|
||||
$output = $module->output;
|
||||
// Check le groupe de l'utilisateur
|
||||
// Check le rôle de l'utilisateur
|
||||
if (
|
||||
($module::$actions[$action] === common::ROLE_VISITOR
|
||||
or ($this->isConnected() === true
|
||||
|
@ -51,7 +51,7 @@ class common
|
||||
const ACCESS_TIMER = 1800;
|
||||
|
||||
// Numéro de version
|
||||
const ZWII_VERSION = '1.21.00';
|
||||
const ZWII_VERSION = '1.21.03';
|
||||
|
||||
// URL autoupdate
|
||||
const ZWII_UPDATE_URL = 'https://forge.chapril.org/ZwiiCMS-Team/campus-update/raw/branch/master/';
|
||||
@ -641,7 +641,7 @@ class common
|
||||
/**
|
||||
* Ecrire les données de la page
|
||||
* @param string pageId
|
||||
* @param array contenu de la page
|
||||
* @param string contenu de la page
|
||||
* @return int nombre d'octets écrits ou erreur
|
||||
*/
|
||||
public function setPage($page, $value, $path)
|
||||
@ -1042,7 +1042,7 @@ class common
|
||||
|
||||
/**
|
||||
* Retourne les permissions de l'utilisateur connecté
|
||||
* @param int $key Clé de la valeur du groupe
|
||||
* @param int $key Clé de la valeur du rôle
|
||||
* @return string|null
|
||||
*/
|
||||
public function getPermission($key1, $key2 = null)
|
||||
@ -1663,7 +1663,7 @@ function makeThumb($src, $dest, $desired_width)
|
||||
}
|
||||
return $filter;
|
||||
default:
|
||||
return null;
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -41,7 +41,7 @@
|
||||
<?php echo template::select('connectAuthMail', array_merge([0 => 'Aucune'], self::$roleNews), [
|
||||
'label' => 'Validation par clé ⚠️',
|
||||
'selected' => $this->getData(['config', 'connect', 'mailAuth']),
|
||||
'help' => 'La connexion est confirmée à l\'aide d\'une clé transmise par messagerie. Depuis le groupe sélectionné et les rôles supérieurs.'
|
||||
'help' => 'La connexion est confirmée à l\'aide d\'une clé transmise par messagerie. Depuis le rôle sélectionné et les rôles supérieurs.'
|
||||
]); ?>
|
||||
</div>
|
||||
<div class="col3 verticalAlignBottom">
|
||||
|
@ -99,7 +99,7 @@ class course extends common
|
||||
foreach ($this->getData(['course']) as $courseId => $courseValue) {
|
||||
/**
|
||||
* Filtres :
|
||||
* Groupes acceptés :
|
||||
* Rôlesacceptés :
|
||||
* admin : tous les espaces
|
||||
* editor : gère son espace son espace dans lequel il est inscrit
|
||||
*/
|
||||
@ -120,7 +120,7 @@ class course extends common
|
||||
if ($this->getUser('permission', 'course', 'users') === true) {
|
||||
$users = template::button('categoryUser' . $this->getUrl(2), [
|
||||
'href' => helper::baseUrl() . 'course/users/' . $courseId,
|
||||
'value' => template::ico('users'),
|
||||
'value' => template::ico('address-book'),
|
||||
]);
|
||||
}
|
||||
self::$courses[] = [
|
||||
@ -231,8 +231,8 @@ class course extends common
|
||||
// Liste des enseignants pour le sélecteur d'auteurs
|
||||
$teachers = $this->getData(['user']);
|
||||
foreach ($teachers as $teacherId => $teacherInfo) {
|
||||
if ($teacherInfo["group"] >= 2) {
|
||||
self::$courseTeachers[$teacherId] = $teacherInfo["firstname"] . ' ' . $teacherInfo["lastname"];
|
||||
if ($teacherInfo['role'] >= 2) {
|
||||
self::$courseTeachers[$teacherId] = $teacherInfo['firstname'] . ' ' . $teacherInfo['lastname'];
|
||||
}
|
||||
}
|
||||
|
||||
@ -307,8 +307,8 @@ class course extends common
|
||||
// Liste des enseignants pour le sélecteur d'auteurs
|
||||
$teachers = $this->getData(['user']);
|
||||
foreach ($teachers as $teacherId => $teacherInfo) {
|
||||
if ($teacherInfo["group"] >= 2) {
|
||||
self::$courseTeachers[$teacherId] = $teacherInfo["firstname"] . ' ' . $teacherInfo["lastname"];
|
||||
if ($teacherInfo['role'] >= 2) {
|
||||
self::$courseTeachers[$teacherId] = $teacherInfo['firstname'] . ' ' . $teacherInfo['lastname'];
|
||||
}
|
||||
}
|
||||
|
||||
@ -366,8 +366,8 @@ class course extends common
|
||||
// Liste des enseignants pour le sélecteur d'auteurs
|
||||
$teachers = $this->getData(['user']);
|
||||
foreach ($teachers as $teacherId => $teacherInfo) {
|
||||
if ($teacherInfo["group"] >= 2) {
|
||||
self::$courseTeachers[$teacherId] = $teacherInfo["firstname"] . ' ' . $teacherInfo["lastname"];
|
||||
if ($teacherInfo['role'] >= 2) {
|
||||
self::$courseTeachers[$teacherId] = $teacherInfo['firstname'] . ' ' . $teacherInfo['lastname'];
|
||||
}
|
||||
}
|
||||
|
||||
@ -414,7 +414,7 @@ class course extends common
|
||||
|
||||
// Accès limité aux admins, à l'auteur ou éditeurs inscrits
|
||||
if (
|
||||
$this->getUser('role') !== self::$actions[__FUNCTION__]
|
||||
$this->getUser('permission', __CLASS__, __FUNCTION__) !== true
|
||||
) {
|
||||
// Valeurs en sortie
|
||||
$this->addOutput([
|
||||
@ -447,7 +447,7 @@ class course extends common
|
||||
|
||||
if (
|
||||
// Accès limité aux admins
|
||||
$this->getUser('role') !== self::$actions[__FUNCTION__]
|
||||
$this->getUser('permission', __CLASS__, __FUNCTION__) !== true
|
||||
// Le contenu n'existe pas
|
||||
|| $this->getData(['course', $courseId]) === null
|
||||
) {
|
||||
@ -487,7 +487,7 @@ class course extends common
|
||||
|
||||
if (
|
||||
// Accès limité aux admins
|
||||
$this->getUser('role') !== self::$actions[__FUNCTION__]
|
||||
$this->getUser('permission', __CLASS__, __FUNCTION__) !== true
|
||||
) {
|
||||
// Valeurs en sortie
|
||||
$this->addOutput([
|
||||
@ -526,7 +526,7 @@ class course extends common
|
||||
|
||||
if (
|
||||
// Accès limité aux admins
|
||||
$this->getUser('role') !== self::$actions[__FUNCTION__]
|
||||
$this->getUser('permission', __CLASS__, __FUNCTION__) !== true
|
||||
) {
|
||||
// Valeurs en sortie
|
||||
$this->addOutput([
|
||||
@ -557,7 +557,7 @@ class course extends common
|
||||
{
|
||||
if (
|
||||
// Accès limité aux admins
|
||||
$this->getUser('role') !== self::$actions[__FUNCTION__]
|
||||
$this->getUser('permission', __CLASS__, __FUNCTION__) !== true
|
||||
) {
|
||||
// Valeurs en sortie
|
||||
$this->addOutput([
|
||||
@ -592,7 +592,7 @@ class course extends common
|
||||
|
||||
if (
|
||||
// Accès limité aux admins
|
||||
$this->getUser('role') !== self::$actions[__FUNCTION__]
|
||||
$this->getUser('permission', __CLASS__, __FUNCTION__) !== true
|
||||
) {
|
||||
// Valeurs en sortie
|
||||
$this->addOutput([
|
||||
@ -739,17 +739,17 @@ class course extends common
|
||||
sprintf('%s %s', $this->getData(['user', $userId, 'lastname']), $this->getData(['user', $userId, 'firstname'])),
|
||||
array_key_exists('lastPageView', $userValue) && isset($pages['page'][$userValue['lastPageView']]['title'])
|
||||
? $pages['page'][$userValue['lastPageView']]['title']
|
||||
: '',
|
||||
: helper::translate('Aucune'),
|
||||
array_key_exists('lastPageView', $userValue)
|
||||
// ? helper::dateUTF8('%d/%m/%Y', $userValue['datePageView'])
|
||||
? $userValue['datePageView']
|
||||
: '',
|
||||
: helper::translate('Jamais'),
|
||||
$this->getData(['user', $userId, 'tags']),
|
||||
$reportButton,
|
||||
template::button('userDelete' . $userId, [
|
||||
'class' => 'userDelete buttonRed',
|
||||
'href' => helper::baseUrl() . 'course/userDelete/' . $courseId . '/' . $userId,
|
||||
'value' => template::ico('user'),
|
||||
'value' => template::ico('user-times'),
|
||||
'help' => 'Désinscrire'
|
||||
])
|
||||
];
|
||||
|
@ -7,16 +7,6 @@
|
||||
]); ?>
|
||||
</div>
|
||||
<div class="col1 offset8">
|
||||
<?php if ($this->getUser('permission', 'course', 'add') === true): ?>
|
||||
<?php echo template::button('courseAdd', [
|
||||
'class' => 'buttonGreen',
|
||||
'href' => helper::baseUrl() . 'course/add',
|
||||
'value' => template::ico('plus'),
|
||||
'help' => 'Ajouter un espace'
|
||||
]); ?>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<div class="col1">
|
||||
<?php if ($this->getUser('permission', 'course', 'category') === true): ?>
|
||||
<?php echo template::button('courseCategory', [
|
||||
'href' => helper::baseUrl() . 'course/category',
|
||||
@ -33,7 +23,16 @@
|
||||
'help' => 'Restaurer un espace'
|
||||
]); ?>
|
||||
<?php endif; ?>
|
||||
|
||||
</div>
|
||||
<div class="col1">
|
||||
<?php if ($this->getUser('permission', 'course', 'add') === true): ?>
|
||||
<?php echo template::button('courseAdd', [
|
||||
'class' => 'buttonGreen',
|
||||
'href' => helper::baseUrl() . 'course/add',
|
||||
'value' => template::ico('plus'),
|
||||
'help' => 'Ajouter un espace'
|
||||
]); ?>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</div>
|
||||
<?php if (course::$courses): ?>
|
||||
|
@ -17,7 +17,7 @@
|
||||
<?php echo template::button('userDeleteAll', [
|
||||
'class' => 'userDeleteAll buttonRed',
|
||||
'href' => helper::baseUrl() . 'course/usersDelete/' . $this->getUrl(2),
|
||||
'value' => template::ico('users'),
|
||||
'value' => template::ico('user-times'),
|
||||
'help' => 'Désinscrire en masse',
|
||||
])?>
|
||||
</div>
|
||||
@ -25,7 +25,7 @@
|
||||
<?php echo template::button('userDeleteAll', [
|
||||
'class' => 'buttonGreen',
|
||||
'href' => helper::baseUrl() . 'course/usersAdd/' . $this->getUrl(2),
|
||||
'value' => template::ico('users'),
|
||||
'value' => template::ico('user-plus'),
|
||||
'help' => 'Inscription en masse',
|
||||
]) ?>
|
||||
</div>
|
||||
@ -34,7 +34,7 @@
|
||||
<div class="row" id="Bfrtip">
|
||||
<div class="col3">
|
||||
<?php echo template::select('courseFilterGroup', course::$courseGroups, [
|
||||
'label' => 'Groupes / Profils',
|
||||
'label' => 'Rôles/ Profils',
|
||||
'selected' => isset($_POST['courseFilterGroup']) ? $_POST['courseFilterGroup'] : 'all',
|
||||
]); ?>
|
||||
</div>
|
||||
@ -53,7 +53,7 @@
|
||||
</div>
|
||||
<?php echo template::formClose(); ?>
|
||||
<?php if (course::$courseUsers): ?>
|
||||
<?php echo template::table([3, 3, 2, 2, 1, 1], course::$courseUsers, ['Nom Prénom', 'Dernière page vue', 'Date' , 'Étiquettes', 'Progression', ''], ['id' => 'dataTables']); ?>
|
||||
<?php echo template::table([3, 3, 2, 2, 1, 1], course::$courseUsers, ['Nom Prénom', 'Dernière consultation', 'Date' , 'Étiquette', 'Progression', ''], ['id' => 'dataTables']); ?>
|
||||
<?php else: ?>
|
||||
<?php echo template::speech('Aucun participant'); ?>
|
||||
<?php endif; ?>
|
@ -17,7 +17,7 @@
|
||||
<div class="row" id="Bfrtip">
|
||||
<div class="col3">
|
||||
<?php echo template::select('courseFilterGroup', course::$courseGroups, [
|
||||
'label' => 'Groupes / Profils',
|
||||
'label' => 'Rôles/ Profils',
|
||||
'selected' => isset($_POST['courseFilterGroup']) ? $_POST['courseFilterGroup'] : 'all',
|
||||
]); ?>
|
||||
</div>
|
||||
|
@ -18,7 +18,7 @@
|
||||
<div class="row" id="Bfrtip">
|
||||
<div class="col3">
|
||||
<?php echo template::select('courseFilterGroup', course::$courseGroups, [
|
||||
'label' => 'Groupes / Profils',
|
||||
'label' => 'Rôles/ Profils',
|
||||
'selected' => isset($_POST['courseFilterGroup']) ? $_POST['courseFilterGroup'] : 'all',
|
||||
]); ?>
|
||||
</div>
|
||||
|
@ -295,7 +295,7 @@
|
||||
"Importer dans": "Import into",
|
||||
"Importer des utilisateurs en masse": "Import mass users",
|
||||
"Impossible d'ouvrir l'archive": "Impossible to open the archive",
|
||||
"Impossible de modifier votre propre groupe.": "Unable to modify your own group.",
|
||||
"Impossible de modifier votre propre rôle.": "Unable to modify your own group.",
|
||||
"Impossible de soumettre le formulaire, car il contient des erreurs": "Unable to submit the form, as it contains errors",
|
||||
"Impossible de supprimer une page contenant des pages enfants": "Unable to delete a page containing children's pages",
|
||||
"Impossible de supprimer votre propre compte": "Unable to delete your own account",
|
||||
@ -686,7 +686,7 @@
|
||||
"Modèle": "Template",
|
||||
"Bouton de navigation droit": "Right Navigation Button",
|
||||
"Bouton de navigation gauche": "Left Navigation Button",
|
||||
"Groupes / Profils": "Groups / Profiles",
|
||||
"Rôles/ Profils": "Groups / Profiles",
|
||||
"Prénom commence par": "First Name starts with",
|
||||
"Nom commence par": "Last Name starts with",
|
||||
"Impossible de réinitialiser le mot de passe de ce compte !": "Impossible to reset this account password!",
|
||||
@ -695,7 +695,7 @@
|
||||
"Message de test envoyé avec succès": "Test message sent successfully",
|
||||
"Message non envoyé": "Message not sent",
|
||||
"Validation par clé ⚠️": "Key-based validation ⚠️",
|
||||
"La connexion est confirmée à l'aide d'une clé transmise par messagerie. Depuis le groupe sélectionné et les rôles supérieurs.": "The connection is confirmed using a key sent via messaging. From the selected group and the higher groups.",
|
||||
"La connexion est confirmée à l'aide d'une clé transmise par messagerie. Depuis le rôle sélectionné et les rôles supérieurs.": "The connection is confirmed using a key sent via messaging. From the selected group and the higher groups.",
|
||||
"Envoi du message d'authentification": "Sending authentication message",
|
||||
"Connexion réussie": "Login successful",
|
||||
"Erreur de mot de passe": "Password error",
|
||||
|
@ -295,7 +295,7 @@
|
||||
"Importer dans": "Importar a",
|
||||
"Importer des utilisateurs en masse": "Importar usuarios de forma masiva",
|
||||
"Impossible d'ouvrir l'archive": "No se puede abrir el archivo",
|
||||
"Impossible de modifier votre propre groupe.": "No puede editar su propio grupo.",
|
||||
"Impossible de modifier votre propre rôle.": "No puede editar su propio grupo.",
|
||||
"Impossible de soumettre le formulaire, car il contient des erreurs": "No se puede enviar el formulario porque contiene errores",
|
||||
"Impossible de supprimer une page contenant des pages enfants": "No se puede eliminar una página que contiene páginas secundarias",
|
||||
"Impossible de supprimer votre propre compte": "No puede eliminar su propia cuenta",
|
||||
@ -686,7 +686,7 @@
|
||||
"Modèle": "Plantilla",
|
||||
"Bouton de navigation droit": "Botón de navegación derecha",
|
||||
"Bouton de navigation gauche": "Botón de navegación izquierda",
|
||||
"Groupes / Profils": "Grupos / Perfiles",
|
||||
"Rôles/ Profils": "Grupos / Perfiles",
|
||||
"Prénom commence par": "El nombre comienza con",
|
||||
"Nom commence par": "El apellido comienza con",
|
||||
"Impossible de réinitialiser le mot de passe de ce compte !": "No puedo restablecer la contraseña de esta cuenta.",
|
||||
@ -695,7 +695,7 @@
|
||||
"Message de test envoyé avec succès": "Mensaje de prueba enviado con éxito",
|
||||
"Message non envoyé": "Mensaje no enviado",
|
||||
"Validation par clé ⚠️": "Validación por clave ⚠️",
|
||||
"La connexion est confirmée à l'aide d'une clé transmise par messagerie. Depuis le groupe sélectionné et les rôles supérieurs.": "La conexión se confirma con una clave enviada por mensajería. Desde el grupo seleccionado y los grupos superiores.",
|
||||
"La connexion est confirmée à l'aide d'une clé transmise par messagerie. Depuis le rôle sélectionné et les rôles supérieurs.": "La conexión se confirma con una clave enviada por mensajería. Desde el grupo seleccionado y los grupos superiores.",
|
||||
"Envoi du message d'authentification": "Envío del mensaje de autenticación",
|
||||
"Connexion réussie": "Conexión exitosa",
|
||||
"Erreur de mot de passe": "Error de contraseña",
|
||||
|
@ -295,7 +295,7 @@
|
||||
"Importer dans": "",
|
||||
"Importer des utilisateurs en masse": "",
|
||||
"Impossible d'ouvrir l'archive": "",
|
||||
"Impossible de modifier votre propre groupe.": "",
|
||||
"Impossible de modifier votre propre rôle.": "",
|
||||
"Impossible de soumettre le formulaire, car il contient des erreurs": "",
|
||||
"Impossible de supprimer une page contenant des pages enfants": "",
|
||||
"Impossible de supprimer votre propre compte": "",
|
||||
@ -686,7 +686,7 @@
|
||||
"Modèle": "",
|
||||
"Bouton de navigation droit": "",
|
||||
"Bouton de navigation gauche": "",
|
||||
"Groupes / Profils": "",
|
||||
"Rôles/ Profils": "",
|
||||
"Prénom commence par": "",
|
||||
"Nom commence par": "",
|
||||
"Impossible de réinitialiser le mot de passe de ce compte !": "",
|
||||
@ -695,7 +695,7 @@
|
||||
"Message de test envoyé avec succès": "",
|
||||
"Message non envoyé": "",
|
||||
"Validation par clé ⚠️": "",
|
||||
"La connexion est confirmée à l'aide d'une clé transmise par messagerie. Depuis le groupe sélectionné et les rôles supérieurs.": "",
|
||||
"La connexion est confirmée à l'aide d'une clé transmise par messagerie. Depuis le rôle sélectionné et les rôles supérieurs.": "",
|
||||
"Envoi du message d'authentification": "",
|
||||
"Connexion réussie": "",
|
||||
"Erreur de mot de passe": "",
|
||||
|
@ -542,10 +542,10 @@ class page extends common
|
||||
}
|
||||
}
|
||||
}
|
||||
// Détermine le groupe selon que la page est une barre ou une page standard
|
||||
// Détermine le rôle selon que la page est une barre ou une page standard
|
||||
$role = $this->getinput('pageEditBlock') !== 'bar' ? $this->getInput('pageEditGroup', helper::FILTER_INT) : 0;
|
||||
|
||||
//Détermine le profil d'utilisateur en fonction du groupe sinon le groupe vaut 0
|
||||
//Détermine le profil d'utilisateur en fonction du rôle sinon le rôle vaut 0
|
||||
$profil = 0;
|
||||
if (
|
||||
$this->getinput('pageEditBlock') !== 'bar' ||
|
||||
|
@ -1,4 +1,4 @@
|
||||
id;nom;prenom;email;groupe;profil;passe;tags
|
||||
id;nom;prenom;email;role;profil;passe;tags
|
||||
jm1;Membre1;Jean;jean.membre1@email.fr;1;1;jEan05;"adhérent"
|
||||
am2;Membre2;Albert;albert.membre2@email.fr;1;1;alBertAG;"adhérent"
|
||||
jrediteur;Editeur;Robert;robert.editeur@email.fr;2;1;roBert54;"trésorier"
|
||||
|
|
@ -209,7 +209,7 @@ class user extends common
|
||||
// L'utilisateur n'existe pas
|
||||
$this->getData(['user', $this->getUrl(2)]) === null
|
||||
// Groupe insuffisant
|
||||
and ($this->getUrl('role') < self::ROLE_EDITOR)
|
||||
and ($this->getUser('role') < self::ROLE_EDITOR)
|
||||
) {
|
||||
// Valeurs en sortie
|
||||
$this->addOutput([
|
||||
@ -411,10 +411,10 @@ class user extends common
|
||||
and (
|
||||
// Impossible de s'auto-éditer
|
||||
($this->getUser('id') === $this->getUrl(2)
|
||||
and $this->getUrl('role') <= self::ROLE_VISITOR
|
||||
and $this->getUser('role') <= self::ROLE_VISITOR
|
||||
)
|
||||
// Impossible d'éditer un autre utilisateur
|
||||
or ($this->getUrl('role') < self::ROLE_EDITOR)
|
||||
or ($this->getUser('role') < self::ROLE_EDITOR)
|
||||
)
|
||||
) {
|
||||
// Valeurs en sortie
|
||||
@ -465,7 +465,7 @@ class user extends common
|
||||
}
|
||||
}
|
||||
|
||||
// Modification du groupe
|
||||
// Modification du rôle
|
||||
if (
|
||||
$this->getUser('role') === self::ROLE_ADMIN
|
||||
and $this->getUrl(2) !== $this->getUser('id')
|
||||
@ -702,8 +702,8 @@ class user extends common
|
||||
template::button('userDelete' . $userId, [
|
||||
'class' => 'userDelete buttonRed',
|
||||
'href' => helper::baseUrl() . 'user/delete/' . $userId,
|
||||
'value' => template::ico('trash'),
|
||||
'help' => 'Supprimer'
|
||||
'value' => template::ico('user-times'),
|
||||
'help' => 'Désinscrire'
|
||||
])
|
||||
];
|
||||
|
||||
@ -736,7 +736,7 @@ class user extends common
|
||||
{
|
||||
|
||||
// Ne pas supprimer un profil utililsé
|
||||
// recherche les membres du groupe
|
||||
// recherche les membres du rôle
|
||||
$roles = helper::arrayColumn($this->getData(['user']), 'role');
|
||||
$roles = array_keys($roles, $this->getUrl(2));
|
||||
$profilUsed = true;
|
||||
@ -803,7 +803,7 @@ class user extends common
|
||||
}
|
||||
|
||||
/**
|
||||
* Edition d'un groupe
|
||||
* Edition d'un rôle
|
||||
*/
|
||||
public function profilEdit()
|
||||
{
|
||||
@ -1019,7 +1019,7 @@ class user extends common
|
||||
$this->getUser('permission', __CLASS__, __FUNCTION__) === true &&
|
||||
$this->isPost()
|
||||
) {
|
||||
// Nombre de profils de ce groupe
|
||||
// Nombre de profils de ce rôle
|
||||
$role = $this->getInput('profilAddGroup');
|
||||
$profil = count($this->getData(['profil', $role]));
|
||||
// Gère le chemin
|
||||
@ -1200,7 +1200,7 @@ class user extends common
|
||||
public function profilDelete()
|
||||
{
|
||||
// Ne pas supprimer un profil utililsé
|
||||
// recherche les membres du groupe
|
||||
// recherche les membres du rôle
|
||||
$roles = helper::arrayColumn($this->getData(['user']), 'role');
|
||||
$roles = array_keys($roles, $this->getUrl(2));
|
||||
$flag = true;
|
||||
@ -1303,7 +1303,7 @@ class user extends common
|
||||
$this->setData(['user', $userId, 'connectTimeout', 0], false);
|
||||
}
|
||||
// Check la présence des variables et contrôle du blocage du compte si valeurs dépassées
|
||||
// Vérification du mot de passe et du groupe
|
||||
// Vérification du mot de passe et du rôle
|
||||
if (
|
||||
($this->getData(['user', $userId, 'connectTimeout']) + $this->getData(['config', 'connect', 'timeout'])) < time()
|
||||
and $this->getData(['user', $userId, 'connectFail']) < $this->getData(['config', 'connect', 'attempt'])
|
||||
@ -1423,8 +1423,8 @@ class user extends common
|
||||
$notification = helper::translate('Captcha, identifiant ou mot de passe incorrects');
|
||||
$logStatus = $captcha === true ? helper::translate('Erreur de mot de passe') : helper::translate('Erreur de captcha');
|
||||
// Cas 1 le nombre de connexions est inférieur aux tentatives autorisées : incrément compteur d'échec
|
||||
if ($this->getData(['user', $userId, 'connectFail']) < $this->getData(['config', 'connect', 'attempt'], false)) {
|
||||
$this->setData(['user', $userId, 'connectFail', $this->getdata(['user', $userId, 'connectFail']) + 1], false);
|
||||
if ($this->getData(['user', $userId, 'connectFail']) < $this->getData(['config', 'connect', 'attempt'])) {
|
||||
$this->setData(['user', $userId, 'connectFail', $this->getdata(['user', $userId, 'connectFail']) + 1]);
|
||||
}
|
||||
// Cas 2 la limite du nombre de connexion est atteinte : placer le timer
|
||||
if ($this->getdata(['user', $userId, 'connectFail']) == $this->getData(['config', 'connect', 'attempt'])) {
|
||||
@ -1661,7 +1661,7 @@ class user extends common
|
||||
array_key_exists('id', $item)
|
||||
and array_key_exists('prenom', $item)
|
||||
and array_key_exists('nom', $item)
|
||||
and array_key_exists('groupe', $item)
|
||||
and array_key_exists('role', $item)
|
||||
and array_key_exists('profil', $item)
|
||||
and array_key_exists('email', $item)
|
||||
and array_key_exists('passe', $item)
|
||||
@ -1670,16 +1670,16 @@ class user extends common
|
||||
and isset($item['nom'])
|
||||
and isset($item['prenom'])
|
||||
and isset($item['email'])
|
||||
and isset($item['groupe'])
|
||||
and isset($item['role'])
|
||||
and isset($item['profil'])
|
||||
and isset($item['passe'])
|
||||
and isset($item['tags'])
|
||||
) {
|
||||
// Validation du groupe
|
||||
$item['groupe'] = (int) $item['groupe'];
|
||||
// Validation du rôle
|
||||
$item['role'] = (int) $item['role'];
|
||||
$item['profil'] = (int) $item['profil'];
|
||||
$item['groupe'] = ($item['groupe'] >= self::ROLE_BANNED and $item['groupe'] <= self::ROLE_ADMIN)
|
||||
? $item['groupe'] : 1;
|
||||
$item['role'] = ($item['role'] >= self::ROLE_BANNED and $item['role'] <= self::ROLE_ADMIN)
|
||||
? $item['role'] : 1;
|
||||
// L'utilisateur existe
|
||||
$userId = helper::filter($item['id'], helper::FILTER_ID);
|
||||
if ($this->getData(['user', $userId])) {
|
||||
@ -1690,7 +1690,7 @@ class user extends common
|
||||
$userId,
|
||||
$item['nom'],
|
||||
$item['prenom'],
|
||||
self::$roles[$item['groupe']],
|
||||
self::$roles[$item['role']],
|
||||
empty($this->getData(['profil', $this->getData(['user', $userId, 'role']), $this->getData(['user', $userId, 'profil']), 'name']))
|
||||
? helper::translate(self::$roles[(int) $this->getData(['user', $userId, 'role'])])
|
||||
: $this->getData(['profil', $this->getData(['user', $userId, 'role']), $this->getData(['user', $userId, 'profil']), 'name']),
|
||||
@ -1709,7 +1709,7 @@ class user extends common
|
||||
[
|
||||
'firstname' => $item['prenom'],
|
||||
'forgot' => 0,
|
||||
'role' => $item['groupe'],
|
||||
'role' => $item['role'],
|
||||
'profil' => $item['profil'],
|
||||
'lastname' => $item['nom'],
|
||||
'mail' => $item['email'],
|
||||
@ -1753,7 +1753,7 @@ class user extends common
|
||||
$userId,
|
||||
$item['nom'],
|
||||
$item['prenom'],
|
||||
self::$roles[$item['groupe']],
|
||||
self::$roles[$item['role']],
|
||||
empty($this->getData(['profil', $this->getData(['user', $userId, 'role']), $this->getData(['user', $userId, 'profil']), 'name']))
|
||||
? helper::translate(self::$roles[(int) $this->getData(['user', $userId, 'role'])])
|
||||
: $this->getData(['profil', $this->getData(['user', $userId, 'role']), $this->getData(['user', $userId, 'profil']), 'name']),
|
||||
|
@ -6,41 +6,40 @@
|
||||
'value' => template::ico('home')
|
||||
]); ?>
|
||||
</div>
|
||||
<div class="col2 offset2">
|
||||
<?php echo template::button('userImport', [
|
||||
'href' => helper::baseUrl() . 'user/import',
|
||||
'ico' => 'users',
|
||||
'value' => 'Importer en masse'
|
||||
]); ?>
|
||||
</div>
|
||||
<div class="col2">
|
||||
<?php echo template::button('userDeleteAll', [
|
||||
'class' => 'userDeleteAll buttonRed',
|
||||
'href' => helper::baseUrl() . 'user/usersDelete/' . $this->getUrl(2),
|
||||
'ico' => 'users',
|
||||
'value' => 'Désinscrire en masse',
|
||||
]) ?>
|
||||
</div>
|
||||
<div class="col2">
|
||||
<div class="col1 offset6">
|
||||
<?php echo template::button('userTag', [
|
||||
'href' => helper::baseUrl() . 'user/tag',
|
||||
'ico' => 'tags',
|
||||
'value' => 'Étiquettes',
|
||||
'help' => 'Filtrer les utilisateurs avec des tags'
|
||||
'value' => template::ico('tags'),
|
||||
'help' => 'Ajouter des étiquettes'
|
||||
]); ?>
|
||||
</div>
|
||||
<div class="col2">
|
||||
<div class="col1">
|
||||
<?php echo template::button('userGroup', [
|
||||
'href' => helper::baseUrl() . 'user/profil',
|
||||
'ico' => 'lock',
|
||||
'value' => 'Profils',
|
||||
'value' => template::ico('lock'),
|
||||
'help' => 'Permissions par profils'
|
||||
]); ?>
|
||||
</div>
|
||||
<div class="col1">
|
||||
<?php echo template::button('userDeleteAll', [
|
||||
'class' => 'userDeleteAll buttonRed',
|
||||
'href' => helper::baseUrl() . 'user/usersDelete/' . $this->getUrl(2),
|
||||
'value' => template::ico('user-times'),
|
||||
'help' => 'Désinscrire en masse',
|
||||
]) ?>
|
||||
</div>
|
||||
<div class="col1">
|
||||
<?php echo template::button('userImport', [
|
||||
'href' => helper::baseUrl() . 'user/import',
|
||||
'value' => template::ico('download'),
|
||||
'class' => 'buttonGreen',
|
||||
'help' => 'Importer en masse'
|
||||
]); ?>
|
||||
</div>
|
||||
<div class="col1">
|
||||
<?php echo template::button('userAdd', [
|
||||
'href' => helper::baseUrl() . 'user/add',
|
||||
'value' => template::ico('plus'),
|
||||
'value' => template::ico('user-plus'),
|
||||
'class' => 'buttonGreen',
|
||||
'help' => 'Ajouter un utilisateur'
|
||||
]); ?>
|
||||
@ -50,7 +49,7 @@
|
||||
<div class="row">
|
||||
<div class="col3">
|
||||
<?php echo template::select('userFilterGroup', user::$usersGroups, [
|
||||
'label' => 'Groupes / Profils',
|
||||
'label' => 'Rôles/ Profils',
|
||||
'selected' => isset($_POST['userFilterGroup']) ? $_POST['userFilterGroup'] : 'all',
|
||||
]); ?>
|
||||
</div>
|
||||
@ -68,4 +67,4 @@
|
||||
</div>
|
||||
</div>
|
||||
<?php echo template::formClose(); ?>
|
||||
<?php echo template::table([3, 2, 2, 2, 2, 1, 1], user::$users, ['Nom', 'Rôle', 'Profil', 'Étiquettes', 'Dernière connexion', '', ''], ['id' => 'dataTables'], ['name','role','profile','tag','data-timestamp','edit','delete']); ?>
|
||||
<?php echo template::table([2, 2, 2, 2, 2, 1, 1], user::$users, ['Nom', 'Rôle', 'Profil', 'Étiquette', 'Date connexion', '', ''], ['id' => 'dataTables'], ['name', 'role', 'profile', 'tag', 'data-timestamp', 'edit', 'delete']); ?>
|
@ -28,7 +28,7 @@
|
||||
<div class="row" id="Bfrtip">
|
||||
<div class="col3">
|
||||
<?php echo template::select('usersFilterGroup', user::$usersGroups, [
|
||||
'label' => 'Groupes / Profils',
|
||||
'label' => 'Rôles/ Profils',
|
||||
'selected' => isset($_POST['usersFilterGroup']) ? $_POST['usersFilterGroup'] : 'all',
|
||||
]); ?>
|
||||
</div>
|
||||
|
@ -18,7 +18,7 @@
|
||||
<div class="row" id="Bfrtip">
|
||||
<div class="col3">
|
||||
<?php echo template::select('usersFilterGroup', user::$usersGroups, [
|
||||
'label' => 'Groupes / Profils',
|
||||
'label' => 'Rôles/ Profils',
|
||||
'selected' => isset($_POST['usersFilterGroup']) ? $_POST['usersFilterGroup'] : 'all',
|
||||
]); ?>
|
||||
</div>
|
||||
|
4
core/vendor/filemanager/config/config.php
vendored
4
core/vendor/filemanager/config/config.php
vendored
@ -17,7 +17,7 @@ date_default_timezone_set('Europe/Paris');
|
||||
$lang = isset($_GET['lang']) ? $_GET['lang'] : 'fr_FR';
|
||||
setlocale(LC_CTYPE, $lang);
|
||||
|
||||
/* Lecture du groupe de l'utilisateur connecté pour attribuer les droits et les dossiers */
|
||||
/* Lecture du rôle de l'utilisateur connecté pour attribuer les droits et les dossiers */
|
||||
$userId = $_COOKIE['ZWII_USER_ID'];
|
||||
$courseId = isset($_GET['fldr']) ? $_GET['fldr'] : '';
|
||||
$u = json_decode(file_get_contents('../../../site/data/user.json'), true);
|
||||
@ -88,7 +88,7 @@ if (!is_null($u) && !is_null($g) && !is_null($userId)) {
|
||||
}
|
||||
}
|
||||
|
||||
/* Fin lecture du groupe de l'utilisateur connecté pour attribuer les droits et les dossiers */
|
||||
/* Fin lecture du rôle de l'utilisateur connecté pour attribuer les droits et les dossiers */
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
|
3
core/vendor/zwiico/css/zwiico-codes.css
vendored
3
core/vendor/zwiico/css/zwiico-codes.css
vendored
@ -77,6 +77,9 @@
|
||||
.zwiico-twitch:before { content: '\f1e8'; } /* '' */
|
||||
.zwiico-brush:before { content: '\f1fc'; } /* '' */
|
||||
.zwiico-pinterest:before { content: '\f231'; } /* '' */
|
||||
.zwiico-user-plus:before { content: '\f234'; } /* '' */
|
||||
.zwiico-user-times:before { content: '\f235'; } /* '' */
|
||||
.zwiico-reddit:before { content: '\f281'; } /* '' */
|
||||
.zwiico-shopping-basket:before { content: '\f291'; } /* '' */
|
||||
.zwiico-address-book:before { content: '\f2b9'; } /* '' */
|
||||
.zwiico-logout:before { content: '🎓'; } /* '\1f393' */
|
||||
|
15
core/vendor/zwiico/css/zwiico-embedded.css
vendored
15
core/vendor/zwiico/css/zwiico-embedded.css
vendored
File diff suppressed because one or more lines are too long
3
core/vendor/zwiico/css/zwiico-ie7-codes.css
vendored
3
core/vendor/zwiico/css/zwiico-ie7-codes.css
vendored
@ -76,6 +76,9 @@
|
||||
.zwiico-twitch { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
||||
.zwiico-brush { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
||||
.zwiico-pinterest { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
||||
.zwiico-user-plus { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
||||
.zwiico-user-times { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
||||
.zwiico-reddit { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
||||
.zwiico-shopping-basket { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
||||
.zwiico-address-book { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
||||
.zwiico-logout { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '🎓 '); }
|
||||
|
3
core/vendor/zwiico/css/zwiico-ie7.css
vendored
3
core/vendor/zwiico/css/zwiico-ie7.css
vendored
@ -87,6 +87,9 @@
|
||||
.zwiico-twitch { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
||||
.zwiico-brush { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
||||
.zwiico-pinterest { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
||||
.zwiico-user-plus { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
||||
.zwiico-user-times { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
||||
.zwiico-reddit { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
||||
.zwiico-shopping-basket { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
||||
.zwiico-address-book { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
||||
.zwiico-logout { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '🎓 '); }
|
||||
|
17
core/vendor/zwiico/css/zwiico.css
vendored
17
core/vendor/zwiico/css/zwiico.css
vendored
@ -1,12 +1,12 @@
|
||||
@charset "UTF-8";
|
||||
@font-face {
|
||||
font-family: 'zwiico';
|
||||
src: url('../font/zwiico.eot?24931130');
|
||||
src: url('../font/zwiico.eot?24931130#iefix') format('embedded-opentype'),
|
||||
url('../font/zwiico.woff2?24931130') format('woff2'),
|
||||
url('../font/zwiico.woff?24931130') format('woff'),
|
||||
url('../font/zwiico.ttf?24931130') format('truetype'),
|
||||
url('../font/zwiico.svg?24931130#zwiico') format('svg');
|
||||
src: url('../font/zwiico.eot?22250182');
|
||||
src: url('../font/zwiico.eot?22250182#iefix') format('embedded-opentype'),
|
||||
url('../font/zwiico.woff2?22250182') format('woff2'),
|
||||
url('../font/zwiico.woff?22250182') format('woff'),
|
||||
url('../font/zwiico.ttf?22250182') format('truetype'),
|
||||
url('../font/zwiico.svg?22250182#zwiico') format('svg');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
@ -16,7 +16,7 @@
|
||||
@media screen and (-webkit-min-device-pixel-ratio:0) {
|
||||
@font-face {
|
||||
font-family: 'zwiico';
|
||||
src: url('../font/zwiico.svg?24931130#zwiico') format('svg');
|
||||
src: url('../font/zwiico.svg?22250182#zwiico') format('svg');
|
||||
}
|
||||
}
|
||||
*/
|
||||
@ -132,6 +132,9 @@
|
||||
.zwiico-twitch:before { content: '\f1e8'; } /* '' */
|
||||
.zwiico-brush:before { content: '\f1fc'; } /* '' */
|
||||
.zwiico-pinterest:before { content: '\f231'; } /* '' */
|
||||
.zwiico-user-plus:before { content: '\f234'; } /* '' */
|
||||
.zwiico-user-times:before { content: '\f235'; } /* '' */
|
||||
.zwiico-reddit:before { content: '\f281'; } /* '' */
|
||||
.zwiico-shopping-basket:before { content: '\f291'; } /* '' */
|
||||
.zwiico-address-book:before { content: '\f2b9'; } /* '' */
|
||||
.zwiico-logout:before { content: '🎓'; } /* '\1f393' */
|
||||
|
BIN
core/vendor/zwiico/font/zwiico.eot
vendored
BIN
core/vendor/zwiico/font/zwiico.eot
vendored
Binary file not shown.
8
core/vendor/zwiico/font/zwiico.svg
vendored
8
core/vendor/zwiico/font/zwiico.svg
vendored
@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg xmlns="http://www.w3.org/2000/svg">
|
||||
<metadata>Copyright (C) 2024 by original authors @ fontello.com</metadata>
|
||||
<metadata>Copyright (C) 2025 by original authors @ fontello.com</metadata>
|
||||
<defs>
|
||||
<font id="zwiico" horiz-adv-x="1000" >
|
||||
<font-face font-family="zwiico" font-weight="400" font-stretch="normal" units-per-em="1000" ascent="850" descent="-150" />
|
||||
@ -160,10 +160,16 @@
|
||||
|
||||
<glyph glyph-name="pinterest" unicode="" d="M0 517q0 60 21 113t58 93 85 69 103 44 113 14q88 0 164-37t123-108 47-160q0-54-10-105t-34-99-56-83-80-58-106-21q-38 0-75 18t-54 49q-5-22-15-63t-14-53-11-40-15-39-17-35-26-44-35-48l-7-3-5 6q-9 88-9 105 0 51 12 115t37 161 29 113q-18 36-18 94 0 47 29 87t74 41q34 0 53-23t19-57q0-37-24-106t-25-105q0-35 25-58t61-23q31 0 57 14t44 38 31 53 21 61 11 62 4 56q0 96-61 150t-160 54q-111 0-186-72t-75-183q0-25 7-48t15-36 15-26 7-17q0-15-8-40t-21-25q-1 0-9 1-29 9-51 31t-34 53-18 60-6 60z" horiz-adv-x="714.3" />
|
||||
|
||||
<glyph glyph-name="user-plus" unicode="" d="M393 350q-89 0-152 63t-62 151 62 152 152 63 151-63 63-152-63-151-151-63z m536-71h196q7 0 13-6t5-12v-107q0-8-5-13t-13-5h-196v-197q0-7-6-12t-12-6h-107q-8 0-13 6t-5 12v197h-197q-7 0-12 5t-6 13v107q0 7 6 12t12 6h197v196q0 7 5 13t13 5h107q7 0 12-5t6-13v-196z m-411-125q0-29 21-51t50-21h143v-133q-38-28-95-28h-488q-67 0-108 39t-41 106q0 30 2 58t8 61 15 60 24 55 34 45 48 30 62 11q11 0 22-10 44-34 86-51t92-17 92 17 86 51q11 10 22 10 73 0 121-54h-125q-29 0-50-21t-21-50v-107z" horiz-adv-x="1142.9" />
|
||||
|
||||
<glyph glyph-name="user-times" unicode="" d="M393 350q-89 0-152 63t-62 151 62 152 152 63 151-63 63-152-63-151-151-63z m601-179l139-138q5-5 5-13 0-8-5-13l-76-76q-5-5-12-5-8 0-13 5l-139 139-139-139q-5-5-13-5-7 0-12 5l-76 76q-5 5-5 13 0 8 5 13l139 138-139 139q-5 5-5 13 0 8 5 13l76 75q5 5 12 5 8 0 13-5l139-139 139 139q5 5 13 5 7 0 12-5l76-75q5-5 5-13 0-8-5-13z m-278 0l-101-101q-21-20-21-50 0-30 21-51l46-46q-11-2-24-2h-488q-67 0-108 39t-41 106q0 30 2 58t8 61 15 60 24 55 34 45 48 30 62 11q11 0 22-10 86-68 178-68t178 68q11 10 22 10 15 0 31-4-15-15-22-27t-8-32q0-30 21-51z" horiz-adv-x="1142.9" />
|
||||
|
||||
<glyph glyph-name="reddit" unicode="" d="M1000 378q0-32-16-59t-45-40q7-26 7-54 0-86-60-160t-162-117-223-42-223 42-162 117-59 160q0 26 6 53-28 13-46 41t-17 59q0 46 32 78t79 33q48 0 81-35 122 85 287 90l65 291q2 7 9 12t14 2l206-45q10 21 30 33t44 13q35 0 59-24t25-59-25-59-59-25-59 24-24 59l-186 42-58-264q167-5 289-89 33 34 80 34 46 0 79-33t32-78z m-767-111q0-35 25-59t58-25 60 25 24 59-24 59-60 24q-34 0-58-25t-25-58z m452-198q6 6 6 14t-6 15q-5 5-14 5t-14-5q-23-24-68-35t-89-11-89 11-68 35q-6 5-14 5t-14-5q-6-6-6-14t6-15q24-24 66-38t68-17 51-2 51 2 68 17 66 38z m-1 114q34 0 59 25t24 59q0 34-25 58t-58 25q-35 0-60-24t-24-59 24-59 60-25z" horiz-adv-x="1000" />
|
||||
|
||||
<glyph glyph-name="shopping-basket" unicode="" d="M1071 421q30 0 51-20t21-51-21-50-51-21h-8l-64-370q-5-26-25-42t-45-17h-715q-25 0-45 17t-25 42l-64 370h-9q-29 0-50 21t-21 50 21 51 50 20h1000z m-800-446q14 1 24 13t9 26l-18 232q-1 14-13 24t-26 9-24-13-9-26l18-232q1-14 12-24t24-9h3z m229 36v232q0 14-11 25t-25 11-25-11-10-25v-232q0-15 10-25t25-11 25 11 11 25z m214 0v232q0 14-10 25t-25 11-25-11-11-25v-232q0-15 11-25t25-11 25 11 10 25z m197-3l18 232q1 15-9 26t-24 13-26-9-13-24l-18-232q-1-15 9-26t24-13h3q14 0 24 9t12 24z m-645 679l-52-230h-74l56 246q11 49 50 80t89 31h94q0 15 10 25t25 11h215q14 0 25-11t10-25h94q50 0 89-31t49-80l57-246h-74l-52 230q-6 25-25 40t-44 16h-94q0-15-10-25t-25-11h-215q-14 0-25 11t-10 25h-94q-25 0-44-16t-25-40z" horiz-adv-x="1142.9" />
|
||||
|
||||
<glyph glyph-name="address-book" unicode="" d="M670 159q0 32-3 60t-12 56-22 48-35 32-51 13q-3-2-19-12t-23-13-23-11-27-10-26-3-26 3-28 10-22 11-24 13-19 12q-28 0-50-13t-36-32-22-48-12-56-3-60q0-41 23-68t58-27h321q34 0 58 27t23 68z m-96 332q0 60-43 102t-102 43-103-43-42-102q0-60 42-102t103-43 102 43 43 102z m355-302v-107q0-8-5-13t-13-5h-54v-125q0-37-26-63t-63-26h-679q-36 0-63 26t-26 63v822q0 37 26 63t63 26h679q37 0 63-26t26-63v-125h54q8 0 13-5t5-13v-107q0-8-5-13t-13-5h-54v-72h54q8 0 13-5t5-12v-108q0-7-5-12t-13-5h-54v-72h54q8 0 13-5t5-13z" horiz-adv-x="928.6" />
|
||||
|
||||
<glyph glyph-name="logout" unicode="🎓" d="M357 46q0-2 1-11t0-14-2-14-5-11-12-3h-178q-67 0-114 47t-47 114v392q0 67 47 114t114 47h178q8 0 13-5t5-13q0-2 1-11t0-15-2-13-5-11-12-3h-178q-37 0-63-26t-27-64v-392q0-37 27-63t63-27h174t6 0 7-2 4-3 4-5 1-8z m518 304q0-14-11-25l-303-304q-11-10-25-10t-25 10-11 25v161h-250q-14 0-25 11t-11 25v214q0 15 11 25t25 11h250v161q0 14 11 25t25 10 25-10l303-304q11-10 11-25z" horiz-adv-x="928.6" />
|
||||
</font>
|
||||
</defs>
|
||||
|
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 36 KiB |
BIN
core/vendor/zwiico/font/zwiico.ttf
vendored
BIN
core/vendor/zwiico/font/zwiico.ttf
vendored
Binary file not shown.
BIN
core/vendor/zwiico/font/zwiico.woff
vendored
BIN
core/vendor/zwiico/font/zwiico.woff
vendored
Binary file not shown.
BIN
core/vendor/zwiico/font/zwiico.woff2
vendored
BIN
core/vendor/zwiico/font/zwiico.woff2
vendored
Binary file not shown.
BIN
core/vendor/zwiico/fontello-2efa58ff.zip
vendored
BIN
core/vendor/zwiico/fontello-2efa58ff.zip
vendored
Binary file not shown.
BIN
core/vendor/zwiico/fontello-e9941a02.zip
vendored
Normal file
BIN
core/vendor/zwiico/fontello-e9941a02.zip
vendored
Normal file
Binary file not shown.
@ -385,7 +385,7 @@ class sondage extends common
|
||||
$singleuser !== '' ||
|
||||
$singlemail !== '')
|
||||
) {
|
||||
// Utilisateurs dans le groupe
|
||||
// Utilisateurs dans le rôle
|
||||
$to = [];
|
||||
if ($group > 0) {
|
||||
foreach ($this->getData(['user']) as $userId => $user) {
|
||||
|
@ -77,7 +77,7 @@
|
||||
'checked' => (bool) $this->getData(['module', $this->getUrl(0), 'config', 'role']) ||
|
||||
!empty($this->getData(['module', $this->getUrl(0), 'config', 'user'])) ||
|
||||
!empty($this->getData(['module', $this->getUrl(0), 'config', 'mail'])),
|
||||
'help' => 'Sélectionnez au moins un groupe, un utilisateur ou saississez un email.'
|
||||
'help' => 'Sélectionnez au moins un rôle, un utilisateur ou saississez un email.'
|
||||
]); ?>
|
||||
<div id="formConfigMailOptions" class="displayNone">
|
||||
<div class="row">
|
||||
@ -97,7 +97,7 @@
|
||||
<div class="row">
|
||||
<div class="col6 offset1">
|
||||
<?php echo template::select('formConfigGroup', $groupMembers, [
|
||||
'label' => 'Les groupes hiérarchiques à partir du groupe :',
|
||||
'label' => 'Les groupes hiérarchiques à partir du rôle :',
|
||||
'selected' => $this->getData(['module', $this->getUrl(0), 'config', 'role']),
|
||||
'help' => 'Editeurs = éditeurs + administrateurs<br/> Membres = membres + éditeurs + administrateurs'
|
||||
]); ?>
|
||||
|
Loading…
x
Reference in New Issue
Block a user