Files
Admin Nasledstvo ac168868ee Initial import
2026-05-01 20:52:04 +03:00

141 lines
6.2 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
use app\models\Campaigns;
use app\models\History;
use app\models\Partner;
use app\services\Auth;
use app\widgets\FormWidget;
use app\widgets\services\Includes;
use app\widgets\TableWidget;
$partnerUser = Auth::userPartner();
$actions = [
'edit' => 'Редакция на кампания',
'delete' => 'Изтриване на кампания',
'new' => 'Нова кампания'
];
$tab = $_GET['tab'] ?? 'main';
TableWidget::widget([
'filter' => [
[
'event_dates' => ['Дата', 'c2 fDatepicker'],
'title' => ['Заглавие на кампанията', 'c4'],
'is_for_publish' => ['В публ. портал', 'c2', [1 => 'да', 'null' => 'не']],
'is_active' => ['Публикувано', 'c2', [1 => 'да', 'null' => 'не']]
],
],
'top' => [
'title' => 'Кампании',
'data' => [
'index/dashboard' => 'Начало',
'website/expositions' => 'Уеб портал',
]
],
'actions' => $actions,
'th' => [
'№' => 'c1 text-right',
'Заглавие' => '',
'Дати на кампанията' => '',
'Партньор' => 'c4',
'История' => 'c0 ct',
'В страница на партньор' => 'c1 ct',
'В публ. портал' => 'c0 ct',
'Публикувано на публ. портал' => 'c1 ct',
'В избрани' => 'c0 ct'
],
'data' => Campaigns::find()->where(Yii::$app->getFilterData())->andWhere(['partner_id' => $partnerUser->partner_id])->orderBy(['id' => SORT_DESC])->loop([
'id',
function (Campaigns $model) {
return '<a href="?o=w&id=' . $model->id . '">' . $model->title . '</a>';
},
function (Campaigns $model) {
$event_dates = '';
foreach (explode(',', $model->event_dates) as $d) {
$event_dates .= '<div class="badge-dark right3">' . date('d.m.Y', strtotime($d)) . '</div>';
}
return '<div class="flex-wrap">' . $event_dates . '</div>';
},
function (Campaigns $model) {
if ($model->partner)
return $model->partner->name;
},
function (Campaigns $model) {
return '<i data-table="campaigns" data-id="' . $model->id . '" class="la la-history historyButton"></i>';
},
function (Campaigns $model) {
return $model->statusSwitch('on_partner_page', null, ['Кампанията е публикувана в сайта на партньора', 'Кампанията е махната от сайта на партньора'], null, 'campaigns');
},
function (Campaigns $model) {
return $model->statusSwitch('is_for_publish', null, ['Кампанията е готова за публикуване', 'Кампанията все още не е готова за публикуване']);
},
function (Campaigns $model) {
return $model->is_active ? '<span style="color: green">да (' . $model->formatDate($model->publish_date) . ')</span>' : '<span style="color: darkred">не</span>';
},
function (Campaigns $model) {
return $model->statusSwitch('partner_page_selected', null, ['Кампанията е добавена в избрани', 'Кампанията е добавена в избрани'], null, 'campaigns');
},
], $_GET['p'] ?? 1, 30)
]);
FormWidget::widget([
'top' => [
'title' => 'Нова кампания',
'title_edit' => 'Редакция на кампания',
'data' => [
'index/dashboard' => 'Начало',
'website/expositions' => 'Уеб портал',
'website/campaigns' => 'Кампании'
],
],
'tabs' => [
'main' => '<i class="la la-database"></i> Основни данни',
'ts_en' => '<i class="lg lg-en"></i> Превод английски'
],
'writeView' => "website/tabs/" . Includes::tab($tab) . "/campaigns_w",
'model' => Campaigns::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->{"text_short"}))
return ["text_short" => 'Моля, въведете кратък текст на кампанията'];
if (empty($p->{"text"}))
return ["text" => 'Моля, въведете пълен текст на кампанията'];
if (!empty($p->{"stream_url"})) {
if (empty($p->{"stream_access"}))
return ["stream_access" => 'Моля, изберете стрийминг достъп'];
}
}
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" => 'Моля, въведете пълен текст на кампанията'];
}
return null;
},
'postService' => function ($p, Campaigns $model) use ($partnerUser) {
$model->setPostDataToModel();
if ($partnerUser)
$model->partner_id = $partnerUser->partner_id;
$model->save();
\app\models\Articles::updateArticle($model);
History::addNew($model->id, 'campaigns', Auth::userPartner()->getFullName() . ' - Партньор', !empty($_GET['id']));
Yii::$app->flash('success', isset($_GET['id']) ? 'Кампанията е актуализирана успешно' : 'Кампанията е създадена успешно');
$model->smartRedirect();
}
]);