Przeglądaj źródła

[Site & espace producteur] Avis & suggestions #1203

feature/souke
Guillaume Bourgeois 1 rok temu
rodzic
commit
f0fbf9272c
12 zmienionych plików z 376 dodań i 40 usunięć
  1. +4
    -1
      common/components/MailerService.php
  2. +5
    -0
      common/logic/User/User/Service/UserSolver.php
  3. +49
    -0
      common/mail/newOpinionAdmin-html.php
  4. +47
    -0
      common/mail/newOpinionAdmin-text.php
  5. +35
    -14
      frontend/controllers/SiteController.php
  6. +87
    -0
      frontend/forms/OpinionForm.php
  7. +1
    -0
      frontend/views/layouts/main.php
  8. +27
    -21
      frontend/views/site/contact.php
  9. +87
    -0
      frontend/views/site/opinion.php
  10. +17
    -3
      frontend/web/css/screen.css
  11. +16
    -1
      frontend/web/sass/screen.scss
  12. +1
    -0
      producer/views/layouts/main.php

+ 4
- 1
common/components/MailerService.php Wyświetl plik

@@ -21,9 +21,12 @@ class MailerService
$message->send();
}

public function sendAdmin(string $subject, string $view, array $params = [])
public function sendAdmin(string $subject, string $view, array $params = [], string $replyTo = null)
{
$message = $this->composeBase(\Yii::$app->parameterBag->get('adminEmail'), $view, $params);
if($replyTo) {
$message->setReplyTo($replyTo);
}
$this->initMessageFromSite($message, $subject);
$message->send();
}

+ 5
- 0
common/logic/User/User/Service/UserSolver.php Wyświetl plik

@@ -137,6 +137,11 @@ class UserSolver extends AbstractService implements SolverInterface
return null;
}

public function isCurrentGuest(): bool
{
return \Yii::$app->user->isGuest;
}

/**
* Retourne si l'utilisateur courant est connecté ou non.
*

+ 49
- 0
common/mail/newOpinionAdmin-html.php Wyświetl plik

@@ -0,0 +1,49 @@
<?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;

?>

<p>Un nouvel avis vient d'être envoyé par <em><?= Html::encode($username) ?></em> :</p><br />

<div>
<?= Html::encode($message) ?>
</div>



+ 47
- 0
common/mail/newOpinionAdmin-text.php Wyświetl plik

@@ -0,0 +1,47 @@
<?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;

?>

Un nouvel avis vient d'être envoyé par <?= Html::encode($username) ?> :

<?= Html::encode($message) ?>



+ 35
- 14
frontend/controllers/SiteController.php Wyświetl plik

@@ -39,6 +39,7 @@
namespace frontend\controllers;

use common\helpers\GlobalParam;
use frontend\forms\OpinionForm;
use frontend\forms\ProducerCodeForm;
use GuzzleHttp\Client;
use Yii;
@@ -294,22 +295,16 @@ class SiteController extends FrontendController
public function actionContact()
{
$model = new ContactForm();
$messageSent = false;
if ($model->load(Yii::$app->request->post()) && $model->validate()) {
if ($model->sendEmail(Yii::$app->parameterBag->get('adminEmail'))) {
$this->setFlash('success', 'Votre message a bien été envoyé. Nous vous répondrons dès que possible.');
}
else {
$this->setFlash('error', 'Il y a eu une erreur lors de l\'envoi de votre message.');
}

return $this->refresh();
}
else {
return $this->render('contact', [
'model' => $model,
]);
$model->sendEmail(Yii::$app->parameterBag->get('adminEmail'));
$messageSent = true;
}

return $this->render('contact', [
'model' => $model,
'messageSent' => $messageSent,
]);
}

/**
@@ -501,6 +496,32 @@ class SiteController extends FrontendController
]);
}

public function actionOpinion()
{
$userManager = $this->getUserManager();
$userCurrent = $this->getUserCurrent();
$model = new OpinionForm();
$opinionSent = false;
if ($model->load(Yii::$app->request->post()) && $model->validate()) {
// @TODO : placer l'envoi de l'email dans un service dédié
\Yii::$app->mailerService->sendAdmin(
'Nouvel avis',
'newOpinionAdmin',
[
'username' => $userCurrent ? $userManager->getUsername($userCurrent) : $model->name,
'message' => $model->message,
],
$userCurrent ? $userCurrent->email : $model->email
);
$opinionSent = true;
}

return $this->render('opinion', [
'model' => $model,
'opinionSent' => $opinionSent
]);
}

/**
* Affiche les mentions légales.
*/

+ 87
- 0
frontend/forms/OpinionForm.php Wyświetl plik

@@ -0,0 +1,87 @@
<?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 frontend\forms;

use common\logic\User\User\Wrapper\UserManager;
use Yii;
use yii\base\Model;

/**
* ContactForm is the model behind the contact form.
*/
class OpinionForm extends Model
{
public $name;
public $email;
public $message;
public $verifyCode;
public $isTest;

/**
* @inheritdoc
*/
public function rules()
{
$userManager = UserManager::getInstance();
return [
[['message'], 'required', 'message' => 'Champs obligatoire'],
[['name', 'email'], 'required', 'message' => 'Champs obligatoire', 'when' => function($model) use($userManager) {
return $userManager->isCurrentGuest();
}],
['email', 'email', 'message' => 'Email incorrect'],
['isTest', 'string'],
['verifyCode', 'captcha', 'message' => 'Veuillez recopier le code de vérification', 'when' => function($model) use($userManager) {
return $model->isTest != 'isTest' && $userManager->isCurrentGuest();
}],
];
}

/**
* @inheritdoc
*/
public function attributeLabels()
{
return [
'name' => 'Nom',
'email' => 'Email',
'message' => 'Message',
'verifyCode' => 'Code de vérification',
];
}
}

+ 1
- 0
frontend/views/layouts/main.php Wyświetl plik

@@ -169,6 +169,7 @@ if ($userManager->isCurrentProducer()) {
<footer id="footer">
<div class="container">
<a href="<?php echo $this->getUrlManager()->createUrl('site/service'); ?>">Fonctionnalités, services & tarifs</a> <span class="bull">&bull;</span>
<a href="<?php echo $this->getUrlManager()->createUrl('site/opinion'); ?>">Avis & suggestions</a> <span class="bull">&bull;</span>
<a href="<?php echo $this->getUrlManager()->createUrl('site/mentions'); ?>">Mentions légales</a> <span class="bull">&bull;</span>
<a href="<?php echo $this->getUrlManager()->createUrl('site/cgv'); ?>">Conditions générales de service</a> <span class="bull">&bull;</span>
<a href="<?php echo $this->getUrlManager()->createUrl('site/source-code'); ?>">Code source</a>

+ 27
- 21
frontend/views/site/contact.php Wyświetl plik

@@ -45,34 +45,40 @@ use yii\captcha\Captcha;

$this->setTitle('Contact');
$this->setIcon('envelope');
$this->setMeta('description', 'Pour toute remarque ou demande d\'information, nous vous proposons d\'utiliser ce formulaire de contact.') ;
$this->setMeta('description', 'Pour toute demande d\'information, nous vous proposons d\'utiliser ce formulaire de contact.') ;

$this->params['breadcrumbs'][] = $this->title;
?>
<div class="site-contact">
<div class="row">
<div class="col-lg-5">
<div class="alert alert-info">
Ce formulaire de contact vous permet de joindre le développeur de la plateforme Opendistrib.
Si vous souhaitez joindre un producteur, merci de le faire directement depuis son espace producteur.
</div>
<div class="panel panel-default">
<div class="panel-body">
<?php $form = ActiveForm::begin(['id' => 'contact-form']); ?>
<?= $form->field($model, 'name') ?>
<?= $form->field($model, 'email') ?>
<?= $form->field($model, 'subject') ?>
<?= $form->field($model, 'body')->textArea(['rows' => 6]) ?>
<?= $form->field($model, 'verifyCode')->widget(Captcha::className(), [
'template' => '<div class="row"><div class="col-lg-3">{image}</div><div class="col-lg-6">{input}</div></div>',
]) ?>
<?= $form->field($model, 'isTest')->hiddenInput() ?>
<div class="form-group submit">
<?= Html::submitButton('Envoyer', ['class' => 'btn btn-primary', 'name' => 'contact-button']) ?>
<div class="col-lg-6">
<?php if($messageSent): ?>
<div class="alert alert-success text-center">
Merci pour votre message, je vous réponds dès que possible.
</div>
<?php else: ?>
<div class="alert alert-warning">
Ce formulaire de contact vous permet de joindre le développeur de la plateforme Opendistrib.
Si vous souhaitez joindre un producteur, merci de le faire directement depuis son espace producteur.
</div>
<div class="panel panel-default">
<div class="panel-body">
<?php $form = ActiveForm::begin(['id' => 'contact-form']); ?>
<?= $form->field($model, 'name') ?>
<?= $form->field($model, 'email') ?>
<?= $form->field($model, 'subject') ?>
<?= $form->field($model, 'body')->textArea(['rows' => 6]) ?>
<?= $form->field($model, 'verifyCode')->widget(Captcha::className(), [
'template' => '<div class="row"><div class="col-lg-3">{image}</div><div class="col-lg-6">{input}</div></div>',
]) ?>
<?= $form->field($model, 'isTest')->hiddenInput() ?>
<div class="form-group submit">
<?= Html::submitButton('Envoyer', ['class' => 'btn btn-primary', 'name' => 'contact-button']) ?>
</div>
<?php ActiveForm::end(); ?>
</div>
<?php ActiveForm::end(); ?>
</div>
</div>
<?php endif; ?>
</div>
</div>


+ 87
- 0
frontend/views/site/opinion.php Wyświetl plik

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

/**
Copyright distrib (2018)

contact@opendistrib.net

Ce logiciel est un programme informatique servant à aider les producteurs
à distribuer leur production en circuits courts.

Ce logiciel est régi par la licence CeCILL soumise au droit français et
respectant les principes de diffusion des logiciels libres. Vous pouvez
utiliser, modifier et/ou redistribuer ce programme sous les conditions
de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA
sur le site "http://www.cecill.info".

En contrepartie de l'accessibilité au code source et des droits de copie,
de modification et de redistribution accordés par cette licence, il n'est
offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons,
seule une responsabilité restreinte pèse sur l'auteur du programme, le
titulaire des droits patrimoniaux et les concédants successifs.

A cet égard l'attention de l'utilisateur est attirée sur les risques
associés au chargement, à l'utilisation, à la modification et/ou au
développement et à la reproduction du logiciel par l'utilisateur étant
donné sa spécificité de logiciel libre, qui peut le rendre complexe à
manipuler et qui le réserve donc à des développeurs et des professionnels
avertis possédant des connaissances informatiques approfondies. Les
utilisateurs sont donc invités à charger et tester l'adéquation du
logiciel à leurs besoins dans des conditions permettant d'assurer la
sécurité de leurs systèmes et ou de leurs données et, plus généralement,
à l'utiliser et l'exploiter dans les mêmes conditions de sécurité.

Le fait que vous puissiez accéder à cet en-tête signifie que vous avez
pris connaissance de la licence CeCILL, et que vous en avez accepté les
termes.
*/

use yii\helpers\Html;
use yii\bootstrap\ActiveForm;
use yii\captcha\Captcha;

/* @var $this yii\web\View */
/* @var $form yii\bootstrap\ActiveForm */

$this->setTitle('Avis & suggestions');
$this->setIcon('star');
//$this->setMeta('description', '') ;

$this->params['breadcrumbs'][] = $this->title;
?>
<div class="site-opinion">
<div class="row">
<div class="col-lg-6">
<?php if($opinionSent): ?>
<div class="alert alert-success text-center">
Merci pour votre participation, je vous fais un retour dès que possible.
</div>
<?php else: ?>
<div class="alert alert-warning">
Vous pouvez utiliser ce formulaire pour m'envoyer toutes vos remarques et suggestions d'amélioration.
</div>
<div class="panel panel-default">
<div class="panel-body">
<?php $form = ActiveForm::begin(['id' => 'opinion-form']); ?>
<?php if (Yii::$app->user->isGuest): ?>
<?= $form->field($model, 'name') ?>
<?= $form->field($model, 'email') ?>
<?php endif; ?>
<?= $form->field($model, 'message')->textArea(['rows' => 6]) ?>
<?php if (Yii::$app->user->isGuest): ?>
<?= $form->field($model, 'verifyCode')->widget(Captcha::className(), [
'template' => '<div class="row"><div class="col-lg-3">{image}</div><div class="col-lg-6">{input}</div></div>',
]) ?>
<?php endif; ?>
<?= $form->field($model, 'isTest')->hiddenInput() ?>
<div class="form-group submit">
<?= Html::submitButton('Envoyer', ['class' => 'btn btn-primary', 'name' => 'opinion-button']) ?>
</div>
<?php ActiveForm::end(); ?>
</div>
</div>
<?php endif; ?>
</div>
</div>

</div>

+ 17
- 3
frontend/web/css/screen.css Wyświetl plik

@@ -1326,7 +1326,7 @@ nav#menu-producer ul li a:hover {
}

/* line 1395, ../sass/screen.scss */
.site-contact .col-lg-5 {
.site-contact .col-lg-6 {
margin: 0px auto;
float: none;
}
@@ -1335,12 +1335,26 @@ nav#menu-producer ul li a:hover {
text-align: center;
}

/* line 1407, ../sass/screen.scss */
/* line 1406, ../sass/screen.scss */
.site-opinion .col-lg-6 {
margin: 0px auto;
float: none;
}
/* line 1411, ../sass/screen.scss */
.site-opinion .field-opinionform-istest {
display: none;
}
/* line 1415, ../sass/screen.scss */
.site-opinion .form-group.submit {
text-align: center;
}

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

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

+ 16
- 1
frontend/web/sass/screen.scss Wyświetl plik

@@ -1392,7 +1392,7 @@ nav#menu-producer {
}

.site-contact {
.col-lg-5 {
.col-lg-6 {
margin: 0px auto;
float: none;
}
@@ -1402,6 +1402,21 @@ nav#menu-producer {
}
}

.site-opinion {
.col-lg-6 {
margin: 0px auto;
float: none;
}

.field-opinionform-istest {
display: none;
}

.form-group.submit {
text-align: center;
}
}

#site-prices {
.panel {
p {

+ 1
- 0
producer/views/layouts/main.php Wyświetl plik

@@ -277,6 +277,7 @@ if (!Yii::$app->user->isGuest) {
<footer id="footer" class="container">
<div class="content">
<a href="<?php echo \Yii::$app->urlManagerFrontend->createAbsoluteUrl(['site/index']); ?>">Opendistrib</a> &bull;
<a href="<?php echo \Yii::$app->urlManagerFrontend->createAbsoluteUrl(['site/opinion']); ?>">Avis & suggestions</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> &bull;

Ładowanie…
Anuluj
Zapisz