} | } | ||||
/** | /** | ||||
* 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. | * à imprimer. | ||||
*/ | */ | ||||
public function actionIndex() | public function actionIndex() |
$useProducer->id_producer = GlobalParam::getCurrentProducerId(); | $useProducer->id_producer = GlobalParam::getCurrentProducerId(); | ||||
$useProducer->credit = 0; | $useProducer->credit = 0; | ||||
$useProducer->active = 1; | $useProducer->active = 1; | ||||
$useProducer->newsletter = $model->newsletter; | |||||
$useProducer->save(); | $useProducer->save(); | ||||
$userManager->sendMailWelcome($model, $password); | $userManager->sendMailWelcome($model, $password); | ||||
public function actionUpdate($id) | public function actionUpdate($id) | ||||
{ | { | ||||
$userManager = $this->getUserManager(); | $userManager = $this->getUserManager(); | ||||
$producerManager = $this->getProducerManager(); | |||||
$pointSaleManager = $this->getPointSaleManager(); | $pointSaleManager = $this->getPointSaleManager(); | ||||
$model = $this->findModel($id); | $model = $this->findModel($id); | ||||
// Moodification du profil | |||||
$previousMail = $model->email; | $previousMail = $model->email; | ||||
$user = User::find()->with('userProducer')->where(['id' => $model['id']])->one(); | $user = User::find()->with('userProducer')->where(['id' => $model['id']])->one(); | ||||
$userBelongToProducer = UserProducer::findOne(['id_user' => $id, 'id_producer' => GlobalParam::getCurrentProducerId()]); | $userBelongToProducer = UserProducer::findOne(['id_user' => $id, 'id_producer' => GlobalParam::getCurrentProducerId()]); | ||||
if ($userBelongToProducer) { | if ($userBelongToProducer) { | ||||
$model->newsletter = $userBelongToProducer->newsletter; | |||||
if ($model->load(\Yii::$app->request->post()) && $model->save()) { | if ($model->load(\Yii::$app->request->post()) && $model->save()) { | ||||
// on envoie le mail de bienvenue si le mail vient d'être défini | // on envoie le mail de bienvenue si le mail vient d'être défini | ||||
$this->processLinkUserGroup($model); | $this->processLinkUserGroup($model); | ||||
$this->processProductPricePercent($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é.'); | $this->setFlash('success', 'Utilisateur <strong>'.Html::encode($userManager->getUsername($model)).'</strong> modifié.'); | ||||
return $this->redirect(['index']); | return $this->redirect(['index']); |
} | } | ||||
} | } | ||||
} | } | ||||
if($fromProducer) { | if($fromProducer) { | ||||
$producer = GlobalParam::getCurrentProducer() ; | $producer = GlobalParam::getCurrentProducer() ; | ||||
$fromEmail = $producerManager->getEmailOpendistrib($producer) ; | $fromEmail = $producerManager->getEmailOpendistrib($producer) ; | ||||
$fromName = $producer->name ; | $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 { | else { | ||||
$fromEmail = 'contact@opendistrib.net' ; | $fromEmail = 'contact@opendistrib.net' ; |
<?= $form->field($model, 'name')->textInput() ?> | <?= $form->field($model, 'name')->textInput() ?> | ||||
<?= $form->field($model, 'phone')->textInput() ?> | <?= $form->field($model, 'phone')->textInput() ?> | ||||
<?= $form->field($model, 'email')->textInput() ?> | <?= $form->field($model, 'email')->textInput() ?> | ||||
<?= $form->field($model, 'newsletter')->checkbox() ?> | |||||
<?= $form->field($model, 'address')->textarea() ?> | <?= $form->field($model, 'address')->textarea() ?> | ||||
<?php if ($producerManager->getConfig('option_export_evoliz')): ?> | <?php if ($producerManager->getConfig('option_export_evoliz')): ?> |
return $html; | 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', | 'class' => 'yii\grid\ActionColumn', | ||||
'header' => 'Commandes', | 'header' => 'Commandes', |
var $user_groups = []; | var $user_groups = []; | ||||
var $one_name; | var $one_name; | ||||
var $product_price_percent; | var $product_price_percent; | ||||
var $newsletter; | |||||
/** | /** | ||||
* @inheritdoc | * @inheritdoc | ||||
public function rules() | public function rules() | ||||
{ | { | ||||
return [ | 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', 'name', 'phone', 'address', 'type', 'name_legal_person', 'evoliz_code'], 'string'], | ||||
['lastname', 'verifyOneName', 'skipOnError' => false, 'skipOnEmpty' => false], | ['lastname', 'verifyOneName', 'skipOnError' => false, 'skipOnEmpty' => false], | ||||
['email', 'email', 'message' => 'Cette adresse email n\'est pas valide'], | ['email', 'email', 'message' => 'Cette adresse email n\'est pas valide'], | ||||
'is_main_contact' => 'Contact principal', | 'is_main_contact' => 'Contact principal', | ||||
'product_price_percent' => 'Prix produits : pourcentage', | 'product_price_percent' => 'Prix produits : pourcentage', | ||||
'user_groups' => "Groupes d'utilisateurs", | 'user_groups' => "Groupes d'utilisateurs", | ||||
'evoliz_code' => 'Code client Evoliz' | |||||
'evoliz_code' => 'Code client Evoliz', | |||||
'newsletter' => "Inscrit au bulletin d'information" | |||||
]; | ]; | ||||
} | } | ||||
->from('user'); | ->from('user'); | ||||
$active = (isset($params['inactive']) && $params['inactive']) ? 0 : 1; | $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']) { | if (isset($params['id_point_sale']) && $params['id_point_sale']) { | ||||
$point_sale = PointSale::findOne(['id' => $params['id_point_sale']]); | $point_sale = PointSale::findOne(['id' => $params['id_point_sale']]); |
<?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; | |||||
} | |||||
} |
use common\logic\AbstractContainer; | use common\logic\AbstractContainer; | ||||
use common\logic\User\User\Repository\UserRepository; | use common\logic\User\User\Repository\UserRepository; | ||||
use common\logic\User\User\Repository\UserRepositoryQuery; | 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\UserBuilder; | ||||
use common\logic\User\User\Service\UserDefinition; | use common\logic\User\User\Service\UserDefinition; | ||||
use common\logic\User\User\Service\UsersCreditCsvGenerator; | use common\logic\User\User\Service\UsersCreditCsvGenerator; | ||||
UserBuilder::class, | UserBuilder::class, | ||||
UsersCreditCsvGenerator::class, | UsersCreditCsvGenerator::class, | ||||
UserUtils::class, | UserUtils::class, | ||||
NewsletterUtils::class, | |||||
]; | ]; | ||||
} | } | ||||
use common\logic\AbstractManager; | use common\logic\AbstractManager; | ||||
use common\logic\User\User\Repository\UserRepository; | 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\UserBuilder; | ||||
use common\logic\User\User\Service\UserDefinition; | use common\logic\User\User\Service\UserDefinition; | ||||
use common\logic\User\User\Service\UsersCreditCsvGenerator; | use common\logic\User\User\Service\UsersCreditCsvGenerator; | ||||
* @mixin UserBuilder | * @mixin UserBuilder | ||||
* @mixin UserUtils | * @mixin UserUtils | ||||
* @mixin UsersCreditCsvGenerator | * @mixin UsersCreditCsvGenerator | ||||
* @mixin NewsletterUtils | |||||
*/ | */ | ||||
class UserManager extends AbstractManager | class UserManager extends AbstractManager | ||||
{ | { |
return [ | return [ | ||||
[['id_user', 'id_producer'], 'required'], | [['id_user', 'id_producer'], 'required'], | ||||
[['id_user', 'id_producer', 'product_price_percent'], 'integer'], | [['id_user', 'id_producer', 'product_price_percent'], 'integer'], | ||||
[['active', 'bookmark', 'credit_active'], 'boolean'], | |||||
[['active', 'bookmark', 'credit_active', 'newsletter'], 'boolean'], | |||||
[['credit', 'product_price_percent'], 'double'], | [['credit', 'product_price_percent'], 'double'], | ||||
]; | ]; | ||||
} | } |
$userProducer->bookmark = 0; | $userProducer->bookmark = 0; | ||||
return $this->update($userProducer); | return $this->update($userProducer); | ||||
} | } | ||||
public function updateUserProducerNewsletter(UserProducer $userProducer, bool $newsletter) | |||||
{ | |||||
$userProducer->newsletter = $newsletter; | |||||
return $this->update($userProducer); | |||||
} | |||||
} | } |
<?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'); | |||||
} | |||||
} |
<?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'); | |||||
} | |||||
} | |||||
?> |
->count(); | ->count(); | ||||
$labelOrders = $countOrders > 0 ? 'success' : 'default'; | $labelOrders = $countOrders > 0 ? 'success' : 'default'; | ||||
$isUserSubscribedNewsletter = $userManager->isUserSubscribedNewsletter($userCurrent); | |||||
echo Nav::widget([ | echo Nav::widget([ | ||||
'encodeLabels' => false, | 'encodeLabels' => false, | ||||
'visible' => !Yii::$app->user->isGuest && $producer->credit, | 'visible' => !Yii::$app->user->isGuest && $producer->credit, | ||||
'active' => $this->getControllerAction() == 'credit/history', | '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', | 'label' => '<span class="glyphicon glyphicon-envelope"></span> Contact', | ||||
'url' => $this->getUrlManagerProducer()->createUrl(['site/contact']), | 'url' => $this->getUrlManagerProducer()->createUrl(['site/contact']), | ||||
'active' => $this->getControllerAction() == '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'] | |||||
],*/ | |||||
], | ], | ||||
]); | ]); | ||||
?> | ?> |
<?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> |
clear: both; | 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 { | .modal-backdrop.in { | ||||
z-index: 10; | z-index: 10; | ||||
} | } | ||||
/* line 69, ../sass/_layout.scss */ | |||||
/* line 73, ../sass/_layout.scss */ | |||||
#section-user-top .navbar-default { | #section-user-top .navbar-default { | ||||
background-color: white; | background-color: white; | ||||
} | } | ||||
/* line 74, ../sass/_layout.scss */ | |||||
/* line 78, ../sass/_layout.scss */ | |||||
#main { | #main { | ||||
position: relative; | position: relative; | ||||
} | } | ||||
/* line 76, ../sass/_layout.scss */ | |||||
/* line 80, ../sass/_layout.scss */ | |||||
#main .btn-primary { | #main .btn-primary { | ||||
background-color: #F39C12; | background-color: #F39C12; | ||||
border: solid 1px #F39C12; | border: solid 1px #F39C12; | ||||
color: white; | color: white; | ||||
} | } | ||||
/* line 81, ../sass/_layout.scss */ | |||||
/* line 85, ../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: #e08e0b; | background-color: #e08e0b; | ||||
border: solid 1px #F39C12; | border: solid 1px #F39C12; | ||||
color: white; | color: white; | ||||
} | } | ||||
/* line 90, ../sass/_layout.scss */ | |||||
/* line 94, ../sass/_layout.scss */ | |||||
.btn { | .btn { | ||||
background-image: none; | background-image: none; | ||||
} | } | ||||
/* line 94, ../sass/_layout.scss */ | |||||
/* line 98, ../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 102, ../sass/_layout.scss */ | |||||
/* line 106, ../sass/_layout.scss */ | |||||
.alert.alert-warning a { | .alert.alert-warning a { | ||||
color: #8a6d3b; | color: #8a6d3b; | ||||
text-decoration: underline; | text-decoration: underline; | ||||
} | } | ||||
/* line 109, ../sass/_layout.scss */ | |||||
/* line 113, ../sass/_layout.scss */ | |||||
.alert.alert-danger a { | .alert.alert-danger a { | ||||
color: #a94442; | color: #a94442; | ||||
text-decoration: underline; | text-decoration: underline; | ||||
} | } | ||||
/* line 119, ../sass/_layout.scss */ | |||||
/* line 123, ../sass/_layout.scss */ | |||||
ul.pagination li.active a { | ul.pagination li.active a { | ||||
background-color: #F39C12; | background-color: #F39C12; | ||||
border: solid 1px #F39C12; | border: solid 1px #F39C12; | ||||
} | } | ||||
/* line 123, ../sass/_layout.scss */ | |||||
/* line 127, ../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: #F39C12; | color: #F39C12; | ||||
} | } | ||||
/* line 130, ../sass/_layout.scss */ | |||||
/* line 134, ../sass/_layout.scss */ | |||||
ul.pagination li a { | ul.pagination li a { | ||||
color: #F39C12; | 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 { | 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: #F39C12; | color: #F39C12; | ||||
} | } | ||||
/* line 143, ../sass/_layout.scss */ | |||||
/* line 147, ../sass/_layout.scss */ | |||||
.product-name-description-block .name { | .product-name-description-block .name { | ||||
font-family: "capsuularegular"; | font-family: "capsuularegular"; | ||||
color: black; | color: black; | ||||
line-height: 25px; | line-height: 25px; | ||||
font-weight: bold; | font-weight: bold; | ||||
} | } | ||||
/* line 151, ../sass/_layout.scss */ | |||||
/* line 155, ../sass/_layout.scss */ | |||||
.product-name-description-block .other { | .product-name-description-block .other { | ||||
font-family: "capsuularegular"; | font-family: "capsuularegular"; | ||||
color: black; | color: black; | ||||
font-weight: bold; | font-weight: bold; | ||||
font-size: 17px; | font-size: 17px; | ||||
} | } | ||||
/* line 158, ../sass/_layout.scss */ | |||||
/* line 162, ../sass/_layout.scss */ | |||||
.product-name-description-block .description, | .product-name-description-block .description, | ||||
.product-name-description-block .description-long { | .product-name-description-block .description-long { | ||||
color: gray; | color: gray; | ||||
} | } | ||||
/* line 164, ../sass/_layout.scss */ | |||||
/* line 168, ../sass/_layout.scss */ | |||||
.product-name-description-block .description-long a { | .product-name-description-block .description-long a { | ||||
color: #F39C12; | color: #F39C12; | ||||
} | } | ||||
/* line 167, ../sass/_layout.scss */ | |||||
/* line 171, ../sass/_layout.scss */ | |||||
.product-name-description-block .description-long .content { | .product-name-description-block .description-long .content { | ||||
display: none; | display: none; | ||||
} | } | ||||
/* line 173, ../sass/_layout.scss */ | |||||
/* line 177, ../sass/_layout.scss */ | |||||
#left { | #left { | ||||
background-color: #FFF8DC; | background-color: #FFF8DC; | ||||
text-align: center; | text-align: center; | ||||
padding: 0px; | padding: 0px; | ||||
position: relative; | position: relative; | ||||
} | } | ||||
/* line 180, ../sass/_layout.scss */ | |||||
/* line 184, ../sass/_layout.scss */ | |||||
#left .fixed { | #left .fixed { | ||||
position: fixed; | position: fixed; | ||||
display: none; | display: none; | ||||
} | } | ||||
/* line 186, ../sass/_layout.scss */ | |||||
/* line 190, ../sass/_layout.scss */ | |||||
#left #logo { | #left #logo { | ||||
position: relative; | position: relative; | ||||
background-color: white; | background-color: white; | ||||
text-align: center; | text-align: center; | ||||
overflow: hidden; | overflow: hidden; | ||||
} | } | ||||
/* line 198, ../sass/_layout.scss */ | |||||
/* line 202, ../sass/_layout.scss */ | |||||
#left #logo img { | #left #logo img { | ||||
position: absolute; | position: absolute; | ||||
top: 50%; | top: 50%; | ||||
max-width: 90px; | max-width: 90px; | ||||
max-height: 90px; | max-height: 90px; | ||||
} | } | ||||
/* line 208, ../sass/_layout.scss */ | |||||
/* line 212, ../sass/_layout.scss */ | |||||
#left h1, #left h2, #left #infos, #left #infos a { | #left h1, #left h2, #left #infos, #left #infos a { | ||||
color: #323232; | color: #323232; | ||||
} | } | ||||
/* line 212, ../sass/_layout.scss */ | |||||
/* line 216, ../sass/_layout.scss */ | |||||
#left h1 { | #left 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 223, ../sass/_layout.scss */ | |||||
/* line 227, ../sass/_layout.scss */ | |||||
#left h2 { | #left h2 { | ||||
font-family: "capsuularegular"; | font-family: "capsuularegular"; | ||||
font-size: 15px; | font-size: 15px; | ||||
font-weight: normal; | font-weight: normal; | ||||
text-align: center; | text-align: center; | ||||
} | } | ||||
/* line 229, ../sass/_layout.scss */ | |||||
/* line 233, ../sass/_layout.scss */ | |||||
#left h2 .favorite { | #left h2 .favorite { | ||||
padding-left: 0px; | padding-left: 0px; | ||||
} | } | ||||
/* line 232, ../sass/_layout.scss */ | |||||
/* line 236, ../sass/_layout.scss */ | |||||
#left h2 .favorite .glyphicon { | #left h2 .favorite .glyphicon { | ||||
font-size: 14px; | font-size: 14px; | ||||
} | } | ||||
/* line 237, ../sass/_layout.scss */ | |||||
/* line 241, ../sass/_layout.scss */ | |||||
#left h2 a { | #left h2 a { | ||||
color: #323232; | color: #323232; | ||||
} | } | ||||
/* line 243, ../sass/_layout.scss */ | |||||
/* line 247, ../sass/_layout.scss */ | |||||
#left nav#main-nav { | #left nav#main-nav { | ||||
background-color: white; | background-color: white; | ||||
border: solid 1px #e0e0e0; | border: solid 1px #e0e0e0; | ||||
border-bottom: 0px none; | border-bottom: 0px none; | ||||
margin-top: 20px; | margin-top: 20px; | ||||
} | } | ||||
/* line 250, ../sass/_layout.scss */ | |||||
/* line 254, ../sass/_layout.scss */ | |||||
#left nav#main-nav ul li { | #left nav#main-nav ul li { | ||||
display: block; | display: block; | ||||
} | } | ||||
/* line 253, ../sass/_layout.scss */ | |||||
/* line 257, ../sass/_layout.scss */ | |||||
#left nav#main-nav ul li a { | #left nav#main-nav ul li a { | ||||
color: #323232; | color: #323232; | ||||
color: black; | color: black; | ||||
display: block; | display: block; | ||||
text-align: left; | text-align: left; | ||||
} | } | ||||
/* line 262, ../sass/_layout.scss */ | |||||
/* line 266, ../sass/_layout.scss */ | |||||
#left nav#main-nav ul li a .glyphicon { | #left nav#main-nav ul li a .glyphicon { | ||||
font-size: 15px; | font-size: 15px; | ||||
margin-right: 3px; | margin-right: 3px; | ||||
} | } | ||||
/* line 267, ../sass/_layout.scss */ | |||||
/* line 271, ../sass/_layout.scss */ | |||||
#left nav#main-nav ul li a span.label { | #left nav#main-nav ul li a span.label { | ||||
padding-bottom: 3px; | padding-bottom: 3px; | ||||
font-family: "Arial"; | font-family: "Arial"; | ||||
float: right; | 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 { | #left nav#main-nav ul li.active span.label, #left nav#main-nav ul li a:hover span.label { | ||||
background-color: #e08e0b; | background-color: #e08e0b; | ||||
color: white; | 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 { | #left nav#main-nav ul li a:hover, #left nav#main-nav ul li.active a { | ||||
background: #F39C12; | background: #F39C12; | ||||
color: white; | color: white; | ||||
-webkit-border-radius: 0px; | -webkit-border-radius: 0px; | ||||
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 { | #left nav#main-nav ul li#btn-administration a { | ||||
color: #F39C12; | color: #F39C12; | ||||
} | } | ||||
/* line 293, ../sass/_layout.scss */ | |||||
/* line 297, ../sass/_layout.scss */ | |||||
#left nav#main-nav ul li#btn-administration a:hover { | #left nav#main-nav ul li#btn-administration a:hover { | ||||
color: white; | color: white; | ||||
} | } | ||||
/* line 301, ../sass/_layout.scss */ | |||||
/* line 305, ../sass/_layout.scss */ | |||||
#left nav#main-nav #user { | #left nav#main-nav #user { | ||||
color: #F39C12; | color: #F39C12; | ||||
float: right; | float: right; | ||||
padding: 10px; | padding: 10px; | ||||
} | } | ||||
/* line 309, ../sass/_layout.scss */ | |||||
/* line 313, ../sass/_layout.scss */ | |||||
#main { | #main { | ||||
background-color: #FFF8DC; | background-color: #FFF8DC; | ||||
border: solid 1px #e0e0e0; | border: solid 1px #e0e0e0; | ||||
padding: 0px; | padding: 0px; | ||||
background-color: white; | background-color: white; | ||||
} | } | ||||
/* line 316, ../sass/_layout.scss */ | |||||
/* line 320, ../sass/_layout.scss */ | |||||
#main #img-big { | #main #img-big { | ||||
height: 130px; | height: 130px; | ||||
overflow: hidden; | overflow: hidden; | ||||
position: relative; | position: relative; | ||||
} | } | ||||
/* line 321, ../sass/_layout.scss */ | |||||
/* line 325, ../sass/_layout.scss */ | |||||
#main #img-big img.img-photo { | #main #img-big img.img-photo { | ||||
width: 100%; | width: 100%; | ||||
position: absolute; | position: absolute; | ||||
left: 50%; | left: 50%; | ||||
transform: translate(-50%, -50%); | transform: translate(-50%, -50%); | ||||
} | } | ||||
/* line 331, ../sass/_layout.scss */ | |||||
/* line 335, ../sass/_layout.scss */ | |||||
#main #infos-producer { | #main #infos-producer { | ||||
padding: 5px 10px; | padding: 5px 10px; | ||||
margin-bottom: 0px; | margin-bottom: 0px; | ||||
border-bottom: solid 1px #e0e0e0; | border-bottom: solid 1px #e0e0e0; | ||||
color: gray; | color: gray; | ||||
} | } | ||||
/* line 340, ../sass/_layout.scss */ | |||||
/* line 344, ../sass/_layout.scss */ | |||||
#main #infos-producer strong { | #main #infos-producer strong { | ||||
font-weight: bold; | font-weight: bold; | ||||
} | } | ||||
/* line 344, ../sass/_layout.scss */ | |||||
/* line 348, ../sass/_layout.scss */ | |||||
#main #infos-producer .favorite { | #main #infos-producer .favorite { | ||||
float: right; | float: right; | ||||
color: gray; | color: gray; | ||||
} | } | ||||
/* line 347, ../sass/_layout.scss */ | |||||
/* line 351, ../sass/_layout.scss */ | |||||
#main #infos-producer .favorite a { | #main #infos-producer .favorite a { | ||||
color: black; | color: black; | ||||
} | } | ||||
/* line 353, ../sass/_layout.scss */ | |||||
/* line 357, ../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 367, ../sass/_layout.scss */ | |||||
/* line 371, ../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 374, ../sass/_layout.scss */ | |||||
/* line 378, ../sass/_layout.scss */ | |||||
#main #content { | #main #content { | ||||
padding: 0px 20px 20px 20px; | padding: 0px 20px 20px 20px; | ||||
padding-bottom: 40px; | padding-bottom: 40px; | ||||
min-height: 300px; | 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 { | #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 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 { | #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 389, ../sass/_layout.scss */ | |||||
/* line 393, ../sass/_layout.scss */ | |||||
#main #content h1 { | #main #content h1 { | ||||
font-size: 30px; | font-size: 30px; | ||||
} | } | ||||
/* line 393, ../sass/_layout.scss */ | |||||
/* line 397, ../sass/_layout.scss */ | |||||
#main #content h2 { | #main #content h2 { | ||||
font-size: 25px; | font-size: 25px; | ||||
} | } | ||||
/* line 398, ../sass/_layout.scss */ | |||||
/* line 402, ../sass/_layout.scss */ | |||||
#main #content h3 { | #main #content h3 { | ||||
font-family: "capsuularegular"; | font-family: "capsuularegular"; | ||||
text-transform: uppercase; | text-transform: uppercase; | ||||
margin-bottom: 30px; | margin-bottom: 30px; | ||||
margin-top: 45px; | margin-top: 45px; | ||||
} | } | ||||
/* line 406, ../sass/_layout.scss */ | |||||
/* line 410, ../sass/_layout.scss */ | |||||
#main #content h3 span { | #main #content h3 span { | ||||
padding-top: 14px; | padding-top: 14px; | ||||
color: #323232; | color: #323232; | ||||
} | } | ||||
/* line 412, ../sass/_layout.scss */ | |||||
/* line 416, ../sass/_layout.scss */ | |||||
#main #content h4 { | #main #content h4 { | ||||
font-size: 20px; | font-size: 20px; | ||||
} | } | ||||
/* line 416, ../sass/_layout.scss */ | |||||
/* line 420, ../sass/_layout.scss */ | |||||
#main #content h5 { | #main #content h5 { | ||||
font-size: 18px; | font-size: 18px; | ||||
} | } | ||||
/* line 420, ../sass/_layout.scss */ | |||||
/* line 424, ../sass/_layout.scss */ | |||||
#main #content h6 { | #main #content h6 { | ||||
font-size: 16px; | font-size: 16px; | ||||
} | } | ||||
/* line 426, ../sass/_layout.scss */ | |||||
/* line 430, ../sass/_layout.scss */ | |||||
#main #content form .form-group .hint-block { | #main #content form .form-group .hint-block { | ||||
color: gray; | color: gray; | ||||
} | } | ||||
/* line 434, ../sass/_layout.scss */ | |||||
/* line 438, ../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 441, ../sass/_layout.scss */ | |||||
/* line 445, ../sass/_layout.scss */ | |||||
#footer-producer a { | #footer-producer a { | ||||
color: #F39C12; | color: #F39C12; | ||||
} | } | ||||
/* line 443, ../sass/_layout.scss */ | |||||
/* line 447, ../sass/_layout.scss */ | |||||
#footer-producer a:active { | #footer-producer a:active { | ||||
text-decoration: underline; | text-decoration: underline; | ||||
} | } | ||||
/* line 449, ../sass/_layout.scss */ | |||||
/* line 453, ../sass/_layout.scss */ | |||||
#footer { | #footer { | ||||
background-color: #FFF8DC; | background-color: #FFF8DC; | ||||
height: 100px; | height: 100px; | ||||
float: right; | float: right; | ||||
text-align: center; | text-align: center; | ||||
} | } | ||||
/* line 455, ../sass/_layout.scss */ | |||||
/* line 459, ../sass/_layout.scss */ | |||||
#footer .content { | #footer .content { | ||||
padding-top: 20px; | padding-top: 20px; | ||||
color: black; | color: black; | ||||
} | } | ||||
/* line 459, ../sass/_layout.scss */ | |||||
/* line 463, ../sass/_layout.scss */ | |||||
#footer .content a { | #footer .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 466, ../sass/_layout.scss */ | |||||
/* line 470, ../sass/_layout.scss */ | |||||
#footer .content a:hover { | #footer .content a:hover { | ||||
text-decoration: underline; | text-decoration: underline; | ||||
} | } | ||||
/* line 473, ../sass/_layout.scss */ | |||||
/* line 477, ../sass/_layout.scss */ | |||||
#footer #code-source img { | #footer #code-source img { | ||||
height: 20px; | height: 20px; | ||||
} | } |
a { | a { | ||||
//color: $color1; | //color: $color1; | ||||
} | } | ||||
strong { | |||||
font-weight: bold; | |||||
} | |||||
} | } | ||||
.modal-backdrop.in { | .modal-backdrop.in { |