@@ -81,32 +81,21 @@ class DevelopmentController extends Controller | |||
*/ | |||
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) | |||
]; | |||
} | |||
} | |||
$versionsArray = Opendistrib::getVersions(); | |||
$versionsRenderArray = []; | |||
foreach($versionsArray as $version) { | |||
$versionsRenderArray[$version] = [ | |||
'version' => $version, | |||
'content' => $this->renderFile('@common/versions/'.$version.'.php') | |||
]; | |||
} | |||
krsort($versionsArray); | |||
// Producer : set latest version d'Opendistrib | |||
$producer = GlobalParam::getCurrentProducer(); | |||
$producer->latest_version_opendistrib = array_values($versionsArray)[0]['version']; | |||
$producer->save(); | |||
$producer->updateOpendistribVersion(); | |||
return $this->render('index', [ | |||
'versionsArray' => $versionsArray | |||
'versionsArray' => $versionsRenderArray | |||
]); | |||
} | |||
@@ -1,39 +1,39 @@ | |||
<?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. | |||
*/ | |||
namespace backend\controllers; | |||
@@ -58,159 +58,165 @@ use common\models\Invoice; | |||
class ProducerController extends BackendController | |||
{ | |||
public $enableCsrfValidation = false; | |||
public function behaviors() | |||
{ | |||
return [ | |||
'verbs' => [ | |||
'class' => VerbFilter::className(), | |||
'actions' => [ | |||
'delete' => ['post'], | |||
], | |||
], | |||
'access' => [ | |||
'class' => AccessControl::className(), | |||
'rules' => [ | |||
[ | |||
'allow' => true, | |||
'roles' => ['@'], | |||
'matchCallback' => function ($rule, $action) { | |||
return User::hasAccessBackend(); | |||
} | |||
] | |||
], | |||
], | |||
]; | |||
} | |||
/** | |||
* Modifie un producteur. | |||
* | |||
* @return mixed | |||
*/ | |||
public function actionUpdate() | |||
{ | |||
$request = Yii::$app->request; | |||
$model = $this->findModel(GlobalParam::getCurrentProducerId()); | |||
$logoFilenameOld = $model->logo; | |||
$photoFilenameOld = $model->photo; | |||
if (strlen($model->option_dashboard_date_start)) { | |||
$model->option_dashboard_date_start = date('d/m/Y', strtotime($model->option_dashboard_date_start)); | |||
} | |||
if (strlen($model->option_dashboard_date_end)) { | |||
$model->option_dashboard_date_end = date('d/m/Y', strtotime($model->option_dashboard_date_end)); | |||
} | |||
if ($model->load(Yii::$app->request->post()) && $model->save()) { | |||
if(strlen($model->option_dashboard_date_start)) { | |||
$model->option_dashboard_date_start = date( | |||
'Y-m-d', | |||
strtotime(str_replace('/', '-', $model->option_dashboard_date_start) | |||
)); | |||
$model->save() ; | |||
} | |||
if(strlen($model->option_dashboard_date_end)) { | |||
$model->option_dashboard_date_end = date( | |||
'Y-m-d', | |||
strtotime(str_replace('/', '-', $model->option_dashboard_date_end)) | |||
); | |||
$model->save() ; | |||
} | |||
Upload::uploadFile($model, 'logo', $logoFilenameOld); | |||
Upload::uploadFile($model, 'photo', $photoFilenameOld); | |||
$deleteLogo = $request->post('delete_logo', 0); | |||
if ($deleteLogo) { | |||
$model->logo = ''; | |||
$model->save(); | |||
} | |||
$deletePhoto = $request->post('delete_photo', 0); | |||
if ($deletePhoto) { | |||
$model->photo = ''; | |||
$model->save(); | |||
public $enableCsrfValidation = false; | |||
public function behaviors() | |||
{ | |||
return [ | |||
'verbs' => [ | |||
'class' => VerbFilter::className(), | |||
'actions' => [ | |||
'delete' => ['post'], | |||
], | |||
], | |||
'access' => [ | |||
'class' => AccessControl::className(), | |||
'rules' => [ | |||
[ | |||
'allow' => true, | |||
'roles' => ['@'], | |||
'matchCallback' => function ($rule, $action) { | |||
return User::hasAccessBackend(); | |||
} | |||
$model->savePrivateKeyApiStripe() ; | |||
$model->savePrivateKeyEndpointStripe() ; | |||
$model->option_stripe_private_key = ''; | |||
$model->option_stripe_endpoint_secret = ''; | |||
$model->save(); | |||
Yii::$app->getSession()->setFlash('success', 'Paramètres mis à jour.'); | |||
return $this->redirect(['update', 'id' => $model->id, 'edit_ok' => true]); | |||
} else { | |||
if($model->load(Yii::$app->request->post())) { | |||
Yii::$app->getSession()->setFlash('error', 'Le formulaire comporte des erreurs.'); | |||
} | |||
return $this->render('update', [ | |||
'model' => $model, | |||
]); | |||
} | |||
] | |||
], | |||
], | |||
]; | |||
} | |||
/** | |||
* Modifie un producteur. | |||
* | |||
* @return mixed | |||
*/ | |||
public function actionUpdate() | |||
{ | |||
$request = Yii::$app->request; | |||
$model = $this->findModel(GlobalParam::getCurrentProducerId()); | |||
$logoFilenameOld = $model->logo; | |||
$photoFilenameOld = $model->photo; | |||
if (strlen($model->option_dashboard_date_start)) { | |||
$model->option_dashboard_date_start = date('d/m/Y', strtotime($model->option_dashboard_date_start)); | |||
} | |||
/** | |||
* Affiche le formulaire permettant au producteur de définir le montant | |||
* de son abonnement. | |||
* | |||
* @return mixed | |||
*/ | |||
public function actionBilling() | |||
{ | |||
$datasInvoices = new ActiveDataProvider([ | |||
'query' => Invoice::find() | |||
->where(['id_producer' => GlobalParam::getCurrentProducerId()]) | |||
->orderBy('reference DESC'), | |||
'pagination' => [ | |||
'pageSize' => 1000, | |||
], | |||
]); | |||
$producer = Producer::findOne(GlobalParam::getCurrentProducerId()); | |||
if ($producer->load(Yii::$app->request->post())) { | |||
$producer->save(); | |||
if (!is_null($producer->free_price)) { | |||
$alertFreeprice = true; | |||
} | |||
} | |||
$dataProviderPrices = new ActiveDataProvider([ | |||
'query' => ProducerPriceRange::find() | |||
->orderBy('id ASC'), | |||
'pagination' => [ | |||
'pageSize' => 100, | |||
], | |||
]); | |||
return $this->render('billing', [ | |||
'dataProviderPrices' => $dataProviderPrices, | |||
'datasInvoices' => $datasInvoices, | |||
'producer' => $producer, | |||
'alertFreePrice' => (isset($alertFreeprice)) ? true : false | |||
]); | |||
if (strlen($model->option_dashboard_date_end)) { | |||
$model->option_dashboard_date_end = date('d/m/Y', strtotime($model->option_dashboard_date_end)); | |||
} | |||
/** | |||
* Recherche un établissement via son ID. | |||
* | |||
* @param integer $id | |||
* @return Etablissement | |||
* @throws NotFoundHttpException | |||
*/ | |||
protected function findModel($id) | |||
{ | |||
if (($model = Producer::findOne($id)) !== null) { | |||
return $model; | |||
} else { | |||
throw new NotFoundHttpException('The requested page does not exist.'); | |||
} | |||
if ($model->load(Yii::$app->request->post()) && $model->save()) { | |||
if (strlen($model->option_dashboard_date_start)) { | |||
$model->option_dashboard_date_start = date( | |||
'Y-m-d', | |||
strtotime(str_replace('/', '-', $model->option_dashboard_date_start) | |||
)); | |||
$model->save(); | |||
} | |||
if (strlen($model->option_dashboard_date_end)) { | |||
$model->option_dashboard_date_end = date( | |||
'Y-m-d', | |||
strtotime(str_replace('/', '-', $model->option_dashboard_date_end)) | |||
); | |||
$model->save(); | |||
} | |||
Upload::uploadFile($model, 'logo', $logoFilenameOld); | |||
Upload::uploadFile($model, 'photo', $photoFilenameOld); | |||
$deleteLogo = $request->post('delete_logo', 0); | |||
if ($deleteLogo) { | |||
$model->logo = ''; | |||
$model->save(); | |||
} | |||
$deletePhoto = $request->post('delete_photo', 0); | |||
if ($deletePhoto) { | |||
$model->photo = ''; | |||
$model->save(); | |||
} | |||
$model->savePrivateKeyApiStripe(); | |||
$model->savePrivateKeyEndpointStripe(); | |||
$model->option_stripe_private_key = ''; | |||
$model->option_stripe_endpoint_secret = ''; | |||
$model->save(); | |||
Yii::$app->getSession()->setFlash('success', 'Paramètres mis à jour.'); | |||
return $this->redirect(['update', 'id' => $model->id, 'edit_ok' => true]); | |||
} else { | |||
if ($model->load(Yii::$app->request->post())) { | |||
Yii::$app->getSession()->setFlash('error', 'Le formulaire comporte des erreurs.'); | |||
} | |||
return $this->render('update', [ | |||
'model' => $model, | |||
]); | |||
} | |||
} | |||
/** | |||
* Affiche le formulaire permettant au producteur de définir le montant | |||
* de son abonnement. | |||
* | |||
* @return mixed | |||
*/ | |||
public function actionBilling() | |||
{ | |||
$datasInvoices = new ActiveDataProvider([ | |||
'query' => Invoice::find() | |||
->where(['id_producer' => GlobalParam::getCurrentProducerId()]) | |||
->orderBy('reference DESC'), | |||
'pagination' => [ | |||
'pageSize' => 1000, | |||
], | |||
]); | |||
$producer = Producer::findOne(GlobalParam::getCurrentProducerId()); | |||
if ($producer->load(Yii::$app->request->post())) { | |||
$producer->save(); | |||
if (!is_null($producer->free_price)) { | |||
$alertFreeprice = true; | |||
} | |||
} | |||
$dataProviderPrices = new ActiveDataProvider([ | |||
'query' => ProducerPriceRange::find() | |||
->orderBy('id ASC'), | |||
'pagination' => [ | |||
'pageSize' => 100, | |||
], | |||
]); | |||
return $this->render('billing', [ | |||
'dataProviderPrices' => $dataProviderPrices, | |||
'datasInvoices' => $datasInvoices, | |||
'producer' => $producer, | |||
'alertFreePrice' => (isset($alertFreeprice)) ? true : false | |||
]); | |||
} | |||
/** | |||
* Recherche un établissement via son ID. | |||
* | |||
* @param integer $id | |||
* @return Etablissement | |||
* @throws NotFoundHttpException | |||
*/ | |||
protected function findModel($id) | |||
{ | |||
if (($model = Producer::findOne($id)) !== null) { | |||
return $model; | |||
} else { | |||
throw new NotFoundHttpException('The requested page does not exist.'); | |||
} | |||
} | |||
public function actionUpdateOpendistribVersion() | |||
{ | |||
$producer = GlobalParam::getCurrentProducer(); | |||
$producer->updateOpendistribVersion(); | |||
return $this->redirect(Yii::$app->request->referrer); | |||
} | |||
} |
@@ -50,22 +50,44 @@ $this->addBreadcrumb($this->getTitle()); | |||
?> | |||
<div class="development-index"> | |||
<div class="alert alert-info"> | |||
Cette page liste les dernières versions du logiciel Opendistrib. Me | |||
<a href="mailto:contact@opendistrib.net">contacter</a> pour soumettre | |||
vos suggestions d'évolutions ou remontées de bug. | |||
</div> | |||
<?php foreach($versionsArray as $version): ?> | |||
<div class="panel panel-default"> | |||
<div class="panel-heading"> | |||
<h3 class="panel-title"> | |||
<?= $version['version'] ?> | |||
</h3> | |||
<div class="container-fluidd"> | |||
<div class="row"> | |||
<div class="col-md-8"> | |||
<?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 class="panel-body"> | |||
<?= $version['content'] ?> | |||
<div class="col-md-4"> | |||
<div id="panel-participate" class="panel panel-default"> | |||
<div class="panel-heading"> | |||
<h3 class="panel-title">Participer</h3> | |||
</div> | |||
<div class="panel-body"> | |||
<p>Le logiciel Opendistrib se construit pour et avec vous. Toutes vos suggestions et remontées | |||
de bugs sont les bienvenues et forment le terreau des versions futures !</p> | |||
<p>Pour me contacter :</p> | |||
<ul class="contacts"> | |||
<li> | |||
<span class="glyphicon glyphicon-earphone"></span> | |||
<p><a href="mailto:contact@opendistrib.net?subject=Demande de rappel">Demander à être rappelé</a> en indiquant vos disponibilités.</p> | |||
</li> | |||
<li> | |||
<span class="glyphicon glyphicon-envelope"></span> | |||
<p><a href="mailto:contact@opendistrib.net">M'envoyer un message</a></p> | |||
</li> | |||
</ul> | |||
</div> | |||
</div> | |||
</div> | |||
</div> | |||
<?php endforeach; ?> | |||
</div> | |||
</div> |
@@ -75,6 +75,15 @@ use dmstr\widgets\Alert; | |||
</section> | |||
<section class="content"> | |||
<?php $producer = GlobalParam::getCurrentProducer(); ?> | |||
<?php if(!$producer->isUpToDateWithOpendistribVersion()): ?> | |||
<div class="alert alert-warning"> | |||
<p>Opendistrib a été mis à jour vers la version <?= GlobalParam::getOpendistribVersion() ?> ! <a class="alert-link" href="<?= Yii::$app->urlManager->createUrl(['development/index']) ?>">Découvrir les nouveautés</a></p> | |||
<a href="<?= Yii::$app->urlManager->createUrl(['producer/update-opendistrib-version']) ?>" class="close"><span aria-hidden="true">×</span></a> | |||
</div> | |||
<?php endif; ?> | |||
<?= Alert::widget() ?> | |||
<?= $content ?> | |||
<div class="clr"></div> |
@@ -45,7 +45,7 @@ | |||
<?php | |||
$producer = GlobalParam::getCurrentProducer(); | |||
$newVersionOpendistribTemplate = ''; | |||
if($producer->latest_version_opendistrib != GlobalParam::getOpendistribVersion()) { | |||
if(!$producer->isUpToDateWithOpendistribVersion()) { | |||
$newVersionOpendistribTemplate = '<span class="pull-right-container"><small class="label pull-right bg-orange"> </small></span>'; | |||
} | |||
?> |
@@ -1630,85 +1630,98 @@ body.skin-black .content-wrapper .alert a.btn { | |||
color: #333; | |||
text-decoration: none; | |||
} | |||
/* line 144, ../sass/_adminlte.scss */ | |||
/* line 142, ../sass/_adminlte.scss */ | |||
body.skin-black .content-wrapper .alert .close { | |||
font-size: 30px; | |||
position: relative; | |||
top: -25px; | |||
text-decoration: none; | |||
color: white; | |||
opacity: 0.6; | |||
} | |||
/* line 150, ../sass/_adminlte.scss */ | |||
body.skin-black .content-wrapper .alert .close:hover { | |||
opacity: 1; | |||
} | |||
/* line 157, ../sass/_adminlte.scss */ | |||
body.skin-black .content-wrapper .callout h4 .fa { | |||
margin-right: 7px; | |||
} | |||
/* line 147, ../sass/_adminlte.scss */ | |||
/* line 160, ../sass/_adminlte.scss */ | |||
body.skin-black .content-wrapper .callout a { | |||
color: white; | |||
} | |||
/* line 150, ../sass/_adminlte.scss */ | |||
/* line 163, ../sass/_adminlte.scss */ | |||
body.skin-black .content-wrapper .callout .btn { | |||
color: #333; | |||
text-decoration: none; | |||
} | |||
/* line 157, ../sass/_adminlte.scss */ | |||
/* line 170, ../sass/_adminlte.scss */ | |||
body.skin-black .content-wrapper .table th { | |||
font-size: 13px; | |||
} | |||
/* line 160, ../sass/_adminlte.scss */ | |||
/* line 173, ../sass/_adminlte.scss */ | |||
body.skin-black .content-wrapper .table th.column-actions, body.skin-black .content-wrapper .table td.column-actions { | |||
width: 150px; | |||
text-align: right; | |||
} | |||
/* line 164, ../sass/_adminlte.scss */ | |||
/* line 177, ../sass/_adminlte.scss */ | |||
body.skin-black .content-wrapper .table td.text-small, body.skin-black .content-wrapper .table th.text-small { | |||
font-size: 12px; | |||
} | |||
/* line 169, ../sass/_adminlte.scss */ | |||
/* line 182, ../sass/_adminlte.scss */ | |||
body.skin-black .content-wrapper .pagination > .active > a, body.skin-black .content-wrapper .pagination > .active > span, body.skin-black .content-wrapper .pagination > .active > a:hover, body.skin-black .content-wrapper .pagination > .active > span:hover, body.skin-black .content-wrapper .pagination > .active > a:focus, body.skin-black .content-wrapper .pagination > .active > span:focus { | |||
background-color: #FF7F00; | |||
border: solid 1px #FF7F00; | |||
color: white; | |||
} | |||
/* line 174, ../sass/_adminlte.scss */ | |||
/* line 187, ../sass/_adminlte.scss */ | |||
body.skin-black .content-wrapper .pagination > li > a, body.skin-black .content-wrapper .pagination > li > span { | |||
color: #FF7F00; | |||
} | |||
/* line 176, ../sass/_adminlte.scss */ | |||
/* line 189, ../sass/_adminlte.scss */ | |||
body.skin-black .content-wrapper .pagination > li > a:hover, body.skin-black .content-wrapper .pagination > li > span:hover { | |||
color: #cc6600; | |||
} | |||
/* line 181, ../sass/_adminlte.scss */ | |||
/* line 194, ../sass/_adminlte.scss */ | |||
body.skin-black .content-wrapper .submenu { | |||
margin-bottom: 25px; | |||
} | |||
/* line 187, ../sass/_adminlte.scss */ | |||
/* line 200, ../sass/_adminlte.scss */ | |||
body.skin-black .main-footer a { | |||
color: #FF7F00; | |||
} | |||
/* line 193, ../sass/_adminlte.scss */ | |||
/* line 206, ../sass/_adminlte.scss */ | |||
body.login-page { | |||
background: none; | |||
background-color: white; | |||
} | |||
/* line 197, ../sass/_adminlte.scss */ | |||
/* line 210, ../sass/_adminlte.scss */ | |||
body.login-page .login-box .login-logo { | |||
text-align: center; | |||
font-family: "comfortaalight"; | |||
} | |||
/* line 200, ../sass/_adminlte.scss */ | |||
/* line 213, ../sass/_adminlte.scss */ | |||
body.login-page .login-box .login-logo img { | |||
width: 50px; | |||
} | |||
/* line 205, ../sass/_adminlte.scss */ | |||
/* line 218, ../sass/_adminlte.scss */ | |||
body.login-page .login-box .login-box-body .btn-primary { | |||
background-color: #FF7F00; | |||
border-color: #FF7F00; | |||
padding: 5px 10px; | |||
} | |||
/* line 210, ../sass/_adminlte.scss */ | |||
/* line 223, ../sass/_adminlte.scss */ | |||
body.login-page .login-box .login-box-body .btn-primary:active { | |||
background-color: #ff8c1a; | |||
border-color: #FF7F00; | |||
} | |||
/* line 216, ../sass/_adminlte.scss */ | |||
/* line 229, ../sass/_adminlte.scss */ | |||
body.login-page .login-box .login-box-body a { | |||
color: #FF7F00; | |||
} | |||
/* line 218, ../sass/_adminlte.scss */ | |||
/* line 231, ../sass/_adminlte.scss */ | |||
body.login-page .login-box .login-box-body a:hover { | |||
color: #ff8c1a; | |||
} | |||
@@ -2480,6 +2493,26 @@ termes. | |||
width: 200px; | |||
} | |||
/* line 4, ../sass/development/_index.scss */ | |||
.development-index #panel-participate ul.contacts { | |||
padding: 0px; | |||
padding-left: 10px; | |||
margin: 0px; | |||
list-style-type: none; | |||
} | |||
/* line 10, ../sass/development/_index.scss */ | |||
.development-index #panel-participate ul.contacts li { | |||
padding-bottom: 10px; | |||
} | |||
/* line 13, ../sass/development/_index.scss */ | |||
.development-index #panel-participate ul.contacts li .glyphicon { | |||
float: left; | |||
} | |||
/* line 17, ../sass/development/_index.scss */ | |||
.development-index #panel-participate ul.contacts li p { | |||
padding-left: 25px; | |||
} | |||
/** | |||
Copyright distrib (2018) | |||
@@ -138,6 +138,19 @@ body.skin-black { | |||
color: #333 ; | |||
text-decoration: none ; | |||
} | |||
.close { | |||
font-size: 30px; | |||
position: relative; | |||
top: -25px; | |||
text-decoration: none; | |||
color: white; | |||
opacity: 0.6; | |||
&:hover { | |||
opacity: 1; | |||
} | |||
} | |||
} | |||
.callout { |
@@ -0,0 +1,23 @@ | |||
.development-index { | |||
#panel-participate { | |||
ul.contacts { | |||
padding: 0px; | |||
padding-left: 10px; | |||
margin: 0px; | |||
list-style-type: none; | |||
li { | |||
padding-bottom: 10px; | |||
.glyphicon { | |||
float: left; | |||
} | |||
p { | |||
padding-left: 25px; | |||
} | |||
} | |||
} | |||
} | |||
} |
@@ -1502,4 +1502,5 @@ a.btn, button.btn { | |||
@import "report/_index.scss" ; | |||
@import "document/_form.scss" ; | |||
@import "document/_index.scss" ; | |||
@import "development/_index.scss" ; | |||
@import "_responsive.scss" ; |
@@ -0,0 +1,65 @@ | |||
<?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 common\helpers; | |||
class Opendistrib | |||
{ | |||
public static function getVersions() | |||
{ | |||
$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; | |||
} | |||
} | |||
} | |||
krsort($versionsArray); | |||
return $versionsArray; | |||
} | |||
} |
@@ -974,5 +974,16 @@ class Producer extends ActiveRecordCommon | |||
{ | |||
return $this->option_billing_type == self::BILLING_TYPE_FREE_PRICE; | |||
} | |||
public function isUpToDateWithOpendistribVersion() | |||
{ | |||
return $this->latest_version_opendistrib == GlobalParam::getOpendistribVersion(); | |||
} | |||
public function updateOpendistribVersion() { | |||
$versionsArray = Opendistrib::getVersions(); | |||
$this->latest_version_opendistrib = array_values($versionsArray)[0]; | |||
$this->save(); | |||
} | |||
} | |||