*/ | */ | ||||
public function actionIndex() | 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 : set latest version d'Opendistrib | ||||
$producer = GlobalParam::getCurrentProducer(); | $producer = GlobalParam::getCurrentProducer(); | ||||
$producer->latest_version_opendistrib = array_values($versionsArray)[0]['version']; | |||||
$producer->save(); | |||||
$producer->updateOpendistribVersion(); | |||||
return $this->render('index', [ | return $this->render('index', [ | ||||
'versionsArray' => $versionsArray | |||||
'versionsArray' => $versionsRenderArray | |||||
]); | ]); | ||||
} | } | ||||
<?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. | |||||
*/ | */ | ||||
namespace backend\controllers; | namespace backend\controllers; | ||||
class ProducerController extends BackendController | 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); | |||||
} | |||||
} | } |
?> | ?> | ||||
<div class="development-index"> | <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> | ||||
<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> | ||||
</div> | </div> | ||||
<?php endforeach; ?> | |||||
</div> | |||||
</div> | </div> |
</section> | </section> | ||||
<section class="content"> | <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() ?> | <?= Alert::widget() ?> | ||||
<?= $content ?> | <?= $content ?> | ||||
<div class="clr"></div> | <div class="clr"></div> |
<?php | <?php | ||||
$producer = GlobalParam::getCurrentProducer(); | $producer = GlobalParam::getCurrentProducer(); | ||||
$newVersionOpendistribTemplate = ''; | $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>'; | $newVersionOpendistribTemplate = '<span class="pull-right-container"><small class="label pull-right bg-orange"> </small></span>'; | ||||
} | } | ||||
?> | ?> |
color: #333; | color: #333; | ||||
text-decoration: none; | 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 { | body.skin-black .content-wrapper .callout h4 .fa { | ||||
margin-right: 7px; | margin-right: 7px; | ||||
} | } | ||||
/* line 147, ../sass/_adminlte.scss */ | |||||
/* line 160, ../sass/_adminlte.scss */ | |||||
body.skin-black .content-wrapper .callout a { | body.skin-black .content-wrapper .callout a { | ||||
color: white; | color: white; | ||||
} | } | ||||
/* line 150, ../sass/_adminlte.scss */ | |||||
/* line 163, ../sass/_adminlte.scss */ | |||||
body.skin-black .content-wrapper .callout .btn { | body.skin-black .content-wrapper .callout .btn { | ||||
color: #333; | color: #333; | ||||
text-decoration: none; | text-decoration: none; | ||||
} | } | ||||
/* line 157, ../sass/_adminlte.scss */ | |||||
/* line 170, ../sass/_adminlte.scss */ | |||||
body.skin-black .content-wrapper .table th { | body.skin-black .content-wrapper .table th { | ||||
font-size: 13px; | 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 { | body.skin-black .content-wrapper .table th.column-actions, body.skin-black .content-wrapper .table td.column-actions { | ||||
width: 150px; | width: 150px; | ||||
text-align: right; | 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 { | body.skin-black .content-wrapper .table td.text-small, body.skin-black .content-wrapper .table th.text-small { | ||||
font-size: 12px; | 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 { | 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; | background-color: #FF7F00; | ||||
border: solid 1px #FF7F00; | border: solid 1px #FF7F00; | ||||
color: white; | 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 { | body.skin-black .content-wrapper .pagination > li > a, body.skin-black .content-wrapper .pagination > li > span { | ||||
color: #FF7F00; | 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 { | body.skin-black .content-wrapper .pagination > li > a:hover, body.skin-black .content-wrapper .pagination > li > span:hover { | ||||
color: #cc6600; | color: #cc6600; | ||||
} | } | ||||
/* line 181, ../sass/_adminlte.scss */ | |||||
/* line 194, ../sass/_adminlte.scss */ | |||||
body.skin-black .content-wrapper .submenu { | body.skin-black .content-wrapper .submenu { | ||||
margin-bottom: 25px; | margin-bottom: 25px; | ||||
} | } | ||||
/* line 187, ../sass/_adminlte.scss */ | |||||
/* line 200, ../sass/_adminlte.scss */ | |||||
body.skin-black .main-footer a { | body.skin-black .main-footer a { | ||||
color: #FF7F00; | color: #FF7F00; | ||||
} | } | ||||
/* line 193, ../sass/_adminlte.scss */ | |||||
/* line 206, ../sass/_adminlte.scss */ | |||||
body.login-page { | body.login-page { | ||||
background: none; | background: none; | ||||
background-color: white; | background-color: white; | ||||
} | } | ||||
/* line 197, ../sass/_adminlte.scss */ | |||||
/* line 210, ../sass/_adminlte.scss */ | |||||
body.login-page .login-box .login-logo { | body.login-page .login-box .login-logo { | ||||
text-align: center; | text-align: center; | ||||
font-family: "comfortaalight"; | font-family: "comfortaalight"; | ||||
} | } | ||||
/* line 200, ../sass/_adminlte.scss */ | |||||
/* line 213, ../sass/_adminlte.scss */ | |||||
body.login-page .login-box .login-logo img { | body.login-page .login-box .login-logo img { | ||||
width: 50px; | width: 50px; | ||||
} | } | ||||
/* line 205, ../sass/_adminlte.scss */ | |||||
/* line 218, ../sass/_adminlte.scss */ | |||||
body.login-page .login-box .login-box-body .btn-primary { | body.login-page .login-box .login-box-body .btn-primary { | ||||
background-color: #FF7F00; | background-color: #FF7F00; | ||||
border-color: #FF7F00; | border-color: #FF7F00; | ||||
padding: 5px 10px; | padding: 5px 10px; | ||||
} | } | ||||
/* line 210, ../sass/_adminlte.scss */ | |||||
/* line 223, ../sass/_adminlte.scss */ | |||||
body.login-page .login-box .login-box-body .btn-primary:active { | body.login-page .login-box .login-box-body .btn-primary:active { | ||||
background-color: #ff8c1a; | background-color: #ff8c1a; | ||||
border-color: #FF7F00; | border-color: #FF7F00; | ||||
} | } | ||||
/* line 216, ../sass/_adminlte.scss */ | |||||
/* line 229, ../sass/_adminlte.scss */ | |||||
body.login-page .login-box .login-box-body a { | body.login-page .login-box .login-box-body a { | ||||
color: #FF7F00; | color: #FF7F00; | ||||
} | } | ||||
/* line 218, ../sass/_adminlte.scss */ | |||||
/* line 231, ../sass/_adminlte.scss */ | |||||
body.login-page .login-box .login-box-body a:hover { | body.login-page .login-box .login-box-body a:hover { | ||||
color: #ff8c1a; | color: #ff8c1a; | ||||
} | } | ||||
width: 200px; | 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) | Copyright distrib (2018) | ||||
color: #333 ; | color: #333 ; | ||||
text-decoration: none ; | text-decoration: none ; | ||||
} | } | ||||
.close { | |||||
font-size: 30px; | |||||
position: relative; | |||||
top: -25px; | |||||
text-decoration: none; | |||||
color: white; | |||||
opacity: 0.6; | |||||
&:hover { | |||||
opacity: 1; | |||||
} | |||||
} | |||||
} | } | ||||
.callout { | .callout { |
.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; | |||||
} | |||||
} | |||||
} | |||||
} | |||||
} |
@import "report/_index.scss" ; | @import "report/_index.scss" ; | ||||
@import "document/_form.scss" ; | @import "document/_form.scss" ; | ||||
@import "document/_index.scss" ; | @import "document/_index.scss" ; | ||||
@import "development/_index.scss" ; | |||||
@import "_responsive.scss" ; | @import "_responsive.scss" ; |
<?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; | |||||
} | |||||
} |
{ | { | ||||
return $this->option_billing_type == self::BILLING_TYPE_FREE_PRICE; | 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(); | |||||
} | |||||
} | } | ||||