Ver código fonte

Merge branch 'dev'

master
Guillaume Bourgeois 5 anos atrás
pai
commit
041f91aa86
18 arquivos alterados com 538 adições e 149 exclusões
  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 Ver arquivo

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

+ 10
- 0
backend/controllers/BackendController.php Ver arquivo

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

}


+ 7
- 0
backend/controllers/DistributionController.php Ver arquivo

@@ -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
], [

+ 19
- 0
backend/controllers/ProducerAdminController.php Ver arquivo

@@ -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.

+ 3
- 5
backend/controllers/SubscriptionController.php Ver arquivo

@@ -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();

+ 1
- 0
backend/controllers/UserController.php Ver arquivo

@@ -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) ;

+ 93
- 0
backend/models/AccessUserProducerForm.php Ver arquivo

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

}

+ 82
- 0
backend/views/access/index.php Ver arquivo

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

+ 1
- 1
backend/views/distribution/index.php Ver arquivo

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

+ 2
- 26
backend/views/layouts/left.php Ver arquivo

@@ -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' => '#',],
],
],
],
],
],
],*/
],
]
) ?>

+ 61
- 0
backend/views/producer-admin/create.php Ver arquivo

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

+ 1
- 0
backend/views/producer-admin/index.php Ver arquivo

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

?>


+ 2
- 1
backend/web/js/vuejs/distribution-index.js Ver arquivo

@@ -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() ;

+ 1
- 1
common/models/Producer.php Ver arquivo

@@ -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]],

+ 2
- 2
common/models/UserSearch.php Ver arquivo

@@ -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]) ;

+ 18
- 9
producer/views/layouts/main.php Ver arquivo

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

+ 87
- 86
producer/web/css/screen.css Ver arquivo

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

+ 22
- 18
producer/web/sass/_layout.scss Ver arquivo

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

Carregando…
Cancelar
Salvar