public function actionParams($modal = null)
 {
     $paramsPath = Yii::getAlias($this->module->paramsPath);
     $paramsFile = $paramsPath . DIRECTORY_SEPARATOR . 'params.php';
     $params = $this->module->params;
     $model = new ObjectModel(PlatformParams::className());
     $model->setAttributes($params);
     if ($model->load(Yii::$app->request->post())) {
         if ($model->validate() && Yii::$app->request->getBodyParam('task') !== 'refresh') {
             FileHelper::createDirectory($paramsPath);
             try {
                 file_put_contents($paramsFile, '<?php return ' . var_export($model->toArray(), true) . ';');
                 @chmod($paramsFile, 0777);
                 Yii::$app->session->setFlash(Alert::TYPE_SUCCESS, Yii::t('gromver.platform', 'Configuration saved.'));
                 if ($modal) {
                     ModalIFrame::refreshParent();
                 }
             } catch (\Exception $e) {
                 Yii::$app->session->setFlash(Alert::TYPE_DANGER, $e->getMessage());
             }
         }
     }
     if ($modal) {
         Yii::$app->grom->applyModalLayout();
     }
     return $this->render('params', ['model' => $model]);
 }
 /**
  * @param $user User
  * @return ObjectModel | null
  */
 protected function extractParamsModel($user)
 {
     if ($this->module->userParamsClass) {
         try {
             $attributes = $user->getParamsArray();
         } catch (InvalidParamException $e) {
             $attributes = [];
         }
         $model = new ObjectModel($this->module->userParamsClass);
         $model->setAttributes($attributes);
         return $model;
     }
 }
 public function actionParams($type = 'main', $modal = null)
 {
     /*$paramsPath = Yii::getAlias($this->module->paramsPath);
             $paramsFile = $paramsPath . DIRECTORY_SEPARATOR . 'params.php';
     
             $params = $this->module->params;
     
             $model = new ObjectModel(MainParams::className());
             $model->setAttributes($params);*/
     /** @var \gromver\platform\core\components\ParamsObject $params */
     $params = Yii::$app->paramsManager->{$type};
     $model = new ObjectModel($params);
     $model->setAttributes($params->toArray());
     if ($model->load(Yii::$app->request->post())) {
         if ($model->validate() && Yii::$app->request->getBodyParam('task') !== 'refresh') {
             try {
                 $params->load($model->toArray())->save();
                 Yii::$app->session->setFlash(Alert::TYPE_SUCCESS, Yii::t('gromver.platform', 'Configuration saved.'));
                 if ($modal) {
                     ModalIFrame::refreshParent();
                 }
             } catch (\Exception $e) {
                 Yii::$app->session->setFlash(Alert::TYPE_DANGER, $e->getMessage());
             }
         }
     }
     if ($modal) {
         Yii::$app->applyModalLayout();
     }
     $items = [];
     foreach (Yii::$app->paramsManager->getParamsInfo() as $itemType => $info) {
         /** @var \gromver\platform\core\components\ParamsObject $params */
         $params = Yii::$app->paramsManager->{$itemType};
         $items[] = ['label' => $params->paramsName(), 'url' => ['params', 'type' => $itemType, 'modal' => $modal], 'active' => $itemType == $type];
     }
     return $this->render('params', ['paramsMenuItems' => $items, 'model' => $model]);
 }
 public function run($modal = null)
 {
     if (!($widget_id = Yii::$app->request->getBodyParam('widget_id'))) {
         throw new BadRequestHttpException(Yii::t('gromver.platform', "Widget ID isn't specified"));
     }
     if (!($widget_class = Yii::$app->request->getBodyParam('widget_class'))) {
         throw new BadRequestHttpException(Yii::t('gromver.platform', "Widget Class isn't specified"));
     }
     if (($widget_context = Yii::$app->request->getBodyParam('widget_context')) === null) {
         throw new BadRequestHttpException(Yii::t('gromver.platform', "Widget Context isn't specified"));
     }
     $selected_context = Yii::$app->request->getBodyParam('selected_context', $widget_context);
     $task = Yii::$app->request->getBodyParam('task');
     if (($url = Yii::$app->request->getBodyParam('url')) === null) {
         throw new BadRequestHttpException(Yii::t('gromver.platform', "Widget page url isn't specified"));
     }
     //$url = Yii::$app->request->getBodyParam('url', Yii::$app->request->getReferrer());
     if ($task == 'delete') {
         if (Yii::$app->request->getBodyParam('bulk-method')) {
             foreach (WidgetConfigPersonal::find()->where('widget_id=:widget_id AND context>=:context AND language=:language', [':widget_id' => $widget_id, ':context' => $selected_context, ':language' => Yii::$app->language])->each() as $configModel) {
                 $configModel->delete();
             }
         } elseif ($configModel = WidgetConfigPersonal::findOne(['widget_id' => $widget_id, 'context' => $selected_context, 'language' => Yii::$app->language])) {
             $configModel->delete();
         }
         if ($modal) {
             ModalIFrame::refreshParent();
         }
     }
     $widget_config = Yii::$app->request->getBodyParam('widget_config', '[]');
     $widgetConfig = Json::decode($widget_config);
     $widgetConfig['id'] = $widget_id;
     $widgetConfig['context'] = $selected_context;
     $widgetConfig['skipInit'] = true;
     /** @var \gromver\platform\basic\modules\widget\widgets\Widget $widget */
     $widget = new $widget_class($widgetConfig);
     $model = new ObjectModel($widget);
     if (($task == 'save' || $task == 'refresh') && $model->load(Yii::$app->request->post())) {
         if ($model->validate() && $task == 'save') {
             $configModel = WidgetConfigPersonal::findOne(['widget_id' => $widget_id, 'context' => $selected_context, 'language' => Yii::$app->language]) or $configModel = new WidgetConfigPersonal();
             $configModel->loadDefaultValues();
             $configModel->widget_id = $widget_id;
             $configModel->widget_class = $widget_class;
             $configModel->context = $selected_context;
             $configModel->url = $url;
             $configModel->setParamsArray($model->toArray());
             $configModel->save();
             if (Yii::$app->request->getBodyParam('bulk-method')) {
                 foreach (WidgetConfigPersonal::find()->where('widget_id=:widget_id AND context>:context AND language=:language', [':widget_id' => $widget_id, ':context' => $selected_context, ':language' => Yii::$app->language])->each() as $configModel) {
                     /** @var $configModel WidgetConfigPersonal */
                     $configModel->delete();
                 }
             }
             if ($modal) {
                 ModalIFrame::refreshParent();
             } else {
                 return $this->redirect($url);
             }
         }
     }
     if ($modal) {
         Yii::$app->grom->applyModalLayout();
     }
     return $this->controller->render($this->view, ['model' => $model, 'widget' => $widget, 'widget_id' => $widget_id, 'widget_class' => $widget_class, 'widget_config' => $widget_config, 'widget_context' => $widget_context, 'selected_context' => $selected_context, 'url' => $url]);
 }
 /**
  * @param $value \gromver\models\fields\BaseField
  * @return array|null
  */
 protected function validateValue($value)
 {
     if (!$this->model->validate()) {
         return [$this->message ? $this->message : Yii::t('gromver.models', 'Field {attribute} contains no valid items.'), []];
     }
 }
Beispiel #6
0
 /**
  * Возвращает html кнопки настройки виджета, или false, если у пользователя нет доступа
  * @return string | bool
  */
 public function widgetConfigControl()
 {
     if (!$this->hasConfigureAccess()) {
         return false;
     }
     $objectModel = new ObjectModel($this->className());
     $objectModel->setAttributes($this->_config);
     return ModalIFrame::widget(['options' => ['class' => 'btn btn-default', 'title' => Yii::t('gromver.platform', 'Configure widget')], 'label' => '<i class="glyphicon glyphicon-cog"></i>', 'url' => [$this->getConfigureRoute(), 'modal' => 1], 'formOptions' => ['method' => 'post', 'params' => ['url' => Yii::$app->request->getAbsoluteUrl(), 'widget_id' => $this->id, 'widget_class' => $this->className(), 'widget_context' => $this->context, 'widget_config' => Json::encode($objectModel->toArray(array_keys($this->_config)))]]]);
 }
Beispiel #7
0
 public function widgetConfigControl()
 {
     ob_start();
     ob_implicit_flush(false);
     $formId = $this->getId() . '-form';
     ModalIFrame::begin(['modalOptions' => ['header' => Yii::t('gromver.platform', 'Widget "{name}" (ID: {id})', ['name' => $this->className(), 'id' => $this->id]), 'size' => Modal::SIZE_LARGE], 'buttonOptions' => ['class' => 'btn btn-default', 'tag' => 'button', 'onclick' => "jQuery('#{$formId}').submit()", 'title' => Yii::t('gromver.platform', 'Configure widget')]]);
     echo Html::beginForm(['/grom/widget/default/configure', 'modal' => 1], 'post', ['id' => $formId]);
     echo Html::hiddenInput('url', Yii::$app->request->getAbsoluteUrl());
     echo Html::hiddenInput('widget_id', $this->id);
     echo Html::hiddenInput('widget_class', $this->className());
     echo Html::hiddenInput('widget_context', $this->context);
     $objectModel = new ObjectModel($this->className());
     $objectModel->setAttributes($this->_config);
     echo Html::hiddenInput('widget_config', Json::encode($objectModel->toArray(array_keys($this->_config))));
     echo '<i class="glyphicon glyphicon-cog"></i>';
     echo Html::endForm();
     ModalIFrame::end();
     return ob_get_clean();
 }