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

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

parents 9ace5855 7a13e417
......@@ -2,6 +2,7 @@
namespace common\components;
use common\modules\triggers\components\conditions\conditions\CheckPresenceTime;
use common\modules\triggers\components\conditions\conditions\CheckScrolling;
use Yii;
use yii\filters\AccessControl;
use yii\web\Controller;
......@@ -62,6 +63,8 @@ abstract class BaseController extends Controller
public function beforeAction($action)
{
CheckPresenceTime::init()->initScript();
CheckScrolling::init()->initScript();
/*if(substr($currentUrl, -1) == '/' && $currentUrl!="/") {
$urlWithoutSlash = substr($currentUrl, 0, -1);
return $this->redirect($urlWithoutSlash,true,301);
......
<?php
/**
* Created by PhpStorm.
* User: PHOENIX
* Date: 18.02.16
* Time: 17:07
*/
namespace common\modules\triggers\components\conditions\conditions;
use common\modules\messageTemplate\components\Templates;
use common\modules\messageTemplate\models\MessageTemplate;
use common\modules\triggers\components\conditions\vendor\ConditionBase;
use common\modules\triggers\components\conditions\vendor\ConditionInterface;
use common\modules\triggers\models\TriggerCondition;
use common\modules\triggers\models\TriggerParam;
use common\modules\triggers\models\TriggerSchedule;
use common\modules\triggers\models\TriggerTrigger;
use yii\web\BadRequestHttpException;
class CheckScrolling extends ConditionBase implements ConditionInterface {
const CONDITION_ID=9;
public $name = 'Скроллинг страницы';
public $params=[];
/**
* @param null|string $conditionName
* @return $this mixed
*/
public static function init($conditionName=__CLASS__){
return parent::init($conditionName);
}
public function initScript(){
// Получили список всех активных (актуальных) триггеров
/** @var TriggerTrigger[] $actualTriggers */
$actualTriggers = TriggerTrigger::getActualTriggers(self::CONDITION_ID);
// Перебираем их в цикле
foreach($actualTriggers as $trigger) {
// Получили условия триггера на итерации
$conditions = TriggerCondition::find()->where(['trigger_id' => $trigger->getPrimaryKey()])->all();
// Перебираем все условия триггера на итерации
foreach($conditions as $condition) {
// Пытаемся получить параметр URL в условии
/** @var TriggerParam $paramUrl */
$paramUrl = TriggerParam::find()->where(['condition_id'=>$condition->getPrimaryKey(), 'key'=>'url'])->one();
// Пытаемся получить параметр процента на условии
$paramPercent = TriggerParam::find()->where(['condition_id'=>$condition->getPrimaryKey(), 'key'=>'percent'])->one();
// Если сработали условия что триггер есть, у него указаны время и URL и при этом он является триггером ДАННОГО типа
echo (
$paramUrl!==null
) ? '1' : '0';
if (
$condition->condition_id==self::CONDITION_ID &&
$paramUrl!==null &&
$paramUrl->value==\Yii::$app->request->getUrl() &&
$paramPercent!==null &&
!\Yii::$app->user->isGuest
) {
$view = \Yii::$app->controller->view;
// Создаем скрипт
$script ='var initiated = false; $(document).scroll(function() {
var percent='.((int)$paramPercent->value).';
var percent_value = ($(document).height()/100)*percent;
if ($(document).scrollTop()>=percent_value && initiated==false) {
$.ajax({
url: "/triggers/default/inittrigger",
method: "GET",
async: false,
data: {
id: '.$trigger->getPrimaryKey().'
},
});
initiated=true;
}
});';
// Регистрируем его
$view->registerJs($script, $view::POS_READY);
}
}
}
}
/**
* @param $time
* @return bool
*/
public function check($time){
return false;
}
}
\ No newline at end of file
......@@ -18,6 +18,19 @@ return [
'user-unsuccessfully-completed-the-test' => [
'class' => 'common\modules\triggers\components\conditions\conditions\UserUnsuccessfullyCompletedTheTest',
],
'user-check-scrolling' => [
'class' => 'common\modules\triggers\components\conditions\conditions\CheckScrolling',
'params' => [
'percent' => [
'placeholder' => 'Процент скролла',
'type' => 'text'
],
'url' => [
'placeholder' => 'Ссылка',
'type' => 'text'
]
]
],
'check-clicking-on-the-link' => [
'class' => 'common\modules\triggers\components\conditions\conditions\CheckClickingOnTheLink',
'params' => [
......
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