Commit 1b3f7980 by semenov

new module

parent 6d4ac288
......@@ -31,9 +31,27 @@ class AdminFormSendMessageController extends AdminModelEditorSmartController
$this->enableScenarios = true;
$this->gridColumns = [
'form_id',
[
'class' => \yii\grid\DataColumn::className(),
'value' => function(FormSendMessage $model)
{
if ($form = Form::find()->where(['id' => $model->form_id])->one())
{
return $form->name;
}
},
'attribute' => 'form_id',
'format' => 'html'
],
['class' => \skeeks\cms\grid\CreatedAtColumn::className()],
['class' => \skeeks\cms\grid\CreatedByColumn::className()]
['class' => \skeeks\cms\grid\CreatedByColumn::className()],
'page_url',
'ip'
];
parent::init();
......
......@@ -8,6 +8,7 @@
namespace skeeks\modules\cms\form\controllers;
use skeeks\cms\base\Controller;
use skeeks\modules\cms\form\models\Form;
use skeeks\modules\cms\form\models\FormField;
use skeeks\modules\cms\form\models\FormSendMessage;
use yii\filters\VerbFilter;
use yii\helpers\ArrayHelper;
......@@ -67,14 +68,16 @@ class BackendController extends Controller
//Все проверки прошли, формируем модель отправленного сообщения и сохраняем ее
$modelFormSendMessage = new FormSendMessage();
$modelFormSendMessage->data_values = $model->attributeValues();
$modelFormSendMessage->data_labels = $model->attributeLabels();
$modelFormSendMessage->data = $model->getValues();
$modelFormSendMessage->page_url = \Yii::$app->request->referrer;
$modelFormSendMessage->form_id = $formId;
if ($modelFormSendMessage->save())
{
$modelFormSendMessage->notify();
$response['success'] = true;
$response['message'] = 'Успешно отправлена';
} else
......
<?php
/**
* @author Semenov Alexander <semenov@skeeks.com>
* @link http://skeeks.com/
* @copyright 2010 SkeekS (СкикС)
* @date 19.03.2015
*/
use skeeks\cms\mail\helpers\Html;
/**
* @var $formSendMessage \skeeks\modules\cms\form\models\FormSendMessage
* @var $form \skeeks\modules\cms\form\models\Form
* @var $formField \skeeks\modules\cms\form\models\FormField
*/
?>
<?= Html::beginTag('h1'); ?>
Отправка формы «<?= \yii\helpers\Html::encode($form->name)?>» #<?= $formSendMessage->id; ?>
<?= Html::endTag('h1'); ?>
<?= Html::beginTag('p'); ?>
Форма была заполнена и успешно отправлена со страницы: <?= Html::a($formSendMessage->page_url, $formSendMessage->page_url); ?><br />
Дата и время отправки: <?= \Yii::$app->formatter->asDatetime($formSendMessage->created_at) ?><br />
Уникальный номер сообщения: <?= $formSendMessage->id; ?>
<?= Html::endTag('p'); ?>
<?= Html::beginTag('h3'); ?>
Данные формы:
<?= Html::endTag('h3'); ?>
<?= Html::beginTag('p'); ?>
<? foreach((array) $form->fields() as $formField) : ?>
<? if ($value = \yii\helpers\ArrayHelper::getValue((array) $formSendMessage->data_values, $formField->attribute)) : ?>
<?= Html::beginTag('b'); ?>
<?= $formField->normalName() ?>:
<?= Html::endTag('b'); ?>
<?= Html::encode($value) ?>
<br />
<? endif; ?>
<? endforeach; ?>
<?= Html::endTag('p'); ?>
<?= Html::beginTag('h5'); ?>
Дополнительная информация:
<?= Html::endTag('h5'); ?>
<?= Html::beginTag('p'); ?>
Дополнительные данные по данному сообщению можно посмотреть <?= Html::a('тут', \skeeks\cms\helpers\UrlHelper::construct('form/admin-form-send-message/update', ['id' => $formSendMessage->id])->enableAdmin()->enableAbsolute()->toString()); ?>.
<?= Html::endTag('p'); ?>
\ No newline at end of file
......@@ -34,7 +34,8 @@ class m150307_162740_create_form_send_messages_table extends Migration
'processed_by' => Schema::TYPE_INTEGER . ' NULL', //пользователь который принял заявку
'data' => Schema::TYPE_TEXT . ' NULL', //Данные с формы в серилизованном виде
'data_values' => Schema::TYPE_TEXT . ' NULL', //Данные с формы в серилизованном виде
'data_labels' => Schema::TYPE_TEXT . ' NULL', //Данные с формы в серилизованном виде
'emails' => Schema::TYPE_TEXT . ' NULL', //email на которые были отправлены уведомления
'phones' => Schema::TYPE_TEXT . ' NULL', //Телефоны на которые были отправлены уведомления
......
......@@ -94,7 +94,7 @@ class Form extends Core
/**
* @return \yii\db\ActiveQuery
*/
public function getFormEmails()
public function findFormEmails()
{
return $this->hasMany(FormEmail::className(), ['form_id' => 'id']);
}
......
......@@ -215,8 +215,21 @@ class FormField extends Core
}
/**
* @return string
*/
public function normalName()
{
return $this->
if ($this->name)
{
return (string) $this->name;
}
if ($this->label)
{
return (string) $this->label;
}
return (string) $this->attribute;
}
}
\ No newline at end of file
......@@ -15,6 +15,8 @@ use skeeks\cms\models\behaviors\HasStatus;
use skeeks\cms\models\behaviors\Implode;
use skeeks\cms\models\behaviors\Serialize;
use skeeks\cms\models\Core;
use yii\helpers\ArrayHelper;
use yii\helpers\Html;
/**
* This is the model class for table "{{%form_send_message}}".
......@@ -64,7 +66,7 @@ class FormSendMessage extends Core
Serialize::className() =>
[
'class' => Serialize::className(),
'fields' => ['data', 'data_server', 'data_session', 'data_cookie', 'additional_data', 'data_request']
'fields' => ['data_labels', 'data_values', 'data_server', 'data_session', 'data_cookie', 'additional_data', 'data_request']
],
Implode::className() =>
......@@ -82,7 +84,7 @@ class FormSendMessage extends Core
{
return array_merge(parent::rules(), [
[['created_by', 'updated_by', 'created_at', 'updated_at', 'processed_by', 'status', 'form_id'], 'integer'],
[['data', 'emails', 'phones', 'email_message', 'phone_message', 'data_server', 'data_session', 'data_cookie', 'data_request', 'additional_data'], 'safe'],
[['emails', 'phones', 'email_message', 'phone_message', 'data_server', 'data_session', 'data_cookie', 'data_request', 'additional_data', 'data_labels', 'data_values'], 'safe'],
[['ip'], 'string', 'max' => 32],
[['page_url'], 'string', 'max' => 500],
[['form_id'], 'required'],
......@@ -148,8 +150,45 @@ class FormSendMessage extends Core
/**
* @return \yii\db\ActiveQuery
*/
public function getForm()
public function findForm()
{
return $this->hasOne(FormForm::className(), ['id' => 'form_id']);
return $this->hasOne(Form::className(), ['id' => 'form_id']);
}
/**
* Уведомить всех кого надо и как надо
*/
public function notify()
{
/**
* @var Form $form
*/
$form = $this->findForm()->one();
if ($form)
{
$emails = $form->findFormEmails()->all();
if ($emails)
{
foreach ($emails as $formEmail)
{
//\Yii::$app->mailer->setViewPath(\Yii::$app->getModule('form')->basePath . '/mail');
\Yii::$app->mailer->compose('@skeeks/modules/cms/form/mail/send-message', [
'form' => $form,
'formSendMessage' => $this
])
->setFrom([\Yii::$app->params['supportEmail'] => \Yii::$app->name])
->setTo($formEmail->value)
->setSubject("Отправка формы «{$form->name}» #" . $this->id)
->send();
}
}
}
}
}
\ No newline at end of file
......@@ -52,7 +52,7 @@ class FormValidateModel extends Model
/**
* @return array
*/
public function getValues()
public function attributeValues()
{
$result = parent::rules();
......@@ -66,26 +66,7 @@ class FormValidateModel extends Model
return $result;
}
/**
* @return array
*/
public function getFieldsValues()
{
$result = parent::rules();
foreach ($this->modelForm->fields() as $field)
{
if ($this->getAttribute($field->attribute))
{
$result[$field->attribute] = [
'field' => $field,
'value' => $this->getAttribute($field->attribute)
];
}
}
return $result;
}
/**
* @var array attribute values indexed by attribute names
......@@ -251,7 +232,7 @@ class FormValidateModel extends Model
foreach ($this->modelForm->fields() as $field)
{
$result[$field->attribute] = $field->label;
$result[$field->attribute] = $field->normalName();
}
return $result;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment