Initial import

This commit is contained in:
Admin Nasledstvo
2026-05-01 20:52:04 +03:00
commit ac168868ee
10028 changed files with 2337954 additions and 0 deletions
@@ -0,0 +1,79 @@
<?php
Yii::$app->controller->pageTitle = 'CMS администратори';
use app\models\UserAdminCms;
use app\widgets\FormWidget;
use app\widgets\TableWidget;
TableWidget::widget([
'top' => [
'title' => 'CMS администратори',
'data' => [
'index/dashboard' => 'Начало',
'user/admin-global' => 'Потребители'
]
],
'actions' => [
//'new' => 'Нов CMS админ',
'edit' => 'Редакция на CMS админ',
'delete' => 'Изтриване на CMS админ'
],
'th' => [
'№' => 'c1 text-right',
'Ел. поща' => '',
'Име' => '',
'Активен' => 'c0 ct'
],
'data' => UserAdminCms::find()->orderBy(['id' => SORT_DESC])->loop([
'id',
'email_login',
'fullName',
function (UserAdminCms $model) {
return $model->statusSwitch('is_active');
}
], $_GET['p'] ?? 1, 30)
]);
FormWidget::widget([
'top' => [
'title' => 'Нов CMS администратор',
'title_edit' => 'Редакция на CMS администратор',
'data' => [
'index/dashboard' => 'Начало',
'user/admin-cms' => 'CMS администратори'
]
],
'writeView' => 'user/write/admin-cms_w',
'model' => UserAdminCms::class,
'validation' => function ($p) {
if (isset($p->profile_update)) {
if (empty($p->{'email_login'}))
return ['email_login' => 'Моля, въведете ел. поща'];
if (!filter_var($p->{'email_login'}, FILTER_VALIDATE_EMAIL))
return ['email_login' => 'Моля, въведете валиден имейл адрес'];
if (UserAdminCms::recordExists('email_login', $p->{'email_login'}))
return ['email_login' => 'Този имейл адрес вече се ползва от друг cms администратор'];
//if (empty($p->{'role_id'}))
// return ['role_id' => 'Моля, изберете роля / група'];
}
if (isset($p->password_change) || empty($_GET['id'])) {
if (empty($p->{'password'}))
return ['password' => 'Моля, въведете парола'];
if (strlen($p->{'password'}) < 6)
return ['password' => 'Моля, въведете парола от поне 6 символа'];
if ($p->{'cPassword'} != $p->{'password'})
return ['cPassword' => 'Повторното въвеждане на паролата не съвпада с първата'];
}
},
'postService' => function ($p, UserAdminCms $model) {
$model->setPostDataToModel();
$model->save();
if (!isset($p->{'rights'}))
$p->{'rights'} = [];
$model->updateRights($p->{'rights'});
Yii::$app->flash('success', isset($_GET['id']) ? 'Записът е актуализиран успешно' : 'Записът е създадено успешно');
$model->smartRedirect();
}
]);
@@ -0,0 +1,102 @@
<?php
use app\models\UserAdminGlobal;
use app\services\Auth;
use app\widgets\FormWidget;
use app\widgets\TableWidget;
$u = Auth::userAdminGlobal();
$filter = ['IS NOT', 'open_id', NULL];
TableWidget::widget([
'filter' => [
['email_login' => ['Ел. поща', 'c3']]
],
'top' => [
'title' => 'Глобални администратори',
'data' => [
'index/dashboard' => 'Начало',
'user/admin-global' => 'Потребители'
]
],
'actions' => [
//'new' => 'Нов глобален администратор',
'edit' => 'Редакция на глобален администратор',
//'delete' => 'Изтриване глобален администратор',
'export' => 'Експорт (csv)'
],
'th' => [
'№' => 'c1 text-right',
'Ел. поща' => '',
'Име' => '',
'Активен' => 'c0 ct'
],
'data' => UserAdminGlobal::find()->where($filter)->andWhere(Yii::$app->getFilterData())->orderBy(['first_name' => SORT_ASC])->loop([
'id',
'email_login',
function (UserAdminGlobal $model) {
return $model->getFullName();
},
function (UserAdminGlobal $model) use ($u) {
$disabled = $model->id == $u->id ? 'disabled' : null;
return $model->statusSwitch('is_active', null, null, $disabled);
},
], $_GET['p'] ?? 1, 30),
'ignoreIds' => [$u->id],
'exportData' => function () {
return [
'header' => [
'ID' => ['integer', 10],
'E-mail' => ['string', 50],
'Име' => ['string', 20],
'Фамилия' => ['string', 20]
],
'data' => UserAdminGlobal::find()->where(Yii::$app->getFilterData())->orderBy(['first_name' => SORT_ASC])->loop([
'id',
'email_login',
'first_name',
'last_name'
]),
'file_name' => 'Глобални_администратори_' . date('Y_m_d_H_i')
];
}
]);
FormWidget::widget([
'top' => [
'title' => 'Нов глобален администратор',
'title_edit' => 'Редакция на глобален администратор',
'data' => [
'index/dashboard' => 'Начало',
'user/admin-global' => 'Глобални администратори'
]
],
'writeView' => 'user/write/admin-global_w',
'model' => UserAdminGlobal::class,
'validation' => function ($p) {
if (isset($p->profile_update)) {
if (empty($p->{'email_login'}))
return ['email_login' => 'Моля, въведете ел. поща'];
if (!filter_var($p->{'email_login'}, FILTER_VALIDATE_EMAIL))
return ['email_login' => 'Моля, въведете валиден имейл адрес'];
if (UserAdminGlobal::recordExists('email_login', $p->{'email_login'}))
return ['email_login' => 'Този имейл адрес вече се ползва от друг глобален администратор'];
}
if (isset($p->password_change) || empty($_GET['id'])) {
if (empty($p->{'password'}))
return ['password' => 'Моля, въведете парола'];
if (strlen($p->{'password'}) < 6)
return ['password' => 'Моля, въведете парола от поне 6 символа'];
if ($p->{'cPassword'} != $p->{'password'})
return ['cPassword' => 'Повторното въвеждане на паролата не съвпада с първата'];
}
},
'postService' => function ($p, UserAdminGlobal $model) {
Yii::$app->flash('success', isset($_GET['id']) ? 'Записът е актуализиран успешно' : 'Записът е създадено успешно');
$model->setPostDataToModel();
$model->save();
$model->smartRedirect();
}
]);
@@ -0,0 +1 @@
<?php
@@ -0,0 +1,63 @@
<?php
use app\models\register\Partner;
use app\widgets\FormWidget;
use app\widgets\TableWidget;
TableWidget::widget([
'filter' => [
['name' => ['Наименование', 'c3']]
],
'top' => [
'title' => 'Партньори',
'data' => [
'index/dashboard' => 'Начало',
'user/admin' => 'Потребители'
]
],
'actions' => [
//'new' => 'Нов парньор',
'edit' => 'Редакция на партньор',
//'delete' => 'Изтриване на партньор'
],
'th' => [
'№' => 'c1 text-right',
'logo' => '',
'Име на партньор' => '',
'Активен' => 'ct'
],
'data' => Partner::find()->where(Yii::$app->getFilterData('or'))->orderBy(['id' => SORT_DESC])->loop([
'id',
function (Partner $model) {
return '<img src="' . $model->getSrcOfSingleImage('partner_logo_image', '1:1') . '" style="width:80px">';
},
function (Partner $model) {
return '<a href="?o=w&id=' . $model->id . '">' . $model->name . '</a>';
},
function (Partner $model) {
return $model->statusSwitch('active', null, ['Партньора е активен', 'Партньора е деактивиран']);
}
], $_GET['p'] ?? 1, 30)
]);
FormWidget::widget([
'top' => [
'title' => 'Нов партньор',
'title_edit' => 'Редакция на партньор',
'data' => [
'index/dashboard' => 'Начало',
'user/admin' => 'Потребители',
'user/partner-org' => 'Партньори'
]
],
'writeView' => 'user/write/partner_org_w',
'model' => Partner::class,
'validation' => function ($p) {
},
'postService' => function ($p, Partner $model) {
$model->setPostDataToModel();
$model->save();
Yii::$app->flash('success', isset($_GET['id']) ? 'Записът е актуализиран успешно' : 'Записът е създадено успешно');
$model->smartRedirect();
}
]);
@@ -0,0 +1,169 @@
<?php
use app\models\CmsRoles;
use app\models\History;
use app\models\register\Partner;
use app\models\UserPartner;
use app\services\Auth;
use app\widgets\FormWidget;
use app\widgets\TableWidget;
TableWidget::widget([
'filter' => [
[
'first_name' => ['Име', 'c1'],
'last_name' => ['Фамилия', 'c1'],
'partner_id' => ['Организация', 'c3', Partner::partnerList()],
'role_id' => ['Роля/група', 'c2', CmsRoles::roleList()],
'is_active' => ['Статус', 'c1', [1 => 'Активен', 'null' => 'Не активен']]
],
],
'top' => [
'title' => 'Потребители на партньор',
'data' => [
'index/dashboard' => 'Начало',
'user/admin-global' => 'Потребители'
]
],
'actions' => [
//'new' => 'Нов потребител',
'edit' => 'Редакция на потребител',
//'delete' => 'Изтриване на потребител',
'export' => 'Експорт (csv)'
],
'th' => [
'№' => 'c1 text-right',
'Ел. поща' => '',
'Име' => '',
'Организация' => '',
'Група / роля ' => '',
'Бр. права' => 'c1',
'История' => 'c0 ct',
'Активен' => 'c0 ct'
],
'data' => UserPartner::find()->where(Yii::$app->getFilterData())->orderBy(['id' => SORT_DESC])->loop([
'id',
function (UserPartner $model) {
return '<a href="?o=w&id=' . $model->id . '">' . $model->email_login . '</a>';
},
'fullName',
function (UserPartner $model) {
if ($model->partner)
return $model->partner->name;
},
function (UserPartner $model) {
if ($model->cmsRole)
return $model->cmsRole->name;
},
function (UserPartner $model) {
if ($model->getRightsIds())
return sizeof($model->getRightsIds());
},
function (UserPartner $model) {
return '<i data-table="user_partner" data-id="' . $model->id . '" class="la la-history historyButton"></i>';
},
function (UserPartner $model) {
return $model->statusSwitch('is_active');
}
], $_GET['p'] ?? 1, 30),
'exportData' => function () {
return [
'header' => [
'ID' => ['integer', 10],
'E-mail' => ['string', 50],
'Име' => ['string', 20],
'Фамилия' => ['string', 20],
'Организация' => ['string', 50],
'Група / роля' => ['string', 30]
],
'data' => UserPartner::find()->where(Yii::$app->getFilterData())->orderBy(['first_name' => SORT_ASC])->loop([
'id',
'email_login',
'first_name',
'last_name',
function (UserPartner $userPartner) {
return $userPartner->partner->name;
},
function (UserPartner $userPartner) {
if ($userPartner->cmsRole)
return $userPartner->cmsRole->name;
}
]),
'file_name' => 'Партньори_' . date('Y_m_d_H_i')
];
}
]);
FormWidget::widget([
'top' => [
'title' => 'Нов партньор',
'title_edit' => 'Редакция на партньор',
'data' => [
'index/dashboard' => 'Начало',
'user/admin-global' => 'Потребители',
'user/partner' => 'Партньори',
]
],
'writeView' => 'user/write/partner_w',
'model' => UserPartner::class,
'validation' => function ($p, $f) {
if (isset($p->profile_update)) {
if (empty($p->{'email_login'}))
return ['email_login' => 'Моля, въведете ел. поща'];
if (!filter_var($p->{'email_login'}, FILTER_VALIDATE_EMAIL))
return ['email_login' => 'Моля, въведете валиден имейл адрес'];
if (UserPartner::recordExists('email_login', $p->{'email_login'}))
return ['email_login' => 'Този имейл адрес вече се ползва от друг потребител на партньор'];
/*if (empty($_GET['id'])) {
if (empty($p->{'password'}))
return ['password' => 'Моля, въведете парола'];
}
if (!empty($p->{'password'})) {
if (strlen($p->{'password'}) < 6)
return ['password' => 'Моля, въведете парола от поне 6 символа'];
if ($p->{'cPassword'} != $p->{'password'})
return ['cPassword' => 'Повторното въвеждане на паролата не съвпада с първата'];
}
if (empty($p->{'first_name'}))
return ['first_name' => 'Моля, попълнете име'];
if (empty($p->{'middle_name'}))
return ['middle_name' => 'Моля, попълнете презиме'];
if (empty($p->{'last_name'}))
return ['last_name' => 'Моля, попълнете фамилия'];
*/
if (empty($p->{'first_name'}))
return ['first_name' => 'Моля, попълнете име'];
if (empty($p->{'last_name'}))
return ['last_name' => 'Моля, попълнете фамилия'];
if (empty($p->{'partner_id'}))
return ['partner_id' => 'Моля, изберете организация'];
if (empty($p->{'role_id'}))
return ['role_id' => 'Моля, изберете роля / група'];
}
if (isset($p->password_change) && !empty($_GET['id'])) {
if (empty($p->{'password'}))
return ['password' => 'Моля, въведете парола'];
if (strlen($p->{'password'}) < 6)
return ['password' => 'Моля, въведете парола от поне 6 символа'];
if ($p->{'cPassword'} != $p->{'password'})
return ['cPassword' => 'Повторното въвеждане на паролата не съвпада с първата'];
}
return null;
},
'postService' => function ($p, UserPartner $model) {
$model->setPostDataToModel();
$model->uploadSingleImage('upload_image', 'user/partner');
$model->save();
if (!isset($p->{'rights'}))
$p->{'rights'} = [];
$model->updateRights($p->{'rights'});
History::addNew($model->id, 'user_partner', Auth::userAdminGlobal()->getFullName() . ' - Глобален администратор', !empty($_GET['id']));
Yii::$app->flash('success', isset($_GET['id']) ? 'Записът е актуализиран успешно' : 'Записът е създадено успешно');
Yii::$app->setRefresh();
$model->smartRedirect();
}
]);
@@ -0,0 +1,47 @@
<?php
use app\models\UserAdminGlobal;
use app\services\Auth;
use app\widgets\FormWidget;
$u = Auth::userAdminGlobal();
$_GET['o'] = 'w';
$_GET['id'] = $u->id;
FormWidget::widget([
'top' => [
'title' => 'Профил',
'title_edit' => 'Профил',
'data' => [
'index/dashboard' => 'Начало'
]
],
'writeView' => 'user/write/profile_w',
'model' => UserAdminGlobal::class,
'validation' => function ($p) {
if (isset($p->profile_update)) {
if (empty($p->{'email_login'}))
return ['email_login' => 'Моля, въведете ел. поща'];
if (!filter_var($p->{'email_login'}, FILTER_VALIDATE_EMAIL))
return ['email_login' => 'Моля, въведете валиден имейл адрес'];
if (UserAdminGlobal::recordExists('email_login', $p->{'email_login'}))
return ['email_login' => 'Този имейл адрес вече се ползва от друг глобален администратор'];
}
if (isset($p->password_change) || empty($_GET['id'])) {
if (empty($p->{'password'}))
return ['password' => 'Моля, въведете парола'];
if (strlen($p->{'password'}) < 6)
return ['password' => 'Моля, въведете парола от поне 6 символа'];
if ($p->{'cPassword'} != $p->{'password'})
return ['cPassword' => 'Повторното въвеждане на паролата не съвпада с първата'];
}
},
'postService' => function ($p, UserAdminGlobal $model) {
Yii::$app->flash('success', isset($_GET['id']) ? 'Записът е актуализиран успешно' : 'Записът е създадено успешно');
$model->setPostDataToModel();
$model->save();
$model->redirectTo('user/profile', true);
}
]);
@@ -0,0 +1,106 @@
<?php
use app\models\UserAdminGlobal;
use app\models\UserPublic;
use app\services\Auth;
use app\widgets\FormWidget;
use app\widgets\TableWidget;
$filter = [];
$u = Auth::userAdminGlobal();
TableWidget::widget([
'filter' => [
['email' => ['Ел. поща', 'c3']]
],
'top' => [
'title' => 'Потребители публичен портал',
'data' => [
'index/dashboard' => 'Начало',
'user/public' => 'Управление на потребители публичен портал'
]
],
'actions' => [
//'new' => 'Нов потребител',
//'edit' => 'Редакция потребител',
//'delete' => 'Изтриване потребител',
'export' => 'Експорт (csv)'
],
'th' => [
'№' => 'c0 text-right',
'Ел. поща' => 'c3',
'Име' => '',
'Клубна карта' => 'c1 ct',
'Активен' => 'c02 ct'
],
'data' => UserPublic::find()->where($filter)->andWhere(Yii::$app->getFilterData())->orderBy(['id' => SORT_DESC])->loop([
'id',
'email',
'full_name',
/*function (UserPublic $model) use ($u) {
$disabled = $model->id == $u->id ? 'disabled' : null;
return $model->statusSwitch('is_active', null, null, $disabled);
},*/
function (UserPublic $model) {
return $model->club_card ? '<span style="color: green">да</span>' : '<span style="color: darkred">не</span>';
},
function (UserPublic $model) {
return $model->statusSwitch('is_active', null, ['Потребителя е активиран', 'Потребителя е деактивиран']);
}
], $_GET['p'] ?? 1, 30),
//'ignoreIds' => [$u->id],
'exportData' => function () {
return [
'header' => [
'ID' => ['integer', 10],
'E-mail' => ['string', 50],
'Име и фамилия' => ['string', 50],
],
'data' => UserPublic::find()->where(Yii::$app->getFilterData())->orderBy(['full_name' => SORT_ASC])->loop([
'id',
'full_name',
'email',
]),
'file_name' => 'Потребители_публичен_портал' . date('Y_m_d_H_i')
];
}
]);
FormWidget::widget([
'top' => [
'title' => 'Нов глобален администратор',
'title_edit' => 'Редакция на глобален администратор',
'data' => [
'index/dashboard' => 'Начало',
'user/public' => 'Управление на потребители публичен портал'
]
],
'writeView' => 'user/write/public-user_w',
'model' => UserPublic::class,
'validation' => function ($p) {
if (isset($p->profile_update)) {
if (empty($p->{'email'}))
return ['email' => 'Моля, въведете ел. поща'];
if (!filter_var($p->{'email'}, FILTER_VALIDATE_EMAIL))
return ['email' => 'Моля, въведете валиден имейл адрес'];
if (UserPublic::recordExists('email', $p->{'email'}))
return ['email' => 'Този имейл адрес вече се ползва от потребител в публичен портал'];
}
if (isset($p->password_change) || empty($_GET['id'])) {
if (empty($p->{'password'}))
return ['password' => 'Моля, въведете парола'];
if (strlen($p->{'password'}) < 6)
return ['password' => 'Моля, въведете парола от поне 6 символа'];
if ($p->{'cPassword'} != $p->{'password'})
return ['cPassword' => 'Повторното въвеждане на паролата не съвпада с първата'];
}
},
'postService' => function ($p, UserPublic $model) {
Yii::$app->flash('success', isset($_GET['id']) ? 'Записът е актуализиран успешно' : 'Записът е създадено успешно');
$model->setPostDataToModel();
$model->save();
$model->smartRedirect();
}
]);
@@ -0,0 +1 @@
<?php
@@ -0,0 +1,62 @@
<?php
Yii::$app->controller->pageTitle = 'Права';
use app\models\CmsRights;
use app\widgets\FormWidget;
use app\widgets\TableWidget;
TableWidget::widget([
'filter' => [
['name' => ['Наименование', 'c3']]
],
'top' => [
'title' => 'Права',
'data' => [
'index/dashboard' => 'Начало',
'user/admin' => 'Потребители'
]
],
'actions' => [
'new' => 'Ново право',
'edit' => 'Редакция на право',
//'delete' => 'Изтриване на право'
],
'th' => [
'№' => 'c1 text-right',
'Наименование на потребителското правото' => '',
'Активен' => ''
],
'data' => CmsRights::find()->where(Yii::$app->getFilterData())->orderBy(['id' => SORT_DESC])->loop([
'id',
'name',
function(CmsRights $model) {
return $model->statusSwitch('is_active', null, ['Правото е активирано', 'Правото е деактивирано']);
}
], $_GET['p'] ?? 1, 30)
]);
FormWidget::widget([
'top' => [
'title' => 'Ново право',
'title_edit' => 'Редакция на право',
'data' => [
'index/dashboard' => 'Начало',
'user/admin' => 'Потребители',
'user/rights' => 'Права'
]
],
'writeView' => 'user/write/rights_w',
'model' => CmsRights::class,
'validation' => function ($p) {
if (empty($p->{'name'}))
return ['name' => 'Моля, въведете наименование на правото'];
if (CmsRights::recordExists('name', $p->{'name'}))
return ['name' => 'Това право вече е въведено, моля използвайте друго наименование'];
},
'postService' => function ($p, CmsRights $model) {
$model->setPostDataToModel();
$model->save();
Yii::$app->flash('success', isset($_GET['id']) ? 'Записът е актуализиран успешно' : 'Записът е създадено успешно');
$model->smartRedirect();
}
]);
@@ -0,0 +1,69 @@
<?php
Yii::$app->controller->pageTitle = 'Роли / групи';
use app\models\CmsRoles;
use app\widgets\FormWidget;
use app\widgets\TableWidget;
TableWidget::widget([
'top' => [
'title' => 'Роли / групи',
'data' => [
'index/dashboard' => 'Начало',
'user/admin' => 'Потребители'
]
],
'actions' => [
'new' => 'Нова роля',
'edit' => 'Редакция на роля',
'delete' => 'Изтриване на роля'
],
'th' => [
'№' => 'c1 text-right',
'Наименование на роля' => 'c3',
'Описание на роля' => '',
'Бр. зададени права' => ''
],
'data' => CmsRoles::find()->loop([
'id',
function (CmsRoles $model) {
return '<a href="?o=w&id=' . $model->id . '">' . $model->name . '</a>';
},
'description',
function (CmsRoles $model) {
return sizeof($model->getRightsIds());
}
], $_GET['p'] ?? 1, 20)
]);
FormWidget::widget([
'top' => [
'title' => 'Нова роля/група',
'title_edit' => 'Редакция на роля/група',
'data' => [
'index/dashboard' => 'Начало',
'user/admin' => 'Потребители',
'user/roles' => 'Роли / групи'
]
],
'writeView' => 'user/write/roles_w',
'model' => CmsRoles::class,
'validation' => function ($p) {
if (empty($p->{'user_type_id'}))
return ['user_type_id' => 'Моля, изберете тип потребител'];
if (empty($p->{'name'}))
return ['name' => 'Моля, въведете наименование на ролята'];
if (CmsRoles::recordExists('name', $p->{'name'}))
return ['name' => 'Тази роля вече е ваведена, моля използвайте друго наименование'];
},
'postService' => function ($p, CmsRoles $model) {
$model->setPostDataToModel();
$model->save();
if (!isset($p->{'rights'}))
$p->{'rights'} = [];
$model->updateRights($p->{'rights'});
Yii::$app->flash('success', isset($_GET['id']) ? 'Записът е актуализиран успешно' : 'Записът е създадено успешно');
$model->smartRedirect();
}
]);
@@ -0,0 +1,105 @@
<?php
use app\models\CmsRoles;
use app\models\UserAdminCms;
/**
* @var UserAdminCms $model
*/
?>
<div class="inner-content p10">
<?php if (!empty($_GET['id'])): ?>
<form autocomplete="off">
<input name="password_change" type="hidden" value="1">
<div class="row c7 top15">
<div class="top-title">Смяна на парола</div>
</div>
<div class="c7 flex top15 top-page-panel">
<div class="row c6 right10">
<label class="require"><?= $model->password ? 'Нова парола' : 'Парола' ?></label>
<input type="password" name="password"
placeholder="<?= $model->password ? 'Смени паролата за логиин' : 'Въведи парола за логин в системата' ?> "
value=""/>
</div>
<div class="row c6">
<label class="require">Повтори паролата</label>
<input type="password" name="cPassword" placeholder="Повторете паролата" value=""/>
</div>
</div>
<div class="row c7 top15 flex">
<button class="btn btn-default"><i class="la la-lock"></i> Смени паролата</button>
</div>
</form>
<?php endif ?>
<form autocomplete="off" class="top15">
<input name="profile_update" type="hidden" value="1">
<div class="row c7">
<div class="top-title">Данни на потребителя</div>
</div>
<div class="row c7 flex top15">
<div class="right10 c6">
<label class="require">Потребител (ел. поща)</label>
<input name="email_login" placeholder="Въведи ел. поща за логин в системата"
value="<?= $model->email_login ?>"/>
</div>
<div class="c6">
<label>Телефон</label>
<input name="phone" placeholder="Въведи телефон"
value="<?= $model->phone ?>"/>
</div>
</div>
<div class="row c7 top15 flex">
<div class="right10 c6">
<label>Име</label>
<input name="first_name" placeholder="Име" value="<?= $model->first_name ?>">
</div>
<div class="c6">
<label>Фамилия</label>
<input name="last_name" placeholder="Фамилия" value="<?= $model->last_name ?>">
</div>
</div>
<?php if (empty($_GET['id'])): ?>
<div class="c7 flex top15">
<div class="row c6 right10">
<label class="require"><?= $model->password ? 'Нова парола' : 'Парола' ?></label>
<input type="password" name="password"
placeholder="<?= $model->password ? 'Смени паролата за логиин' : 'Въведи парола за логин в системата' ?> "
value=""/>
</div>
<div class="row c6">
<label class="require">Повтори паролата</label>
<input type="password" name="cPassword" placeholder="Повторете паролата" value=""/>
</div>
</div>
<?php endif; ?>
<div class="row c7 top15 flex">
<?=\app\widgets\services\Includes::formButtons('user/admin-cms')?>
</div>
</form>
</div>
<script>
function updateCheckListByRole(e) {
if(e.value) {
request({
url: e.dataset.update + '?role_id=' + e.value,
done: r => {
if(r.rights) {
all('.check-list input', e => {
e.checked = false;
});
r.rights.forEach(e => {
console.log(e)
const inputRight = one('.check-list input[value="'+ e +'"]');
inputRight.checked = true;
})
}
}
})
} else {
}
}
</script>
@@ -0,0 +1,76 @@
<?php
use app\models\UserAdminGlobal;
use app\widgets\services\Includes;
/**
* @var UserAdminGlobal $model
*/
?>
<div class="inner-content p10">
<?php if (!empty($_GET['id'])): ?>
<!--
<form autocomplete="off">
<input name="password_change" type="hidden" value="1">
<div class="row c7 top15">
<div class="top-title">Смяна на парола</div>
</div>
<div class="c7 flex top15 top-page-panel">
<div class="row c6 right10">
<label class="require"><?= $model->password ? 'Нова парола' : 'Парола' ?></label>
<input type="password" name="password"
placeholder="<?= $model->password ? 'Смени паролата за логиин' : 'Въведи парола за логин в системата' ?> "
value=""/>
</div>
<div class="row c6">
<label class="require">Повтори паролата</label>
<input type="password" name="cPassword" placeholder="Повторете паролата" value=""/>
</div>
</div>
<div class="row c7 top15 flex">
<button class="btn btn-default"><i class="la la-lock"></i> Смени паролата</button>
</div>
</form>
-->
<?php endif ?>
<form autocomplete="off" class="top15">
<input name="profile_update" type="hidden" value="1">
<div class="row c7">
<div class="top-title">Данни на потребителя</div>
</div>
<div class="row c7 flex top15">
<div class="right10 c6">
<label class="require">Потребител (ел. поща)</label>
<input readonly name="email_login" placeholder="Въведи ел. поща за логин в системата"
value="<?= $model->email_login ?>"/>
</div>
<div class="c6">
<label>Телефон</label>
<input name="phone" placeholder="Въведи телефон"
value="<?= $model->phone ?>"/>
</div>
</div>
<div class="row c7 top15 flex">
<div class="right10 c6">
<label>Име</label>
<input name="first_name" placeholder="Име" value="<?= $model->first_name ?>">
</div>
</div>
<?php if (empty($_GET['id'])): ?>
<div class="c7 flex top15">
<div class="row c6 right10">
<label class="require"><?= $model->password ? 'Нова парола' : 'Парола' ?></label>
<input type="password" name="password"
placeholder="<?= $model->password ? 'Смени паролата за логиин' : 'Въведи парола за логин в системата' ?> "
value=""/>
</div>
<div class="row c6">
<label class="require">Повтори паролата</label>
<input type="password" name="cPassword" placeholder="Повторете паролата" value=""/>
</div>
</div>
<?php endif; ?>
<div class="row c7 top15 flex">
<?= Includes::formButtons('user/admin-global'); ?>
</div>
</form>
</div>
@@ -0,0 +1,148 @@
<?php
use app\widgets\FileWidget;
/**
* @var \app\models\register\Partner $model
*/
$media_key = $model->getMediaKey();
?>
<div class="inner-content p20">
<div class="row top15">
<a style="width: 200px; text-align: center"
href="<?= Yii::$app->goTo('user/partner-org') ?><?= isset($_GET['p']) ? '?p=' . $_GET['p'] : '' ?>"
class="btn btn-default right10"><i class="la la-undo"></i> Обратно в списъка</a>
</div>
</div>
<div class="inner-content p10">
<form autocomplete="off">
<div class="row c5">
<h2><?= $model->name ?></h2>
</div>
<div class="row top30" style="width: 350px">
<label>Лого</label>
<?= FileWidget::widget([
'media_type' => 'image',
'object_key' => 'partner_logo_image',
'media_key' => $media_key,
'files' => $model->getFiles('thumb'),
'actions' => [
'add' => 'Добавяне',
'edit' => 'Редакция',
'delete' => 'Премахване'
],
'single_file' => true,
'resolutions' => ['1:1'],
'max_file_size' => 2,
'error_message' => 'Файловете по-големи от 2МБ, не бяха добавени'
]) ?>
</div>
<div class="row top15" style="width: 350px">
<label>Хедър изображение за страницата на партньор</label>
<?= FileWidget::widget([
'media_type' => 'image',
'object_key' => 'partner_header_image',
'media_key' => $media_key,
'files' => $model->getFiles('thumb'),
'actions' => [
'add' => 'Добавяне',
'edit' => 'Редакция',
'delete' => 'Премахване'
],
'single_file' => true,
'resolutions' => ['21:5'],
'max_file_size' => 4,
'error_message' => 'Файловете по-големи от 4МБ, не бяха добавени'
]) ?>
</div>
<div class="row top15 c5">
<label>Описание</label>
<p><?= $model->description ?></p>
</div>
<div class="row top15 c5">
<label>Уебсайт</label>
<p><?= $model->website ?></p>
</div>
<div class="row top15 c5">
<label>Телефон</label>
<p><?= $model->phone ?></p>
</div>
<div class="row top15 c5">
<label>E-mail</label>
<p><?= $model->email ?></p>
</div>
<div class="row c15 top15 top-page-panel">
<label>Ауторизирани публични потребители</label>
<p class="upload-info">* изберете потребители, които да бъдат ауторизирани да проверяват направените
резервации в деня и часа на дадено събитие, публикувано партньора.</p>
<div class="flex">
<div style="width: 700px">
<select id="auth_users" style="display:none;" class="search-select-box" multiple
name="user_list[]">
<option disabled value="">-- избери потребител --</option>
<?php foreach ($model->userPublicList() as $item): ?>
<option <?= $item['selected'] ?>
value="<?= $item['id'] ?>"><?= $item['name'] ?></option>
<?php endforeach; ?>
</select>
</div>
<div onclick="updateQrValidators()" id="update_qr_validators" class="btn btn-default"
style="width: 200px; text-align: center; height: 10px; line-height: 10px; margin-left: 10px">
Актуализирай
</div>
</div>
</div>
<p class="upload-info">Партньорът ще бъде визоализиран на сайта, след като има качено и обработено лого
изображение за него във формат 1:1</p>
</form>
</div>
<script src="/_public/assets/js/order.js"></script>
<script src="/_public/assets/js/file-img.js"></script>
<script src="/_public/plugins/cropperJs/cropper.min.js"></script>
<script src="/_public/assets/js/search-box.js"></script>
<script>
all('.search-select-box').forEach(el => {
var s = new SearchBox(el)
})
function updateQrValidators() {
const selectEl = document.getElementById("auth_users");
const selectedOptions = [];
for (let i = 0; i < selectEl.options.length; i++) {
if (selectEl.options[i].selected) {
selectedOptions.push(selectEl.options[i].value);
}
}
console.log(selectedOptions)
request({
url: '/remote/update-qr-validators/',
post: {
validators: selectedOptions,
partner_id: '<?= $model->id ?>'
},
done: (r) => {
console.log(r)
if(r && r.success) {
flash.success('Списъка с потребители е актуализиран успешно', false)
}
}
})
}
</script>
<?php if ($model->id && !$model->media_key): ?>
<script>
const media_key = '<?= $media_key ?>';
request({
url: window.location.href + '&media_key_update=1',
post: {media_key: media_key}
})
</script>
<?php endif; ?>
@@ -0,0 +1,121 @@
<?php
use app\models\CmsRoles;
use app\models\register\Partner;
use app\models\UserPartner;
use app\services\JWT;
use app\widgets\services\Includes;
/**
* @var \app\models\UserPartner $model
*/
?>
<div class="inner-content p10">
<form autocomplete="off">
<input name="profile_update" type="hidden" value="1">
<div class="row c7 top15">
<div class="top-title">Данни на потребителя</div>
</div>
<div class="row c7 top15">
<div class="c6">
<label>Снимка</label>
<div class="image-upload cursor-default">
<div class="actions"
data-image-name="upload_image"
data-add="Добави снимка"
data-edit="Смени снимката"
data-remove="Премахни снимката"
data-remove-msg="Искате ли снимката да бъде премахната?"
data-remove-ready="Снимката е премахната"
data-warning="Снимката ще се актуализира след запазване на цялата форма"
data-default="la la-user"
data-src="<?= $model->getSingleImageSrc('user/partner') ?>"
></div>
</div>
</div>
</div>
<div class="row c7 top15 flex">
<div class="right10 c6">
<label class="require">Служебен имейл</label>
<input name="email_login" placeholder="Въведи ел. поща за логин в системата" value="<?= $model->email_login?>"/>
</div>
<div class="right10 c6">
<label class="require">Име</label>
<input name="first_name" placeholder="Име" value="<?= $model->first_name ?>">
</div>
<div class="c6">
<label class="require">Фамилия</label>
<input name="last_name" placeholder="Фамилия" value="<?= $model->last_name ?>">
</div>
</div>
<div class="row c7 top15 flex">
<div class="c6 right10">
<label>Организация</label>
<select style="pointer-events: none; appearance: none; border: 0; width: calc(100% - 10px); font-weight: bold; color: #1e6ab3; background: #f1f1f1" readonly="" name="partner_id">
<option disabled selected>-- Избери организация --</option>
<?php foreach (Partner::partnerList() as $id => $name): ?>
<option <?= $model->partner_id == $id ? 'selected' : '' ?>
value="<?= $id ?>"><?= $name ?></option>
<?php endforeach; ?>
</select>
</div>
</div>
<div class="row c7 top15">
<div class="c8">
<label>Представяне</label>
<textarea name="presentation"><?= $model->presentation ?></textarea>
</div>
</div>
<div class="row c7 top15">
<div class="c8">
<label class="require">Роля / група</label>
<select name="role_id" data-update="<?= Yii::$app->goTo('role-rights') ?>"
onchange="updateCheckListByRole(this)">
<option disabled selected>-- Избери роля / група --</option>
<?php foreach (CmsRoles::roleList() as $id => $name): ?>
<option <?= $model->role_id == $id ? 'selected' : '' ?> value="<?= $id ?>"><?= $name ?></option>
<?php endforeach; ?>
</select>
</div>
</div>
<div class="row c7 flex top15">
<div class="row c8">
<label>Добавяне на права</label>
<div class="p10 border-default">
<input onkeyup="searchInCheckList(this)" placeholder="Филтър на права">
<div class="check-list p10 border-default top5" style="width: calc(100% - 20px)">
<?= UserPartner::getRightList($model) ?>
</div>
</div>
</div>
</div>
<div class="row c7 top15 flex">
<?= Includes::formButtons('user/partner') ?>
</div>
</form>
</div>
<script src="/_public/plugins/cropperJs/cropper.min.js"></script>
<script>
function updateCheckListByRole(e) {
if (e.value) {
request({
url: e.dataset.update + '?role_id=' + e.value,
done: r => {
if (r.rights) {
all('.check-list input', e => {
e.checked = false;
});
r.rights.forEach(e => {
console.log(e)
const inputRight = one('.check-list input[value="' + e + '"]');
inputRight.checked = true;
})
}
}
})
} else {
}
}
</script>
@@ -0,0 +1,69 @@
<?php
use app\models\UserAdminGlobal;
/**
* @var UserAdminGlobal $model
*/
?>
<div class="inner-content p10">
<?php if (!empty($_GET['id'])): ?>
<?php if(!$model->open_id): ?>
<form autocomplete="off">
<input name="password_change" type="hidden" value="1">
<div class="row c7 top15">
<div class="top-title">Смяна на парола</div>
</div>
<div class="c7 flex top15 top-page-panel">
<div class="row c6 right10">
<label class="require"><?= $model->password ? 'Нова парола' : 'Парола' ?></label>
<input type="password" name="password"
placeholder="<?= $model->password ? 'Смени паролата за логиин' : 'Въведи парола за логин в системата' ?> "
value=""/>
</div>
<div class="row c6">
<label class="require">Повтори паролата</label>
<input type="password" name="cPassword" placeholder="Повторете паролата" value=""/>
</div>
</div>
<div class="row c7 top15 flex">
<button class="btn btn-default"><i class="la la-save"></i> Смяна на парола</button>
</div>
</form>
<?php endif; ?>
<?php endif ?>
<form autocomplete="off" class="top15">
<div class="row c7 top15">
<div class="top-title">Данни на потребителя</div>
</div>
<input name="profile_update" type="hidden" value="1">
<div class="c7 top15">
<div class="row flex">
<div class="right10 c6">
<label class="require">Потребител (ел. поща)</label>
<input name="email_login" placeholder="Въведи ел. поща за логин в системата"
value="<?= $model->email_login ?>"/>
</div>
<div class="c6">
<label>Телефон</label>
<input name="phone" placeholder="Въведи телефон"
value="<?= $model->phone ?>"/>
</div>
</div>
<div class="row top15 flex">
<div class="right10 c6">
<label>Име</label>
<input name="first_name" placeholder="Име" value="<?= $model->first_name ?>">
</div>
<div class="c6">
<label>Фамилия</label>
<input name="last_name" placeholder="Фамилия" value="<?= $model->last_name ?>">
</div>
</div>
</div>
<div class="row c7 top15 flex">
<button class="btn btn-default"><i class="la la-save"></i> Актуализирай</button>
</div>
</form>
</div>
@@ -0,0 +1,70 @@
<?php
use app\models\UserAdminGlobal;
use app\widgets\services\Includes;
exit;
/**
* @var \app\models\UserPublic $model
*/
?>
<div class="inner-content p10">
<?php if (!empty($_GET['id'])): ?>
<form autocomplete="off">
<input name="password_change" type="hidden" value="1">
<div class="row c7 top15">
<div class="top-title">Смяна на парола</div>
</div>
<div class="c7 flex top15 top-page-panel">
<div class="row c6 right10">
<label class="require"><?= $model->password ? 'Нова парола' : 'Парола' ?></label>
<input type="password" name="password"
placeholder="<?= $model->password ? 'Смени паролата за логиин' : 'Въведи парола за логин в системата' ?> "
value=""/>
</div>
<div class="row c6">
<label class="require">Повтори паролата</label>
<input type="password" name="cPassword" placeholder="Повторете паролата" value=""/>
</div>
</div>
<div class="row c7 top15 flex">
<button class="btn btn-default"><i class="la la-lock"></i> Смени паролата</button>
</div>
</form>
<?php endif ?>
<form autocomplete="off" class="top15">
<input name="profile_update" type="hidden" value="1">
<div class="row c7">
<div class="top-title">Данни на потребителя</div>
</div>
<div class="row c7 flex top15">
<div class="right10 c6">
<label class="require">Потребител (ел. поща)</label>
<input name="email" placeholder="Въведи ел. поща за логин в системата"
value="<?= $model->email ?>"/>
</div>
</div>
<div class="row c7 top15 flex">
<div class="right10 c6">
<label>Име и фамилия</label>
<input name="full_name" placeholder="Име" value="<?= $model->full_name ?>">
</div>
</div>
<?php if (empty($_GET['id'])): ?>
<div class="c7 flex top15">
<div class="row c6 right10">
<label class="require"><?= $model->password ? 'Нова парола' : 'Парола' ?></label>
<input type="password" name="password"
placeholder="<?= $model->password ? 'Смени паролата за логиин' : 'Въведи парола за логин в системата' ?> "
value=""/>
</div>
<div class="row c6">
<label class="require">Повтори паролата</label>
<input type="password" name="cPassword" placeholder="Повторете паролата" value=""/>
</div>
</div>
<?php endif; ?>
<div class="row c7 top15 flex">
<?= Includes::formButtons('user/public'); ?>
</div>
</form>
</div>
@@ -0,0 +1,20 @@
<?php
use app\models\CmsRights;
use app\widgets\services\Includes;
/**
* @var CmsRights $model
*/
?>
<div class="inner-content p10">
<form autocomplete="off">
<div class="row c5">
<label class="require">Наименование на право</label>
<input name="name" placeholder="Въведи наименование потребителското право" value="<?= $model->name ?>"/>
</div>
<div class="row c5 top15 flex">
<?= Includes::formButtons('user/rights') ?>
</div>
</form>
</div>
@@ -0,0 +1,44 @@
<?php
use app\models\CmsRights;
use app\models\CmsRoles;
use app\widgets\services\Includes;
/**
* @var CmsRoles $model
*/
?>
<div class="inner-content p10">
<form autocomplete="off">
<div class="row c5">
<label class="require">Тип потребител</label>
<select name="user_type_id">
<option disabled selected>-- Избери тип потребител --</option>
<?php foreach (CmsRoles::roleUserTypes() as $id => $roleUserType): ?>
<option <?= $model->user_type_id == $id ? 'selected' : '' ?> value="<?= $id ?>"><?=$roleUserType?></option>
<?php endforeach; ?>
</select>
</div>
<div class="row c5 top15">
<label class="require">Наименование на роля / група</label>
<input name="name" placeholder="Въведи наименование на ролята / групата" value="<?= $model->name ?>"/>
</div>
<div class="row c5 top15">
<label>Описание на роля / група</label>
<input name="description" placeholder="Въведи кратко описание на ролята / групата"
value="<?= $model->description ?>"/>
</div>
<div class="row c5 top15">
<label>Добавяне на права</label>
<div class="p10 border-default">
<input onkeyup="searchInCheckList(this)" placeholder="Филтър на права">
<div class="check-list p10 border-default top5" style="width: calc(100% - 20px)">
<?= CmsRights::getHtmlList($model) ?>
</div>
</div>
</div>
<div class="row c5 top15 flex">
<?= Includes::formButtons('user/roles') ?>
</div>
</form>
</div>