@@ -0,0 +1,11 @@ | |||
# Change Log | |||
Tous les ajouts, modifications et correctifs de ce projet sont listés dans ce fichier. | |||
## [22.10.A] - 25/10/2022 | |||
### Ajouts | |||
- [Producer] Ajout d'un captcha sur le formulaire de contact #228 | |||
### Modifications | |||
### Correctifs |
@@ -79,7 +79,39 @@ class DevelopmentController extends Controller | |||
* | |||
* @return mixed | |||
*/ | |||
public function actionIndex($status = Development::STATUS_OPEN) | |||
public function actionIndex() | |||
{ | |||
$versionsArray = []; | |||
$pathVersions = Yii::getAlias('@common/versions'); | |||
if(is_dir($pathVersions)) | |||
{ | |||
$directory = opendir($pathVersions); | |||
while( $child = readdir($directory) ){ | |||
if($child != '.' && $child != '..'){ | |||
$version = str_replace('.php', '', $child); | |||
$versionsArray[$version] = [ | |||
'version' => str_replace('.php', '', $child), | |||
'content' => $this->renderFile('@common/versions/'.$child) | |||
]; | |||
} | |||
} | |||
} | |||
krsort($versionsArray); | |||
// Producer : set latest version d'Opendistrib | |||
$producer = GlobalParam::getCurrentProducer(); | |||
$producer->latest_version_opendistrib = array_values($versionsArray)[0]['version']; | |||
$producer->save(); | |||
return $this->render('index', [ | |||
'versionsArray' => $versionsArray | |||
]); | |||
} | |||
public function actionDevelopment($status = Development::STATUS_OPEN) | |||
{ | |||
$dataProvider = new ActiveDataProvider([ | |||
'query' => Development::find() | |||
@@ -88,10 +120,10 @@ class DevelopmentController extends Controller | |||
->orderBy('date DESC'), | |||
]); | |||
return $this->render('index', [ | |||
return $this->render('development', [ | |||
'dataProvider' => $dataProvider, | |||
'status' => $status | |||
]); | |||
]); | |||
} | |||
/** |
@@ -0,0 +1,194 @@ | |||
<?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; | |||
use yii\grid\GridView; | |||
use common\models\Development; | |||
use common\models\DevelopmentPriority; | |||
use common\models\User; | |||
use common\helpers\Url; | |||
use common\helpers\GlobalParam; | |||
$this->setTitle('Développement'); | |||
$this->addButton(['label' => 'Nouveau développement <span class="glyphicon glyphicon-plus"></span>', 'url' => ['development/create'], 'class' => 'btn btn-primary']); | |||
$this->addBreadcrumb($this->getTitle()); | |||
?> | |||
<div class="development-index"> | |||
<div class="well"> | |||
Cette page liste les besoins recencés auprès des producteurs utilisant la plateforme. N'hésitez pas à me <a | |||
href="<?= Yii::$app->urlManagerFrontend->createAbsoluteUrl(['site/contact']); ?>">contacter</a> pour la | |||
faire évoluer. Les remontées de bugs sont également bienvenues.<br/> | |||
Afin d'orienter de manière pertinente le développement de la plateforme, je vous invite à définir la priorité | |||
des évolutions qui vous intéressent. | |||
</div> | |||
<ul id="tab-status-developments" class="nav nav-tabs" role="tablist"> | |||
<li role="presentation" class="<?php if ($status == Development::STATUS_OPEN): ?>active<?php endif; ?>"><a | |||
href="<?= Yii::$app->urlManager->createUrl(['development/index', 'status' => Development::STATUS_OPEN]); ?>" | |||
id="" aria-controls="" role="tab">Ouvert</a></li> | |||
<li role="presentation" class="<?php if ($status == Development::STATUS_CLOSED): ?>active<?php endif; ?>"><a | |||
href="<?= Yii::$app->urlManager->createUrl(['development/index', 'status' => Development::STATUS_CLOSED]); ?>" | |||
id="" aria-controls="" role="tab">Fermé</a></li> | |||
</ul> | |||
<?php | |||
$columns = [ | |||
[ | |||
'header' => '#', | |||
'value' => function ($model) { | |||
return '#' . $model->id; | |||
} | |||
], | |||
[ | |||
'attribute' => 'type', | |||
'header' => 'Type', | |||
'format' => 'raw', | |||
'value' => function ($model) { | |||
if ($model->type == Development::TYPE_EVOLUTION) { | |||
return '<span class="label label-success">Évolution</span>'; | |||
} else { | |||
return '<span class="label label-danger">Anomalie</span>'; | |||
} | |||
} | |||
], | |||
['attribute' => 'sujet', | |||
'format' => 'raw', | |||
'value' => function ($model) { | |||
$html = '<strong>' . Html::encode($model->subject) . '</strong>'; | |||
if (strlen($model->description)) | |||
$html .= '<br />' . nl2br(Html::encode($model->description)); | |||
return $html; | |||
}], | |||
['attribute' => 'estimation_temps', | |||
'header' => 'Estimation', | |||
'format' => 'raw', | |||
'value' => function ($model) { | |||
return intval($model->time_estimate) . ' h'; | |||
}], | |||
['attribute' => 'avancement', | |||
'format' => 'raw', | |||
'value' => function ($model) { | |||
if ($model->progress) | |||
return '<div class="progress"> | |||
<div class="progress-bar progress-bar-warning" role="progressbar" aria-valuenow="' . intval($model->progress) . '" aria-valuemin="0" aria-valuemax="100" style="width: ' . intval($model->progress) . '%;"> | |||
<span class="sr-only">' . intval($model->progress) . '% effectué</span> | |||
</div> | |||
</div> '; | |||
else | |||
return ''; | |||
}], | |||
['attribute' => 'date_delivery', | |||
'format' => 'raw', | |||
'value' => function ($model) { | |||
if (strlen($model->date_delivery)) | |||
return date('d/m/Y', strtotime($model->date_delivery)); | |||
else | |||
return ''; | |||
}], | |||
]; | |||
if (User::hasAccessBackend()) { | |||
$columns[] = [ | |||
'header' => 'Priorité', | |||
'format' => 'raw', | |||
'value' => function ($model) { | |||
$currentPriority = (isset($model->developmentPrioritYCurrentProducer)) ? $model->developmentPriorityCurrentProducer->getStrPriority() : 'Non'; | |||
$styleButton = (isset($model->developmentPriorityCurrentProducer)) ? $model->developmentPriorityCurrentProducer->getClassCssStyleButton() : 'default'; | |||
$html = '<div class="btn-group btn-group-priorite"> | |||
<button type="button" class="btn btn-priorite btn-sm btn-' . $styleButton . ' dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> | |||
' . $currentPriority . ' <span class="caret"></span> | |||
</button> | |||
<ul class="dropdown-menu"> | |||
<li><a href="' . Yii::$app->urlManager->createUrl(['development/priority', 'idDevelopment' => $model->id]) . '">Non</a></li> | |||
<li><a href="' . Yii::$app->urlManager->createUrl(['development/priority', 'idDevelopment' => $model->id, 'priority' => DevelopmentPriority::PRIORITY_LOW]) . '">Basse</a></li> | |||
<li><a href="' . Yii::$app->urlManager->createUrl(['development/priority', 'idDevelopment' => $model->id, 'priority' => DevelopmentPriority::PRIORITY_NORMAL]) . '">Normale</a></li> | |||
<li><a href="' . Yii::$app->urlManager->createUrl(['development/priority', 'idDevelopment' => $model->id, 'priority' => DevelopmentPriority::PRIORITY_HIGH]) . '">Haute</a></li> | |||
</ul> | |||
</div><br />'; | |||
if (isset($model->developmentPriority) && count($model->developmentPriority)) { | |||
foreach ($model->developmentPriority as $developmentPriority) { | |||
if ($developmentPriority->id_producer != GlobalParam::getCurrentProducerId()) | |||
$html .= '<div class="label label-priorite label-sm label-' . $developmentPriority->getClassCssStyleButton() . '">' . Html::encode($developmentPriority->producer->name) . '</div> '; | |||
} | |||
} | |||
return $html; | |||
} | |||
]; | |||
} | |||
if (User::getCurrentStatus() == USER::STATUS_ADMIN) { | |||
$columns[] = [ | |||
'class' => 'yii\grid\ActionColumn', | |||
'template' => '{update}', | |||
'headerOptions' => ['class' => 'actions'], | |||
'buttons' => [ | |||
'update' => function ($url, $model) { | |||
return '<div class="btn-group"> | |||
<a href="' . $url . '" class="btn btn-default"><span class="glyphicon glyphicon-pencil"></span> Modifier</a> | |||
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> | |||
<span class="caret"></span> | |||
<span class="sr-only">Toggle Dropdown</span> | |||
</button> | |||
<ul class="dropdown-menu"> | |||
<li><a href="' . Yii::$app->urlManager->createUrl(['development/delete', 'id' => $model->id]) . '" class=""><span class="glyphicon glyphicon-trash"></span> Supprimer</a></li> | |||
</ul> | |||
</div>'; | |||
}, | |||
], | |||
]; | |||
} | |||
?> | |||
<?= | |||
GridView::widget([ | |||
'id' => 'tab-developments', | |||
'dataProvider' => $dataProvider, | |||
'columns' => $columns | |||
]); | |||
?> | |||
</div> |
@@ -45,150 +45,27 @@ use common\helpers\Url; | |||
use common\helpers\GlobalParam; | |||
$this->setTitle('Développement'); | |||
$this->addButton(['label' => 'Nouveau développement <span class="glyphicon glyphicon-plus"></span>', 'url' => ['development/create'], 'class' => 'btn btn-primary']); | |||
$this->addBreadcrumb($this->getTitle()); | |||
?> | |||
<div class="development-index"> | |||
<div class="well"> | |||
Cette page liste les besoins recencés auprès des producteurs utilisant la plateforme. N'hésitez pas à me <a | |||
href="<?= Yii::$app->urlManagerFrontend->createAbsoluteUrl(['site/contact']); ?>">contacter</a> pour la | |||
faire évoluer. Les remontées de bugs sont également bienvenues.<br/> | |||
Afin d'orienter de manière pertinente le développement de la plateforme, je vous invite à définir la priorité | |||
des évolutions qui vous intéressent. | |||
<div class="alert alert-info"> | |||
Cette page liste les dernières versions du logiciel Opendistrib. N'hésitez pas à me | |||
<a href="<?= Yii::$app->urlManagerFrontend->createAbsoluteUrl(['site/contact']); ?>">contacter</a> pour me soumettre | |||
vos suggestions d'évolutions ou remontées de bug. | |||
</div> | |||
<ul id="tab-status-developments" class="nav nav-tabs" role="tablist"> | |||
<li role="presentation" class="<?php if ($status == Development::STATUS_OPEN): ?>active<?php endif; ?>"><a | |||
href="<?= Yii::$app->urlManager->createUrl(['development/index', 'status' => Development::STATUS_OPEN]); ?>" | |||
id="" aria-controls="" role="tab">Ouvert</a></li> | |||
<li role="presentation" class="<?php if ($status == Development::STATUS_CLOSED): ?>active<?php endif; ?>"><a | |||
href="<?= Yii::$app->urlManager->createUrl(['development/index', 'status' => Development::STATUS_CLOSED]); ?>" | |||
id="" aria-controls="" role="tab">Fermé</a></li> | |||
</ul> | |||
<?php | |||
$columns = [ | |||
[ | |||
'header' => '#', | |||
'value' => function ($model) { | |||
return '#' . $model->id; | |||
} | |||
], | |||
[ | |||
'attribute' => 'type', | |||
'header' => 'Type', | |||
'format' => 'raw', | |||
'value' => function ($model) { | |||
if ($model->type == Development::TYPE_EVOLUTION) { | |||
return '<span class="label label-success">Évolution</span>'; | |||
} else { | |||
return '<span class="label label-danger">Anomalie</span>'; | |||
} | |||
} | |||
], | |||
['attribute' => 'sujet', | |||
'format' => 'raw', | |||
'value' => function ($model) { | |||
$html = '<strong>' . Html::encode($model->subject) . '</strong>'; | |||
if (strlen($model->description)) | |||
$html .= '<br />' . nl2br(Html::encode($model->description)); | |||
return $html; | |||
}], | |||
['attribute' => 'estimation_temps', | |||
'header' => 'Estimation', | |||
'format' => 'raw', | |||
'value' => function ($model) { | |||
return intval($model->time_estimate) . ' h'; | |||
}], | |||
['attribute' => 'avancement', | |||
'format' => 'raw', | |||
'value' => function ($model) { | |||
if ($model->progress) | |||
return '<div class="progress"> | |||
<div class="progress-bar progress-bar-warning" role="progressbar" aria-valuenow="' . intval($model->progress) . '" aria-valuemin="0" aria-valuemax="100" style="width: ' . intval($model->progress) . '%;"> | |||
<span class="sr-only">' . intval($model->progress) . '% effectué</span> | |||
</div> | |||
</div> '; | |||
else | |||
return ''; | |||
}], | |||
['attribute' => 'date_delivery', | |||
'format' => 'raw', | |||
'value' => function ($model) { | |||
if (strlen($model->date_delivery)) | |||
return date('d/m/Y', strtotime($model->date_delivery)); | |||
else | |||
return ''; | |||
}], | |||
]; | |||
if (User::hasAccessBackend()) { | |||
$columns[] = [ | |||
'header' => 'Priorité', | |||
'format' => 'raw', | |||
'value' => function ($model) { | |||
$currentPriority = (isset($model->developmentPrioritYCurrentProducer)) ? $model->developmentPriorityCurrentProducer->getStrPriority() : 'Non'; | |||
$styleButton = (isset($model->developmentPriorityCurrentProducer)) ? $model->developmentPriorityCurrentProducer->getClassCssStyleButton() : 'default'; | |||
$html = '<div class="btn-group btn-group-priorite"> | |||
<button type="button" class="btn btn-priorite btn-sm btn-' . $styleButton . ' dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> | |||
' . $currentPriority . ' <span class="caret"></span> | |||
</button> | |||
<ul class="dropdown-menu"> | |||
<li><a href="' . Yii::$app->urlManager->createUrl(['development/priority', 'idDevelopment' => $model->id]) . '">Non</a></li> | |||
<li><a href="' . Yii::$app->urlManager->createUrl(['development/priority', 'idDevelopment' => $model->id, 'priority' => DevelopmentPriority::PRIORITY_LOW]) . '">Basse</a></li> | |||
<li><a href="' . Yii::$app->urlManager->createUrl(['development/priority', 'idDevelopment' => $model->id, 'priority' => DevelopmentPriority::PRIORITY_NORMAL]) . '">Normale</a></li> | |||
<li><a href="' . Yii::$app->urlManager->createUrl(['development/priority', 'idDevelopment' => $model->id, 'priority' => DevelopmentPriority::PRIORITY_HIGH]) . '">Haute</a></li> | |||
</ul> | |||
</div><br />'; | |||
if (isset($model->developmentPriority) && count($model->developmentPriority)) { | |||
foreach ($model->developmentPriority as $developmentPriority) { | |||
if ($developmentPriority->id_producer != GlobalParam::getCurrentProducerId()) | |||
$html .= '<div class="label label-priorite label-sm label-' . $developmentPriority->getClassCssStyleButton() . '">' . Html::encode($developmentPriority->producer->name) . '</div> '; | |||
} | |||
} | |||
return $html; | |||
} | |||
]; | |||
} | |||
if (User::getCurrentStatus() == USER::STATUS_ADMIN) { | |||
$columns[] = [ | |||
'class' => 'yii\grid\ActionColumn', | |||
'template' => '{update}', | |||
'headerOptions' => ['class' => 'actions'], | |||
'buttons' => [ | |||
'update' => function ($url, $model) { | |||
return '<div class="btn-group"> | |||
<a href="' . $url . '" class="btn btn-default"><span class="glyphicon glyphicon-pencil"></span> Modifier</a> | |||
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> | |||
<span class="caret"></span> | |||
<span class="sr-only">Toggle Dropdown</span> | |||
</button> | |||
<ul class="dropdown-menu"> | |||
<li><a href="' . Yii::$app->urlManager->createUrl(['development/delete', 'id' => $model->id]) . '" class=""><span class="glyphicon glyphicon-trash"></span> Supprimer</a></li> | |||
</ul> | |||
</div>'; | |||
}, | |||
], | |||
]; | |||
} | |||
?> | |||
<?= | |||
GridView::widget([ | |||
'id' => 'tab-developments', | |||
'dataProvider' => $dataProvider, | |||
'columns' => $columns | |||
]); | |||
?> | |||
<?php foreach($versionsArray as $version): ?> | |||
<div class="panel panel-default"> | |||
<div class="panel-heading"> | |||
<h3 class="panel-title"> | |||
<?= $version['version'] ?> | |||
</h3> | |||
</div> | |||
<div class="panel-body"> | |||
<?= $version['content'] ?> | |||
</div> | |||
</div> | |||
<?php endforeach; ?> | |||
</div> |
@@ -83,10 +83,14 @@ use dmstr\widgets\Alert; | |||
<footer class="main-footer"> | |||
<div class="pull-right hidden-xs"> | |||
<strong>Version</strong> <?= GlobalParam::getOpendistribVersion(); ?> | |||
</div> | |||
<br /> | |||
<!--<div class="pull-right hidden-xs"> | |||
<b>Version</b> 2.0 | |||
</div> | |||
<strong>Copyright © 2014-2015 <a href="http://almsaeedstudio.com">Almsaeed Studio</a>.</strong> All rights | |||
reserved. | |||
reserved.--> | |||
</footer> | |||
<!-- Control Sidebar --> |
@@ -1,40 +1,40 @@ | |||
<?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. | |||
*/ | |||
* 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. | |||
*/ | |||
?> | |||
@@ -42,43 +42,51 @@ termes. | |||
<section class="sidebar"> | |||
<?php | |||
$producer = GlobalParam::getCurrentProducer(); | |||
$newVersionOpendistribTemplate = ''; | |||
if($producer->latest_version_opendistrib != GlobalParam::getOpendistribVersion()) { | |||
$newVersionOpendistribTemplate = '<span class="pull-right-container"><small class="label pull-right bg-orange"> </small></span>'; | |||
} | |||
?> | |||
<?= dmstr\widgets\Menu::widget( | |||
[ | |||
'options' => ['class' => 'sidebar-menu tree', 'data-widget'=> 'tree'], | |||
'options' => ['class' => 'sidebar-menu tree', 'data-widget' => 'tree'], | |||
'items' => [ | |||
['label' => 'Tableau de bord','icon' => 'dashboard','url' => ['/site/index'], 'visible' => User::isCurrentProducer()], | |||
['label' => 'Distributions','icon' => 'calendar','url' => ['/distribution/index'], 'visible' => User::isCurrentProducer()], | |||
['label' => 'Tableau de bord', 'icon' => 'dashboard', 'url' => ['/site/index'], 'visible' => User::isCurrentProducer()], | |||
['label' => 'Distributions', 'icon' => 'calendar', 'url' => ['/distribution/index'], 'visible' => User::isCurrentProducer()], | |||
[ | |||
'label' => 'Produits', | |||
'icon' => 'clone', | |||
'url' => ['/product/index'], | |||
'visible' => User::isCurrentProducer(), | |||
'active' => Yii::$app->controller->id == 'product', | |||
'items' => [ | |||
['label' => 'Liste','icon' => 'th-list', 'url' => ['/product/index'], 'visible' => User::isCurrentProducer()], | |||
['label' => 'Catégories','icon' => 'book','url' => ['/product-category/index'], 'visible' => User::isCurrentProducer()], | |||
] | |||
'label' => 'Produits', | |||
'icon' => 'clone', | |||
'url' => ['/product/index'], | |||
'visible' => User::isCurrentProducer(), | |||
'active' => Yii::$app->controller->id == 'product', | |||
'items' => [ | |||
['label' => 'Liste', 'icon' => 'th-list', 'url' => ['/product/index'], 'visible' => User::isCurrentProducer()], | |||
['label' => 'Catégories', 'icon' => 'book', 'url' => ['/product-category/index'], 'visible' => User::isCurrentProducer()], | |||
] | |||
], | |||
['label' => 'Points de vente','icon' => 'map-marker','url' => ['/point-sale/index'], 'visible' => User::isCurrentProducer(), 'active' => Yii::$app->controller->id == 'point-sale'], | |||
['label' => 'Points de vente', 'icon' => 'map-marker', 'url' => ['/point-sale/index'], 'visible' => User::isCurrentProducer(), 'active' => Yii::$app->controller->id == 'point-sale'], | |||
[ | |||
'label' => 'Utilisateurs', | |||
'icon' => 'users', | |||
'url' => ['/user/index'], | |||
'items' => [ | |||
['label' => 'Liste','icon' => 'th-list','url' => ['/user/index'], 'visible' => User::isCurrentProducer()], | |||
['label' => 'Groupes','icon' => 'users','url' => ['/user-group/index'], 'visible' => User::isCurrentProducer()], | |||
], | |||
'label' => 'Utilisateurs', | |||
'icon' => 'users', | |||
'url' => ['/user/index'], | |||
'items' => [ | |||
['label' => 'Liste', 'icon' => 'th-list', 'url' => ['/user/index'], 'visible' => User::isCurrentProducer()], | |||
['label' => 'Groupes', 'icon' => 'users', 'url' => ['/user-group/index'], 'visible' => User::isCurrentProducer()], | |||
], | |||
], | |||
['label' => 'Abonnements','icon' => 'repeat','url' => ['/subscription/index'], 'visible' => User::isCurrentProducer(), 'active' => Yii::$app->controller->id == 'subscription'], | |||
['label' => 'Communiquer','icon' => 'bullhorn','url' => ['/communicate/index'], 'visible' => User::isCurrentProducer()], | |||
['label' => 'Abonnements', 'icon' => 'repeat', 'url' => ['/subscription/index'], 'visible' => User::isCurrentProducer(), 'active' => Yii::$app->controller->id == 'subscription'], | |||
['label' => 'Communiquer', 'icon' => 'bullhorn', 'url' => ['/communicate/index'], 'visible' => User::isCurrentProducer()], | |||
[ | |||
'label' => 'Documents', | |||
'icon' => 'clone', | |||
'url' => ['/delivery-note/index'], | |||
'items' => [ | |||
['label' => 'Bons de livraison','icon' => 'sticky-note-o','url' => ['/delivery-note/index'], 'visible' => User::isCurrentProducer()], | |||
['label' => 'Factures','icon' => 'sticky-note-o','url' => ['/invoice/index'], 'visible' => User::isCurrentProducer()], | |||
['label' => 'Devis','icon' => 'sticky-note-o','url' => ['/quotation/index'], 'visible' => User::isCurrentProducer()], | |||
['label' => 'Bons de livraison', 'icon' => 'sticky-note-o', 'url' => ['/delivery-note/index'], 'visible' => User::isCurrentProducer()], | |||
['label' => 'Factures', 'icon' => 'sticky-note-o', 'url' => ['/invoice/index'], 'visible' => User::isCurrentProducer()], | |||
['label' => 'Devis', 'icon' => 'sticky-note-o', 'url' => ['/quotation/index'], 'visible' => User::isCurrentProducer()], | |||
], | |||
], | |||
[ | |||
@@ -86,21 +94,28 @@ termes. | |||
'icon' => 'line-chart', | |||
'url' => ['/stats/index'], | |||
'items' => [ | |||
['label' => 'Chiffre d\'affaire','icon' => 'line-chart','url' => ['/stats/index'], 'visible' => User::isCurrentProducer()], | |||
['label' => 'Rapports','icon' => 'pencil-square-o','url' => ['/report/index'], 'visible' => User::isCurrentProducer()], | |||
['label' => 'Produits','icon' => 'table','url' => ['/stats/products'], 'visible' => User::isCurrentProducer()], | |||
['label' => 'Chiffre d\'affaire', 'icon' => 'line-chart', 'url' => ['/stats/index'], 'visible' => User::isCurrentProducer()], | |||
['label' => 'Rapports', 'icon' => 'pencil-square-o', 'url' => ['/report/index'], 'visible' => User::isCurrentProducer()], | |||
['label' => 'Produits', 'icon' => 'table', 'url' => ['/stats/products'], 'visible' => User::isCurrentProducer()], | |||
], | |||
], | |||
['label' => 'Paramètres','icon' => 'cog','url' => ['/producer/update'], 'visible' => User::isCurrentProducer()], | |||
['label' => 'Développement','icon' => 'wrench','url' => ['/development/index'], 'visible' => User::isCurrentProducer(), 'active' => Yii::$app->controller->id == 'development'], | |||
['label' => 'Tarifs','icon' => 'euro','url' => ['/producer/billing'], 'visible' => User::isCurrentProducer()], | |||
['label' => 'Accès','icon' => 'lock','url' => ['/access/index'], 'visible' => User::isCurrentProducer()], | |||
['label' => 'Paramètres', 'icon' => 'cog', 'url' => ['/producer/update'], 'visible' => User::isCurrentProducer()], | |||
['label' => 'Accès', 'icon' => 'lock', 'url' => ['/access/index'], 'visible' => User::isCurrentProducer()], | |||
[ | |||
'label' => 'Développement', | |||
'icon' => 'code', | |||
'url' => ['/development/index'], | |||
'visible' => User::isCurrentProducer(), | |||
'active' => Yii::$app->controller->id == 'development', | |||
'template'=>'<a href="{url}">{icon} {label}'.$newVersionOpendistribTemplate.'</a>' | |||
], | |||
['label' => 'Tarifs', 'icon' => 'euro', 'url' => ['/producer/billing'], 'visible' => User::isCurrentProducer()], | |||
['label' => 'Administration', 'options' => ['class' => 'header'], 'visible' => User::isCurrentAdmin()], | |||
['label' => 'Producteurs','icon' => 'th-list','url' => ['/producer-admin/index'], 'visible' => User::isCurrentAdmin()], | |||
['label' => 'Tranches de prix','icon' => 'eur','url' => ['/producer-price-range-admin/index'], 'visible' => User::isCurrentAdmin()], | |||
['label' => 'Taxes','icon' => 'eur','url' => ['/tax-rate-admin/index'], 'visible' => User::isCurrentAdmin()], | |||
['label' => 'Communiquer','icon' => 'bullhorn','url' => ['/communicate-admin/index'], 'visible' => User::isCurrentAdmin()], | |||
['label' => 'Producteurs', 'icon' => 'th-list', 'url' => ['/producer-admin/index'], 'visible' => User::isCurrentAdmin()], | |||
['label' => 'Tranches de prix', 'icon' => 'eur', 'url' => ['/producer-price-range-admin/index'], 'visible' => User::isCurrentAdmin()], | |||
['label' => 'Taxes', 'icon' => 'eur', 'url' => ['/tax-rate-admin/index'], 'visible' => User::isCurrentAdmin()], | |||
['label' => 'Communiquer', 'icon' => 'bullhorn', 'url' => ['/communicate-admin/index'], 'visible' => User::isCurrentAdmin()], | |||
['label' => 'Outils', 'options' => ['class' => 'header'], 'visible' => User::isCurrentAdmin()], | |||
['label' => 'Gii', 'icon' => 'file-code-o', 'url' => ['/gii'], 'visible' => User::isCurrentAdmin()], |
@@ -37,6 +37,7 @@ | |||
*/ | |||
return [ | |||
'version' => '22.10.A', | |||
'adminEmail' => 'contact@opendistrib.net', | |||
'supportEmail' => 'contact@opendistrib.net', | |||
'user.passwordResetTokenExpire' => 3600, |
@@ -42,43 +42,44 @@ use common\models\Producer; | |||
class GlobalParam | |||
{ | |||
public static function get($key) | |||
{ | |||
if ($key == 'producer') { | |||
return $this->getCurrentProducer(); | |||
} else { | |||
public function get($key) | |||
{ | |||
if($key == 'producer'){ | |||
return $this->getCurrentProducer(); | |||
}else{ | |||
return \Yii::$app->params[$key]; | |||
} | |||
} | |||
public static function getCurrentProducer() | |||
{ | |||
if(\Yii::$app->params['producer'] == false){ | |||
\Yii::$app->params['producer'] = Producer::searchOne(); | |||
} | |||
return \Yii::$app->params['producer']; | |||
return \Yii::$app->params[$key]; | |||
} | |||
} | |||
/** | |||
* Retourne l'ID du producteur courant. | |||
* | |||
* @return integer|boolean | |||
*/ | |||
public static function getCurrentProducerId() | |||
{ | |||
if(\Yii::$app->controller->module->id == 'app-backend') { | |||
if(!\Yii::$app->user->isGuest) { | |||
return Yii::$app->user->identity->id_producer ; | |||
} | |||
} | |||
else { | |||
return \Yii::$app->controller->getProducer()->id; | |||
} | |||
public static function getOpendistribVersion() | |||
{ | |||
return self::get('version'); | |||
} | |||
return false ; | |||
public static function getCurrentProducer() | |||
{ | |||
if (\Yii::$app->params['producer'] == false) { | |||
\Yii::$app->params['producer'] = Producer::searchOne(); | |||
} | |||
return \Yii::$app->params['producer']; | |||
} | |||
/** | |||
* Retourne l'ID du producteur courant. | |||
* | |||
* @return integer|boolean | |||
*/ | |||
public static function getCurrentProducerId() | |||
{ | |||
if (\Yii::$app->controller->module->id == 'app-backend') { | |||
if (!\Yii::$app->user->isGuest) { | |||
return Yii::$app->user->identity->id_producer; | |||
} | |||
} else { | |||
return \Yii::$app->controller->getProducer()->id; | |||
} | |||
return false; | |||
} | |||
} |
@@ -224,7 +224,8 @@ class Producer extends ActiveRecordCommon | |||
'option_stripe_private_key', | |||
'option_stripe_endpoint_secret', | |||
'option_online_payment_type', | |||
'option_tax_calculation_method' | |||
'option_tax_calculation_method', | |||
'latest_version_opendistrib' | |||
], | |||
'string' | |||
], | |||
@@ -390,7 +391,8 @@ class Producer extends ActiveRecordCommon | |||
'option_billing_frequency' => 'Fréquence de facturation', | |||
'option_billing_reduction' => 'Réduction appliquée au moment de la facturation', | |||
'option_tax_calculation_method' => 'Méthode de calcul de la TVA', | |||
'option_export_evoliz' => 'Activer l\'export vers Evoliz' | |||
'option_export_evoliz' => 'Activer l\'export vers Evoliz', | |||
'latest_version_opendistrib' => 'Dernière version d\'Opendistrib', | |||
]; | |||
} | |||
@@ -0,0 +1,15 @@ | |||
<h4>Date de sortie</h4> | |||
<ul> | |||
<li>25/10/2022</li> | |||
</ul> | |||
<h4>Nouveautés</h4> | |||
<ul> | |||
<li>Espace producteur : ajout d'un captcha sur le formulaire de contact</li> | |||
</ul> | |||
<h4>Correctifs</h4> | |||
<ul> | |||
<li>Un correctif</li> | |||
</ul> |
@@ -0,0 +1,26 @@ | |||
<?php | |||
use yii\db\Migration; | |||
use yii\db\Schema; | |||
/** | |||
* Class m221013_085349_producer_add_field_latest_version | |||
*/ | |||
class m221013_085349_producer_add_field_latest_version extends Migration | |||
{ | |||
/** | |||
* {@inheritdoc} | |||
*/ | |||
public function safeUp() | |||
{ | |||
$this->addColumn('producer', 'latest_version_opendistrib', Schema::TYPE_STRING); | |||
} | |||
/** | |||
* {@inheritdoc} | |||
*/ | |||
public function safeDown() | |||
{ | |||
$this->dropColumn('producer', 'latest_version_opendistrib'); | |||
} | |||
} |
@@ -1 +0,0 @@ | |||
<?php phpinfo(); ?> |