Browse Source

[Boutique] Support technique

feature/rotating_product
Guillaume Bourgeois 6 months ago
parent
commit
45136c49e3
21 changed files with 343 additions and 144 deletions
  1. +1
    -1
      common/config/params.php
  2. +18
    -3
      common/forms/ContactForm.php
  3. +1
    -1
      common/mail/contact-html.php
  4. +1
    -0
      domain/Feature/Feature/Feature.php
  5. +5
    -1
      domain/Feature/Feature/FeatureChecker.php
  6. +2
    -1
      domain/Feature/Feature/FeatureDefinition.php
  7. +23
    -8
      domain/Producer/Producer/ProducerSeoGenerator.php
  8. +1
    -1
      domain/_/ProducerContextTrait.php
  9. +1
    -1
      frontend/views/site/contact.php
  10. +4
    -1
      frontend/views/site/login.php
  11. +6
    -0
      frontend/views/site/producer.php
  12. +8
    -2
      frontend/views/site/service.php
  13. +3
    -0
      frontend/views/site/signup.php
  14. +1
    -1
      frontend/views/site/signup_confirm.php
  15. +58
    -50
      frontend/web/css/screen.css
  16. +7
    -0
      frontend/web/sass/screen.scss
  17. +31
    -1
      producer/controllers/SiteController.php
  18. +12
    -2
      producer/views/layouts/main.php
  19. +87
    -0
      producer/views/site/support.php
  20. +56
    -54
      producer/web/css/screen.css
  21. +17
    -16
      producer/web/sass/_layout.scss

+ 1
- 1
common/config/params.php View File

@@ -44,7 +44,7 @@ return [
'adminEmail' => 'contact@souke.fr',
'supportEmail' => 'contact@souke.fr',
'newsletterProducerDescription' => "Pour recevoir les emails de prise de commande et d'information",
'newsletterSoukeDescription' => "Pour suivre l'actualité de la plateforme",
'newsletterSoukeDescription' => "Pour suivre l'actualité du logiciel",
'user.passwordResetTokenExpire' => 3600,
'producer' => false,
'orderStatus' => [

+ 18
- 3
common/forms/ContactForm.php View File

@@ -98,7 +98,22 @@ class ContactForm extends Model
'contact',
[
'content' => $this->body,
'name' => $this->name
'name' => $this->name,
'email' => $this->email
],
$this->email
);
}

public function sendEmailShopSupport(Producer $producer)
{
return Yii::$app->mailerService->sendAdmin(
'Support > '.$producer->name.' : ' . $this->subject,
'contact',
[
'content' => $this->body,
'name' => $this->name,
'email' => $this->email
],
$this->email
);
@@ -111,10 +126,10 @@ class ContactForm extends Model
'contact',
[
'content' => $this->body,
'name' => $this->name
'name' => $this->name,
'email' => $this->email
],
$this->email
);
}

}

+ 1
- 1
common/mail/contact-html.php View File

@@ -40,6 +40,6 @@ use yii\helpers\Html;

?>

<p>Message de <strong><?= Html::encode($name) ?></strong> :</p>
<p>Message de <strong><?= Html::encode($name) ?></strong> (<?= Html::encode($email) ?>) :</p>

<?= nl2br(Html::encode($content)); ?>

+ 1
- 0
domain/Feature/Feature/Feature.php View File

@@ -49,6 +49,7 @@ class Feature extends ActiveRecordCommon
const ALIAS_ONLINE_PAYMENT = 'online_payment';
const ALIAS_EXPORT_SHOPPING_CART_LABELS_ADVANCED = 'export_shopping_cart_labels_advanced';
const ALIAS_SETTINGS = 'settings';
const ALIAS_SHOP_SUPPORT = 'shop_support';

/**
* @inheritdoc

+ 5
- 1
domain/Feature/Feature/FeatureChecker.php View File

@@ -28,7 +28,11 @@ class FeatureChecker extends AbstractChecker
return false;
}

$featureProducer = $this->featureProducerRepository->findOneFeatureProducer($feature);
$featureProducer = null;
if($this->getProducerContext(false)) {
$featureProducer = $this->featureProducerRepository->findOneFeatureProducer($feature);
}

if(!$featureProducer || is_null($featureProducer->status)) {
if($feature->is_paid_feature || $feature->only_for_selected_producers) {
return false;

+ 2
- 1
domain/Feature/Feature/FeatureDefinition.php View File

@@ -18,7 +18,8 @@ class FeatureDefinition extends AbstractDefinition
Feature::ALIAS_PRODUCT_PRICE_IMPORT => 'Produits : import prix',
Feature::ALIAS_ONLINE_PAYMENT => 'Paiement en ligne',
Feature::ALIAS_EXPORT_SHOPPING_CART_LABELS_ADVANCED => "Génération d'étiquettes avec un format spécifique",
Feature::ALIAS_SETTINGS => 'Système de paramètres'
Feature::ALIAS_SETTINGS => 'Système de paramètres',
Feature::ALIAS_SHOP_SUPPORT => 'Support boutique'
];
}
}

+ 23
- 8
domain/Producer/Producer/ProducerSeoGenerator.php View File

@@ -18,12 +18,22 @@ class ProducerSeoGenerator extends AbstractGenerator
$this->pointSaleRepository = $this->loadService(PointSaleRepository::class);
}

public function generateMetaDescriptionHome()
public function limitMetaDescriptionLength(string $metaDescription): string
{
$length = 160;
if(strlen($metaDescription) > $length) {
return substr(strip_tags($metaDescription), 0, $length) . ' ...';
}

return $metaDescription;
}

public function generateMetaDescriptionHome(): string
{
$producer = $this->getProducerContext();

if($producer->description) {
$metaDescription = substr(strip_tags($producer->description), 0, 200);
return $this->limitMetaDescriptionLength($producer->description);
}
else {
$metaDescription = "Bienvenue sur la boutique du producteur ".Html::encode($producer->name);
@@ -32,7 +42,7 @@ class ProducerSeoGenerator extends AbstractGenerator
return $metaDescription;
}

public function generateMetaDescriptionProducts()
public function generateMetaDescriptionProducts(): string
{
$metaDescription = '';
$productsArray = $this->productRepository->findProducts();
@@ -45,10 +55,10 @@ class ProducerSeoGenerator extends AbstractGenerator
$metaDescription = substr($metaDescription, 0, strlen($metaDescription) - 2);
}

return $metaDescription;
return $this->limitMetaDescriptionLength($metaDescription);
}

public function generateMetaDescriptionPointsSale()
public function generateMetaDescriptionPointsSale(): string
{
$metaDescription = '';
$pointsSaleArray = $this->pointSaleRepository->findPointSales();
@@ -61,19 +71,24 @@ class ProducerSeoGenerator extends AbstractGenerator
$metaDescription = substr($metaDescription, 0, strlen($metaDescription) - 2);
}

return $metaDescription;
return $this->limitMetaDescriptionLength($metaDescription);
}

public function generateMetaDescriptionOrder()
public function generateMetaDescriptionOrder(): string
{
$producer = $this->getProducerContext();
return "Passez commande chez ".Html::encode($producer->name)." à la date et au lieu de votre choix.";
}

public function generateMetaDescriptionContact()
public function generateMetaDescriptionContact(): string
{
$producer = $this->getProducerContext();
return 'Contactez ce producteur en utilisant le formulaire de contact. '
.Html::encode($producer->name.', '.$producer->address.' '.$producer->postcode.' '.$producer->city);
}

public function generateMetaDescriptionSupport()
{
return 'Vous rencontrez un problème ? Contactez le développeur du logiciel en utilisant ce formulaire de contact pour poser vos questions ou faire remonter un bug.';
}
}

+ 1
- 1
domain/_/ProducerContextTrait.php View File

@@ -7,7 +7,7 @@ use yii\base\ErrorException;

trait ProducerContextTrait
{
protected ?Producer $producerContext;
protected ?Producer $producerContext = null;

public function setProducerContext(Producer $producer = null): self
{

+ 1
- 1
frontend/views/site/contact.php View File

@@ -76,7 +76,7 @@ $this->params['breadcrumbs'][] = $this->title;
</div>
<div class="col-md-4">
<div class="alert alert-dark">
Ce formulaire de contact vous permet de joindre le développeur de la plateforme Souke.
Ce formulaire de contact vous permet de joindre le développeur du logiciel Souke.
Si vous souhaitez joindre un producteur, merci de le faire directement depuis sa boutique.
</div>
</div>

+ 4
- 1
frontend/views/site/login.php View File

@@ -53,11 +53,14 @@ $this->params['breadcrumbs'][] = $this->title;
<?= $form->field($model, 'password')->passwordInput() ?>
<?= $form->field($model, 'rememberMe')->checkbox() ?>
<p>
Si vous avez oublié votre mot de passe, vous pouvez le <?= Html::a('réinitialiser', ['site/request-password-reset']) ?>.
<?= Html::a('Mot de passe oublié ?', ['site/request-password-reset']) ?>
</p>
<div class="form-group form-buttons">
<?= Html::submitButton('<i class="bi bi-box-arrow-in-right"></i> Connexion', ['class' => 'btn btn-primary', 'name' => 'login-button']) ?>
</div>
<p class="need-help-login-signup">
Besoin d'aide ? <a href="<?= Yii::$app->urlManager->createUrl(['site/contact']) ?>">Contactez-nous</a>
</p>
<?php ActiveForm::end(); ?>
</div>
</div>

+ 6
- 0
frontend/views/site/producer.php View File

@@ -89,6 +89,9 @@ $this->setMeta('description', 'Connectez-vous pour passer commande auprès du pr
<div class="form-group form-buttons">
<?= Html::submitButton('<i class="bi bi-box-arrow-in-right"></i> Connexion', ['class' => 'btn btn-primary', 'name' => 'login-button']) ?>
</div>
<p class="need-help-login-signup">
Besoin d'aide ? <a href="<?= Yii::$app->urlManager->createUrl(['site/contact']) ?>">Contactez-nous</a>
</p>
<?php ActiveForm::end(); ?>
</div>
</div>
@@ -130,6 +133,9 @@ $this->setMeta('description', 'Connectez-vous pour passer commande auprès du pr
<div class="form-group form-buttons" id="boutons-inscrire">
<?= Html::submitButton("<i class=\"bi bi-person-plus\"></i> S'inscrire", ['class' => 'btn btn-primary', 'name' => 'signup-button']) ?>
</div>
<p class="need-help-login-signup">
Besoin d'aide ? <a href="<?= Yii::$app->urlManager->createUrl(['site/contact']) ?>">Contactez-nous</a>
</p>
<?php ActiveForm::end(); ?>
</div>
</div>

+ 8
- 2
frontend/views/site/service.php View File

@@ -35,9 +35,11 @@
* termes.
*/

use domain\Feature\Feature\Feature;
use yii\helpers\Html;

$producerModule = $this->getProducerModule();
$featureModule = $this->getFeatureModule();

$this->setTitle('Fonctionnalités, services & tarifs');
$this->setMeta('description', "Découvrez les fonctionnalités du logiciel, les services proposés et les tarifs pour l’hébergement de votre circuit court sur Souke.");
@@ -122,8 +124,12 @@ $this->setMeta('description', "Découvrez les fonctionnalités du logiciel, les
<div class="panel-body">
<h3>Support</h3>
<p>Je suis disponible pour répondre rapidement à toutes vos questions par email
ou par
téléphone.</p>
ou par téléphone.
<?php if($featureModule->getChecker()->isEnabled(Feature::ALIAS_SHOP_SUPPORT)): ?>
<br />J'assure également le support pour vos clients s'ils
rencontrent un problème dans l'utilisation du logiciel.
<?php endif; ?>
</p>
</div>
</div>
<div class="panel panel-default">

+ 3
- 0
frontend/views/site/signup.php View File

@@ -119,6 +119,9 @@ $this->params['breadcrumbs'][] = $this->title;
<div class="form-group form-buttons" id="buttons-signup">
<?= Html::submitButton("<i class=\"bi bi-person-plus\"></i> S'inscrire", ['class' => 'btn btn-primary', 'name' => 'signup-button']) ?>
</div>
<p class="need-help-login-signup">
Besoin d'aide ? <a href="<?= Yii::$app->urlManager->createUrl(['site/contact']) ?>">Contactez-nous</a>
</p>
<?php ActiveForm::end(); ?>
<?php endif; ?>
</div>

+ 1
- 1
frontend/views/site/signup_confirm.php View File

@@ -40,7 +40,7 @@ use domain\User\User\UserModule;

$this->setTitle('Inscription confirmée') ;
$this->setIcon('check');
$this->setMeta('description', 'Inscrivez-vous afin de profiter des fonctionnalités de la plateforme.');
$this->setMeta('description', 'Inscrivez-vous afin de profiter des fonctionnalités du logiciel.');
$this->params['breadcrumbs'][] = $this->title;

$userModule = UserModule::getInstance();

+ 58
- 50
frontend/web/css/screen.css View File

@@ -1108,7 +1108,15 @@ section#header-title h1 .glyphicon {
border-radius: 5px;
}

/* line 1126, ../sass/screen.scss */
/* line 1125, ../sass/screen.scss */
.need-help-login-signup {
margin-top: 30px;
margin-bottom: 0px;
padding-bottom: 0px !important;
text-align: center;
}

/* line 1133, ../sass/screen.scss */
.site-login .col-lg-5 {
margin: 0px auto;
float: none;
@@ -1116,64 +1124,64 @@ section#header-title h1 .glyphicon {
}

/* signup */
/* line 1137, ../sass/screen.scss */
/* line 1144, ../sass/screen.scss */
form .block-newsletter .help-block-error {
display: none;
}
/* line 1140, ../sass/screen.scss */
/* line 1147, ../sass/screen.scss */
form .block-newsletter .help-block {
margin-top: 3px;
padding-left: 20px;
color: gray;
}

/* line 1147, ../sass/screen.scss */
/* line 1154, ../sass/screen.scss */
.modal-backdrop {
z-index: 999;
}

/* line 1152, ../sass/screen.scss */
/* line 1159, ../sass/screen.scss */
.site-signup .col-lg-5 {
margin: 0px auto;
float: none;
max-width: 500px;
}

/* line 1165, ../sass/screen.scss */
/* line 1172, ../sass/screen.scss */
#form-signup #user-producer {
margin-bottom: 30px;
}
/* line 1170, ../sass/screen.scss */
/* line 1177, ../sass/screen.scss */
#form-signup #signupform-id_producer option:disabled {
font-weight: bold;
color: black;
}
/* line 1176, ../sass/screen.scss */
/* line 1183, ../sass/screen.scss */
#form-signup #champs-producer {
display: none;
}
/* line 1180, ../sass/screen.scss */
/* line 1187, ../sass/screen.scss */
#form-signup #buttons-signup {
margin-top: 30px;
}
/* line 1184, ../sass/screen.scss */
/* line 1191, ../sass/screen.scss */
#form-signup .field-signupform-is_test {
display: none;
}

/* line 1189, ../sass/screen.scss */
/* line 1196, ../sass/screen.scss */
#col-left {
padding: 0px;
z-index: 15;
}
/* line 1193, ../sass/screen.scss */
/* line 1200, ../sass/screen.scss */
#col-left .affix {
width: 25%;
border-right: solid 1px #e0e0e0;
background-color: #FAFAFA;
height: 100%;
}
/* line 1200, ../sass/screen.scss */
/* line 1207, ../sass/screen.scss */
#col-left #link-home {
text-decoration: none;
font-size: 22px;
@@ -1182,28 +1190,28 @@ form .block-newsletter .help-block {
padding: 10px;
background-color: #e4ac07;
}
/* line 1208, ../sass/screen.scss */
/* line 1215, ../sass/screen.scss */
#col-left #link-home img {
height: 50px;
margin-bottom: 5px;
float: left;
}
/* line 1214, ../sass/screen.scss */
/* line 1221, ../sass/screen.scss */
#col-left #link-home .text {
padding-left: 62px;
}
/* line 1217, ../sass/screen.scss */
/* line 1224, ../sass/screen.scss */
#col-left #link-home .text .bap {
font-family: "comfortaalight";
font-size: 24px;
}
/* line 1222, ../sass/screen.scss */
/* line 1229, ../sass/screen.scss */
#col-left #link-home .text .plateforme {
font-size: 17px;
font-family: "myriadpro-light";
color: #ee6f42;
}
/* line 1230, ../sass/screen.scss */
/* line 1237, ../sass/screen.scss */
#col-left h2 {
font-family: 'myriadpro-regular';
color: black;
@@ -1211,37 +1219,37 @@ form .block-newsletter .help-block {
margin-bottom: 10px;
padding: 15px 0px 5px 15px;
}
/* line 1238, ../sass/screen.scss */
/* line 1245, ../sass/screen.scss */
#col-left #links {
background-color: white;
margin-bottom: 20px;
}
/* line 1244, ../sass/screen.scss */
/* line 1251, ../sass/screen.scss */
#col-left #links ul li a {
text-align: center;
border-right: solid 1px #e0e0e0;
}
/* line 1248, ../sass/screen.scss */
/* line 1255, ../sass/screen.scss */
#col-left #links ul li a:hover {
background-color: #ee6f42;
color: white;
}
/* line 1254, ../sass/screen.scss */
/* line 1261, ../sass/screen.scss */
#col-left #links ul li:last-child a {
border-right: 0px none;
}
/* line 1264, ../sass/screen.scss */
/* line 1271, ../sass/screen.scss */
#col-left #producers nav.nav-producers ul li a {
padding-left: 50px;
height: 40px;
}
/* line 1270, ../sass/screen.scss */
/* line 1277, ../sass/screen.scss */
#col-left #producers nav.nav-producers ul li.active a {
background-color: #ee6f42;
position: relative;
color: white;
}
/* line 1275, ../sass/screen.scss */
/* line 1282, ../sass/screen.scss */
#col-left #producers nav.nav-producers ul li.active a:after {
right: -40px;
top: 50%;
@@ -1256,18 +1264,18 @@ form .block-newsletter .help-block {
border-width: 20px;
margin-top: -20px;
}
/* line 1294, ../sass/screen.scss */
/* line 1301, ../sass/screen.scss */
#col-left ul {
list-style-type: none;
margin: 0px;
padding: 0px;
}
/* line 1299, ../sass/screen.scss */
/* line 1306, ../sass/screen.scss */
#col-left ul li {
margin: 0px;
padding: 0px;
}
/* line 1303, ../sass/screen.scss */
/* line 1310, ../sass/screen.scss */
#col-left ul li a {
text-decoration: none;
font-family: 'comfortaaregular';
@@ -1278,18 +1286,18 @@ form .block-newsletter .help-block {
display: block;
color: black;
}
/* line 1313, ../sass/screen.scss */
/* line 1320, ../sass/screen.scss */
#col-left ul li a span.name, #col-left ul li a span.wording {
display: none;
}
/* line 1320, ../sass/screen.scss */
/* line 1327, ../sass/screen.scss */
#col-left p {
padding: 20px;
padding-top: 0px;
color: gray;
}

/* line 1328, ../sass/screen.scss */
/* line 1335, ../sass/screen.scss */
#content .header-title {
height: 79px;
padding: 20px 20px;
@@ -1304,7 +1312,7 @@ form .block-newsletter .help-block {
-webkit-box-shadow: 0px 0px 8px #e0e0e0;
box-shadow: 0px 0px 8px #e0e0e0;
}
/* line 1340, ../sass/screen.scss */
/* line 1347, ../sass/screen.scss */
#content .header-title h1 {
color: black;
font-family: 'myriadpro-regular';
@@ -1312,7 +1320,7 @@ form .block-newsletter .help-block {
font-size: 25px;
text-transform: uppercase;
}
/* line 1348, ../sass/screen.scss */
/* line 1355, ../sass/screen.scss */
#content .header-title h2 {
color: gray;
text-transform: none;
@@ -1321,16 +1329,16 @@ form .block-newsletter .help-block {
line-height: 20px;
}

/* line 1359, ../sass/screen.scss */
/* line 1366, ../sass/screen.scss */
.header-producer {
z-index: 1;
}
/* line 1362, ../sass/screen.scss */
/* line 1369, ../sass/screen.scss */
.header-producer #block-main-img {
height: 144px;
overflow: hidden;
}
/* line 1366, ../sass/screen.scss */
/* line 1373, ../sass/screen.scss */
.header-producer #block-main-img #main-img {
width: 100%;
height: auto;
@@ -1340,7 +1348,7 @@ form .block-newsletter .help-block {
-webkit-border-radius: 0px;
border-radius: 0px;
}
/* line 1375, ../sass/screen.scss */
/* line 1382, ../sass/screen.scss */
.header-producer h1 {
font-family: 'comfortaaregular';
text-align: center;
@@ -1348,23 +1356,23 @@ form .block-newsletter .help-block {
top: 30px;
left: 40px;
}
/* line 1382, ../sass/screen.scss */
/* line 1389, ../sass/screen.scss */
.header-producer h1 span {
background-color: rgba(255, 255, 255, 0.8);
padding: 10px 30px;
border: dotted 1px black;
}

/* line 1393, ../sass/screen.scss */
/* line 1400, ../sass/screen.scss */
nav#menu-producer {
border-bottom: solid 1px #e0e0e0;
}
/* line 1397, ../sass/screen.scss */
/* line 1404, ../sass/screen.scss */
nav#menu-producer ul li {
padding: 0px;
margin: 0px;
}
/* line 1401, ../sass/screen.scss */
/* line 1408, ../sass/screen.scss */
nav#menu-producer ul li a {
border-right: solid 1px #e0e0e0;
text-decoration: none;
@@ -1372,47 +1380,47 @@ nav#menu-producer ul li a {
-webkit-border-radius: 0px;
border-radius: 0px;
}
/* line 1406, ../sass/screen.scss */
/* line 1413, ../sass/screen.scss */
nav#menu-producer ul li a:hover {
background-color: #ee6f42;
color: white;
}

/* line 1416, ../sass/screen.scss */
/* line 1423, ../sass/screen.scss */
.site-contact .col-lg-6 {
margin: 0px auto;
float: none;
}
/* line 1421, ../sass/screen.scss */
/* line 1428, ../sass/screen.scss */
.site-contact .form-group.submit {
text-align: right;
}

/* line 1427, ../sass/screen.scss */
/* line 1434, ../sass/screen.scss */
.site-opinion .col-lg-6 {
margin: 0px auto;
float: none;
}
/* line 1432, ../sass/screen.scss */
/* line 1439, ../sass/screen.scss */
.site-opinion .field-opinionform-istest {
display: none;
}
/* line 1436, ../sass/screen.scss */
/* line 1443, ../sass/screen.scss */
.site-opinion .form-group.submit {
text-align: center;
}

/* line 1443, ../sass/screen.scss */
/* line 1450, ../sass/screen.scss */
#site-prices .panel p {
padding-bottom: 0px;
}

/* line 1450, ../sass/screen.scss */
/* line 1457, ../sass/screen.scss */
#contact-form .field-contactform-istest {
display: none;
}

/* line 1456, ../sass/screen.scss */
/* line 1463, ../sass/screen.scss */
.site-request-password-reset .col-lg-6 {
margin: 0px auto;
}

+ 7
- 0
frontend/web/sass/screen.scss View File

@@ -1122,6 +1122,13 @@ $max-width-form: 500px;
@include border-radius(5px) ;
}

.need-help-login-signup {
margin-top: 30px;
margin-bottom: 0px;
padding-bottom: 0px !important;
text-align: center;
}

.site-login {
.col-lg-5 {
margin: 0px auto;

+ 31
- 1
producer/controllers/SiteController.php View File

@@ -47,7 +47,6 @@ use yii\helpers\Html;

class SiteController extends ProducerBaseController
{

/**
* @inheritdoc
*/
@@ -221,6 +220,37 @@ class SiteController extends ProducerBaseController
]);
}

public function actionSupport()
{
$featureModule = $this->getFeatureModule();
if($featureModule->getChecker()->isDisabled(Feature::ALIAS_SHOP_SUPPORT)) {
return $this->redirect(['site/index']);
}

$model = new ContactForm();
$producer = $this->getProducerCurrent();

if ($model->load(\Yii::$app->request->post()) && $model->validate()) {
$isSent = false;
if ($model->sendEmailShopSupport($producer)) {
$isSent = true;
}

if ($isSent) {
$this->setFlash('success', 'Votre message a bien été envoyé.');
} else {
$this->setFlash('error', 'Il y a eu une erreur lors de l\'envoi de votre message.');
}

$model = new ContactForm();
}

return $this->render('support', [
'model' => $model,
'producer' => $this->getProducerCurrent()
]);
}

/**
* Ajoute ou supprime un producteur des favoris de l'utilisateur.
* Redirige vers la page d'accueil du producteur.

+ 12
- 2
producer/views/layouts/main.php View File

@@ -392,9 +392,19 @@ $mainColor = $producer->option_main_color ?: '#ee6f42' ;

<footer id="footer" class="container">
<div class="content">
<a href="<?php echo \Yii::$app->urlManagerFrontend->createAbsoluteUrl(['site/index']); ?>">Souke</a> &bull;
<!--<a href="<?php echo \Yii::$app->urlManagerFrontend->createAbsoluteUrl(['site/index']); ?>">Souke</a> &bull;
<a href="<?php echo \Yii::$app->urlManagerFrontend->createAbsoluteUrl(['site/mentions']); ?>">Mentions légales</a> &bull;
<a href="<?php echo \Yii::$app->urlManagerFrontend->createAbsoluteUrl(['site/cgv']); ?>">CGS</a>
<a href="<?php echo \Yii::$app->urlManagerFrontend->createAbsoluteUrl(['site/cgv']); ?>">CGS</a>-->

<?php if($featureModule->getChecker()->isEnabled(Feature::ALIAS_SHOP_SUPPORT)): ?>
<div id="button-shop-support">
<a href="<?= Yii::$app->urlManager->createUrl(['site/support']) ?>" class="btn btn-sm btn-secondary">
<i class="bi bi-life-preserver"></i>
Besoin d'aide ?
</a>
</div>
<?php endif; ?>

</div>
</footer>
<script type="text/javascript" src="https://cdn.polyfill.io/v3/polyfill.min.js?features=Intl.~locale.fr"></script>

+ 87
- 0
producer/views/site/support.php View File

@@ -0,0 +1,87 @@
<?php

/**
Copyright Souke (2018)

contact@souke.fr

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 domain\Producer\Producer\ProducerModule;
use yii\helpers\Html;
use yii\bootstrap\ActiveForm;
use yii\captcha\Captcha;

$producerModule = ProducerModule::getInstance();

$this->setTitle('Support technique');
$this->setMeta('description', $producerModule->getSeoGenerator()->generateMetaDescriptionSupport());

?>
<div class="site-support">
<div class="row">
<div class="col-lg-6">
<?php $form = ActiveForm::begin(['id' => 'contact-form', 'enableClientValidation' => false,]); ?>
<?= $form->field($model, 'name') ?>
<?= $form->field($model, 'email') ?>
<?= $form->field($model, 'subject') ?>
<?= $form->field($model, 'body')->textArea(['rows' => 6]) ?>
<?php echo $form->field($model, 'verifyCode')->widget(yii\captcha\Captcha::className(), [
'template' => '<div class="row"><div class="col-md-12">{image}</div><div class="col-md-12">{input}</div></div>',
]); ?>
<?= $form->field($model, 'isTest')->hiddenInput() ?>
<div class="form-group form-buttons">
<?= Html::submitButton('<i class="bi bi-send"></i> Envoyer', ['class' => 'btn btn-primary', 'name' => 'contact-button']) ?>
</div>
<?php ActiveForm::end(); ?>
</div>
<div class="col-lg-6">
<br />
<div class="card">
<div class="card-body">
<h5 class="card-title">
<i class="bi bi-life-preserver"></i>
Vous rencontrez un problème ?
</h5>
<div class="card-text">
<p>Si vous avez une question ou un problème dans l'utilisation du logiciel, n'hésitez
pas à contacter le développeur en utilisant le formulaire ci-contre. Une réponse vous
sera apportée au plus vite.</p>

<p>Si vous souhaitez contacter votre producteur, merci de privilégier le
<a href="<?= Yii::$app->urlManager->createUrl(['site/contact']) ?>">formulaire de contact</a>.</p>
</div>
</div>
</div>
</div>
</div>
</div>

+ 56
- 54
producer/web/css/screen.css View File

@@ -260,10 +260,11 @@ ul.pagination li.prev a, ul.pagination li.next a {
}
/* line 224, ../sass/_layout.scss */
#header nav#main-nav {
position: relative;
background-color: #ece4d8;
margin-top: 0px;
}
/* line 230, ../sass/_layout.scss */
/* line 231, ../sass/_layout.scss */
#header nav#main-nav ul li a {
display: inline-block;
padding: 8px 12px;
@@ -274,11 +275,11 @@ ul.pagination li.prev a, ul.pagination li.next a {
-webkit-box-shadow: -20px 0px 20px 0px #ece4d8 inset;
box-shadow: -20px 0px 20px 0px #ece4d8 inset;
}
/* line 238, ../sass/_layout.scss */
/* line 239, ../sass/_layout.scss */
#header nav#main-nav ul li a .bi {
margin-right: 3px;
}
/* line 242, ../sass/_layout.scss */
/* line 243, ../sass/_layout.scss */
#header nav#main-nav ul li a span.label {
display: inline-block;
position: relative;
@@ -296,11 +297,11 @@ ul.pagination li.prev a, ul.pagination li.next a {
text-transform: uppercase;
border: solid 1px transparent;
}
/* line 258, ../sass/_layout.scss */
/* line 259, ../sass/_layout.scss */
#header nav#main-nav ul li a .hide-desktop {
display: none;
}
/* line 263, ../sass/_layout.scss */
/* line 264, ../sass/_layout.scss */
#header nav#main-nav ul li a.active,
#header nav#main-nav ul li a:hover {
color: white;
@@ -308,16 +309,16 @@ ul.pagination li.prev a, ul.pagination li.next a {
-webkit-box-shadow: none;
box-shadow: none;
}
/* line 268, ../sass/_layout.scss */
/* line 269, ../sass/_layout.scss */
#header nav#main-nav ul li a.active span.label-success,
#header nav#main-nav ul li a:hover span.label-success {
border: solid 1px white !important;
}
/* line 274, ../sass/_layout.scss */
/* line 275, ../sass/_layout.scss */
#header nav#main-nav ul.submenu {
background-color: white;
}
/* line 278, ../sass/_layout.scss */
/* line 279, ../sass/_layout.scss */
#header nav#main-nav ul.submenu li a {
background-color: white;
font-size: 0.9em;
@@ -326,34 +327,34 @@ ul.pagination li.prev a, ul.pagination li.next a {
box-shadow: none;
border-bottom: solid 2px #f4efe8;
}
/* line 284, ../sass/_layout.scss */
/* line 285, ../sass/_layout.scss */
#header nav#main-nav ul.submenu li a span.label {
background-color: white;
border: solid 1px #b7ab9b;
color: #b7ab9b;
}
/* line 291, ../sass/_layout.scss */
/* line 292, ../sass/_layout.scss */
#header nav#main-nav ul.submenu li a.active,
#header nav#main-nav ul.submenu li a:hover {
color: black;
background-color: white;
border-bottom: solid 2px #b7ab9b !important;
}
/* line 301, ../sass/_layout.scss */
/* line 302, ../sass/_layout.scss */
#header nav#main-nav #user {
color: #ee6f42;
float: right;
padding: 10px;
}

/* line 309, ../sass/_layout.scss */
/* line 310, ../sass/_layout.scss */
#main {
padding: 0px;
padding-top: 38px;
margin-bottom: 30px;
margin-bottom: 15px;
background-color: white;
}
/* line 315, ../sass/_layout.scss */
/* line 316, ../sass/_layout.scss */
#main #banner {
height: 180px;
overflow: hidden;
@@ -361,7 +362,7 @@ ul.pagination li.prev a, ul.pagination li.next a {
background-size: cover;
background-position: center;
}
/* line 323, ../sass/_layout.scss */
/* line 324, ../sass/_layout.scss */
#main #infos-producer {
display: none;
padding: 5px 10px;
@@ -371,118 +372,119 @@ ul.pagination li.prev a, ul.pagination li.next a {
border-bottom: solid 1px #e0e0e0;
color: gray;
}
/* line 332, ../sass/_layout.scss */
/* line 333, ../sass/_layout.scss */
#main #infos-producer strong {
font-weight: bold;
}
/* line 336, ../sass/_layout.scss */
/* line 337, ../sass/_layout.scss */
#main #infos-producer .favorite {
float: right;
color: gray;
}
/* line 339, ../sass/_layout.scss */
/* line 340, ../sass/_layout.scss */
#main #infos-producer .favorite a {
color: black;
}
/* line 345, ../sass/_layout.scss */
/* line 346, ../sass/_layout.scss */
#main h2#page-title {
margin-top: 0px;
font-family: "worksans_bold";
font-size: 30px;
line-height: 40px;
}
/* line 356, ../sass/_layout.scss */
/* line 357, ../sass/_layout.scss */
#main #content {
position: relative;
padding: 40px;
min-height: 300px;
}
/* line 360, ../sass/_layout.scss */
/* line 362, ../sass/_layout.scss */
#main #content h1, #main #content h2, #main #content h3, #main #content h4, #main #content h5, #main #content h6 {
font-family: "worksans_bold";
margin-bottom: 20px;
color: black;
}
/* line 365, ../sass/_layout.scss */
/* line 367, ../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 370, ../sass/_layout.scss */
/* line 372, ../sass/_layout.scss */
#main #content h1 {
font-size: 30px;
}
/* line 374, ../sass/_layout.scss */
/* line 376, ../sass/_layout.scss */
#main #content h2 {
font-size: 25px;
}
/* line 378, ../sass/_layout.scss */
/* line 380, ../sass/_layout.scss */
#main #content h3 {
font-size: 1.4em;
text-align: left;
margin-bottom: 30px;
}
/* line 383, ../sass/_layout.scss */
/* line 385, ../sass/_layout.scss */
#main #content h3 span {
padding-top: 14px;
color: black;
}
/* line 389, ../sass/_layout.scss */
/* line 391, ../sass/_layout.scss */
#main #content h4 {
font-size: 20px;
}
/* line 393, ../sass/_layout.scss */
/* line 395, ../sass/_layout.scss */
#main #content h5 {
font-size: 18px;
}
/* line 397, ../sass/_layout.scss */
/* line 399, ../sass/_layout.scss */
#main #content h6 {
font-size: 16px;
}
/* line 403, ../sass/_layout.scss */
/* line 405, ../sass/_layout.scss */
#main #content form .form-group .hint-block {
color: gray;
}

/* line 411, ../sass/_layout.scss */
/* line 413, ../sass/_layout.scss */
#footer-producer {
margin-bottom: 30px;
text-align: center;
width: 100%;
}
/* line 416, ../sass/_layout.scss */
/* line 418, ../sass/_layout.scss */
#footer-producer a {
color: #ee6f42;
}
/* line 418, ../sass/_layout.scss */
/* line 420, ../sass/_layout.scss */
#footer-producer a:active {
text-decoration: underline;
}

/* line 424, ../sass/_layout.scss */
/* line 426, ../sass/_layout.scss */
#footer {
display: none;
height: 100px;
float: right;
text-align: center;
text-align: right;
margin-bottom: 50px;
}
/* line 430, ../sass/_layout.scss */
#footer .content {
padding-top: 20px;
color: black;
}
/* line 434, ../sass/_layout.scss */
#footer .content a {
/*a {
color: black ;
font-size: 18px ;
padding-left: 10px ;
padding-right: 10px ;

&:hover {
text-decoration: underline ;
}
}*/
}
/* line 433, ../sass/_layout.scss */
#footer .content #button-shop-support a {
-moz-border-radius: 15px;
-webkit-border-radius: 15px;
border-radius: 15px;
border: solid 1px #b7ab9b;
color: black;
font-size: 18px;
padding-left: 10px;
padding-right: 10px;
}
/* line 440, ../sass/_layout.scss */
#footer .content a:hover {
text-decoration: underline;
}
/* line 447, ../sass/_layout.scss */
#footer #code-source img {
height: 20px;
background-color: white;
}

/**

+ 17
- 16
producer/web/sass/_layout.scss View File

@@ -222,6 +222,7 @@ ul.pagination {
}

nav#main-nav {
position: relative;
background-color: $color-gray ;
margin-top: 0px;
@@ -309,7 +310,7 @@ ul.pagination {
#main {
padding: 0px ;
padding-top: 38px;
margin-bottom: 30px;
margin-bottom: 15px;
background-color: white ;
#banner {
@@ -354,9 +355,10 @@ ul.pagination {
}
#content {
position: relative;
padding: 40px;
min-height: 300px ;
h1, h2, h3, h4, h5, h6 {
font-family: 'worksans_bold' ;
margin-bottom: 20px ;
@@ -422,16 +424,21 @@ ul.pagination {
}

#footer {
display: none;
height: 100px ;
float: right ;
text-align: center ;
text-align: right;
margin-bottom: 50px;
.content {
padding-top: 20px ;
color: black ;

a {
#button-shop-support {
a {
@include border-radius(15px);
border: solid 1px $color-gray-dark;
color: black;
background-color: white;
}
}

/*a {
color: black ;
font-size: 18px ;
padding-left: 10px ;
@@ -440,12 +447,6 @@ ul.pagination {
&:hover {
text-decoration: underline ;
}
}
}

#code-source {
img {
height: 20px ;
}
}*/
}
}

Loading…
Cancel
Save