@@ -0,0 +1,126 @@ | |||
<?php | |||
/** | |||
Copyright distrib (2018) | |||
contact@opendistrib.net | |||
Ce logiciel est un programme informatique servant à aider les producteurs | |||
à distribuer leur production en circuits courts. | |||
Ce logiciel est régi par la licence CeCILL soumise au droit français et | |||
respectant les principes de diffusion des logiciels libres. Vous pouvez | |||
utiliser, modifier et/ou redistribuer ce programme sous les conditions | |||
de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA | |||
sur le site "http://www.cecill.info". | |||
En contrepartie de l'accessibilité au code source et des droits de copie, | |||
de modification et de redistribution accordés par cette licence, il n'est | |||
offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons, | |||
seule une responsabilité restreinte pèse sur l'auteur du programme, le | |||
titulaire des droits patrimoniaux et les concédants successifs. | |||
A cet égard l'attention de l'utilisateur est attirée sur les risques | |||
associés au chargement, à l'utilisation, à la modification et/ou au | |||
développement et à la reproduction du logiciel par l'utilisateur étant | |||
donné sa spécificité de logiciel libre, qui peut le rendre complexe à | |||
manipuler et qui le réserve donc à des développeurs et des professionnels | |||
avertis possédant des connaissances informatiques approfondies. Les | |||
utilisateurs sont donc invités à charger et tester l'adéquation du | |||
logiciel à leurs besoins dans des conditions permettant d'assurer la | |||
sécurité de leurs systèmes et ou de leurs données et, plus généralement, | |||
à l'utiliser et l'exploiter dans les mêmes conditions de sécurité. | |||
Le fait que vous puissiez accéder à cet en-tête signifie que vous avez | |||
pris connaissance de la licence CeCILL, et que vous en avez accepté les | |||
termes. | |||
*/ | |||
namespace backend\controllers; | |||
use common\models\Producer ; | |||
use common\models\User ; | |||
use common\models\UserSearch ; | |||
use backend\models\AccessUserProducerForm ; | |||
/** | |||
* UserController implements the CRUD actions for User model. | |||
*/ | |||
class AccessController extends BackendController | |||
{ | |||
public function behaviors() { | |||
return [ | |||
'verbs' => [ | |||
'class' => VerbFilter::className(), | |||
'actions' => [ | |||
], | |||
], | |||
'access' => [ | |||
'class' => AccessControl::className(), | |||
'rules' => [ | |||
[ | |||
'allow' => true, | |||
'roles' => ['@'], | |||
'matchCallback' => function ($rule, $action) { | |||
return User::hasAccessBackend(); | |||
} | |||
] | |||
], | |||
], | |||
]; | |||
} | |||
/** | |||
* Affiche les utilisateurs ayant accès à l'administration de ce producteur. | |||
* Gestion du formulaire permettant d'en ajouter de nouveaux. | |||
* | |||
* @return string | |||
*/ | |||
public function actionIndex() | |||
{ | |||
$userSearch = new UserSearch ; | |||
$usersArray = $userSearch->search()->query->all() ; | |||
$modelAccessUserProducerForm = new AccessUserProducerForm ; | |||
if($modelAccessUserProducerForm->load(Yii::$app->request->post()) && $modelAccessUserProducerForm->save()) { | |||
Yii::$app->getSession()->setFlash('success', 'Droits ajoutés à l\'utilisateur'); | |||
} | |||
$usersAccessArray = User::find() | |||
->where([ | |||
'id_producer' => Producer::getId(), | |||
'status' => User::STATUS_PRODUCER | |||
]) | |||
->all() ; | |||
$producer = Producer::searchOne() ; | |||
return $this->render('index', [ | |||
'usersArray' => $usersArray, | |||
'usersAccessArray' => $usersAccessArray, | |||
'producer' => $producer, | |||
'modelAccessUserProducerForm' => $modelAccessUserProducerForm, | |||
]); | |||
} | |||
/** | |||
* | |||
*/ | |||
public function actionDelete($idUser) | |||
{ | |||
$user = User::searchOne([ | |||
'id' => $idUser | |||
]) ; | |||
if($user) { | |||
$user->id_producer = 0 ; | |||
$user->status = User::STATUS_ACTIVE ; | |||
$user->save() ; | |||
Yii::$app->getSession()->setFlash('success', 'Droits de l\'utilisateur supprimé.'); | |||
} | |||
return $this->redirect(['index']) ; | |||
} | |||
} |
@@ -42,6 +42,16 @@ use common\models\Producer ; | |||
class BackendController extends \common\controllers\CommonController | |||
{ | |||
/** | |||
* Vérifie si l'utilisateur a au moins saisi un produit et un point de vente. | |||
* Si ce n'est pas le cas : redirection vers le tableau de bord. | |||
*/ | |||
public function checkProductsPointsSale() | |||
{ | |||
if (!Product::searchCount() || !PointSale::searchCount()) { | |||
$this->redirect(['site/index', 'error_products_points_sale' => 1]); | |||
} | |||
} | |||
} | |||
@@ -77,6 +77,8 @@ class DistributionController extends BackendController | |||
public function actionIndex($date = '') | |||
{ | |||
$this->checkProductsPointsSale() ; | |||
$format = 'Y-m-d' ; | |||
$theDate = '' ; | |||
$dateObject = DateTime::createFromFormat($format, $date); | |||
@@ -102,6 +104,11 @@ class DistributionController extends BackendController | |||
$format = 'Y-m-d' ; | |||
$dateObject = DateTime::createFromFormat($format, $date); | |||
$producer = Producer::getCurrent() ; | |||
$json['producer'] = [ | |||
'credit' => $producer->credit | |||
]; | |||
$distributionsArray = Distribution::searchAll([ | |||
'active' => 1 | |||
], [ |
@@ -98,6 +98,25 @@ class ProducerAdminController extends BackendController | |||
'dataProviderProducer' => $dataProviderProducer, | |||
]); | |||
} | |||
/** | |||
* Crée un producteur. | |||
* | |||
* @return mixed | |||
*/ | |||
public function actionCreate() | |||
{ | |||
$model = new Producer(); | |||
if ($model->load(Yii::$app->request->post()) && $model->save()) { | |||
Yii::$app->getSession()->setFlash('success', 'Producteur créé.'); | |||
return $this->redirect(['index']); | |||
} else { | |||
return $this->render('create', [ | |||
'model' => $model, | |||
]); | |||
} | |||
} | |||
/** | |||
* Génère la facture mensuelle d'un producteur. |
@@ -68,10 +68,8 @@ class SubscriptionController extends BackendController | |||
*/ | |||
public function actionIndex() | |||
{ | |||
if (!Product::searchCount() || !PointSale::searchCount()) { | |||
$this->redirect(['site/index', 'error_products_points_sale' => 1]); | |||
} | |||
$this->checkProductsPointsSale() ; | |||
$searchModel = new SubscriptionSearch ; | |||
$dataProvider = $searchModel->search(Yii::$app->request->queryParams); | |||
@@ -87,7 +85,7 @@ class SubscriptionController extends BackendController | |||
* @return string | |||
*/ | |||
public function actionCreate($idOrder = 0) | |||
{ | |||
{ | |||
// form | |||
$model = new SubscriptionForm; | |||
$model->id_producer = Producer::getId(); |
@@ -267,6 +267,7 @@ class UserController extends BackendController | |||
$userProducer->active = 0 ; | |||
$userProducer->bookmark = 0 ; | |||
$userProducer->save() ; | |||
Yii::$app->getSession()->setFlash('success', 'L\'utilisateur a bien été supprimé de votre établissement.'); | |||
} | |||
else { | |||
throw new \yii\web\NotFoundHttpException('L\'enregistrement UserProducer est introuvable', 404) ; |
@@ -0,0 +1,93 @@ | |||
<?php | |||
/** | |||
Copyright distrib (2018) | |||
contact@opendistrib.net | |||
Ce logiciel est un programme informatique servant à aider les producteurs | |||
à distribuer leur production en circuits courts. | |||
Ce logiciel est régi par la licence CeCILL soumise au droit français et | |||
respectant les principes de diffusion des logiciels libres. Vous pouvez | |||
utiliser, modifier et/ou redistribuer ce programme sous les conditions | |||
de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA | |||
sur le site "http://www.cecill.info". | |||
En contrepartie de l'accessibilité au code source et des droits de copie, | |||
de modification et de redistribution accordés par cette licence, il n'est | |||
offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons, | |||
seule une responsabilité restreinte pèse sur l'auteur du programme, le | |||
titulaire des droits patrimoniaux et les concédants successifs. | |||
A cet égard l'attention de l'utilisateur est attirée sur les risques | |||
associés au chargement, à l'utilisation, à la modification et/ou au | |||
développement et à la reproduction du logiciel par l'utilisateur étant | |||
donné sa spécificité de logiciel libre, qui peut le rendre complexe à | |||
manipuler et qui le réserve donc à des développeurs et des professionnels | |||
avertis possédant des connaissances informatiques approfondies. Les | |||
utilisateurs sont donc invités à charger et tester l'adéquation du | |||
logiciel à leurs besoins dans des conditions permettant d'assurer la | |||
sécurité de leurs systèmes et ou de leurs données et, plus généralement, | |||
à l'utiliser et l'exploiter dans les mêmes conditions de sécurité. | |||
Le fait que vous puissiez accéder à cet en-tête signifie que vous avez | |||
pris connaissance de la licence CeCILL, et que vous en avez accepté les | |||
termes. | |||
*/ | |||
namespace backend\models; | |||
use Yii; | |||
use yii\base\Model; | |||
use common\models\User ; | |||
use common\models\Producer ; | |||
use common\models\UserProducer ; | |||
/** | |||
* ContactForm is the model behind the contact form. | |||
*/ | |||
class AccessUserProducerForm extends Model | |||
{ | |||
public $id_user ; | |||
/** | |||
* @inheritdoc | |||
*/ | |||
public function rules() | |||
{ | |||
return [ | |||
[['id_user'], 'required'], | |||
[['id_user'], 'integer'], | |||
]; | |||
} | |||
/** | |||
* @inheritdoc | |||
*/ | |||
public function attributeLabels() | |||
{ | |||
return [ | |||
'id_user' => 'Utilisateur', | |||
]; | |||
} | |||
public function save() | |||
{ | |||
$user = User::searchOne([ | |||
'id' => $this->id_user | |||
]) ; | |||
if($user) { | |||
$user->id_producer = Producer::getId() ; | |||
if($user->status != User::STATUS_PRODUCER && $user->status != User::STATUS_ADMIN) { | |||
$user->status = User::STATUS_PRODUCER ; | |||
} | |||
return $user->save(); | |||
} | |||
return false; | |||
} | |||
} |
@@ -0,0 +1,82 @@ | |||
<?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\widgets\ActiveForm; | |||
use yii\helpers\ArrayHelper ; | |||
$this->setTitle('Accès') ; | |||
?> | |||
<div class="alert alert-info">Sont listés ici les comptes utilisateurs ayant accès à l'administration.</div> | |||
<div class="col-md-4"> | |||
<div class="panel panel-default"> | |||
<div class="panel-heading"> | |||
<h3 class="panel-title">Ajouter un utilisateur</h3> | |||
</div> | |||
<div class="panel-body"> | |||
<?php $form = ActiveForm::begin(); ?> | |||
<?= $form->field($modelAccessUserProducerForm, 'id_user') | |||
->dropDownList(ArrayHelper::map($usersArray, 'id', function($model) { return $model->lastname.' '.$model->name; })) | |||
->label(''); ?> | |||
<?= Html::submitButton('Ajouter', ['class' => 'btn btn-success']) ?> | |||
<?php ActiveForm::end(); ?> | |||
</div> | |||
</div> | |||
</div> | |||
<div class="col-md-8"> | |||
<?php if(!count($usersAccessArray)): ?> | |||
<div class="alert alert-warning">Aucun utilisateur n'est défini en tant que producteur.</div> | |||
<?php else: ?> | |||
<table class="table table-bordered"> | |||
<tr> | |||
<th>Nom</th> | |||
<th>Actions</th> | |||
</tr> | |||
<?php foreach($usersAccessArray as $user): ?> | |||
<tr> | |||
<td><?= Html::encode($user->lastname.' '.$user->name) ?></td> | |||
<td><?= Html::a('<span class="glyphicon glyphicon-trash"></span>',['access/delete','idUser' => $user->id], ['class' => 'btn btn-default']); ?></td> | |||
</tr> | |||
<?php endforeach; ?> | |||
</table> | |||
<?php endif; ?> | |||
</div> |
@@ -263,7 +263,7 @@ $this->setPageTitle('Distributions') ; | |||
<span class="label label-warning input-group-addon" v-else-if="order.amount_paid < order.amount">reste à payer</span> | |||
</div> | |||
</td> | |||
<td class="column-payment"> | |||
<td class="column-payment" v-if="producer.credit"> | |||
<div class="btn-group" v-if="order.user && !order.date_delete"> | |||
<button class="btn btn-xs btn-default" v-if="order.amount_paid == order.amount" @click="orderPaymentClick" :data-id-order="order.id" data-type="refund" :data-amount="order.amount"> | |||
<span class="glyphicon glyphicon-euro"></span> Rembourser |
@@ -65,6 +65,8 @@ termes. | |||
], | |||
['label' => 'Développement','icon' => 'wrench','url' => ['/development/index'], 'visible' => User::isCurrentProducer(), 'active' => Yii::$app->controller->id == 'development'], | |||
['label' => 'Mon abonnement','icon' => 'euro','url' => ['/producer/billing'], 'visible' => User::isCurrentProducer()], | |||
['label' => 'Mon abonnement','icon' => 'euro','url' => ['/producer/billing'], 'visible' => User::isCurrentProducer()], | |||
['label' => 'Accès','icon' => 'lock','url' => ['/access/index'], 'visible' => User::isCurrentProducer()], | |||
['label' => 'Administration', 'options' => ['class' => 'header'], 'visible' => User::isCurrentAdmin()], | |||
['label' => 'Producteurs','icon' => 'th-list','url' => ['/producer-admin/index'], 'visible' => User::isCurrentAdmin()], | |||
@@ -73,32 +75,6 @@ termes. | |||
['label' => 'Gii', 'icon' => 'file-code-o', 'url' => ['/gii'], 'visible' => User::isCurrentAdmin()], | |||
['label' => 'Debug', 'icon' => 'dashboard', 'url' => ['/debug'], 'visible' => User::isCurrentAdmin()], | |||
['label' => 'Login', 'url' => ['site/login'], 'visible' => !User::isCurrentConnected()], | |||
/*[ | |||
'label' => 'Some tools', | |||
'icon' => 'share', | |||
'url' => '#', | |||
'items' => [ | |||
['label' => 'Gii', 'icon' => 'file-code-o', 'url' => ['/gii'],], | |||
['label' => 'Debug', 'icon' => 'dashboard', 'url' => ['/debug'],], | |||
[ | |||
'label' => 'Level One', | |||
'icon' => 'circle-o', | |||
'url' => '#', | |||
'items' => [ | |||
['label' => 'Level Two', 'icon' => 'circle-o', 'url' => '#',], | |||
[ | |||
'label' => 'Level Two', | |||
'icon' => 'circle-o', | |||
'url' => '#', | |||
'items' => [ | |||
['label' => 'Level Three', 'icon' => 'circle-o', 'url' => '#',], | |||
['label' => 'Level Three', 'icon' => 'circle-o', 'url' => '#',], | |||
], | |||
], | |||
], | |||
], | |||
], | |||
],*/ | |||
], | |||
] | |||
) ?> |
@@ -0,0 +1,61 @@ | |||
<?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\widgets\ActiveForm; | |||
use yii\helpers\ArrayHelper ; | |||
use common\models\Producer ; | |||
$this->setTitle('Ajouter producteur') ; | |||
$this->addBreadcrumb(['label' => 'Producteurs', 'url' => ['index']]) ; | |||
$this->addBreadcrumb('Ajouter') ; | |||
?> | |||
<div class="producer-create"> | |||
<?php $form = ActiveForm::begin(); ?> | |||
<?= $form->field($model, 'name') ?> | |||
<?= $form->field($model, 'type')->textInput(['placeholder' => 'Boulangerie, brasserie, ferme ...']); ?> | |||
<?= $form->field($model, 'postcode') ?> | |||
<?= $form->field($model, 'city') ?> | |||
<?= $form->field($model, 'code')->label('Code d\'accès') ?> | |||
<div class="form-group"> | |||
<?= Html::submitButton('Ajouter', ['class' => 'btn btn-success']) ?> | |||
</div> | |||
<?php ActiveForm::end(); ?> | |||
</div> |
@@ -44,6 +44,7 @@ use common\models\Distribution ; | |||
$this->setTitle('Producteurs') ; | |||
$this->addBreadcrumb($this->getTitle()) ; | |||
$this->addButton(['label' => '+', 'url' => 'producer-admin/create', 'class' => 'btn btn-primary']) ; | |||
?> | |||
@@ -10,6 +10,7 @@ var app = new Vue({ | |||
distribution: { | |||
active: false, | |||
}, | |||
producer: null, | |||
oneDistributionWeekActive: false, | |||
products: [], | |||
countActiveProducts: 0, | |||
@@ -113,7 +114,7 @@ var app = new Vue({ | |||
axios.get("ajax-infos",{params: {date : this.getDate()}}) | |||
.then(function(response) { | |||
app.distribution = response.data.distribution ; | |||
app.producer = response.data.producer ; | |||
app.products = response.data.products ; | |||
app.initCountActiveProducts() ; | |||
@@ -98,7 +98,7 @@ class Producer extends ActiveRecordCommon | |||
public function rules() | |||
{ | |||
return [ | |||
[['name', 'order_deadline', 'order_delay','type'], 'required'], | |||
[['name','type'], 'required'], | |||
[['order_deadline', 'order_delay'], 'integer'], | |||
['order_deadline', 'in', 'range' => [8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24]], | |||
['order_delay', 'in', 'range' => [1, 2, 3, 4, 5, 6, 7]], |
@@ -56,7 +56,7 @@ class UserSearch extends User | |||
]; | |||
} | |||
public function search($params) | |||
public function search($params = []) | |||
{ | |||
$optionsSearch = self::defaultOptionsSearch() ; | |||
@@ -107,7 +107,7 @@ class UserSearch extends User | |||
return $dataProvider; | |||
} | |||
$query->innerJoin('user_producer','user.id = user_producer.id_user AND user_producer.id_producer = :id_producer', [':id_producer' => Producer::getId()]) ; | |||
$query->innerJoin('user_producer','user.id = user_producer.id_user AND user_producer.id_producer = :id_producer AND user_producer.active = 1', [':id_producer' => Producer::getId()]) ; | |||
if(isset($this->id_point_sale) && $this->id_point_sale) { | |||
$pointSale = PointSale::findOne(['id' => $this->id_point_sale]) ; |
@@ -69,9 +69,6 @@ if(!Yii::$app->user->isGuest) { | |||
<?php $this->beginBody() ?> | |||
<div id="header-bap"> | |||
<a id="logo" href="<?= Yii::$app->urlManagerFrontend->createAbsoluteUrl(['site/index']); ?>"> | |||
<img src="<?php echo Yii::$app->urlManager->getBaseUrl(); ?>/img/logo-distrib.png" alt="" /> | |||
</a> | |||
<?php | |||
echo Nav::widget([ | |||
'encodeLabels' => false, | |||
@@ -81,6 +78,11 @@ if(!Yii::$app->user->isGuest) { | |||
'options' => ['id' => 'label1'], | |||
'url' => '#', | |||
'items' => [ | |||
[ | |||
'label' => '<span class="glyphicon glyphicon-chevron-left"></span> Retour à l\'accueil', | |||
'url' => Yii::$app->urlManagerFrontend->createAbsoluteUrl(['site/index']), | |||
'visible' => Yii::$app->user->isGuest | |||
], | |||
[ | |||
'label' => '<span class="glyphicon glyphicon-user"></span> Inscription', | |||
'url' => Yii::$app->urlManagerFrontend->createAbsoluteUrl(['site/signup']), | |||
@@ -100,6 +102,10 @@ if(!Yii::$app->user->isGuest) { | |||
'options' => ['id' => 'label1'], | |||
'url' => '#', | |||
'items' => [ | |||
[ | |||
'label' => '<span class="glyphicon glyphicon-chevron-left"></span> Retour à l\'accueil', | |||
'url' => Yii::$app->urlManagerFrontend->createAbsoluteUrl(['site/index']), | |||
], | |||
[ | |||
'label' => '<span class="glyphicon glyphicon-user"></span> Profil', | |||
'url' => Yii::$app->urlManagerFrontend->createAbsoluteUrl(['user/update']), | |||
@@ -120,12 +126,8 @@ if(!Yii::$app->user->isGuest) { | |||
<header id="header"> | |||
<div class="container"> | |||
<h1><?= Html::encode($producer->name); ?></h1> | |||
<h2><?= Html::encode($producer->type) ?> à <?= Html::encode($producer->city); ?> (<?= Html::encode($producer->postcode); ?>)</h2> | |||
<div id="infos"> | |||
<span data-toggle="tooltip" data-placement="bottom" title="Heure limite de commande"> | |||
<span class="glyphicon glyphicon-time"></span> Commande avant | |||
<strong><?php echo Html::encode($producer->order_deadline) ?> h</strong></span>, | |||
<span data-toggle="tooltip" data-placement="bottom" title="Exemple : commande le lundi pour le <?php if($producer->order_delay == 1): ?>mardi<?php elseif($producer->order_delay == 2): ?>mercredi<?php elseif($producer->order_delay == 3): ?>jeudi<?php elseif($producer->order_delay == 4): ?>vendredi<?php elseif($producer->order_delay == 5): ?>samedi<?php elseif($producer->order_delay == 6): ?>dimanche<?php elseif($producer->order_delay == 7): ?>lundi d'après<?php endif; ?>"><strong><?= Html::encode($producer->order_delay) ?> jour<?php if($producer->order_delay > 1): ?>s<?php endif; ?></strong> à l'avance</span> | |||
<h2> | |||
<?= Html::encode($producer->type) ?> à <?= Html::encode($producer->city); ?> (<?= Html::encode($producer->postcode); ?>) / | |||
<?php if(!Yii::$app->user->isGuest): ?> | |||
<span class="favorite"> | |||
<?php if($userProducer && $userProducer->bookmark): ?> | |||
@@ -135,6 +137,13 @@ if(!Yii::$app->user->isGuest) { | |||
<?php endif; ?> | |||
</span> | |||
<?php endif; ?> | |||
</h2> | |||
<div id="infos"> | |||
<span data-toggle="tooltip" data-placement="bottom" title="Heure limite de commande"> | |||
<span class="glyphicon glyphicon-time"></span> Commande avant | |||
<strong><?php echo Html::encode($producer->order_deadline) ?> h</strong></span>, | |||
<span data-toggle="tooltip" data-placement="bottom" title="Exemple : commande le lundi pour le <?php if($producer->order_delay == 1): ?>mardi<?php elseif($producer->order_delay == 2): ?>mercredi<?php elseif($producer->order_delay == 3): ?>jeudi<?php elseif($producer->order_delay == 4): ?>vendredi<?php elseif($producer->order_delay == 5): ?>samedi<?php elseif($producer->order_delay == 6): ?>dimanche<?php elseif($producer->order_delay == 7): ?>lundi d'après<?php endif; ?>"><strong><?= Html::encode($producer->order_delay) ?> jour<?php if($producer->order_delay > 1): ?>s<?php endif; ?></strong> à l'avance</span> | |||
<div class="clr"></div> | |||
</div> | |||
</div> |
@@ -134,7 +134,7 @@ 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. | |||
*/ | |||
/* line 43, ../sass/_layout.scss */ | |||
/* line 45, ../sass/_layout.scss */ | |||
body { | |||
font-family: "Arial"; | |||
background-color: white; | |||
@@ -143,117 +143,117 @@ body { | |||
font-size: 14px; | |||
} | |||
/* line 51, ../sass/_layout.scss */ | |||
/* line 53, ../sass/_layout.scss */ | |||
.clr { | |||
clear: both; | |||
} | |||
/* line 55, ../sass/_layout.scss */ | |||
/* line 57, ../sass/_layout.scss */ | |||
.modal-backdrop.in { | |||
z-index: 10; | |||
} | |||
/* line 59, ../sass/_layout.scss */ | |||
/* line 61, ../sass/_layout.scss */ | |||
#main { | |||
position: relative; | |||
} | |||
/* line 61, ../sass/_layout.scss */ | |||
/* line 63, ../sass/_layout.scss */ | |||
#main .btn-primary { | |||
background-color: #FF7F00; | |||
border: solid 1px #FF7F00; | |||
color: white; | |||
} | |||
/* line 66, ../sass/_layout.scss */ | |||
/* line 68, ../sass/_layout.scss */ | |||
#main .btn-primary:hover, #main .btn-primary:active, #main .btn-primary:focus { | |||
background-color: #e67200; | |||
border: solid 1px #FF7F00; | |||
color: white; | |||
} | |||
/* line 75, ../sass/_layout.scss */ | |||
/* line 77, ../sass/_layout.scss */ | |||
.btn { | |||
background-image: none; | |||
} | |||
/* line 79, ../sass/_layout.scss */ | |||
/* line 81, ../sass/_layout.scss */ | |||
#main .alert { | |||
background-image: none; | |||
background-color: white; | |||
border-bottom-width: 3px; | |||
} | |||
/* line 87, ../sass/_layout.scss */ | |||
/* line 89, ../sass/_layout.scss */ | |||
.alert.alert-warning a { | |||
color: #8a6d3b; | |||
} | |||
/* line 96, ../sass/_layout.scss */ | |||
/* line 98, ../sass/_layout.scss */ | |||
ul.pagination li.active a { | |||
background-color: #FF7F00; | |||
border: solid 1px #FF7F00; | |||
} | |||
/* line 100, ../sass/_layout.scss */ | |||
/* line 102, ../sass/_layout.scss */ | |||
ul.pagination li.active a:hover { | |||
background-color: white; | |||
border: solid 1px white; | |||
color: #FF7F00; | |||
} | |||
/* line 107, ../sass/_layout.scss */ | |||
/* line 109, ../sass/_layout.scss */ | |||
ul.pagination li a { | |||
color: #FF7F00; | |||
} | |||
/* line 110, ../sass/_layout.scss */ | |||
/* line 112, ../sass/_layout.scss */ | |||
ul.pagination li a:hover, ul.pagination li a:focus, ul.pagination li a:active { | |||
background-color: white; | |||
border: solid 1px white; | |||
color: #FF7F00; | |||
} | |||
/* line 119, ../sass/_layout.scss */ | |||
/* line 121, ../sass/_layout.scss */ | |||
#header-bap { | |||
position: absolute; | |||
right: 0px; | |||
top: 0px; | |||
width: 200px; | |||
width: 70px; | |||
background-color: white; | |||
padding-top: 7px; | |||
padding-bottom: 7px; | |||
text-align: center; | |||
z-index: 1000; | |||
} | |||
/* line 130, ../sass/_layout.scss */ | |||
/* line 132, ../sass/_layout.scss */ | |||
#header-bap .container { | |||
padding-left: 0px; | |||
padding-right: 0px; | |||
} | |||
/* line 135, ../sass/_layout.scss */ | |||
/* line 137, ../sass/_layout.scss */ | |||
#header-bap a#logo { | |||
color: black; | |||
text-decoration: none; | |||
position: relative; | |||
top: 3px; | |||
} | |||
/* line 141, ../sass/_layout.scss */ | |||
/* line 143, ../sass/_layout.scss */ | |||
#header-bap a#logo img { | |||
width: 45px; | |||
} | |||
/* line 146, ../sass/_layout.scss */ | |||
/* line 148, ../sass/_layout.scss */ | |||
#header-bap ul#nav-bap { | |||
float: right; | |||
} | |||
/* line 150, ../sass/_layout.scss */ | |||
/* line 152, ../sass/_layout.scss */ | |||
#header-bap ul#nav-bap li a { | |||
color: black; | |||
font-size: 15px; | |||
color: #FF7F00; | |||
} | |||
/* line 155, ../sass/_layout.scss */ | |||
/* line 157, ../sass/_layout.scss */ | |||
#header-bap ul#nav-bap li a:hover, #header-bap ul#nav-bap li a:focus { | |||
color: #333; | |||
color: #FF7F00; | |||
background: none; | |||
} | |||
/* line 162, ../sass/_layout.scss */ | |||
/* line 164, ../sass/_layout.scss */ | |||
#header-bap ul#nav-bap li ul { | |||
background-color: white; | |||
border-top: solid 2px #FF7F00; | |||
@@ -261,39 +261,39 @@ ul.pagination li a:hover, ul.pagination li a:focus, ul.pagination li a:active { | |||
top: 50px; | |||
width: 200px; | |||
} | |||
/* line 170, ../sass/_layout.scss */ | |||
/* line 172, ../sass/_layout.scss */ | |||
#header-bap ul#nav-bap li ul li a { | |||
text-transform: uppercase; | |||
font-size: 13px; | |||
} | |||
/* line 174, ../sass/_layout.scss */ | |||
/* line 176, ../sass/_layout.scss */ | |||
#header-bap ul#nav-bap li ul li a:hover { | |||
color: #ff9933; | |||
} | |||
/* line 178, ../sass/_layout.scss */ | |||
/* line 180, ../sass/_layout.scss */ | |||
#header-bap ul#nav-bap li ul li a small { | |||
font-size: 10px; | |||
line-height: 13px; | |||
margin-left: 18px; | |||
} | |||
/* line 190, ../sass/_layout.scss */ | |||
/* line 192, ../sass/_layout.scss */ | |||
#header { | |||
background-color: #F7F7F7; | |||
background-color: #FFF8DC; | |||
text-align: center; | |||
padding-top: 25px; | |||
padding-bottom: 10px; | |||
} | |||
/* line 196, ../sass/_layout.scss */ | |||
/* line 198, ../sass/_layout.scss */ | |||
#header .container { | |||
position: relative; | |||
padding: 0px; | |||
} | |||
/* line 202, ../sass/_layout.scss */ | |||
#header h1, #header h2 { | |||
/* line 204, ../sass/_layout.scss */ | |||
#header h1, #header h2, #header #infos, #header #infos a { | |||
color: #323232; | |||
} | |||
/* line 206, ../sass/_layout.scss */ | |||
/* line 208, ../sass/_layout.scss */ | |||
#header h1 { | |||
text-transform: uppercase; | |||
font-family: "highvoltageregular"; | |||
@@ -304,43 +304,44 @@ ul.pagination li a:hover, ul.pagination li a:focus, ul.pagination li a:active { | |||
text-align: center; | |||
font-weight: normal; | |||
} | |||
/* line 217, ../sass/_layout.scss */ | |||
/* line 219, ../sass/_layout.scss */ | |||
#header h2 { | |||
font-family: "capsuularegular"; | |||
font-size: 27px; | |||
font-size: 20px; | |||
font-weight: normal; | |||
text-align: center; | |||
} | |||
/* line 224, ../sass/_layout.scss */ | |||
#header #infos { | |||
text-align: center; | |||
padding-bottom: 10px; | |||
padding-top: 8px; | |||
margin-bottom: 0px; | |||
color: #323232; | |||
/* line 225, ../sass/_layout.scss */ | |||
#header h2 .favorite { | |||
padding-left: 0px; | |||
} | |||
/* line 228, ../sass/_layout.scss */ | |||
#header h2 .favorite .glyphicon { | |||
font-size: 14px; | |||
color: gray; | |||
} | |||
/* line 233, ../sass/_layout.scss */ | |||
#header #infos .favorite { | |||
border-left: solid 1px white; | |||
padding-left: 10px; | |||
#header h2 a { | |||
color: #323232; | |||
} | |||
/* line 238, ../sass/_layout.scss */ | |||
#header #infos a { | |||
color: gray; | |||
text-decoration: underline; | |||
/* line 239, ../sass/_layout.scss */ | |||
#header #infos { | |||
text-align: center; | |||
padding-bottom: 10px; | |||
padding-top: 20px; | |||
margin-bottom: 0px; | |||
font-size: 16px; | |||
font-family: "capsuularegular"; | |||
} | |||
/* line 243, ../sass/_layout.scss */ | |||
/* line 247, ../sass/_layout.scss */ | |||
#header #infos strong { | |||
font-weight: bold; | |||
} | |||
/* line 249, ../sass/_layout.scss */ | |||
/* line 253, ../sass/_layout.scss */ | |||
#main { | |||
background-color: #F7F7F7; | |||
background-color: #FFF8DC; | |||
} | |||
/* line 252, ../sass/_layout.scss */ | |||
/* line 256, ../sass/_layout.scss */ | |||
#main nav#main-nav { | |||
width: 100%; | |||
background-color: white; | |||
@@ -348,7 +349,7 @@ ul.pagination li a:hover, ul.pagination li a:focus, ul.pagination li a:active { | |||
border-bottom: solid 1px #e0e0e0; | |||
margin-bottom: 30px; | |||
} | |||
/* line 261, ../sass/_layout.scss */ | |||
/* line 265, ../sass/_layout.scss */ | |||
#main nav#main-nav ul li a { | |||
color: #323232; | |||
color: black; | |||
@@ -356,22 +357,22 @@ ul.pagination li a:hover, ul.pagination li a:focus, ul.pagination li a:active { | |||
font-family: "capsuularegular"; | |||
font-size: 18px; | |||
} | |||
/* line 268, ../sass/_layout.scss */ | |||
/* line 272, ../sass/_layout.scss */ | |||
#main nav#main-nav ul li a .glyphicon { | |||
font-size: 15px; | |||
margin-right: 3px; | |||
} | |||
/* line 273, ../sass/_layout.scss */ | |||
/* line 277, ../sass/_layout.scss */ | |||
#main nav#main-nav ul li a span.label { | |||
padding-bottom: 3px; | |||
font-family: "Arial"; | |||
} | |||
/* line 280, ../sass/_layout.scss */ | |||
/* line 284, ../sass/_layout.scss */ | |||
#main nav#main-nav ul li.active span.label, #main nav#main-nav ul li a:hover span.label { | |||
background-color: #e67200; | |||
color: white; | |||
} | |||
/* line 286, ../sass/_layout.scss */ | |||
/* line 290, ../sass/_layout.scss */ | |||
#main nav#main-nav ul li a:hover, #main nav#main-nav ul li.active a { | |||
background: #FF7F00; | |||
color: white; | |||
@@ -379,26 +380,26 @@ ul.pagination li a:hover, ul.pagination li a:focus, ul.pagination li a:active { | |||
-webkit-border-radius: 0px; | |||
border-radius: 0px; | |||
} | |||
/* line 293, ../sass/_layout.scss */ | |||
/* line 297, ../sass/_layout.scss */ | |||
#main nav#main-nav ul li#btn-administration { | |||
float: right; | |||
border-left: solid 1px #e0e0e0; | |||
} | |||
/* line 297, ../sass/_layout.scss */ | |||
/* line 301, ../sass/_layout.scss */ | |||
#main nav#main-nav ul li#btn-administration a { | |||
color: #FF7F00; | |||
} | |||
/* line 300, ../sass/_layout.scss */ | |||
/* line 304, ../sass/_layout.scss */ | |||
#main nav#main-nav ul li#btn-administration a:hover { | |||
color: white; | |||
} | |||
/* line 308, ../sass/_layout.scss */ | |||
/* line 312, ../sass/_layout.scss */ | |||
#main nav#main-nav #user { | |||
color: #FF7F00; | |||
float: right; | |||
padding: 10px; | |||
} | |||
/* line 315, ../sass/_layout.scss */ | |||
/* line 319, ../sass/_layout.scss */ | |||
#main h2#page-title { | |||
padding-left: 15px; | |||
padding-right: 15px; | |||
@@ -412,12 +413,12 @@ ul.pagination li a:hover, ul.pagination li a:focus, ul.pagination li a:active { | |||
top: -10px; | |||
text-align: left; | |||
} | |||
/* line 328, ../sass/_layout.scss */ | |||
/* line 332, ../sass/_layout.scss */ | |||
#main h2#page-title #buttons { | |||
margin-bottom: 15px; | |||
font-family: "Arial"; | |||
} | |||
/* line 335, ../sass/_layout.scss */ | |||
/* line 339, ../sass/_layout.scss */ | |||
#main .container { | |||
padding: 0px; | |||
background-color: white; | |||
@@ -425,30 +426,30 @@ ul.pagination li a:hover, ul.pagination li a:focus, ul.pagination li a:active { | |||
border-left: solid 1px #e0e0e0; | |||
border-right: solid 1px #e0e0e0; | |||
} | |||
/* line 343, ../sass/_layout.scss */ | |||
/* line 347, ../sass/_layout.scss */ | |||
#main #content { | |||
padding: 0px 20px 20px 20px; | |||
padding-bottom: 40px; | |||
} | |||
/* line 347, ../sass/_layout.scss */ | |||
/* line 351, ../sass/_layout.scss */ | |||
#main #content h1, #main #content h2, #main #content h3, #main #content h4, #main #content h5, #main #content h6 { | |||
font-family: "highvoltageregular"; | |||
margin-top: 30px; | |||
margin-bottom: 20px; | |||
} | |||
/* line 352, ../sass/_layout.scss */ | |||
/* line 356, ../sass/_layout.scss */ | |||
#main #content h1.first, #main #content h2.first, #main #content h3.first, #main #content h4.first, #main #content h5.first, #main #content h6.first { | |||
margin-top: 0px; | |||
} | |||
/* line 357, ../sass/_layout.scss */ | |||
/* line 361, ../sass/_layout.scss */ | |||
#main #content h1 { | |||
font-size: 30px; | |||
} | |||
/* line 361, ../sass/_layout.scss */ | |||
/* line 365, ../sass/_layout.scss */ | |||
#main #content h2 { | |||
font-size: 25px; | |||
} | |||
/* line 366, ../sass/_layout.scss */ | |||
/* line 370, ../sass/_layout.scss */ | |||
#main #content h3 { | |||
font-family: "highvoltageregular"; | |||
text-transform: uppercase; | |||
@@ -457,29 +458,29 @@ ul.pagination li a:hover, ul.pagination li a:focus, ul.pagination li a:active { | |||
margin-bottom: 30px; | |||
margin-top: 45px; | |||
} | |||
/* line 374, ../sass/_layout.scss */ | |||
/* line 378, ../sass/_layout.scss */ | |||
#main #content h3 span { | |||
padding-top: 14px; | |||
color: #323232; | |||
} | |||
/* line 380, ../sass/_layout.scss */ | |||
/* line 384, ../sass/_layout.scss */ | |||
#main #content h4 { | |||
font-size: 20px; | |||
} | |||
/* line 384, ../sass/_layout.scss */ | |||
/* line 388, ../sass/_layout.scss */ | |||
#main #content h5 { | |||
font-size: 18px; | |||
} | |||
/* line 388, ../sass/_layout.scss */ | |||
/* line 392, ../sass/_layout.scss */ | |||
#main #content h6 { | |||
font-size: 16px; | |||
} | |||
/* line 394, ../sass/_layout.scss */ | |||
/* line 398, ../sass/_layout.scss */ | |||
#main #content form .form-group .hint-block { | |||
color: gray; | |||
} | |||
/* line 402, ../sass/_layout.scss */ | |||
/* line 406, ../sass/_layout.scss */ | |||
#footer-producer { | |||
text-align: center; | |||
position: absolute; | |||
@@ -487,25 +488,25 @@ ul.pagination li a:hover, ul.pagination li a:focus, ul.pagination li a:active { | |||
left: 0px; | |||
width: 100%; | |||
} | |||
/* line 409, ../sass/_layout.scss */ | |||
/* line 413, ../sass/_layout.scss */ | |||
#footer-producer a { | |||
color: #FF7F00; | |||
} | |||
/* line 411, ../sass/_layout.scss */ | |||
/* line 415, ../sass/_layout.scss */ | |||
#footer-producer a:active { | |||
text-decoration: underline; | |||
} | |||
/* line 417, ../sass/_layout.scss */ | |||
/* line 421, ../sass/_layout.scss */ | |||
#footer { | |||
background-color: #F7F7F7; | |||
background-color: #FFF8DC; | |||
height: 100px; | |||
} | |||
/* line 421, ../sass/_layout.scss */ | |||
/* line 425, ../sass/_layout.scss */ | |||
#footer .container { | |||
padding: 0px; | |||
} | |||
/* line 423, ../sass/_layout.scss */ | |||
/* line 427, ../sass/_layout.scss */ | |||
#footer .container .overflow { | |||
height: 30px; | |||
background-color: white; | |||
@@ -513,12 +514,12 @@ ul.pagination li a:hover, ul.pagination li a:focus, ul.pagination li a:active { | |||
border-right: solid 1px #e0e0e0; | |||
border-bottom: solid 1px #e0e0e0; | |||
} | |||
/* line 431, ../sass/_layout.scss */ | |||
/* line 435, ../sass/_layout.scss */ | |||
#footer .container .content { | |||
padding-top: 20px; | |||
color: black; | |||
} | |||
/* line 435, ../sass/_layout.scss */ | |||
/* line 439, ../sass/_layout.scss */ | |||
#footer .container .content a { | |||
color: black; | |||
font-family: "capsuularegular"; | |||
@@ -526,11 +527,11 @@ ul.pagination li a:hover, ul.pagination li a:focus, ul.pagination li a:active { | |||
padding-left: 10px; | |||
padding-right: 10px; | |||
} | |||
/* line 442, ../sass/_layout.scss */ | |||
/* line 446, ../sass/_layout.scss */ | |||
#footer .container .content a:hover { | |||
text-decoration: underline; | |||
} | |||
/* line 449, ../sass/_layout.scss */ | |||
/* line 453, ../sass/_layout.scss */ | |||
#footer .container #code-source img { | |||
height: 20px; | |||
} |
@@ -39,6 +39,8 @@ $color1: #FF7F00 ; | |||
$color2: white ; | |||
$courant: #323232 ; | |||
$color-back: #F7F7F7 ; | |||
$color-back: #FFEBCD ; | |||
$color-back: #FFF8DC ; | |||
body { | |||
font-family: 'Arial' ; | |||
@@ -120,7 +122,7 @@ ul.pagination { | |||
position: absolute ; | |||
right: 0px ; | |||
top: 0px ; | |||
width: 200px ; | |||
width: 70px ; | |||
background-color: white ; | |||
padding-top: 7px ; | |||
padding-bottom: 7px ; | |||
@@ -199,7 +201,7 @@ ul.pagination { | |||
} | |||
h1, h2 { | |||
h1, h2, #infos, #infos a { | |||
color: $courant ; | |||
} | |||
@@ -216,30 +218,32 @@ ul.pagination { | |||
h2 { | |||
font-family: 'capsuularegular' ; | |||
font-size: 27px ; | |||
font-size: 20px ; | |||
font-weight: normal ; | |||
text-align: center ; | |||
} | |||
#infos { | |||
text-align: center ; | |||
padding-bottom: 10px ; | |||
padding-top: 8px; | |||
margin-bottom: 0px ; | |||
color: $courant ; | |||
font-size: 14px ; | |||
color: gray ; | |||
.favorite { | |||
border-left: solid 1px $color2 ; | |||
padding-left: 10px ; | |||
padding-left: 0px ; | |||
.glyphicon { | |||
font-size: 14px ; | |||
} | |||
} | |||
a { | |||
color: gray ; | |||
text-decoration: underline ; | |||
color: $courant ; | |||
} | |||
} | |||
#infos { | |||
text-align: center ; | |||
padding-bottom: 10px ; | |||
padding-top: 20px; | |||
margin-bottom: 0px ; | |||
font-size: 16px ; | |||
font-family: 'capsuularegular' ; | |||
strong { | |||
font-weight: bold ; | |||
} |