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,99 @@
<link rel="stylesheet" href="/_public/assets/css/page.css">
<link rel="stylesheet" href="/_public/assets/css/article-module.css">
<link rel="stylesheet" href="/_public/assets/css/user.css">
<?php
use app\models\Ts;
use app\services\ViewReg;
use app\widgets\Carousel;
use app\widgets\Includes;
/**
* @var \yii\web\View $this
* @var \app\models\Articles $model ;
* @var $type
*/
Ts::set([2, 12, 6, 7, 8, 43, 100, 105, 106, 107, 108, 109, 110, 111, 171, 172, 173, 174, 175, 177, 178, 190, 191, 192, 193, 194, 223, 244]);
$encode = '?' . base64_encode(json_encode(['art_table' => 'art_table=news']));
$articlesUrl = ViewReg::generateArticleListUrl();
Yii::$app->controller->pageTitle = $model->article->title();
Yii::$app->controller->description = strip_tags($model->article->text());
Yii::$app->controller->img = $model->article->image();
?>
<div class="content mobile-hide">
<div class="page-header" style="height: 80px">
<a href="<?= Yii::$app->goHome() ?>" class="header-logo top-care">
<?php if (Yii::$app->language == 'en'): ?>
<img src="/_public/images/logo_en/N-logo-03.png">
<?php else: ?>
<img src="/_public/images/logo.png">
<?php endif; ?>
</a>
</div>
</div>
<?php if (!empty($_GET['booking'])): ?>
<?= $this->render('/site/includes/_booking', ['model' => $model]) ?>
<?php else: ?>
<div class="content">
<div class="detail-page-filter filter-buttons flex-center top50">
<button data-filter="art_table=news" <?= $type == 'news' ? 'class="active"' : '' ?>><?= Ts::get(6) ?></button>
<button data-filter="art_table=events" <?= $type == 'events' ? 'class="active"' : '' ?>><?= Ts::get(7) ?></button>
<button data-filter="art_table=campaigns" <?= $type == 'campaigns' ? 'class="active"' : '' ?>><?= Ts::get(8) ?></button>
</div>
<div class="detail-title top50"><?= $model->article->title() ?></div>
<div class="top50">
<?php Carousel::widget(['article' => $model->article, 'type' => 'article_detail_gallery']) ?>
</div>
<div class="top25">
<?= $this->render('/site/includes/relation_buttons', ['model' => $model]) ?>
</div>
<div class="content-inner top25 article-content">
<?php if ($model->art_table == 'news'): ?>
<?= Ts::get(190)?>
<div class="detail-date top5">
<?= date('d.m.Y', strtotime($model->publish_date)) ?>
</div>
<?php endif ?>
<?php if ($model->art_table == 'campaigns'): ?>
<div class="detail-date' ?>">
<?= Ts::get(106)?>: <?= $model->campaigns->getFormattedDates() ?>
</div>
<?php endif ?>
<?php if ($model->art_table == 'events'): ?>
<div class="flex">
<div class="cw8 detail-text">
<?= $model->article->text() ?>
</div>
<div class="cw4">
<?= $this->render('/site/includes/event_options', ['model' => $model->article]) ?>
</div>
</div>
<?php else: ?>
<div class="detail-text">
<?= $model->article->text() ?>
</div>
<?php endif; ?>
</div>
<div class="top20">
<?php
Carousel::widget([
'type' => 'more_articles',
'id' => 1
]);
?>
</div>
</div>
<?php endif; ?>
<script>
const l = '<?= $articlesUrl ?>';
document.querySelectorAll('[data-filter]').forEach(e => {
e.addEventListener('click', () => {
let filter = {};
filter['art_table'] = e.dataset.filter;
const key = `?${btoa(JSON.stringify(filter))}`
window.location.href = l + key
})
})
</script>
@@ -0,0 +1,81 @@
<?php
/* @var $this \yii\web\View */
/* @var $slug mixed */
/**
* @var $slug
*/
use app\models\register\Collections;
use app\models\Ts;
use app\services\Formatter;
use app\services\ViewReg;
use app\widgets\Carousel;
$encodeId = explode('-', $slug)[0];
$id = Formatter::decodeId($encodeId);
/** @var Collections $model */
$model = Collections::findOne($id);
ViewReg::localeSwitchPage('collections', $model->id, $model->name, $model->name_en);
Ts::set([41, 42, 43, 47, 223]);
Yii::$app->controller->pageTitle = $model->title();
Yii::$app->controller->description = strip_tags($model->textDescription());
Yii::$app->controller->img = $model->getImg();
?>
<link rel="stylesheet" href="/_public/assets/css/page.css">
<link rel="stylesheet" href="/_public/assets/css/article-module.css">
<style>
header {
border-bottom: 0 !important;
}
.dp-collection-selected-collections {
margin: -30px 0 0 -10px;
}
.dp-collection-selected-collections .top-care {
display: none;
}
</style>
<div class="content">
<div class="page-header" style="height: 400px; overflow: hidden">
<a href="<?= Yii::$app->goHome() ?>" class="top-care">
<?php if (Yii::$app->language == 'en'): ?>
<img src="/_public/images/logo_en/N-logo-02.png" style="margin-top: 15px">
<?php else: ?>
<img src="/_public/images/logo-b.png" style="margin-top: 15px">
<?php endif; ?>
</a>
<?php if ($model && $model->getHeaderImg()): ?>
<img class="header-img" src="<?= $model->getHeaderImg() ?>" style="width: 100%">
<?php endif; ?>
<div class="header-image-title"><?= $model->title() ?></div>
<a class="bottom-care link"
href="<?= ViewReg::generateListUrl('collections') ?>"><?= \app\models\Ts::get(42) ?></a>
</div>
</div>
<div class="content">
<div class="detail-text top50">
<?= $model->textDescription() ?>
</div>
<div class="top25">
<div class="flex flex-right"><?= $this->render('/site/includes/relation_buttons', ['model' => $model]) ?></div>
</div>
<?= $this->render('/site/includes/list_collection_objects', ['model' => $model, 'partner_id' => null]) ?>
<div class="title-list top15">
<?= Ts::get(43) ?>
</div>
<div class="dp-collection-selected-collections">
<?php Carousel::widget([
'type' => 'positions_inner_page_collections',
'id' => 1
]);
?>
</div>
</div>
@@ -0,0 +1,173 @@
<link rel="stylesheet" href="/_public/assets/css/page.css">
<link rel="stylesheet" href="/_public/assets/css/article-module.css">
<?php
use app\models\Ts;
use app\services\ELibraryModels;
use app\services\Formatter;
use app\models\RegisterObjects;
use app\services\JWT;
use app\services\ViewReg;
/**
* @var $slug
*/
$encodeId = explode('-', $slug)[0];
$id = Formatter::decodeId($encodeId);
/** @var RegisterObjects $model */
$model = RegisterObjects::findOne($id);
ViewReg::localeSwitchPage('e-library', $model->id, $model->name, $model->ts_en_name);
Yii::$app->controller->pageTitle = $model->getTitle();
\app\models\Ts::set([115, 162, 166, 167, 168, 169, 180, 223]);
$lg = Yii::$app->language;
Yii::$app->controller->pageTitle = $model->getTitle();
Yii::$app->controller->description = strip_tags($model->getLongText());
Yii::$app->controller->img = $model->getImg();
?>
<div class="content">
<div class="page-header mobile-hide" style="height: 80px">
<a href="<?= Yii::$app->goHome() ?>" class="header-logo top-care">
<?php if (Yii::$app->language == 'en'): ?>
<img src="/_public/images/logo_en/N-logo-03.png">
<?php else: ?>
<img src="/_public/images/logo.png">
<?php endif; ?>
</a>
</div>
</div>
<div class="ld top25">
<div class="filter-buttons flex-center">
<button onclick="window.location.href='<?= Yii::$app->goToAction($lg == 'en' ? 'e-library' : 'e-biblioteka') ?>'">
<i class="la la-undo"></i> <?= Ts::get(169) ?></button>
</div>
<div class="flex top25">
<div class="book-image">
<img src="<?= $model->getMainImgFile() ?>">
<div class="top25">
<?= $this->render('/site/includes/relation_buttons', ['model' => $model]) ?>
</div>
</div>
<div class="book-info">
<div class="title"><?= $model->getTitle() ?></div>
<div class="author top25">
<span class="list-label news"><?= Ts::get(162) ?></span>
<span class="font-bold"><?= $model->created_by ?></span>
</div>
<?php if ($model->created_year): ?>
<div class="info-row">
<label><?= Ts::get(167) ?>:</label>
<div class="font-bold"><?= $model->created_year ?></div>
</div>
<?php endif; ?>
<?php foreach ($model->registerObjectFields as $objectField): ?>
<?php if ($objectField->field && $objectField->fieldValue): ?>
<div class="info-row">
<label><?= $objectField->field->getNameByLocale() ?>:</label>
<div class="font-bold"><?= $objectField->fieldValue->getNameByLocale() ?></div>
</div>
<?php endif; ?>
<?php endforeach; ?>
<?php if ($model->partner): ?>
<div class="author top25 flex partner">
<span class="list-label campaigns"><?= Ts::get(166) ?></span>
<span class="partner-name"><?= $model->partner->getTsName() ?></span>
</div>
<?php endif; ?>
<?php if ($model->pdf): ?>
<?php if ($model->price && $model->is_payable): ?>
<div class="price top50"><?= number_format($model->price, 2, '.', ' ') ?> лв.</div>
<?php
$user = \app\services\Auth::getUser();
$paid = false;
if ($user) {
$product = \app\models\OrderProduct::find()->joinWith('order')->where(['model_class' => RegisterObjects::class, 'model_id' => $model->id, 'user_id' => $user->id])->one();
if ($product && $product->order->payment && $product->order->payment->status == 'PAID') {
$paid = true;
}
}
?>
<?php if (!$paid): ?>
<button data-cart="<?= $model->cartKey ?>"
onclick="cart.add(this, e => {cart.updateSubscriptions(e, 'add')})"
class="button top25"><i
class="la la-shopping-cart"></i> <?= Ts::get(115) ?></button>
<?php else: ?>
<div class="top25">
<button data-pdf="<?= JWT::encode(['id' => $model->pdf->id], JWT::SECRET_KEY) ?>/"
class="button"><?= Ts::get(168) ?></button>
</div>
<?php endif ?>
<?php else: ?>
<div class="top25">
<button data-pdf="<?= JWT::encode(['id' => $model->pdf->id], JWT::SECRET_KEY) ?>/"
class="button"><?= Ts::get(168) ?></button>
</div>
<?php endif ?>
<?php else: ?>
<p style="color: coral"><?= Ts::get(180) ?></p>
<?php endif; ?>
</div>
</div>
<?php //if ($model->library && !empty($_GET['lib']) && $_GET['lib'] == 'sichtbar'): ?>
<?php
$labelIndex = $lg == 'en' ? 1 : 0
?>
<div class="library-nodes-wrapper open top25">
<label onclick="toggleInfo(this)"><?= $lg == 'en' ? 'Information' : 'Информация'?><i class="la la-chevron-up"></i><i class="la la-chevron-down"></i></label>
<div class="library-nodes">
<div class="node">
<b><?= $lg == 'en' ? 'Keywords' : 'Ключови думи'?></b>: <?= $model->getTagsList(', ')?>
</div>
<?php if ($model->library): ?>
<?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][$labelIndex] ?? $value;
break;
case 'lib_format':
$value = ELibraryModels::$lib_format_opt[$value][$labelIndex] ?? $value;
break;
case 'lib_language':
$value = ELibraryModels::getLanguages($value);
break;
case 'lib_license':
$value = ELibraryModels::$lib_licenses[$value][$labelIndex] ?? $value;
break;
case 'lib_rights':
$value = ELibraryModels::$lib_rights[$value][$labelIndex] ?? $value;
break;
}
?>
<div class="node">
<b><?= ELibraryModels::$key_labels[$key][$labelIndex] ?? $key ?></b>: <?= strip_tags($value) ?>
</div>
<?php endforeach; ?>
<?php endif; ?>
</div>
</div>
<?php //endif; ?>
<div class="book-description top50">
<?= $model->getAnnotation() ?>
</div>
</div>
<script>
function toggleInfo(e) {
if(e.parentNode.classList.contains('open')) {
e.parentNode.classList.remove('open')
} else {
e.parentNode.classList.add('open')
}
}
</script>
@@ -0,0 +1,88 @@
<link rel="stylesheet" href="/_public/assets/css/page.css">
<link rel="stylesheet" href="/_public/assets/css/article-module.css">
<?php
/* @var $this \yii\web\View */
/* @var $slug mixed */
/**
* @var $slug
*/
use app\models\Expositions;
use app\models\Ts;
use app\services\Formatter;
use app\services\ViewReg;
use app\widgets\Carousel;
use app\widgets\Includes;
$encodeId = explode('-', $slug)[0];
$id = Formatter::decodeId($encodeId);
/** @var Expositions $model */
$model = Expositions::findOne($id);
ViewReg::localeSwitchPage('expositions', $model->id, $model->name, $model->ts_en_name);
Yii::$app->controller->pageTitle = $model->title();
Yii::$app->controller->description = strip_tags($model->textDescription());
Yii::$app->controller->img = $model->getImg();
Ts::set([43, 45, 46, 47, 223]);
$exposition_id = base64_decode($_SERVER['QUERY_STRING']);
$exposition = \app\models\Expositions::findOne($exposition_id);
$partner_id = null;
?>
<style>
.dp-collection-selected-collections {
margin: -30px 0 0 -10px;
}
.dp-collection-selected-collections .top-care {
}
</style>
<div class="content">
<div class="page-header mobile-hide" style="height: 80px">
<a href="<?= Yii::$app->goHome() ?>" class="header-logo top-care">
<?php if (Yii::$app->language == 'en'): ?>
<img src="/_public/images/logo_en/N-logo-03.png">
<?php else: ?>
<img src="/_public/images/logo.png">
<?php endif; ?>
</a>
</div>
<div class="detail-page-breadcrumb flex-center flex top50">
<a href="/<?= Yii::$app->language ?>/">Начало</a>
<a href="<?= \app\services\ViewReg::generateListUrl('expositions') ?>"><?= Ts::get(46) /* Expositions */ ?></a>
<?php if ($exposition): ?><a href="<?= $exposition->getUrl() ?>"><?= $exposition->title() ?></a><?php endif; ?>
</div>
<div class="detail-title top50">
<?= $model->title() ?>
</div>
<div class="top50">
<?php Carousel::widget(['article' => $model, 'type' => 'exposition_detail_gallery']) ?>
</div>
<div class="top25">
<?= $this->render('/site/includes/relation_buttons', ['model' => $model]) ?>
</div>
</div>
<div class="content">
<div class="detail-text top50">
<?= $model->textDescription() ?>
</div>
<?= $this->render('/site/includes/list_exposition_objects', ['model' => $model, 'partner_id' => $partner_id]) ?>
<div class="title-list top15">
<?= Ts::get(43) ?>
</div>
<div class="dp-collection-selected-collections">
<?php Carousel::widget([
'type' => 'positions_inner_page_expositions',
'id' => 1
]);
?>
</div>
</div>
@@ -0,0 +1,102 @@
<link rel="stylesheet" href="/_public/assets/css/page.css">
<link rel="stylesheet" href="/_public/assets/css/article-module.css">
<?php
/**
* @var $slug
* @var $webPage
*/
use app\models\RegisterObjects;
use app\models\Ts;
use app\services\Formatter;
use app\services\ViewReg;
use app\widgets\Carousel;
$encodeId = explode('-', $slug)[0];
$id = Formatter::decodeId($encodeId);
/** @var \app\models\RegisterObjects $model */
$model = RegisterObjects::findOne($id);
ViewReg::localePartnerSwitchPage($webPage, $model->id, $model->name, $model->ts_en_name);
Yii::$app->controller->pageTitle = $model->getTitle();
Yii::$app->controller->description = strip_tags($model->getLongText());
Yii::$app->controller->img = $model->getImg();
Ts::set([41, 44, 46, 49, 128, 133, 155, 156, 157, 158, 159, 160, 161, 223, 240, 249, 250]);
$collection_id = base64_decode($_SERVER['QUERY_STRING']);
$collection = \app\models\register\Collections::findOne($collection_id);
?>
<div class="content">
<div class="page-header mobile-hide" style="height: 80px">
<a href="<?= Yii::$app->goHome() ?>" class="header-logo top-care">
<?php if (Yii::$app->language == 'en'): ?>
<img src="/_public/images/logo_en/N-logo-03.png">
<?php else: ?>
<img src="/_public/images/logo.png">
<?php endif; ?>
</a>
</div>
<div class="detail-page-breadcrumb flex-center flex top50">
<a href="/<?= Yii::$app->language . '/' . ViewReg::partnerSite() ?>"><?= Ts::get(49) ?></a>
<?php if ($webPage == 'collections-objects' || $webPage == 'kolektsii-obekti'): ?>
<?php
$collection_id = base64_decode($_SERVER['QUERY_STRING']);
$collection = \app\models\register\Collections::findOne($collection_id);
?>
<a href="<?= \app\services\ViewReg::generateListUrl('collections') ?>"><?= Ts::get(44) /* Collections */ ?></a>
<?php if ($collection): ?><a
href="<?= $collection->getUrl() ?>"><?= $collection->title() ?></a><?php endif; ?>
<?php endif ?>
<?php if ($webPage == 'expositions-objects' || $webPage == 'ekspozitsii-obekti'): ?>
<?php
$exposition_id = base64_decode($_SERVER['QUERY_STRING']);
$exposition = \app\models\Expositions::findOne($exposition_id);
?>
<a href="<?= \app\services\ViewReg::generateListUrl('expositions') ?>"><?= Ts::get(46) /* Expositions */ ?></a>
<?php if ($exposition): ?><a
href="<?= $exposition->getUrl() ?>"><?= $exposition->title() ?></a><?php endif; ?>
<?php endif ?>
</div>
<div class="detail-title top50">
<?= $model->getTitle() ?>
</div>
<div class="top50">
<?php Carousel::widget(['article' => $model, 'type' => 'object_detail_gallery']) ?>
</div>
<div class="top25">
<?= $this->render('/site/includes/relation_buttons', ['model' => $model]) ?>
</div>
<?php if ($model->publish_date): ?>
<div class="detail-date top50">
<?= date('d.m.Y/H:i', strtotime($model->publish_date)) ?>
</div>
<?php elseif ($model->date_updated): ?>
<div class="detail-date top50">
<?= date('d.m.Y/H:i', strtotime($model->date_updated)) ?>
</div>
<?php endif; ?>
<div class="flex top25 object-content">
<div class="detail-text cw8 right-50">
<?= $model->getLongText() ?>
</div>
<div class="object-detail-info cw4">
<?= $this->render('/site/includes/info_object', ['model' => $model]) ?>
</div>
</div>
<?php if ($model->getVideoCount() > 0): ?>
<?= $this->render('/site/includes/list_collection_objects_videos', ['model' => $model]) ?>
<?php endif; ?>
<?php if ($model->get3DModelCount() > 0): ?>
<?= $this->render('/site/includes/list_collection_objects_3d_models', ['model' => $model]) ?>
<?php endif; ?>
<?php if (sizeof($model->pdfDocuments) > 0): ?>
<?= $this->render('/site/includes/list_object_pdf_files', ['model' => $model]) ?>
<?php endif; ?>
<?= $this->render('/site/includes/object_tabs', ['model' => $model]) ?>
</div>
<?= $this->render('/_object_location_map', ['model' => $model])?>
@@ -0,0 +1,172 @@
<?php
/**
* @var $slug
*/
use app\models\Projects;
use app\models\Ts;
use app\services\Formatter;
use app\services\ViewReg;
$encodeId = explode('-', $slug)[0];
$id = Formatter::decodeId($encodeId);
/** @var Projects $model */
$model = Projects::findOne($id);
ViewReg::localeSwitchPage('projects', $model->id, $model->title, $model->ts_en_title);
Ts::set([25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 223]);
Yii::$app->controller->pageTitle = $model->title();
Yii::$app->controller->description = strip_tags($model->textLong());
Yii::$app->controller->img = $model->getSrcOfSingleImage('title_project_image')
?>
<link rel="stylesheet" href="/_public/assets/css/page.css">
<link rel="stylesheet" href="/_public/assets/css/article-module.css">
<div class="content mobile-hide">
<a href="/<?= Yii::$app->language ?>/"><img src="/_public/images/logo-b.png" class="logo-left-absolute"></a>
<div class="page-header">
<div class="header-logo top-care text-white">
<a href="<?= ViewReg::generateListUrl('projects') ?>"><?= Ts::get(25) ?></a>
</div>
</div>
</div>
<div class="content">
<div class="detail-title top120"><?= $model->title() ?></div>
<div class="top50 detail-page-image">
<img src="<?= $model->getSrcOfSingleImage('title_project_image') ?>">
</div>
<div class="top25">
<?= $this->render('/site/includes/relation_buttons', ['model' => $model]) ?>
</div>
<div class="content top50 objet-detail">
<div class="detail-date">
<?= date('d.m.Y/H:i', strtotime($model->publish_date)) ?>
</div>
<div class="flex">
<div class="detail-text cw8 right-50">
<?= $model->textLong() ?>
</div>
<div class="right-info cw4">
<div class="header-title"><?= Ts::get(26) ?></div>
<div class="body body-info">
<?php if ($model->period): ?>
<div class="body-row">
<b><?= Ts::get(27) ?>
:</b> <?= $model->period ?>
</div>
<?php endif; ?>
<?php if (sizeof($model->projectPartners)): ?>
<div class="body-row">
<b><?= Ts::get(29) ?>:</b>
<?php
$partners = [];
/** @var \app\models\ProjectsPartner $projectPartner */
foreach ($model->projectPartners as $projectPartner):
$partners[] = $projectPartner->partner->name;
endforeach; ?>
<?= implode(', ', $partners) ?>
</div>
<?php endif; ?>
<?php if ($model->text_contract): ?>
<div class="body-row">
<b><?= Ts::get(30) ?>:</b> <?= $model->textContract() ?>
</div>
<?php endif; ?>
<div class="body-row">
<b><?= Ts::get(31) ?>:</b>
<?php if ($model->text_short): ?>
<?= $model->textShort() ?>
<?php endif; ?>
</div>
<?php if ($model->website): ?>
<div class="body-row">
<b><?= Ts::get(32) ?>:</b>
<a target="_blank" href="<?= $model->website ?>"><?= $model->website ?></a>
</div>
<?php endif; ?>
<!-- Publications -->
<?php if (sizeof($model->getPublications()) > 0): ?>
<div class="body-row">
<b><?= Ts::get(33) ?>:</b>
<?= $model->website ?>
</div>
<?php endif; ?>
</div>
<div class="header-title"><?= Ts::get(28) ?></div>
<div class="body body-files">
<!-- GALLERY -->
<?php if (sizeof($model->getSrcOfMultipleImages('project_images', null)) > 0): ?>
<div class="body-row flex">
<b><?= Ts::get(34) ?>:</b> <a style="cursor: pointer" onclick="openGallery()"><?= Ts::get(36) ?></a>
</div>
<?php endif; ?>
<!-- PRESENTATION -->
<?php if (sizeof($model->getPresentationList()) > 0): ?>
<div class="body-row flex">
<b><?= Ts::get(35) ?>:</b>
<div>
<?php foreach ($model->getPresentationList() as $document): ?>
<a href="<?= $document->download ?>"><?= $document->name ?></a>
<?php endforeach; ?>
</div>
</div>
<?php endif; ?>
<?php if (sizeof($model->videoList()) > 0): ?>
<!-- VIDEO -->
<div class="body-row flex">
<b><?= Ts::get(37) ?>:</b>
<?php foreach ($model->videoList() as $document): ?>
<a target="_blank" href="<?= $document->preview ?>"><?= $document->name ?></a>
<?php endforeach; ?>
</div>
<?php endif; ?>
<!-- AUDIO -->
<?php if (sizeof($model->audioList())): ?>
<div class="body-row flex">
<b><?= Ts::get(38) ?>:</b>
<?php foreach ($model->audioList() as $document): ?>
<a target="_blank" href="<?= $document->preview ?>"><?= $document->name ?></a>
<?php endforeach; ?>
</div>
<?php endif; ?>
<?php if (sizeof($model->getDocsList()) > 0): ?>
<!-- DOCUMENTS -->
<div class="body-row flex">
<b><?= Ts::get(39) ?>:</b>
<div>
<?php foreach ($model->getDocsList() as $document): ?>
<a target="_blank" href="<?= $document->download ?>"><?= $document->name ?></a>
<?php endforeach; ?>
</div>
</div>
<?php endif; ?>
</div>
</div>
</div>
</div>
</div>
<div class="gallery photoswipe-gallery" data-pswp-uid="1" style="display: none">
<?php foreach ($model->getSrcOfMultipleImages('project_images', null) as $picture): ?>
<a href="<?= $picture ?>"
data-size="1183x1183"
data-med="<?= $picture ?>"
data-med-size="1183x1183"
data-title="">
<img class="load" src="<?= $picture ?>" style="height: 500px">
</a>
<?php endforeach; ?>
</div>
<?= $this->render('/site/includes/_photoswipe'); ?>
<script>
const galleryFirstElement = document.querySelector('.gallery a:first-child');
function openGallery() {
event.preventDefault();
galleryFirstElement.click();
}
</script>
@@ -0,0 +1,160 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src="/src/page/layout/resources/js/amp-script.js" defer></script>
<style>
body {
background-color: #DBDBDB;
}
canvas {
position: absolute;
top: 0;
left: 0;
width: 100vw;
height: 100vh;
z-index: -1;
pointer-events: none;
}
.grid {
display: grid;
grid-template-columns: auto min-content;
justify-content: center;
justify-items: end;
align-items: center;
gap: 5px 10px;
}
input {
margin: 0;
}
</style>
<script>
const volume = document.getElementById('volume')
const bass = document.getElementById('bass')
const mid = document.getElementById('mid')
const treble = document.getElementById('treble')
const visualizer = document.getElementById('visualizer')
const context = new AudioContext()
const analyserNode = new AnalyserNode(context, { fftSize: 256 })
const gainNode = new GainNode(context, { gain: volume.value})
const bassEQ = new BiquadFilterNode(context, {
type: 'lowshelf',
frequency: 500,
gain: bass.value
})
const midEQ = new BiquadFilterNode(context, {
type: 'peaking',
Q: Math.SQRT1_2,
frequency: 1500,
gain: mid.value
})
const trebleEQ = new BiquadFilterNode(context, {
type: 'highshelf',
frequency: 3000,
gain: treble.value
})
setupEventListeners()
setupContext()
resize()
drawVisualizer()
function setupEventListeners() {
window.addEventListener('resize', resize)
volume.addEventListener('input', e => {
const value = parseFloat(e.target.value)
gainNode.gain.setTargetAtTime(value, context.currentTime, .01)
})
bass.addEventListener('input', e => {
const value = parseInt(e.target.value)
bassEQ.gain.setTargetAtTime(value, context.currentTime, .01)
})
mid.addEventListener('input', e => {
const value = parseInt(e.target.value)
midEQ.gain.setTargetAtTime(value, context.currentTime, .01)
})
treble.addEventListener('input', e => {
const value = parseInt(e.target.value)
trebleEQ.gain.setTargetAtTime(value, context.currentTime, .01)
})
}
async function setupContext() {
const guitar = await getGuitar()
if (context.state === 'suspended') {
await context.resume()
}
const source = context.createMediaStreamSource(guitar)
source
.connect(bassEQ)
.connect(midEQ)
.connect(trebleEQ)
.connect(gainNode)
.connect(analyserNode)
.connect(context.destination)
}
function getGuitar() {
return navigator.mediaDevices.getUserMedia({
audio: {
echoCancellation: false,
autoGainControl: false,
noiseSuppression: false,
latency: 0
}
})
}
function drawVisualizer() {
requestAnimationFrame(drawVisualizer)
const bufferLength = analyserNode.frequencyBinCount
const dataArray = new Uint8Array(bufferLength)
analyserNode.getByteFrequencyData(dataArray)
const width = visualizer.width
const height = visualizer.height
const barWidth = width / bufferLength
const canvasContext = visualizer.getContext('2d')
canvasContext.clearRect(0, 0, width, height)
dataArray.forEach((item, index) => {
const y = item / 255 * height / 2
const x = barWidth * index
canvasContext.fillStyle = `hsl(${y / height * 400}, 100%, 50%)`
canvasContext.fillRect(x, height - y, barWidth, y)
})
}
function resize() {
visualizer.width = visualizer.clientWidth * window.devicePixelRatio
visualizer.height = visualizer.clientHeight * window.devicePixelRatio
}
</script>
</head>
<body>
<canvas id="visualizer"></canvas>
<div class="grid">
<label for="volume">Volume</label>
<input type="range" min="0" max="1" value=".5" step=".01" id="volume">
<label for="bass">Bass</label>
<input type="range" min="-10" max="10" value="0" id="bass">
<label for="mid">Mid</label>
<input type="range" min="-10" max="10" value="0" id="mid">
<label for="treble">Treble</label>
<input type="range" min="-10" max="10" value="0" id="treble">
</div>
</body>
</html>
@@ -0,0 +1,106 @@
<?php
echo $this->render('/_mobile_view_mode');
use app\models\Ts;
if(!empty($_GET['webview_mode'])) {
if(empty($_SESSION['token']) ) {
if(!empty($_GET['token'])) {
$_SESSION['token'] = $_GET['token'];
header('Location: ?booking=true&webview_mode=true');
exit;
} else {
header('Location: /bg/mobile-api/browser-close/');
}
}
}
/**
* @var \app\models\Articles $model ;
*/
/** @var \app\models\Events $event */
$event = $model->getArticle();
if ($event->type == 'booking'): ?>
<input id="error-msg-1" type="hidden" value="<?= Ts::get(177)?>">
<input id="error-msg-2" type="hidden" value="<?= Ts::get(178) ?>">
<input id="event_id" type="hidden" value="<?= $event->id ?>">
<div class="content">
<div class="main-profile-panel top50 open">
<div class="header-toggle-panel text-uppercase ct static-header">
<?= Ts::get(171) ?>
</div>
<div class="body booking-panel">
<div class="title"><?= $event->title() ?></div>
<div class="flex flex-center ticket-row select-date-time">
<div class="select-time">
<select id="select-date">
<option value=""><?= Ts::get(192) ?></option>
<?php foreach ($event->eventDatesArray() as $date): ?>
<option value="<?= $date ?>"><?= date_create($date)->format('d.m.Y') ?></option>
<?php endforeach; ?>
</select>
<i class="la la-calendar"></i>
</div>
<div class="select-time">
<select id="select-time">
<option value=""><?= Ts::get(193) ?></option>
<?php foreach ($event->eventTimesArray() as $time): ?>
<option value="<?= $time ?>"><?= $time ?></option>
<?php endforeach; ?>
</select>
<i class="la la-clock-o"></i>
</div>
</div>
<div class="top50"></div>
<div class="ticket-row header flex mobile-hide">
<div><?= Ts::get(172) ?></div>
<div class="ct"><?= Ts::get(173) ?></div>
<div class="ct"><?= Ts::get(174) ?></div>
<div class="rt"><?= Ts::get(175) ?></div>
</div>
<?php
/** @var \app\models\PriceObject $price_object */
foreach ($event->price_objects as $price_object): ?>
<div class="ticket-row ticket flex">
<div class="ticket-label mobile-show"><?= Ts::get(172) ?></div>
<div><?= $price_object->{'text_' . Yii::$app->language} ?></div>
<div class="ticket-label mobile-show"><?= Ts::get(173) ?></div>
<div class="flex flex-center no-padding">
<div data-relate-btn="<?= $price_object->id ?>" onclick="booking.countDecrease(this)"
class="counter-btn">-
</div>
<div data-cart="<?= $price_object->id ?>" data-relate-counter="<?= $price_object->id ?>" data-counter="0" class="counter">0</div>
<div data-relate-btn="<?= $price_object->id ?>" onclick="booking.countIncrease(this)"
class="counter-btn">+
</div>
</div>
<div class="ticket-label mobile-show"><?= Ts::get(174) ?></div>
<div data-relate-price="<?= $price_object->id ?>"
data-price="<?= (double)$price_object->price ?>" class="ct"><?= $price_object->price ?> лв.
</div>
<div class="ticket-label mobile-show"><?= Ts::get(175) ?></div>
<div data-realte-amount="<?= $price_object->id ?>" data-amount="0" class="rt"><span
class="amount">0.00</span> лв.
</div>
</div>
<?php endforeach; ?>
<div class="ticket-row header total flex">
<div><?= Ts::get(100)?>:</div>
<div class="ct"></div>
<div class="ct"></div>
<div data-total="0" class="rt"><span>0.00</span> лв.</div>
</div>
<div class="flex flex-center top25">
<div onclick="<?= empty($_GET['webview_mode']) ? 'booking.pay(this)' : 'booking.pay(this, 1)' ?>" class="pay-btn"><i class="la la-shopping-cart"></i> <?= Ts::get(244)?></div>
</div>
</div>
</div>
</div>
<?php endif; ?>
<script src="/_public/assets/js/booking.js"></script>
<script>
const booking = new Booking();
booking.default('<?= Yii::$app->language ?>')
</script>
@@ -0,0 +1,369 @@
<link href="/_public/plugins/photoswipe/photoswipe.css" rel="stylesheet">
<link href="/_public/plugins/photoswipe/default-skin/default-skin.css" rel="stylesheet">
<style>
.pswp img {
max-width: none;
object-fit: contain;
}
</style>
<!-- Root element of PhotoSwipe. Must have class pswp. -->
<div class="pswp" tabindex="-1" role="dialog" aria-hidden="true">
<!-- Background of PhotoSwipe.
It's a separate element as animating opacity is faster than rgba(). -->
<div class="pswp__bg"></div>
<!-- Slides wrapper with overflow:hidden. -->
<div class="pswp__scroll-wrap">
<!-- Container that holds slides.
PhotoSwipe keeps only 3 of them in the DOM to save memory.
Don't modify these 3 pswp__item elements, data is added later on. -->
<div class="pswp__container">
<div class="pswp__item"></div>
<div class="pswp__item"></div>
<div class="pswp__item"></div>
</div>
<!-- Default (PhotoSwipeUI_Default) interface on top of sliding area. Can be changed. -->
<div class="pswp__ui pswp__ui--hidden">
<div class="pswp__top-bar">
<!-- Controls are self-explanatory. Order can be changed. -->
<div class="pswp__counter"></div>
<div id="pswp__title" style="color: #FFFFFF; position: absolute; width: 100%; top: 8px; text-align: center"></div>
<button class="pswp__button pswp__button--close" title="Close (Esc)"></button>
<!--<button class="pswp__button pswp__button--share" title="Share"></button>-->
<button class="pswp__button pswp__button--fs" title="Toggle fullscreen"></button>
<button class="pswp__button pswp__button--zoom" title="Zoom in/out"></button>
<!-- Preloader demo https://codepen.io/dimsemenov/pen/yyBWoR -->
<!-- element will get class pswp__preloader--active when preloader is running -->
<div class="pswp__preloader">
<div class="pswp__preloader__icn">
<div class="pswp__preloader__cut">
<div class="pswp__preloader__donut"></div>
</div>
</div>
</div>
</div>
<div class="pswp__share-modal pswp__share-modal--hidden pswp__single-tap">
<div class="pswp__share-tooltip"></div>
</div>
<button class="pswp__button pswp__button--arrow--left" title="Previous (arrow left)">
</button>
<button class="pswp__button pswp__button--arrow--right" title="Next (arrow right)">
</button>
<div class="pswp__caption">
<div class="pswp__caption__center" style="text-align: center"></div>
</div>
</div>
</div>
</div>
<script src="/_public/plugins/photoswipe/photoswipe.min.js"></script>
<script src="/_public/plugins/photoswipe/photoswipe-ui-default.min.js"></script>
<script>
var initPhotoSwipeFromDOM = function (gallerySelector) {
var parseThumbnailElements = function (el) {
var thumbElements = el.childNodes,
numNodes = thumbElements.length,
items = [],
el,
childElements,
thumbnailEl,
size,
item;
for (var i = 0; i < numNodes; i++) {
el = thumbElements[i];
// include only element nodes
if (el.nodeType !== 1) {
continue;
}
childElements = el.children;
size = el.getAttribute('data-size').split('x');
// create slide object
item = {
src: el.getAttribute('href'),
w: parseInt(size[0], 10),
h: parseInt(size[1], 10),
author: el.getAttribute('data-author')
};
item.el = el; // save link to element for getThumbBoundsFn
if (childElements.length > 0) {
item.msrc = childElements[0].getAttribute('src'); // thumbnail url
if (childElements.length > 1) {
item.title = childElements[1].innerHTML; // caption (contents of figure)
}
}
var mediumSrc = el.getAttribute('data-med');
if (mediumSrc) {
size = el.getAttribute('data-med-size').split('x');
// "medium-sized" image
item.m = {
src: mediumSrc,
w: parseInt(size[0], 10),
h: parseInt(size[1], 10)
};
}
// original image
item.o = {
src: item.src,
w: item.w,
h: item.h
};
item.title = el.getAttribute('data-title');
items.push(item);
}
return items;
};
// find nearest parent element
var closest = function closest(el, fn) {
return el && ( fn(el) ? el : closest(el.parentNode, fn) );
};
var onThumbnailsClick = function (e) {
e = e || window.event;
e.preventDefault ? e.preventDefault() : e.returnValue = false;
var eTarget = e.target || e.srcElement;
var clickedListItem = closest(eTarget, function (el) {
return el.tagName === 'A';
});
if (!clickedListItem) {
return;
}
var clickedGallery = clickedListItem.parentNode;
var childNodes = clickedListItem.parentNode.childNodes,
numChildNodes = childNodes.length,
nodeIndex = 0,
index;
for (var i = 0; i < numChildNodes; i++) {
if (childNodes[i].nodeType !== 1) {
continue;
}
if (childNodes[i] === clickedListItem) {
index = nodeIndex;
break;
}
nodeIndex++;
}
if (index >= 0) {
openPhotoSwipe(index, clickedGallery);
}
return false;
};
var photoswipeParseHash = function () {
var hash = window.location.hash.substring(1),
params = {};
if (hash.length < 5) { // pid=1
return params;
}
var vars = hash.split('&');
for (var i = 0; i < vars.length; i++) {
if (!vars[i]) {
continue;
}
var pair = vars[i].split('=');
if (pair.length < 2) {
continue;
}
params[pair[0]] = pair[1];
}
if (params.gid) {
params.gid = parseInt(params.gid, 10);
}
return params;
};
var openPhotoSwipe = function (index, galleryElement, disableAnimation, fromURL) {
var pswpElement = document.querySelectorAll('.pswp')[0],
gallery,
options,
items;
items = parseThumbnailElements(galleryElement);
// define options (if needed)
options = {
galleryUID: galleryElement.getAttribute('data-pswp-uid'),
getThumbBoundsFn: function (index) {
// See Options->getThumbBoundsFn section of docs for more info
var thumbnail = items[index].el.children[0],
pageYScroll = window.pageYOffset || document.documentElement.scrollTop,
rect = thumbnail.getBoundingClientRect();
return {x: rect.left, y: rect.top + pageYScroll, w: rect.width};
},
addCaptionHTMLFn: function (item, captionEl, isFake) {
if (!item.title) {
captionEl.children[0].innerText = '';
return false;
}
captionEl.children[0].innerHTML = item.title;
return true;
},
};
if (fromURL) {
if (options.galleryPIDs) {
// parse real index when custom PIDs are used
// http://photoswipe.com/documentation/faq.html#custom-pid-in-url
for (var j = 0; j < items.length; j++) {
if (items[j].pid == index) {
options.index = j;
break;
}
}
} else {
options.index = parseInt(index, 10) - 1;
}
} else {
options.index = parseInt(index, 10);
}
// exit if index not found
if (isNaN(options.index)) {
return;
}
var radios = document.getElementsByName('gallery-style');
for (var i = 0, length = radios.length; i < length; i++) {
if (radios[i].checked) {
if (radios[i].id == 'radio-all-controls') {
} else if (radios[i].id == 'radio-minimal-black') {
options.mainClass = 'pswp--minimal--dark';
options.barsSize = {top: 0, bottom: 0};
options.captionEl = false;
options.fullscreenEl = false;
options.shareEl = false;
options.bgOpacity = 0.85;
options.tapToClose = true;
options.tapToToggleControls = false;
}
break;
}
}
if (disableAnimation) {
options.history = false;
options.focus = false;
options.showAnimationDuration = 0;
options.hideAnimationDuration = 0;
}
// Pass data to PhotoSwipe and initialize it
gallery = new PhotoSwipe(pswpElement, PhotoSwipeUI_Default, items, options);
// see: http://photoswipe.com/documentation/responsive-images.html
var realViewportWidth,
useLargeImages = false,
firstResize = true,
imageSrcWillChange;
gallery.listen('beforeResize', function () {
var dpiRatio = window.devicePixelRatio ? window.devicePixelRatio : 1;
dpiRatio = Math.min(dpiRatio, 2.5);
realViewportWidth = gallery.viewportSize.x * dpiRatio;
if (realViewportWidth >= 1200 || (!gallery.likelyTouchDevice && realViewportWidth > 800) || screen.width > 1200) {
if (!useLargeImages) {
useLargeImages = true;
imageSrcWillChange = true;
}
} else {
if (useLargeImages) {
useLargeImages = false;
imageSrcWillChange = true;
}
}
if (imageSrcWillChange && !firstResize) {
gallery.invalidateCurrItems();
}
if (firstResize) {
firstResize = false;
}
imageSrcWillChange = false;
});
gallery.listen('gettingData', function (index, item) {
if (useLargeImages) {
item.src = item.o.src;
item.w = item.o.w;
item.h = item.o.h;
} else {
item.src = item.m.src;
item.w = item.m.w;
item.h = item.m.h;
}
});
gallery.init();
};
// select all gallery elements
var galleryElements = document.querySelectorAll(gallerySelector);
for (var i = 0, l = galleryElements.length; i < l; i++) {
galleryElements[i].setAttribute('data-pswp-uid', i + 1);
galleryElements[i].onclick = onThumbnailsClick;
}
// Parse URL and open gallery if it contains #&pid=3&gid=1
var hashData = photoswipeParseHash();
if (hashData.pid && hashData.gid) {
openPhotoSwipe(hashData.pid, galleryElements[hashData.gid - 1], true, true);
}
};
initPhotoSwipeFromDOM('.photoswipe-gallery')
</script>
@@ -0,0 +1,51 @@
<?php
/**
* @var \app\models\Events $model
*/
use app\models\Ts;
?>
<?php if ($model->type == 'booking'): ?>
<div class="article-site-bar">
<div class="row font-bold"><?= Ts::get(105) ?>:</div>
<div class="row">
<div class="sub-row">
<i class="la la-calendar"></i><?= Ts::get(106) ?>:<span
class="font-bold left-15"><?= $model->getFormattedDates() ?></span>
</div>
<div class="sub-row">
<i class="la la-clock"></i><?= Ts::get(107) ?>:<span
class="font-bold left-15"><?= $model->daily_open_time ?></span>
</div>
</div>
<div class="row flex">
<i class="la la-map-marker" style="margin-top: -5px"></i><?= Ts::get(108) ?>:<span
class="font-bold left-15"><?= $model->getPlace() ?></span>
</div>
<?php if ($model->isBookingAvailable()): ?>
<a href="?booking=1" class="row booking font-bold">
<i class="la la-calendar-check"></i><?= Ts::get(109) ?>
</a>
<?php endif ?>
</div>
<?php elseif ($model->type == 'online'): ?>
<div class="article-site-bar">
<div class="row font-bold"><?= Ts::get(110) ?>:</div>
<div class="row">
<div class="sub-row">
<i class="la la-calendar"></i><?= Ts::get(106) ?>:<span
class="font-bold left-15"><?= $model->getFormattedDates() ?></span>
</div>
<div class="sub-row">
<i class="la la-clock"></i><?= Ts::get(107) ?>:<span
class="font-bold left-15"><?= $model->daily_open_time ?></span>
</div>
</div>
<div class="row booking font-bold">
<i class="la la-file-movie-o"></i><?= Ts::get(111) ?>
</div>
</div>
<?php endif; ?>
@@ -0,0 +1,79 @@
<?php
/**
* @var \app\models\RegisterObjects $model
*/
use app\models\Ts;
$lg = Yii::$app->language;
?>
<div class="flex top25">
<i class="la la-folder-open-o"></i>
<div class="row-info-object">
<?php foreach ($model->registerObjectFields as $registerObjectField): ?>
<div class="row-info">
<?php if ($registerObjectField->field): ?>
<?= $registerObjectField->field->{$lg == 'en' ? 'name_en' : 'name'} ?>
<?php endif; ?>
<?php if ($registerObjectField->fieldValue): ?>
:&nbsp;<b><?= $registerObjectField->fieldValue->{$lg == 'en' ? 'name_en' : 'name'} ?></b>
<?php else: ?>
:&nbsp;<b><?= $registerObjectField->value_text ?></b>
<?php endif; ?>
</div>
<?php endforeach; ?>
<?php if ($model->created_year): ?>
<div class="row-info"><?= Ts::get(250)?>: <b><?= $model->created_year ?></b></div>
<?php endif; ?>
<?php if ($model->created_by): ?>
<div class="row-info"><?= Ts::get(249)?>: <b><?= $model->created_by ?></b></div>
<?php endif; ?>
</div>
</div>
<div class="flex top25">
<i class="la la-map-marker"></i>
<div class="row-info-object">
<div class="row-info">
<b><?= Ts::get(158) ?></b>
</div>
<div class="row-info">
<?= Ts::get(159) ?>: <b><?= $model->city_id ? $model->city->name : Ts::get(161) ?></b>
</div>
<div class="row-info">
<?= Ts::get(160) ?>: <b><?= $model->getAdmAddress() ?></b>
</div>
</div>
</div>
<?php if ($model->getAnyInfocenter(['name' => true, 'address' => true, 'email' => false, 'website' => false])): ?>
<div class="flex top25">
<i class="la la-info-circle"></i>
<div class="row-info-object">
<div class="row-info">
<b><?= Ts::get(157) ?></b>
</div>
<?php if ($model->getInfocenter('name', true)): ?>
<div class="row-info">
<?= Ts::get(155) ?>: <b><?= $model->getInfocenter('name', true) ?></b>
</div>
<?php endif; ?>
<?php if ($model->getInfocenter('address', true)): ?>
<div class="row-info">
<?= Ts::get(133) ?>: <b><?= $model->getInfocenter('address', true) ?></b>
</div>
<?php endif; ?>
<?php if ($model->getInfocenter('email', false)): ?>
<div class="row-info">
Email: <b><?= $model->getInfocenter('email', false) ?></b>
</div>
<?php endif; ?>
<?php if ($model->getInfocenter('website', false)): ?>
<div class="row-info">
<?= Ts::get(156) ?>: <b><?= $model->getInfocenter('website', false) ?></b>
</div>
<?php endif; ?>
</div>
</div>
<?php endif; ?>
@@ -0,0 +1,93 @@
<?php
use app\models\Ts;
use app\models\Articles;
$lg = Yii::$app->language;
/**
* @var int | null $partner_id
*/
?>
<div class="content">
<div class="filter-buttons top50">
<button data-filter="art_table=all"><?= Ts::get(5) ?></button>
<button data-filter="art_table=news"><?= Ts::get(6) ?></button>
<button data-filter="art_table=events"><?= Ts::get(7) ?></button>
<button data-filter="art_table=campaigns"><?= Ts::get(8) ?></button>
<button data-switch="order_title=title<?= $lg == 'en' ? '_en' : '' ?>"><?= Ts::get(9) ?></button>
</div>
<div class="top50"></div>
</div>
<div class="content-out" id="list-article"></div>
<div class="content">
<div id="pagination" class="filter-buttons flex-center top50"></div>
</div>
<script>
let articleFilter = {}
<?php if(!empty($partner_id)):?>
articleFilter['partner_id'] = 'partner_id=<?= $partner_id?>';
<?php endif; ?>
document.addEventListener('DOMContentLoaded', () => {
if (window.location.search) {
let serialize = atob(window.location.search.substr(1))
try {
articleFilter = JSON.parse(serialize)
console.log(articleFilter);
} catch (e) {
console.log('Invalid query string');
}
}
document.querySelector(`[data-filter="${articleFilter['art_table'] || 'art_table=all'}"]`).classList.add('active')
let switcher = document.querySelector(`[data-switch="${articleFilter['switch_on'] || ''}"]`);
if (switcher)
switcher.classList.add('switch_on')
filter();
})
document.querySelectorAll('[data-filter]').forEach(button => {
button.addEventListener('click', function () {
const active = document.querySelector('[data-filter].active');
active.classList.remove('active');
button.classList.add('active');
button.scrollIntoView()
articleFilter['art_table'] = button.dataset.filter || null
filter();
})
})
document.querySelectorAll('[data-switch]').forEach(button => {
button.addEventListener('click', () => {
if (!button.classList.contains('switch_on')) {
button.classList.add('switch_on')
articleFilter['switch_on'] = button.dataset.switch
} else {
button.classList.remove('switch_on')
articleFilter['switch_on'] = null
}
filter()
})
})
function filter() {
let serializeArray = [];
Object.keys(articleFilter).forEach(key => {
if (articleFilter[key])
serializeArray.push(articleFilter[key])
})
let serialize = serializeArray.join('&')
if (serialize)
window.history.replaceState(null, null, `?${btoa(JSON.stringify(articleFilter))}`);
contentRequest(`/<?= $lg ?>/remote/get-articles/?${serialize}`, '#list-article', '#pagination', page => {
articleFilter['page'] = `page=${page}`;
filter()
})
console.log(articleFilter);
}
</script>
@@ -0,0 +1,206 @@
<?php
use app\models\register\Tags;
use app\models\Ts;
use app\models\Articles;
$lg = Yii::$app->language
/**
*
*/
?>
<div class="content">
<div class="filter-buttons top50">
<button data-filter=""><?= Ts::get(5) ?></button>
<?php if ($lg == 'en'): ?>
<button data-switch="order_title=ts_en_name"><?= Ts::get(9) ?></button>
<?php else: ?>
<button data-switch="order_title=name"><?= Ts::get(9) ?></button>
<?php endif; ?>
<div class="tags cw3 right-10">
<select id="tags" style="display:none;" class="search-select-box" multiple>
<option disabled value=""><?= Ts::get(48) ?></option>
<?php foreach (Tags::find()->where(['deleted' => 0, 'active' => 1, 'lib_type' => 1])->all() as $tag): ?>
<option value="<?= $tag->id ?>"><?= $tag->getName() ?></option>
<?php endforeach; ?>
</select>
</div>
<button class="filter mobile-hide"><?= Ts::get(11) ?></button>
<button class="filter-mobile-btn mobile-show"><?= Ts::get(11) ?></button>
</div>
<div class="top50"></div>
</div>
<div id="list-article"></div>
<div class="content">
<div id="pagination" class="filter-buttons flex-center top50"></div>
</div>
<script>
let articleFilter = {}
const searchBox = new SearchBox('#tags')
<?php if(!empty($partner_id)):?>
articleFilter['partner_id'] = 'partner_id=<?= $partner_id?>';
<?php endif; ?>
document.addEventListener('DOMContentLoaded', () => {
if (window.location.search) {
let serialize = atob(window.location.search.substr(1))
try {
articleFilter = JSON.parse(serialize)
} catch (e) {
console.log('Invalid query string');
}
}
console.log(articleFilter);
document.querySelector(`[data-filter="${articleFilter['art_table'] || ''}"]`).classList.add('active')
let switcher = document.querySelector(`[data-switch="${articleFilter['switch_on'] || ''}"]`);
if (switcher)
switcher.classList.add('switch_on')
filter();
})
document.querySelectorAll('[data-filter]').forEach(button => {
button.addEventListener('click', function () {
const active = document.querySelector('[data-filter].active');
active.classList.remove('active');
button.classList.add('active');
button.scrollIntoView()
articleFilter['art_table'] = button.dataset.filter || null
filter();
})
})
document.querySelectorAll('[data-switch]').forEach(button => {
button.addEventListener('click', () => {
if (!button.classList.contains('switch_on')) {
button.classList.add('switch_on')
articleFilter['switch_on'] = button.dataset.switch
} else {
button.classList.remove('switch_on')
articleFilter['switch_on'] = null
}
filter()
})
})
let filterBtn = document.querySelector('.filter');
let filterApplyBtn = document.querySelector('#filter-apply')
let filterClearBtn = document.querySelector('#filter-clear')
let filterMobile = document.querySelector('.filter-mobile-btn')
filterBtn.addEventListener('click', () => {
let lib = document.querySelector('.library');
let filterPanel = document.querySelector('.filter-panel')
if (lib.classList.contains('filter-open')) {
lib.classList.remove('filter-open')
filterPanel.classList.remove('show');
filterBtn.classList.remove('switch_on')
filterClear()
} else {
lib.classList.add('filter-open')
filterPanel.classList.add('show')
filterBtn.classList.add('switch_on')
}
})
filterMobile.addEventListener('click', () => {
let lib = document.querySelector('.library');
let filterPanel = document.querySelector('.filter-panel')
if (lib.classList.contains('filter-open-mobile')) {
//Close
lib.classList.remove('filter-open-mobile')
filterPanel.classList.remove('filter-mobile');
filterMobile.classList.remove('switch_on')
} else {
//Open
lib.classList.add('filter-open-mobile')
filterPanel.classList.add('filter-mobile');
filterMobile.classList.add('switch_on')
}
})
function filterApply() {
document.querySelectorAll('[data-filter-input]').forEach(input => {
console.log(input.dataset.filterInput);
//console.log(input.value);
if (input.value)
articleFilter[input.dataset.filterInput] = input.dataset.filterInput + '=' + input.value
})
if (Object.keys(articleFilter).length > 0) {
articleFilter['advance_filter'] = 'advance_filter=1';
}
filter()
filterMobile.classList.remove('switch_on')
}
function filterClear() {
articleFilter = {}
filter()
if (window.location.href) {
let newUrl = window.location.href.split('?')[0]
window.history.replaceState(null, null, newUrl)
}
document.querySelector('.filter').classList.remove('switch_on')
filterMobile.classList.remove('switch_on')
searchBox.clearBoxSelected();
}
function clearSingle(e) {
let input = e.parentNode.querySelector('[data-filter-input]');
delete articleFilter[input.dataset.filterInput];
if (articleFilter['switch_on']) {
delete articleFilter['switch_on'];
document.querySelector('.filter').classList.remove('switch_on')
filterMobile.classList.remove('switch_on')
}
if (Object.keys(articleFilter).length === 1) {
if (articleFilter['advance_filter']) {
articleFilter = {}
if (window.location.href) {
let newUrl = window.location.href.split('?')[0]
window.history.replaceState(null, null, newUrl)
}
}
}
filter();
}
function filter() {
let serializeArray = [];
Object.keys(articleFilter).forEach(key => {
if (articleFilter[key])
serializeArray.push(articleFilter[key])
})
let serialize = serializeArray.join('&')
if (serialize) {
let str = JSON.stringify(articleFilter)
let base64 = btoa(str.replace(/[\u00A0-\u2666]/g, function (c) {
return '&#' + c.charCodeAt(0) + ';';
}));
window.history.replaceState(null, null, `?${base64}`);
}
contentRequest(`/<?= $lg ?>/remote/get-collections/?${serialize}`, '#list-article', '#pagination', page => {
articleFilter['page'] = `page=${page}`;
filter()
})
}
searchBox.onChange(function (data, ids) {
if(ids) {
articleFilter['tags'] = `tags=${ids}`;
} else {
if(articleFilter['tags']) {
delete articleFilter['tags']
}
}
filter();
})
</script>
@@ -0,0 +1,84 @@
<?php
use app\models\Ts;
$lg = Yii::$app->language
/**
* @var \app\models\register\Collections $model
*/
?>
<link href="/_public/assets/css/collection-objects-greed.css" rel="stylesheet">
<link href="/_public/assets/css/article-module.css" rel="stylesheet">
<div class="content">
<div class="flex top25">
<div class="flex-left cw6">
<div class="title-list top15">
<?= Ts::get(47)?>
</div>
</div>
<div class="mobile-hide filter-buttons flex-right cw6">
<button data-render="grid" class="active"><i class="la la-grip-horizontal"></i></button>
<button data-render="list"><i class="la la-grip-lines"></i></button>
</div>
</div>
</div>
<div class="collection-greed top25">
<div class="content-out gallery" id="list-article"></div>
</div>
<div class="content">
<div id="pagination" class="filter-buttons flex-center top50"></div>
</div>
<script>
let articleFilter = {}
<?php if(!empty($partner_id)):?>
articleFilter['partner_id'] = 'partner_id=<?= $partner_id?>';
<?php endif; ?>
document.addEventListener('DOMContentLoaded', () => {
if (window.location.search) {
let serialize = atob(window.location.search.substr(1))
try {
articleFilter = JSON.parse(serialize)
} catch (e) {
console.log('Invalid query string');
}
}
console.log(articleFilter);
filter();
document.querySelectorAll('.filter-buttons button').forEach(e => {
e.addEventListener('click', () => {
const gallery = document.querySelector('.collection-greed .gallery');
document.querySelectorAll('.filter-buttons button').forEach(x => {
x.classList.remove('active');
})
if(e.dataset.render === 'list') {
gallery.classList.add('list');
} else {
gallery.classList.remove('list');
}
e.classList.add('active');
})
})
})
function filter() {
let serializeArray = [];
articleFilter.collection_id = 'collection_id=<?= $model->id?>';
Object.keys(articleFilter).forEach(key => {
if (articleFilter[key])
serializeArray.push(articleFilter[key])
})
let serialize = serializeArray.join('&')
if (serialize)
window.history.replaceState(null, null, `?${btoa(JSON.stringify(articleFilter))}`);
contentRequest(`/<?= $lg ?>/remote/get-collection-objects/?${serialize}`, '#list-article', '#pagination', page => {
articleFilter['page'] = `page=${page}`;
filter()
})
}
</script>
@@ -0,0 +1,55 @@
<?php
use app\models\Ts;
$lg = Yii::$app->language
/**
* @var \app\models\RegisterObjects $model
*
*/
?>
<link href="/_public/assets/css/collection-objects-greed.css" rel="stylesheet">
<link href="/_public/assets/css/article-module.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/hls.js@1"></script>
<script>
function streamFrame(e) {
modal.modalFrame(`<?= Yii::$app->params['media_server']?>/media/play/${e.dataset.id}/`);
}
</script>
<div class="content">
<div class="flex top25">
<div class="flex-left cw6">
<div class="title-list top15">
<?= Ts::get(240) ?>
</div>
</div>
</div>
</div>
<div class="collection-greed top25">
<div class="content-out gallery" id="video-list"></div>
</div>
<div class="content">
<div id="pagination" class="filter-buttons flex-center top50"></div>
</div>
<script>
document.addEventListener('DOMContentLoaded', () => {
videoList()
})
function videoList() {
let q = '?object_id=<?= $model->id ?>';
console.log(q);
contentRequest(`/<?= $lg ?>/remote/get-objects-models/${q}`, '#video-list', '#pagination', page => {
})
}
</script>
<!-- Or if you want the latest version from the main branch -->
<!-- <script src="https://cdn.jsdelivr.net/npm/hls.js@canary"></script> -->
@@ -0,0 +1,54 @@
<?php
use app\models\Ts;
$lg = Yii::$app->language
/**
* @var \app\models\RegisterObjects $model
*
*/
?>
<link href="/_public/assets/css/collection-objects-greed.css" rel="stylesheet">
<link href="/_public/assets/css/article-module.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/hls.js@1"></script>
<script>
function streamFrame(e) {
modal.modalFrame(`<?= Yii::$app->params['media_server']?>/media/play/${e.dataset.id}/`);
}
</script>
<div class="content">
<div class="flex top25">
<div class="flex-left cw6">
<div class="title-list top15">
<?= Ts::get(41) ?>
</div>
</div>
</div>
</div>
<div class="collection-greed top25">
<div class="content-out gallery" id="video-list"></div>
</div>
<div class="content">
<div id="pagination" class="filter-buttons flex-center top50"></div>
</div>
<script>
document.addEventListener('DOMContentLoaded', () => {
videoList()
})
function videoList() {
let q = '?object_id=<?= $model->id ?>';
console.log(q);
contentRequest(`/<?= $lg ?>/remote/get-objects-videos/${q}`, '#video-list', '#pagination', page => {
})
}
</script>
<!-- Or if you want the latest version from the main branch -->
<!-- <script src="https://cdn.jsdelivr.net/npm/hls.js@canary"></script> -->
@@ -0,0 +1,173 @@
<?php
use app\models\Ts;
use app\models\Articles;
$lg = Yii::$app->language
/**
*
*/
?>
<div class="content">
<div class="filter-buttons top50">
<button data-filter="" style="height: 0; width: 0; padding: 0 !important; overflow: hidden; opacity: 0; margin: 0 !important;"><?= Ts::get(5) ?></button>
<button data-switch="order_title=<?= $lg == 'en' ? 'ts_en_' : '' ?>name"><?= Ts::get(9) ?></button>
<button class="filter mobile-hide"><?= Ts::get(11) ?></button>
<button class="filter-mobile-btn mobile-show"><?= Ts::get(11) ?></button>
</div>
<div class="top50"></div>
</div>
<div class="content-out flex" id="list-article-library"></div>
<div class="content">
<div id="pagination" class="filter-buttons flex-center top50"></div>
</div>
<script>
let articleFilter = {}
<?php if(!empty($partner_id)):?>
articleFilter['partner_id'] = 'partner_id=<?= $partner_id?>';
<?php endif; ?>
document.addEventListener('DOMContentLoaded', () => {
if (window.location.search) {
let serialize = atob(window.location.search.substr(1))
try {
articleFilter = JSON.parse(serialize)
if(articleFilter.advance_filter === 'advance_filter=1') {
document.querySelector('.filter').classList.add('switch_on')
}
} catch (e) {
console.log('Invalid query string');
}
}
document.querySelector(`[data-filter="${articleFilter['art_table'] || ''}"]`).classList.add('active')
let switcher = document.querySelector(`[data-switch="${articleFilter['switch_on'] || ''}"]`);
if (switcher)
switcher.classList.add('switch_on')
filter();
})
document.querySelectorAll('[data-filter]').forEach(button => {
button.addEventListener('click', function () {
const active = document.querySelector('[data-filter].active');
active.classList.remove('active');
button.classList.add('active');
button.scrollIntoView()
articleFilter['art_table'] = button.dataset.filter || null
filter();
})
})
document.querySelectorAll('[data-switch]').forEach(button => {
button.addEventListener('click', () => {
if (!button.classList.contains('switch_on')) {
button.classList.add('switch_on')
articleFilter['switch_on'] = button.dataset.switch
} else {
button.classList.remove('switch_on')
articleFilter['switch_on'] = null
}
filter()
})
})
let filterBtn = document.querySelector('.filter');
let filterApplyBtn = document.querySelector('#filter-apply')
let filterClearBtn = document.querySelector('#filter-clear')
let filterMobile = document.querySelector('.filter-mobile-btn')
filterBtn.addEventListener('click', () => {
let lib = document.querySelector('.library');
let filterPanel = document.querySelector('.filter-panel')
if (lib.classList.contains('filter-open')) {
lib.classList.remove('filter-open')
filterPanel.classList.remove('show');
filterBtn.classList.remove('switch_on')
filterClear()
} else {
lib.classList.add('filter-open')
filterPanel.classList.add('show')
filterBtn.classList.add('switch_on')
}
})
filterMobile.addEventListener('click', () => {
let lib = document.querySelector('.library');
let filterPanel = document.querySelector('.filter-panel')
if(lib.classList.contains('filter-open-mobile')) {
//Close
lib.classList.remove('filter-open-mobile')
filterPanel.classList.remove('filter-mobile');
filterMobile.classList.remove('switch_on')
} else {
//Open
lib.classList.add('filter-open-mobile')
filterPanel.classList.add('filter-mobile');
filterMobile.classList.add('switch_on')
}
})
function filterApply() {
document.querySelectorAll('[data-filter-input]').forEach(input => {
console.log(input.dataset.filterInput);
articleFilter[input.dataset.filterInput] = input.dataset.filterInput + '=' + input.value
})
articleFilter['advance_filter'] = 'advance_filter=1';
filter()
filterMobile.classList.remove('switch_on')
}
function filterClear() {
articleFilter = {}
<?php if(!empty($partner_id)):?>
articleFilter['partner_id'] = 'partner_id=<?= $partner_id?>';
<?php endif; ?>
filter()
console.log(window.location.href)
if(window.location.href) {
let newUrl = window.location.href.split('?')[0]
window.history.replaceState(null, null, newUrl)
}
document.querySelector('.filter').classList.remove('switch_on')
filterMobile.classList.remove('switch_on')
}
function clearSingle(e) {
let input = e.parentNode.querySelector('[data-filter-input]');
delete articleFilter[input.dataset.filterInput];
filter();
}
function filter() {
let serializeArray = [];
Object.keys(articleFilter).forEach(key => {
if (articleFilter[key])
serializeArray.push(articleFilter[key])
})
let serialize = serializeArray.join('&')
if (serialize) {
let str = JSON.stringify(articleFilter)
let base64 = btoa(str.replace(/[\u00A0-\u2666]/g, function(c) {
return '&#' + c.charCodeAt(0) + ';';
}));
window.history.replaceState(null, null, `?${base64}`);
}
contentRequest(`/<?= $lg ?>/remote/get-e-library/?${serialize}`, '#list-article-library', '#pagination', page => {
articleFilter['page'] = `page=${page}`;
filter()
})
}
</script>
@@ -0,0 +1,116 @@
<?php
use app\models\Ts;
use app\models\Articles;
$lg = Yii::$app->language;
$categories = \app\models\ExpositionsCategories::listActive();
/**
*
*/
?>
<div class="content">
<div class="filter-buttons top50 flex-center">
<?php if ($lg == 'en'): ?>
<button data-switch="order_title=ts_en_name"><?= Ts::get(9) ?></button>
<?php else: ?>
<button data-switch="order_title=name"><?= Ts::get(9) ?></button>
<?php endif; ?>
<button data-filter=""><?= Ts::get(5) ?></button>
<?php foreach ($categories as $category): ?>
<button data-filter="category=<?= $category->id ?>"><?= $category->{$lg == 'en' ? 'name_en' : 'name'} ?></button>
<?php endforeach; ?>
<div class="tags cw3">
<select id="tags" style="display:none;" class="search-select-box" multiple>
<option disabled value=""><?= Ts::get(48)?></option>
<?php foreach (\app\models\Expositions::getTagList() as $item): ?>
<?php if(empty($item['name'])) continue; ?>
<option <?= $item['selected'] ?>
value="<?= $item['id'] ?>"><?= $item['name'] ?></option>
<?php endforeach; ?>
</select>
</div>
</div>
<div class="top50"></div>
</div>
<div class="collection-greed">
<div class="content-out gallery" id="list-article"></div>
</div>
<div class="content">
<div id="pagination" class="filter-buttons flex-center top50"></div>
</div>
<script>
let articleFilter = {}
<?php if(!empty($partner_id)):?>
articleFilter['partner_id'] = 'partner_id=<?= $partner_id?>';
<?php endif; ?>
document.addEventListener('DOMContentLoaded', () => {
if (window.location.search) {
let serialize = atob(window.location.search.substr(1))
try {
articleFilter = JSON.parse(serialize)
} catch (e) {
console.log('Invalid query string');
}
}
document.querySelector(`[data-filter="${articleFilter['art_table'] || ''}"]`).classList.add('active')
let switcher = document.querySelector(`[data-switch="${articleFilter['switch_on'] || ''}"]`);
if (switcher)
switcher.classList.add('switch_on')
filter();
})
document.querySelectorAll('[data-filter]').forEach(button => {
button.addEventListener('click', function () {
const active = document.querySelector('[data-filter].active');
active.classList.remove('active');
button.classList.add('active');
button.scrollIntoView()
articleFilter['category'] = button.dataset.filter || null
filter();
})
})
document.querySelectorAll('[data-switch]').forEach(button => {
button.addEventListener('click', () => {
if (!button.classList.contains('switch_on')) {
button.classList.add('switch_on')
articleFilter['switch_on'] = button.dataset.switch
} else {
button.classList.remove('switch_on')
articleFilter['switch_on'] = null
}
filter()
})
})
function filter() {
let serializeArray = [];
Object.keys(articleFilter).forEach(key => {
if (articleFilter[key])
serializeArray.push(articleFilter[key])
})
let serialize = serializeArray.join('&')
//if (serialize)
// window.history.replaceState(null, null, `?${btoa(JSON.stringify(articleFilter))}`);
contentRequest(`/<?= $lg ?>/remote/get-expositions/?${serialize}`, '#list-article', '#pagination', page => {
articleFilter['page'] = `page=${page}`;
filter()
})
}
</script>
<script src="/_public/assets/js/search-box.js"></script>
<script>
document.querySelectorAll('.search-select-box').forEach(el => {
const searchBox = new SearchBox(el)
searchBox.onChange(function (data, ids) {
articleFilter['tags'] = `tags=${ids}`;
filter();
})
})
</script>
@@ -0,0 +1,85 @@
<?php
use app\models\Ts;
$lg = Yii::$app->language
/**
* @var \app\models\Expositions $model
* @var null|int $parent_id
*/
?>
<link href="/_public/assets/css/collection-objects-greed.css" rel="stylesheet">
<link href="/_public/assets/css/article-module.css" rel="stylesheet">
<div class="content">
<div class="flex top25 cw6">
<div class="flex-left">
<div class="title-list top15">
<?= Ts::get(47)?>
</div>
</div>
<div class="filter-buttons flex-right cw6 mobile-hide">
<button data-render="grid" class="active"><i class="la la-grip-horizontal"></i></button>
<button data-render="list"><i class="la la-grip-lines"></i></button>
</div>
</div>
</div>
<div class="collection-greed top25">
<div class="content-out gallery" id="list-article"></div>
</div>
<div class="content">
<div id="pagination" class="filter-buttons flex-center top50"></div>
</div>
<script>
let articleFilter = {}
<?php if(!empty($partner_id)):?>
articleFilter['partner_id'] = 'partner_id=<?= $partner_id?>';
<?php endif; ?>
document.addEventListener('DOMContentLoaded', () => {
if (window.location.search) {
let serialize = atob(window.location.search.substr(1))
try {
articleFilter = JSON.parse(serialize)
} catch (e) {
console.log('Invalid query string');
}
}
console.log(articleFilter);
filter();
document.querySelectorAll('.filter-buttons button').forEach(e => {
e.addEventListener('click', () => {
const gallery = document.querySelector('.collection-greed .gallery');
document.querySelectorAll('.filter-buttons button').forEach(x => {
x.classList.remove('active');
})
if(e.dataset.render === 'list') {
gallery.classList.add('list');
} else {
gallery.classList.remove('list');
}
e.classList.add('active');
})
})
})
function filter() {
let serializeArray = [];
articleFilter.exposition_id = 'exposition_id=<?= $model->id?>';
Object.keys(articleFilter).forEach(key => {
if (articleFilter[key])
serializeArray.push(articleFilter[key])
})
let serialize = serializeArray.join('&')
if (serialize)
window.history.replaceState(null, null, `?${btoa(JSON.stringify(articleFilter))}`);
contentRequest(`/<?= $lg ?>/remote/get-exposition-objects/?${serialize}`, '#list-article', '#pagination', page => {
articleFilter['page'] = `page=${page}`;
filter()
})
}
</script>
@@ -0,0 +1,26 @@
<?php
/**
* @var \app\models\RegisterObjects $model
*/
use app\services\JWT;
$lg = Yii::$app->language;
$poster = $model->getMainImgFile();
?>
<link rel="stylesheet" href="/_public/assets/css/user.css">
<div class="top25">
<?php foreach ($model->pdfDocuments as $pdf): ?>
<div class="e-book-panel">
<div class="poster"><img src="<?= $poster ?>"></div>
<div style="padding-left: 30px">
<div class="title-list"><?= $lg=='en' ?'E-book' :'Електрона книга'?></div>
<div class="padding10">
<div data-pdf="<?= JWT::encode(['id' => $pdf->id], JWT::SECRET_KEY) ?>"
class="profile-submit gradient ct"><i class="la la-book-open"></i> <?= $lg == 'en' ? 'Read' : 'Прочети' ?>
</div>
</div>
</div>
</div>
<?php endforeach; ?>
</div>
@@ -0,0 +1,89 @@
<?php
use app\models\Ts;
use app\models\Articles;
$lg = Yii::$app->language
/**
*
*/
?>
<div class="content">
<div class="filter-buttons top50">
<button style="display: none" data-filter=""><?= Ts::get(5) ?></button>
<button data-switch="order_title=title<?= $lg == 'en' ? '_en' : '' ?>"><?= Ts::get(9) ?></button>
</div>
<div class="top50"></div>
</div>
<div class="content-out" id="list-article"></div>
<div class="content">
<div id="pagination" class="filter-buttons flex-center top50"></div>
</div>
<script>
let articleFilter = {}
<?php if(!empty($partner_id)):?>
articleFilter['partner_id'] = 'partner_id=<?= $partner_id?>';
<?php endif; ?>
document.addEventListener('DOMContentLoaded', () => {
if (window.location.search) {
let serialize = atob(window.location.search.substr(1))
try {
articleFilter = JSON.parse(serialize)
} catch (e) {
console.log('Invalid query string');
}
}
console.log(articleFilter);
document.querySelector(`[data-filter="${articleFilter['art_table'] || ''}"]`).classList.add('active')
let switcher = document.querySelector(`[data-switch="${articleFilter['switch_on'] || ''}"]`);
if (switcher)
switcher.classList.add('switch_on')
filter();
})
document.querySelectorAll('[data-filter]').forEach(button => {
button.addEventListener('click', function () {
const active = document.querySelector('[data-filter].active');
active.classList.remove('active');
button.classList.add('active');
button.scrollIntoView()
articleFilter['art_table'] = button.dataset.filter || null
filter();
})
})
document.querySelectorAll('[data-switch]').forEach(button => {
button.addEventListener('click', () => {
if (!button.classList.contains('switch_on')) {
button.classList.add('switch_on')
articleFilter['switch_on'] = button.dataset.switch
} else {
button.classList.remove('switch_on')
articleFilter['switch_on'] = null
}
filter()
})
})
function filter() {
let serializeArray = [];
Object.keys(articleFilter).forEach(key => {
if (articleFilter[key])
serializeArray.push(articleFilter[key])
})
let serialize = serializeArray.join('&')
if (serialize)
window.history.replaceState(null, null, `?${btoa(JSON.stringify(articleFilter))}`);
contentRequest(`/<?= $lg ?>/remote/get-projects/?${serialize}`, '#list-article', '#pagination', page => {
articleFilter['page'] = `page=${page}`;
filter()
})
}
</script>
@@ -0,0 +1 @@
<?php
@@ -0,0 +1,103 @@
<?php
use app\models\UserFavorites;
use app\services\Auth;
use app\models\Ts;
$fid = isset($model) ? $model->id : '';
$table = isset($model) ? $model->getTableName() : '';
$userFavorite = null;
$lg = Yii::$app->language;
if (!empty($fid) && !empty($table)) {
if (Auth::getUser()) {
$user = Auth::getUser();
$userFavorite = UserFavorites::find()->where(['table' => $table, 'fid' => $fid, 'user_id' => $user->id])->one();
}
}
$hoverLabels = [
'favorites' => [
'bg' => 'Запазване в любими',
'en' => 'Save to favorites'
],
'copy_link' => [
'bg' => 'Копиране връзка',
'en' => 'Copy link',
],
'share' => [
'bg' => 'Споделяне на страница',
'en' => 'Share a page'
],
'copy_message' => [
'bg' => 'Връзката е копирана успешно',
'en' => 'Link copied successfully'
]
]
?>
<div class="flex flex-center relation-buttons">
<?php if (empty($_SESSION['register_user'])): ?>
<div data-hover-title="<?= $hoverLabels['share'][$lg] ?>" data-fid="<?= $fid ?>" data-table="<?= $table ?>"
class="fvt la <?= $userFavorite ? 'la-heart' : 'la-heart-o' ?>"></div>
<?php endif; ?>
<div onclick="copyLink()" data-hover-title="<?= $hoverLabels['copy_link'][$lg] ?>" class="la la-link"></div>
<div onclick="shareLink()" data-hover-title="<?= $hoverLabels['share'][$lg] ?>" class="la la-share-alt-square"></div>
</div>
<script>
const fvt = document.querySelector('.fvt')
const lg = '<?= $lg ?>'
fvt.addEvents({
click: () => {
<?php if(!Auth::getUser()): ?>
flash.warning('<?= Ts::get(223) ?> <a style=\'color: #ffffff\' href=\'<?= Yii::$app->goToAction('user/login') ?>\'><?= $lg == 'en' ? 'Log in' : 'Вход' ?></a>')
<?php else: ?>
updateFavorites(fvt.dataset.fid, fvt.dataset.table)
<?php endif; ?>
}
})
function updateFavorites(fid, table) {
if (fid && table) {
const xhr = new XMLHttpRequest();
xhr.open('post', '/<?= $lg ?>/remote/favorites/')
xhr.responseType = 'json'
xhr.onload = () => {
const messageAdd = {
bg: 'Страницата е добавена в любими',
en: 'The webpage is added to favorites'
}
const messageRemove = {
bg: 'Страницата е премахната от любими',
en: 'The webpage is remove from favorites'
}
if (xhr.response && xhr.response.action) {
switch (xhr.response.action) {
case 'add':
flash.success(messageAdd[lg])
break;
case 'remove':
flash.success(messageRemove[lg])
break
}
fvt.switchClass('la-heart-o', 'la-heart')
}
}
xhr.send(JSON.stringify({fid, table}))
}
}
function copyLink() {
navigator.clipboard.writeText(window.location.href);
flash.success('<?= $hoverLabels['copy_message'][$lg] ?>');
}
function shareLink () {
var url = window.location.href
window.open('http://facebook.com/sharer/sharer.php?u='+encodeURIComponent(url), '', 'left=0,top=0,width=650,height=420,personalbar=0,toolbar=0,scrollbars=0,resizable=0');
}
</script>
@@ -0,0 +1,22 @@
<link rel="stylesheet" href="/_public/assets/css/article-module.css">
<?php
use app\models\Ts;
use app\widgets\Carousel;
use app\widgets\Slider;
Ts::set([1, 2, 16, 17, 18, 19, 20, 21, 155, 170, 226]);
Slider::widget(['type' => 'home_page']);
Carousel::widget(['type' => 'positions_home_page', 'id' => 1]);
Slider::widget(['type' => 'join_to_us']);
Carousel::widget([
'type' => 'expositions_home_page',
'id' => 1
]);
Slider::widget(['type' => 'home_page_e_library']);
Carousel::widget([
'type' => 'collection_home_page',
'id' => 1
]);
//Carousel::widget(['type' => 'virtual_walk_home_page', 'id' => 1]);
Slider::widget(['type' => 'home_page_partners']);
@@ -0,0 +1,42 @@
<link rel="stylesheet" href="/_public/assets/css/page.css">
<link rel="stylesheet" href="/_public/assets/css/article-module.css">
<?php
use app\models\Pages;
use app\models\Ts;
use app\widgets\Carousel;
use app\widgets\Includes;
/**
* @var Pages $model
* @var \yii\web\View $this
*/
Ts::set([3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]);
Yii::$app->controller->pageTitle = $model->headerTitle();
Includes::widget([
'type' => 'page_header',
'model' => $model,
'bottom_care' => $model->headerTitle()
]);
echo $this->render('/site/includes/list_e_library')
?>
<script>
function loadSpecificFilter(e) {
let container = document.querySelector(`[data-content-id="${e.dataset.filterInput}"]`)
if (e.value) {
let xhr = new XMLHttpRequest();
xhr.open('get', '/remote/get-specific-filter/?parent_id=' + e.value)
xhr.onload = function () {
if (container)
container.innerHTML = xhr.responseText
}
xhr.send();
} else {
if (container)
container.innerHTML = ""
}
}
</script>
@@ -0,0 +1,76 @@
<link rel="stylesheet" href="/_public/assets/css/page.css">
<link rel="stylesheet" href="/_public/assets/css/article-module.css">
<link rel="stylesheet" href="/_public/assets/css/user.css">
<script src='/_public/assets/js/user.js'></script>
<style>
header {
border-bottom: 0 !important;
}
</style>
<?php
/**
* @var \app\models\Pages $model ;
*/
use app\models\Subscriptions;
use app\models\Ts;
Ts::set([42, 47, 84, 85, 86, 78, 7, 104, 112, 113, 12, 13, 14, 114, 115, 116, 117, 118, 119, 120, 121, 179]);
$site_bar = false;
if (!empty($_GET['tab'])) {
if ($_GET['tab'] == 'collections' || $_GET['tab'] == 'publications') {
$site_bar = true;
}
}
?>
<div class="content">
<div class="flex site-bar-page e-magazine">
<div class="content-body" style="width: 100%;">
<div class="page-header">
<a href="<?= Yii::$app->goHome() ?>" class="top-care">
<?php if (Yii::$app->language == 'en'): ?>
<img src="/_public/images/logo_en/N-logo-03.png">
<?php else: ?>
<img src="/_public/images/logo-b.png">
<?php endif; ?>
</a>
<?php if ($model && $model->headerImage('21:5')): ?>
<img class="header-img" src="<?= $model->headerImage('21:5') ?>" ">
<?php endif; ?>
<div class="header-site-page-title">
<?= $model->headerTitle() ?>
</div>
</div>
<?php if (empty($_GET['collection'])): ?>
<div class="filter-buttons top25">
<button data-href="<?= $model->getUrl() ?>"
class="<?= empty($_GET['tab']) ? 'active' : '' ?>"><?= Ts::get(113) ?></button>
<button class="<?= !empty($_GET['tab']) && $_GET['tab'] == 'subscriptions' ? 'active' : '' ?>"
data-href="?tab=subscriptions"><?= Ts::get(78) ?></button>
<button data-href="?tab=events"
class="<?= !empty($_GET['tab']) && $_GET['tab'] == 'events' ? 'active' : '' ?>"><?= Ts::get(7) ?></button>
<button data-href="?tab=collections"
class="<?= !empty($_GET['tab']) && $_GET['tab'] == 'collections' ? 'active' : '' ?>"><?= Ts::get(104) ?></button>
<button data-href="?tab=publications"
class="<?= !empty($_GET['tab']) && $_GET['tab'] == 'publications' ? 'active' : '' ?>"><?= Ts::get(112) ?></button>
</div>
<?php endif; ?>
<div class="top50"></div>
<?php if (empty($_GET['tab']) && empty($_GET['collection']) && empty($_GET['publication'])): ?>
<?= $this->render('/site/inner-pages/modules/_last_added', ['page' => $model]) ?>
<?php endif; ?>
<?php if (!empty($_GET['tab'])): ?>
<?= $this->render('/site/inner-pages/modules/_'.$_GET['tab'], ['page' => $model]) ?>
<?php endif; ?>
<?php if (!empty($_GET['collection'])): ?>
<?= $this->render('/site/inner-pages/modules/_detail_collection', ['page' => $model]) ?>
<?php endif; ?>
</div>
</div>
</div>
<?php
@@ -0,0 +1,30 @@
<link rel="stylesheet" href="/_public/assets/css/page.css">
<link rel="stylesheet" href="/_public/assets/css/article-module.css">
<link href="/_public/plugins/splitejs/css/splide.min.css" rel="stylesheet">
<link href="/_public/assets/css/search-box.css" rel="stylesheet">
<script src="/_public/plugins/splitejs/js/splide.min.js"></script>
<?php
use app\models\Pages;
use app\models\Ts;
use app\widgets\Carousel;
use app\widgets\Includes;
/**
* @var Pages $model
* @var \yii\web\View $this
*/
Ts::set([45, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 48]);
Yii::$app->controller->pageTitle = $model->headerTitle();
Includes::widget([
'type' => 'page_header',
'model' => $model,
'bottom_care' => $model->headerTitle()
]);
Carousel::widget([
'type' => 'positions_inner_page_expositions',
'id' => 1
]);
echo $this->render('/site/includes/list_exposition')
?>
@@ -0,0 +1,28 @@
<link rel="stylesheet" href="/_public/assets/css/page.css">
<link rel="stylesheet" href="/_public/assets/css/article-module.css">
<?php
use app\models\Pages;
use app\models\Ts;
use app\widgets\Carousel;
use app\widgets\Includes;
/**
* @var Pages $model
* @var \yii\web\View $this
*/
Yii::$app->controller->pageTitle = $model->headerTitle();
Ts::set([3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]);
Includes::widget([
'type' => 'page_header',
'model' => $model,
'bottom_care' => $model->headerTitle()
]);
Carousel::widget([
'type' => 'positions_inner_page',
'id' => 1
]);
echo $this->render('/site/includes/list_article')
?>
@@ -0,0 +1,49 @@
<link rel="stylesheet" href="/_public/assets/css/page.css">
<link rel="stylesheet" href="/_public/assets/css/article-module.css">
<link href="/_public/assets/css/search-box.css" rel="stylesheet">
<script src="/_public/assets/js/search-box.js"></script>
<?php
use app\models\Pages;
use app\models\Ts;
use app\widgets\Carousel;
use app\widgets\Includes;
/**
* @var Pages $model
* @var \yii\web\View $this
*/
Yii::$app->controller->pageTitle = $model->headerTitle();
Ts::set([15, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 48]);
Includes::widget([
'type' => 'page_header',
'model' => $model,
'bottom_care' => $model->headerTitle()
]);
Carousel::widget([
'type' => 'positions_inner_page_collections',
'id' => 1
]);
echo $this->render('/site/includes/list_collection', ['partner_id' => null])
?>
<script>
function loadSpecificCollectionFilter(e) {
console.log(e.dataset.filterInput, e.value)
let container = document.querySelector(`[data-content-id="${e.dataset.filterInput}"]`)
if (e.value) {
let xhr = new XMLHttpRequest();
xhr.open('get', `/<?= Yii::$app->language ?>/remote/get-specific-filter/?parent_id=${e.value}&lib_type=1`)
xhr.onload = function () {
if (container)
container.innerHTML = xhr.responseText
}
xhr.send();
} else {
if (container)
container.innerHTML = ""
}
}
</script>
@@ -0,0 +1,65 @@
<link rel="stylesheet" href="/_public/assets/css/page.css">
<link rel="stylesheet" href="/_public/assets/css/article-module.css">
<?php
use app\models\Ts;
use app\services\ViewReg;
use app\widgets\Carousel;
use app\widgets\Includes;
/**
* @var \yii\web\View $this
* @var \app\models\Pages $model ;
* @var $type
*/
Ts::set([51, 52, 132, 133, 156, 182, 183]);
Yii::$app->controller->pageTitle = $model->headerTitle();
?>
<div class="content">
<div class="page-header simple-page-header" style="height: 80px">
<div class="header-logo top-care" style="display: block"><?= Ts::get(51) ?></div>
</div>
<a href="/<?= Yii::$app->language ?>/">
<?php if (Yii::$app->language == 'en'): ?>
<img src="/_public/images/logo_en/N-logo-02.png" class="logo-center-absolute">
<?php else: ?>
<img src="/_public/images/logo-b.png" class="logo-center-absolute">
<?php endif; ?>
</a>
<div class="flex top50 page-contacts">
<div class="cw8" style="text-align: justify; padding-right: 15px">
<?= $model->text() ?>
</div>
<?php if ($model->contacts) ?>
<div class="cw4">
<div class="article-site-bar">
<div class="row font-bold" style="padding: 0 0 10px 0"><?= Ts::get(52) ?>:</div>
<div class="row">
<div class="sub-row">
<i class="las la-map-marker-alt" style="font-size: 25px"></i> <?= Ts::get(133) ?>:<span
class="font-bold left-15"><?= $model->contacts->getAddress() ?></span>
</div>
</div>
<div class="row">
<div class="sub-row">
<i class="la la-globe"></i><?= Ts::get(156) ?>:<span
class="font-bold left-15"><a target="_blank" href="https://<?= $model->contacts->website ?>"><?= $model->contacts->website ?></a></span>
</div>
</div>
<div class="row">
<div class="sub-row">
<i class="la la-phone"></i><?= Ts::get(182) ?>:<span
class="font-bold left-15"><a href="tel: <?= $model->contacts->phone ?>"><?= $model->contacts->phone ?></a></span>
</div>
</div>
<div class="row">
<div class="sub-row">
<i class="la la-envelope"></i><?= Ts::get(183) ?>:<span
class="font-bold left-15"><a href="mailto: <?= $model->contacts->email ?>"><?= $model->contacts->email ?></a></span>
</div>
</div>
</div>
</div>
</div>
</div>
@@ -0,0 +1,35 @@
<?php
use app\models\Ts;
/**
* @var \app\models\Pages $page
*/
$perPage = 27;
$pageNumber = $_GET['page'] ?? 1;
$data = \app\models\register\Collections::find()
->where(['published' => 1, 'deleted' => 0, 'is_payable' => 1])
->andWhere(['>', 'price', 0])
->orderBy(['modified_on' => SORT_DESC]);
$count = $data->count();
$pagesCount = ceil($count / $perPage);
$collections = $data->limit($perPage)
->offset($pageNumber * $perPage - $perPage)
->all();
?>
<div class="section-title top25"><?= Ts::get(104) ?></div>
<div style="width: 100%">
<?= $this->render('_list_collection_sq_partial', ['collections' => $collections, 'page' => $page]); ?>
</div>
<div class="content">
<div id="pagination" class="filter-buttons flex-left top50">
<?= $this->render('_pagination', [
'pagesCount' => $pagesCount,
'pageNumber' => $pageNumber,
'tab' => 'collections'
]) ?>
</div>
</div>
@@ -0,0 +1,151 @@
<link href="/_public/assets/css/collection-objects-greed.css" rel="stylesheet">
<link href="/_public/assets/css/article-module.css" rel="stylesheet">
<style>
.gallery-preview {
position: relative
}
.gallery-preview .gallery-poster {
filter: blur(0) brightness(100%);
transition: all 0.4s;
}
.gallery-preview:hover .gallery-poster {
filter: blur(5px) brightness(50%);
}
.gallery-preview .icon {
position: absolute;
top: 160px;
text-align: center;
width: 100%;
display: none;
color: #FFFFFF;
font-size: 14px;
}
.gallery-preview:hover .icon {
display: block;
}
.gallery-preview .icon .la {
color: #FFFFFF;
font-size: 40px;
display: block;
margin-bottom: 10px;
}
.modal-video.frame {
height: 700px !important;
}
</style>
<?php
/**
* @var \app\models\Pages $page
*/
use app\models\OrderProduct;
use app\models\register\Collections;
use app\models\Ts;
use app\services\Auth;
use app\services\JWT;
$user = Auth::getUser();
$lg = Yii::$app->language;
$collection = \app\models\register\Collections::findOne($_GET['collection']);
?>
<div class="filter-buttons">
<?php if (!empty($_GET['back'])): ?>
<?php if ($_GET['back'] != 'last_added'): ?>
<?php if ($_GET['back'] == 'collections'): ?>
<button data-href="?tab=collections"><i class="la la-undo"></i> <?= Ts::get(42) ?></button>
<?php endif; ?>
<?php else: ?>
<button data-href="<?= $page->getUrl() ?>"><i class="la la-undo"></i> <?= Ts::get(119) ?></button>
<?php endif; ?>
<?php endif; ?>
</div>
<?php if ($collection): ?>
<div class="cw12 flex top25" style="background: #f1f1f1;">
<div class="cw4" style="height: 350px">
<a href="<?= $collection->getUrl() ?>" class="cell">
<div class="list-element-img cell-img"
style="background-image: url('<?= $collection->getImg() ?>')"></div>
</a>
</div>
<div class="cw6">
<div class="cell">
<div class="list-label events"><?= Ts::get('117') ?></div>
<div class="top20 detail-e-magazin-title"
title="<?= $collection->title() ?>"><?= $collection->title() ?></div>
<div class="list-text top20">
<?= $collection->textDescription() ?>
</div>
<div class="e-magazine-price font-bold top20"><?= Ts::get(116) ?>
: <?= number_format($collection->price, 2, '.', ' ') ?> лв.
</div>
</div>
</div>
</div>
<div class="detail-e-magazin-title top25"><?= $collection->objectCountLabel() ?>
/ <?= $collection->imageCountLabel() ?></div>
<div class="collection-greed top25">
<div class="content-out gallery flex-wrap">
<?php foreach ($collection->collectionsObjects as $collectionObject): ?>
<?php if (!empty($collectionObject->object->registerObjectImages[0])): ?>
<?php $file = $collectionObject->object->registerObjectImages[0]; ?>
<div class="gallery__item gallery-preview" onclick="openGalleryPreview(this)"
data-object-id="<?= $collectionObject->object->id ?>" style="cursor: pointer">
<div class="gallery-poster"
style="width: 100%; height: 400px; background: url('<?= $file->getResizedImg(false, true) ?>') no-repeat; background-size: cover;"></div>
<div class="gallery__item_title"><?= $collectionObject->object->getTitle() ?></div>
<div class="icon">
<i class="la la-images"></i>
<?= $lg == 'en' ? 'Preview gallery' : 'Преглед галерия' ?>
</div>
</div>
<?php else: ?>
<div class="gallery__item">
<div
style="width: 100%; height: 400px; background: url('/_public/images/empty.png') no-repeat; background-size: cover;"
></div>
<div class="gallery__item_title"><?= $collectionObject->object->getTitle() ?></div>
</div>
<?php endif; ?>
<?php endforeach; ?>
</div>
</div>
<?php
$activeDownload = false;
if ($user) {
$hasOrder = OrderProduct::find()->joinWith('order')
->where(['user_id' => $user->id, 'model_class' => Collections::class, 'model_id' => $collection->id])->one();
if ($hasOrder) {
if ($hasOrder->order->payment && $hasOrder->order->payment->status == 'PAID') {
$activeDownload = true;
}
}
}
?>
<?php if ($activeDownload): ?>
<div onclick="window.location.href = '/<?= $lg ?>/user/?cid=<?= JWT::encode(['cid' => $collection->id], JWT::SECRET_KEY) ?>'" class="profile-submit gradient ct top25">
<i class="la la-download"></i> <?= $lg == 'en' ? 'Download' : 'Изтегли' ?>
</div>
<?php else: ?>
<div data-max="1" data-cart="<?= $collection->cartKey ?>"
onclick="cart.add(this, e => {cart.updateSubscriptions(e, 'add')})"
class="profile-submit gradient ct top25"><i
class="la la-shopping-cart"></i> <?= Ts::get(115) ?>
</div>
<?php endif; ?>
<?php endif; ?>
<script>
function openGalleryPreview(e) {
const url = `/<?= Yii::$app->language ?>/remote/object-gallery/?object_id=${e.dataset.objectId}`
modal.modalFrame(url)
}
</script>
@@ -0,0 +1,41 @@
<?php
use app\models\Ts;
use app\models\Pages;
$pageNumber = $_GET['page'] ?? 1;
$perPage = 27;
/**
* @var Pages $page
*/
$data = \app\models\Articles::find()
->joinWith('events')
->where(['events.is_active' => 1])
->andWhere(['events.type' => 'booking'])
->orWhere(['events.type' => 'online'])
//->andWhere(['>', 'events.event_last_date', date('Y-m-d')])
->orderBy(['events.event_first_date' => SORT_DESC]);
$count = $data->count();
$pagesCount = ceil($count / $perPage);
$events = $data->limit($perPage)
->offset($pageNumber * $perPage - $perPage)
->all();
?>
<div class="section-title"><?= Ts::get(7) ?></div>
<div style="width: 100%">
<?= $this->render('_list_article_partial', ['articles' => $events, 'page' => $page]); ?>
</div>
<div class="content">
<div id="pagination" class="filter-buttons flex-center top50">
<?= $this->render('_pagination', [
'pagesCount' => $pagesCount,
'pageNumber' => $pageNumber,
'tab' => 'events'
]) ?>
</div>
</div>
@@ -0,0 +1,55 @@
<?php
use app\models\Ts;
use app\models\Pages;
/**
* @var Pages $page
*/
?>
<div class="section-title"><?= Ts::get(7)?></div>
<div style="width: 100%">
<?php
$data = $this->render('_list_article_partial', ['articles' => \app\models\Articles::find()
->joinWith('events')
->where(['events.is_active' => 1])
->andWhere(['events.type' => 'booking'])
->orWhere(['events.type' => 'online'])
->orderBy(['events.event_first_date' => SORT_DESC])
->limit(6)
//->andWhere('')
->all(), 'page' => $page]);
echo $data;
?>
</div>
<div class="section-title top25"><?= Ts::get(104)?></div>
<div style="width: 100%">
<?php
$data = $this->render('_list_collection_partial', ['collections' => \app\models\register\Collections::find()
->where(['published' => 1, 'deleted' => 0, 'is_payable' => 1])
->andWhere(['>', 'price', 0])
->orderBy(['modified_on' => SORT_DESC])
->limit(6)
->all(), 'page' => $page]);
echo $data;
?>
</div>
<div class="section-title top25"><?= Ts::get(112) ?></div>
<div style="width: 100%">
<?php
$data = $this->render('_list_libs_partial', ['libs' => \app\models\RegisterObjects::find()
->where(['is_active' => 1, 'lib_type' => 2, 'is_payable' => 1])
//->andWhere(['>', 'price', 0])
//->orderBy(['modified_on' => SORT_DESC])
->limit(6)
->all(), 'page' => $page]);
echo $data;
?>
</div>
@@ -0,0 +1,25 @@
<?php
/**
* @var \app\models\Articles[] $articles
*/
use app\models\Ts;
use app\services\ViewReg;
?>
<div class="flex-wrap e-magazine-list">
<?php foreach ($articles as $article): ?>
<div class="list-element">
<a href="<?= ViewReg::generateDetailPageUrl($article) ?>">
<div class="img-container"
style="background-image: url('<?= $article->article->image('16:11') ?>');"></div>
</a>
<div class="top20 list-label <?= $article->art_table ?>"><?= $article->label ?></div>
<div class="list-title top20" data-max-str="80" title="<?= $article->article->title()?>"><?= $article->article->title() ?></div>
<p class="list-text font-bold" style="color: var(--color-main-super-dark)"><?= $article->events->getFormattedDates() ?><?= $article->events->daily_open_time ? ' / ' . $article->events->daily_open_time : '' ?></p>
<div class="list-text top20" data-max-str="100"><?= $article->article->textShort() ?></div>
<div data-href="<?= ViewReg::generateDetailPageUrl($article) ?>" class="profile-submit gradient ct"><?= Ts::get(114)?></div>
</div>
<?php endforeach; ?>
</div>
@@ -0,0 +1,55 @@
<?php
/**
* @var \app\models\register\Collections[] $collections
*/
use app\models\Ts;
use app\models\OrderProduct;
use \app\models\register\Collections;
use \app\services\Auth;
$lg = Yii::$app->language;
$user = Auth::getUser();
/**
* @var \app\models\Pages $page
*/
?>
<div class="flex-wrap e-magazine-list">
<?php foreach ($collections as $collection): ?>
<?php
$activeDownload = false;
if($user) {
$hasOrder = OrderProduct::find()->joinWith('order')
->where(['user_id' => $user->id, 'model_class' => Collections::class, 'model_id' => $collection->id])->one();
if($hasOrder) {
if($hasOrder->order->payment && $hasOrder->order->payment->status == 'PAID') {
$activeDownload = true;
}
}
}
?>
<div class="list-element">
<div class="img-container" style="background-image: url('<?= $collection->getImg() ?>')"></div>
<div class="top20 list-label"><?= Ts::get(117) ?></div>
<div class="list-title top20" data-max-str="80"
title="<?= $collection->title() ?>"><?= $collection->title() ?></div>
<div class="list-text font-bold top20"><?= Ts::get(116) ?>
: <?= number_format($collection->price, 2, '.', ' ') ?> лв.
</div>
<div class="list-text top20" data-max-str="100">
<?= $collection->textDescription() ?>
</div>
<div data-href="<?= $page->getUrl() ?>?collection=<?= $collection->id ?>&back=last_added"
class="profile-submit gradient ct">
<?php if($activeDownload): ?>
<i class="la la-download"></i> <?= $lg == 'en' ? 'Download' : 'Изтегли' ?>
<?php else: ?>
<i class="la la-shopping-cart"></i> <?= Ts::get(115) ?>
<?php endif; ?>
</div>
</div>
<?php endforeach; ?>
</div>
@@ -0,0 +1,40 @@
<?php
/**
* @var \app\models\RegisterObjects[] $libs
*/
use app\models\RegisterObjects;
use app\models\Ts;
$lg = Yii::$app->language;
/**
* @var \app\models\Pages $page
*/
?>
<div class="flex-wrap e-magazine-list">
<?php foreach ($libs as $lib): ?>
<div class="list-element library">
<div class="img-container img-container-lib" style="background-image: url('<?= $lib->getImg() ?>')"></div>
<div class="top20 list-label"><?= Ts::get(179) ?></div>
<div class="list-title top20 pointer" data-max-str="80" data-href="<?= $lib->getLibraryUrl() ?>"
title="<?= $lib->getTitle() ?>"><?= $lib->getTitle() ?></div>
<div class="list-text font-bold top20"><?= Ts::get(116) ?>
: <?= number_format($lib->price, 2, '.', ' ') ?> лв.
</div>
<?php
$user = \app\services\Auth::getUser();
$paid = false;
if ($user) {
$product = \app\models\OrderProduct::find()->joinWith('order')->where(['model_class' => RegisterObjects::class, 'model_id' => $lib->id, 'user_id' => $user->id])->one();
if($product && $product->order->payment && $product->order->payment->status == 'PAID') {
$paid = true;
}
}
?>
<div data-href="<?= $lib->getLibraryUrl() ?>"
class="profile-submit gradient ct"><?= !$paid ? '<i class="la la-shopping-cart"></i> '. Ts::get(115) : ($lg == 'en' ? 'Read' : 'Прочети') ?></div>
</div>
<?php endforeach; ?>
</div>
@@ -0,0 +1,41 @@
<?php
/**
* @var $pagesCount
* @var $pageNumber
* @var $tab
* @var $query
*/
$query = $query ?? '';
if ($pagesCount > 1):
$first = 1;
$last = $pagesCount + 1;
if ($pagesCount < 10): ?>
<?php for ($p = $first; $p < $last; $p++): ?>
<button class="<?= $p == $pageNumber ? 'active' : '' ?>"
onclick="window.location.href = `?tab=<?= $tab . $query ?>&page=<?= $p ?>`"><?= $p ?></button>
<?php endfor; ?>
<?php else:
if ($pageNumber < 9): ?>
<?php for ($p = 1; $p < 10; $p++): ?>
<button class="<?= $p == $pageNumber ? 'active' : '' ?>"
onclick="window.location.href = `?tab=<?= $tab . $query ?>&page=<?= $p ?>`"><?= $p ?></button>
<?php endfor; ?>
<?php else: ?>
<button onclick="window.location.href = `?tab=<?= $tab . $query ?>&page=<?= 1 ?>`">1</button>
<button class="disabled">...</button>
<?php
$last = $pageNumber + 4 > $pagesCount ? $pagesCount + 1 : $pageNumber + 3;
for ($p = $pageNumber - 3; $p < $last; $p++): ?>
<button class="<?= $p == $pageNumber ? 'active' : '' ?>"
onclick="window.location.href = `?tab=<?= $tab . $query ?>&page=<?= $p ?>`"><?= $p ?></button>
<?php endfor; ?>
<?php endif; ?>
<?php if ($pageNumber < $pagesCount - 3): ?>
<button class="disabled">...</button>
<button class="<?= $pageNumber == $pagesCount ? 'active' : '' ?>"
onclick="window.location.href = `?tab=<?= $tab . $query ?>&page=<?= $pagesCount ?>`"><?= $pagesCount ?></button>
<?php endif; ?>
<?php endif; ?>
<?php endif; ?>
@@ -0,0 +1,37 @@
<?php
/**
* @var \app\models\Pages $page
*/
use app\models\Ts;
$perPage = 27;
$pageNumber = $_GET['page'] ?? 1;
$data = \app\models\RegisterObjects::find()
->where(['lib_type' => 2, 'is_payable' => 1, 'is_active' => 1]);
//->andWhere(['>', 'price', 0])
//->orderBy(['modified_on' => SORT_DESC]);
$count = $data->count();
$pagesCount = ceil($count / $perPage);
$libs = $data->limit($perPage)
->offset($pageNumber * $perPage - $perPage)
->all();
?>
<div class="section-title top25"><?= Ts::get(112) ?></div>
<div style="width: 100%">
<?= $this->render('_list_libs_partial', ['libs' => $libs, 'page' => $page]); ?>
</div>
<div class="content">
<div id="pagination" class="filter-buttons flex-leqft top50">
<?= $this->render('_pagination', [
'pagesCount' => $pagesCount,
'pageNumber' => $pageNumber,
'tab' => 'publications'
]) ?>
</div>
</div>
@@ -0,0 +1,25 @@
<?php
use app\models\Subscriptions;
use app\models\Ts;
?>
<div class="tab-content-panel">
<div class="subscriptions flex">
<?php
foreach (Subscriptions::find()->all() as $subscription): ?>
<div class="subscription cw3">
<div class="ct header-subs"><?= $subscription->getTitle() ?></div>
<div class="body-subs <?= $subscription->isInCart() ? 'selected' : '' ?>">
<div class="price"><?= $subscription->getFormatedPrice() ?></div>
<div class="months top20"><?= $subscription->months . ' ' . $subscription->getMonthLabel() ?></div>
<div class="option">
<div data-href="<?= Yii::$app->goToAction('user') ?>"
class="top25 subscription-button visible-option profile-submit ct gradient">
<?= Ts::get(84) ?>
</div>
</div>
</div>
</div>
<?php endforeach; ?>
</div>
</div>
@@ -0,0 +1,52 @@
<link rel="stylesheet" href="/_public/assets/css/page.css">
<link rel="stylesheet" href="/_public/assets/css/article-module.css">
<?php
use app\models\Ts;
use app\services\ViewReg;
use app\widgets\Carousel;
use app\widgets\Includes;
/**
* @var \yii\web\View $this
* @var \app\models\Articles $model ;
* @var $type
*/
Ts::set([2, 12, 6, 7, 8]);
Yii::$app->controller->pageTitle = $model->headerTitle();
$partners = \app\models\register\Partner::find()->where(['active' => 1, 'deleted' => 0])->andWhere(['<', 'type', 2])->all();
?>
<div class="content">
<div class="page-header mobile-hide" style="height: 80px">
<a href="<?= Yii::$app->goHome() ?>" class="header-logo top-care">
<?php if (Yii::$app->language == 'en'): ?>
<img src="/_public/images/logo_en/N-logo-03.png">
<?php else: ?>
<img src="/_public/images/logo.png">
<?php endif; ?>
</a>
</div>
<div class="top25 filter-buttons flex-center">
<button class="active">Партньори</button>
</div>
<div class="top25 flex flex-wrap partners">
<?php
foreach ($partners as $partner):
$partnerData = (object)[
'name' => $partner->getTsName(),
'logo' => $partner->getSrcOfSingleImage('partner_logo_image', '1:1', '/_public/assets/images/emptysq.png')
];
?>
<a href="<?= $partner->getUrl() ?>" class="flex-list-element">
<div class="flex flex-center">
<img src="<?= $partnerData->logo ?>">
</div>
<div class="ct">
<?= $partnerData->name ?>
</div>
</a>
<?php endforeach; ?>
</div>
</div>
@@ -0,0 +1,24 @@
<link rel="stylesheet" href="/_public/assets/css/page.css">
<link rel="stylesheet" href="/_public/assets/css/article-module.css">
<?php
use app\models\Pages;
use app\models\Ts;
use app\widgets\Carousel;
use app\widgets\Includes;
/**
* @var Pages $model
* @var \yii\web\View $this
*/
Ts::set([3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]);
Yii::$app->controller->pageTitle = $model->headerTitle();
Includes::widget([
'type' => 'page_header',
'model' => $model,
'bottom_care' => $model->headerTitle()
]);
echo $this->render('/site/includes/list_project')
?>
@@ -0,0 +1,29 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Key Press Detection</title>
</head>
<body>
<p>Press a key to see its code and name:</p>
<p id="keyInfo">Key code: <span id="keyCode"></span>, Key name: <span id="keyName"></span></p>
<script>
// Get a reference to the elements for displaying key information
const keyInfo = document.getElementById('keyInfo');
const keyCodeSpan = document.getElementById('keyCode');
const keyNameSpan = document.getElementById('keyName');
// Add a keypress event listener to the document
document.addEventListener('keypress', (event) => {
// Get the key code and key name from the event object
const keyCode = event.keyCode || event.which;
const keyName = event.key;
// Display the key code and key name
keyCodeSpan.textContent = keyCode;
keyNameSpan.textContent = keyName;
});
</script>
</body>
</html>
@@ -0,0 +1,28 @@
<link rel="stylesheet" href="/_public/assets/css/page.css">
<link rel="stylesheet" href="/_public/assets/css/article-module.css">
<?php
use app\models\Ts;
Ts::set([2, 12, 6, 7, 8]);
$partners = \app\models\register\Partner::find()->where(['active' => 1, 'deleted' => 0, 'type' => 2])->all();
?>
<div class="top25 flex flex-wrap">
<?php
foreach ($partners as $partner):
$partnerData = (object)[
'name' => $partner->name,
'logo' => $partner->getSrcOfSingleImage('partner_logo_image', '1:1', '/_public/assets/images/emptysq.png')
];
?>
<a href="<?= $partner->getUrl() ?>" class="flex-list-element">
<div class="flex flex-center">
<img src="<?= $partnerData->logo ?>">
</div>
<div class="ct">
<?= $partnerData->name ?>
</div>
</a>
<?php endforeach; ?>
</div>
@@ -0,0 +1,55 @@
<link rel="stylesheet" href="/_public/assets/css/page.css">
<link rel="stylesheet" href="/_public/assets/css/article-module.css">
<link rel="stylesheet" href="/_public/assets/css/user.css">
<?php use app\widgets\ContactForm;
if(empty($_SESSION['register_user'])): ?>
<style>
.profile-submit.vertical-space {
display: none !important;
}
</style>
<?php endif; ?>
<?php
/**
* @var \app\models\Pages $model
*/
?>
<div class="content">
<div class="page-header" style="height: 80px">
<a href="<?= Yii::$app->goHome() ?>" class="header-logo top-care">
<?php if (Yii::$app->language == 'en'): ?>
<img src="/_public/images/logo_en/N-logo-03.png">
<?php else: ?>
<img src="/_public/images/logo.png">
<?php endif; ?>
</a>
</div>
</div>
<div class="content-inner min-page-height">
<div class="detail-title top50"><?= $model->headerTitle() ?></div>
<p class="simple-page-content"><?= $model->text() ?></p>
<?php
//FOR PAGE Virtual museum
if ($model->id == 17)
echo $this->render('_vmuseum');
//FOR Page Contact form
if($model->id == 22)
ContactForm::widget();
?>
</div>
<script>
<?php if ($model->id == 16):?>
document.querySelectorAll('p a').forEach(a => {
a.classList.add('profile-submit')
a.classList.add('vertical-space')
if(a.href.indexOf('<?= Yii::$app->params['media_server']?>') > -1) {
a.href = a.href + '?lg=<?= Yii::$app->language?>'
}
})
<?php endif; ?>
</script>
@@ -0,0 +1 @@
<h1>Пловдив</h1>