@@ -36,12 +36,9 @@ pris connaissance de la licence CeCILL, et que vous en avez accepté les | |||
termes. | |||
*/ | |||
use backend\assets\AppAsset; | |||
use yii\helpers\Html; | |||
/* @var $this \yii\web\View */ | |||
/* @var $content string */ | |||
\common\assets\CommonAsset::register($this); | |||
if (class_exists('backend\assets\AppAsset')) { | |||
backend\assets\AppAsset::register($this); | |||
} else { |
@@ -59,7 +59,7 @@ $fieldOptions2 = [ | |||
<div class="login-box"> | |||
<div class="login-logo"> | |||
<img src="<?= Yii::$app->urlManagerBackend->getBaseUrl(); ?>/img/logo-distrib.png" /> | |||
Opendistrib | |||
</div> | |||
<!-- /.login-logo --> | |||
<div class="login-box-body"> |
@@ -1790,28 +1790,28 @@ body.login-page { | |||
/* line 276, ../sass/_adminlte.scss */ | |||
body.login-page .login-box .login-logo { | |||
text-align: center; | |||
font-family: "comfortaalight"; | |||
font-family: "highvoltageregular"; | |||
} | |||
/* line 279, ../sass/_adminlte.scss */ | |||
/* line 280, ../sass/_adminlte.scss */ | |||
body.login-page .login-box .login-logo img { | |||
width: 50px; | |||
} | |||
/* line 284, ../sass/_adminlte.scss */ | |||
/* line 285, ../sass/_adminlte.scss */ | |||
body.login-page .login-box .login-box-body .btn-primary { | |||
background-color: #F39C12; | |||
border-color: #F39C12; | |||
padding: 5px 10px; | |||
} | |||
/* line 289, ../sass/_adminlte.scss */ | |||
/* line 290, ../sass/_adminlte.scss */ | |||
body.login-page .login-box .login-box-body .btn-primary:active { | |||
background-color: #f4a62a; | |||
border-color: #F39C12; | |||
} | |||
/* line 295, ../sass/_adminlte.scss */ | |||
/* line 296, ../sass/_adminlte.scss */ | |||
body.login-page .login-box .login-box-body a { | |||
color: #F39C12; | |||
} | |||
/* line 297, ../sass/_adminlte.scss */ | |||
/* line 298, ../sass/_adminlte.scss */ | |||
body.login-page .login-box .login-box-body a:hover { | |||
color: #f4a62a; | |||
} |
@@ -275,7 +275,8 @@ body.login-page { | |||
.login-box { | |||
.login-logo { | |||
text-align: center ; | |||
font-family: 'comfortaalight' ; | |||
font-family: 'highvoltageregular'; | |||
img { | |||
width: 50px ; | |||
} |
@@ -0,0 +1,28 @@ | |||
<?php | |||
use yii\db\Migration; | |||
use yii\db\Schema; | |||
/** | |||
* Class m230731_073506_producer_latitude_longitude_double | |||
*/ | |||
class m230731_073506_producer_latitude_longitude_double extends Migration | |||
{ | |||
/** | |||
* {@inheritdoc} | |||
*/ | |||
public function safeUp() | |||
{ | |||
$this->alterColumn('producer', 'latitude', Schema::TYPE_DOUBLE); | |||
$this->alterColumn('producer', 'longitude', Schema::TYPE_DOUBLE); | |||
} | |||
/** | |||
* {@inheritdoc} | |||
*/ | |||
public function safeDown() | |||
{ | |||
$this->alterColumn('producer', 'latitude', Schema::TYPE_FLOAT); | |||
$this->alterColumn('producer', 'longitude', Schema::TYPE_FLOAT); | |||
} | |||
} |
@@ -131,24 +131,14 @@ class SiteController extends FrontendController | |||
return $this->render('index'); | |||
} | |||
public function actionSoftware() | |||
public function actionService() | |||
{ | |||
return $this->render('software', [ | |||
return $this->render('service', [ | |||
'producerDemoAccount' => $this->getProducerManager()->findOneProducerDemoAccount(), | |||
'dataProviderPrices' => $this->getDataProviderPrices() | |||
]); | |||
} | |||
/** | |||
* Page de présentation des tarifs. | |||
*/ | |||
public function actionPrices() | |||
{ | |||
return $this->render('prices', [ | |||
'dataProviderPrices' => $this->getDataProviderPrices() | |||
]); | |||
} | |||
public function getDataProviderPrices() | |||
{ | |||
return new ActiveDataProvider([ | |||
@@ -179,34 +169,40 @@ class SiteController extends FrontendController | |||
public function actionAbout() | |||
{ | |||
$producerManager = $this->getProducerManager(); | |||
$pointSaleManager = $this->getPointSaleManager(); | |||
$userManager = $this->getUserManager(); | |||
$orderManager = $this->getOrderManager(); | |||
$countProducersActive = $producerManager->countProducersActiveWithTurnover(); | |||
$countPointSalesActive = $pointSaleManager->countPointSalesActiveLastThreeMonths(); | |||
$countUsersActive = $userManager->countUsersActiveLastThreeMonths(); | |||
$averageOrdersPerDay = $orderManager->countGlobalUserOrdersAverageLastSevenDays(); | |||
$averageTurnover = $orderManager->getAverageTurnoverLastThreeMonths(); | |||
$resultMatomoApiVisitSummary = json_decode(file_get_contents(Yii::$app->params['matomoApiVisitSummaryUrl'])); | |||
$numberVisitsMonth = $resultMatomoApiVisitSummary->nb_uniq_visitors; | |||
/* | |||
-- Nombre de clients actifs (sur les 3 derniers mois) | |||
*/ | |||
$aboutFewNumbers = Yii::$app->cache->getOrSet('about_few_numbers2', function () { | |||
$producerManager = $this->getProducerManager(); | |||
$pointSaleManager = $this->getPointSaleManager(); | |||
$userManager = $this->getUserManager(); | |||
$orderManager = $this->getOrderManager(); | |||
$countProducersActive = $producerManager->countProducersActiveWithTurnover(); | |||
$countPointSalesActive = $pointSaleManager->countPointSalesActiveLastThreeMonths(); | |||
$countUsersActive = $userManager->countUsersActiveLastThreeMonths(); | |||
$averageOrdersPerDay = $orderManager->countGlobalUserOrdersAverageLastSevenDays(); | |||
$averageTurnover = $orderManager->getAverageTurnoverLastThreeMonths(); | |||
$resultMatomoApiVisitSummary = json_decode(file_get_contents(Yii::$app->params['matomoApiVisitSummaryUrl'])); | |||
$numberVisitsMonth = $resultMatomoApiVisitSummary->nb_uniq_visitors; | |||
return $this->renderPartial('_about_few_numbers', [ | |||
'countProducersActive' => $countProducersActive, | |||
'countPointSalesActive' => $countPointSalesActive, | |||
'countUsersActive' => $countUsersActive, | |||
'averageOrdersPerDay' => $averageOrdersPerDay, | |||
'averageTurnover' => $averageTurnover, | |||
'numberVisitsMonth' => $numberVisitsMonth | |||
]); | |||
}, 60 * 60 * 24); | |||
return $this->render('about', [ | |||
'countProducersActive' => $countProducersActive, | |||
'countPointSalesActive' => $countPointSalesActive, | |||
'countUsersActive' => $countUsersActive, | |||
'averageOrdersPerDay' => $averageOrdersPerDay, | |||
'averageTurnover' => $averageTurnover, | |||
'numberVisitsMonth' => $numberVisitsMonth | |||
'aboutFewNumbers' => $aboutFewNumbers | |||
]); | |||
} | |||
public function actionSourceCode() | |||
{ | |||
return $this->render('source_code'); | |||
} | |||
/** | |||
* Liste les producteurs utilisant la plateforme. | |||
*/ | |||
@@ -431,6 +427,7 @@ class SiteController extends FrontendController | |||
if ($producerCodeForm->load($this->getRequest()->post()) | |||
&& $producerCodeForm->validate()) { | |||
$this->getLogic()->setProducerContext($producer); | |||
$producerManager->addUser(GlobalParam::getCurrentUser(), $producer); | |||
$this->redirect($this->getUrlManagerProducer()->createAbsoluteUrl(['site/index', 'slug_producer' => $producer->slug])); |
@@ -167,10 +167,10 @@ if ($userManager->isCurrentProducer()) { | |||
</div> | |||
<footer id="footer"> | |||
<div class="container"> | |||
<a href="<?php echo $this->getUrlManager()->createUrl('site/software'); ?>">Fonctionnalités, services & tarifs</a> • | |||
<a href="<?php echo $this->getUrlManager()->createUrl('site/service'); ?>">Fonctionnalités, services & tarifs</a> • | |||
<a href="<?php echo $this->getUrlManager()->createUrl('site/mentions'); ?>">Mentions légales</a> • | |||
<a href="<?php echo $this->getUrlManager()->createUrl('site/cgv'); ?>">Conditions générales de service</a> • | |||
<a id="code-source" href="https://forge.laclic.fr/Laclic/Opendistrib">Code source</a> | |||
<a href="<?php echo $this->getUrlManager()->createUrl('site/source-code'); ?>">Code source</a> | |||
</div> | |||
</footer> | |||
@@ -0,0 +1,37 @@ | |||
<div class="panel panel-primary" id="few-numbers"> | |||
<div class="panel-heading"> | |||
<h2 class="panel-title"> | |||
<span class="glyphicon glyphicon-stats"></span> | |||
<span class="the-title">Opendistrib en quelques chiffres</span> | |||
</h2> | |||
</div> | |||
<div class="panel-body"> | |||
<?= few_numbers_item($countProducersActive, 'Producteurs', 'actifs sur les 3 derniers mois'); ?> | |||
<?= few_numbers_item(few_numbers_format_number($countUsersActive), 'Clients', 'actifs sur les 3 derniers mois'); ?> | |||
<?= few_numbers_item(few_numbers_format_number($countPointSalesActive), 'Points de vente', 'actifs sur les 3 derniers mois'); ?> | |||
<?= few_numbers_item(few_numbers_format_number($averageOrdersPerDay), 'Commandes clients / jour', 'en moyenne sur les 7 derniers jours'); ?> | |||
<?= few_numbers_item(few_numbers_format_number($averageTurnover).' €', 'CA / mois', 'moyenne sur les 3 derniers mois'); ?> | |||
<?= few_numbers_item(few_numbers_format_number($numberVisitsMonth), 'Visiteurs', 'le mois dernier'); ?> | |||
<?php //few_numbers_item('4', 'Heures gagnées / semaine'); ?> | |||
</div> | |||
</div> | |||
<?php | |||
function few_numbers_item($number, $description, $detail = null) { | |||
$html = '<div class="col-md-6 item"><div class="number">'.$number.'</div><div class="description">'.$description.'</div>'; | |||
if($detail) { | |||
$html .= '<div class="detail">'.$detail.'</div>'; | |||
} | |||
$html .= '</div>'; | |||
return $html; | |||
} | |||
function few_numbers_format_number($number) { | |||
return number_format($number, 0, '', ' '); | |||
} | |||
?> |
@@ -16,7 +16,7 @@ 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, | |||
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. | |||
@@ -38,11 +38,11 @@ termes. | |||
?> | |||
<p>Les présentes Conditions Générales de Service ( ci-après les « <strong>Conditions</strong> ») | |||
font partie intégrante du contrat conclu (le « <strong>Contrat</strong> ») entre <strong>Guillaume BOURGEOIS - Cap'Entreprendre</strong> inscrit en tant que <strong>SCOP SARL</strong> au Registre du Commerce et des Sociétés | |||
de <strong>Sarreguemines</strong>, sous le numéro <strong>47784404700019</strong>, dont le siège social est situé au | |||
<strong>12 PLACE ROBERT SCHUMAN 57600 FORBACH</strong> (ci-après la « <strong>Société</strong> ») et le producteur | |||
souhaitant être référencé sur le site internet de la Société (le « <strong>Producteur</strong> »).</p> | |||
<p>Les présentes Conditions Générales de Service ( ci-après les « <strong>Conditions</strong> ») | |||
font partie intégrante du contrat conclu (le « <strong>Contrat</strong> ») entre <strong>Guillaume BOURGEOIS - Auto-entrepreneur</strong> | |||
(N°SIRET : 51442998400024), dont l'adresse est située au | |||
<strong>6 rue de la Prévoyance 25000 BESANÇON</strong> (ci-après la « <strong>Société</strong> ») et le producteur | |||
souhaitant être référencé sur le site internet de la Société (le « <strong>Producteur</strong> »).</p> | |||
<h2>1. Objet</h2> | |||
<p>La Société édite le site internet <a href="http://www.opendistrib.net">http://www.opendistrib.net</a> |
@@ -46,66 +46,44 @@ $this->setIcon('info-sign'); | |||
?> | |||
<div class="site-about"> | |||
<!-- | |||
<h1 class="title-system-order"> | |||
<span class="glyphicon glyphicon-info-sign"></span> | |||
<?= Html::encode($this->title) ?> | |||
</h1>--> | |||
<div class="row"> | |||
<div class="col-md-12"> | |||
<div class="panel panel-default"> | |||
<div class="col-md-8"> | |||
<div class="panel panel-primary"> | |||
<div class="panel-body"> | |||
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean volutpat justo ac augue volutpat | |||
lobortis. Nulla facilisi. Cras sed justo et libero lobortis faucibus sed ac metus. Nulla lacinia | |||
sagittis maximus. In id euismod sapien, sed facilisis quam. Phasellus consectetur libero at | |||
dolor consequat, rutrum fermentum est laoreet. Quisque pellentesque risus nec augue bibendum | |||
venenatis.</p> | |||
<p>Vestibulum magna magna, sollicitudin sed urna ac, vulputate pharetra velit. Sed dictum enim in | |||
sodales finibus. Sed luctus porta turpis, at pulvinar dui tempus a. Proin dictum vitae erat | |||
quis dapibus. Praesent felis justo, bibendum nec turpis nec, scelerisque dignissim justo. Etiam | |||
vel mauris non ipsum feugiat laoreet. Nulla facilisi. Aliquam pellentesque, mauris et pretium | |||
pellentesque, diam neque hendrerit augue, auctor luctus turpis urna quis purus.</p> | |||
</div> | |||
</div> | |||
<div class="panel panel-primary" id="few-numbers"> | |||
<div class="panel-heading"> | |||
<h2 class="panel-title"> | |||
<span class="glyphicon glyphicon-stats"></span> | |||
<span class="the-title">Opendistrib en quelques chiffres</span> | |||
</h2> | |||
</div> | |||
<div class="panel-body"> | |||
<?= few_numbers_item($countProducersActive, 'Producteurs', 'actifs sur les 3 derniers mois'); ?> | |||
<?= few_numbers_item(few_numbers_format_number($countUsersActive), 'Clients', 'actifs sur les 3 derniers mois'); ?> | |||
<?= few_numbers_item(few_numbers_format_number($countPointSalesActive), 'Points de vente', 'actifs sur les 3 derniers mois'); ?> | |||
<?= few_numbers_item(few_numbers_format_number($averageOrdersPerDay), 'Commandes clients / jour', 'en moyenne sur les 7 derniers jours'); ?> | |||
<?= few_numbers_item(few_numbers_format_number($averageTurnover).' €', 'CA / mois', 'moyenne sur les 3 derniers mois'); ?> | |||
<?= few_numbers_item(few_numbers_format_number($numberVisitsMonth), 'Visiteurs', 'le mois dernier'); ?> | |||
<?php //few_numbers_item('4', 'Heures gagnées / semaine'); ?> | |||
<p>L'objectif d'Opendistrib est de fournir aux producteurs locaux une solution technique sur | |||
laquelle s'appuyer pour organiser leurs ventes en circuits courts de manière libre et autonome.</p> | |||
<h2>Fonctionnalités proposées</h2> | |||
<p>Voici les fonctionnalités principales disponibles sur Opendistrib : automatiser les prises de | |||
commandes en ligne, présenter son activité, communiquer avec ses clients, | |||
gérer les paiements, générer des bons de livraison et des factures, obtenir des statistiques | |||
de vente.</p> | |||
<h2>Producteurs</h2> | |||
<p>Opendistrib est particulièrement adapté aux boulangeries proposant du pain au levain naturel | |||
car ils ont besoin de connaitre les quantités avant de lancer leurs productions. Néanmoins, le logiciel | |||
fonctionne également très bien pour tous type de producteurs souhaitant fonctionner sur commande, | |||
que ce soit pour gagner du temps ou limiter le gaspillage.</p> | |||
<h2>Historique</h2> | |||
<p>La première version du logiciel est née en 2015 à l'occasion de la création de la boulangerie | |||
Le Chat des Noisettes à Déservillers. Le site a ensuite été ouvert à d'autres producteurs pour arriver | |||
à un total de 35 producteurs actifs à l'heure actuelle.</p> | |||
<h2>Le développeur</h2> | |||
<p>La plateforme est actuellement maintenue et développée par Guillaume Bourgeois, développeur web | |||
depuis 2009. </p> | |||
<h2>Logiciel libre</h2> | |||
<p>Lorem ipsum.</p> | |||
<h2>Objectifs</h2> | |||
<p>Lorem ipsum.</p> | |||
</div> | |||
</div> | |||
</div> | |||
<div class="col-md-4"> | |||
<?= $aboutFewNumbers; ?> | |||
</div> | |||
</div> | |||
</div> | |||
<?php | |||
function few_numbers_item($number, $description, $detail = null) { | |||
$html = '<div class="col-md-4 item"><div class="number">'.$number.'</div><div class="description">'.$description.'</div>'; | |||
if($detail) { | |||
$html .= '<div class="detail">'.$detail.'</div>'; | |||
} | |||
$html .= '</div>'; | |||
return $html; | |||
} | |||
function few_numbers_format_number($number) { | |||
return number_format($number, 0, '', ' '); | |||
} | |||
?> | |||
</div> |
@@ -42,13 +42,9 @@ $this->setMeta('description','Le producteur que vous recherchez est introuvable. | |||
?> | |||
<div class="site-error"> | |||
<h1>Producteur introuvable</h1> | |||
<div class="alert alert-danger"> | |||
Le producteur que vous recherchez est introuvable. | |||
</div> | |||
<p><?= Html::a("< Retour à l'accueil", ['site/index']) ?> - <?= Html::a("Liste des producteurs", ['site/producers']) ?></p> | |||
</div> |
@@ -66,7 +66,7 @@ $this->setMeta('description', 'Simplifiez la distribution de vos produits en cir | |||
</a> | |||
<?php endif; ?> | |||
<a class="btn btn-default" | |||
href="<?= \Yii::$app->urlManagerFrontend->createUrl(['site/software']); ?>"> | |||
href="<?= \Yii::$app->urlManagerFrontend->createUrl(['site/service']); ?>"> | |||
<span class="glyphicon glyphicon-plus-sign"></span> En savoir plus | |||
</a> | |||
<a class="btn btn-default" href="<?= \Yii::$app->params['appointmentUrl']; ?>" target="_blank"> |
@@ -1,132 +0,0 @@ | |||
<?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; | |||
$this->setTitle('Tarifs'); | |||
$this->setMeta('description', 'Découvrez les tarifs de l\application Opendistrib.'); | |||
?> | |||
<h1 class="title-system-order"><span class="glyphicon glyphicon glyphicon-eur"></span> <?= Html::encode( | |||
$this->title | |||
) ?></h1> | |||
<?= $this->render('_prices_producer', ['dataProviderPrices' => $dataProviderPrices, 'noButton'=> true]); ?> | |||
<!-- | |||
<div id="site-prices"> | |||
<div class="row equal"> | |||
<div class="col-md-6 col-xs-12 producer"> | |||
<div class="panel panel-default"> | |||
<div class="panel-heading"> | |||
<h2 class="panel-title"> | |||
<span class="the-title">Fonctionnalités</span> | |||
</h2> | |||
</div> | |||
<div class="panel-body"> | |||
<p>Hormis le paiement en ligne, vous avez accès à toutes les fonctionnalités d’Opendistrib quelque soit votre tranche tarifaire. | |||
Les évolutions sont développées en fonction des retours de tous les producteurs. | |||
</p> | |||
<p>Si vous avez un besoin spécifique à votre activité, nous pouvons réaliser des développements sur-mesure sur devis : | |||
<a href="<?= \Yii::$app->urlManager->createUrl(['site/contact']) ?>">nous contacter</a>.</p> | |||
</div> | |||
</div> | |||
</div> | |||
<div class="col-md-6 col-xs-12 producer"> | |||
<div class="panel panel-default"> | |||
<div class="panel-heading"> | |||
<h2 class="panel-title"> | |||
<span class="the-title">Support, maintenance & hébergement</span> | |||
</h2> | |||
</div> | |||
<div class="panel-body"> | |||
<p>Le service comprend :</p> | |||
<ul> | |||
<li><strong>Le support</strong> : nous sommes disponibles pour répondre rapidement à toutes vos questions par email ou par téléphone.</li> | |||
<li><strong>La maintenance</strong> : nous travaillons contamment sur la qualité/sécurité du logiciel et | |||
intervenons immédiatement en cas de bug.</li> | |||
<li><strong>L'hébergement</strong> : la plateforme est hébergée en France par la société <a href="https://www.alwaysdata.com/">Alwaysdata</a>.</li> | |||
</ul> | |||
</div> | |||
</div> | |||
</div> | |||
</div> | |||
<div class="row equal"> | |||
<div class="col-md-6 col-xs-12 producer"> | |||
<div class="panel panel-default"> | |||
<div class="panel-heading"> | |||
<h2 class="panel-title"> | |||
<span class="the-title">Démo & version d'essai</span> | |||
</h2> | |||
</div> | |||
<div class="panel-body"> | |||
<p>Vous avez plusieurs solutions pour découvrir le logiciel : </p> | |||
<ul> | |||
<li> | |||
<a href="<?= \Yii::$app->params['appointmentUrl']; ?>" target="_blank">Nous demander une démo</a> pour | |||
que l'on vous fasse une présentation. | |||
</li> | |||
<li> | |||
Essayer Opendistrib sans inscription via le | |||
<a href="<?= \Yii::$app->urlManager->createUrl(['site/producer', 'id' => 32]) ?>">compte de démonstration</a>. | |||
</li> | |||
<li>Essayer Opendistrib pour votre activité en vous <a href="<?= \Yii::$app->urlManager->createUrl(['site/signup']) ?>">inscrivant en tant que producteur</a>. | |||
Aucun règlement ne vous sera demandé tant que vous n'aurez pas plus de 100 € de chiffre d'affaire enregistré sur le logiciel.</li> | |||
</ul> | |||
</div> | |||
</div> | |||
</div> | |||
<div class="col-md-6 col-xs-12 producer"> | |||
<div class="panel panel-default"> | |||
<div class="panel-heading"> | |||
<h2 class="panel-title"> | |||
<span class="the-title">Formation & accompagnement</span> | |||
</h2> | |||
</div> | |||
<div class="panel-body"> | |||
<p>Au moment du lancement de votre circuit court sur Opendistrib, ainsi que tout au long de votre projet, | |||
la formation et l'accompagnement sont compris dans l'abonnement mensuel.</p> | |||
</p> | |||
</div> | |||
</div> | |||
</div> | |||
</div> | |||
</div> | |||
--> |
@@ -43,66 +43,75 @@ use yii\bootstrap\ActiveForm; | |||
$producerManager = ProducerManager::getInstance(); | |||
$this->setTitle('Producteur '.Html::encode($producer->name)) ; | |||
$this->setIcon('grain'); | |||
$this->setMeta('description', 'Veuillez vous connecter pour réserver les produits de ce producteur.') ; | |||
?> | |||
<div id="page-producer"> | |||
<h1 class="title-system-order"><?= Html::encode($producer->name) ?></h1> | |||
<p class="info"><span class="alert alert-warning">Veuillez vous connecter pour réserver les produits de ce producteur.</span></p> | |||
<?php if(isset($producer->photo) && strlen($producer->photo)): ?> | |||
<!--<img class="img-back" width="200px" height="auto" src="./uploads/<?= $producer->photo ?>" />--> | |||
<?php endif; ?> | |||
<!--<p class="info"><span class="alert alert-warning">Veuillez vous connecter pour réserver les produits de ce producteur.</span></p>--> | |||
<div class="col-md-6"> | |||
<h2>Connexion</h2> | |||
<?php if(isset($producer) && $producerManager->isDemo($producer)) : ?> | |||
<div class="alert alert-warning"> | |||
<p>Merci d'utiliser les identifiants suivants pour vous connecter à l'espace de démonstration :</p> | |||
Identifiant : <strong>demo@opendistrib.net</strong><br /> | |||
Mot de passe : <strong>opendistrib</strong> | |||
<div class="panel panel-primary"> | |||
<div class="panel-heading"> | |||
<h2 class="panel-title"> | |||
<span class="glyphicon glyphicon-log-in"></span> | |||
Connexion | |||
</h2> | |||
</div> | |||
<?php endif; ?> | |||
<?php $form = ActiveForm::begin(['id' => 'login-form','enableClientValidation'=> false]); ?> | |||
<?= $form->field($loginForm, 'email') ?> | |||
<?= $form->field($loginForm, 'password')->passwordInput() ?> | |||
<?= $form->field($loginForm, 'rememberMe')->checkbox() ?> | |||
<p> | |||
Si vous avez oublié votre mot de passe, vous pouvez le <?= Html::a('réinitialiser', ['site/request-password-reset']) ?>. | |||
</p> | |||
<div class="form-group"> | |||
<?= Html::submitButton('Connexion', ['class' => 'btn btn-primary', 'name' => 'login-button']) ?> | |||
<div class="panel-body"> | |||
<?php if(isset($producer) && $producerManager->isDemo($producer)) : ?> | |||
<div class="alert alert-warning"> | |||
<p>Merci d'utiliser les identifiants suivants pour vous connecter à l'espace de démonstration :</p> | |||
Identifiant : <strong>demo@opendistrib.net</strong><br /> | |||
Mot de passe : <strong>opendistrib</strong> | |||
</div> | |||
<?php endif; ?> | |||
<?php $form = ActiveForm::begin(['id' => 'login-form','enableClientValidation'=> false]); ?> | |||
<?= $form->field($loginForm, 'email') ?> | |||
<?= $form->field($loginForm, 'password')->passwordInput() ?> | |||
<?= $form->field($loginForm, 'rememberMe')->checkbox() ?> | |||
<p> | |||
Si vous avez oublié votre mot de passe, vous pouvez le <?= Html::a('réinitialiser', ['site/request-password-reset']) ?>. | |||
</p> | |||
<div class="form-group"> | |||
<?= Html::submitButton('Connexion', ['class' => 'btn btn-primary', 'name' => 'login-button']) ?> | |||
</div> | |||
<?php ActiveForm::end(); ?> | |||
</div> | |||
<?php ActiveForm::end(); ?> | |||
</div> | |||
</div> | |||
<div class="col-md-6"> | |||
<h2>Inscription</h2> | |||
<?php $form = ActiveForm::begin(['id' => 'form-signup','enableClientValidation'=> false]); ?> | |||
<?= $form->field($signupForm, 'email') ?> | |||
<?= $form->field($signupForm, 'password')->passwordInput() ?> | |||
<?= $form->field($signupForm, 'lastname') ?> | |||
<?= $form->field($signupForm, 'name') ?> | |||
<?= $form->field($signupForm, 'phone') ?> | |||
<?php if(strlen($producer->code)): ?> | |||
<?= $form->field($signupForm, 'code',[ | |||
'inputTemplate' => '<div class="input-group"><span class="input-group-addon"><span class="glyphicon glyphicon-lock"></span></span>{input}</div>', | |||
]) | |||
<div class="panel panel-primary"> | |||
<div class="panel-heading"> | |||
<h2 class="panel-title"> | |||
<span class="glyphicon glyphicon-user"></span> | |||
Inscription | |||
</h2> | |||
</div> | |||
<div class="panel-body"> | |||
<?php $form = ActiveForm::begin(['id' => 'form-signup','enableClientValidation'=> false]); ?> | |||
<?= $form->field($signupForm, 'email') ?> | |||
<?= $form->field($signupForm, 'password')->passwordInput() ?> | |||
<?= $form->field($signupForm, 'lastname') ?> | |||
<?= $form->field($signupForm, 'name') ?> | |||
<?= $form->field($signupForm, 'phone') ?> | |||
<?php if(strlen($producer->code)): ?> | |||
<?= $form->field($signupForm, 'code',[ | |||
'inputTemplate' => '<div class="input-group"><span class="input-group-addon"><span class="glyphicon glyphicon-lock"></span></span>{input}</div>', | |||
]) | |||
->label('Code du producteur') | |||
->hint('Renseignez-vous auprès de votre producteur pour qu\'il vous fournisse le code d\'accès') ; ?> | |||
<?php endif; ?> | |||
<?= $form->field($signupForm, 'verifyCode')->widget(\yii\captcha\Captcha::className(), [ | |||
<?php endif; ?> | |||
<?= $form->field($signupForm, 'verifyCode')->widget(\yii\captcha\Captcha::className(), [ | |||
'template' => '<div class="row"><div class="col-lg-3">{image}</div><div class="col-lg-6">{input}</div></div>', | |||
]) ?> | |||
<div class="form-group" id="boutons-inscrire"> | |||
<?= Html::submitButton("S'inscrire", ['class' => 'btn btn-primary', 'name' => 'signup-button']) ?> | |||
]) ?> | |||
<div class="form-group" id="boutons-inscrire"> | |||
<?= Html::submitButton("S'inscrire", ['class' => 'btn btn-primary', 'name' => 'signup-button']) ?> | |||
</div> | |||
<?php ActiveForm::end(); ?> | |||
</div> | |||
<?php ActiveForm::end(); ?> | |||
</div> | |||
</div> | |||
</div> |
@@ -44,23 +44,26 @@ use yii\bootstrap\ActiveForm; | |||
/* @var $model \frontend\models\PasswordResetRequestForm */ | |||
$this->setTitle('Mot de passe oublié') ; | |||
$this->setIcon('question-sign'); | |||
$this->setMeta('description', 'Vous avez oublié votre mot de passe ?'); | |||
$this->params['breadcrumbs'][] = $this->title; | |||
?> | |||
<div class="site-request-password-reset"> | |||
<h1><?= Html::encode($this->title) ?></h1> | |||
<p>Renseignez votre adresse email. Nous vous transmettrons un lien vous permettant de réinitialiser votre mot de passe.</p> | |||
<div class="row"> | |||
<div class="col-lg-5"> | |||
<?php $form = ActiveForm::begin(['id' => 'request-password-reset-form']); ?> | |||
<?= $form->field($model, 'email') ?> | |||
<div class="form-group"> | |||
<?= Html::submitButton('Envoyer', ['class' => 'btn btn-primary']) ?> | |||
<div class="panel panel-default"> | |||
<div class="panel-body"> | |||
<div class="alert alert-warning">Renseignez votre adresse email, nous vous transmettrons un lien vous permettant de réinitialiser votre mot de passe.</div> | |||
<div class="row"> | |||
<div class="col-lg-5"> | |||
<?php $form = ActiveForm::begin(['id' => 'request-password-reset-form']); ?> | |||
<?= $form->field($model, 'email') ?> | |||
<div class="form-group"> | |||
<?= Html::submitButton('Envoyer', ['class' => 'btn btn-primary']) ?> | |||
</div> | |||
<?php ActiveForm::end(); ?> | |||
</div> | |||
<?php ActiveForm::end(); ?> | |||
</div> | |||
</div> | |||
</div> | |||
</div> |
@@ -53,33 +53,19 @@ $this->setIcon('console'); | |||
</h2> | |||
</div> | |||
<div class="panel-body"> | |||
<div class="block block-order col-md-6"> | |||
<img src="<?= \Yii::$app->urlManager->getBaseUrl(); ?>/img/order.png"/> | |||
<p>Prise de commande en ligne automatisée avec génération d'un récapitulatif par jour de distribution</p> | |||
<div class="clr"></div> | |||
</div> | |||
<div class="block block-payment col-md-6"> | |||
<img src="<?= \Yii::$app->urlManager->getBaseUrl(); ?>/img/payment.png"/> | |||
<p>Système de crédit permettant la comptabilisation des paiements</p> | |||
<div class="clr"></div> | |||
</div> | |||
<div class="clr"></div> | |||
<div class="block block-points-sale-products col-md-6"> | |||
<img src="<?= \Yii::$app->urlManager->getBaseUrl(); ?>/img/map-marker.png"/> | |||
<p>Gestion des différents points de vente et produits</p> | |||
<div class="clr"></div> | |||
</div> | |||
<div class="block block-subscriptions col-md-6"> | |||
<img src="<?= \Yii::$app->urlManager->getBaseUrl(); ?>/img/subscription.png"/> | |||
<p>Gestion des abonnements</p> | |||
<div class="clr"></div> | |||
</div> | |||
<?= block_feature('grain', "Un espace producteur dédié accessible aux clients avec un système de prise de commandes, la présentation de l'activité, la liste des produits et des points de vente, un formulaire de contact"); ?> | |||
<?= block_feature("cog", "Une administration complète et intuitive pour configurer finement l'ensemble des aspects de l'activité de producteur"); ?> | |||
<div class="clr"></div> | |||
<div class="block block-communication col-md-6"> | |||
<img src="<?= \Yii::$app->urlManager->getBaseUrl(); ?>/img/megaphone.png"/> | |||
<p>Communication simplifiée avec les clients</p> | |||
<div class="clr"></div> | |||
</div> | |||
<?= block_feature("calendar", "Planification des jours de distributions"); ?> | |||
<?= block_feature("download-alt", "Accès à un récapitulatif des commandes par jour de distribution"); ?> | |||
<?= block_feature("cutlery", "Gestion des produits, catégories et prix spécifiques"); ?> | |||
<?= block_feature("map-marker", "Gestion des points de vente"); ?> | |||
<?= block_feature("repeat", "Gestion des abonnements pour les commandes récurrentes"); ?> | |||
<?= block_feature("user", "Gestion des clients"); ?> | |||
<?= block_feature("euro", "Système de crédit (ou cagnotte) permettant la comptabilisation des paiements"); ?> | |||
<?= block_feature("bullhorn", "Communication facilitée avec les clients via l'envoi d'emails en masse"); ?> | |||
<?= block_feature("folder-open", "Génération de bons de livraison, factures & devis"); ?> | |||
<?= block_feature("stats", "Statistiques et rapports de vente"); ?> | |||
</div> | |||
</div> | |||
@@ -150,7 +136,48 @@ $this->setIcon('console'); | |||
<?= $this->render('_prices_producer', ['dataProviderPrices' => $dataProviderPrices]); ?> | |||
</div> | |||
</div> | |||
<div class="panel panel-primary"> | |||
<div class="panel-heading"> | |||
<h2 class="panel-title"> | |||
<span class="glyphicon glyphicon-plus"></span> | |||
<span class="the-title">Pour aller plus loin</span> | |||
</h2> | |||
</div> | |||
<div class="panel-body"> | |||
<p class="text-center"> | |||
<?php if (Yii::$app->user->isGuest): ?> | |||
<a class="btn btn-default" | |||
href="<?= $this->getUrlManagerFrontend()->createUrl(['site/signup']); ?>"> | |||
<span class="glyphicon glyphicon-user"></span> Je crée un espace producteur | |||
</a> | |||
<?php endif; ?> | |||
<a class="btn btn-default" href="<?= $this->getUrlManagerFrontend()->createUrl(['site/producer', 'id' => 32]); ?>"> | |||
<span class="glyphicon glyphicon-check"></span> Je teste le logiciel | |||
</a> | |||
<a class="btn btn-default" href="<?= \Yii::$app->params['appointmentUrl']; ?>" target="_blank"> | |||
<span class="glyphicon glyphicon-education"></span> Je demande une démo | |||
</a> | |||
<a class="btn btn-default" href="<?= $this->getUrlManagerFrontend()->createUrl(['site/contact']); ?>"> | |||
<span class="glyphicon glyphicon-envelope"></span> Je contacte le développeur | |||
</a> | |||
</p> | |||
</div> | |||
</div> | |||
</div> | |||
<div class="clr"></div> | |||
</div> | |||
<?php | |||
function block_feature($icon, $description) { | |||
return '<div class="block col-md-6"> | |||
<span class="glyphicon glyphicon-'.$icon.'"></span> | |||
<p>'.$description.'</p> | |||
</div>'; | |||
} | |||
</div> | |||
?> |
@@ -84,7 +84,7 @@ $this->params['breadcrumbs'][] = $this->title; | |||
'prompt' => '--', | |||
]) | |||
->label('TVA à appliquer par défaut'); ?> | |||
<?= $form->field($model, 'cgv')->checkbox()->label('J\'accepte les <a class="btn btn-xs btn-default" data-toggle="modal" data-target="#modal-cgv" href="javascript:void(0);">conditions générales de service</a> et les <a class="btn btn-xs btn-default" data-toggle="modal" data-target="#modal-prices" href="javascript:void(0);">conditions tarifaires</a>.') ?> | |||
<?= $form->field($model, 'cgv')->checkbox()->label('J\'accepte les <button type="button" class="btn btn-xs btn-default btn-modal-cgv" data-toggle="modal" data-target="#modal-cgv">conditions générales de service</button> et les <button type="button" class="btn btn-xs btn-default btn-modal-prices" data-toggle="modal" data-target="#modal-prices">conditions tarifaires</button>.') ?> | |||
</div> | |||
<div id="fields-user"> | |||
<?= $form->field($model, 'id_producer')->dropDownList($dataProducers, ['prompt' => '--','encode' => false,'options' => $optionsProducers]) ?> |
@@ -0,0 +1,68 @@ | |||
<?php | |||
/** | |||
Copyright Opendistrib (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\bootstrap\ActiveForm; | |||
use yii\captcha\Captcha; | |||
$this->setTitle('Code source'); | |||
$this->setIcon('console'); | |||
//$this->setMeta('description', 'Code source') ; | |||
?> | |||
<div class="site-about"> | |||
<div class="row"> | |||
<div class="col-md-12"> | |||
<div class="panel panel-default"> | |||
<div class="panel-body"> | |||
<p>Le logiciel Opendistrib 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 <a href="http://www.cecill.info">http://www.cecill.info</a>.</p> | |||
<p class="text-center"> | |||
<a class="btn btn-primary" href="https://forge.laclic.fr/Laclic/Opendistrib"> | |||
<span class="glyphicon glyphicon-console"></span> | |||
Accéder au code source | |||
</a> | |||
</p> | |||
</div> | |||
</div> | |||
</div> | |||
</div> | |||
</div> |
@@ -60,21 +60,23 @@ var producersModule = { | |||
}, | |||
initMap: function() { | |||
var app = this; | |||
app.map = L.map('producers-map').setView([46.5471789, 2.534168], 6); | |||
L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png', { | |||
maxZoom: 19, | |||
attribution: '© OpenStreetMap' | |||
}).addTo(app.map); | |||
$.get(UrlManager.getBaseUrl() + 'site/ajax-producers', {}, function(producers) { | |||
for(var i = 0; i < producers.length ; i++) { | |||
if(producers[i].latitude && producers[i].longitude) { | |||
app.mapMarkers[producers[i].id] = L.marker([producers[i].latitude, producers[i].longitude]) | |||
.bindPopup('<div class="popup-producer"><div class="name">'+producers[i].name+'</div><div class="type">'+producers[i].type+'</div><div class="address"><span class="glyphicon glyphicon-map-marker"></span>'+producers[i].address+'</div><div class="link"><a href="'+producers[i].link+'" class="btn btn-primary btn-sm">Visiter</a></div></div>') | |||
.addTo(app.map); | |||
if($('#producers-map').length > 0) { | |||
app.map = L.map('producers-map').setView([46.5471789, 2.534168], 6); | |||
L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png', { | |||
maxZoom: 19, | |||
attribution: '© OpenStreetMap' | |||
}).addTo(app.map); | |||
$.get(UrlManager.getBaseUrl() + 'site/ajax-producers', {}, function(producers) { | |||
for(var i = 0; i < producers.length ; i++) { | |||
if(producers[i].latitude && producers[i].longitude) { | |||
app.mapMarkers[producers[i].id] = L.marker([producers[i].latitude, producers[i].longitude]) | |||
.bindPopup('<div class="popup-producer"><div class="name">'+producers[i].name+'</div><div class="type">'+producers[i].type+'</div><div class="address"><span class="glyphicon glyphicon-map-marker"></span>'+producers[i].address+'</div><div class="link"><a href="'+producers[i].link+'" class="btn btn-primary btn-sm">Visiter</a></div></div>') | |||
.addTo(app.map); | |||
} | |||
} | |||
} | |||
}); | |||
}); | |||
} | |||
}, | |||
initEventViewProducer: function() { | |||
var app = this; | |||
@@ -96,30 +98,32 @@ var producersModule = { | |||
initMapPositionFixed: function() { | |||
var $map = $('#producers-map'); | |||
var $wrapperProducerMap = $('#wrapper-producers-map'); | |||
if($map.length > 0) { | |||
var $wrapperProducerMap = $('#wrapper-producers-map'); | |||
$map.width($wrapperProducerMap.width()); | |||
$(window).resize(function(){ | |||
$map.width($wrapperProducerMap.width()); | |||
}); | |||
$(window).scroll(function(){ | |||
if($(window).width() > 768) { | |||
var wrapperProducersMapOffsetTop = $wrapperProducerMap.offset().top; | |||
var currentScrollTop = $(this).scrollTop(); | |||
if(currentScrollTop >= wrapperProducersMapOffsetTop) { | |||
if(!$map.hasClass('fixed')) { | |||
$map.addClass('fixed'); | |||
$(window).resize(function(){ | |||
$map.width($wrapperProducerMap.width()); | |||
}); | |||
$(window).scroll(function(){ | |||
if($(window).width() > 768) { | |||
var wrapperProducersMapOffsetTop = $wrapperProducerMap.offset().top; | |||
var currentScrollTop = $(this).scrollTop(); | |||
if(currentScrollTop >= wrapperProducersMapOffsetTop) { | |||
if(!$map.hasClass('fixed')) { | |||
$map.addClass('fixed'); | |||
} | |||
} | |||
} | |||
else { | |||
if($map.hasClass('fixed')) { | |||
$map.removeClass('fixed'); | |||
else { | |||
if($map.hasClass('fixed')) { | |||
$map.removeClass('fixed'); | |||
} | |||
} | |||
} | |||
} | |||
}); | |||
}); | |||
} | |||
}, | |||
initSearch: function() { | |||
$('#producer-search input').keyup(function() { | |||
@@ -166,6 +170,16 @@ function opendistrib_signup() { | |||
$('#signupform-id_producer').change(function () { | |||
opendistrib_signup_code_producer(); | |||
}); | |||
// modals | |||
$('.btn-modal-cgv').click(function() { | |||
$('#modal-cgv').modal(); | |||
return false; | |||
}); | |||
$('.btn-modal-prices').click(function() { | |||
$('#modal-prices').modal(); | |||
return false; | |||
}); | |||
} | |||
} | |||
@@ -74,6 +74,10 @@ strong { | |||
background-color: white; | |||
} | |||
.help-block { | |||
padding-bottom: 5px; | |||
} | |||
#main { | |||
padding-bottom: 50px; | |||
min-height: 800px; | |||
@@ -518,6 +522,10 @@ section#header-title { | |||
.panel-body { | |||
background-color: white; | |||
@include border-radius(0px 0px 5px 5px) ; | |||
p { | |||
padding-bottom: 10px; | |||
} | |||
} | |||
&.panel-primary { | |||
@@ -629,18 +637,21 @@ section#header-title { | |||
#row-functionalities-rates { | |||
.block { | |||
margin-bottom: 10px; | |||
position: relative; | |||
margin-bottom: 25px; | |||
padding-left: 70px; | |||
min-height: 50px; | |||
.glyphicon { | |||
font-size: 40px; | |||
position: absolute; | |||
left: 0px; | |||
top: 0px; | |||
} | |||
p { | |||
font-family: 'capsuularegular'; | |||
font-size: 18px; | |||
margin-left: 70px; | |||
} | |||
img { | |||
float: left; | |||
width: 50px; | |||
height: auto; | |||
} | |||
a { | |||
@@ -674,13 +685,9 @@ section#header-title { | |||
#block-rates { | |||
table { | |||
th { | |||
font-family: 'capsuularegular'; | |||
font-weight: normal; | |||
font-size: 23px; | |||
} | |||
th, td { | |||
//text-align: center ; | |||
//font-family: 'capsuularegular'; | |||
font-weight: bold; | |||
font-size: 14px; | |||
} | |||
} | |||
} | |||
@@ -924,6 +931,15 @@ section#header-title { | |||
} | |||
} | |||
.panel-body { | |||
h2 { | |||
font-size: 20px; | |||
text-transform: none; | |||
margin-bottom: 7px; | |||
padding-bottom: 0px; | |||
margin-top: 0px; | |||
} | |||
p:last-child { | |||
margin-bottom: 0px; | |||
padding-bottom: 5px; | |||
@@ -940,11 +956,11 @@ section#header-title { | |||
.number { | |||
font-family: 'highvoltageregular'; | |||
font-weight: bold; | |||
font-size: 50px; | |||
font-size: 35px; | |||
} | |||
.description { | |||
font-size: 18px; | |||
font-size: 16px; | |||
} | |||
.detail { |