Резервация'; if ($_GET['type'] == 'online') $tabs['online'] = ' Стрийминг'; $tabs['main'] = ' Основни данни'; $tabs['ts_en'] = ' Превод английски'; $typeTitle = Events::eventTypes($_GET['type']); $typeTitle = $typeTitle ? " [ $typeTitle ]" : ""; } if (!empty($_GET['id'])) { if ($model->type == 'online') $tabs['online'] = ' Стрийминг'; if ($model->type == 'booking') $tabs['booking'] = ' Резервация'; $tabs['main'] = ' Основни данни'; $tabs['ts_en'] = ' Превод английски'; $typeTitle = Events::eventTypes($model->type); $typeTitle = $typeTitle ? " [ $typeTitle ]" : ""; } TableWidget::widget([ 'filter' => [ [ 'type' => ['Вид събитие', 'c3', Events::eventTypes()], 'event_dates' => ['Дата', 'c2 fDatepicker'], 'title' => ['Заглавие на събитието', 'c4'], 'partner_id' => ['Организация', 'c3', Partner::partnerList()], 'is_for_publish' => ['За публикувне', 'c1', [1 => 'да', 'null' => 'не']], 'is_active' => ['Публикувано', 'c1', [1 => 'да', 'null' => 'не']] ], ], 'top' => [ 'title' => 'Събития', 'data' => [ 'index/dashboard' => 'Начало', 'web-portal/expositions' => 'Уебпортал', ] ], 'actions' => [ 'new' => 'Ново събитие', 'edit' => 'Редакция на събитие', 'delete' => 'Изтриване на събитие' ], 'th' => [ '№' => 'c1 text-right', 'Заглавие' => 'c3', 'Вид събитие' => '', 'Достъп' => 'c0 ct', 'Дати на събитието' => 'c4', 'Партньор' => 'c3', 'Тематични зони' => 'c0 ct', 'История' => 'c0 ct', 'За публикуване' => 'c0 ct', 'Публикуване' => 'c0 ct' ], 'data' => Events::find()->where(Yii::$app->getFilterData('or'))->orderBy(['id' => SORT_DESC])->loop([ 'id', function (Events $model) { return '' . $model->title . ''; }, function (Events $model) { return str_replace('събитие', '', Events::eventTypes($model->type)); }, function (Events $model) { $access = [1 => 'частен достъп', 2 => 'свободно']; switch ($model->type) { case 'online': return !empty($access[$model->stream_access]) ? $access[$model->stream_access] : 'не определен'; case 'booking': return 'с резервация'; case 'simple': return 'свободно'; } }, function (Events $model) { $event_dates = ''; foreach (explode(',', $model->event_dates) as $d) { $event_dates .= '
' . date('d.m.Y', strtotime($d)) . '
'; } return '
' . $event_dates . '
'; }, function (Events $model) { if ($model->partner) return $model->partner->name; }, function (Events $model) { return ''; }, function (Events $model) { return ''; }, function (Events $model) { return $model->is_for_publish ? ''. ((!$model->is_active) ? 'да' : 'Публикувано').'' : 'не'; }, function (Events $model) { return $model->statusSwitch('is_active', null, ['Събитието е публикувано на сайта', 'Събитието е свалено от сайта']); } ], $_GET['p'] ?? 1, 30) ]); FormWidget::widget([ 'top' => [ 'title' => 'Ново събитие' . $typeTitle, 'title_edit' => 'Редакция на събитие' . $typeTitle, 'data' => [ 'index/dashboard' => 'Начало', 'web-portal/expositions' => 'Уебпортал', 'web-portal/events' => 'Събития' ], ], 'tabs' => $tabs ?? [], 'writeView' => empty($_GET['id']) && empty($_GET['type']) ? "web-portal/default/events_w" : "web-portal/tabs/" . Includes::tab($tab) . "/events_w", 'model' => Events::class, 'validation' => function ($p) use ($tab) { if ($tab == 'main') { if (empty($p->{'event_dates'})) return ["event_dates" => 'Моля, въведете дати на събитието']; if (empty($p->{"title"})) return ["title" => 'Моля, въведете заглавие на събитието']; if (empty($p->{"partner_id"})) return ["partner_id" => 'Моля, изберете организация']; if (empty($p->{"text_short"})) return ["text_short" => 'Моля, въведете кратък текст на събитието']; if (empty($p->{"text"})) return ["text" => 'Моля, въведете пълен текст на събитието']; } else if (Includes::inLocales($tab)) { if (empty($p->{$tab . "_title"})) return [$tab . "_title" => 'Моля, въведете заглавие на събитието']; if (empty($p->{$tab . "_text_short"})) return [$tab . "_text_short" => 'Моля, въведете кратък текст на събитието']; if (empty($p->{$tab . "_text"})) return [$tab . "_text" => 'Моля, въведете пълен текст на събитието']; } else if ($tab == 'booking') { if (empty($p->{'daily_open_time'})) return ['daily_open_time' => 'Моля, попълнете вярно времето за дневно посещение']; if (empty($p->{'max_visitors'})) return ['max_visitors' => 'Моля, попълнете максимален брой посетители за деня']; } else if ($tab == 'online') { if (empty($p->{'daily_open_time'})) return ['daily_open_time' => 'Моля, изберете време, в което стийминга ще бъде излъчен']; if (empty($p->{"stream_url"})) return ["stream_url" => 'Моля, попълнете стрийминг линк']; if ($p->{"stream_access"} == 1 && $p->{"stream_purchase_type"} == 'individual_price' && empty($p->{"stream_price"})) return ['stream_price' => 'Моля, попълнете индивидуална цена']; } return null; }, 'postService' => function ($p, Events $model) { $model->setPostDataToModel(); if (!empty($p->{'stream_access'})) { if ($p->{'stream_access'} == 2) { $model->stream_purchase_type = null; $model->stream_price = null; } else { if ($model->stream_purchase_type == 'subscription') { $model->stream_price = null; } } } $model->setFirstLast(); $model->save(); if ($model->type == 'booking') { if(!empty($p->{'price_object'})) { foreach ($p->{'price_object'} as $key => $object) { $keyArr = explode('_', $key); $priceObject = $keyArr[0] == 'id' ? PriceObject::findOne($keyArr[1]) : new PriceObject(); $priceObject->text_bg = $object['text_bg']; $priceObject->text_en = $object['text_en']; $priceObject->price = $object['price']; $priceObject->event_id = $model->id; $priceObject->save(); } } } \app\models\Articles::updateArticle($model); History::addNew($model->id, 'events', Auth::userAdminGlobal()->getFullName() . ' - Глобален администратор', !empty($_GET['id'])); Yii::$app->flash('success', isset($_GET['id']) ? 'Събитието е актуализирано успешно' : 'Събитието е създадено успешно'); $model->smartRedirect(); } ]);