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,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>