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.
|
||||
- Gestion des commentaires article par article.
|
||||
- Suppression des commentaires en masse.
|
||||
- Limiter l'édition des articles et des commentaires à l'id de l'éditeur
|
||||
- Approbation des commentaires
|
||||
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
|
||||
|
||||
git ## version 10.2.04
|
||||
|
@ -15,10 +15,10 @@
|
||||
class blog extends common {
|
||||
|
||||
// Objets
|
||||
// Propriétaire - groupe Editeur - groupe Admin
|
||||
const EDIT_ALL = '011'; // Groupes Editeurs et admins
|
||||
const EDIT_OWNER_ADMIN = '101'; // Propriétaire éditeur + groupe admin
|
||||
const EDIT_ADMIN = '001'; // Groupe des admin
|
||||
// Propriétaire - groupe
|
||||
const EDIT_ALL = '02'; // Groupes Editeurs et admins
|
||||
const EDIT_OWNER_ADMIN = '23'; // Propriétaire éditeur + groupe admin
|
||||
const EDIT_ADMIN = '03'; // Groupe des admin
|
||||
|
||||
public static $actions = [
|
||||
'add' => self::GROUP_MODERATOR,
|
||||
@ -76,11 +76,15 @@ class blog extends common {
|
||||
'10000' => '10000'
|
||||
];
|
||||
|
||||
// Permission d'un article
|
||||
public static $articlePermissions = [
|
||||
self::EDIT_ALL => 'Editeurs et administrateurs',
|
||||
self::EDIT_OWNER_ADMIN => 'Auteur et groupe des administrateurs',
|
||||
self::EDIT_ADMIN => 'Groupe des administrateurs',
|
||||
// Permissions d'un article
|
||||
public static $articleRightsAdmin = [
|
||||
self::EDIT_ALL => 'Groupes des éditeurs et des administrateurs',
|
||||
self::EDIT_OWNER_ADMIN => 'Editeur et 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 = [];
|
||||
@ -294,6 +298,24 @@ class blog extends common {
|
||||
public function config() {
|
||||
// Ids des articles par ordre de publication
|
||||
$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 = helper::pagination($articleIds, $this->getUrl(),$this->getData(['config','itemsperPage']));
|
||||
// Liste des pages
|
||||
@ -301,15 +323,19 @@ class blog extends common {
|
||||
// Articles en fonction de la pagination
|
||||
for($i = $pagination['first']; $i < $pagination['last']; $i++) {
|
||||
// Nombre de commentaires à approuver et approuvés
|
||||
if ( !empty(helper::arrayCollumn($this->getData(['module', $this->getUrl(0), $articleIds[$i], 'comment' ]),'approval', 'SORT_DESC'))) {
|
||||
$a = array_values(helper::arrayCollumn($this->getData(['module', $this->getUrl(0), $articleIds[$i], 'comment' ]),'approval', 'SORT_DESC'));
|
||||
$toApprove = count(array_keys($a,false));
|
||||
$approved = count(array_keys($a,true));
|
||||
} else {
|
||||
$approvals = [];
|
||||
// Compatibilité : vérifier si les données sont disponibles
|
||||
if ( $this->getData(['module', $this->getUrl(0), $articleIds[$i], 'comment' ,'approval' ]) !== NULL ) {
|
||||
$approvals = helper::arrayCollumn($this->getData(['module', $this->getUrl(0), $articleIds[$i], 'comment' ]),'approval', 'SORT_DESC');
|
||||
}
|
||||
if ( empty($approvals) ) {
|
||||
$toApprove = 0;
|
||||
$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
|
||||
self::$articles[] = [
|
||||
'<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),
|
||||
'userId' => $newuserid,
|
||||
'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
|
||||
if($articleId !== $this->getUrl(2)) {
|
||||
@ -443,7 +470,7 @@ class blog extends common {
|
||||
self::$users = helper::arrayCollumn($this->getData(['user']), 'firstname');
|
||||
ksort(self::$users);
|
||||
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);
|
||||
// Valeurs en sortie
|
||||
|
@ -17,3 +17,39 @@ $("#blogAddDraft").on("click", function() {
|
||||
$("#blogAddState").val(0);
|
||||
$("#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', [
|
||||
'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="col6">
|
||||
<div class="block">
|
||||
<h4>Options de publication</h4>
|
||||
<?php echo template::select('blogAddUserId', $module::$users, [
|
||||
'label' => 'Auteur',
|
||||
'selected' => $this->getUser('id'),
|
||||
'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()
|
||||
<h4>Permissions</h4>
|
||||
<?php echo template::select('blogAddRights', $this->getUser('group') === self::GROUP_ADMIN ? $module::$articleRightsAdmin : $module::$articleRightsModerator , [
|
||||
'label' => 'Droits d\'édition et de modification',
|
||||
'selected' => $this->getData(['module', $this->getUrl(0), $this->getUrl(2), 'editRights'])
|
||||
]); ?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col6">
|
||||
<div class="block">
|
||||
<h4>Options avancées</h4>
|
||||
<?php echo template::select('blogAddlength', $module::$commentLength,[
|
||||
'help' => 'Choix du nombre maximum de caractères pour chaque commentaire de l\'article, caractères de mise en forme html inclus.',
|
||||
'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' => ''
|
||||
<h4>Commentaires</h4>
|
||||
<?php echo template::checkbox('blogAddCloseComment', true, 'Fermer les commentaires', [
|
||||
'checked' => $this->getData(['module', $this->getUrl(0), $this->getUrl(2), 'closeComment'])
|
||||
]); ?>
|
||||
<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>
|
||||
|
@ -30,7 +30,9 @@ $("#blogEditDraft").on("click", function() {
|
||||
$("#blogEditForm").trigger("submit");
|
||||
});
|
||||
|
||||
|
||||
/**
|
||||
* Options de commentaires
|
||||
*/
|
||||
$("#blogEditCloseComment").on("change", function() {
|
||||
if ($(this).is(':checked') ) {
|
||||
$("#commentOptionsWrapper").slideUp();
|
||||
|
@ -76,32 +76,44 @@
|
||||
<div class="row">
|
||||
<div class="col12">
|
||||
<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 class="row">
|
||||
<div class="col5">
|
||||
<div class="col6">
|
||||
<div class="block">
|
||||
<h4>Options de publication</h4>
|
||||
<?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'])
|
||||
]); ?>
|
||||
<?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'])
|
||||
<h4>Permissions</h4>
|
||||
<?php echo template::select('blogEditRights', $this->getUser('group') === self::GROUP_ADMIN ? $module::$articleRightsAdmin : $module::$articleRightsModerator , [
|
||||
'label' => 'Droits d\'édition et de modification',
|
||||
'selected' => $this->getData(['module', $this->getUrl(0), $this->getUrl(2), 'editRights'])
|
||||
]); ?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col7">
|
||||
<div class="col6">
|
||||
<div class="block">
|
||||
<h4>Commentaires</h4>
|
||||
<?php echo template::checkbox('blogEditCloseComment', true, 'Fermer les commentaires', [
|
||||
|
Loading…
Reference in New Issue
Block a user