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,35 @@
<?php
use app\models\RegisterObjects;
use app\models\Partner;
use app\widgets\services\Includes;
/**
* @var RegisterObjects $model
*/
?>
<div class="inner-content p10">
<form autocomplete="off">
<!-- EDIT -->
<div class="row top15 c7">
<label class="require">Наименование на обекта</label>
<input name="name" value="<?= $model->name ?>">
</div>
<div class="row top15 c7">
<label class="require">Анотация</label>
<textarea name="annotation"><?= $model->annotation ?></textarea>
</div>
<div class="row top15 c7">
<label>Кратко описание</label>
<textarea name="short_description"><?= $model->short_description ?></textarea>
</div>
<div class="row top15 c7">
<label class="require">Подробно описание</label>
<textarea class="ckEditor" name="description"><?= $model->description ?></textarea>
</div>
<div class="row c9 top15 flex">
<?= Includes::formButtons('website/objects') ?>
</div>
</form>
</div>
@@ -0,0 +1,122 @@
<?php
use app\models\Campaigns;
use app\models\register\Partner;
use app\widgets\FileWidget;
use app\widgets\services\Includes;
/**
* @var Campaigns $model
*/
$media_key = $model->getMediaKey();
?>
<div class="inner-content p10">
<form autocomplete="off">
<div class="row c2">
<label class="require">Дати на кампанията</label>
<input type="hidden" name="event_dates" id="event_dates" value="<?= $model->event_dates ?>">
</div>
<div class="row c6 top15">
<label>Локация</label>
<input name="location" placeholder="Въведи локация на събитието" value="<?= $model->location ?>"/>
</div>
<div class="row c6 top15">
<label class="require">Заглавие</label>
<input name="title" placeholder="Въведи заглавие на събитието" value="<?= $model->title ?>"/>
</div>
<div class="row top15" style="width: 350px">
<label>Заглавно изображение</label>
<?= FileWidget::widget([
'media_type' => 'image',
'object_key' => 'title_campaigns_image',
'media_key' => $media_key,
'files' => $model->getFiles('thumb'),
'actions' => [
'add' => 'Добавяне',
'edit' => 'Редакция',
'delete' => 'Премахване'
],
'single_file' => true,
'resolutions' => ['16:11', '16:9', '1:1'],
'max_file_size' => 2,
'error_message' => 'Файловете по-големи от 2МБ, не бяха добавени'
]) ?>
</div>
<?= $this->render('/shared/instruction_1') ?>
<div class="row c9 top15">
<label class="require">Кратък текст</label>
<textarea class="ckEditor" name="text_short"><?= $model->text_short ?></textarea>
</div>
<div class="row c9 top15">
<label class="require">Пълен текст</label>
<textarea class="ckEditor" name="text"><?= $model->text ?></textarea>
</div>
<div class="row c9 top15">
<label>Изображения в кампанията</label>
<?= FileWidget::widget([
'media_type' => 'image',
'object_key' => 'campaigns_images',
'media_key' => $media_key,
'files' => $model->getFiles('thumb'),
'actions' => [
'add' => 'Добавяне на изображения',
'edit' => 'Редакция на изображение',
'delete' => 'Премахване на изображения'
],
'resolutions' => ['16:11', '16:9', '1:1'],
'max_file_size' => 2,
'error_message' => 'Файловете по-големи от 2МБ, не бяха добавени'
]) ?>
</div>
<div class="row c9 top15 flex">
<div class="c7 right10">
<label>Стрийминг линк</label>
<input onkeyup="updateLabelRequire(this, '#sta')" name="stream_url"
placeholder="Въведи линк на стрийминг"
value="<?= $model->stream_url ?>"/>
</div>
<div class="left10">
<label id="sta">Достъп</label>
<div class="flex top-page-panel"
style="height: 14px; border-radius: 3px; border-color: var(--base-background-dark)">
<?php foreach ([1 => 'Частен', 2 => 'Публичен'] as $v => $t): ?>
<label style="margin-top: -3px" class="right10 radio-error"><input
style="width: 14px; height: 14px;" type="radio"
name="stream_access" <?= $model->stream_access == $v ? 'checked' : '' ?>
value="<?= $v ?>"/> <?= $t ?>
</label>
<?php endforeach; ?>
</div>
</div>
</div>
<div class="row c3 top15">
<label class="require">Дата на публикуване</label>
<input type="hidden" name="publish_date" id="publish_date" value="<?= $model->getPublishDate() ?>">
</div>
<div class="row c9 top15 flex">
<?= Includes::formButtons('website/campaigns') ?>
</div>
</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/plugins/air-datepicker/locales.js"></script>
<script src="/_public/plugins/air-datepicker/air-datepicker.js"></script>
<script>
new AirDatepicker('#event_dates', {
inline: true,
locale: locales.bg,
multipleDates: true,
multipleDatesSeparator: ',',
selectedDates: document.querySelector('#event_dates').value.split(',')
});
new AirDatepicker('#publish_date', {
inline: true,
locale: locales.bg,
selectedDates: [document.querySelector('#publish_date').value]
});
</script>
@@ -0,0 +1,48 @@
<?php
/** @var \app\models\register\Collections $model */
?>
<div class="inner-content p20">
<?php if ($model->thumbnail && $model->thumbnail != "''"): ?>
<img src="https://reg.nasle.eu/uploads/collections/<?= $model->thumbnail ?>" style="height: 200px">
<?php endif; ?>
<div class="flex">
<div class="row c6">
<p><i class="lg lg-bg"></i> български</p>
<div class="row">
<h2><?= $model->name ?></h2>
</div>
<div class="row top15">
<label>Кратко описание</label>
<div>
<?= $model->annotation ?>
</div>
</div>
<div class="row top15">
<label>Oписание</label>
<div>
<?= $model->description ?>
</div>
</div>
</div>
<div class="row c6">
<p><i class="lg lg-bg"></i> английски</p>
<div class="row">
<h2><?= $model->name_en ?></h2>
</div>
<div class="row top15">
<label>Кратко описание</label>
<div>
<?= $model->annotation_en ?>
</div>
</div>
<div class="row top15">
<label>Oписание</label>
<div>
<?= $model->description_en ?>
</div>
</div>
</div>
</div>
</div>
@@ -0,0 +1,75 @@
<?php
use app\models\RegisterObjects;
use app\models\Partner;
use app\widgets\services\Includes;
/**
* @var RegisterObjects $model
*/
use app\services\ELibraryModels;
?>
<div class="inner-content p10 preview-mode">
<?php if ($model->mainImgFile): ?>
<img data-preview="<?= $model->mainImgFile ?>" src="<?= $model->mainImgFile ?>" style="height: 300px">
<?php endif; ?>
<!-- EDIT -->
<div class="row top15 c7">
<label>Име на публикацията</label>
<div><?= $model->name ?></div>
</div>
<div class="row top15 c7">
<label>Анотация</label>
<div><?= $model->annotation ?></div>
</div>
<div class="row top15 c7">
<label>Кратко описание</label>
<div><?= $model->short_description ?></div>
</div>
<div class="row top15 c7">
<label>Подробно описание</label>
<div><?= $model->description ?></div>
</div>
<div class="row top15 c7">
<label>Ключови думи</label>
<div><?= $model->getTagsList(', ') ?></div>
</div>
<?php if ($model->library): ?>
<div class="row top15 c7">
<label>Информация</label>
<div>
<?php foreach ($model->library as $key => $value):
if ($key == "id" || $key == "object_id" || $value == "''" || $value == "") continue;
switch ($key) {
case 'lib_variant':
$value = ELibraryModels::$lib_types[$value] ?? $value;
break;
case 'lib_format':
$value = ELibraryModels::$lib_format_opt[$value] ?? $value;
break;
case 'lib_license':
$value = ELibraryModels::$lib_licenses[$value][0];
break;
case 'lib_rights':
$value = ELibraryModels::$lib_rights[$value][0];
break;
case 'lib_language':
$value = ELibraryModels::getLanguages($value);
break;
}
?>
<div><b><?= ELibraryModels::$key_labels[$key] ?? $key ?></b>: <?= strip_tags($value) ?></div>
<?php endforeach; ?>
</div>
</div>
<?php endif ?>
</div>
<script>
document.querySelectorAll('[data-preview]').forEach(e => {
e.classList.add('pointer')
e.addEventListener('click', () => {
modal.modalPreview(e.dataset.preview);
})
})
</script>
@@ -0,0 +1,122 @@
<?php
use app\models\Events;
use app\models\register\Partner;
use app\widgets\FileWidget;
use app\widgets\services\Includes;
/**
* @var Events $model
*/
$media_key = $model->getMediaKey();
?>
<div class="inner-content p10">
<form autocomplete="off">
<?php if ($model->getEventType()): ?>
<input name="type" type="hidden" value="<?= $model->getEventType() ?>">
<?php endif; ?>
<div class="row c2">
<label class="require">Дати на събитието</label>
<input type="hidden" name="event_dates" id="event_dates" value="<?= $model->event_dates ?>">
</div>
<div class="row c6 top15">
<label>Локация</label>
<input name="location" placeholder="Въведи локация на събитието" value="<?= $model->location ?>"/>
</div>
<div class="row c6 top15">
<label class="require">Заглавие</label>
<input name="title" placeholder="Въведи заглавие на събитието" value="<?= $model->title ?>"/>
</div>
<div class="row top15" style="width: 350px">
<label>Заглавно изображение</label>
<?= FileWidget::widget([
'media_type' => 'image',
'object_key' => 'title_event_image',
'media_key' => $media_key,
'files' => $model->getFiles('thumb'),
'actions' => [
'add' => 'Добавяне',
'edit' => 'Редакция',
'delete' => 'Премахване'
],
'single_file' => true,
'resolutions' => ['16:11', '4:3', '1:1'],
'max_file_size' => 2,
'error_message' => 'Файловете по-големи от 2МБ, не бяха добавени'
]) ?>
</div>
<?= $this->render('/shared/instruction_1') ?>
<div class="row c9 top15">
<label class="require">Кратък текст</label>
<textarea class="ckEditor" name="text_short"><?= $model->text_short ?></textarea>
</div>
<div class="row c9 top15">
<label class="require">Пълен текст</label>
<textarea class="ckEditor" name="text"><?= $model->text ?></textarea>
</div>
<div class="row c9 top15">
<label>Изображения в събитието</label>
<?= FileWidget::widget([
'media_type' => 'image',
'object_key' => 'event_images',
'media_key' => $media_key,
'files' => $model->getFiles('thumb'),
'actions' => [
'add' => 'Добавяне на изображения',
'edit' => 'Редакция на изображение',
'delete' => 'Премахване на изображения'
],
'resolutions' => ['16:11', '16:9', '1:1'],
'max_file_size' => 2,
'error_message' => 'Файловете по-големи от 2МБ, не бяха добавени'
]) ?>
</div>
<?php if ($model->type == 'simple'): ?>
<div class="row c9 top15 flex">
<div class="c7 right10">
<label>Стрийминг линк</label>
<input onkeyup="updateLabelRequire(this, '#sta')" name="stream_url"
placeholder="Въведи линк на стрийминг"
value="<?= $model->stream_url ?>"/>
</div>
<div class="left10">
<label id="sta">Достъп</label>
<div class="flex top-page-panel"
style="height: 14px; border-radius: 3px; border-color: var(--base-background-dark)">
<?php foreach ([1 => 'Частен', 2 => 'Публичен'] as $v => $t): ?>
<label style="margin-top: -3px" class="right10 radio-error"><input
style="width: 14px; height: 14px;" type="radio"
name="stream_access" <?= $model->stream_access == $v ? 'checked' : '' ?>
value="<?= $v ?>"/> <?= $t ?>
</label>
<?php endforeach; ?>
</div>
</div>
</div>
<?php endif; ?>
<div class="row c9 top15 flex">
<?= Includes::formButtons('website/events') ?>
</div>
</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/plugins/air-datepicker/locales.js"></script>
<script src="/_public/plugins/air-datepicker/air-datepicker.js"></script>
<script>
new AirDatepicker('#event_dates', {
inline: true,
locale: locales.bg,
multipleDates: true,
multipleDatesSeparator: ',',
selectedDates: document.querySelector('#event_dates').value.split(',')
});
new AirDatepicker('#publish_date', {
inline: true,
locale: locales.bg,
selectedDates: [document.querySelector('#publish_date').value]
});
</script>
@@ -0,0 +1,163 @@
<div class="wl-switch">
<a class="" href="?listtab=list"><i class="la la-navicon"></i> Списък с експозиции</a>
<a class="selected" href="?listtab=tags"><i class="la la-navicon"></i> Тагове</a>
</div>
<?php
use app\models\ExpositionsTags;
$translations = ExpositionsTags::find()->orderBy(['id' => SORT_DESC])->all();
?>
<div class="inner-content p10">
<div class="c10 row">
<div class="row top15">
<div onclick="addTs(this)" class="btn-ib btn-default add-ts"><i class="la la-plus-circle"></i> Добави нов
таг
</div>
</div>
<div class="row-panel top15">
<input id="searchByName" style="height:13px; width: 300px" type="text" onkeydown="searchByName(this)"
placeholder="Търси по име на таг">
<div id="clearButton" onclick="clearButton()" class="btn-ib btn-default add-ts disabled left5"><i
class="la la-remove"></i>
Изчисти
</div>
<div onclick="searchButton()" class="btn-ib btn-default add-ts"><i class="la la-search"></i> Търси</div>
</div>
<table class="cms-table top15">
<thead id="header" class="<?= sizeof($translations) == 0 ? 'hidden-row' : '' ?>">
</thead>
<tbody id="tslist">
<?php if (sizeof($translations) == 0): ?>
<tr id="empty-row">
<td class="ct" style="font-size: 16px; padding: 20px" colspan="3">Няма добавени тагове</td>
</tr>
<?php else: ?>
<?php foreach ($translations as $ts): ?>
<tr class="<?= \app\services\Auth::userPartner()->partner_id != $ts->partner_id ? 'disabled' : '' ?>"
id="ID<?= $ts->id ?>" data-row-id="<?= $ts->id ?>">
<td class="c5">
<div class="flex left10">
<i class="lg lg-bg" style="margin-top: 10px"></i>
<input autocomplete="off" oninput="updateTs(this)" data-input-id="<?= $ts->id ?>"
name="name" placeholder="[BG]" value="<?= $ts->name ?>"/>
</div>
</td>
<td class="c5">
<div class="flex left10">
<i class="lg lg-en" style="margin-top: 10px"></i>
<input autocomplete="off" oninput="updateTs(this)" data-input-id="<?= $ts->id ?>"
name="name_en" placeholder="[EN]" value="<?= $ts->name_en ?>"/>
</div>
</td>
</tr>
<?php endforeach; ?>
<?php endif; ?>
</tbody>
</table>
</div>
</div>
<script>
const newRow = (id) => {
return `<tr id="ID${id}" data-row-id="${id}">
<td class="c5">
<div class="flex left10">
<i class="lg lg-bg" style="margin-top: 10px"></i>
<input autocomplete="off" oninput="updateTs(this)" data-input-id="${id}" name="name" placeholder="[BG]" value=""/>
</div>
</td>
<td class="c5">
<div class="flex left10">
<i class="lg lg-en" style="margin-top: 10px"></i>
<input autocomplete="off" oninput="updateTs(this)" data-input-id="${id}" name="name_en" placeholder="[EN]" value=""/>
</div>
</td>
</tr>`;
}
const addTs = (e) => {
e.classList.add('disabled')
request({
post: {},
done: r => {
if (r.id) {
e.classList.remove('disabled')
if (one('#empty-row')) {
one('#tslist').innerHTML = newRow(r.id)
one('#header').classList.remove('hidden-row')
} else {
let firstRow = one('#tslist tr:first-child')
let tb = document.createElement('tbody')
tb.innerHTML = newRow(r.id)
one('#tslist').insertBefore(tb.firstChild, firstRow)
}
}
}
})
}
const updateTs = (e) => {
let post = {}
post[e.name] = e.value || 'null'
request({
url: `?listtab=tags&o=w&id=${e.dataset.inputId}`, post
})
}
const searchByName = (e) => {
if (event.keyCode === 13) {
const search = e.value.toLowerCase();
const clearButton = one('#clearButton');
if (search !== '') {
clearButton.removeClass('disabled');
} else {
clearButton.addClass('disabled');
}
document.querySelectorAll(`#tslist tr`).forEach(tr => {
const vBg = tr.querySelector('td:nth-child(1) input').value.toLowerCase();
const vEn = tr.querySelector('td:nth-child(2) input').value.toLowerCase();
if (search !== '') {
if (vBg.indexOf(search) > -1 || vEn.indexOf(search) > -1) {
tr.classList.remove('hidden-row')
} else {
tr.classList.add('hidden-row')
}
} else {
tr.classList.remove('hidden-row')
}
})
}
}
const searchButton = () => {
const search = one('#searchByName').value.toLowerCase();
const clearButton = one('#clearButton');
if (search !== '') {
clearButton.removeClass('disabled');
} else {
clearButton.addClass('disabled');
}
document.querySelectorAll(`#tslist tr`).forEach(tr => {
const vBg = tr.querySelector('td:nth-child(1) input').value.toLowerCase();
const vEn = tr.querySelector('td:nth-child(2) input').value.toLowerCase();
if (search !== '') {
if (vBg.indexOf(search) > -1 || vEn.indexOf(search) > -1) {
tr.classList.remove('hidden-row')
} else {
tr.classList.add('hidden-row')
}
} else {
tr.classList.remove('hidden-row')
}
});
}
const clearButton = () => {
one('#searchByName').value = '';
document.querySelectorAll(`#tslist tr`).forEach(tr => {
tr.classList.remove('hidden-row')
})
const clearButton = one('#clearButton');
clearButton.addClass('disabled');
}
</script>
@@ -0,0 +1,104 @@
<?php
use app\models\ExpositionsCategories;
use app\models\Partner;
use app\widgets\FileWidget;
use app\widgets\services\Includes;
/**
* @var \app\models\Expositions $model
*/
$media_key = $model->getMediaKey();
?>
<div class="inner-content p10">
<form autocomplete="off">
<div class="row c9 top15">
<label>Галерия</label>
<?= FileWidget::widget([
'media_type' => 'image',
'object_key' => 'title_expositions_images',
'media_key' => $media_key,
'model_id' => $model->id,
'model_class' => \app\models\Expositions::class,
'files' => $model->getFiles('thumb'),
'actions' => [
'add' => 'Добавяне на изображение',
'edit' => 'Редакция на изображенито',
'delete' => 'Премахване на изображението'
],
'resolutions' => ['1:1', '16:11'],
'max_file_size' => 2,
'error_message' => 'Файловете по-големи от 2МБ, не бяха добавени'
]) ?>
</div>
<div class="flex top15 c9">
<div class="row c6 right10">
<label class="require">Име на експозиция (BG)</label>
<input name="name" placeholder="Въведи име на експозиция"
value="<?= $model->name ?>"/>
</div>
<div class="row c6">
<label class="require">Име на експозиция (EN)</label>
<input name="ts_en_name" placeholder="Въведи име на експозиция"
value="<?= $model->ts_en_name ?>"/>
</div>
</div>
<div class="flex top15 c9">
<div class="row c3 right10">
<label class="require">Категория</label>
<select name="category_id">
<option selected disabled>-- избери категория --</option>
<?php foreach (ExpositionsCategories::dropDownList($model->category_id) as $category): ?>
<option value="<?= $category->id ?>" <?= $category->selected ?>><?= $category->name ?></option>
<?php endforeach; ?>
</select>
</div>
</div>
<div class="row c9 top15">
<label class="require">Анотация</label>
<textarea class="ckEditor" name="annotation"><?= $model->{'annotation'} ?></textarea>
</div>
<div class="row c9 top15">
<label class="require">Описание</label>
<textarea class="ckEditor" name="description"><?= $model->{'description'} ?></textarea>
</div>
<div class="row c9 top15">
<label>Тагове</label>
<select style="display:none;" class="search-select-box" multiple
name="tag_list[]">
<option disabled value="">-- избери тагове --</option>
<?php foreach ($model->getTagList() as $item): ?>
<option <?= $item['selected'] ?>
value="<?= $item['id'] ?>"><?= $item['name'] ?></option>
<?php endforeach; ?>
</select>
</div>
<div class="row c9 top15">
<label class="require">Информационен център</label>
<input name="info_center" placeholder="Въведи име на информационен център"
value="<?= $model->info_center ?>"/>
</div>
<div class="row c9 top15">
<label class="require">Информационен център адрес</label>
<input name="info_center_address" placeholder="Въведи адрес на информационен център"
value="<?= $model->info_center_address ?>"/>
</div>
<div class="row flex c9 top15">
<?= Includes::formButtons('website/expositions') ?>
</div>
</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 => {
new SearchBox(el)
})
</script>
@@ -0,0 +1,97 @@
<?php
use app\models\News;
use app\models\register\Partner;
use app\widgets\FileWidget;
use app\widgets\services\Includes;
/**
* @var News $model
*/
$media_key = $model->getMediaKey();
?>
<div class="inner-content p10">
<form autocomplete="off">
<div class="row c5 top15">
<label class="require">Заглавие</label>
<input name="title" placeholder="Въведи заглавие на новината" value="<?= $model->title ?>"/>
</div>
<div class="row c9 top15">
<label>Заглавно изображение</label>
<?= FileWidget::widget([
'media_type' => 'image',
'object_key' => 'title_news_image',
'media_key' => $media_key,
'files' => $model->getFiles('thumb'),
'actions' => [
'add' => 'Добавяне на изображение',
'edit' => 'Редакция на изображенито',
'delete' => 'Премахване на изображението'
],
'single_file' => true,
'resolutions' => ['16:11', '1:1'],
'max_file_size' => 2,
'error_message' => 'Файловете по-големи от 2МБ, не бяха добавени'
]) ?>
</div>
<?= $this->render('/shared/instruction_1') ?>
<div class="row c9 top15">
<label class="require">Кратък текст (на български)</label>
<textarea class="ckEditor" name="text_short"><?= $model->text_short ?></textarea>
</div>
<div class="row c9 top15">
<label class="require">Пълен текст (на български)</label>
<textarea class="ckEditor" name="text"><?= $model->text ?></textarea>
</div>
<div class="row c9 top15">
<label>Изображения в новината</label>
<?= FileWidget::widget([
'media_type' => 'image',
'object_key' => 'news_images',
'media_key' => $media_key,
'files' => $model->getFiles('thumb'),
'actions' => [
'add' => 'Добавяне на изображения',
'edit' => 'Редакция на изображение',
'delete' => 'Премахване на изображения'
],
'resolutions' => ['16:11', '16:9', '1:1'],
'max_file_size' => 2,
'error_message' => 'Файловете по-големи от 2МБ, не бяха добавени'
]) ?>
</div>
<div class="row c9 top15 flex">
<div class="c7 right10">
<label>Стрийминг линк</label>
<input onkeyup="updateLabelRequire(this, '#sta')" name="stream_url" placeholder="Въведи линк на стрийминг"
value="<?= $model->stream_url ?>"/>
</div>
<div class="left10">
<label id="sta">Достъп</label>
<div class="flex top-page-panel" style="height: 14px; border-radius: 3px; border-color: var(--base-background-dark)">
<?php foreach ([1 => 'Частен', 2 => 'Публичен'] as $v => $t): ?>
<label style="margin-top: -3px" class="right10 radio-error"><input style="width: 14px; height: 14px;" type="radio" name="stream_access" <?= $model->stream_access == $v ? 'checked' : '' ?>
value="<?= $v ?>"/> <?= $t ?>
</label>
<?php endforeach; ?>
</div>
</div>
</div>
<div class="row c9 top15 flex">
<?= Includes::formButtons('website/news') ?>
</div>
</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/plugins/air-datepicker/locales.js"></script>
<script src="/_public/plugins/air-datepicker/air-datepicker.js"></script>
<script>
new AirDatepicker('#publish_date', {
inline: true,
locale: locales.bg,
selectedDates: [document.querySelector('#publish_date').value]
});
</script>
@@ -0,0 +1,81 @@
<?php
use app\models\CmsRights;
use app\widgets\FileWidget;
use app\widgets\services\Includes;
/**
* @var CmsRights $model
*/
$media_key = $model->getMediaKey();
;
?>
<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>
<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>
@@ -0,0 +1,84 @@
<?php
use app\models\Projects;
use app\models\register\Partner;
use app\widgets\FileWidget;
use app\widgets\services\Includes;
/**
* @var Projects $model
*/
$media_key = $model->getMediaKey();
$partnerIds = $model->partnersIds();
?>
<div class="inner-content p10">
<form autocomplete="off">
<div class="row c5 top15">
<label class="require">Заглавие</label>
<input name="title" placeholder="Въведи заглавие на проекта" value="<?= $model->title ?>"/>
</div>
<div class="row c9 top15">
<label>Заглавно изображение</label>
<?= FileWidget::widget([
'media_type' => 'image',
'object_key' => 'title_project_image',
'media_key' => $media_key,
'files' => $model->getFiles('thumb'),
'actions' => [
'add' => 'Добавяне на изображение',
'edit' => 'Редакция на изображенито',
'delete' => 'Премахване на изображението'
],
'single_file' => true,
'resolutions' => ['11:14', '16:11', '16:9', '1:1'],
'max_file_size' => 2,
'error_message' => 'Файловете по-големи от 2МБ, не бяха добавени'
]) ?>
</div>
<div class="row c9 top15">
<label class="require">Пълен текст (на български)</label>
<textarea class="ckEditor" name="text"><?= $model->text ?></textarea>
</div>
<div class="row c9 top15">
<label>Кратък текст (на български)</label>
<textarea class="ckEditor" name="text_short"><?= $model->text_short ?></textarea>
</div>
<div class="row c9 top15">
<label>Договор (на български)</label>
<textarea class="ckEditor" name="text_contract"><?= $model->text_contract ?></textarea>
</div>
<div class="row c5 top15">
<label>Период (начална дата - крайна дата)</label>
<input name="period" value="<?= $model->period ?>">
</div>
<div class="row c5 top15">
<label>Уебсайт на проекта</label>
<input name="website" placeholder="Въведи заглавие на проекта" value="<?= $model->website ?>"/>
</div>
<div class="row c9 top30 flex">
<?= Includes::formButtons('website/projects') ?>
</div>
</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/plugins/air-datepicker/locales.js"></script>
<script src="/_public/plugins/air-datepicker/air-datepicker.js"></script>
<script src="/_public/assets/js/search-box.js"></script>
<script>
new AirDatepicker('#period_date_start', {
inline: true,
locale: locales.bg,
selectedDates: [document.querySelector('#period_date_start').value]
});
new AirDatepicker('#period_date_end', {
inline: true,
locale: locales.bg,
selectedDates: [document.querySelector('#period_date_end').value]
});
all('.search-select-box').forEach(el => {
new SearchBox(el)
})
</script>
@@ -0,0 +1,30 @@
<?php
use app\models\RegisterObjects;
use app\models\Partner;
use app\widgets\services\Includes;
/**
* @var RegisterObjects $model
*/
?>
<div class="inner-content p10 preview-mode">
<!-- EDIT -->
<div class="row top15 c7">
<label>Име на обекта</label>
<div><?= $model->name ?></div>
</div>
<div class="row top15 c7">
<label>Анотация</label>
<div><?= $model->annotation ?></div>
</div>
<div class="row top15 c7">
<label>Кратко описание</label>
<div><?= $model->short_description ?></div>
</div>
<div class="row top15 c7">
<label>Подробно описание</label>
<div><?= $model->description ?></div>
</div>
</div>
@@ -0,0 +1,175 @@
<?php
use app\models\CmsRoles;
use app\models\Partner;
use app\models\UserPartner;
use app\services\JWT;
/**
* @var \app\models\UserPartner $model
*/
?>
<style>
.preview-only form * {
pointer-events: none;
}
</style>
<div class="inner-content p10 preview-only">
<?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">
<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="c6">
<label class="require">Научна степен / звание</label>
<input name="science_degree" placeholder="Въведи научна степен / звание"
value="<?= $model->science_degree ?>"/>
</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">
<div class="right10 c6">
<label class="require">Име</label>
<input name="first_name" placeholder="Име" value="<?= $model->first_name ?>">
</div>
<div class="right10 c6">
<label class="require">Презиме</label>
<input name="middle_name" placeholder="Презиме" value="<?= $model->middle_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>
<input name="position" placeholder="Въведете длъжност" value="<?= $model->position ?>">
</div>
<div class="c6 right10">
<label>Телефон</label>
<input name="phone" placeholder="Въведете телефон" value="<?= $model->phone ?>">
</div>
<div class="c6"></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">
<a href="<?= Yii::$app->goTo('website/users') ?><?= isset($_GET['p']) ? '?p=' . $_GET['p'] : '' ?>"
class="btn btn-default right10"><i class="la la-undo"></i> Назад</a>
</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>