Browse Source

[Administration] Communiquer : possibilité d'envoyer un email à tous les utilisateurs d'une distribution donnée

feature/souke
Guillaume Bourgeois 10 months ago
parent
commit
e65aa51a8b
8 changed files with 278 additions and 229 deletions
  1. +124
    -9
      backend/controllers/CommunicateController.php
  2. +0
    -90
      backend/controllers/UserController.php
  3. +9
    -6
      backend/views/communicate/email.php
  4. +0
    -77
      backend/views/communicate/index.php
  5. +56
    -0
      backend/views/communicate/paper.php
  6. +28
    -20
      backend/views/layouts/left.php
  7. +60
    -27
      backend/views/user/_menu.php
  8. +1
    -0
      backend/views/user/index.php

+ 124
- 9
backend/controllers/CommunicateController.php View File

@@ -38,6 +38,9 @@

namespace backend\controllers;

use backend\models\MailForm;
use common\helpers\GlobalParam;
use common\logic\PointSale\PointSale\Model\PointSale;
use kartik\mpdf\Pdf;
use yii\filters\AccessControl;
use yii\filters\VerbFilter;
@@ -73,18 +76,131 @@ class CommunicateController extends BackendController
];
}

/**
* Affiche la page d'accueil de la section avec un aperçu du mode d'emploi
* à imprimer.
*/
public function actionIndex()
public function actionEmail(
$idPointSale = 0,
$sectionSubscribers = 0,
$sectionInactiveUsers = 0,
$usersPointSaleLink = 0,
$usersPointSaleHasOrder = 0,
$idDistribution = 0)
{
$producerCurrent = $this->getProducerCurrent();
$userModule = $this->getUserModule();
$distributionModule = $this->getDistributionModule();
$mailForm = new MailForm();

if ($idPointSale && !$usersPointSaleLink && !$usersPointSaleHasOrder) {
$usersPointSaleLink = 1;
}
if ($idDistribution && !$usersPointSaleLink && !$usersPointSaleHasOrder) {
$usersPointSaleLink = 1;
}

if($idDistribution) {
$users = [];
$distribution = $distributionModule->getRepository()->findOneDistributionById($idDistribution);
if($distribution) {
$mailForm->id_distribution = $idDistribution;
foreach($distribution->pointSaleDistribution as $pointSaleDistribution) {
if($pointSaleDistribution->delivery) {
$usersPointSaleArray = $userModule->getRepository()->queryUsersBy([
'id_producer' => $producerCurrent->id,
'id_point_sale' => $pointSaleDistribution->id_point_sale,
'users_point_sale_link' => $usersPointSaleLink,
'users_point_sale_has_order' => $usersPointSaleHasOrder,
'newsletter' => true
])->all();

foreach($usersPointSaleArray as $user) {
$users[$user['id']] = $user;
}
}
}
}
}
else {
$users = $userModule->queryUsersBy([
'id_producer' => GlobalParam::getCurrentProducerId(),
'id_point_sale' => $idPointSale,
'users_point_sale_link' => $usersPointSaleLink,
'users_point_sale_has_order' => $usersPointSaleHasOrder,
'subscribers' => $sectionSubscribers,
'inactive' => $sectionInactiveUsers,
'newsletter' => true
])->all();
}

$usersArray = [];
foreach ($users as $key => $user) {
if (isset($user['email']) && strlen($user['email']) > 0) {
$usersArray[] = $user['email'];
} else {
unset($users[$key]);
}
}

$pointsSaleArray = PointSale::find()->where(['id_producer' => GlobalParam::getCurrentProducerId(), 'status' => 1])->all();

$pointSale = null;
if ($idPointSale) {
$pointSale = PointSale::findOne(['id' => $idPointSale]);
}


if ($mailForm->load(\Yii::$app->request->post()) && $mailForm->validate()) {
$responseSendMail = $mailForm->sendEmail($users);
if ($responseSendMail->success()) {
$this->setFlash('success', 'Votre email a bien été envoyé.');
} else {
$bodyResponseSendMail = $responseSendMail->getBody();
$emailsErrorArray = [];

if (isset($bodyResponseSendMail['Messages'])) {
foreach ($bodyResponseSendMail['Messages'] as $message) {
if ($message['Status'] != 'success') {
$emailsErrorArray[] = $message['Errors'][0]['ErrorMessage'];
}
}
}

$messageError = 'Un problème est survenu lors de l\'envoi de votre email.';
if (count($emailsErrorArray) > 0) {
$messageError .= '<br />Problème détecté : ' . implode(',', $emailsErrorArray);
}
$this->setFlash('error', $messageError);
}

return $this->redirect(['mail', 'idPointSale' => $idPointSale]);
}

$incomingDistributionsArray = $distributionModule->findDistributionsIncoming();
$incomingDistributionsDatesArray = ['0' => '--'];
foreach ($incomingDistributionsArray as $distribution) {
$incomingDistributionsDatesArray[$distribution->id] = strftime('%A %d %B %Y', strtotime($distribution->date));
}

return $this->render('email', [
'usersArray' => $usersArray,
'pointsSaleArray' => $pointsSaleArray,
'pointSale' => $pointSale,
'mailForm' => $mailForm,
'idPointSaleActive' => $idPointSale,
'idDistributionActive' => $idDistribution,
'incomingDistributionsArray' => $incomingDistributionsArray,
'incomingDistributionsDatesArray' => $incomingDistributionsDatesArray,
'sectionSubscribers' => $sectionSubscribers,
'sectionInactiveUsers' => $sectionInactiveUsers,
'usersPointSaleLink' => $usersPointSaleLink,
'usersPointSaleHasOrder' => $usersPointSaleHasOrder,
]);
}

public function actionPaper()
{
$producer = $this->getProducerCurrent();
$pointsSaleArray = $this->getPointSaleModule()->findPointSales();

return $this->render('index', [
return $this->render('paper', [
'producer' => $producer,
'pointsSaleArray' => $pointsSaleArray,
]);
}

@@ -138,5 +254,4 @@ class CommunicateController extends BackendController
// return the pdf output as per the destination setting
return $pdf->render();
}

}

+ 0
- 90
backend/controllers/UserController.php View File

@@ -487,96 +487,6 @@ class UserController extends BackendController
}
}

/**
* Affiche la liste des emails des utilisateurs liés à un point de vente donné.
*/
public function actionMail(
$idPointSale = 0,
$sectionSubscribers = 0,
$sectionInactiveUsers = 0,
$usersPointSaleLink = 0,
$usersPointSaleHasOrder = 0)
{
$userModule = $this->getUserModule();
$distributionModule = $this->getDistributionModule();

if ($idPointSale && !$usersPointSaleLink && !$usersPointSaleHasOrder) {
$usersPointSaleLink = 1;
}

$users = $userModule->queryUsersBy([
'id_producer' => GlobalParam::getCurrentProducerId(),
'id_point_sale' => $idPointSale,
'users_point_sale_link' => $usersPointSaleLink,
'users_point_sale_has_order' => $usersPointSaleHasOrder,
'subscribers' => $sectionSubscribers,
'inactive' => $sectionInactiveUsers,
'newsletter' => true
])->all();

$usersArray = [];
foreach ($users as $key => $user) {
if (isset($user['email']) && strlen($user['email']) > 0) {
$usersArray[] = $user['email'];
} else {
unset($users[$key]);
}
}

$pointsSaleArray = PointSale::find()->where(['id_producer' => GlobalParam::getCurrentProducerId(), 'status' => 1])->all();

$pointSale = null;
if ($idPointSale) {
$pointSale = PointSale::findOne(['id' => $idPointSale]);
}

$mailForm = new MailForm();
if ($mailForm->load(\Yii::$app->request->post()) && $mailForm->validate()) {
$responseSendMail = $mailForm->sendEmail($users);
if ($responseSendMail->success()) {
$this->setFlash('success', 'Votre email a bien été envoyé.');
} else {
$bodyResponseSendMail = $responseSendMail->getBody();
$emailsErrorArray = [];

if (isset($bodyResponseSendMail['Messages'])) {
foreach ($bodyResponseSendMail['Messages'] as $message) {
if ($message['Status'] != 'success') {
$emailsErrorArray[] = $message['Errors'][0]['ErrorMessage'];
}
}
}

$messageError = 'Un problème est survenu lors de l\'envoi de votre email.';
if (count($emailsErrorArray) > 0) {
$messageError .= '<br />Problème détecté : ' . implode(',', $emailsErrorArray);
}
$this->setFlash('error', $messageError);
}

return $this->redirect(['mail', 'idPointSale' => $idPointSale]);
}

$incomingDistributions = $distributionModule->findDistributionsIncoming();
$incomingDistributionsArray = ['0' => '--'];
foreach ($incomingDistributions as $distribution) {
$incomingDistributionsArray[$distribution->id] = strftime('%A %d %B %Y', strtotime($distribution->date));
}

return $this->render('emails', [
'usersArray' => $usersArray,
'pointsSaleArray' => $pointsSaleArray,
'pointSale' => $pointSale,
'mailForm' => $mailForm,
'idPointSaleActive' => $idPointSale,
'incomingDistributionsArray' => $incomingDistributionsArray,
'sectionSubscribers' => $sectionSubscribers,
'sectionInactiveUsers' => $sectionInactiveUsers,
'usersPointSaleLink' => $usersPointSaleLink,
'usersPointSaleHasOrder' => $usersPointSaleHasOrder,
]);
}

public function actionSwitchIdentity(int $id)
{
$userModule = $this->getUserModule();

backend/views/user/emails.php → backend/views/communicate/email.php View File

@@ -47,12 +47,15 @@ $this->addBreadcrumb($this->getTitle()) ;

<?=

$this->render('_menu',[
$this->render('@backend/views/user/_menu.php',[
'section' => 'email',
'idPointSaleActive' => $idPointSaleActive,
'sectionInactiveUsers' => isset($sectionInactiveUsers) ? $sectionInactiveUsers : null,
'sectionSubscribers' => isset($sectionSubscribers) ? $sectionSubscribers: null,
'pointsSaleArray' => $pointsSaleArray,
'section' => 'mail'
'idDistributionActive' => $idDistributionActive,
'incomingDistributionsArray' => $incomingDistributionsArray,
'incomingDistributionsDatesArray' => $incomingDistributionsDatesArray,
]) ;

?>
@@ -61,11 +64,11 @@ $this->render('_menu',[
<div class="col-md-6">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Envoyer un message</h3>
<h3 class="panel-title">Envoyer un email</h3>
</div>
<div class="panel-body">
<?php $form = ActiveForm::begin(); ?>
<?= $form->field($mailForm, 'id_distribution')->dropDownList($incomingDistributionsArray)
<?= $form->field($mailForm, 'id_distribution')->dropDownList($incomingDistributionsDatesArray)
->hint("Sélectionnez une distribution pour ajouter automatiquement au message un lien vers la prise de commande de cette distribution"); ?>
<?= $form->field($mailForm, 'integrate_product_list')->checkbox() ; ?>
<?= $form->field($mailForm, 'subject')->textInput() ; ?>
@@ -87,8 +90,8 @@ $this->render('_menu',[
<div class="panel-body">
<?php if($idPointSaleActive): ?>
<a class="btn btn-xs <?php if($usersPointSaleLink): ?>btn-primary<?php else: ?>btn-default<?php endif; ?>" href="<?= Yii::$app->urlManager->createUrl(['user/mail','idPointSale' => $idPointSaleActive, 'usersPointSaleLink' => 1]); ?>">Liés au point de vente</a>
<a class="btn btn-xs <?php if($usersPointSaleHasOrder): ?>btn-primary<?php else: ?>btn-default<?php endif; ?>" href="<?= Yii::$app->urlManager->createUrl(['user/mail','idPointSale' => $idPointSaleActive, 'usersPointSaleHasOrder' => 1]); ?>">Déjà commandés dans ce point de vente</a>
<a class="btn btn-xs <?php if($usersPointSaleLink): ?>btn-primary<?php else: ?>btn-default<?php endif; ?>" href="<?= Yii::$app->urlManager->createUrl(['communicate/email','idPointSale' => $idPointSaleActive, 'idDistribution' => $idDistributionActive, 'usersPointSaleLink' => 1]); ?>">Liés au point de vente</a>
<a class="btn btn-xs <?php if($usersPointSaleHasOrder): ?>btn-primary<?php else: ?>btn-default<?php endif; ?>" href="<?= Yii::$app->urlManager->createUrl(['communicate/email','idPointSale' => $idPointSaleActive, 'idDistribution' => $idDistributionActive, 'usersPointSaleHasOrder' => 1]); ?>">Déjà commandés dans ce point de vente</a>
<br /><br />
<?php endif; ?>

+ 0
- 77
backend/views/communicate/index.php View File

@@ -1,77 +0,0 @@
<?php

/**
Copyright distrib (2018)

contact@opendistrib.net

Ce logiciel est un programme informatique servant à aider les producteurs
à distribuer leur production en circuits courts.

Ce logiciel est régi par la licence CeCILL soumise au droit français et
respectant les principes de diffusion des logiciels libres. Vous pouvez
utiliser, modifier et/ou redistribuer ce programme sous les conditions
de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA
sur le site "http://www.cecill.info".

En contrepartie de l'accessibilité au code source et des droits de copie,
de modification et de redistribution accordés par cette licence, il n'est
offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons,
seule une responsabilité restreinte pèse sur l'auteur du programme, le
titulaire des droits patrimoniaux et les concédants successifs.

A cet égard l'attention de l'utilisateur est attirée sur les risques
associés au chargement, à l'utilisation, à la modification et/ou au
développement et à la reproduction du logiciel par l'utilisateur étant
donné sa spécificité de logiciel libre, qui peut le rendre complexe à
manipuler et qui le réserve donc à des développeurs et des professionnels
avertis possédant des connaissances informatiques approfondies. Les
utilisateurs sont donc invités à charger et tester l'adéquation du
logiciel à leurs besoins dans des conditions permettant d'assurer la
sécurité de leurs systèmes et ou de leurs données et, plus généralement,
à l'utiliser et l'exploiter dans les mêmes conditions de sécurité.

Le fait que vous puissiez accéder à cet en-tête signifie que vous avez
pris connaissance de la licence CeCILL, et que vous en avez accepté les
termes.
*/

use yii\helpers\Html ;

$this->setTitle('Communiquer') ;
$this->addBreadcrumb('Communiquer') ;

?>

<div class="col-md-6">
<div id="email" class="panel panel-default" v-if="date">
<div class="panel-heading">
<h3 class="panel-title">Envoyer un email</h3>
</div>
<div class="panel-body">
<p>Choisissez à quels utilisateurs vous souhaitez envoyer un email :</p>
<div>
<?= Html::a('<span class="glyphicon glyphicon-th-list"></span> Tous',['user/mail', 'idPointSale' => 0], ['class' => 'btn btn-default btn-point-sale']); ?>
<?= Html::a('<span class="glyphicon glyphicon-repeat"></span> Abonnés',['user/mail', 'sectionSubscribers' => 1], ['class' => 'btn btn-default btn-point-sale']); ?>
<?= Html::a('<span class="glyphicon glyphicon-time"></span> Inactifs',['user/mail', 'sectionInactiveUsers' => 1], ['class' => 'btn btn-default btn-point-sale']); ?>
<?php foreach($pointsSaleArray as $pointSale): ?>
<?= Html::a('<span class="glyphicon glyphicon-map-marker"></span> '.Html::encode($pointSale->name), ['user/mail', 'idPointSale' => $pointSale->id], ['class' => 'btn btn-default btn-point-sale']); ?>
<?php endforeach; ?>
</div>
</div>
</div>
</div>

<div class="col-md-6">
<div id="paper" class="panel panel-default" v-if="date">
<div class="panel-heading">
<h3 class="panel-title">Communiquer par papier</h3>
</div>
<div class="panel-body">
<p>Imprimez ce petit encart pour indiquer à vos clients l'adresse internet leur permettant de passer leurs commandes.</p>
<?php echo $this->render('instructions', ['producer' => $producer]) ; ?>
<p><?php echo Html::a('<span class="glyphicon glyphicon-download-alt"></span> Télécharger', ['communicate/instructions'], ['class'=>'btn btn-primary']) ?></p>
</div>
</div>
</div>


+ 56
- 0
backend/views/communicate/paper.php View File

@@ -0,0 +1,56 @@
<?php

/**
Copyright distrib (2018)

contact@opendistrib.net

Ce logiciel est un programme informatique servant à aider les producteurs
à distribuer leur production en circuits courts.

Ce logiciel est régi par la licence CeCILL soumise au droit français et
respectant les principes de diffusion des logiciels libres. Vous pouvez
utiliser, modifier et/ou redistribuer ce programme sous les conditions
de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA
sur le site "http://www.cecill.info".

En contrepartie de l'accessibilité au code source et des droits de copie,
de modification et de redistribution accordés par cette licence, il n'est
offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons,
seule une responsabilité restreinte pèse sur l'auteur du programme, le
titulaire des droits patrimoniaux et les concédants successifs.

A cet égard l'attention de l'utilisateur est attirée sur les risques
associés au chargement, à l'utilisation, à la modification et/ou au
développement et à la reproduction du logiciel par l'utilisateur étant
donné sa spécificité de logiciel libre, qui peut le rendre complexe à
manipuler et qui le réserve donc à des développeurs et des professionnels
avertis possédant des connaissances informatiques approfondies. Les
utilisateurs sont donc invités à charger et tester l'adéquation du
logiciel à leurs besoins dans des conditions permettant d'assurer la
sécurité de leurs systèmes et ou de leurs données et, plus généralement,
à l'utiliser et l'exploiter dans les mêmes conditions de sécurité.

Le fait que vous puissiez accéder à cet en-tête signifie que vous avez
pris connaissance de la licence CeCILL, et que vous en avez accepté les
termes.
*/

use yii\helpers\Html ;

$this->setTitle('Communiquer par papier') ;
$this->addBreadcrumb('Communiquer') ;

?>

<div id="paper" class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Encart à imprimer</h3>
</div>
<div class="panel-body">
<p>Imprimez cet encart pour indiquer à vos clients l'adresse internet leur permettant de passer leurs commandes.</p>
<?php echo $this->render('instructions', ['producer' => $producer]) ; ?>
<p><?php echo Html::a('<span class="glyphicon glyphicon-download-alt"></span> Télécharger', ['communicate/instructions'], ['class'=>'btn btn-primary']) ?></p>
</div>
</div>


+ 28
- 20
backend/views/layouts/left.php View File

@@ -62,28 +62,27 @@ $isUserCurrentGrantedAsProducer = $userModule->getAuthorizationChecker()->isGran
$producer = GlobalParam::getCurrentProducer();
$newVersionOpendistribLabel = '';
if ($producer && !$producerModule->isUpToDateWithOpendistribVersion($producer)) {
$newVersionOpendistribLabel = '<span class="pull-right-container"><small class="label pull-right bg-green">'.GlobalParam::getOpendistribVersion().'</small></span>';
$newVersionOpendistribLabel = '<span class="pull-right-container"><small class="label pull-right bg-green">' . GlobalParam::getOpendistribVersion() . '</small></span>';
}

$countTicketsProducerUnreadLabel = '';
$countTicketsProducerUnread = $ticketModule->countTicketsUnreadByUser($this->getUserCurrent());
if($countTicketsProducerUnread && !$isUserCurrentGrantedAsAdministrator) {
$countTicketsProducerUnreadLabel = '<small class="label pull-right bg-blue">'.$countTicketsProducerUnread.'</small>';
if ($countTicketsProducerUnread && !$isUserCurrentGrantedAsAdministrator) {
$countTicketsProducerUnreadLabel = '<small class="label pull-right bg-blue">' . $countTicketsProducerUnread . '</small>';
}

$developerOnlineLabel = '';
if($adminSettingBag->get('supportOnline')) {
if ($adminSettingBag->get('supportOnline')) {
$developerOnlineLabel = '<small class="label pull-right bg-green"><i class="fa fa-phone"></i></small>';
}

$countTicketsLabel = '';
$countTicketsAdminUnread = $ticketModule->getRepository()->countTicketsAdminUnreadByUser($this->getUserCurrent());
if($countTicketsAdminUnread && $isUserCurrentGrantedAsAdministrator) {
$countTicketsLabel = '<span class="pull-right-container"><small class="label pull-right bg-green">'.$countTicketsAdminUnread.'</small></span>';
}
else {
if ($countTicketsAdminUnread && $isUserCurrentGrantedAsAdministrator) {
$countTicketsLabel = '<span class="pull-right-container"><small class="label pull-right bg-green">' . $countTicketsAdminUnread . '</small></span>';
} else {
$countTicketsAdminOpen = $ticketModule->getRepository()->countTicketsAdminStatusOpen();
$countTicketsLabel = '<span class="pull-right-container"><small class="label pull-right bg-blue">'.$countTicketsAdminOpen.'</small></span>';
$countTicketsLabel = '<span class="pull-right-container"><small class="label pull-right bg-blue">' . $countTicketsAdminOpen . '</small></span>';
}

$sumUserProducerCredits = $userProducerModule->sumUserProducerCredits();
@@ -92,23 +91,23 @@ $isUserCurrentGrantedAsProducer = $userModule->getAuthorizationChecker()->isGran

$countUsersWithStatusProducerOnline = $userModule->getRepository()->countUsersStatusProducerOnline();
$countUsersWithStatusProducerOnlineLabel = '';
if($countUsersWithStatusProducerOnline) {
$countUsersWithStatusProducerOnlineLabel = '<small class="label pull-right bg-red">'.$countUsersWithStatusProducerOnline.'</small>';
if ($countUsersWithStatusProducerOnline) {
$countUsersWithStatusProducerOnlineLabel = '<small class="label pull-right bg-red">' . $countUsersWithStatusProducerOnline . '</small>';
}

$countUsersWithStatusUserOnline = $userModule->getRepository()->countUsersStatusUserOnline();
$countUsersWithStatusUserOnlineLabel = '';
if($countUsersWithStatusUserOnline) {
$countUsersWithStatusUserOnlineLabel = '<small class="label pull-right bg-blue">'.$countUsersWithStatusUserOnline.'</small>';
if ($countUsersWithStatusUserOnline) {
$countUsersWithStatusUserOnlineLabel = '<small class="label pull-right bg-blue">' . $countUsersWithStatusUserOnline . '</small>';
}

$countUsersOnlineLabel = '';
if($countUsersWithStatusProducerOnline || $countUsersWithStatusUserOnline) {
if ($countUsersWithStatusProducerOnline || $countUsersWithStatusUserOnline) {
$countUsersOnlineLabel = '<span class="pull-right-container">';
if($countUsersWithStatusUserOnline) {
if ($countUsersWithStatusUserOnline) {
$countUsersOnlineLabel .= $countUsersWithStatusUserOnlineLabel;
}
if($countUsersWithStatusProducerOnline) {
if ($countUsersWithStatusProducerOnline) {
$countUsersOnlineLabel .= $countUsersWithStatusProducerOnlineLabel;
}
$countUsersOnlineLabel .= '</span>';
@@ -162,7 +161,16 @@ $isUserCurrentGrantedAsProducer = $userModule->getAuthorizationChecker()->isGran
],
],
['label' => 'Abonnements', 'icon' => 'repeat', 'url' => ['/subscription/index'], 'visible' => $isUserCurrentGrantedAsProducer, 'active' => Yii::$app->controller->id == 'subscription'],
['label' => 'Communiquer', 'icon' => 'bullhorn', 'url' => ['/communicate/index'], 'visible' => $isUserCurrentGrantedAsProducer],
[
'label' => 'Communiquer',
'icon' => 'bullhorn',
'url' => ['/communicate/email'],
'visible' => $isUserCurrentGrantedAsProducer,
'items' => [
['label' => 'Email', 'icon' => 'paper-plane', 'url' => ['/communicate/email'], 'visible' => $isUserCurrentGrantedAsProducer],
['label' => 'Papier', 'icon' => 'print', 'url' => ['/communicate/paper'], 'visible' => $isUserCurrentGrantedAsProducer],
]
],
[
'label' => 'Documents',
'icon' => 'clone',
@@ -224,9 +232,9 @@ $isUserCurrentGrantedAsProducer = $userModule->getAuthorizationChecker()->isGran
'url' => ['/stats-admin/matomo'],
'visible' => $isUserCurrentGrantedAsAdministrator,
'items' => [
['label' => 'Matomo', 'icon' => 'line-chart', 'url' => ['/stats-admin/matomo'], 'visible' => $isUserCurrentGrantedAsAdministrator],
['label' => 'Chiffre d\'affaire', 'icon' => 'line-chart', 'url' => ['/stats-admin/turnover'], 'visible' => $isUserCurrentGrantedAsAdministrator],
['label' => 'Commandes clients', 'icon' => 'calendar', 'url' => ['/stats-admin/customer-orders'], 'visible' => $isUserCurrentGrantedAsAdministrator],
['label' => 'Matomo', 'icon' => 'line-chart', 'url' => ['/stats-admin/matomo'], 'visible' => $isUserCurrentGrantedAsAdministrator],
['label' => 'Chiffre d\'affaire', 'icon' => 'line-chart', 'url' => ['/stats-admin/turnover'], 'visible' => $isUserCurrentGrantedAsAdministrator],
['label' => 'Commandes clients', 'icon' => 'calendar', 'url' => ['/stats-admin/customer-orders'], 'visible' => $isUserCurrentGrantedAsAdministrator],
],
],
['label' => 'Paramètres', 'icon' => 'cog', 'url' => ['/setting-admin/index'], 'visible' => $isUserCurrentGrantedAsAdministrator && $featureChecker->isEnabled(Feature::ALIAS_SETTINGS)],

+ 60
- 27
backend/views/user/_menu.php View File

@@ -38,33 +38,66 @@ termes.

use yii\helpers\Html;

if($section == 'email') {
$route = 'communicate/email';
}
else {
$route = 'user/index';
}

?>

<div id="menu-users">
<div id="nav-points-sale">
<a class="btn <?php if(!$idPointSaleActive && !$sectionInactiveUsers && !$sectionSubscribers): ?>btn-primary<?php else: ?>btn-default<?php endif; ?>" href="<?= Yii::$app->urlManager->createUrl(['user/'.$section]); ?>">
<span class="glyphicon glyphicon-th-list"></span> Tous <span class="glyphicon glyphicon-triangle-bottom"></span>
</a>
<?php if(isset($sectionSubscribers) && !is_null($sectionSubscribers)): ?>
<a class="btn <?php if($sectionSubscribers): ?>btn-primary<?php else: ?>btn-default<?php endif; ?>" href="<?= Yii::$app->urlManager->createUrl(['user/'.$section,'sectionSubscribers' => 1]); ?>">
<span class="glyphicon glyphicon-repeat"></span>
Abonnés
<span class="glyphicon glyphicon-triangle-bottom"></span>
</a>
<?php endif; ?>
<?php if(isset($sectionInactiveUsers) && !is_null($sectionInactiveUsers)): ?>
<a class="btn <?php if($sectionInactiveUsers): ?>btn-primary<?php else: ?>btn-default<?php endif; ?>" href="<?= Yii::$app->urlManager->createUrl(['user/'.$section,'sectionInactiveUsers' => 1]); ?>">
<span class="glyphicon glyphicon-time"></span>
Inactifs
<span class="glyphicon glyphicon-triangle-bottom"></span>
</a>
<?php endif; ?>
<?php foreach($pointsSaleArray as $pointSale): ?>
<a class="btn <?php if($idPointSaleActive == $pointSale->id): ?>btn-primary<?php else: ?>btn-default<?php endif; ?>" href="<?= Yii::$app->urlManager->createUrl(['user/'.$section,'idPointSale' => $pointSale->id]); ?>">
<span class="glyphicon glyphicon-map-marker"></span>
<?= Html::encode($pointSale->name) ?>
<span class="glyphicon glyphicon-triangle-bottom"></span>
</a>
<?php endforeach; ?>

<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Filtre</h3>
</div>
<div class="panel-body">
<div id="menu-users">
<div id="nav-points-sale">
<h4>Général</h4>
<div>
<a class="btn btn-xs <?php if(!$idPointSaleActive && !$idDistributionActive && !$sectionInactiveUsers && !$sectionSubscribers): ?>btn-primary<?php else: ?>btn-default<?php endif; ?>" href="<?= Yii::$app->urlManager->createUrl([$route]); ?>">
<span class="glyphicon glyphicon-th-list"></span> Tous
</a>
<?php if(isset($sectionSubscribers) && !is_null($sectionSubscribers)): ?>
<a class="btn btn-xs <?php if($sectionSubscribers): ?>btn-primary<?php else: ?>btn-default<?php endif; ?>" href="<?= Yii::$app->urlManager->createUrl([$route,'sectionSubscribers' => 1]); ?>">
<span class="glyphicon glyphicon-repeat"></span>
Abonnés
</a>
<?php endif; ?>
<?php if(isset($sectionInactiveUsers) && !is_null($sectionInactiveUsers)): ?>
<a class="btn btn-xs <?php if($sectionInactiveUsers): ?>btn-primary<?php else: ?>btn-default<?php endif; ?>" href="<?= Yii::$app->urlManager->createUrl([$route,'sectionInactiveUsers' => 1]); ?>">
<span class="glyphicon glyphicon-time"></span>
Inactifs
</a>
<?php endif; ?>
</div>

<?php if(count($pointsSaleArray) > 0): ?>
<h4>Points de vente</h4>
<div>
<?php foreach($pointsSaleArray as $pointSale): ?>
<a class="btn btn-xs <?php if($idPointSaleActive == $pointSale->id): ?>btn-primary<?php else: ?>btn-default<?php endif; ?>" href="<?= Yii::$app->urlManager->createUrl([$route,'idPointSale' => $pointSale->id]); ?>">
<span class="glyphicon glyphicon-map-marker"></span>
<?= Html::encode($pointSale->name) ?>
</a>
<?php endforeach; ?>
</div>
<?php endif; ?>

<?php if($section == 'email' && count($incomingDistributionsArray) > 0): ?>
<h4>Distributions</h4>
<div>
<?php foreach($incomingDistributionsArray as $distribution): ?>
<a class="btn btn-xs <?php if($idDistributionActive == $distribution->id): ?>btn-primary<?php else: ?>btn-default<?php endif; ?>" href="<?= Yii::$app->urlManager->createUrl([$route,'idDistribution' => $distribution->id]); ?>">
<span class="glyphicon glyphicon-calendar"></span>
<?= Html::encode($incomingDistributionsDatesArray[$distribution->id]) ?>
</a>
<?php endforeach; ?>
</div>
<?php endif; ?>
</div>
</div>
</div>
</div>
</div>

+ 1
- 0
backend/views/user/index.php View File

@@ -60,6 +60,7 @@ $this->addButton(['label' => 'Nouvel utilisateur <span class="glyphicon glyphico

$this->render('_menu', [
'idPointSaleActive' => $idPointSaleActive,
'idDistributionActive' => 0,
'sectionInactiveUsers' => $sectionInactiveUsers,
'sectionSubscribers' => $sectionSubscribers,
'pointsSaleArray' => $pointsSaleArray,

Loading…
Cancel
Save