Commit 27cdf066 authored by Олег Гиммельшпах's avatar Олег Гиммельшпах

Merge branch 'master' of git.task-on.com:ktask/task-on.com

parents bf29c8f9 e9a78af8
$(document).on('click', 'a.add_condition', function() {
var id = $(this).data('id');
var container = $(this).closest('div.btn-group').parent().children('div.conditions-block');
$.ajax({
url: '/triggers/trigger-admin/getconditionhtml',
data: {
id: id
},
method: 'GET',
success: function(response) {
var result = JSON.parse(response);
container.append(result);
}
})
});
$(document).on('click', 'button.add-and-condition', function() {
var container = $(this).closest('table').children('tbody');
$.ajax({
url: '/triggers/trigger-admin/getandconditionhtml',
success: function(response) {
var result = JSON.parse(response);
container.append(result);
}
})
});
......@@ -65,8 +65,9 @@ class Conditions {
*/
public function getConditions(){
$data = array();
foreach(self::$config as $condition) {
foreach(self::$config as $key=>$condition) {
$class = $condition['class']::init();
$class->config = self::$config[$key];
$data[$class::CONDITION_ID] = $class;
}
return $data;
......@@ -78,11 +79,27 @@ class Conditions {
* @return null
*/
public function getConditionById($id){
foreach(self::$config as $condition) {
foreach(self::$config as $key=>$condition) {
$class = $condition['class']::init();
$class->config = self::$config[$key];
if ($class::CONDITION_ID==$id)
return $class;
}
return null;
}
/**
* @return string
*/
public function getControlArea(){
$html = '<div class="conditions-block"></div>';
$html .= '<div class="btn-group" role="group">';
$html .= '<button type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><i class="glyphicon glyphicon-plus"></i></button>';
$html .= '<ul class="dropdown-menu">';
foreach(Conditions::init()->getConditions() as $id=>$condition)
$html .= '<li><a href="#" data-id="'.$id.'" class="add_condition">'.$condition->getName().'</a></li>';
$html .= '</ul>';
$html .= '</div>';
return $html;
}
}
\ No newline at end of file
<?php
namespace common\modules\triggers\components\conditions\conditions;
use common\modules\triggers\components\conditions\vendor\ConditionBase;
use common\modules\triggers\components\conditions\vendor\ConditionInterface;
class CheckClickingOnTheLink extends ConditionBase implements ConditionInterface {
const CONDITION_ID = 2;
public $name = 'Был произведен переход по ссылке';
/**
* @param null|string $conditionName
* @return $this mixed
*/
public static function init($conditionName=__CLASS__){
return parent::init($conditionName);
}
}
\ No newline at end of file
<?php
return [
'check-email-to-opening' => [
'class' => 'common\modules\triggers\components\conditions\conditions\CheckEmailToOpening'
'class' => 'common\modules\triggers\components\conditions\conditions\CheckEmailToOpening',
],
'check-clicking-on-the-link' => [
'class' => 'common\modules\triggers\components\conditions\conditions\CheckClickingOnTheLink',
'params' => [
'link' => [
'placeholder' => 'Ссылка',
'type' => 'text'
]
]
]
];
\ No newline at end of file
......@@ -8,10 +8,13 @@
namespace common\modules\triggers\controllers;
use common\modules\triggers\components\conditions\Conditions;
use common\modules\triggers\components\conditions\vendor\ConditionBase;
use Yii;
use common\components\AdminController;
use common\modules\triggers\models\TriggerTrigger;
use yii\data\ActiveDataProvider;
use yii\helpers\Json;
use yii\web\NotFoundHttpException;
class TriggerAdminController extends AdminController {
......@@ -24,11 +27,29 @@ class TriggerAdminController extends AdminController {
'Create' => 'Добавление триггера',
'Update' => 'Редактирование триггера',
'Delete' => 'Удаление триггера',
'Getconditionhtml' => 'Получаем html блок с условием',
'Getandconditionhtml' => 'Получаем html новой строки с условиями',
'Testing' => 'Testing page'
];
}
public function actionGetandconditionhtml(){
return Json::encode('<tr><td>'.Conditions::init()->getControlArea().'</td></tr>');
}
public function actionGetconditionhtml($id){
$condition = Conditions::init()->getConditionById($id);
$result = $this->renderPartial(
'condition-html',
[
'object' => $condition
]
);
return Json::encode($result);
}
public function actionTesting(){
return $this->render(
'testing'
......
<?php
use \common\modules\triggers\components\conditions\Conditions;
Yii::$app->controller->view->registerJsFile('/js/triggers/conditions/admin-block.js');
// Формируем html будущей таблицы, открыли тег
$table = '<table class="table table-bordered">';
// Формируем тело будущей таблицы
$table .= '<tbody>';
$table .= '<tr>';
$table .= '<td>'.Conditions::init()->getControlArea().'</td>';
$table .= '<tr>';
$table .= '</tbody>';
// Формируем футер
$table .= '<tfoot>';
$table .= '<td><button type="button" class="btn btn-primary add-and-condition">Добавить условие "И"</button></td>';
$table .= '</tfoot>';
// Закрываем таблицу
$table .= '</table>';
return [
'activeForm' => [
'id' => 'trigger-form'
],
'elements' => [
'table' => $table,
'active' => [
'type' => 'checkbox'
],
......@@ -13,7 +34,7 @@ return [
],
'name' => [
'type' => 'text',
'class' => 'form-control'
'class' => 'form-control',
],
'description' => [
'type' => 'textarea',
......
......@@ -23,6 +23,8 @@ use common\modules\users\models\User;
*/
class TriggerTrigger extends \yii\db\ActiveRecord
{
public $conditions;
/**
* @inheritdoc
*/
......@@ -60,6 +62,7 @@ class TriggerTrigger extends \yii\db\ActiveRecord
'date_create' => 'Дата создания',
'timeout' => 'Задержка перед выполнением (секунд)',
'message_template_id' => 'Шаблон письма',
'conditions' => 'Шаблон письма',
];
}
......
<?php use \common\modules\triggers\components\conditions\Conditions; ?>
<div class="alert alert-info alert-dismissible" role="alert">
<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<strong>Условие: <?php echo $object->getName(); ?></strong>
<?php
foreach($object->getParams() as $param) {
echo $param;
}
?>
</div>
\ No newline at end of file
<?php
use yii\db\Migration;
use yii\db\Schema;
class m160201_134526_trigger_params_table extends Migration
{
// public function up()
// {
//
// }
//
// public function down()
// {
// echo "m160201_134526_trigger_params_table cannot be reverted.\n";
//
// return false;
// }
// Use safeUp/safeDown to run migration code within a transaction
public function safeUp()
{
$this->createTable(
'trigger_param',
[
'id' => Schema::TYPE_PK,
'condition_id' => Schema::TYPE_INTEGER.' NOT NULL',
'key' => Schema::TYPE_TEXT,
'value' => Schema::TYPE_TEXT
]
);
$this->addColumn(
'trigger_condition',
'condition_id',
Schema::TYPE_INTEGER.' NOT NULL'
);
$this->addForeignKey(
'fk_trigger_param_condition',
'trigger_param', 'condition_id',
'trigger_condition', 'id'
);
}
public function safeDown()
{
$this->dropForeignKey(
'fk_trigger_param_condition',
'trigger_param'
);
$this->dropColumn(
'trigger_condition',
'condition_id'
);
$this->dropTable('trigger_param');
}
}
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 to comment