public function init() { $this->name = \Yii::t('skeeks/reviews2', "Management reviews"); $this->modelShowAttribute = "id"; $this->modelClassName = Reviews2Message::className(); parent::init(); }
<?php echo $form->field($model, 'user_email')->textInput(); ?> <?php echo $form->field($model, 'user_phone')->textInput(); ?> <?php echo $form->field($model, 'user_city')->textInput(); echo $form->fieldSetEnd(); ?> <?php echo $form->fieldSet(\Yii::t('skeeks/reviews2', 'Processing')); ?> <?php echo $form->fieldSelect($model, 'status', \skeeks\cms\reviews2\models\Reviews2Message::getStatuses()); ?> <?php echo $form->fieldSelect($model, 'processed_by', \yii\helpers\ArrayHelper::map(\skeeks\cms\models\User::find()->active()->all(), 'id', 'displayName')); ?> <?php echo $form->field($model, 'published_at')->widget(\kartik\datecontrol\DateControl::classname(), ['type' => \kartik\datecontrol\DateControl::FORMAT_DATETIME]); ?> <?php echo $form->fieldSetEnd(); ?>
<?php /** * @author Semenov Alexander <*****@*****.**> * @link http://skeeks.com/ * @copyright 2010 SkeekS (СкикС) * @date 14.07.2015 */ /* @var $this yii\web\View */ /* @var $model \skeeks\cms\models\CmsContentElement */ $search = new \skeeks\cms\models\Search(\skeeks\cms\reviews2\models\Reviews2Message::className()); $dataProvider = $search->search(\Yii::$app->request->queryParams); $dataProvider->query->andWhere(['element_id' => $model->id]); ?> <?php echo $this->render('@skeeks/cms/reviews2/views/admin-message/index', ['dataProvider' => $dataProvider, 'searchModel' => $search->getLoadedModel(), 'controller' => \Yii::$app->createController('/reviews2/admin-message')[0], 'isOpenNewWindow' => true]);
public function initDataProvider() { $this->search = new Search(Reviews2Message::className()); $this->dataProvider = $this->search->getDataProvider(); if ($this->enabledPaging == Cms::BOOL_Y) { $this->dataProvider->getPagination()->defaultPageSize = $this->pageSize; $this->dataProvider->getPagination()->pageParam = $this->pageParamName; } else { $this->dataProvider->pagination = false; } if ($this->orderBy) { $this->dataProvider->getSort()->defaultOrder = [$this->orderBy => (int) $this->order]; } return $this; }
<?php /** * @author Semenov Alexander <*****@*****.**> * @link http://skeeks.com/ * @copyright 2010 SkeekS (СкикС) * @date 21.09.2016 */ /* @var $this yii\web\View */ /* @var $searchModel common\models\searchs\Game */ /* @var $dataProvider yii\data\ActiveDataProvider */ $filter = new \yii\base\DynamicModel(['id']); $filter->addRule('id', 'integer'); $filter->load(\Yii::$app->request->get()); if ($filter->id) { $dataProvider->query->andWhere(['id' => $filter->id]); } ?> <? $form = \skeeks\cms\modules\admin\widgets\filters\AdminFiltersForm::begin([ 'action' => '/' . \Yii::$app->request->pathInfo, ]); ?> <?php echo $form->field($searchModel, 'status')->listBox(\yii\helpers\ArrayHelper::merge(['' => null], \skeeks\cms\reviews2\models\Reviews2Message::getStatuses()), ['size' => 1])->setVisible(); ?> <? $form::end(); ?>
<?php echo $this->render('_search', ['searchModel' => $searchModel, 'dataProvider' => $dataProvider]); ?> <?php echo \skeeks\cms\modules\admin\widgets\GridViewStandart::widget(['dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'adminController' => $controller, 'pjax' => $pjax, 'isOpenNewWindow' => @$isOpenNewWindow ? true : false, 'columns' => [['attribute' => 'status', 'class' => \yii\grid\DataColumn::className(), 'filter' => \skeeks\cms\reviews2\models\Reviews2Message::getStatuses(), 'format' => 'raw', 'value' => function (\skeeks\cms\reviews2\models\Reviews2Message $model) { if ($model->status == \skeeks\cms\reviews2\models\Reviews2Message::STATUS_NEW) { $class = "default"; } else { if ($model->status == \skeeks\cms\reviews2\models\Reviews2Message::STATUS_PROCESSED) { $class = "warning"; } else { if ($model->status == \skeeks\cms\reviews2\models\Reviews2Message::STATUS_CANCELED) { $class = "danger"; } else { if ($model->status == \skeeks\cms\reviews2\models\Reviews2Message::STATUS_ALLOWED) { $class = "success"; } } } } return '<span class="label label-' . $class . '">' . \yii\helpers\ArrayHelper::getValue(\skeeks\cms\reviews2\models\Reviews2Message::getStatuses(), $model->status) . '</span>'; }], ['class' => \skeeks\cms\grid\CreatedAtColumn::className(), 'label' => \Yii::t('skeeks/reviews2', 'Added')], ['class' => \skeeks\cms\grid\CreatedByColumn::className()], ['class' => \skeeks\cms\grid\SiteColumn::className()], ['attribute' => 'element_id', 'relation' => 'element', 'class' => \skeeks\cms\grid\CmsContentElementColumn::className()], ['filter' => \skeeks\cms\models\CmsContent::getDataForSelect(), 'attribute' => 'content_id', 'class' => \yii\grid\DataColumn::className(), 'value' => function (\skeeks\cms\reviews2\models\Reviews2Message $model) { return $model->element->cmsContent->name; }], ['filter' => \Yii::$app->reviews2->ratings, 'attribute' => 'rating', 'class' => \yii\grid\DataColumn::className()]]]); ?> <? $pjax::end(); ?>
public function actionSubmit() { $rr = new RequestResponse(); $model = new Reviews2Message(); if ($rr->isRequestOnValidateAjaxForm()) { return $rr->ajaxValidateForm($model); } if ($rr->isRequestAjaxPost()) { $model->scenario = Reviews2Message::SCENARIO_SITE_INSERT; $model->page_url = \Yii::$app->request->referrer; if ($model->load(\Yii::$app->request->post())) { //Проверка на максимальное количество отзывов к одному посту от одного пользователя. $messagesFind = Reviews2Message::find(); if (\Yii::$app->user->isGuest) { $messagesFind->andWhere(['ip' => \Yii::$app->request->userIP])->andWhere(['or', ['created_by' => null], ['created_by' => '']]); } else { $messagesFind->andWhere(['created_by' => \Yii::$app->user->identity->id]); } $messagesFind2 = clone $messagesFind; $messagesFind->andWhere(['status' => Reviews2Message::STATUS_ALLOWED])->andWhere(['element_id' => $model->element_id]); if (\Yii::$app->reviews2->maxCountMessagesForUser != 0) { if ($messagesFind->count() >= \Yii::$app->reviews2->maxCountMessagesForUser) { $rr->success = false; $rr->message = \Yii::t('skeeks/reviews2', "You have already added a review for this post earlier."); return $rr; } } //Проверка частоты добавления отзывов if (\Yii::$app->reviews2->securityEnabledRateLimit == Cms::BOOL_Y) { $messagesFind2 = Reviews2Message::find(); if (\Yii::$app->user->isGuest) { $messagesFind2->andWhere(['ip' => \Yii::$app->request->userIP]); } else { $messagesFind2->andWhere(['created_by' => \Yii::$app->user->identity->id]); } $lastTime = \Yii::$app->formatter->asTimestamp(time()) - (int) \Yii::$app->reviews2->securityRateLimitTime; $messagesFind2->andWhere(['>=', 'created_at', $lastTime]); //print_r($messagesFind2->createCommand()->rawSql);die; if ($messagesFind2->count() >= \Yii::$app->reviews2->securityRateLimitRequests) { $rr->success = false; $rr->message = \Yii::t('skeeks/reviews2', "You too often add reviews."); return $rr; } } if ($model->save()) { $rr->success = true; if (\Yii::$app->reviews2->enabledBeforeApproval == Cms::BOOL_Y) { $rr->message = \Yii::$app->reviews2->messageSuccessBeforeApproval; } else { $rr->message = \Yii::$app->reviews2->messageSuccess; //Отключена предмодерация, сразу публикуем $model->status = Reviews2Message::STATUS_ALLOWED; $model->save(); } $model->notifyCreate(); } else { $rr->success = false; $rr->message = \Yii::t('skeeks/reviews2', "Review not added") . ": " . implode(",", $model->getFirstErrors()); } } else { $rr->success = false; $rr->message = \Yii::t('skeeks/reviews2', "Review not added") . ": " . implode(",", $model->getFirstErrors()); } } return $rr; }