'basePath' => dirname(__DIR__), | 'basePath' => dirname(__DIR__), | ||||
'name' => 'distrib', | 'name' => 'distrib', | ||||
'controllerNamespace' => 'backend\controllers', | 'controllerNamespace' => 'backend\controllers', | ||||
'defaultRoute' => 'site/index', | |||||
'defaultRoute' => 'dashboard/index', | |||||
'bootstrap' => ['log'], | 'bootstrap' => ['log'], | ||||
'modules' => [], | 'modules' => [], | ||||
'components' => [ | 'components' => [ |
// Pas de producteur défini | // Pas de producteur défini | ||||
if(!$producerCurrent) { | if(!$producerCurrent) { | ||||
$this->redirect(\Yii::$app->urlManagerFrontend->createAbsoluteUrl(['site/index'])); | |||||
$this->redirect(\Yii::$app->urlManagerFrontend->createAbsoluteUrl(['dashboard/index'])); | |||||
return false; | return false; | ||||
} | } | ||||
public function checkProductsPointsSale() | public function checkProductsPointsSale() | ||||
{ | { | ||||
if (!Product::searchCount() || !PointSale::searchCount()) { | if (!Product::searchCount() || !PointSale::searchCount()) { | ||||
$this->redirect(['site/index', 'error_products_points_sale' => 1]); | |||||
$this->redirect(['dashboard/index', 'error_products_points_sale' => 1]); | |||||
} | } | ||||
} | } | ||||
<?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. | |||||
*/ | |||||
namespace backend\controllers; | |||||
use yii\filters\AccessControl; | |||||
use yii\filters\VerbFilter; | |||||
/** | |||||
* Dashboard controller | |||||
*/ | |||||
class DashboardController extends BackendController | |||||
{ | |||||
/** | |||||
* @inheritdoc | |||||
*/ | |||||
public function behaviors() | |||||
{ | |||||
return [ | |||||
'access' => [ | |||||
'class' => AccessControl::class, | |||||
'rules' => [ | |||||
[ | |||||
'allow' => true, | |||||
'roles' => ['@'], | |||||
'matchCallback' => function ($rule, $action) { | |||||
return $this->getUserManager()->hasAccessBackend(); | |||||
} | |||||
], | |||||
], | |||||
], | |||||
'verbs' => [ | |||||
'class' => VerbFilter::class, | |||||
'actions' => [ | |||||
], | |||||
], | |||||
]; | |||||
} | |||||
/** | |||||
* Affiche le tableau de bord avec les distributions à venir et les dernières commandes passées ou modifiées. | |||||
*/ | |||||
public function actionIndex() | |||||
{ | |||||
return $this->render('index', [ | |||||
'producer' => $this->getProducerCurrent(), | |||||
'productsCount' => $this->getProductContainer()->getRepository()->countProducts(), | |||||
'pointsSaleCount' => $this->getPointSaleContainer()->getRepository()->countPointSales(), | |||||
'distributionsArray' => $this->getDistributionContainer()->getRepository()->findDistributionsDashboard(), | |||||
'ordersArray' => $this->getOrderContainer()->getRepository()->findOrdersDashboard(), | |||||
]); | |||||
} | |||||
} |
$productDistributionManager = $this->getProductDistributionManager(); | $productDistributionManager = $this->getProductDistributionManager(); | ||||
if (!Product::searchCount() || !PointSale::searchCount()) { | if (!Product::searchCount() || !PointSale::searchCount()) { | ||||
$this->redirect(['site/index', 'error_products_points_sale' => 1]); | |||||
$this->redirect(['dashboard/index', 'error_products_points_sale' => 1]); | |||||
} | } | ||||
$orders = []; | $orders = []; |
]; | ]; | ||||
} | } | ||||
/** | |||||
* Affiche le tableau de bord du backend avec les dernières commandes | |||||
* réalisées, les dernières inscriptions, la liste des clients ayant un crédit | |||||
* négatif etc. | |||||
* | |||||
* @return mixed | |||||
*/ | |||||
public function actionIndex() | |||||
{ | |||||
return $this->render('index', [ | |||||
'producer' => $this->getProducerCurrent(), | |||||
'distributionsArray' => $this->getDistributionContainer()->getRepository()->findDistributionsDashboard(), | |||||
'ordersArray' => $this->getOrderContainer()->getRepository()->findOrdersDashboard(), | |||||
'productsCount' => $this->getProductContainer()->getRepository()->countProducts(), | |||||
'pointsSaleCount' => $this->getPointSaleContainer()->getRepository()->countPointSales() | |||||
]); | |||||
} | |||||
/** | /** | ||||
* Affiche la page de connexion. | * Affiche la page de connexion. | ||||
*/ | */ | ||||
{ | { | ||||
Yii::$app->user->identity->id_producer = $id; | Yii::$app->user->identity->id_producer = $id; | ||||
Yii::$app->user->identity->save(); | Yii::$app->user->identity->save(); | ||||
$this->redirect(['site/index']); | |||||
$this->redirect(['dashboard/index']); | |||||
} | } | ||||
} | } |
$this->setTitle('Tableau de bord'); | $this->setTitle('Tableau de bord'); | ||||
?> | ?> | ||||
<div class="site-index"> | |||||
<div class="dashboard-index"> | |||||
<?php if(Yii::$app->request->get('error_products_points_sale')): ?> | <?php if(Yii::$app->request->get('error_products_points_sale')): ?> | ||||
<div class="alert alert-warning"> | <div class="alert alert-warning"> |
'template' => '<a href="{url}">{icon} {label}' . $countTicketsProducerUnreadLabel . '</a>' | 'template' => '<a href="{url}">{icon} {label}' . $countTicketsProducerUnreadLabel . '</a>' | ||||
], | ], | ||||
['label' => $producer->name, 'options' => ['class' => 'header'], 'visible' => $userManager->isCurrentProducer()], | ['label' => $producer->name, 'options' => ['class' => 'header'], 'visible' => $userManager->isCurrentProducer()], | ||||
['label' => 'Tableau de bord', 'icon' => 'dashboard', 'url' => ['/site/index'], 'visible' => $userManager->isCurrentProducer()], | |||||
['label' => 'Tableau de bord', 'icon' => 'dashboard', 'url' => ['/dashboard/index'], 'visible' => $userManager->isCurrentProducer()], | |||||
['label' => 'Distributions', 'icon' => 'calendar', 'url' => ['/distribution/index'], 'visible' => $userManager->isCurrentProducer()], | ['label' => 'Distributions', 'icon' => 'calendar', 'url' => ['/distribution/index'], 'visible' => $userManager->isCurrentProducer()], | ||||
[ | [ | ||||
'label' => 'Produits', | 'label' => 'Produits', |
opacity: 0; | opacity: 0; | ||||
} | } | ||||
/* line 4, ../sass/site/_index.scss */ | |||||
.site-index #distributions .info-box { | |||||
/* line 4, ../sass/dashboard/_index.scss */ | |||||
.dashboard-index #distributions .info-box { | |||||
border: solid 1px #e0e0e0; | border: solid 1px #e0e0e0; | ||||
} | } | ||||
/* line 6, ../sass/site/_index.scss */ | |||||
.site-index #distributions .info-box .date { | |||||
/* line 6, ../sass/dashboard/_index.scss */ | |||||
.dashboard-index #distributions .info-box .date { | |||||
text-transform: uppercase; | text-transform: uppercase; | ||||
font-size: 12px; | font-size: 12px; | ||||
line-height: 20px; | line-height: 20px; | ||||
padding-top: 10px; | padding-top: 10px; | ||||
} | } | ||||
/* line 12, ../sass/site/_index.scss */ | |||||
.site-index #distributions .info-box .date span { | |||||
/* line 12, ../sass/dashboard/_index.scss */ | |||||
.dashboard-index #distributions .info-box .date span { | |||||
display: block; | display: block; | ||||
} | } | ||||
/* line 18, ../sass/site/_index.scss */ | |||||
.site-index #distributions .info-box .date .num { | |||||
/* line 18, ../sass/dashboard/_index.scss */ | |||||
.dashboard-index #distributions .info-box .date .num { | |||||
font-size: 30px; | font-size: 30px; | ||||
padding-top: 5px; | padding-top: 5px; | ||||
padding-bottom: 5px; | padding-bottom: 5px; | ||||
} | } | ||||
/* line 30, ../sass/site/_index.scss */ | |||||
.site-index #distributions .info-box-content .buttons { | |||||
/* line 30, ../sass/dashboard/_index.scss */ | |||||
.dashboard-index #distributions .info-box-content .buttons { | |||||
margin-top: 10px; | margin-top: 10px; | ||||
} | } | ||||
.site-index { | |||||
.dashboard-index { | |||||
#distributions { | #distributions { | ||||
.info-box { | .info-box { | ||||
border: solid 1px #e0e0e0 ; | border: solid 1px #e0e0e0 ; |
@import "_adminlte.scss" ; | @import "_adminlte.scss" ; | ||||
@import "_alerts.scss" ; | @import "_alerts.scss" ; | ||||
@import "site/_index.scss" ; | |||||
@import "dashboard/_index.scss" ; | |||||
@import "subscription/_index.scss" ; | @import "subscription/_index.scss" ; | ||||
@import "subscription/_form.scss" ; | @import "subscription/_form.scss" ; | ||||
@import "product/_index.scss" ; | @import "product/_index.scss" ; |
<strong><?= Html::encode($user->email) ?></strong></p> | <strong><?= Html::encode($user->email) ?></strong></p> | ||||
<?php if($user->status == User::STATUS_PRODUCER): ?> | <?php if($user->status == User::STATUS_PRODUCER): ?> | ||||
<p>Vous pouvez dès maintenant vous connecter à l'<a href="<?= Yii::$app->urlManagerBackend->createAbsoluteUrl(['site/index']); ?>">administration</a> pour configurer votre compte producteur.</p> | |||||
<p>Vous pouvez dès maintenant vous connecter à l'<a href="<?= Yii::$app->urlManagerBackend->createAbsoluteUrl(['dashboard/index']); ?>">administration</a> pour configurer votre compte producteur.</p> | |||||
<p>Si vous avez des questions ou si vous avez besoin d'être accompagné lors de cette étape, n'hésitez pas à me contacter en réponse à ce mail ou directement au <strong><?= Yii::$app->parameterBag->get('adminPhoneNumber') ?></strong>.</p> | <p>Si vous avez des questions ou si vous avez besoin d'être accompagné lors de cette étape, n'hésitez pas à me contacter en réponse à ce mail ou directement au <strong><?= Yii::$app->parameterBag->get('adminPhoneNumber') ?></strong>.</p> | ||||
<?php else: ?> | <?php else: ?> | ||||
<?php if(!is_null($producer)): ?> | <?php if(!is_null($producer)): ?> |
<?php if($user->status == User::STATUS_PRODUCER): ?> | <?php if($user->status == User::STATUS_PRODUCER): ?> | ||||
Vous pouvez dès maintenant vous connecter à l'administration pour configurer votre compte : | Vous pouvez dès maintenant vous connecter à l'administration pour configurer votre compte : | ||||
<?= Yii::$app->urlManagerBackend->createAbsoluteUrl(['site/index']); ?> | |||||
<?= Yii::$app->urlManagerBackend->createAbsoluteUrl(['dashboard/index']); ?> | |||||
Si vous avez des questions ou si vous avez besoin d'être accompagné lors de cette étape, n'hésitez pas à me contacter en réponse à ce mail ou directement au <?= Yii::$app->parameterBag->get('adminPhoneNumber'); ?>. | Si vous avez des questions ou si vous avez besoin d'être accompagné lors de cette étape, n'hésitez pas à me contacter en réponse à ce mail ou directement au <?= Yii::$app->parameterBag->get('adminPhoneNumber'); ?>. | ||||
<?= Yii::$app->urlManagerBackend->createAbsoluteUrl(['site/index']); ?> | |||||
<?php else: ?> | <?php else: ?> | ||||
<?php if(!is_null($producer)): ?> | <?php if(!is_null($producer)): ?> | ||||
Vous pouvez maintenant passer commande chez votre producteur "<?= $producer->name ?>" : | Vous pouvez maintenant passer commande chez votre producteur "<?= $producer->name ?>" : |
// Items du menu | // Items du menu | ||||
$itemAdministration = [ | $itemAdministration = [ | ||||
'label' => '<span class="glyphicon glyphicon-cog"></span> <span class="link-text">Administration</span>', | 'label' => '<span class="glyphicon glyphicon-cog"></span> <span class="link-text">Administration</span>', | ||||
'url' => $this->getUrlManagerBackend()->createAbsoluteUrl(['site/index']), | |||||
'url' => $this->getUrlManagerBackend()->createAbsoluteUrl(['dashboard/index']), | |||||
'visible' => $userManager->isCurrentProducer(), | 'visible' => $userManager->isCurrentProducer(), | ||||
'linkOptions' => ['class' => 'btn btn-default navbar-btn'] | 'linkOptions' => ['class' => 'btn btn-default navbar-btn'] | ||||
]; | ]; |