# 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 |
* | * | ||||
* @return mixed | * @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([ | $dataProvider = new ActiveDataProvider([ | ||||
'query' => Development::find() | 'query' => Development::find() | ||||
->orderBy('date DESC'), | ->orderBy('date DESC'), | ||||
]); | ]); | ||||
return $this->render('index', [ | |||||
return $this->render('development', [ | |||||
'dataProvider' => $dataProvider, | 'dataProvider' => $dataProvider, | ||||
'status' => $status | 'status' => $status | ||||
]); | |||||
]); | |||||
} | } | ||||
/** | /** |
<?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> |
use common\helpers\GlobalParam; | use common\helpers\GlobalParam; | ||||
$this->setTitle('Développement'); | $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()); | $this->addBreadcrumb($this->getTitle()); | ||||
?> | ?> | ||||
<div class="development-index"> | <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> | </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> | </div> |
<footer class="main-footer"> | <footer class="main-footer"> | ||||
<div class="pull-right hidden-xs"> | <div class="pull-right hidden-xs"> | ||||
<strong>Version</strong> <?= GlobalParam::getOpendistribVersion(); ?> | |||||
</div> | |||||
<br /> | |||||
<!--<div class="pull-right hidden-xs"> | |||||
<b>Version</b> 2.0 | <b>Version</b> 2.0 | ||||
</div> | </div> | ||||
<strong>Copyright © 2014-2015 <a href="http://almsaeedstudio.com">Almsaeed Studio</a>.</strong> All rights | <strong>Copyright © 2014-2015 <a href="http://almsaeedstudio.com">Almsaeed Studio</a>.</strong> All rights | ||||
reserved. | |||||
reserved.--> | |||||
</footer> | </footer> | ||||
<!-- Control Sidebar --> | <!-- Control Sidebar --> |
<?php | <?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. | |||||
*/ | |||||
?> | ?> | ||||
<section class="sidebar"> | <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( | <?= dmstr\widgets\Menu::widget( | ||||
[ | [ | ||||
'options' => ['class' => 'sidebar-menu tree', 'data-widget'=> 'tree'], | |||||
'options' => ['class' => 'sidebar-menu tree', 'data-widget' => 'tree'], | |||||
'items' => [ | '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', | 'label' => 'Documents', | ||||
'icon' => 'clone', | 'icon' => 'clone', | ||||
'url' => ['/delivery-note/index'], | 'url' => ['/delivery-note/index'], | ||||
'items' => [ | '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()], | |||||
], | ], | ||||
], | ], | ||||
[ | [ | ||||
'icon' => 'line-chart', | 'icon' => 'line-chart', | ||||
'url' => ['/stats/index'], | 'url' => ['/stats/index'], | ||||
'items' => [ | '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' => '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' => 'Outils', 'options' => ['class' => 'header'], 'visible' => User::isCurrentAdmin()], | ||||
['label' => 'Gii', 'icon' => 'file-code-o', 'url' => ['/gii'], 'visible' => User::isCurrentAdmin()], | ['label' => 'Gii', 'icon' => 'file-code-o', 'url' => ['/gii'], 'visible' => User::isCurrentAdmin()], |
*/ | */ | ||||
return [ | return [ | ||||
'version' => '22.10.A', | |||||
'adminEmail' => 'contact@opendistrib.net', | 'adminEmail' => 'contact@opendistrib.net', | ||||
'supportEmail' => 'contact@opendistrib.net', | 'supportEmail' => 'contact@opendistrib.net', | ||||
'user.passwordResetTokenExpire' => 3600, | 'user.passwordResetTokenExpire' => 3600, |
class GlobalParam | 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; | |||||
} | |||||
} | } |
'option_stripe_private_key', | 'option_stripe_private_key', | ||||
'option_stripe_endpoint_secret', | 'option_stripe_endpoint_secret', | ||||
'option_online_payment_type', | 'option_online_payment_type', | ||||
'option_tax_calculation_method' | |||||
'option_tax_calculation_method', | |||||
'latest_version_opendistrib' | |||||
], | ], | ||||
'string' | 'string' | ||||
], | ], | ||||
'option_billing_frequency' => 'Fréquence de facturation', | 'option_billing_frequency' => 'Fréquence de facturation', | ||||
'option_billing_reduction' => 'Réduction appliquée au moment de la 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_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', | |||||
]; | ]; | ||||
} | } | ||||
<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> |
<?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'); | |||||
} | |||||
} |
<?php phpinfo(); ?> |