Browse Source

Merge branch 'dev'

master
Guillaume Bourgeois 5 years ago
parent
commit
041f91aa86
18 changed files with 538 additions and 149 deletions
  1. +126
    -0
      backend/controllers/AccessController.php
  2. +10
    -0
      backend/controllers/BackendController.php
  3. +7
    -0
      backend/controllers/DistributionController.php
  4. +19
    -0
      backend/controllers/ProducerAdminController.php
  5. +3
    -5
      backend/controllers/SubscriptionController.php
  6. +1
    -0
      backend/controllers/UserController.php
  7. +93
    -0
      backend/models/AccessUserProducerForm.php
  8. +82
    -0
      backend/views/access/index.php
  9. +1
    -1
      backend/views/distribution/index.php
  10. +2
    -26
      backend/views/layouts/left.php
  11. +61
    -0
      backend/views/producer-admin/create.php
  12. +1
    -0
      backend/views/producer-admin/index.php
  13. +2
    -1
      backend/web/js/vuejs/distribution-index.js
  14. +1
    -1
      common/models/Producer.php
  15. +2
    -2
      common/models/UserSearch.php
  16. +18
    -9
      producer/views/layouts/main.php
  17. +87
    -86
      producer/web/css/screen.css
  18. +22
    -18
      producer/web/sass/_layout.scss

+ 126
- 0
backend/controllers/AccessController.php View File

<?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']) ;
}
}

+ 10
- 0
backend/controllers/BackendController.php View File



class BackendController extends \common\controllers\CommonController 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]);
}
}


} }



+ 7
- 0
backend/controllers/DistributionController.php View File

public function actionIndex($date = '') public function actionIndex($date = '')
{ {
$this->checkProductsPointsSale() ;
$format = 'Y-m-d' ; $format = 'Y-m-d' ;
$theDate = '' ; $theDate = '' ;
$dateObject = DateTime::createFromFormat($format, $date); $dateObject = DateTime::createFromFormat($format, $date);
$format = 'Y-m-d' ; $format = 'Y-m-d' ;
$dateObject = DateTime::createFromFormat($format, $date); $dateObject = DateTime::createFromFormat($format, $date);
$producer = Producer::getCurrent() ;
$json['producer'] = [
'credit' => $producer->credit
];
$distributionsArray = Distribution::searchAll([ $distributionsArray = Distribution::searchAll([
'active' => 1 'active' => 1
], [ ], [

+ 19
- 0
backend/controllers/ProducerAdminController.php View File

'dataProviderProducer' => $dataProviderProducer, '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. * Génère la facture mensuelle d'un producteur.

+ 3
- 5
backend/controllers/SubscriptionController.php View File

*/ */
public function actionIndex() public function actionIndex()
{ {
if (!Product::searchCount() || !PointSale::searchCount()) {
$this->redirect(['site/index', 'error_products_points_sale' => 1]);
}

$this->checkProductsPointsSale() ;
$searchModel = new SubscriptionSearch ; $searchModel = new SubscriptionSearch ;
$dataProvider = $searchModel->search(Yii::$app->request->queryParams); $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
* @return string * @return string
*/ */
public function actionCreate($idOrder = 0) public function actionCreate($idOrder = 0)
{
{
// form // form
$model = new SubscriptionForm; $model = new SubscriptionForm;
$model->id_producer = Producer::getId(); $model->id_producer = Producer::getId();

+ 1
- 0
backend/controllers/UserController.php View File

$userProducer->active = 0 ; $userProducer->active = 0 ;
$userProducer->bookmark = 0 ; $userProducer->bookmark = 0 ;
$userProducer->save() ; $userProducer->save() ;
Yii::$app->getSession()->setFlash('success', 'L\'utilisateur a bien été supprimé de votre établissement.');
} }
else { else {
throw new \yii\web\NotFoundHttpException('L\'enregistrement UserProducer est introuvable', 404) ; throw new \yii\web\NotFoundHttpException('L\'enregistrement UserProducer est introuvable', 404) ;

+ 93
- 0
backend/models/AccessUserProducerForm.php View File

<?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;
}

}

+ 82
- 0
backend/views/access/index.php View File

<?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>

+ 1
- 1
backend/views/distribution/index.php View File

<span class="label label-warning input-group-addon" v-else-if="order.amount_paid < order.amount">reste à payer</span> <span class="label label-warning input-group-addon" v-else-if="order.amount_paid < order.amount">reste à payer</span>
</div> </div>
</td> </td>
<td class="column-payment">
<td class="column-payment" v-if="producer.credit">
<div class="btn-group" v-if="order.user && !order.date_delete"> <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"> <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 <span class="glyphicon glyphicon-euro"></span> Rembourser

+ 2
- 26
backend/views/layouts/left.php View File

], ],
['label' => 'Développement','icon' => 'wrench','url' => ['/development/index'], 'visible' => User::isCurrentProducer(), 'active' => Yii::$app->controller->id == 'development'], ['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' => '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' => 'Administration', 'options' => ['class' => 'header'], 'visible' => User::isCurrentAdmin()],
['label' => 'Producteurs','icon' => 'th-list','url' => ['/producer-admin/index'], 'visible' => User::isCurrentAdmin()], ['label' => 'Producteurs','icon' => 'th-list','url' => ['/producer-admin/index'], 'visible' => User::isCurrentAdmin()],
['label' => 'Gii', 'icon' => 'file-code-o', 'url' => ['/gii'], 'visible' => User::isCurrentAdmin()], ['label' => 'Gii', 'icon' => 'file-code-o', 'url' => ['/gii'], 'visible' => User::isCurrentAdmin()],
['label' => 'Debug', 'icon' => 'dashboard', 'url' => ['/debug'], 'visible' => User::isCurrentAdmin()], ['label' => 'Debug', 'icon' => 'dashboard', 'url' => ['/debug'], 'visible' => User::isCurrentAdmin()],
['label' => 'Login', 'url' => ['site/login'], 'visible' => !User::isCurrentConnected()], ['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' => '#',],
],
],
],
],
],
],*/
], ],
] ]
) ?> ) ?>

+ 61
- 0
backend/views/producer-admin/create.php View File

<?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>

+ 1
- 0
backend/views/producer-admin/index.php View File



$this->setTitle('Producteurs') ; $this->setTitle('Producteurs') ;
$this->addBreadcrumb($this->getTitle()) ; $this->addBreadcrumb($this->getTitle()) ;
$this->addButton(['label' => '+', 'url' => 'producer-admin/create', 'class' => 'btn btn-primary']) ;


?> ?>



+ 2
- 1
backend/web/js/vuejs/distribution-index.js View File

distribution: { distribution: {
active: false, active: false,
}, },
producer: null,
oneDistributionWeekActive: false, oneDistributionWeekActive: false,
products: [], products: [],
countActiveProducts: 0, countActiveProducts: 0,
axios.get("ajax-infos",{params: {date : this.getDate()}}) axios.get("ajax-infos",{params: {date : this.getDate()}})
.then(function(response) { .then(function(response) {
app.distribution = response.data.distribution ; app.distribution = response.data.distribution ;
app.producer = response.data.producer ;
app.products = response.data.products ; app.products = response.data.products ;
app.initCountActiveProducts() ; app.initCountActiveProducts() ;

+ 1
- 1
common/models/Producer.php View File

public function rules() public function rules()
{ {
return [ return [
[['name', 'order_deadline', 'order_delay','type'], 'required'],
[['name','type'], 'required'],
[['order_deadline', 'order_delay'], 'integer'], [['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_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]], ['order_delay', 'in', 'range' => [1, 2, 3, 4, 5, 6, 7]],

+ 2
- 2
common/models/UserSearch.php View File

]; ];
} }


public function search($params)
public function search($params = [])
{ {
$optionsSearch = self::defaultOptionsSearch() ; $optionsSearch = self::defaultOptionsSearch() ;
return $dataProvider; 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) { if(isset($this->id_point_sale) && $this->id_point_sale) {
$pointSale = PointSale::findOne(['id' => $this->id_point_sale]) ; $pointSale = PointSale::findOne(['id' => $this->id_point_sale]) ;

+ 18
- 9
producer/views/layouts/main.php View File

<?php $this->beginBody() ?> <?php $this->beginBody() ?>
<div id="header-bap"> <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 <?php
echo Nav::widget([ echo Nav::widget([
'encodeLabels' => false, 'encodeLabels' => false,
'options' => ['id' => 'label1'], 'options' => ['id' => 'label1'],
'url' => '#', 'url' => '#',
'items' => [ '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', 'label' => '<span class="glyphicon glyphicon-user"></span> Inscription',
'url' => Yii::$app->urlManagerFrontend->createAbsoluteUrl(['site/signup']), 'url' => Yii::$app->urlManagerFrontend->createAbsoluteUrl(['site/signup']),
'options' => ['id' => 'label1'], 'options' => ['id' => 'label1'],
'url' => '#', 'url' => '#',
'items' => [ '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', 'label' => '<span class="glyphicon glyphicon-user"></span> Profil',
'url' => Yii::$app->urlManagerFrontend->createAbsoluteUrl(['user/update']), 'url' => Yii::$app->urlManagerFrontend->createAbsoluteUrl(['user/update']),
<header id="header"> <header id="header">
<div class="container"> <div class="container">
<h1><?= Html::encode($producer->name); ?></h1> <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): ?> <?php if(!Yii::$app->user->isGuest): ?>
<span class="favorite"> <span class="favorite">
<?php if($userProducer && $userProducer->bookmark): ?> <?php if($userProducer && $userProducer->bookmark): ?>
<?php endif; ?> <?php endif; ?>
</span> </span>
<?php endif; ?> <?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 class="clr"></div>
</div> </div>
</div> </div>

+ 87
- 86
producer/web/css/screen.css View File

pris connaissance de la licence CeCILL, et que vous en avez accepté les pris connaissance de la licence CeCILL, et que vous en avez accepté les
termes. termes.
*/ */
/* line 43, ../sass/_layout.scss */
/* line 45, ../sass/_layout.scss */
body { body {
font-family: "Arial"; font-family: "Arial";
background-color: white; background-color: white;
font-size: 14px; font-size: 14px;
} }


/* line 51, ../sass/_layout.scss */
/* line 53, ../sass/_layout.scss */
.clr { .clr {
clear: both; clear: both;
} }


/* line 55, ../sass/_layout.scss */
/* line 57, ../sass/_layout.scss */
.modal-backdrop.in { .modal-backdrop.in {
z-index: 10; z-index: 10;
} }


/* line 59, ../sass/_layout.scss */
/* line 61, ../sass/_layout.scss */
#main { #main {
position: relative; position: relative;
} }
/* line 61, ../sass/_layout.scss */
/* line 63, ../sass/_layout.scss */
#main .btn-primary { #main .btn-primary {
background-color: #FF7F00; background-color: #FF7F00;
border: solid 1px #FF7F00; border: solid 1px #FF7F00;
color: white; color: white;
} }
/* line 66, ../sass/_layout.scss */
/* line 68, ../sass/_layout.scss */
#main .btn-primary:hover, #main .btn-primary:active, #main .btn-primary:focus { #main .btn-primary:hover, #main .btn-primary:active, #main .btn-primary:focus {
background-color: #e67200; background-color: #e67200;
border: solid 1px #FF7F00; border: solid 1px #FF7F00;
color: white; color: white;
} }


/* line 75, ../sass/_layout.scss */
/* line 77, ../sass/_layout.scss */
.btn { .btn {
background-image: none; background-image: none;
} }


/* line 79, ../sass/_layout.scss */
/* line 81, ../sass/_layout.scss */
#main .alert { #main .alert {
background-image: none; background-image: none;
background-color: white; background-color: white;
border-bottom-width: 3px; border-bottom-width: 3px;
} }


/* line 87, ../sass/_layout.scss */
/* line 89, ../sass/_layout.scss */
.alert.alert-warning a { .alert.alert-warning a {
color: #8a6d3b; color: #8a6d3b;
} }


/* line 96, ../sass/_layout.scss */
/* line 98, ../sass/_layout.scss */
ul.pagination li.active a { ul.pagination li.active a {
background-color: #FF7F00; background-color: #FF7F00;
border: solid 1px #FF7F00; border: solid 1px #FF7F00;
} }
/* line 100, ../sass/_layout.scss */
/* line 102, ../sass/_layout.scss */
ul.pagination li.active a:hover { ul.pagination li.active a:hover {
background-color: white; background-color: white;
border: solid 1px white; border: solid 1px white;
color: #FF7F00; color: #FF7F00;
} }
/* line 107, ../sass/_layout.scss */
/* line 109, ../sass/_layout.scss */
ul.pagination li a { ul.pagination li a {
color: #FF7F00; 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 { ul.pagination li a:hover, ul.pagination li a:focus, ul.pagination li a:active {
background-color: white; background-color: white;
border: solid 1px white; border: solid 1px white;
color: #FF7F00; color: #FF7F00;
} }


/* line 119, ../sass/_layout.scss */
/* line 121, ../sass/_layout.scss */
#header-bap { #header-bap {
position: absolute; position: absolute;
right: 0px; right: 0px;
top: 0px; top: 0px;
width: 200px;
width: 70px;
background-color: white; background-color: white;
padding-top: 7px; padding-top: 7px;
padding-bottom: 7px; padding-bottom: 7px;
text-align: center; text-align: center;
z-index: 1000; z-index: 1000;
} }
/* line 130, ../sass/_layout.scss */
/* line 132, ../sass/_layout.scss */
#header-bap .container { #header-bap .container {
padding-left: 0px; padding-left: 0px;
padding-right: 0px; padding-right: 0px;
} }
/* line 135, ../sass/_layout.scss */
/* line 137, ../sass/_layout.scss */
#header-bap a#logo { #header-bap a#logo {
color: black; color: black;
text-decoration: none; text-decoration: none;
position: relative; position: relative;
top: 3px; top: 3px;
} }
/* line 141, ../sass/_layout.scss */
/* line 143, ../sass/_layout.scss */
#header-bap a#logo img { #header-bap a#logo img {
width: 45px; width: 45px;
} }
/* line 146, ../sass/_layout.scss */
/* line 148, ../sass/_layout.scss */
#header-bap ul#nav-bap { #header-bap ul#nav-bap {
float: right; float: right;
} }
/* line 150, ../sass/_layout.scss */
/* line 152, ../sass/_layout.scss */
#header-bap ul#nav-bap li a { #header-bap ul#nav-bap li a {
color: black; color: black;
font-size: 15px; font-size: 15px;
color: #FF7F00; 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 { #header-bap ul#nav-bap li a:hover, #header-bap ul#nav-bap li a:focus {
color: #333; color: #333;
color: #FF7F00; color: #FF7F00;
background: none; background: none;
} }
/* line 162, ../sass/_layout.scss */
/* line 164, ../sass/_layout.scss */
#header-bap ul#nav-bap li ul { #header-bap ul#nav-bap li ul {
background-color: white; background-color: white;
border-top: solid 2px #FF7F00; border-top: solid 2px #FF7F00;
top: 50px; top: 50px;
width: 200px; width: 200px;
} }
/* line 170, ../sass/_layout.scss */
/* line 172, ../sass/_layout.scss */
#header-bap ul#nav-bap li ul li a { #header-bap ul#nav-bap li ul li a {
text-transform: uppercase; text-transform: uppercase;
font-size: 13px; font-size: 13px;
} }
/* line 174, ../sass/_layout.scss */
/* line 176, ../sass/_layout.scss */
#header-bap ul#nav-bap li ul li a:hover { #header-bap ul#nav-bap li ul li a:hover {
color: #ff9933; color: #ff9933;
} }
/* line 178, ../sass/_layout.scss */
/* line 180, ../sass/_layout.scss */
#header-bap ul#nav-bap li ul li a small { #header-bap ul#nav-bap li ul li a small {
font-size: 10px; font-size: 10px;
line-height: 13px; line-height: 13px;
margin-left: 18px; margin-left: 18px;
} }


/* line 190, ../sass/_layout.scss */
/* line 192, ../sass/_layout.scss */
#header { #header {
background-color: #F7F7F7;
background-color: #FFF8DC;
text-align: center; text-align: center;
padding-top: 25px; padding-top: 25px;
padding-bottom: 10px; padding-bottom: 10px;
} }
/* line 196, ../sass/_layout.scss */
/* line 198, ../sass/_layout.scss */
#header .container { #header .container {
position: relative; position: relative;
padding: 0px; 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; color: #323232;
} }
/* line 206, ../sass/_layout.scss */
/* line 208, ../sass/_layout.scss */
#header h1 { #header h1 {
text-transform: uppercase; text-transform: uppercase;
font-family: "highvoltageregular"; font-family: "highvoltageregular";
text-align: center; text-align: center;
font-weight: normal; font-weight: normal;
} }
/* line 217, ../sass/_layout.scss */
/* line 219, ../sass/_layout.scss */
#header h2 { #header h2 {
font-family: "capsuularegular"; font-family: "capsuularegular";
font-size: 27px;
font-size: 20px;
font-weight: normal; font-weight: normal;
text-align: center; 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; font-size: 14px;
color: gray;
} }
/* line 233, ../sass/_layout.scss */ /* 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 { #header #infos strong {
font-weight: bold; font-weight: bold;
} }


/* line 249, ../sass/_layout.scss */
/* line 253, ../sass/_layout.scss */
#main { #main {
background-color: #F7F7F7;
background-color: #FFF8DC;
} }
/* line 252, ../sass/_layout.scss */
/* line 256, ../sass/_layout.scss */
#main nav#main-nav { #main nav#main-nav {
width: 100%; width: 100%;
background-color: white; background-color: white;
border-bottom: solid 1px #e0e0e0; border-bottom: solid 1px #e0e0e0;
margin-bottom: 30px; margin-bottom: 30px;
} }
/* line 261, ../sass/_layout.scss */
/* line 265, ../sass/_layout.scss */
#main nav#main-nav ul li a { #main nav#main-nav ul li a {
color: #323232; color: #323232;
color: black; color: black;
font-family: "capsuularegular"; font-family: "capsuularegular";
font-size: 18px; font-size: 18px;
} }
/* line 268, ../sass/_layout.scss */
/* line 272, ../sass/_layout.scss */
#main nav#main-nav ul li a .glyphicon { #main nav#main-nav ul li a .glyphicon {
font-size: 15px; font-size: 15px;
margin-right: 3px; margin-right: 3px;
} }
/* line 273, ../sass/_layout.scss */
/* line 277, ../sass/_layout.scss */
#main nav#main-nav ul li a span.label { #main nav#main-nav ul li a span.label {
padding-bottom: 3px; padding-bottom: 3px;
font-family: "Arial"; 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 { #main nav#main-nav ul li.active span.label, #main nav#main-nav ul li a:hover span.label {
background-color: #e67200; background-color: #e67200;
color: white; 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 { #main nav#main-nav ul li a:hover, #main nav#main-nav ul li.active a {
background: #FF7F00; background: #FF7F00;
color: white; color: white;
-webkit-border-radius: 0px; -webkit-border-radius: 0px;
border-radius: 0px; border-radius: 0px;
} }
/* line 293, ../sass/_layout.scss */
/* line 297, ../sass/_layout.scss */
#main nav#main-nav ul li#btn-administration { #main nav#main-nav ul li#btn-administration {
float: right; float: right;
border-left: solid 1px #e0e0e0; border-left: solid 1px #e0e0e0;
} }
/* line 297, ../sass/_layout.scss */
/* line 301, ../sass/_layout.scss */
#main nav#main-nav ul li#btn-administration a { #main nav#main-nav ul li#btn-administration a {
color: #FF7F00; color: #FF7F00;
} }
/* line 300, ../sass/_layout.scss */
/* line 304, ../sass/_layout.scss */
#main nav#main-nav ul li#btn-administration a:hover { #main nav#main-nav ul li#btn-administration a:hover {
color: white; color: white;
} }
/* line 308, ../sass/_layout.scss */
/* line 312, ../sass/_layout.scss */
#main nav#main-nav #user { #main nav#main-nav #user {
color: #FF7F00; color: #FF7F00;
float: right; float: right;
padding: 10px; padding: 10px;
} }
/* line 315, ../sass/_layout.scss */
/* line 319, ../sass/_layout.scss */
#main h2#page-title { #main h2#page-title {
padding-left: 15px; padding-left: 15px;
padding-right: 15px; padding-right: 15px;
top: -10px; top: -10px;
text-align: left; text-align: left;
} }
/* line 328, ../sass/_layout.scss */
/* line 332, ../sass/_layout.scss */
#main h2#page-title #buttons { #main h2#page-title #buttons {
margin-bottom: 15px; margin-bottom: 15px;
font-family: "Arial"; font-family: "Arial";
} }
/* line 335, ../sass/_layout.scss */
/* line 339, ../sass/_layout.scss */
#main .container { #main .container {
padding: 0px; padding: 0px;
background-color: white; background-color: white;
border-left: solid 1px #e0e0e0; border-left: solid 1px #e0e0e0;
border-right: solid 1px #e0e0e0; border-right: solid 1px #e0e0e0;
} }
/* line 343, ../sass/_layout.scss */
/* line 347, ../sass/_layout.scss */
#main #content { #main #content {
padding: 0px 20px 20px 20px; padding: 0px 20px 20px 20px;
padding-bottom: 40px; 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 { #main #content h1, #main #content h2, #main #content h3, #main #content h4, #main #content h5, #main #content h6 {
font-family: "highvoltageregular"; font-family: "highvoltageregular";
margin-top: 30px; margin-top: 30px;
margin-bottom: 20px; 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 { #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; margin-top: 0px;
} }
/* line 357, ../sass/_layout.scss */
/* line 361, ../sass/_layout.scss */
#main #content h1 { #main #content h1 {
font-size: 30px; font-size: 30px;
} }
/* line 361, ../sass/_layout.scss */
/* line 365, ../sass/_layout.scss */
#main #content h2 { #main #content h2 {
font-size: 25px; font-size: 25px;
} }
/* line 366, ../sass/_layout.scss */
/* line 370, ../sass/_layout.scss */
#main #content h3 { #main #content h3 {
font-family: "highvoltageregular"; font-family: "highvoltageregular";
text-transform: uppercase; text-transform: uppercase;
margin-bottom: 30px; margin-bottom: 30px;
margin-top: 45px; margin-top: 45px;
} }
/* line 374, ../sass/_layout.scss */
/* line 378, ../sass/_layout.scss */
#main #content h3 span { #main #content h3 span {
padding-top: 14px; padding-top: 14px;
color: #323232; color: #323232;
} }
/* line 380, ../sass/_layout.scss */
/* line 384, ../sass/_layout.scss */
#main #content h4 { #main #content h4 {
font-size: 20px; font-size: 20px;
} }
/* line 384, ../sass/_layout.scss */
/* line 388, ../sass/_layout.scss */
#main #content h5 { #main #content h5 {
font-size: 18px; font-size: 18px;
} }
/* line 388, ../sass/_layout.scss */
/* line 392, ../sass/_layout.scss */
#main #content h6 { #main #content h6 {
font-size: 16px; font-size: 16px;
} }
/* line 394, ../sass/_layout.scss */
/* line 398, ../sass/_layout.scss */
#main #content form .form-group .hint-block { #main #content form .form-group .hint-block {
color: gray; color: gray;
} }


/* line 402, ../sass/_layout.scss */
/* line 406, ../sass/_layout.scss */
#footer-producer { #footer-producer {
text-align: center; text-align: center;
position: absolute; position: absolute;
left: 0px; left: 0px;
width: 100%; width: 100%;
} }
/* line 409, ../sass/_layout.scss */
/* line 413, ../sass/_layout.scss */
#footer-producer a { #footer-producer a {
color: #FF7F00; color: #FF7F00;
} }
/* line 411, ../sass/_layout.scss */
/* line 415, ../sass/_layout.scss */
#footer-producer a:active { #footer-producer a:active {
text-decoration: underline; text-decoration: underline;
} }


/* line 417, ../sass/_layout.scss */
/* line 421, ../sass/_layout.scss */
#footer { #footer {
background-color: #F7F7F7;
background-color: #FFF8DC;
height: 100px; height: 100px;
} }
/* line 421, ../sass/_layout.scss */
/* line 425, ../sass/_layout.scss */
#footer .container { #footer .container {
padding: 0px; padding: 0px;
} }
/* line 423, ../sass/_layout.scss */
/* line 427, ../sass/_layout.scss */
#footer .container .overflow { #footer .container .overflow {
height: 30px; height: 30px;
background-color: white; background-color: white;
border-right: solid 1px #e0e0e0; border-right: solid 1px #e0e0e0;
border-bottom: solid 1px #e0e0e0; border-bottom: solid 1px #e0e0e0;
} }
/* line 431, ../sass/_layout.scss */
/* line 435, ../sass/_layout.scss */
#footer .container .content { #footer .container .content {
padding-top: 20px; padding-top: 20px;
color: black; color: black;
} }
/* line 435, ../sass/_layout.scss */
/* line 439, ../sass/_layout.scss */
#footer .container .content a { #footer .container .content a {
color: black; color: black;
font-family: "capsuularegular"; font-family: "capsuularegular";
padding-left: 10px; padding-left: 10px;
padding-right: 10px; padding-right: 10px;
} }
/* line 442, ../sass/_layout.scss */
/* line 446, ../sass/_layout.scss */
#footer .container .content a:hover { #footer .container .content a:hover {
text-decoration: underline; text-decoration: underline;
} }
/* line 449, ../sass/_layout.scss */
/* line 453, ../sass/_layout.scss */
#footer .container #code-source img { #footer .container #code-source img {
height: 20px; height: 20px;
} }

+ 22
- 18
producer/web/sass/_layout.scss View File

$color2: white ; $color2: white ;
$courant: #323232 ; $courant: #323232 ;
$color-back: #F7F7F7 ; $color-back: #F7F7F7 ;
$color-back: #FFEBCD ;
$color-back: #FFF8DC ;


body { body {
font-family: 'Arial' ; font-family: 'Arial' ;
position: absolute ; position: absolute ;
right: 0px ; right: 0px ;
top: 0px ; top: 0px ;
width: 200px ;
width: 70px ;
background-color: white ; background-color: white ;
padding-top: 7px ; padding-top: 7px ;
padding-bottom: 7px ; padding-bottom: 7px ;
} }
h1, h2 {
h1, h2, #infos, #infos a {
color: $courant ; color: $courant ;
} }
h2 { h2 {
font-family: 'capsuularegular' ; font-family: 'capsuularegular' ;
font-size: 27px ;
font-size: 20px ;
font-weight: normal ; font-weight: normal ;
text-align: center ; text-align: center ;
}
#infos {
text-align: center ;
padding-bottom: 10px ;
padding-top: 8px;
margin-bottom: 0px ;
color: $courant ;
font-size: 14px ;
color: gray ;
.favorite { .favorite {
border-left: solid 1px $color2 ;
padding-left: 10px ;
padding-left: 0px ;
.glyphicon {
font-size: 14px ;
}
} }
a { 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 { strong {
font-weight: bold ; font-weight: bold ;
} }

Loading…
Cancel
Save