@@ -73,7 +73,7 @@ class CommunicateController extends BackendController | |||
} | |||
/** | |||
* Affiche la page d'accueil de la section avec un aperçu du mpde d'emploi | |||
* Affiche la page d'accueil de la section avec un aperçu du mode d'emploi | |||
* à imprimer. | |||
*/ | |||
public function actionIndex() |
@@ -157,6 +157,7 @@ class UserController extends BackendController | |||
$useProducer->id_producer = GlobalParam::getCurrentProducerId(); | |||
$useProducer->credit = 0; | |||
$useProducer->active = 1; | |||
$useProducer->newsletter = $model->newsletter; | |||
$useProducer->save(); | |||
$userManager->sendMailWelcome($model, $password); | |||
@@ -178,16 +179,14 @@ class UserController extends BackendController | |||
public function actionUpdate($id) | |||
{ | |||
$userManager = $this->getUserManager(); | |||
$producerManager = $this->getProducerManager(); | |||
$pointSaleManager = $this->getPointSaleManager(); | |||
$model = $this->findModel($id); | |||
// Moodification du profil | |||
$previousMail = $model->email; | |||
$user = User::find()->with('userProducer')->where(['id' => $model['id']])->one(); | |||
$userBelongToProducer = UserProducer::findOne(['id_user' => $id, 'id_producer' => GlobalParam::getCurrentProducerId()]); | |||
if ($userBelongToProducer) { | |||
$model->newsletter = $userBelongToProducer->newsletter; | |||
if ($model->load(\Yii::$app->request->post()) && $model->save()) { | |||
// on envoie le mail de bienvenue si le mail vient d'être défini | |||
@@ -201,6 +200,13 @@ class UserController extends BackendController | |||
$this->processLinkUserGroup($model); | |||
$this->processProductPricePercent($model); | |||
if($model->newsletter) { | |||
$userManager->subscribeUserNewsletter($model); | |||
} | |||
else { | |||
$userManager->unsubscribeUserNewsletter($model); | |||
} | |||
$this->setFlash('success', 'Utilisateur <strong>'.Html::encode($userManager->getUsername($model)).'</strong> modifié.'); | |||
return $this->redirect(['index']); |
@@ -163,11 +163,21 @@ Produits disponibles : | |||
} | |||
} | |||
} | |||
if($fromProducer) { | |||
$producer = GlobalParam::getCurrentProducer() ; | |||
$fromEmail = $producerManager->getEmailOpendistrib($producer) ; | |||
$fromName = $producer->name ; | |||
// Message inscription newsletter | |||
$messageAutoText .= " | |||
-- | |||
Me désinscrire de ce bulletin d'information : | |||
".Yii::$app->urlManagerProducer->createAbsoluteUrl(['newsletter/index', 'slug_producer' => $producer->slug]); | |||
$messageAutoHtml .= "<br /><br />--<br /><br /><a href=\"".Yii::$app->urlManagerProducer->createAbsoluteUrl(['newsletter/unsubscribe', 'slug_producer' => $producer->slug])."\">Me désinscrire</a> de ce bulletin d'information"; | |||
} | |||
else { | |||
$fromEmail = 'contact@opendistrib.net' ; |
@@ -63,6 +63,7 @@ $producerManager = $this->getProducerManager(); | |||
<?= $form->field($model, 'name')->textInput() ?> | |||
<?= $form->field($model, 'phone')->textInput() ?> | |||
<?= $form->field($model, 'email')->textInput() ?> | |||
<?= $form->field($model, 'newsletter')->checkbox() ?> | |||
<?= $form->field($model, 'address')->textarea() ?> | |||
<?php if ($producerManager->getConfig('option_export_evoliz')): ?> |
@@ -109,6 +109,22 @@ $this->render('_menu', [ | |||
return $html; | |||
} | |||
], | |||
[ | |||
'attribute' => 'newsletter', | |||
'header' => "Inscrit au bulletin<br/>d'information", | |||
'format' => 'raw', | |||
'headerOptions' => ['class' => 'column-hide-on-mobile'], | |||
'filterOptions' => ['class' => 'column-hide-on-mobile'], | |||
'contentOptions' => ['class' => 'column-hide-on-mobile'], | |||
'value' => function ($model) { | |||
$userManager = UserManager::getInstance(); | |||
if($userManager->isUserSubscribedNewsletter($model)) { | |||
return '<span class="label label-success">Oui</span>'; | |||
} | |||
return '<span class="label label-danger">Non</span>'; | |||
} | |||
], | |||
[ | |||
'class' => 'yii\grid\ActionColumn', | |||
'header' => 'Commandes', |
@@ -70,6 +70,7 @@ class User extends ActiveRecordCommon implements IdentityInterface | |||
var $user_groups = []; | |||
var $one_name; | |||
var $product_price_percent; | |||
var $newsletter; | |||
/** | |||
* @inheritdoc | |||
@@ -95,7 +96,7 @@ class User extends ActiveRecordCommon implements IdentityInterface | |||
public function rules() | |||
{ | |||
return [ | |||
[['no_mail', 'mail_distribution_monday', 'mail_distribution_tuesday', 'mail_distribution_wednesday', 'mail_distribution_thursday', 'mail_distribution_friday', 'mail_distribution_saturday', 'mail_distribution_sunday', 'is_main_contact'], 'boolean'], | |||
[['no_mail', 'mail_distribution_monday', 'mail_distribution_tuesday', 'mail_distribution_wednesday', 'mail_distribution_thursday', 'mail_distribution_friday', 'mail_distribution_saturday', 'mail_distribution_sunday', 'is_main_contact', 'newsletter'], 'boolean'], | |||
[['lastname', 'name', 'phone', 'address', 'type', 'name_legal_person', 'evoliz_code'], 'string'], | |||
['lastname', 'verifyOneName', 'skipOnError' => false, 'skipOnEmpty' => false], | |||
['email', 'email', 'message' => 'Cette adresse email n\'est pas valide'], | |||
@@ -137,7 +138,8 @@ class User extends ActiveRecordCommon implements IdentityInterface | |||
'is_main_contact' => 'Contact principal', | |||
'product_price_percent' => 'Prix produits : pourcentage', | |||
'user_groups' => "Groupes d'utilisateurs", | |||
'evoliz_code' => 'Code client Evoliz' | |||
'evoliz_code' => 'Code client Evoliz', | |||
'newsletter' => "Inscrit au bulletin d'information" | |||
]; | |||
} | |||
@@ -91,7 +91,7 @@ class UserRepository extends AbstractRepository | |||
->from('user'); | |||
$active = (isset($params['inactive']) && $params['inactive']) ? 0 : 1; | |||
$query->innerJoin('user_producer', 'user.id = user_producer.id_user AND user_producer.active = ' . $active . ' AND user_producer.id_producer = :id_producer', [':id_producer' => $params['id_producer']]); | |||
$query->innerJoin('user_producer', 'user.id = user_producer.id_user AND user_producer.active = ' . $active . ' AND user_producer.newsletter = 1 AND user_producer.id_producer = :id_producer', [':id_producer' => $params['id_producer']]); | |||
if (isset($params['id_point_sale']) && $params['id_point_sale']) { | |||
$point_sale = PointSale::findOne(['id' => $params['id_point_sale']]); |
@@ -0,0 +1,47 @@ | |||
<?php | |||
namespace common\logic\User\User\Service; | |||
use common\logic\AbstractService; | |||
use common\logic\User\User\Model\User; | |||
use common\logic\User\UserProducer\Repository\UserProducerRepository; | |||
use common\logic\User\UserProducer\Service\UserProducerBuilder; | |||
use common\logic\UtilsInterface; | |||
class NewsletterUtils extends AbstractService implements UtilsInterface | |||
{ | |||
protected UserProducerRepository $userProducerRepository; | |||
protected UserProducerBuilder $userProducerBuilder; | |||
public function loadDependencies(): void | |||
{ | |||
$this->userProducerRepository = $this->loadService(UserProducerRepository::class); | |||
$this->userProducerBuilder = $this->loadService(UserProducerBuilder::class); | |||
} | |||
public function isUserSubscribedNewsletter(User $user): bool | |||
{ | |||
$userProducer = $this->userProducerRepository->findOneUserProducer($user); | |||
if($userProducer && $userProducer->newsletter) { | |||
return true; | |||
} | |||
return false; | |||
} | |||
public function subscribeUserNewsletter(User $user): bool | |||
{ | |||
$userProducer = $this->userProducerBuilder->createUserProducerIfNotExist($user, $this->getProducerContext()); | |||
return $this->userProducerBuilder->updateUserProducerNewsletter($userProducer, true); | |||
} | |||
public function unsubscribeUserNewsletter(User $user): bool | |||
{ | |||
$userProducer = $this->userProducerRepository->findOneUserProducer($user); | |||
if($userProducer) { | |||
return $this->userProducerBuilder->updateUserProducerNewsletter($userProducer, false); | |||
} | |||
return false; | |||
} | |||
} |
@@ -5,6 +5,7 @@ namespace common\logic\User\User\Wrapper; | |||
use common\logic\AbstractContainer; | |||
use common\logic\User\User\Repository\UserRepository; | |||
use common\logic\User\User\Repository\UserRepositoryQuery; | |||
use common\logic\User\User\Service\NewsletterUtils; | |||
use common\logic\User\User\Service\UserBuilder; | |||
use common\logic\User\User\Service\UserDefinition; | |||
use common\logic\User\User\Service\UsersCreditCsvGenerator; | |||
@@ -23,6 +24,7 @@ class UserContainer extends AbstractContainer | |||
UserBuilder::class, | |||
UsersCreditCsvGenerator::class, | |||
UserUtils::class, | |||
NewsletterUtils::class, | |||
]; | |||
} | |||
@@ -4,6 +4,7 @@ namespace common\logic\User\User\Wrapper; | |||
use common\logic\AbstractManager; | |||
use common\logic\User\User\Repository\UserRepository; | |||
use common\logic\User\User\Service\NewsletterUtils; | |||
use common\logic\User\User\Service\UserBuilder; | |||
use common\logic\User\User\Service\UserDefinition; | |||
use common\logic\User\User\Service\UsersCreditCsvGenerator; | |||
@@ -17,6 +18,7 @@ use common\logic\User\User\Service\UserUtils; | |||
* @mixin UserBuilder | |||
* @mixin UserUtils | |||
* @mixin UsersCreditCsvGenerator | |||
* @mixin NewsletterUtils | |||
*/ | |||
class UserManager extends AbstractManager | |||
{ |
@@ -64,7 +64,7 @@ class UserProducer extends ActiveRecordCommon | |||
return [ | |||
[['id_user', 'id_producer'], 'required'], | |||
[['id_user', 'id_producer', 'product_price_percent'], 'integer'], | |||
[['active', 'bookmark', 'credit_active'], 'boolean'], | |||
[['active', 'bookmark', 'credit_active', 'newsletter'], 'boolean'], | |||
[['credit', 'product_price_percent'], 'double'], | |||
]; | |||
} |
@@ -176,4 +176,10 @@ class UserProducerBuilder extends AbstractBuilder | |||
$userProducer->bookmark = 0; | |||
return $this->update($userProducer); | |||
} | |||
public function updateUserProducerNewsletter(UserProducer $userProducer, bool $newsletter) | |||
{ | |||
$userProducer->newsletter = $newsletter; | |||
return $this->update($userProducer); | |||
} | |||
} |
@@ -0,0 +1,27 @@ | |||
<?php | |||
use yii\db\Migration; | |||
use yii\db\Schema; | |||
/** | |||
* Class m230904_064216_add_column_user_producer_newsletter | |||
*/ | |||
class m230904_064216_add_column_user_producer_newsletter extends Migration | |||
{ | |||
/** | |||
* {@inheritdoc} | |||
*/ | |||
public function safeUp() | |||
{ | |||
$this->addColumn('user_producer', 'newsletter', Schema::TYPE_BOOLEAN); | |||
$this->execute('UPDATE user_producer SET newsletter = 1;'); | |||
} | |||
/** | |||
* {@inheritdoc} | |||
*/ | |||
public function safeDown() | |||
{ | |||
$this->dropColumn('user_producer', 'newsletter'); | |||
} | |||
} |
@@ -0,0 +1,75 @@ | |||
<?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 producer\controllers; | |||
class NewsletterController extends ProducerBaseController | |||
{ | |||
public function behaviors() | |||
{ | |||
return []; | |||
} | |||
public function actionIndex() | |||
{ | |||
return $this->render('index', [ | |||
'user' => $this->getUserCurrent(), | |||
'producer' => $this->getProducerCurrent() | |||
]); | |||
} | |||
public function actionSubscribe() | |||
{ | |||
$userManager = $this->getUserManager(); | |||
$userCurrent = $this->getUserCurrent(); | |||
$userManager->subscribeUserNewsletter($userCurrent); | |||
$this->setFlash('success', "Votre inscription au bulletin d'information a bien été prise en compte."); | |||
return $this->redirect('index'); | |||
} | |||
public function actionUnsubscribe() | |||
{ | |||
$userManager = $this->getUserManager(); | |||
$userCurrent = $this->getUserCurrent(); | |||
$userManager->unsubscribeUserNewsletter($userCurrent); | |||
$this->setFlash('success', "À partir de maintenant, vous ne recevrez plus d'email de la part de ce producteur."); | |||
return $this->redirect('index'); | |||
} | |||
} | |||
?> |
@@ -128,6 +128,7 @@ if (!Yii::$app->user->isGuest) { | |||
->count(); | |||
$labelOrders = $countOrders > 0 ? 'success' : 'default'; | |||
$isUserSubscribedNewsletter = $userManager->isUserSubscribedNewsletter($userCurrent); | |||
echo Nav::widget([ | |||
'encodeLabels' => false, | |||
@@ -168,17 +169,16 @@ if (!Yii::$app->user->isGuest) { | |||
'visible' => !Yii::$app->user->isGuest && $producer->credit, | |||
'active' => $this->getControllerAction() == 'credit/history', | |||
], | |||
[ | |||
'label' => '<span class="glyphicon glyphicon-bullhorn"></span> Bulletin d\'information <span class="label label-'.($isUserSubscribedNewsletter ? 'success' : 'danger').'">'.($isUserSubscribedNewsletter ? 'Oui' : 'Non').'</span>', | |||
'url' => $this->getUrlManagerProducer()->createUrl(['newsletter/index']), | |||
'active' => $this->getControllerAction() == 'newsletter/index', | |||
], | |||
[ | |||
'label' => '<span class="glyphicon glyphicon-envelope"></span> Contact', | |||
'url' => $this->getUrlManagerProducer()->createUrl(['site/contact']), | |||
'active' => $this->getControllerAction() == 'site/contact', | |||
], | |||
/*[ | |||
'label' => '<span class="glyphicon glyphicon-cog"></span> Administration', | |||
'url' => $this->getUrlManagerBackend()->createAbsoluteUrl(['site/index']), | |||
'visible' => isset(Yii::$app->user->identity) && $this->getUserManager()->isProducer(\Yii::$app->user->identity), | |||
'options' => ['id' => 'btn-administration'] | |||
],*/ | |||
], | |||
]); | |||
?> |
@@ -0,0 +1,71 @@ | |||
<?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 common\logic\User\User\Wrapper\UserManager; | |||
use yii\helpers\Html; | |||
$userManager = UserManager::getInstance(); | |||
$this->setTitle("Bulletin d'information"); | |||
?> | |||
<div class="newsletter-index"> | |||
<?php if($userManager->isUserSubscribedNewsletter($user)): ?> | |||
<div class="panel panel-default"> | |||
<div class="panel-body"> | |||
Vous êtes inscrit au bulletin d'information <strong><?= Html::encode($producer->name) ?></strong>. | |||
</div> | |||
</div> | |||
<p> | |||
<a class="btn btn-danger" href="<?= $this->getUrlManagerProducer()->createUrl(['newsletter/unsubscribe']) ?>"> | |||
Me désinscrire | |||
</a> | |||
</p> | |||
<?php else: ?> | |||
<div class="panel panel-default"> | |||
<div class="panel-body"> | |||
Vous n'êtes pas inscrit au bulletin d'information <strong><?= Html::encode($producer->name) ?></strong>. | |||
</div> | |||
</div> | |||
<p> | |||
<a class="btn btn-success" href="<?= $this->getUrlManagerProducer()->createUrl(['newsletter/subscribe']) ?>"> | |||
M'inscrire | |||
</a> | |||
</p> | |||
<?php endif; ?> | |||
</div> |
@@ -148,79 +148,84 @@ body { | |||
clear: both; | |||
} | |||
/* line 64, ../sass/_layout.scss */ | |||
/* line 63, ../sass/_layout.scss */ | |||
.panel strong { | |||
font-weight: bold; | |||
} | |||
/* line 68, ../sass/_layout.scss */ | |||
.modal-backdrop.in { | |||
z-index: 10; | |||
} | |||
/* line 69, ../sass/_layout.scss */ | |||
/* line 73, ../sass/_layout.scss */ | |||
#section-user-top .navbar-default { | |||
background-color: white; | |||
} | |||
/* line 74, ../sass/_layout.scss */ | |||
/* line 78, ../sass/_layout.scss */ | |||
#main { | |||
position: relative; | |||
} | |||
/* line 76, ../sass/_layout.scss */ | |||
/* line 80, ../sass/_layout.scss */ | |||
#main .btn-primary { | |||
background-color: #F39C12; | |||
border: solid 1px #F39C12; | |||
color: white; | |||
} | |||
/* line 81, ../sass/_layout.scss */ | |||
/* line 85, ../sass/_layout.scss */ | |||
#main .btn-primary:hover, #main .btn-primary:active, #main .btn-primary:focus { | |||
background-color: #e08e0b; | |||
border: solid 1px #F39C12; | |||
color: white; | |||
} | |||
/* line 90, ../sass/_layout.scss */ | |||
/* line 94, ../sass/_layout.scss */ | |||
.btn { | |||
background-image: none; | |||
} | |||
/* line 94, ../sass/_layout.scss */ | |||
/* line 98, ../sass/_layout.scss */ | |||
#main .alert { | |||
background-image: none; | |||
background-color: white; | |||
border-bottom-width: 3px; | |||
} | |||
/* line 102, ../sass/_layout.scss */ | |||
/* line 106, ../sass/_layout.scss */ | |||
.alert.alert-warning a { | |||
color: #8a6d3b; | |||
text-decoration: underline; | |||
} | |||
/* line 109, ../sass/_layout.scss */ | |||
/* line 113, ../sass/_layout.scss */ | |||
.alert.alert-danger a { | |||
color: #a94442; | |||
text-decoration: underline; | |||
} | |||
/* line 119, ../sass/_layout.scss */ | |||
/* line 123, ../sass/_layout.scss */ | |||
ul.pagination li.active a { | |||
background-color: #F39C12; | |||
border: solid 1px #F39C12; | |||
} | |||
/* line 123, ../sass/_layout.scss */ | |||
/* line 127, ../sass/_layout.scss */ | |||
ul.pagination li.active a:hover { | |||
background-color: white; | |||
border: solid 1px white; | |||
color: #F39C12; | |||
} | |||
/* line 130, ../sass/_layout.scss */ | |||
/* line 134, ../sass/_layout.scss */ | |||
ul.pagination li a { | |||
color: #F39C12; | |||
} | |||
/* line 133, ../sass/_layout.scss */ | |||
/* line 137, ../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: #F39C12; | |||
} | |||
/* line 143, ../sass/_layout.scss */ | |||
/* line 147, ../sass/_layout.scss */ | |||
.product-name-description-block .name { | |||
font-family: "capsuularegular"; | |||
color: black; | |||
@@ -228,28 +233,28 @@ ul.pagination li a:hover, ul.pagination li a:focus, ul.pagination li a:active { | |||
line-height: 25px; | |||
font-weight: bold; | |||
} | |||
/* line 151, ../sass/_layout.scss */ | |||
/* line 155, ../sass/_layout.scss */ | |||
.product-name-description-block .other { | |||
font-family: "capsuularegular"; | |||
color: black; | |||
font-weight: bold; | |||
font-size: 17px; | |||
} | |||
/* line 158, ../sass/_layout.scss */ | |||
/* line 162, ../sass/_layout.scss */ | |||
.product-name-description-block .description, | |||
.product-name-description-block .description-long { | |||
color: gray; | |||
} | |||
/* line 164, ../sass/_layout.scss */ | |||
/* line 168, ../sass/_layout.scss */ | |||
.product-name-description-block .description-long a { | |||
color: #F39C12; | |||
} | |||
/* line 167, ../sass/_layout.scss */ | |||
/* line 171, ../sass/_layout.scss */ | |||
.product-name-description-block .description-long .content { | |||
display: none; | |||
} | |||
/* line 173, ../sass/_layout.scss */ | |||
/* line 177, ../sass/_layout.scss */ | |||
#left { | |||
background-color: #FFF8DC; | |||
text-align: center; | |||
@@ -257,12 +262,12 @@ ul.pagination li a:hover, ul.pagination li a:focus, ul.pagination li a:active { | |||
padding: 0px; | |||
position: relative; | |||
} | |||
/* line 180, ../sass/_layout.scss */ | |||
/* line 184, ../sass/_layout.scss */ | |||
#left .fixed { | |||
position: fixed; | |||
display: none; | |||
} | |||
/* line 186, ../sass/_layout.scss */ | |||
/* line 190, ../sass/_layout.scss */ | |||
#left #logo { | |||
position: relative; | |||
background-color: white; | |||
@@ -277,7 +282,7 @@ ul.pagination li a:hover, ul.pagination li a:focus, ul.pagination li a:active { | |||
text-align: center; | |||
overflow: hidden; | |||
} | |||
/* line 198, ../sass/_layout.scss */ | |||
/* line 202, ../sass/_layout.scss */ | |||
#left #logo img { | |||
position: absolute; | |||
top: 50%; | |||
@@ -286,11 +291,11 @@ ul.pagination li a:hover, ul.pagination li a:focus, ul.pagination li a:active { | |||
max-width: 90px; | |||
max-height: 90px; | |||
} | |||
/* line 208, ../sass/_layout.scss */ | |||
/* line 212, ../sass/_layout.scss */ | |||
#left h1, #left h2, #left #infos, #left #infos a { | |||
color: #323232; | |||
} | |||
/* line 212, ../sass/_layout.scss */ | |||
/* line 216, ../sass/_layout.scss */ | |||
#left h1 { | |||
text-transform: uppercase; | |||
font-family: "highvoltageregular"; | |||
@@ -301,37 +306,37 @@ ul.pagination li a:hover, ul.pagination li a:focus, ul.pagination li a:active { | |||
text-align: center; | |||
font-weight: normal; | |||
} | |||
/* line 223, ../sass/_layout.scss */ | |||
/* line 227, ../sass/_layout.scss */ | |||
#left h2 { | |||
font-family: "capsuularegular"; | |||
font-size: 15px; | |||
font-weight: normal; | |||
text-align: center; | |||
} | |||
/* line 229, ../sass/_layout.scss */ | |||
/* line 233, ../sass/_layout.scss */ | |||
#left h2 .favorite { | |||
padding-left: 0px; | |||
} | |||
/* line 232, ../sass/_layout.scss */ | |||
/* line 236, ../sass/_layout.scss */ | |||
#left h2 .favorite .glyphicon { | |||
font-size: 14px; | |||
} | |||
/* line 237, ../sass/_layout.scss */ | |||
/* line 241, ../sass/_layout.scss */ | |||
#left h2 a { | |||
color: #323232; | |||
} | |||
/* line 243, ../sass/_layout.scss */ | |||
/* line 247, ../sass/_layout.scss */ | |||
#left nav#main-nav { | |||
background-color: white; | |||
border: solid 1px #e0e0e0; | |||
border-bottom: 0px none; | |||
margin-top: 20px; | |||
} | |||
/* line 250, ../sass/_layout.scss */ | |||
/* line 254, ../sass/_layout.scss */ | |||
#left nav#main-nav ul li { | |||
display: block; | |||
} | |||
/* line 253, ../sass/_layout.scss */ | |||
/* line 257, ../sass/_layout.scss */ | |||
#left nav#main-nav ul li a { | |||
color: #323232; | |||
color: black; | |||
@@ -341,23 +346,23 @@ ul.pagination li a:hover, ul.pagination li a:focus, ul.pagination li a:active { | |||
display: block; | |||
text-align: left; | |||
} | |||
/* line 262, ../sass/_layout.scss */ | |||
/* line 266, ../sass/_layout.scss */ | |||
#left nav#main-nav ul li a .glyphicon { | |||
font-size: 15px; | |||
margin-right: 3px; | |||
} | |||
/* line 267, ../sass/_layout.scss */ | |||
/* line 271, ../sass/_layout.scss */ | |||
#left nav#main-nav ul li a span.label { | |||
padding-bottom: 3px; | |||
font-family: "Arial"; | |||
float: right; | |||
} | |||
/* line 275, ../sass/_layout.scss */ | |||
/* line 279, ../sass/_layout.scss */ | |||
#left nav#main-nav ul li.active span.label, #left nav#main-nav ul li a:hover span.label { | |||
background-color: #e08e0b; | |||
color: white; | |||
} | |||
/* line 281, ../sass/_layout.scss */ | |||
/* line 285, ../sass/_layout.scss */ | |||
#left nav#main-nav ul li a:hover, #left nav#main-nav ul li.active a { | |||
background: #F39C12; | |||
color: white; | |||
@@ -365,22 +370,22 @@ ul.pagination li a:hover, ul.pagination li a:focus, ul.pagination li a:active { | |||
-webkit-border-radius: 0px; | |||
border-radius: 0px; | |||
} | |||
/* line 290, ../sass/_layout.scss */ | |||
/* line 294, ../sass/_layout.scss */ | |||
#left nav#main-nav ul li#btn-administration a { | |||
color: #F39C12; | |||
} | |||
/* line 293, ../sass/_layout.scss */ | |||
/* line 297, ../sass/_layout.scss */ | |||
#left nav#main-nav ul li#btn-administration a:hover { | |||
color: white; | |||
} | |||
/* line 301, ../sass/_layout.scss */ | |||
/* line 305, ../sass/_layout.scss */ | |||
#left nav#main-nav #user { | |||
color: #F39C12; | |||
float: right; | |||
padding: 10px; | |||
} | |||
/* line 309, ../sass/_layout.scss */ | |||
/* line 313, ../sass/_layout.scss */ | |||
#main { | |||
background-color: #FFF8DC; | |||
border: solid 1px #e0e0e0; | |||
@@ -388,13 +393,13 @@ ul.pagination li a:hover, ul.pagination li a:focus, ul.pagination li a:active { | |||
padding: 0px; | |||
background-color: white; | |||
} | |||
/* line 316, ../sass/_layout.scss */ | |||
/* line 320, ../sass/_layout.scss */ | |||
#main #img-big { | |||
height: 130px; | |||
overflow: hidden; | |||
position: relative; | |||
} | |||
/* line 321, ../sass/_layout.scss */ | |||
/* line 325, ../sass/_layout.scss */ | |||
#main #img-big img.img-photo { | |||
width: 100%; | |||
position: absolute; | |||
@@ -402,7 +407,7 @@ ul.pagination li a:hover, ul.pagination li a:focus, ul.pagination li a:active { | |||
left: 50%; | |||
transform: translate(-50%, -50%); | |||
} | |||
/* line 331, ../sass/_layout.scss */ | |||
/* line 335, ../sass/_layout.scss */ | |||
#main #infos-producer { | |||
padding: 5px 10px; | |||
margin-bottom: 0px; | |||
@@ -412,20 +417,20 @@ ul.pagination li a:hover, ul.pagination li a:focus, ul.pagination li a:active { | |||
border-bottom: solid 1px #e0e0e0; | |||
color: gray; | |||
} | |||
/* line 340, ../sass/_layout.scss */ | |||
/* line 344, ../sass/_layout.scss */ | |||
#main #infos-producer strong { | |||
font-weight: bold; | |||
} | |||
/* line 344, ../sass/_layout.scss */ | |||
/* line 348, ../sass/_layout.scss */ | |||
#main #infos-producer .favorite { | |||
float: right; | |||
color: gray; | |||
} | |||
/* line 347, ../sass/_layout.scss */ | |||
/* line 351, ../sass/_layout.scss */ | |||
#main #infos-producer .favorite a { | |||
color: black; | |||
} | |||
/* line 353, ../sass/_layout.scss */ | |||
/* line 357, ../sass/_layout.scss */ | |||
#main h2#page-title { | |||
padding-left: 15px; | |||
padding-right: 15px; | |||
@@ -440,36 +445,36 @@ ul.pagination li a:hover, ul.pagination li a:focus, ul.pagination li a:active { | |||
top: -10px; | |||
text-align: left; | |||
} | |||
/* line 367, ../sass/_layout.scss */ | |||
/* line 371, ../sass/_layout.scss */ | |||
#main h2#page-title #buttons { | |||
margin-bottom: 15px; | |||
font-family: "Arial"; | |||
} | |||
/* line 374, ../sass/_layout.scss */ | |||
/* line 378, ../sass/_layout.scss */ | |||
#main #content { | |||
padding: 0px 20px 20px 20px; | |||
padding-bottom: 40px; | |||
min-height: 300px; | |||
} | |||
/* line 379, ../sass/_layout.scss */ | |||
/* line 383, ../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 384, ../sass/_layout.scss */ | |||
/* line 388, ../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 389, ../sass/_layout.scss */ | |||
/* line 393, ../sass/_layout.scss */ | |||
#main #content h1 { | |||
font-size: 30px; | |||
} | |||
/* line 393, ../sass/_layout.scss */ | |||
/* line 397, ../sass/_layout.scss */ | |||
#main #content h2 { | |||
font-size: 25px; | |||
} | |||
/* line 398, ../sass/_layout.scss */ | |||
/* line 402, ../sass/_layout.scss */ | |||
#main #content h3 { | |||
font-family: "capsuularegular"; | |||
text-transform: uppercase; | |||
@@ -478,29 +483,29 @@ ul.pagination li a:hover, ul.pagination li a:focus, ul.pagination li a:active { | |||
margin-bottom: 30px; | |||
margin-top: 45px; | |||
} | |||
/* line 406, ../sass/_layout.scss */ | |||
/* line 410, ../sass/_layout.scss */ | |||
#main #content h3 span { | |||
padding-top: 14px; | |||
color: #323232; | |||
} | |||
/* line 412, ../sass/_layout.scss */ | |||
/* line 416, ../sass/_layout.scss */ | |||
#main #content h4 { | |||
font-size: 20px; | |||
} | |||
/* line 416, ../sass/_layout.scss */ | |||
/* line 420, ../sass/_layout.scss */ | |||
#main #content h5 { | |||
font-size: 18px; | |||
} | |||
/* line 420, ../sass/_layout.scss */ | |||
/* line 424, ../sass/_layout.scss */ | |||
#main #content h6 { | |||
font-size: 16px; | |||
} | |||
/* line 426, ../sass/_layout.scss */ | |||
/* line 430, ../sass/_layout.scss */ | |||
#main #content form .form-group .hint-block { | |||
color: gray; | |||
} | |||
/* line 434, ../sass/_layout.scss */ | |||
/* line 438, ../sass/_layout.scss */ | |||
#footer-producer { | |||
text-align: center; | |||
position: absolute; | |||
@@ -508,28 +513,28 @@ ul.pagination li a:hover, ul.pagination li a:focus, ul.pagination li a:active { | |||
left: 0px; | |||
width: 100%; | |||
} | |||
/* line 441, ../sass/_layout.scss */ | |||
/* line 445, ../sass/_layout.scss */ | |||
#footer-producer a { | |||
color: #F39C12; | |||
} | |||
/* line 443, ../sass/_layout.scss */ | |||
/* line 447, ../sass/_layout.scss */ | |||
#footer-producer a:active { | |||
text-decoration: underline; | |||
} | |||
/* line 449, ../sass/_layout.scss */ | |||
/* line 453, ../sass/_layout.scss */ | |||
#footer { | |||
background-color: #FFF8DC; | |||
height: 100px; | |||
float: right; | |||
text-align: center; | |||
} | |||
/* line 455, ../sass/_layout.scss */ | |||
/* line 459, ../sass/_layout.scss */ | |||
#footer .content { | |||
padding-top: 20px; | |||
color: black; | |||
} | |||
/* line 459, ../sass/_layout.scss */ | |||
/* line 463, ../sass/_layout.scss */ | |||
#footer .content a { | |||
color: black; | |||
font-family: "capsuularegular"; | |||
@@ -537,11 +542,11 @@ ul.pagination li a:hover, ul.pagination li a:focus, ul.pagination li a:active { | |||
padding-left: 10px; | |||
padding-right: 10px; | |||
} | |||
/* line 466, ../sass/_layout.scss */ | |||
/* line 470, ../sass/_layout.scss */ | |||
#footer .content a:hover { | |||
text-decoration: underline; | |||
} | |||
/* line 473, ../sass/_layout.scss */ | |||
/* line 477, ../sass/_layout.scss */ | |||
#footer #code-source img { | |||
height: 20px; | |||
} |
@@ -59,6 +59,10 @@ body { | |||
a { | |||
//color: $color1; | |||
} | |||
strong { | |||
font-weight: bold; | |||
} | |||
} | |||
.modal-backdrop.in { |