forked from ZwiiCMS-Team/ZwiiCMS
Approbation des commentaires
This commit is contained in:
parent
d6b2dc7e20
commit
a7efdbf6c5
@ -9,11 +9,9 @@
|
|||||||
- Nombre maximal de caractère par commentaire.
|
- Nombre maximal de caractère par commentaire.
|
||||||
- Gestion des commentaires article par article.
|
- Gestion des commentaires article par article.
|
||||||
- Suppression des commentaires en masse.
|
- Suppression des commentaires en masse.
|
||||||
|
- Limiter l'édition des articles et des commentaires à l'id de l'éditeur
|
||||||
|
- Approbation des commentaires
|
||||||
En cours :
|
En cours :
|
||||||
- Limiter l'édition des articles et des commentaires à l'id de l'éditeur
|
|
||||||
A réaliser :
|
|
||||||
- Approbation des commentaires
|
|
||||||
- Edition de l'article, afficher les signatures plutôt que les noms
|
|
||||||
- Reprise de la date d'édition, bug avec Chrome
|
- Reprise de la date d'édition, bug avec Chrome
|
||||||
|
|
||||||
git ## version 10.2.04
|
git ## version 10.2.04
|
||||||
|
@ -15,10 +15,10 @@
|
|||||||
class blog extends common {
|
class blog extends common {
|
||||||
|
|
||||||
// Objets
|
// Objets
|
||||||
// Propriétaire - groupe Editeur - groupe Admin
|
// Propriétaire - groupe
|
||||||
const EDIT_ALL = '011'; // Groupes Editeurs et admins
|
const EDIT_ALL = '02'; // Groupes Editeurs et admins
|
||||||
const EDIT_OWNER_ADMIN = '101'; // Propriétaire éditeur + groupe admin
|
const EDIT_OWNER_ADMIN = '23'; // Propriétaire éditeur + groupe admin
|
||||||
const EDIT_ADMIN = '001'; // Groupe des admin
|
const EDIT_ADMIN = '03'; // Groupe des admin
|
||||||
|
|
||||||
public static $actions = [
|
public static $actions = [
|
||||||
'add' => self::GROUP_MODERATOR,
|
'add' => self::GROUP_MODERATOR,
|
||||||
@ -76,11 +76,15 @@ class blog extends common {
|
|||||||
'10000' => '10000'
|
'10000' => '10000'
|
||||||
];
|
];
|
||||||
|
|
||||||
// Permission d'un article
|
// Permissions d'un article
|
||||||
public static $articlePermissions = [
|
public static $articleRightsAdmin = [
|
||||||
self::EDIT_ALL => 'Editeurs et administrateurs',
|
self::EDIT_ALL => 'Groupes des éditeurs et des administrateurs',
|
||||||
self::EDIT_OWNER_ADMIN => 'Auteur et groupe des administrateurs',
|
self::EDIT_OWNER_ADMIN => 'Editeur et groupe des administrateurs',
|
||||||
self::EDIT_ADMIN => 'Groupe des administrateurs',
|
self::EDIT_ADMIN => 'Groupe des administrateurs'
|
||||||
|
];
|
||||||
|
public static $articleRightsModerator = [
|
||||||
|
self::EDIT_ALL => 'Groupes des éditeurs et des administrateurs',
|
||||||
|
self::EDIT_OWNER_ADMIN => 'Editeur et groupe des administrateurs'
|
||||||
];
|
];
|
||||||
|
|
||||||
public static $users = [];
|
public static $users = [];
|
||||||
@ -294,6 +298,24 @@ class blog extends common {
|
|||||||
public function config() {
|
public function config() {
|
||||||
// Ids des articles par ordre de publication
|
// Ids des articles par ordre de publication
|
||||||
$articleIds = array_keys(helper::arrayCollumn($this->getData(['module', $this->getUrl(0)]), 'publishedOn', 'SORT_DESC'));
|
$articleIds = array_keys(helper::arrayCollumn($this->getData(['module', $this->getUrl(0)]), 'publishedOn', 'SORT_DESC'));
|
||||||
|
// Gestion des droits d'accès
|
||||||
|
$filterData=[];
|
||||||
|
foreach ($articleIds as $key => $value) {
|
||||||
|
$rights = $this->getData(['module', $this->getUrl(0), $value,'editRights']);
|
||||||
|
// Compatibilité pas de droit stocké placer droit par défaut
|
||||||
|
$rights = empty($rights) ? '02' : $rights;
|
||||||
|
// Check les droits du propriétaire
|
||||||
|
// Check les droits du groupe
|
||||||
|
if (
|
||||||
|
( substr($rights,0,1) === '2'
|
||||||
|
AND $this->getData(['module', $this->getUrl(0), $value,'userId']) === $this->getUser('id')
|
||||||
|
)
|
||||||
|
OR ( $this->getUser('group') >= substr($rights,1,1) )
|
||||||
|
) {
|
||||||
|
$filterData[] = $value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$articleIds = $filterData;
|
||||||
// Pagination
|
// Pagination
|
||||||
$pagination = helper::pagination($articleIds, $this->getUrl(),$this->getData(['config','itemsperPage']));
|
$pagination = helper::pagination($articleIds, $this->getUrl(),$this->getData(['config','itemsperPage']));
|
||||||
// Liste des pages
|
// Liste des pages
|
||||||
@ -301,15 +323,19 @@ class blog extends common {
|
|||||||
// Articles en fonction de la pagination
|
// Articles en fonction de la pagination
|
||||||
for($i = $pagination['first']; $i < $pagination['last']; $i++) {
|
for($i = $pagination['first']; $i < $pagination['last']; $i++) {
|
||||||
// Nombre de commentaires à approuver et approuvés
|
// Nombre de commentaires à approuver et approuvés
|
||||||
if ( !empty(helper::arrayCollumn($this->getData(['module', $this->getUrl(0), $articleIds[$i], 'comment' ]),'approval', 'SORT_DESC'))) {
|
$approvals = [];
|
||||||
$a = array_values(helper::arrayCollumn($this->getData(['module', $this->getUrl(0), $articleIds[$i], 'comment' ]),'approval', 'SORT_DESC'));
|
// Compatibilité : vérifier si les données sont disponibles
|
||||||
$toApprove = count(array_keys($a,false));
|
if ( $this->getData(['module', $this->getUrl(0), $articleIds[$i], 'comment' ,'approval' ]) !== NULL ) {
|
||||||
$approved = count(array_keys($a,true));
|
$approvals = helper::arrayCollumn($this->getData(['module', $this->getUrl(0), $articleIds[$i], 'comment' ]),'approval', 'SORT_DESC');
|
||||||
} else {
|
}
|
||||||
|
if ( empty($approvals) ) {
|
||||||
$toApprove = 0;
|
$toApprove = 0;
|
||||||
$approved = count($this->getData(['module', $this->getUrl(0), $articleIds[$i],'comment']));
|
$approved = count($this->getData(['module', $this->getUrl(0), $articleIds[$i],'comment']));
|
||||||
|
} else {
|
||||||
|
$a = array_values($approvals);
|
||||||
|
$toApprove = count(array_keys($a,false));
|
||||||
|
$approved = count(array_keys($a,true));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Met en forme le tableau
|
// Met en forme le tableau
|
||||||
self::$articles[] = [
|
self::$articles[] = [
|
||||||
'<a href="' . helper::baseurl() . $this->getUrl(0) . '/' . $articleIds[$i] . '" target="_blank" >' .
|
'<a href="' . helper::baseurl() . $this->getUrl(0) . '/' . $articleIds[$i] . '" target="_blank" >' .
|
||||||
@ -426,7 +452,8 @@ class blog extends common {
|
|||||||
'title' => $this->getInput('blogEditTitle', helper::FILTER_STRING_SHORT, true),
|
'title' => $this->getInput('blogEditTitle', helper::FILTER_STRING_SHORT, true),
|
||||||
'userId' => $newuserid,
|
'userId' => $newuserid,
|
||||||
'commentMaxlength' => $this->getInput('blogEditCommentMaxlength'),
|
'commentMaxlength' => $this->getInput('blogEditCommentMaxlength'),
|
||||||
'commentApprove' => $this->getInput('blogEditCommentApprove', helper::FILTER_BOOLEAN)
|
'commentApprove' => $this->getInput('blogEditCommentApprove', helper::FILTER_BOOLEAN),
|
||||||
|
'editRights' => $this->getInput('blogEditRights')
|
||||||
]]);
|
]]);
|
||||||
// Supprime l'ancien article
|
// Supprime l'ancien article
|
||||||
if($articleId !== $this->getUrl(2)) {
|
if($articleId !== $this->getUrl(2)) {
|
||||||
@ -443,7 +470,7 @@ class blog extends common {
|
|||||||
self::$users = helper::arrayCollumn($this->getData(['user']), 'firstname');
|
self::$users = helper::arrayCollumn($this->getData(['user']), 'firstname');
|
||||||
ksort(self::$users);
|
ksort(self::$users);
|
||||||
foreach(self::$users as $userId => &$userFirstname) {
|
foreach(self::$users as $userId => &$userFirstname) {
|
||||||
$userFirstname = $userFirstname . ' ' . $this->getData(['user', $userId, 'lastname']);
|
$userFirstname = $userFirstname . ' ' . $this->getData(['user', $userId, 'lastname']) . ' (' . self::$groupEdits[$this->getData(['user', $userId, 'group'])] . ')';
|
||||||
}
|
}
|
||||||
unset($userFirstname);
|
unset($userFirstname);
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
|
@ -16,4 +16,40 @@
|
|||||||
$("#blogAddDraft").on("click", function() {
|
$("#blogAddDraft").on("click", function() {
|
||||||
$("#blogAddState").val(0);
|
$("#blogAddState").val(0);
|
||||||
$("#blogAddForm").trigger("submit");
|
$("#blogAddForm").trigger("submit");
|
||||||
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Options de commentaires
|
||||||
|
*/
|
||||||
|
$("#blogAddCloseComment").on("change", function() {
|
||||||
|
if ($(this).is(':checked') ) {
|
||||||
|
$("#commentOptionsWrapper").slideUp();
|
||||||
|
} else {
|
||||||
|
$("#commentOptionsWrapper").slideDown();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$("#blogAddMailNotification").on("change", function() {
|
||||||
|
if ($(this).is(':checked') ) {
|
||||||
|
$("#blogAddGroupNotification").slideDown();
|
||||||
|
} else {
|
||||||
|
$("#blogAddGroupNotification").slideUp();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
$( document).ready(function() {
|
||||||
|
|
||||||
|
if ($("#blogAddCloseComment").is(':checked') ) {
|
||||||
|
$("#commentOptionsWrapper").slideUp();
|
||||||
|
} else {
|
||||||
|
$("#commentOptionsWrapper").slideDown();
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($("#blogAddMailNotification").is(':checked') ) {
|
||||||
|
$("#blogAddGroupNotification").slideDown();
|
||||||
|
} else {
|
||||||
|
$("#blogAddGroupNotification").slideUp();
|
||||||
|
}
|
||||||
|
|
||||||
});
|
});
|
@ -67,37 +67,75 @@
|
|||||||
<?php echo template::textarea('blogAddContent', [
|
<?php echo template::textarea('blogAddContent', [
|
||||||
'class' => 'editorWysiwyg'
|
'class' => 'editorWysiwyg'
|
||||||
]); ?>
|
]); ?>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col12">
|
||||||
|
<div class="block">
|
||||||
|
<h4>Options de publication</h4>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col4">
|
||||||
|
<?php echo template::select('blogAddCommentMaxlength', $module::$commentLength,[
|
||||||
|
'help' => 'Choix du nombre maximum de caractères pour chaque commentaire de l\'article, mise en forme html comprise.',
|
||||||
|
'label' => 'Caractères par commentaire',
|
||||||
|
'selected' => $this->getData(['module', $this->getUrl(0), $this->getUrl(2), 'commentMaxlength'])
|
||||||
|
]); ?>
|
||||||
|
</div>
|
||||||
|
<div class="col4">
|
||||||
|
<?php echo template::select('blogAddUserId', $module::$users, [
|
||||||
|
'label' => 'Auteur',
|
||||||
|
'selected' => $this->getUser('id'),
|
||||||
|
'disabled' => $this->getUser('group') !== self::GROUP_ADMIN ? true : false
|
||||||
|
]); ?>
|
||||||
|
</div>
|
||||||
|
<div class="col4">
|
||||||
|
<?php echo template::date('blogAddPublishedOn', [
|
||||||
|
'help' => 'L\'article n\'est visible qu\'après la date de publication prévue.',
|
||||||
|
'label' => 'Date de publication',
|
||||||
|
'value' => time()
|
||||||
|
]); ?>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col6">
|
<div class="col6">
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<h4>Options de publication</h4>
|
<h4>Permissions</h4>
|
||||||
<?php echo template::select('blogAddUserId', $module::$users, [
|
<?php echo template::select('blogAddRights', $this->getUser('group') === self::GROUP_ADMIN ? $module::$articleRightsAdmin : $module::$articleRightsModerator , [
|
||||||
'label' => 'Auteur',
|
'label' => 'Droits d\'édition et de modification',
|
||||||
'selected' => $this->getUser('id'),
|
'selected' => $this->getData(['module', $this->getUrl(0), $this->getUrl(2), 'editRights'])
|
||||||
'disabled' => $this->getUser('group') !== self::GROUP_ADMIN ? true : false
|
|
||||||
]); ?>
|
|
||||||
<?php echo template::date('blogAddPublishedOn', [
|
|
||||||
'help' => 'L\'article n\'est visible qu\'après la date de publication prévue.',
|
|
||||||
'label' => 'Date de publication',
|
|
||||||
'value' => time()
|
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col6">
|
<div class="col6">
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<h4>Options avancées</h4>
|
<h4>Commentaires</h4>
|
||||||
<?php echo template::select('blogAddlength', $module::$commentLength,[
|
<?php echo template::checkbox('blogAddCloseComment', true, 'Fermer les commentaires', [
|
||||||
'help' => 'Choix du nombre maximum de caractères pour chaque commentaire de l\'article, caractères de mise en forme html inclus.',
|
'checked' => $this->getData(['module', $this->getUrl(0), $this->getUrl(2), 'closeComment'])
|
||||||
'label' => 'Nombre maximum de caractères pour chaque commentaire',
|
|
||||||
'selected' => '5000'
|
|
||||||
]); ?>
|
|
||||||
<?php echo template::checkbox('blogAddCloseComment', true, 'Fermer les commentaires' ); ?>
|
|
||||||
<?php echo template::checkbox('blogAddMailNotification', true, 'Notifier le commentaire aux groupes à partir de :', [
|
|
||||||
'help' => 'Editeurs = éditeurs + administrateurs<br/> Membres = membres + éditeurs + administrateurs'
|
|
||||||
]); ?>
|
|
||||||
<?php echo template::select('blogAddGroupNotification', $module::$groupNews, [
|
|
||||||
'label' => ''
|
|
||||||
]); ?>
|
]); ?>
|
||||||
|
<div id="commentOptionsWrapper">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col12">
|
||||||
|
<?php echo template::checkbox('blogAddCommentApprove', true, 'Approbation des commentaires', [
|
||||||
|
'checked' => $this->getData(['module', $this->getUrl(0), $this->getUrl(2), 'commentApprove']),
|
||||||
|
''
|
||||||
|
]); ?>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col7">
|
||||||
|
<?php echo template::checkbox('blogAddMailNotification', true, 'Notification des nouveaux commentaires par mail aux groupes', [
|
||||||
|
'checked' => $this->getData(['module', $this->getUrl(0), $this->getUrl(2), 'mailNotification']),
|
||||||
|
]); ?>
|
||||||
|
</div>
|
||||||
|
<div class="col5">
|
||||||
|
<?php echo template::select('blogAddGroupNotification', $module::$groupNews, [
|
||||||
|
'selected' => $this->getData(['module', $this->getUrl(0), $this->getUrl(2), 'groupNotification']),
|
||||||
|
'help' => 'Editeurs = éditeurs + administrateurs<br/> Membres = membres + éditeurs + administrateurs'
|
||||||
|
]); ?>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -30,7 +30,9 @@ $("#blogEditDraft").on("click", function() {
|
|||||||
$("#blogEditForm").trigger("submit");
|
$("#blogEditForm").trigger("submit");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Options de commentaires
|
||||||
|
*/
|
||||||
$("#blogEditCloseComment").on("change", function() {
|
$("#blogEditCloseComment").on("change", function() {
|
||||||
if ($(this).is(':checked') ) {
|
if ($(this).is(':checked') ) {
|
||||||
$("#commentOptionsWrapper").slideUp();
|
$("#commentOptionsWrapper").slideUp();
|
||||||
|
@ -76,32 +76,44 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col12">
|
<div class="col12">
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<h4>Permissions</h4>
|
<h4>Options de publication</h4>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col4">
|
||||||
|
<?php echo template::select('blogEditCommentMaxlength', $module::$commentLength,[
|
||||||
|
'help' => 'Choix du nombre maximum de caractères pour chaque commentaire de l\'article, mise en forme html comprise.',
|
||||||
|
'label' => 'Caractères par commentaire',
|
||||||
|
'selected' => $this->getData(['module', $this->getUrl(0), $this->getUrl(2), 'commentMaxlength'])
|
||||||
|
]); ?>
|
||||||
|
</div>
|
||||||
|
<div class="col4">
|
||||||
|
<?php echo template::select('blogEditUserId', $module::$users, [
|
||||||
|
'label' => 'Auteur',
|
||||||
|
'selected' => $this->getUser('id'),
|
||||||
|
'disabled' => $this->getUser('group') !== self::GROUP_ADMIN ? true : false
|
||||||
|
]); ?>
|
||||||
|
</div>
|
||||||
|
<div class="col4">
|
||||||
|
<?php echo template::date('blogEditPublishedOn', [
|
||||||
|
'help' => 'L\'article n\'est visible qu\'après la date de publication prévue.',
|
||||||
|
'label' => 'Date de publication',
|
||||||
|
'value' => $this->getData(['module', $this->getUrl(0), $this->getUrl(2), 'publishedOn'])
|
||||||
|
]); ?>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col5">
|
<div class="col6">
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<h4>Options de publication</h4>
|
<h4>Permissions</h4>
|
||||||
<?php echo template::select('blogEditCommentMaxlength', $module::$commentLength,[
|
<?php echo template::select('blogEditRights', $this->getUser('group') === self::GROUP_ADMIN ? $module::$articleRightsAdmin : $module::$articleRightsModerator , [
|
||||||
'help' => 'Choix du nombre maximum de caractères pour chaque commentaire de l\'article, mise en forme html comprise.',
|
'label' => 'Droits d\'édition et de modification',
|
||||||
'label' => 'Caractères par commentaire',
|
'selected' => $this->getData(['module', $this->getUrl(0), $this->getUrl(2), 'editRights'])
|
||||||
'selected' => $this->getData(['module', $this->getUrl(0), $this->getUrl(2), 'commentMaxlength'])
|
|
||||||
]); ?>
|
|
||||||
<?php echo template::select('blogEditUserId', $module::$users, [
|
|
||||||
'label' => 'Auteur',
|
|
||||||
'selected' => $this->getUser('id'),
|
|
||||||
'disabled' => $this->getUser('group') !== self::GROUP_ADMIN ? true : false
|
|
||||||
]); ?>
|
|
||||||
<?php echo template::date('blogEditPublishedOn', [
|
|
||||||
'help' => 'L\'article n\'est visible qu\'après la date de publication prévue.',
|
|
||||||
'label' => 'Date de publication',
|
|
||||||
'value' => $this->getData(['module', $this->getUrl(0), $this->getUrl(2), 'publishedOn'])
|
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col7">
|
<div class="col6">
|
||||||
<div class="block">
|
<div class="block">
|
||||||
<h4>Commentaires</h4>
|
<h4>Commentaires</h4>
|
||||||
<?php echo template::checkbox('blogEditCloseComment', true, 'Fermer les commentaires', [
|
<?php echo template::checkbox('blogEditCloseComment', true, 'Fermer les commentaires', [
|
||||||
|
Loading…
Reference in New Issue
Block a user