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,46 @@
<?php if (!empty($_GET['webview_mode'])): ?>
<style>
header, .page-header, footer, .cart, .mobile-logo {display: none !important;}
.main-profile-panel, .booking-panel { margin: 0 !important; !important;}
.content {width: calc(100% - 20px) !important; padding: 60px 10px 10px 10px !important;}
.header-app {
background: #FFFFFF;
width: 100%;
text-align: center;
height: 50px;
line-height: 50px;
position: fixed;
box-shadow: 0 5px 10px rgba(0,0,0, 0.4);
top: 0;
left: 0;
}
.close-browser-in-app {
position: absolute;
color: #FFFFFF;
background: #000000;
width: 25px;
height: 25px;
right: 15px;
top: 14px;
font-size: 20px;
text-align: center;
line-height: 27px;
border-radius: 5px !important;
}
</style>
<script>
const closeBrowseBtn = document.createElement('div');
closeBrowseBtn.className = 'close-browser-in-app';
closeBrowseBtn.innerHTML = '<i class="la la-times"></i>';
closeBrowseBtn.addEventListener('click', () => {
window.location.href = '/bg/mobile-api/browser-close/'
})
const headerApp = document.createElement('div');
headerApp.className = 'header-app';
headerApp.innerHTML = '<?= \app\models\Ts::get(191)?>'
headerApp.appendChild(closeBrowseBtn);
window.addEventListener('DOMContentLoaded', function () {
document.body.appendChild(headerApp);
})
</script>
<?php endif ?>
@@ -0,0 +1,49 @@
<?php if (!empty($_GET['webview_mode'])): ?>
<link rel="stylesheet" href="/_public/assets/fonts/line-awesome/css/line-awesome.min.css">
<style>
header, .page-header, footer, .cart, .mobile-logo {display: none !important;}
.main-profile-panel, .booking-panel { margin: 0 !important; !important;}
.content {width: calc(100% - 20px) !important; padding: 60px 10px 10px 10px !important;}
.panel-box { background: #FFFFFF; border: 0}
.header-app {
background: #FFFFFF;
width: 100%;
text-align: center;
height: 50px;
line-height: 50px;
position: fixed;
box-shadow: 0 5px 10px rgba(0,0,0, 0.4);
top: 0;
left: 0;
}
.close-browser-in-app {
position: absolute;
color: #FFFFFF;
background: #000000;
width: 25px;
height: 25px;
right: 15px;
top: 14px;
font-size: 20px;
text-align: center;
line-height: 27px;
border-radius: 5px !important;
}
.footer-logos { display: none !important; }
</style>
<script>
const closeBrowseBtn = document.createElement('div');
closeBrowseBtn.className = 'close-browser-in-app';
closeBrowseBtn.innerHTML = '<i class="la la-times"></i>';
closeBrowseBtn.addEventListener('click', () => {
window.location.href = '/<?= Yii::$app->language ?>/mobile-api/browser-close/'
})
const headerApp = document.createElement('div');
headerApp.className = 'header-app';
headerApp.innerHTML = '<?= \app\models\Ts::get(194)?>'
headerApp.appendChild(closeBrowseBtn);
window.addEventListener('DOMContentLoaded', function () {
document.body.appendChild(headerApp);
})
</script>
<?php endif ?>
@@ -0,0 +1,111 @@
<?php
/**
* @var $model \app\models\RegisterObjects
*/
use app\services\GeoService;
if ($model->administrative_latitude && $model->administrative_longitude && $model->administrative_latitude > $model->administrative_longitude): ?>
<link rel="stylesheet" href="/_public/plugins/leafletjs/leaflet.css">
<script src="/_public/plugins/leafletjs/leaflet.js"></script>
<style>
.map-container {
position: relative
}
.sdc {
position: absolute;
top: 10px;
right: 10px
}
.sdc select {
height: 30px;
padding-left: 3px;
outline: none !important;
}
</style>
<div class="content top25">
<div class="map-container">
<div id="map"
style="width: 100%; height: 800px; box-shadow: 0 0 10px rgba(0,0,0,0.4); border: 2px solid var(--color-main); border-radius: 5px; position: relative"></div>
</div>
</div>
<script>
// const points = [];//JSON.parse('<?= json_encode(GeoService::getNearestObjects($model->administrative_latitude, $model->administrative_longitude)['data']) ?>') || [];
const locale = '<?= Yii::$app->language ?>'
let mapOptions = {
center: [<?=$model->administrative_latitude?>, <?= $model->administrative_longitude?>],
zoom: 10
}
let map = new L.map('map', mapOptions);
let layer = new L.TileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png');
map.addLayer(layer);
let marker = new L.Marker([<?=$model->administrative_latitude?>, <?= $model->administrative_longitude?>]);
marker.addTo(map);
let addedPoints = [];
function addPoints(dist) {
const xhr = new XMLHttpRequest()
xhr.open('get', `/bg/remote/get-nearest-objects/?lat=<?= $model->administrative_latitude?>&lon=<?= $model->administrative_longitude?>&dist=${dist}`)
if(addedPoints.length > 0) {
addedPoints.forEach(pointToDelete => {
map.removeLayer(pointToDelete)
})
}
xhr.responseType = 'json';
xhr.onload = function () {
if (xhr.response) {
const points = xhr.response;
points.forEach(p => {
let point = new L.Marker([p.latitude, p.longitude]);
let icon = L.icon({
iconUrl: '/_public/plugins/leafletjs/images/marker-icon-point-2x.png',
iconSize: [20, 30]
});
point.setIcon(icon)
point.addTo(map);
point.addEventListener('click', () => {
simpleContentRequest(`/${locale}/mobile-api/get-map-point-data/?id=${p.id}`, htmlContent => {
point.bindPopup(htmlContent).openPopup();
})
})
addedPoints.push(point)
})
}
}
xhr.send();
}
setTimeout(function () {
addPoints(50)
}, 50)
const mapContainer = document.querySelector('.map-container');
const selectContainer = document.createElement('div');
selectContainer.classList.add('sdc')
const distanceChangeSelect = document.createElement('select')
const distances = [5, 10, 20, 50, 100, 150, 200];
distances.forEach(d => {
const option = document.createElement('option');
option.value = d;
option.innerHTML = `${d} ${(locale === 'en' ? ' km' : ' км')}`
if (d === 50)
option.selected = true;
distanceChangeSelect.appendChild(option)
})
selectContainer.appendChild(distanceChangeSelect);
mapContainer.appendChild(selectContainer);
distanceChangeSelect.addEventListener('change', () => {
addPoints(distanceChangeSelect.value)
})
</script>
<?php endif ?>
@@ -0,0 +1,16 @@
<?php
/* @var $this \yii\web\View */
/* @var \app\models\RegisterObjectFiles $objectFile */
if (!empty($_GET['preview']) && $_GET['preview'] == 'pdf') {
$file = $objectFile->file_url;
$filename = $objectFile->video_title ?? 'PDF файл';
header('Content-type: application/pdf');
header('Content-Disposition: inline; filename="' . $filename . '"');
header('Content-Transfer-Encoding: binary');
header('Accept-Ranges: bytes');
@readfile($file);
exit;
}
?>
@@ -0,0 +1,10 @@
<?php
$url = explode('?', $_SERVER['REQUEST_URI'])[0];
/* @var $this \yii\web\View */
/* @var $objectFile \app\models\RegisterObjectFiles */
?>
<?= $this->render('/../_public/plugins/pdfjs/web/viewer')?>
@@ -0,0 +1,21 @@
<?php
/**
* @var $id
*/
$_GET['webview_mode'] = 1;
?>
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<?= $this->render('/_mobile_view_mode') ?>
<iframe style="border: 0; width: 100%; height: calc(100% - 50px)" src="<?= Yii::$app->params['portal'] . '/file-system/file-preview-delivery/'. $id . '/' ?>">
</body>
</html>
@@ -0,0 +1,20 @@
<?php
//if(!empty($_GET['preview'])) {
/* @var $this \yii\web\View */
/* @var \app\models\RegisterObjectFiles $objectFile */
//if (!empty($_GET['preview']) && $_GET['preview'] == 'pdf') {
//$file = $objectFile->file_url;
$filename = $objectFile->video_title ?? 'PDF файл';
header('Content-type: application/octet-stream');
header('Content-Disposition: inline; filename="' . $filename . '"');
header('Content-Transfer-Encoding: binary');
header('Accept-Ranges: bytes');
//@readfile($file);
\app\services\IdServer::url($objectFile->file_url);
exit;
//}
?>
@@ -0,0 +1,15 @@
<?php
/* @var $this \yii\web\View */
/* @var string $file_name */
//echo $file_name;
//exit;
$file = $_SERVER['DOCUMENT_ROOT'].'/_docs/'.$file_name;
if(file_exists($file)) {
header('Content-type: application/pdf');
header('Content-Disposition: inline; filename="' . $file_name . '"');
header('Content-Transfer-Encoding: binary');
header('Accept-Ranges: bytes');
@readfile($file);
exit;
}
die('File does not exist');
@@ -0,0 +1,504 @@
<?php
/**
* @var $this \yii\web\View;
*/
?>
<!DOCTYPE html>
<!--
Copyright 2012 Mozilla Foundation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Adobe CMap resources are covered by their own copyright but the same license:
Copyright 1990-2015 Adobe Systems Incorporated.
See https://github.com/adobe-type-tools/cmap-resources
-->
<html dir="ltr" mozdisallowselectionprint>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta name="google" content="notranslate">
<title>PDF.js viewer</title>
<!-- This snippet is used in production (included from viewer.html) -->
<link rel="resource" type="application/l10n" href="locale/locale.properties">
<script src="https://portal.nasledstvo.bg/_public/plugins/pdfjs/build/pdf.js"></script>
<link rel="stylesheet" href="https://portal.nasledstvo.bg/_public/plugins/pdfjs/web/viewer.css">
<script>
<?= $this->render('viewerjs') ?>
</script>
</head>
<body tabindex="1">
<div id="outerContainer">
<div id="sidebarContainer">
<div id="toolbarSidebar">
<div id="toolbarSidebarLeft">
<div id="sidebarViewButtons" class="splitToolbarButton toggled" role="radiogroup">
<button id="viewThumbnail" class="toolbarButton toggled" title="Show Thumbnails" tabindex="2"
data-l10n-id="thumbs" role="radio" aria-checked="true" aria-controls="thumbnailView">
<span data-l10n-id="thumbs_label">Thumbnails</span>
</button>
<button id="viewOutline" class="toolbarButton"
title="Show Document Outline (double-click to expand/collapse all items)" tabindex="3"
data-l10n-id="document_outline" role="radio" aria-checked="false"
aria-controls="outlineView">
<span data-l10n-id="document_outline_label">Document Outline</span>
</button>
<button id="viewAttachments" class="toolbarButton" title="Show Attachments" tabindex="4"
data-l10n-id="attachments" role="radio" aria-checked="false"
aria-controls="attachmentsView">
<span data-l10n-id="attachments_label">Attachments</span>
</button>
<button id="viewLayers" class="toolbarButton"
title="Show Layers (double-click to reset all layers to the default state)" tabindex="5"
data-l10n-id="layers" role="radio" aria-checked="false" aria-controls="layersView">
<span data-l10n-id="layers_label">Layers</span>
</button>
</div>
</div>
<div id="toolbarSidebarRight">
<div id="outlineOptionsContainer" class="hidden">
<div class="verticalToolbarSeparator"></div>
<button id="currentOutlineItem" class="toolbarButton" disabled="disabled"
title="Find Current Outline Item" tabindex="6" data-l10n-id="current_outline_item">
<span data-l10n-id="current_outline_item_label">Current Outline Item</span>
</button>
</div>
</div>
</div>
<div id="sidebarContent">
<div id="thumbnailView">
</div>
<div id="outlineView" class="hidden">
</div>
<div id="attachmentsView" class="hidden">
</div>
<div id="layersView" class="hidden">
</div>
</div>
<div id="sidebarResizer"></div>
</div> <!-- sidebarContainer -->
<div id="mainContainer">
<div class="findbar hidden doorHanger" id="findbar">
<div id="findbarInputContainer">
<input id="findInput" class="toolbarField" title="Find" placeholder="Find in document…" tabindex="91"
data-l10n-id="find_input" aria-invalid="false">
<div class="splitToolbarButton">
<button id="findPrevious" class="toolbarButton" title="Find the previous occurrence of the phrase"
tabindex="92" data-l10n-id="find_previous">
<span data-l10n-id="find_previous_label">Previous</span>
</button>
<div class="splitToolbarButtonSeparator"></div>
<button id="findNext" class="toolbarButton" title="Find the next occurrence of the phrase"
tabindex="93" data-l10n-id="find_next">
<span data-l10n-id="find_next_label">Next</span>
</button>
</div>
</div>
<div id="findbarOptionsOneContainer">
<input type="checkbox" id="findHighlightAll" class="toolbarField" tabindex="94">
<label for="findHighlightAll" class="toolbarLabel" data-l10n-id="find_highlight">Highlight All</label>
<input type="checkbox" id="findMatchCase" class="toolbarField" tabindex="95">
<label for="findMatchCase" class="toolbarLabel" data-l10n-id="find_match_case_label">Match Case</label>
</div>
<div id="findbarOptionsTwoContainer">
<input type="checkbox" id="findMatchDiacritics" class="toolbarField" tabindex="96">
<label for="findMatchDiacritics" class="toolbarLabel" data-l10n-id="find_match_diacritics_label">Match
Diacritics</label>
<input type="checkbox" id="findEntireWord" class="toolbarField" tabindex="97">
<label for="findEntireWord" class="toolbarLabel" data-l10n-id="find_entire_word_label">Whole
Words</label>
</div>
<div id="findbarMessageContainer" aria-live="polite">
<span id="findResultsCount" class="toolbarLabel"></span>
<span id="findMsg" class="toolbarLabel"></span>
</div>
</div> <!-- findbar -->
<div class="editorParamsToolbar hidden doorHangerRight" id="editorFreeTextParamsToolbar">
<div class="editorParamsToolbarContainer">
<div class="editorParamsSetter">
<label for="editorFreeTextColor" class="editorParamsLabel" data-l10n-id="editor_free_text_color">Color</label>
<input type="color" id="editorFreeTextColor" class="editorParamsColor" tabindex="100">
</div>
<div class="editorParamsSetter">
<label for="editorFreeTextFontSize" class="editorParamsLabel" data-l10n-id="editor_free_text_size">Size</label>
<input type="range" id="editorFreeTextFontSize" class="editorParamsSlider" value="10" min="5"
max="100" step="1" tabindex="101">
</div>
</div>
</div>
<div class="editorParamsToolbar hidden doorHangerRight" id="editorInkParamsToolbar">
<div class="editorParamsToolbarContainer">
<div class="editorParamsSetter">
<label for="editorInkColor" class="editorParamsLabel" data-l10n-id="editor_ink_color">Color</label>
<input type="color" id="editorInkColor" class="editorParamsColor" tabindex="102">
</div>
<div class="editorParamsSetter">
<label for="editorInkThickness" class="editorParamsLabel" data-l10n-id="editor_ink_thickness">Thickness</label>
<input type="range" id="editorInkThickness" class="editorParamsSlider" value="1" min="1" max="20"
step="1" tabindex="103">
</div>
<div class="editorParamsSetter">
<label for="editorInkOpacity" class="editorParamsLabel"
data-l10n-id="editor_ink_opacity">Opacity</label>
<input type="range" id="editorInkOpacity" class="editorParamsSlider" value="100" min="1" max="100"
step="1" tabindex="104">
</div>
</div>
</div>
<div id="secondaryToolbar" class="secondaryToolbar hidden doorHangerRight">
<div id="secondaryToolbarButtonContainer">
<button id="secondaryOpenFile" class="secondaryToolbarButton visibleLargeView" title="Open File"
tabindex="51" data-l10n-id="open_file">
<span data-l10n-id="open_file_label">Open</span>
</button>
<button id="secondaryPrint" class="secondaryToolbarButton visibleMediumView" title="Print" tabindex="52"
data-l10n-id="print">
<span data-l10n-id="print_label">Print</span>
</button>
<button id="secondaryDownload" class="secondaryToolbarButton visibleMediumView" title="Save"
tabindex="53" data-l10n-id="save">
<span data-l10n-id="save_label">Save</span>
</button>
<div class="horizontalToolbarSeparator visibleLargeView"></div>
<button id="presentationMode" class="secondaryToolbarButton" title="Switch to Presentation Mode"
tabindex="54" data-l10n-id="presentation_mode">
<span data-l10n-id="presentation_mode_label">Presentation Mode</span>
</button>
<a href="#" id="viewBookmark" class="secondaryToolbarButton"
title="Current Page (View URL from Current Page)" tabindex="55" data-l10n-id="bookmark1">
<span data-l10n-id="bookmark1_label">Current Page</span>
</a>
<div id="viewBookmarkSeparator" class="horizontalToolbarSeparator"></div>
<button id="firstPage" class="secondaryToolbarButton" title="Go to First Page" tabindex="56"
data-l10n-id="first_page">
<span data-l10n-id="first_page_label">Go to First Page</span>
</button>
<button id="lastPage" class="secondaryToolbarButton" title="Go to Last Page" tabindex="57"
data-l10n-id="last_page">
<span data-l10n-id="last_page_label">Go to Last Page</span>
</button>
<div class="horizontalToolbarSeparator"></div>
<button id="pageRotateCw" class="secondaryToolbarButton" title="Rotate Clockwise" tabindex="58"
data-l10n-id="page_rotate_cw">
<span data-l10n-id="page_rotate_cw_label">Rotate Clockwise</span>
</button>
<button id="pageRotateCcw" class="secondaryToolbarButton" title="Rotate Counterclockwise" tabindex="59"
data-l10n-id="page_rotate_ccw">
<span data-l10n-id="page_rotate_ccw_label">Rotate Counterclockwise</span>
</button>
<div class="horizontalToolbarSeparator"></div>
<div id="cursorToolButtons" role="radiogroup">
<button id="cursorSelectTool" class="secondaryToolbarButton toggled"
title="Enable Text Selection Tool" tabindex="60" data-l10n-id="cursor_text_select_tool"
role="radio" aria-checked="true">
<span data-l10n-id="cursor_text_select_tool_label">Text Selection Tool</span>
</button>
<button id="cursorHandTool" class="secondaryToolbarButton" title="Enable Hand Tool" tabindex="61"
data-l10n-id="cursor_hand_tool" role="radio" aria-checked="false">
<span data-l10n-id="cursor_hand_tool_label">Hand Tool</span>
</button>
</div>
<div class="horizontalToolbarSeparator"></div>
<div id="scrollModeButtons" role="radiogroup">
<button id="scrollPage" class="secondaryToolbarButton" title="Use Page Scrolling" tabindex="62"
data-l10n-id="scroll_page" role="radio" aria-checked="false">
<span data-l10n-id="scroll_page_label">Page Scrolling</span>
</button>
<button id="scrollVertical" class="secondaryToolbarButton toggled" title="Use Vertical Scrolling"
tabindex="63" data-l10n-id="scroll_vertical" role="radio" aria-checked="true">
<span data-l10n-id="scroll_vertical_label">Vertical Scrolling</span>
</button>
<button id="scrollHorizontal" class="secondaryToolbarButton" title="Use Horizontal Scrolling"
tabindex="64" data-l10n-id="scroll_horizontal" role="radio" aria-checked="false">
<span data-l10n-id="scroll_horizontal_label">Horizontal Scrolling</span>
</button>
<button id="scrollWrapped" class="secondaryToolbarButton" title="Use Wrapped Scrolling"
tabindex="65" data-l10n-id="scroll_wrapped" role="radio" aria-checked="false">
<span data-l10n-id="scroll_wrapped_label">Wrapped Scrolling</span>
</button>
</div>
<div class="horizontalToolbarSeparator"></div>
<div id="spreadModeButtons" role="radiogroup">
<button id="spreadNone" class="secondaryToolbarButton toggled" title="Do not join page spreads"
tabindex="66" data-l10n-id="spread_none" role="radio" aria-checked="true">
<span data-l10n-id="spread_none_label">No Spreads</span>
</button>
<button id="spreadOdd" class="secondaryToolbarButton"
title="Join page spreads starting with odd-numbered pages" tabindex="67"
data-l10n-id="spread_odd" role="radio" aria-checked="false">
<span data-l10n-id="spread_odd_label">Odd Spreads</span>
</button>
<button id="spreadEven" class="secondaryToolbarButton"
title="Join page spreads starting with even-numbered pages" tabindex="68"
data-l10n-id="spread_even" role="radio" aria-checked="false">
<span data-l10n-id="spread_even_label">Even Spreads</span>
</button>
</div>
<div class="horizontalToolbarSeparator"></div>
<button id="documentProperties" class="secondaryToolbarButton" title="Document Properties…"
tabindex="69" data-l10n-id="document_properties" aria-controls="documentPropertiesDialog">
<span data-l10n-id="document_properties_label">Document Properties…</span>
</button>
</div>
</div> <!-- secondaryToolbar -->
<div class="toolbar">
<div id="toolbarContainer">
<div id="toolbarViewer">
<div id="toolbarViewerLeft">
<button id="sidebarToggle" class="toolbarButton" title="Toggle Sidebar" tabindex="11"
data-l10n-id="toggle_sidebar" aria-expanded="false" aria-controls="sidebarContainer">
<span data-l10n-id="toggle_sidebar_label">Toggle Sidebar</span>
</button>
<div class="toolbarButtonSpacer"></div>
<button id="viewFind" class="toolbarButton" title="Find in Document" tabindex="12"
data-l10n-id="findbar" aria-expanded="false" aria-controls="findbar">
<span data-l10n-id="findbar_label">Find</span>
</button>
<div class="splitToolbarButton hiddenSmallView">
<button class="toolbarButton" title="Previous Page" id="previous" tabindex="13"
data-l10n-id="previous">
<span data-l10n-id="previous_label">Previous</span>
</button>
<div class="splitToolbarButtonSeparator"></div>
<button class="toolbarButton" title="Next Page" id="next" tabindex="14" data-l10n-id="next">
<span data-l10n-id="next_label">Next</span>
</button>
</div>
<input type="number" id="pageNumber" class="toolbarField" title="Page" value="1" min="1"
tabindex="15" data-l10n-id="page" autocomplete="off">
<span id="numPages" class="toolbarLabel"></span>
</div>
<div id="toolbarViewerRight">
<button id="openFile" class="toolbarButton hiddenLargeView" title="Open File" tabindex="31"
data-l10n-id="open_file">
<span data-l10n-id="open_file_label">Open</span>
</button>
<button id="print" class="toolbarButton hiddenMediumView" title="Print" tabindex="32"
data-l10n-id="print">
<span data-l10n-id="print_label">Print</span>
</button>
<button id="download" class="toolbarButton hiddenMediumView" title="Save" tabindex="33"
data-l10n-id="save">
<span data-l10n-id="save_label">Save</span>
</button>
<div class="verticalToolbarSeparator hiddenMediumView"></div>
<div id="editorModeButtons" class="splitToolbarButton toggled" role="radiogroup">
<button id="editorFreeText" class="toolbarButton" disabled="disabled" title="Text"
role="radio" aria-checked="false" tabindex="34" data-l10n-id="editor_free_text2">
<span data-l10n-id="editor_free_text2_label">Text</span>
</button>
<button id="editorInk" class="toolbarButton" disabled="disabled" title="Draw" role="radio"
aria-checked="false" tabindex="35" data-l10n-id="editor_ink2">
<span data-l10n-id="editor_ink2_label">Draw</span>
</button>
</div>
<div id="editorModeSeparator" class="verticalToolbarSeparator"></div>
<button id="secondaryToolbarToggle" class="toolbarButton" title="Tools" tabindex="48"
data-l10n-id="tools" aria-expanded="false" aria-controls="secondaryToolbar">
<span data-l10n-id="tools_label">Tools</span>
</button>
</div>
<div id="toolbarViewerMiddle">
<div class="splitToolbarButton">
<button id="zoomOut" class="toolbarButton" title="Zoom Out" tabindex="21"
data-l10n-id="zoom_out">
<span data-l10n-id="zoom_out_label">Zoom Out</span>
</button>
<div class="splitToolbarButtonSeparator"></div>
<button id="zoomIn" class="toolbarButton" title="Zoom In" tabindex="22"
data-l10n-id="zoom_in">
<span data-l10n-id="zoom_in_label">Zoom In</span>
</button>
</div>
<span id="scaleSelectContainer" class="dropdownToolbarButton">
<select id="scaleSelect" title="Zoom" tabindex="23" data-l10n-id="zoom">
<option id="pageAutoOption" title="" value="auto" selected="selected"
data-l10n-id="page_scale_auto">Automatic Zoom</option>
<option id="pageActualOption" title="" value="page-actual" data-l10n-id="page_scale_actual">Actual Size</option>
<option id="pageFitOption" title="" value="page-fit" data-l10n-id="page_scale_fit">Page Fit</option>
<option id="pageWidthOption" title="" value="page-width"
data-l10n-id="page_scale_width">Page Width</option>
<option id="customScaleOption" title="" value="custom" disabled="disabled" hidden="true"></option>
<option title="" value="0.5" data-l10n-id="page_scale_percent"
data-l10n-args='{ "scale": 50 }'>50%</option>
<option title="" value="0.75" data-l10n-id="page_scale_percent"
data-l10n-args='{ "scale": 75 }'>75%</option>
<option title="" value="1" data-l10n-id="page_scale_percent"
data-l10n-args='{ "scale": 100 }'>100%</option>
<option title="" value="1.25" data-l10n-id="page_scale_percent" data-l10n-args='{ "scale": 125 }'>125%</option>
<option title="" value="1.5" data-l10n-id="page_scale_percent" data-l10n-args='{ "scale": 150 }'>150%</option>
<option title="" value="2" data-l10n-id="page_scale_percent"
data-l10n-args='{ "scale": 200 }'>200%</option>
<option title="" value="3" data-l10n-id="page_scale_percent"
data-l10n-args='{ "scale": 300 }'>300%</option>
<option title="" value="4" data-l10n-id="page_scale_percent"
data-l10n-args='{ "scale": 400 }'>400%</option>
</select>
</span>
</div>
</div>
<div id="loadingBar">
<div class="progress">
<div class="glimmer">
</div>
</div>
</div>
</div>
</div>
<div id="viewerContainer" tabindex="0">
<div id="viewer" class="pdfViewer"></div>
</div>
</div> <!-- mainContainer -->
<div id="dialogContainer">
<dialog id="passwordDialog">
<div class="row">
<label for="password" id="passwordText" data-l10n-id="password_label">Enter the password to open this
PDF file:</label>
</div>
<div class="row">
<input type="password" id="password" class="toolbarField">
</div>
<div class="buttonRow">
<button id="passwordCancel" class="dialogButton"><span data-l10n-id="password_cancel">Cancel</span>
</button>
<button id="passwordSubmit" class="dialogButton"><span data-l10n-id="password_ok">OK</span></button>
</div>
</dialog>
<dialog id="documentPropertiesDialog">
<div class="row">
<span id="fileNameLabel" data-l10n-id="document_properties_file_name">File name:</span>
<p id="fileNameField" aria-labelledby="fileNameLabel">-</p>
</div>
<div class="row">
<span id="fileSizeLabel" data-l10n-id="document_properties_file_size">File size:</span>
<p id="fileSizeField" aria-labelledby="fileSizeLabel">-</p>
</div>
<div class="separator"></div>
<div class="row">
<span id="titleLabel" data-l10n-id="document_properties_title">Title:</span>
<p id="titleField" aria-labelledby="titleLabel">-</p>
</div>
<div class="row">
<span id="authorLabel" data-l10n-id="document_properties_author">Author:</span>
<p id="authorField" aria-labelledby="authorLabel">-</p>
</div>
<div class="row">
<span id="subjectLabel" data-l10n-id="document_properties_subject">Subject:</span>
<p id="subjectField" aria-labelledby="subjectLabel">-</p>
</div>
<div class="row">
<span id="keywordsLabel" data-l10n-id="document_properties_keywords">Keywords:</span>
<p id="keywordsField" aria-labelledby="keywordsLabel">-</p>
</div>
<div class="row">
<span id="creationDateLabel" data-l10n-id="document_properties_creation_date">Creation Date:</span>
<p id="creationDateField" aria-labelledby="creationDateLabel">-</p>
</div>
<div class="row">
<span id="modificationDateLabel"
data-l10n-id="document_properties_modification_date">Modification Date:</span>
<p id="modificationDateField" aria-labelledby="modificationDateLabel">-</p>
</div>
<div class="row">
<span id="creatorLabel" data-l10n-id="document_properties_creator">Creator:</span>
<p id="creatorField" aria-labelledby="creatorLabel">-</p>
</div>
<div class="separator"></div>
<div class="row">
<span id="producerLabel" data-l10n-id="document_properties_producer">PDF Producer:</span>
<p id="producerField" aria-labelledby="producerLabel">-</p>
</div>
<div class="row">
<span id="versionLabel" data-l10n-id="document_properties_version">PDF Version:</span>
<p id="versionField" aria-labelledby="versionLabel">-</p>
</div>
<div class="row">
<span id="pageCountLabel" data-l10n-id="document_properties_page_count">Page Count:</span>
<p id="pageCountField" aria-labelledby="pageCountLabel">-</p>
</div>
<div class="row">
<span id="pageSizeLabel" data-l10n-id="document_properties_page_size">Page Size:</span>
<p id="pageSizeField" aria-labelledby="pageSizeLabel">-</p>
</div>
<div class="separator"></div>
<div class="row">
<span id="linearizedLabel" data-l10n-id="document_properties_linearized">Fast Web View:</span>
<p id="linearizedField" aria-labelledby="linearizedLabel">-</p>
</div>
<div class="buttonRow">
<button id="documentPropertiesClose" class="dialogButton"><span
data-l10n-id="document_properties_close">Close</span></button>
</div>
</dialog>
<dialog id="printServiceDialog" style="min-width: 200px;">
<div class="row">
<span data-l10n-id="print_progress_message">Preparing document for printing…</span>
</div>
<div class="row">
<progress value="0" max="100"></progress>
<span data-l10n-id="print_progress_percent" data-l10n-args='{ "progress": 0 }'
class="relative-progress">0%</span>
</div>
<div class="buttonRow">
<button id="printCancel" class="dialogButton"><span data-l10n-id="print_progress_close">Cancel</span>
</button>
</div>
</dialog>
</div> <!-- dialogContainer -->
</div> <!-- outerContainer -->
<div id="printContainer"></div>
<input type="file" id="fileInput" class="hidden">
</body>
</html>
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,119 @@
<?php
/**
* @var string $content
* @var \yii\web\View $this
*/
use app\models\Ts;
use app\widgets\Content;
use app\widgets\Footer;
use app\widgets\Header;
?>
<!doctype html>
<html lang="bg-BG">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title><?= Yii::$app->controller->pageTitle ?></title>
<meta name="keywords" content="">
<meta property="og:title" content="<?= Yii::$app->controller->pageTitle ?>">
<meta property="og:type" content="article">
<meta property="og:url" content="<?= Yii::$app->params['portal'] ?>">
<meta property="og:image" content="<?= Yii::$app->controller->img ?>">
<meta property="og:site_name" content="Nasledstvo BG">
<meta property="og:description" content="<?= Yii::$app->controller->description ?>">
<meta name="apple-mobile-web-app-title" content="AppTitle">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<link rel="stylesheet" href="/_public/assets/css/portal.css">
<link rel="stylesheet" href="/_public/assets/css/footer.css">
<link rel="stylesheet" href="/_public/assets/css/website-responsive.css">
<script src="https://unpkg.com/pdfjs-dist/build/pdf.min.js"></script>
<script src="/_public/assets/js/default.js"></script>
<script src="/_public/assets/js/cart.js"></script>
<script src="/_public/assets/js/wss.js"></script>
<link rel="apple-touch-icon" href="/_public/images/precomposed/touch-icon-iphone-precomposed.png">
<link rel="apple-touch-icon" sizes="152x152" href="/_public/images/precomposed/touch-icon-ipad-precomposed.png">
<link rel="apple-touch-icon" sizes="180x180"
href="/_public/images/precomposed/touch-icon-iphone-retina-precomposed.png">
<link rel="apple-touch-icon" sizes="167x167"
href="/_public/images/precomposed/touch-icon-ipad-retina-precomposed.png">
<link rel="apple-touch-startup-image" href="/_public/images/precomposed/touch-icon-iphone-retina-precomposed.png">
<?php if (empty($_GET['webview_mode'])): ?>
<script defer src="/_public/plugins/cookieconsent-master/src/cookieconsent.js"></script>
<script defer src="/_public/plugins/cookieconsent-master/demo/app.js"></script>
<?php endif; ?>
</head>
<body>
<?php
Ts::set([4, 22, 23, 24, 49, 53, 54, 73, 74, 87, 181, 200, 225]);
if (empty($_GET['webview_mode'])) {
Header::widget();
}
?>
<div style="width: 100%; margin: 0 auto">
<?php Content::widget(['content' => $content]); ?>
</div>
<?php
if (empty($_GET['webview_mode'])) {
Footer::widget();
}
?>
<?php if (empty($_GET['webview_mode'])): ?>
<div class="copyright">Copyright <i class="la la-copyright"></i> <?= date('Y') ?>, <?= Ts::get(225) ?></div>
<?php endif; ?>
<script>
const cart = new Cart();
cart.setCart('<?= Yii::$app->language ?>');
</script>
<script>
<?php
$msg_success = [
'bg' => 'Действието беше успешно завършено',
'en' => 'The action was successfully completed'
];
$msg_error = [
'bg' => 'Действието беше провалено',
'en' => 'The action failed'
];
$msg_warning = [
'bg' => '',
'en' => ''
];
if (isset($_SESSION['flash'])) {
if (isset($_SESSION['flash']['success'])) {
if (empty($_SESSION['flash']['msg'])) {
$_SESSION['flash']['msg'] = $msg_success[Yii::$app->language];
}
echo 'flash.success("' . $_SESSION['flash']['msg'] . '")';
} else {
if (isset($_SESSION['flash']['error'])) {
if (empty($_SESSION['flash']['msg'])) {
$_SESSION['flash']['msg'] = $msg_error[Yii::$app->language];
}
echo 'flash.error("' . $_SESSION['flash']['msg'] . '")';
} else {
if (isset($_SESSION['flash']['warning'])) {
if (empty($_SESSION['flash']['msg'])) {
$_SESSION['flash']['msg'] = $msg_warning[Yii::$app->language];
}
echo 'flash.warning("' . $_SESSION['flash']['msg'] . '")';
}
}
}
unset($_SESSION['flash']);
}
?>
<?php if(!empty($_SESSION['register_user']) || \app\services\Auth::getUser()): ?>
idleLogout();
<?php endif; ?>
</script>
</body>
</html>
@@ -0,0 +1,29 @@
<?php
header('Content-type: application/json');
use app\models\UserPublic;
use app\services\JWT;
$post = \Yii::$app->request->getRawBody();
$postDecode = json_decode($post);
if (!empty($postDecode->device_id) && !empty($postDecode->uid)) {
$device_id = $postDecode->device_id;
$uid = $postDecode->uid;
$user = UserPublic::find()->where(['device_id' => $device_id])->one();
if ($user) {
$decode = JWT::decode($user->device_id, JWT::SECRET_KEY);
if($decode->uid == $uid) {
$user->is_mobile_user = 1;
$user->save();
echo json_encode(['userToken' => JWT::encode(['id' => $user->id], JWT::SECRET_KEY), 'profile'=> $user->profileData()]);
exit;
}
} else {
echo json_encode(['error' => 'wrong_user']);
exit;
}
} else {
echo json_encode(['error' => 'wrong_user']);
exit;
}
@@ -0,0 +1,34 @@
<?php
header('Content-type: application/json');
use app\models\UserPublic;
use app\services\JWT;
$post = \Yii::$app->request->getRawBody();
$postDecode = json_decode($post);
if (!empty($postDecode->email) && !empty($postDecode->password)) {
$email = $postDecode->email;
$password = $postDecode->password;
$user = UserPublic::find()->where(['email' => $email])->one();
if(!empty($_GET['partner'])) {
if(sizeof($user->qrValidators) == 0) {
echo json_encode(['error' => 'wrong_user']);
exit;
}
}
//echo json_encode(['email' => $user->email, 'password' => password_verify($password, $user->password_hash), 'hash' => $user->password_hash]);
//exit;
if ($user && password_verify($password, $user->password_hash)) {
$user->is_mobile_user = 1;
$user->save();
echo json_encode(['userToken' => JWT::encode(['id' => $user->id], JWT::SECRET_KEY), 'profile'=> $user->profileData()]);
exit;
} else {
echo json_encode(['error' => 'wrong_user']);
exit;
}
} else {
echo json_encode(['error' => 'wrong_user']);
exit;
}
@@ -0,0 +1,88 @@
<?php
use app\models\Articles;
use app\services\Formatter;
use app\services\ViewReg;
$data = [];
if (!empty($_GET['id'])) {
$lg = \Yii::$app->language;
$condition = [];
//$condition['is_active'] = 1;
$condition['id'] = $_GET['id'];
$articles = Articles::find()->where($condition);
$article = $articles->one();
$favorite = false;
$user = \app\services\Auth::getUserByToken();
if ($user) {
$favoriteExists = \app\models\UserFavorites::find()->where(['user_id' => $user->id, 'table' => 'articles', 'fid' => $_GET['id']])->exists();
if ($favoriteExists)
$favorite = true;
}
if ($article && $article->article) {
$model = new \stdClass();
$model->title = $lg == 'en' ? $article->title_en ?? $article->title : $article->title;
$model->text = strip_tags($article->article->text());
$model->type = 'articles';
$model->images = $article->article->images('16:11');
$model->img = $article->article->image('16:11') ?? \Yii::$app->params['portal'] . '/_public/images/empty-169.png';
$model->isFavorite = $favorite;
if ($article->art_table == 'campaigns') {
$model->date = $article->campaigns->getFormattedDates();
$model->location = $lg == 'en' ? $article->campaigns->ts_en_location : $article->campaigns->location;
}
if ($article->art_table == 'events') {
$model->date = $article->events->getFormattedDates();
$model->dates = explode(',', $article->events->event_dates);
if ($article->events->type == 'booking') {
$model->bookingAvailable = $article->events->isBookingAvailable();
$model->event_id = $article->events->id;
$slug = Formatter::cyrillicTrans($article->article->title());
$model->booking_url = Yii::$app->params['portal'] . '/' . $lg . '/sabitia/' . Formatter::encodeId($article->id) . "-$slug/?booking=true&webview_mode=true";
if (!empty($_GET['tickets'])) {
$tickets = \app\models\OrderBooking::find()->where(['event_id' => $article->events->id])->all();
$ticketGroups = [];
$all_tickets_count = 0;
$all_validated = 0;
foreach ($tickets as $ticketGroup) {
if(empty($ticketGroups[$ticketGroup->ticket_id])) {
$ticketGroups[$ticketGroup->ticket_id] = [
'count' => $ticketGroup->tickets_count,
'name' => $lg == 'en' ? $ticketGroup->name_en : $ticketGroup->name_bg,
'validated_count' => $ticketGroup->validated_count
];
} else {
$ticketGroups[$ticketGroup->ticket_id]['count'] += $ticketGroup->tickets_count;
$ticketGroups[$ticketGroup->ticket_id]['validated_count'] += $ticketGroup->validated_count;
}
}
foreach ($ticketGroups as $group) {
$all_tickets_count += $group['count'];
$all_validated += $group['validated_count'];
}
$model->tickets = array_values($ticketGroups);
$model->total_tickets = $all_tickets_count;
$model->total_validated = $all_validated;
}
}
$model->location = $lg == 'en' ? $article->events->ts_en_location : $article->events->location;
}
if ($article->art_table == 'news') {
$model->date = date('d.m.Y', strtotime($article->publish_date));
}
$model->id = $article->id;
$data[] = $model;
}
}
header('Content-type: application/json');
echo json_encode(['data' => $data]);
exit;
@@ -0,0 +1,59 @@
<?php
use app\models\Articles;
$lg = \Yii::$app->language;
$articles = Articles::find();
$data = [];
$page = $_GET['page'] ?? 1;
$per_page = 10;
$condition = ['and'];
//$condition['is_active'] = 1;
if (!empty($_GET['type']) && $_GET['type'] != 'default')
$condition[] = ['=', 'art_table', $_GET['type']];
//region [Articles]
if (!empty($_GET['token'])) {
/** @var \app\models\UserPublic $user */
$user = \app\services\Auth::getUserByToken($_GET['token']);
if ($user) {
$partner_ids = [];
foreach ($user->qrValidators as $qrValidator) {
$partner_ids[] = $qrValidator->partner_id;
}
if (sizeof($partner_ids) > 0) {
$articles->innerJoinWith('events');
$condition[] = ['=', 'type', 'booking'];
$condition[] = ['IN', 'events.partner_id', $partner_ids];
}
}
}
$articles->where($condition);
$articles->orderBy(['publish_date' => SORT_DESC])
->offset($page * $per_page - $per_page)->limit($per_page);
$count = $articles->count();
$lastPage = ceil($count / $per_page);
foreach ($articles->all() as $article) {
if ($article->article) {
$model = new \stdClass();
$model->title = $lg == 'en' ? $article->title_en ?? $article->title : $article->title;
$model->type = $article->art_table;
$model->img = $article->article->image() ?? \Yii::$app->params['portal'] . '/_public/images/empty-169.png';
$model->id = $article->id;
$data[] = $model;
}
}
header('Content-type: application/json');
echo json_encode(['data' => $data, 'lastPage' => $lastPage, 'count' => $count]);
exit;
@@ -0,0 +1,44 @@
<?php
/* @var $this \yii\web\View */
$lg = Yii::$app->language;
use app\models\register\Fields;
use app\models\register\FieldsValuesRelations;
use app\services\JR;
$parent_id = $_GET['parent_value_id'];
$id = 1;
$levels = [];
//field_type: 1 - specific, 2 - general, 3 - category
$fieldsValuesRelations = FieldsValuesRelations::find()->where(['parent_value_id' => $parent_id])->all();
$ids = [];
foreach ($fieldsValuesRelations as $fieldsValuesRelation) {
if ($fieldsValuesRelation->child_field_id != 0)
$ids[] = $fieldsValuesRelation->child_field_id;
}
$fields = Fields::find()->where(['IN', 'id', $ids])->andWhere(['lib_type' => 1])->all();
foreach ($fields as $field) {
//type: 1-dropdown, 2-text
if ($field->type == 1) {
$options = [];
foreach ($field->fieldsValues as $option) {
$options[] = ['id' => $option->id, 'name' => $lg == 'en' ? $option->name_en : $option->name];
}
$levels[] = ['parent_id' => $parent_id, 'dropdown' => $_GET['dropdown'], 'id' => $parent_id . "_" . $id++, 'label' => $field->getNameByLocale(), 'type' => 'select', 'name' => 'name_id_' . $field->id, 'options' => $options, 'dynamic' => true];
} else {
$levels[] = ['parent_id' => $parent_id, 'dropdown' => $_GET['dropdown'], 'id' => $parent_id . "_" . $id++, 'label' => $field->getNameByLocale(), 'type' => 'input', 'name' => 'name_text_' . $field->id];
}
}
JR::message(JR::done, ['levels' => $levels]);
?>
@@ -0,0 +1,72 @@
<?php
/* @var $this \yii\web\View */
$lg = Yii::$app->language;
use app\models\register\Fields;
use app\services\JR;
$translateModule = [
'object_name' => [
'bg' => 'Име на обект',
'en' => 'Object name'
],
'object_creator' => [
'bg' => 'Създател на обект',
'en' => 'Object creator'
],
'year' => [
'bg' => 'Година',
'en' => 'Year'
]
];
$id = 1;
$levels = [
['id' => $id++, 'label' => $translateModule['object_name'][$lg], 'type' => 'input', 'name' => 'object_name'],
['id' => $id++, 'label' => $translateModule['object_creator'][$lg], 'type' => 'input', 'name' => 'object_creator'],
['id' => $id++, 'label' => $translateModule['year'][$lg], 'type' => 'input-range', 'name' => 'year'],
];
//field_type: 1 - specific, 2 - general, 3 - category
$specificFields = Fields::find()->where(['lib_type' => 1, 'field_type' => 2])->andWhere(['>', 'level', 0])->all();
foreach ($specificFields as $field) {
//type: 1-dropdown, 2-text
if($field->type == 1) {
$options = [];
foreach ($field->fieldsValues as $option) {
$options[] = ['id' => $option->id, 'name' => $lg == 'en' ? $option->name_en : $option->name];
}
$levels[] = ['id' => $id++, 'label' => $field->getNameByLocale(), 'type' => 'select', 'name' => 'name_id_' . $field->id, 'options' => $options, 'dynamic' => false];
} else {
$levels[] = ['id' => $id++, 'label' => $field->getNameByLocale(), 'type' => 'input', 'name' => 'name_text_' . $field->id];
}
}
$categories = Fields::find()->where(['lib_type' => 1, 'field_type' => 3])->andWhere(['>', 'level', 0])->all();
foreach ($categories as $field) {
//type: 1-dropdown, 2-text
if($field->type == 1) {
$options = [];
foreach ($field->fieldsValues as $option) {
$options[] = ['id' => $option->id, 'name' => $lg == 'en' ? $option->name_en : $option->name];
}
$levels[] = ['id' => $id++, 'label' => $field->getNameByLocale(), 'type' => 'select', 'name' => 'name_id_' . $field->id, 'options' => $options, 'dynamic' => true];
} else {
$levels[] = ['id' => $id++, 'label' => $field->getNameByLocale(), 'type' => 'input', 'name' => 'name_text_' . $field->id];
}
}
$tags = \app\models\register\Tags::find()->all();
$tagsParser = [];
foreach ($tags as $tag) {
$text = $lg == 'en' ? ($tag->text_en ?? $tag->text) : $tag->text;
$tagsParser[] = ['id' => $tag->id, 'name' => $text];
}
JR::message(JR::done, ['levels' => $levels, 'tags' => $tagsParser]);
@@ -0,0 +1,48 @@
<?php
$data = [];
$favorite = false;
if (!empty($_GET['id'])) {
$user = \app\services\Auth::getUserByToken();
if($user) {
$favoriteExists = \app\models\UserFavorites::find()->where(['user_id' => $user->id, 'table' => 'collections', 'fid' => $_GET['id']])->exists();
if($favoriteExists)
$favorite = true;
}
$lg = \Yii::$app->language;
$condition = [];
$condition = ['and'];
$condition[] = ['=', 'active', 1];
$condition[] = ['=', 'published', 1];
$condition[] = ['=', 'id', $_GET['id']];
$collections = \app\models\register\Collections::find()->where($condition);
$collection = $collections->one();
if ($collection) {
$model = new \stdClass();
$model->title = $lg == 'en' ? $collection->name_en ?? $collection->name : $collection->name;
$model->type = 'collections';
$model->text = strip_tags($collection->textDescription());
$model->img = $collection->getImg(\Yii::$app->params['portal'] . '/_public/images/empty-169.png');
$model->id = $collection->id;
$model->isFavorite = $favorite;
$model->items = [];
foreach ($collection->collectionsObjects as $collectionsObject) {
$object = $collectionsObject->object;
$item = new stdClass();
$item->id = $object->id;
$item->title = $object->getTitle();
$item->image = $object->getImg();
$model->items[] = $item;
}
$data[] = $model;
}
}
header('Content-type: application/json');
echo json_encode(['data' => $data]);
exit;
@@ -0,0 +1,163 @@
<?php
use app\models\register\Collections;
use app\models\register\CollectionsObjects;
use app\models\register\Fields;
use app\models\register\ObjectTags;
use app\models\RegisterObjects;
$lg = Yii::$app->language;
$per_page = 10;
$page = $_GET['page'] ?? 1;
/**
* @var \yii\web\View $this
*/
if (!empty($_GET['advance_filter']) || !empty($_GET['tags'])) {
$objects = RegisterObjects::find();
$objects = $objects->select('register_objects.ref_num')->where(['lib_type' => 1]);
$conditionOr = ['or'];
//[ FILTER BY NAME ]
if (!empty($_GET['object_name'])) {
$conditionOr[] = ['LIKE', 'name', $_GET['object_name']];
$conditionOr[] = ['LIKE', 'ts_en_name', $_GET['object_name']];
}
//[ FILTER BY CREATOR ]
if (!empty($_GET['created_by'])) {
$conditionOr[] = ['=', 'created_by', $_GET['created_by']];
}
$conditionAnd = ['and'];
//[ FILTER BY YEAR FROM ]
if (!empty($_GET['year_from'])) {
$conditionAnd[] = ['>=', 'created_year', $_GET['year_from']];
}
//[ FILTER BY YEAR TO ]
if (!empty($_GET['year_to'])) {
$conditionAnd[] = ['<=', 'created_year', $_GET['year_to']];
}
//region [FILTER BY OBJECT FIELDS]
$fields = Fields::find()->where(['lib_type' => 1, 'active' => 1, 'deleted' => 0])->all();
$objectFieldIdArray = [];
$objectFieldValueTextArray = [];
foreach ($fields as $field) {
if (!empty($_GET['name_id_' . $field->id]))
$objectFieldIdArray[] = $_GET['name_id_' . $field->id];
if (!empty($_GET['name_text_' . $field->id]))
$objectFieldValueTextArray[] = $_GET['name_text_' . $field->id];
}
if (sizeof($objectFieldIdArray) > 0 || sizeof($objectFieldValueTextArray) > 0) {
$objects = $objects->joinWith('registerObjectFields');
}
if(sizeof($objectFieldIdArray) > 0) {
$conditionOr[] = ['IN', 'value_id', $objectFieldIdArray];
}
if(sizeof($objectFieldValueTextArray) > 0) {
foreach ($objectFieldValueTextArray as $value) {
$conditionOr[] = ['=', 'value_text', $value];
}
}
$objectIds = [];
if($conditionOr != ['or'] || $conditionAnd != ['and']) {
$objects = $objects->andWhere($conditionOr ?? [])->andWhere($conditionAnd ?? [])->all();
foreach ($objects as $object) {
$objectIds[] = $object->ref_num;
}
}
if(!empty($_GET['tags'])) {
$tags = explode('_', $_GET['tags']);
$objectTags = ObjectTags::find()->where(['IN', 'tag_id', $tags])->andWhere(['active' => 1, 'deleted' => 0])->all();
foreach ($objectTags as $objectTag) {
if(!in_array($objectTag->object_id, $objectIds)) {
$objectIds[] = $objectTag->object_id;
}
}
}
$collectionObjectConditionAnd = ['and'];
$collectionObjectConditionAnd[] = ['IN', 'object_id', $objectIds];
$collectionObjectConditionAnd[] = ['=', 'deleted', 0];
$collectionObjectConditionAnd[] = ['=', 'active', 1];
$collectionObjectConditionAnd[] = ['=', 'published', 1];
if (!empty($_GET['partner_id']))
$collectionObjectConditionAnd[] = ['=', 'partner_id', $_GET['partner_id']];
$collectionObjectConditionOr = ['or'];
$collectionObjectConditionOr[] = ['IS', 'is_payable', NULL];
$collectionObjectConditionOr[] = ['=', 'is_payable', 0];
$collectionObjects = CollectionsObjects::find()->joinWith('collection')
->where($collectionObjectConditionOr)
->andWhere($collectionObjectConditionAnd)
->groupBy('collection_id');
$count = $collectionObjects->count();
if ($count <= $per_page) $page = 1;
$collectionObjects->offset($per_page * $page - $per_page)->limit($per_page);
if (!empty($_GET['order_title'])) {
$collectionObjects = $collectionObjects->orderBy([$_GET['order_title'] => SORT_ASC]);
} else {
$collectionObjects = $collectionObjects->orderBy(['id' => SORT_DESC]);
}
//region DISPLAY DATA
$count = $collectionObjects->count();
$data = [];
/** @var CollectionsObjects $collectionObject */
foreach ($collectionObjects->all() as $collectionObject) {
$model = new \stdClass();
$collection = $collectionObject->collection;
$model->title = $lg == 'en' ? ($collection->name_en ?? $collection->name) : $collection->name;
$model->type = 'collection';
$model->img = $collection->getImg(\Yii::$app->params['portal'] . '/_public/images/empty-169.png');
$model->id = $collection->id;
$data[] = $model;
}
header('Content-type: application/json');
echo json_encode(['data' => $data, 'lastPage' => ceil($count/$per_page), 'count' => $count]);
//endregion
} else {
$collections = Collections::find()->where(['or', ['=', 'is_payable', 0], ['IS', 'is_payable', null]])
->andWhere(['deleted' => 0, 'active' => 1, 'published' => 1]);
if (!empty($_GET['partner_id'])) {
$collections = $collections->andWhere(['partner_id' => $_GET['partner_id']]);
}
$collections = $collections->offset($per_page * $page - $per_page)->limit($per_page);
$count = $collections->count();
$data = [];
foreach ($collections->all() as $collection) {
$model = new \stdClass();
$model->title = $lg == 'en' ? $collection->name_en ?? $collection->name : $collection->name;
$model->type = 'collection';
$model->img = $collection->getImg(\Yii::$app->params['portal'] . '/_public/images/empty-169.png');
$model->id = $collection->id;
$data[] = $model;
}
header('Content-type: application/json');
echo json_encode(['data' => $data, 'lastPage' => ceil($count/$per_page), 'count' => $count]);
}
@@ -0,0 +1,30 @@
<?php
/* @var $this \yii\web\View */
use app\models\UserExplorerObjects;
use app\services\Auth;
$user = Auth::getUserByToken();
if($user) {
header('Content-type: application/json');
$body = json_decode(Yii::$app->request->getRawBody());
if($body->id)
$explorerObject = \app\models\ExplorerObjects::findOne($body->id);
$userExplorerObject = UserExplorerObjects::find()->where(['user_id' => $user->id, 'explorer_object_id' => $body->id])->one();
if(!$userExplorerObject) {
$userExplorerObject = new UserExplorerObjects();
$userExplorerObject->user_id = $user->id;
$userExplorerObject->explorer_object_id = $body->id;
$userExplorerObject->date_visit = date('Y-m-d H:i:s');
$userExplorerObject->save();
echo json_encode(['visit' => 'success', 'points' => $explorerObject->points]);
} else {
echo json_encode(['visit' => 'visited', 'points' => $explorerObject->points]);
}
exit;
}
echo json_encode(['error' => 'User not authenticated']);
exit;
@@ -0,0 +1,14 @@
<?php
use app\services\GeoService;
$lat = $_GET['lat'] ?? 42.698334;
$lon = $_GET['lon'] ?? 23.319941;
$dist = $_GET['dist'] ?? 50;
/* @var $this \yii\web\View */
$nearest = GeoService::getNearestObjects($lat, $lon, $dist);
header('Content-type: application/json');
echo json_encode(['data' => GeoService::orderList($nearest)]);
exit;
@@ -0,0 +1,85 @@
<?php
$lat = $_GET['lat'] ?? 42.698334;
$lon = $_GET['lon'] ?? 23.319941;
$dist = $_GET['dist'] ?? 50;
?>
<link rel="stylesheet" href="<?= Yii::$app->params['portal'] ?>/_public/plugins/leafletjs/leaflet.css">
<script src="<?= Yii::$app->params['portal'] ?>/_public/plugins/leafletjs/leaflet.js"></script>
<style>
#map {
width: 100%;
height: 100%;
}
body {
padding: 0;
margin: 0;
}
.leaflet-left {
right: 10px;
left: auto;
}
.leaflet-control-attribution.leaflet-control a {
display: none;
}
.leaflet-control-container {
display: none;
}
</style>
<div id="map"></div>
<script>
let lang = '<?= Yii::$app->language ?>'
let host = '<?= Yii::$app->params['portal'] ?>'
let addedPoints = [];
let mapOptions = {
center: [<?=$lat ?>, <?= $lon ?>],
zoom: 13
}
let map = new L.map('map', mapOptions);
let layer = new L.TileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png');
map.addLayer(layer);
let marker = new L.Marker([<?=$lat?>, <?= $lon?>]);
marker.addTo(map);
let icon = L.icon({
iconUrl: '/_public/plugins/leafletjs/images/pin-b.png',
iconSize: [40, 40]
});
let iconBlue = L.icon({
iconUrl: '/_public/plugins/leafletjs/images/point-blue.png',
iconSize: [30, 30]
});
marker.setIcon(icon)
function addPoints() {
const xhr = new XMLHttpRequest()
xhr.open('get', `${host}/${lang}/remote/get-nearest-objects/?lat=<?= $lat ?>&lon=<?= $lon ?>&dist=<?= $dist ?>&explorer=1`)
if(addedPoints.length > 0) {
addedPoints.forEach(pointToDelete => {
map.removeLayer(pointToDelete)
})
}
xhr.responseType = 'json';
xhr.onload = function () {
if (xhr.response) {
const points = xhr.response;
points.forEach(p => {
if (p.latitude !== '<?= $lat?>' && p.longitude !== '<?= $lon?>') {
let point = new L.Marker([p.latitude, p.longitude]);
point.setIcon(iconBlue)
point.addTo(map);
addedPoints.push(point)
point.addEventListener('click', () => {
window.parent.postMessage(JSON.stringify(p), '*');
})
}
})
}
}
xhr.send();
}
setTimeout(function () {
addPoints()
}, 50)
</script>
@@ -0,0 +1,31 @@
<?php
use app\services\JR;
$lg = Yii::$app->language;
$translateModule = [
'object_name' => [
'bg' => 'Име на обект',
'en' => 'Object name'
],
'category' => [
'bg' => 'Категория',
'en' => 'Category'
],
];
$tags = \app\models\ExpositionsTags::find()->all();
$tagsParser = [];
foreach ($tags as $tag) {
$text = $lg == 'en' ? ($tag->name_en ?? $tag->name) : $tag->name;
$tagsParser[] = ['id' => $tag->id, 'name' => $text];
}
$id = 0;
$categories = \app\models\ExpositionsCategories::find()->all();
$options = [];
foreach ($categories as $category) {
$options[] = ['id' => $category->id, 'name' => $category->title()];
}
$levels[] = ['id' => $id++, 'label' => $translateModule['category'][$lg], 'type' => 'select', 'name' => 'category', 'options' => $options, 'dynamic' => false];
JR::message(JR::done, ['levels' => $levels, 'tags' => $tagsParser]);
@@ -0,0 +1,56 @@
<?php
use app\models\Articles;
use app\models\Expositions;
if(empty($_GET['id']))
exit;
$lg = Yii::$app->language;
$favorite = false;
$user = \app\services\Auth::getUserByToken();
if($user) {
$favoriteExists = \app\models\UserFavorites::find()->where(['user_id' => $user->id, 'table' => 'expositions', 'fid' => $_GET['id']])->exists();
if($favoriteExists)
$favorite = true;
}
/**
* @var \yii\web\View $this
*/
?>
<?php
$condition = [];
$condition['is_active'] = 1;
$condition['id'] = $_GET['id'];
$exposition = Expositions::find()->where($condition)->one();
$data = [];
$model = new \stdClass();
$model->title = $exposition->title();
$model->type = 'expositions';
$model->text = $exposition->textDescription();
$model->img = $exposition->getImg();
$model->images = $exposition->imagesObjectArray();
$model->id = $exposition->id;
$model->isFavorite = $favorite;
$model->items = [];
foreach ($exposition->objectList as $collectionsObject) {
$object = $collectionsObject->object;
$item = new stdClass();
$item->id = $object->id;
$item->title = $object->getTitle();
$item->image = $object->getImg(\Yii::$app->params['portal']. '/_public/images/empty-169.png');
$model->items[] = $item;
}
$data[] = $model;
header('Content-type: application/json');
echo json_encode(['data' => $data]);
exit;
?>
@@ -0,0 +1,47 @@
<?php
use app\models\Articles;
use app\models\Expositions;
$lg = Yii::$app->language;
$per_page = 10;
$page = $_GET['page'] ?? 1
/**
* @var \yii\web\View $this
*/
?>
<?php
$condition = [];
$condition['is_active'] = 1;
$expositions = Expositions::find()->where($condition);
$expositions = $expositions->offset($per_page * $page - $per_page)->limit($per_page);
if (!empty($_GET['category']))
$expositions = $expositions->andWhere(['category_id' => $_GET['category']]);
if (!empty($_GET['tags'])) {
$tags = explode('_', $_GET['tags']);
if (sizeof($tags) > 0)
$expositions->joinWith('expositionTags')->andWhere(['IN', 'exposition_tag_id', $tags]);
}
$count = $expositions->count();
$expositions->orderBy(['publish_date' => SORT_DESC]);
$data = [];
foreach ($expositions->all() as $exposition) {
$model = new \stdClass();
$model->title = $exposition->title();
$model->type = 'exposition';
$model->img = $exposition->getImg();
$model->id = $exposition->id;
$data[] = $model;
}
header('Content-type: application/json');
echo json_encode(['data' => $data, 'lastPage' => ceil($count/$per_page), 'count' => $count]);
exit;
?>
@@ -0,0 +1,108 @@
<?php
use app\models\Expositions;
use app\models\register\Collections;
use app\models\RegisterObjects;
use app\models\UserFavorites;
use app\models\Articles;
header('Content-type: application/json');
$user = \app\services\Auth::getUserByToken();
if($user) {
$lg = Yii::$app->language;
$per_page = 10;
if (!empty($_GET['type'])) {
$page = $_GET['page'] ?? 1;
$fav = UserFavorites::find()->where(['user_id' => $user->id, 'table' => $_GET['type']])->all();
$ids = [];
foreach ($fav as $f)
$ids[] = $f->fid;
switch ($_GET['type']):
case 'collections':
$data = [];
$models = Collections::find()->where(['IN', 'id', $ids]);
$count = $models->count();
$models = $models->offset($per_page * $page - $per_page)->limit($per_page);
foreach ($models->all() as $dbModel) {
$model = new \stdClass();
$model->title = $lg == 'en' ? $dbModel->name_en ?? $dbModel->name : $dbModel->name;
$model->type = 'collections';
$model->path = '/tabs/search/collection';
$model->img = $dbModel->getImg(\Yii::$app->params['portal'] . '/_public/images/empty-169.png');
$model->id = $dbModel->id;
$data[] = $model;
}
echo json_encode(['data' => $data, 'lastPage' => ceil($count / $per_page), 'count' => $count]);
exit;
case 'expositions':
$data = [];
$models = Expositions::find()->where(['IN', 'id', $ids]);
$count = $models->count();
$models = $models->offset($per_page * $page - $per_page)->limit($per_page);
foreach ($models->all() as $dbModel) {
$model = new \stdClass();
$model->title = $lg == 'en' ? $dbModel->ts_en_name ?? $dbModel->name : $dbModel->name;
$model->type = 'expositions';
$model->path = '/tabs/search/exposition';
$model->img = $dbModel->getImg();
$model->id = $dbModel->id;
$data[] = $model;
}
echo json_encode(['data' => $data, 'lastPage' => ceil($count / $per_page), 'count' => $count]);
exit;
case 'register_objects':
$data = [];
$models = RegisterObjects::find()->where(['lib_type' => 1])->andWhere(['IN', 'id', $ids]);
$count = $models->count();
$models = $models->offset($per_page * $page - $per_page)->limit($per_page);
foreach ($models->all() as $dbModel) {
$model = new \stdClass();
$model->title = $lg == 'en' ? $dbModel->ts_en_name ?? $dbModel->name : $dbModel->name;
$model->type = 'register_objects';
$model->path = '/tabs/search/object';
$model->img = $dbModel->getImg(\Yii::$app->params['portal'] . '/_public/images/empty-169.png');
$model->id = $dbModel->id;
$data[] = $model;
}
echo json_encode(['data' => $data, 'lastPage' => ceil($count / $per_page), 'count' => $count]);
exit;
case 'articles':
$data = [];
$models = Articles::find()->andWhere(['IN', 'id', $ids]);
$count = $models->count();
$models = $models->offset($per_page * $page - $per_page)->limit($per_page);
foreach ($models->all() as $dbModel) {
$model = new \stdClass();
$model->title = $lg == 'en' ? $dbModel->title_en ?? $dbModel->title : $dbModel->title;
$model->type = $dbModel->art_table;
$model->path = '/tabs/articles/' . $dbModel->art_table;
$model->img = ($dbModel->getArticle()->image('16:11') ? $dbModel->getArticle()->image('16:11') : \Yii::$app->params['portal'] . '/_public/images/empty-169.png');
$model->id = $dbModel->id;
$data[] = $model;
}
echo json_encode(['data' => $data, 'lastPage' => ceil($count / $per_page), 'count' => $count]);
exit;
endswitch;
}
}
echo json_encode(['error' => 1, 'message' => 'Permission denied']);
exit;
/* @var $this \yii\web\View */
@@ -0,0 +1,32 @@
<?php
header('Content-type: application/json');
use app\models\UserPublic;
use app\services\JWT;
$post = \Yii::$app->request->getRawBody();
$postDecode = json_decode($post);
if(!empty($postDecode->uid)) {
function loop($postDecode)
{
if (!$postDecode->uid) return;
$server_id = md5(time() . uniqid());
$uid = $postDecode->uid;
$token = JWT::encode(['server_id' => $server_id, 'uid' => $uid], JWT::SECRET_KEY);
$user = UserPublic::find()->where(['device_id' => $token])->exists();
if (!$user) {
echo json_encode(['device_id' => $token]);
exit;
} else {
loop($postDecode);
}
}
loop($postDecode);
}
exit;
@@ -0,0 +1,34 @@
<?php
/** @var \app\models\UserPublic $user */
$user = \app\services\Auth::getUserByToken($_GET['token']);
if ($user) {
$partner_ids = [];
foreach ($user->qrValidators as $qrValidator) {
$partner_ids[] = $qrValidator->partner_id;
}
if (sizeof($partner_ids) > 0) {
//$articles->innerJoinWith('events');
$events = \app\models\Events::find();
$condition = ['and'];
$condition[] = ['=', 'type', 'booking'];
$condition[] = ['IN', 'partner_id', $partner_ids];
$events->where($condition);
$data = [];
foreach ($events->all() as $event) {
$data[] = [
'id' => $event->id,
'name' => $event->title(),
'date' => date('d.m.Y', strtotime($event->event_dates))];
}
echo json_encode(['data' => $data]);
exit;
}
}
/* @var $this \yii\web\View */
@@ -0,0 +1,13 @@
<?php
use app\services\Auth;
use app\services\JR;
/** @var \app\models\UserPublic $user */
//$user = Auth::getUserByToken();
$user = \app\models\UserPublic::findOne(34);
if(!$user)
JR::message(JR::not_authenticated);
JR::message(JR::done, ['profile' => $user->profileData()]);
@@ -0,0 +1,49 @@
<?php
use app\models\Expositions;
use app\models\Positions;
use app\models\register\Collections;
use app\services\JR;
$lg = Yii::$app->language;
$sliderPositions = Positions::findOne(70);
$whatsNewPositions = Positions::find()->where(['id' => 1])->one();
$collections = Collections::find()->where(['is_selected' => 1, 'deleted' => 0])->all();
$expositions = Expositions::find()->where(['is_active' => 1, 'is_selected' => 1])->all();
$pos = function ($incomingPosition) use ($lg) {
$items = [];
/** @var Positions $position */
foreach ($incomingPosition->positions as $position) {
if ($position->articleModel) {
$items[] = (object)[
'id' => $position->articleModel->id,
'img' => $position->articleModel->article->image('16:11'),
'title' => $position->articleModel->{'title' . ($lg == 'en' ? '_en' : '')},
'type' => $position->articleModel->art_table
];
}
}
return $items;
};
$coll = function ($inc) use ($lg) {
$items = [];
/** @var Collections | Expositions $item */
foreach ($inc as $item) {
$items[] = (object)[
'id' => $item->id,
'img' => $item->getImg(),
'title' => $item->title()
];
}
return $items;
};
JR::message(JR::done, ['obj' => [
'slides' => $pos($sliderPositions),
'whats_new' => $pos($whatsNewPositions),
'collections' => $coll($collections),
'expositions' => $coll($expositions)
]]);
@@ -0,0 +1,61 @@
<?php
use app\models\TourObjects;
$lg = Yii::$app->language;
$id = $_GET['id'];
$model = TourObjects::findOne($id);
/* @var $this \yii\web\View */
if (!$model) exit;
$htmlText = $lg == 'en' ? $model->text_en : $model->text;
$text = preg_replace('#<a.*?>([^>]*)</a>#i', '$1', $htmlText);
/** @var \app\models\register\Partner $partner */
$partner = null;
if($model->partner_id)
$partner = \app\models\register\Partner::findOne($model->partner_id);
?>
<style>
.info-map-box .title {
font-weight: bold;
font-size: 16px;
color: var(--color-main);
padding-bottom: 5px;
}
.info-map-box .body {
height: 200px;
overflow-y: scroll;
padding-right: 5px;
text-align: left;
}
.info-map-box .body::-webkit-scrollbar {
width: 3px;
}
.info-map-box .body::-webkit-scrollbar-track {
box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3);
}
.info-map-box .body::-webkit-scrollbar-thumb {
background-color: darkgrey;
outline: 1px solid slategrey;
}
.info-map-box .body p {
text-align: left !important;
}
</style>
<div class="info-map-box">
<div class="title"><?= $lg == 'en' ? $model->name_en : $model->name ?></div>
<div class="body">
<?= $text ?>
</div>
<?php if($partner): ?>
<div style="margin-top: 10px">
<a href="<?= $partner->getUrl() ?>"><?= $lg == 'en' ? "To the website" : 'Към уебсайта'?></a>
</div>
<?php endif; ?>
</div>
@@ -0,0 +1,72 @@
<?php
use app\services\IdServer;
use app\services\JWT;
$lg = Yii::$app->language;
$object = \app\models\RegisterObjects::findOne($_GET['id']);
$data = [];
if ($object) {
$favorite = false;
$user = \app\services\Auth::getUserByToken();
if ($user) {
$favoriteExists = \app\models\UserFavorites::find()->where(['user_id' => $user->id, 'table' => 'register_objects', 'fid' => $_GET['id']])->exists();
if ($favoriteExists)
$favorite = true;
}
$item = new stdClass();
$item->id = $object->id;
$item->title = $object->getTitle();
$item->text = $object->getLongText();
$item->image = $object->getMainImgFile(\Yii::$app->params['portal'] . '/_public/images/empty-169.png');
$item->type = 'register_objects';
$item->isFavorite = $favorite;
$item->images = [];
foreach ($object->images(\Yii::$app->params['portal'] . '/_public/images/empty-169.png') as $index => $image) {
$item->images[] = [
'id' => ($index + 1),
'img' => $image
];
}
$item->docs = [];
$item->videos = [];
$item->models = [];
$docs = $object->getPdfDocuments();
$videos = $object->getVideoList();
$models3d = $object->get3DModelList();
if ($videos && sizeof($videos)) {
foreach ($videos as $v) {
$id = JWT::encode(['id' => $v->id], JWT::SECRET_KEY);
$item->videos[] = [
'id' => $v->id,
'thumb' => IdServer::getVideoThumb($v->id),
'url' => Yii::$app->params['media_server'] . '/media/play-mobile/' . $id . '/'
];
}
}
if ($models3d && sizeof($models3d) > 0) {
foreach ($models3d as $v) {
$id = JWT::encode(['id' => $v->id], JWT::SECRET_KEY);
$item->models[] = [
'id' => $v->id,
//'thumb' => IdServer::getVideoThumb($v->id),
'title' => $v->video_title ?? ($lg == 'en' ? '3D model' : '3D модел'),
'url' => Yii::$app->params['media_server'] . '/api/render-model/' . $id . '/?lg=' . $lg
];
}
}
foreach ($docs as $doc) {
$id = JWT::encode(['id' => $doc->id], JWT::SECRET_KEY);
$item->docs[] = [
'img' => $item->image,
'url' => Yii::$app->params['portal'] . '/file-system/file-preview-delivery/' . $id . '/'
];
}
$data[] = $item;
}
header('Content-type: application/json');
echo json_encode(['data' => $data]);
exit;
@@ -0,0 +1,67 @@
<?php
use app\models\Order;
use app\services\JR;
if (empty($_GET['id'])) exit;
$id = $_GET['id'];
/* @var $this \yii\web\View */
$user = \app\services\Auth::getUserByToken();
//$user = \app\models\UserPublic::findOne(34);
$lg = Yii::$app->language;
$data = [];
if ($user) {
$per_page = 10;
$page = $_GET['page'] ?? 1;
$orders = Order::find()->where(['user_id' => $user->id, 'id' => $id])->offset($per_page * $page - $per_page)->orderBy(['id' => SORT_DESC]);
$count = $orders->count();
foreach ($orders->all() as $order) {
$paying = $order->payment;
//$booking = $order->booking;
//$event = $booking && $booking->event ? $booking->event->title() : '';
$booking = [];
foreach ($order->booking as $ticket) {
$booking[] = $ticket->responseData();
}
$default = $booking[0] ?? null;
$event = null;
if (!empty($booking[0])) {
$event = [
'name' => $booking[0]['event'],
'img' => $booking[0]['event_img'],
];
}
$status = [
'PAID' => [
'bg' => 'Платено',
'en' => 'Paid'
],
'PENDING' => [
'bg' => 'Изчаква се плащане',
'en' => 'Payment pending'
]
];
$item = [
'id' => $order->id,
'price' => $order->total_price,
'date' => $order->order_date,
'status' => $paying->status == 'PAID' ? ($status['PAID'][$lg]) : $status['PENDING'][$lg],
'booking' => $booking,
];
if ($event) {
$item['event'] = $event;
}
$data[] = $item;
}
JR::message(JR::done, ['data' => $data, 'lastPage' => ceil($count / $per_page), 'count' => $count]);
}
@@ -0,0 +1,115 @@
<?php
/* @var $this \yii\web\View */
use app\models\Order;
use app\services\JR;
//$user = \app\services\Auth::getUserByToken();
$user = \app\models\UserPublic::findOne(34);
$lg = Yii::$app->language;
$data = [];
if ($user) {
$per_page = 10;
$page = $_GET['page'] ?? 1;
$event_ids = [];
if ($user) {
$events = \app\models\Events::find();
$partner_ids = [];
foreach ($user->qrValidators as $qrValidator) {
$partner_ids[] = $qrValidator->partner_id;
}
if (sizeof($partner_ids) > 0) {
//$articles->innerJoinWith('events');
$condition = ['and'];
$condition[] = ['=', 'type', 'booking'];
$condition[] = ['IN', 'partner_id', $partner_ids];
$events->where($condition);
foreach ($events->all() as $event) {
$event_ids[] = $event->id;
}
}
if(!empty($_GET['event_id'])) {
$event_ids = [$_GET['event_id']];
}
if(!empty($_GET['article_id'])) {
$article = \app\models\Articles::findOne($_GET['article_id']);
if($article) {
$event_id = $article->article->id();
if($event_id) {
$event_ids = [$event_id];
}
}
}
}
$orders = Order::find()->joinWith('booking')->where(['IN', 'event_id', $event_ids]);
if(!empty($_GET['order_number'])) {
$orders->andWhere(['id' => $_GET['order_number']]);
}
$orders->offset($per_page * $page - $per_page)->orderBy(['id' => SORT_DESC]);
$count = $orders->count();
foreach ($orders->all() as $order) {
$paying = $order->payment;
//$booking = $order->booking;
//$event = $booking && $booking->event ? $booking->event->title() : '';
$booking = [];
foreach ($order->booking as $ticket) {
$count = $ticket->tickets_count;
$booking[] = [
'id' => $ticket->id,
'ticket_type' => $ticket->{'name_' . $lg},
'event' => $ticket->event->title(),
'event_img' => $ticket->event->image('16:11'),
'single_price' => $ticket->single_price,
'datetime' => $ticket->formatedHtmlDate(),
'hashed_id' => $ticket->getHashedId(),
'tickets_count' => $count
];
}
$default = $booking[0] ?? null;
$event = null;
if (!empty($booking[0])) {
$event = [
'name' => $booking[0]['event'],
'img' => $booking[0]['event_img'],
];
}
$status = [
'PAID' => [
'bg' => 'Платено',
'en' => 'Paid'
],
'PENDING' => [
'bg' => 'Изчаква се плащане',
'en' => 'Payment pending'
]
];
$item = [
'id' => $order->id,
'price' => $order->total_price,
'date' => date('d.m.Y H:i', strtotime($order->order_date)),
'status' => $paying->status == 'PAID' ? ($status['PAID'][$lg]) : $status['PENDING'][$lg],
'booking' => $booking,
];
if ($event) {
$item['event'] = $event;
}
$data[] = $item;
}
JR::message(JR::done, ['data' => $data, 'lastPage' => ceil($count / $per_page), 'count' => $count]);
}
@@ -0,0 +1,70 @@
<?php
use app\models\Order;
use app\services\JR;
$user = \app\services\Auth::getUserByToken();
//$user = \app\models\UserPublic::findOne(34);
$lg = Yii::$app->language;
$data = [];
if ($user) {
$per_page = 10;
$page = $_GET['page'] ?? 1;
$orders = Order::find()->where(['user_id' => $user->id])->offset($per_page * $page - $per_page)->orderBy(['id' => SORT_DESC]);
$count = $orders->count();
foreach ($orders->all() as $order) {
$paying = $order->payment;
//$booking = $order->booking;
//$event = $booking && $booking->event ? $booking->event->title() : '';
$booking = [];
foreach ($order->booking as $ticket) {
$count = $ticket->tickets_count;
$booking[] = [
'id' => $ticket->id,
'ticket_type' => $ticket->{'name_' . $lg},
'event' => $ticket->event->title(),
'event_img' => $ticket->event->image('16:11'),
'single_price' => $ticket->single_price,
'datetime' => $ticket->formatedHtmlDate(),
'hashed_id' => $ticket->getHashedId(),
'tickets_count' => $count
];
}
$default = $booking[0] ?? null;
$event = null;
if (!empty($booking[0])) {
$event = [
'name' => $booking[0]['event'],
'img' => $booking[0]['event_img'],
];
}
$status = [
'PAID' => [
'bg' => 'Платено',
'en' => 'Paid'
],
'PENDING' => [
'bg' => 'Изчаква се плащане',
'en' => 'Payment pending'
]
];
$item = [
'id' => $order->id,
'price' => $order->total_price,
'date' => $order->order_date,
'status' => $paying->status == 'PAID' ? ($status['PAID'][$lg]) : $status['PENDING'][$lg],
'booking' => $booking,
];
if ($event) {
$item['event'] = $event;
}
$data[] = $item;
}
JR::message(JR::done, ['data' => $data, 'lastPage' => ceil($count / $per_page), 'count' => $count]);
}
@@ -0,0 +1,30 @@
<?php
use app\models\OrderBooking;
use app\services\JR;
$g = $_GET;
$event_id = $_GET['event_id'] ?? null;
$ticket_token = $_GET['ticket_token'] ?? null;
$user = \app\services\Auth::getUserByToken();
if($event_id && $user) {
$booking = OrderBooking::getBookingByHashId($ticket_token);
if($event_id != $booking->event_id) {
JR::message(JR::error, ['wrong_event' => 1]);
}
if(empty($_GET['validated_count'])) {
if ($booking->validated_count < $booking->tickets_count) {
JR::message(JR::done, $booking->responseData());
} else {
JR::message(JR::done, $booking->responseData());
}
} else {
$count = $booking->validated_count ?? 0;
$booking->validated_count = $count + $_GET['validated_count'];
$booking->last_validation_time = date('Y-m-d H:i:s');
$booking->save();
JR::message(JR::done, ['ready' => 1]);
}
} else {
JR::message(JR::not_authenticated);
}
@@ -0,0 +1,19 @@
<?php
header('Content-type: application/json');
$user = \app\services\Auth::getUserByToken();
if($user) {
$jsonData = Yii::$app->request->getRawBody();
$data = json_decode($jsonData);
if($data->status) {
$user->club_card = $data->status == 'active' ? 1 : null;
$user->save();
}
echo json_encode(['success'=> 1, 'profile' => $user->profileData()]);
exit;
}
echo json_encode(['error' => 1, 'message' => 'Permission denied']);
exit;
@@ -0,0 +1,28 @@
<?php
header('Content-type: application/json');
$user = \app\services\Auth::getUserByToken();
if($user) {
$jsonData = Yii::$app->request->getRawBody();
$data = json_decode($jsonData);
if($data->isFavorite == true) {
$favorite = new \app\models\UserFavorites();
$favorite->user_id = $user->id;
$favorite->fid = $data->id;
$favorite->table = $data->type;
$favorite->date_added = date('Y-m-d H:i:s');
$favorite->save();
} else {
$favorite = \app\models\UserFavorites::find()->where(['user_id' => $user->id, 'fid' => $data->id, 'table' => $data->type])->one();
if($favorite) {
$favorite->delete();
}
}
echo json_encode(['success'=> 1]);
exit;
}
echo json_encode(['error' => 1, 'message' => 'Permission denied']);
exit;
@@ -0,0 +1,8 @@
<?php
/* @var $this \yii\web\View */
echo $_GET['ticket'] ?? 'ticket empty'
?>
@@ -0,0 +1,41 @@
<?php
use app\models\UserExplorerObjects;
use app\services\JR;
use app\services\Auth;
$lang = Yii::$app->language;
$user = \app\services\Auth::getUserByToken();
$per_page = 20;
$page = $_GET['page'] ?? 1;
/* @var $this \yii\web\View */
if (!$user)
JR::message(JR::not_authenticated);
$userExplorerObjects = UserExplorerObjects::find()->where(['user_id' => $user->id]);
$count = $userExplorerObjects->count();
$userExplorerObjects = $userExplorerObjects->limit($per_page)->offset($per_page*$page - $per_page)->orderBy(['date_visit' => SORT_DESC])->all();
$data = [];
foreach ($userExplorerObjects as $ueo) {
if($ueo->explorerObject && $ueo->explorerObject->tourObject) {
$tourObject = $ueo->explorerObject->tourObject;
$data[] = (object)['name' => $lang == 'en' ? $tourObject->name_en : $tourObject->name,
'points' => $ueo->explorerObject->points,
'img' => $ueo->explorerObject->getSrcOfSingleImage('explorer_object_image', '1:1'),
'date' => $ueo->date_visit ? date('d.m.Y', strtotime($ueo->date_visit)) : ''
];
}
}
JR::message(JR::done, ['data' => $data, 'lastPage' => ceil($count/$per_page), 'count' => $count]);
@@ -0,0 +1,46 @@
<?php
use app\models\Ts;
/**
*
* @var $partner;
*/
?>
<div class="content">
<div class="flex top50 page-contacts">
<div class="cw8">
<div class="detail-title mobile-hide"><?= $partner->getTsName() ?></div>
<div class="top25"><?= $partner->getDescription() ?></div>
</div>
<div class="cw4">
<div class="article-site-bar">
<div class="row">
<div class="sub-row text-uppercase"><?= Ts::get(51) ?></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 href="<?= $partner->website ?>"><?= $partner->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: <?= $partner->phone ?>"><?= $partner->phone ?></a></span>
</div>
</div>
<div class="row">
<div class="sub-row">
<i class="la la-map-marker"></i><?= Ts::get(133) ?>:<span
class="font-bold left-15"><?= $partner->getAddress() ?></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: <?= $partner->email ?>"><?= $partner->email ?></a></span>
</div>
</div>
</div>
</div>
</div>
</div>
@@ -0,0 +1,74 @@
<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
* @var $partnerSlug
*/
Ts::set([2, 12, 6, 7, 8]);
$encode = '?' . base64_encode(json_encode(['art_table' => 'art_table=news']));
/** @var \app\models\register\Partner $partner */
$partner = \app\models\register\Partner::getPartnerBySlug($partnerSlug);
$articlesUrl = ViewReg::generateArticleListUrl($partnerSlug);
echo $this->render('/partner/inner-pages/_partner-header', ['partner' => $partner, 'model' => $model, 'link' => null])
?>
<div class="content">
<div class="top50 filter-buttons flex-center">
<button data-type="news"
data-filter="art_table=news" <?= $type == 'news' ? 'class="active"' : '' ?>><?= Ts::get(6) ?></button>
<button data-type="events"
data-filter="art_table=events" <?= $type == 'events' ? 'class="active"' : '' ?>><?= Ts::get(7) ?></button>
<button data-type="campaigns"
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') ?>
</div>
<div class="content-inner top25">
<div class="detail-date">
<?= date('d.m.Y', strtotime($model->publish_date)) ?>
</div>
<div class="detail-text">
<?= $model->article->text() ?>
</div>
</div>
<div class="top20">
<?php
Carousel::widget([
'type' => 'partner_more_articles',
'id' => 1,
'partner_id' => $partner->id
]);
?>
</div>
</div>
<script>
const l = '<?= $articlesUrl ?>';
const partner_id = '<?= $partner->id ?>';
document.querySelectorAll('[data-filter]').forEach(e => {
e.addEventListener('click', () => {
let filter = {};
filter['art_table'] = e.dataset.filter;
filter['partner_id'] = `partner_id=${partner_id}`;
const key = `?${btoa(JSON.stringify(filter))}`
window.location.href = l + key
})
})
</script>
@@ -0,0 +1,83 @@
<?php
/* @var $this \yii\web\View */
/* @var $slug mixed */
/**
* @var $slug
* @var $partnerSlug
*/
use app\models\register\Collections;
use app\models\Ts;
use app\services\Formatter;
use app\services\ViewReg;
use app\widgets\Carousel;
/** @var \app\models\register\Partner $partner */
$partner = \app\models\register\Partner::getPartnerBySlug($partnerSlug);
$encodeId = explode('-', $slug)[0];
$id = Formatter::decodeId($encodeId);
/** @var Collections $model */
$model = Collections::findOne($id);
ViewReg::localePartnerSwitchPage('collections', $model->id, $model->name, $model->name_en);
Ts::set([41, 42, 43])
?>
<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') ?></div>
</div>
<?= $this->render('/site/includes/list_collection_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_collections',
'id' => 1
]);
?>
</div>
</div>
@@ -0,0 +1,184 @@
<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
* @var $partnerSlug
*/
$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();
if ($partnerSlug) {
/** @var \app\models\register\Partner $partner */
$partner = \app\models\register\Partner::getPartnerBySlug($partnerSlug);
}
?>
<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">
<?php if ($partnerSlug): ?>
<button onclick="window.location.href='<?= Yii::$app->goToAction(($lg == 'en' ? 'partner' : 'partnjor') . '/' . $partnerSlug . '/' . ($lg == 'en' ? 'e-library' : 'e-biblioteka')) ?>'">
<i class="la la-undo"></i> <?= Ts::get(169) ?></button>
<?php else: ?>
<button onclick="window.location.href='<?= Yii::$app->goToAction($lg == 'en' ? 'e-library' : 'e-biblioteka') ?>'">
<i class="la la-undo"></i> <?= Ts::get(169) ?></button>
<?php endif; ?>
</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,90 @@
<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
* @var $partnerSlug
*/
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();
Includes::widget(['type' => 'detail_page_header']);
Ts::set([43, 46, 47]);
$exposition_id = base64_decode($_SERVER['QUERY_STRING']);
$exposition = \app\models\Expositions::findOne($exposition_id);
?>
<style>
.dp-collection-selected-collections {
margin: -30px 0 0 -10px;
}
.dp-collection-selected-collections .top-care {
display: none;
}
.bottom-care {
display: none !important;
}
</style>
<?php
ViewReg::localePartnerSwitchPage('expositions', $model->id, $model->name, $model->ts_en_name);
/** @var \app\models\register\Partner $partner */
$partner = \app\models\register\Partner::getPartnerBySlug($partnerSlug);
$articlesUrl = ViewReg::generateArticleListUrl($partnerSlug);
echo $this->render('/partner/inner-pages/_partner-header', ['partner' => $partner, 'model' => $model, 'link' => null])
?>
<div class="content">
<div class="detail-page-breadcrumb flex-center flex top50">
<a href="/<?= Yii::$app->language . '/' . ViewReg::partnerSite() ?>/">Начало</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') ?>
</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,87 @@
<link rel="stylesheet" href="/_public/assets/css/page.css">
<link rel="stylesheet" href="/_public/assets/css/article-module.css">
<?php
/**
* @var $slug
* @var $partnerSlug
* @var $webPage
*/
use app\models\RegisterObjects;
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 \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();
Ts::set([41, 44, 46, 49, 128, 133, 155, 156, 157, 158, 159, 160, 161]);
Includes::widget(['type' => 'detail_page_header']);
/** @var \app\models\register\Partner $partner */
$partner = \app\models\register\Partner::getPartnerBySlug($partnerSlug);
$articlesUrl = ViewReg::generateArticleListUrl($partnerSlug);
echo $this->render('/partner/inner-pages/_partner-header', ['partner' => $partner, 'model' => $model])
?>
<div class="content">
<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') ?>
</div>
<div class="detail-date top50">
<?= date('d.m.Y/H:i', strtotime($model->publish_date)) ?>
</div>
<div class="flex top25">
<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(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, 50]);
?>
<link rel="stylesheet" href="/_public/assets/css/page.css">
<link rel="stylesheet" href="/_public/assets/css/article-module.css">
<div class="content">
<?php
/** @var \app\models\register\Partner $partner */
$partner = \app\models\register\Partner::getPartnerBySlug(Yii::$app->controller->partnerSlug);
echo $this->render('/partner/inner-pages/_partner-header', ['partner' => $partner, 'model' => $model, 'link' => [
'url' => ViewReg::generateListUrl('projects'),
'title' => \app\models\Ts::get(50)
]]);
?>
<div class="detail-title top50"><?= $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') ?>
</div>
<div class="content top50">
<div class="detail-date">
<?= date('d.m.Y/H:i', strtotime($model->publish_date)) ?>
</div>
<div class="flex">2
<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_date_start): ?>
<div class="body-row">
<b><?= Ts::get(27) ?>
:</b> <?= Formatter::dates($model->period_date_start, $model->period_date_end) ?>
</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>
<?= $model->website ?>
</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,92 @@
<?php
use app\models\Ts;
use app\models\Articles;
$lg = Yii::$app->language;
/**
* @var $partner_id
*/
?>
<div class="content">
<div class="filter-buttons top50">
<button data-filter=""><?= 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)
} 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-articles/?${serialize}`, '#list-article', '#pagination', page => {
articleFilter['page'] = `page=${page}`;
filter()
})
}
</script>
@@ -0,0 +1 @@
<?php
@@ -0,0 +1,24 @@
<?php
/**
* @var $partner
* @var $model
*/
?>
<div class="content">
<div class="page-header">
<?php if ($partner): ?>
<img class="dark-img" src="<?= $partner->getSrcOfSingleImage('partner_header_image', '21:5') ?>"
style="width: 100%">
<div class="header-partner-logo">
<div class="logo-img">
<img src="<?= $partner->getSrcOfSingleImage('partner_logo_image', '1:1') ?>">
</div>
<div class="header-name"><?= $partner->getTsName() ?></div>
</div>
<?php endif; ?>
<?php if(isset($link)): ?>
<a href="<?= $link['url']?>" class="link bottom-care"><?= $link['title']?></a>
<?php endif ?>
</div>
</div>
@@ -0,0 +1,44 @@
<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]);
/** @var \app\models\register\Partner $partner */
$partner = \app\models\register\Partner::getPartnerBySlug(Yii::$app->controller->partnerSlug);
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', ['partner_id' => $partner->id])
?>
<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,27 @@
<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/collection-greed.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]);
/** @var \app\models\register\Partner $partner */
$partner = \app\models\register\Partner::getPartnerBySlug(Yii::$app->controller->partnerSlug);
echo $this->render('_partner-header', ['partner' => $partner, 'model' => $model]);
echo $this->render('/site/includes/list_exposition', ['partner_id' => $partner->id])
?>
@@ -0,0 +1,32 @@
<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
* @var $partnerSlug ;
*/
/** @var \app\models\register\Partner $partner */
$partner = \app\models\register\Partner::getPartnerBySlug($partnerSlug);
Yii::$app->controller->pageTitle = $partner->getTsName() . ' - ' . $model->headerTitle();
Ts::set([3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]);
?>
<style>
header {
border-bottom: 0;
}
</style>
<?= $this->render('_partner-header', ['partner' => $partner, 'model' => $model, 'link' => null]) ?>
<?= $this->render('/site/includes/list_article', ['partner_id' => $partner->id]) ?>
@@ -0,0 +1,43 @@
<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
*/
/** @var \app\models\register\Partner $partner */
$partner = \app\models\register\Partner::getPartnerBySlug(Yii::$app->controller->partnerSlug);
Yii::$app->controller->pageTitle = $model->headerTitle();
Ts::set([15, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 48]);
?>
<?= $this->render('_partner-header', ['partner' => $partner, 'model' => $model]) ?>
<?= $this->render('/site/includes/list_collection', ['partner_id' => $partner->id]) ?>
<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,57 @@
<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
*/
Yii::$app->controller->pageTitle = $model->headerTitle();
$partner = \app\models\register\Partner::getPartnerBySlug(Yii::$app->controller->partnerSlug);
Ts::set([156, 182, 183, 51, 133])
?>
<div class="page-header simple-page-header" style="height: 80px; border-top: 2px solid var(--color-main)">
<div class="header-logo top-care" style="display: block"><?= Ts::get(51) ?></div>
</div>
<div class="content">
<a href="/<?= Yii::$app->language ?>/"><img src="/_public/images/logo-b.png" class="logo-center-absolute"></a>
<div class="flex top50 page-contacts">
<div class="cw8">
<?= $partner->getDescription() ?>
</div>
<div class="cw4">
<div class="article-site-bar">
<div class="row">
<div class="sub-row">
<i class="la la-globe"></i><?= Ts::get(156) ?>:<span
class="font-bold left-15"><a href="<?= $partner->website ?>"><?= $partner->website ?></a></span>
</div>
</div>
<div class="row">
<div class="sub-row">
<i class="la la-map-marker"></i><?= Ts::get(133) ?>:<span
class="font-bold left-15"><?= $partner->getAddress() ?></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: <?= $partner->phone ?>"><?= $partner->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: <?= $partner->email ?>"></a><?= $partner->email ?></span>
</div>
</div>
</div>
</div>
</div>
</div>
@@ -0,0 +1,50 @@
<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, 21]);
$partners = \app\models\register\Partner::find()->where(['active' => 1, 'deleted' => 0])
->andWhere(['<', 'type', 2])
->all();
Includes::widget([
'type' => 'detail_page_header',
//'model' => $model,
//'title' => Ts::get(12),
'bottom_care' => '<a href=""></a>'
]);
?>
<div class="content">
<div class="detail-page-filter filter-buttons flex-center">
<button class="active"><?= Ts::get(21)?></button>
</div>
<div class="top25 flex flex-wrap">
<?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,22 @@
<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]);
/** @var \app\models\register\Partner $partner */
$partner = \app\models\register\Partner::getPartnerBySlug(Yii::$app->controller->partnerSlug);
echo $this->render('/partner/inner-pages/_partner-header', ['model' => $model, 'partner' => $partner]);
echo $this->render('/site/includes/list_project', ['partner_id' => $partner->id])
?>
@@ -0,0 +1,46 @@
<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">
<script src="/_public/plugins/splitejs/js/splide.min.js"></script>
<?php
/**
* @var $slug
*/
use app\services\Formatter;
use app\services\ViewReg;
use app\widgets\Carousel;
$encodeId = explode('-', $slug)[0];
$id = Formatter::decodeId($encodeId);
/** @var \app\models\register\Partner $model */
$model = \app\models\register\Partner::findOne($id);
Yii::$app->controller->pageTitle = $model->getTsName();
\app\models\Ts::set([1, 2, 18, 19, 156, 182, 183, 51, 133]);
$partner = \app\models\register\Partner::getPartnerBySlug(Yii::$app->controller->partnerSlug);
?>
<div class="content">
<div class="page-header">
<img class="dark-img" src="<?= $model->getSrcOfSingleImage('partner_header_image', '21:5') ?>"
style="width: 100%">
<div class="header-partner-logo top25">
<div class="logo-img">
<img src="<?= $model->getSrcOfSingleImage('partner_logo_image', '1:1') ?>">
</div>
<div class="header-name"><?= $model->getTsName() ?></div>
</div>
</div>
<?= $this->render('_contacts', ['partner' => $partner]) ?>
<?php
Carousel::widget(['type' => 'positions_partner_home_page', 'id' => 1, 'partner_id' => $model->id]);
Carousel::widget(['type' => 'collection_partner_home_page', 'id' => 1, 'partner_id' => $model->id]);
Carousel::widget(['type' => 'expositions_partner_home_page', 'id' => 1, 'partner_id' => $model->id]);
?>
</div>
@@ -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,26 @@
<link rel="stylesheet" href="/_public/assets/css/page.css">
<link rel="stylesheet" href="/_public/assets/css/article-module.css">
<?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">
<img src="/_public/images/logo_en/logo-horizontal-2color.png">
</a>
</div>
</div>
<div class="content-inner min-page-height">
<div class="detail-title top50"><?= $model->headerTitle() ?></div>
<p><?= $model->text() ?></p>
<?php
//FOR PAGE Virtual museum
if ($model->id == 14 || $model->id == 17) {
echo $this->render('_vmuseum');
}
?>
</div>
@@ -0,0 +1 @@
<h1>Пловдив</h1>
@@ -0,0 +1,58 @@
<?php
use app\models\Articles;
$lg = Yii::$app->language;
$per_page = 10;
$page = $_GET['page'] ?? 1
/**
* @var \yii\web\View $this
*/
?>
<?php
$articles = Articles::find();
if (!empty($_GET['art_table']) && $_GET['art_table'] != 'all')
$articles = $articles->andWhere(['art_table' => $_GET['art_table']]);
if (!empty($_GET['partner_id'])) {
$articles = $articles->andWhere([
'partner_id' => $_GET['partner_id'],
'on_partner_page' => 1
]);
} else {
$articles = $articles->andWhere(['is_active' => 1]);
}
if (!empty($_GET['order_title'])) {
$articles = $articles->orderBy([$_GET['order_title'] => SORT_ASC]);
} else {
if(empty($_GET['partner_id'])) {
$articles = $articles->orderBy(['publish_date' => SORT_DESC]);
} else {
$articles = $articles->orderBy(['id' => SORT_DESC]);
}
}
$count = $articles->count();
$articles = $articles->offset($per_page * $page - $per_page)->limit($per_page);
if ($count <= $per_page) {
$page = 1;
}
$articles = $articles->offset($per_page * $page - $per_page)->limit($per_page);
$html = $this->render('list_article_partial', ['articles' => $articles->all()]);
$pages_count = ceil($count / $per_page);
echo json_encode([
'html' => $html,
'pages_count' => $pages_count,
'current_page' => (int)$page
])
?>
@@ -0,0 +1,33 @@
<?php
/**
* @var \app\models\Articles[] $articles
*/
use app\services\ViewReg;
?>
<div class="flex-wrap">
<?php foreach ($articles as $article): ?>
<?php if ($article->article): ?>
<div class="cw6 flex">
<div class="cw6" style="height: 320px">
<a href="<?= ViewReg::generateDetailPageUrl($article) ?>" class="cell">
<div class="list-element-img cell-img"
style="background-image: url('<?= $article->article->image('16:11') ?>')"></div>
</a>
</div>
<div class="cw6">
<div class="cell">
<div class="list-label <?= $article->art_table ?>"><?= $article->label ?></div>
<div class="list-title top20">
<a href="<?= ViewReg::generateDetailPageUrl($article) ?>">
<?= $article->article->title() ?>
</a>
</div>
<div class="list-text text-limit-8 top20"><?= strip_tags($article->article->textShort()) ?></div>
</div>
</div>
</div>
<?php endif; ?>
<?php endforeach; ?>
</div>
@@ -0,0 +1,154 @@
<?php
use app\models\register\Collections;
use app\models\register\CollectionsObjects;
use app\models\register\Fields;
use app\models\register\ObjectTags;
use app\models\RegisterObjects;
$lg = Yii::$app->language;
$per_page = 12;
$page = $_GET['page'] ?? 1;
/**
* @var \yii\web\View $this
*/
if (!empty($_GET['advance_filter']) || !empty($_GET['tags'])) {
$objects = RegisterObjects::find();
$objects = $objects->select('register_objects.ref_num')->where(['lib_type' => 1]);
$conditionOr = ['or'];
//[ FILTER BY NAME ]
if (!empty($_GET['object_name'])) {
$conditionOr[] = ['=', 'name', $_GET['object_name']];
$conditionOr[] = ['=', 'ts_en_name', $_GET['object_name']];
}
//[ FILTER BY CREATOR ]
if (!empty($_GET['created_by'])) {
$conditionOr[] = ['=', 'created_by', $_GET['created_by']];
}
$conditionAnd = ['and'];
//[ FILTER BY YEAR FROM ]
if (!empty($_GET['year_from'])) {
$conditionAnd[] = ['>=', 'created_year', $_GET['year_from']];
}
//[ FILTER BY YEAR TO ]
if (!empty($_GET['year_to'])) {
$conditionAnd[] = ['<=', 'created_year', $_GET['year_to']];
}
//region [FILTER BY OBJECT FIELDS]
$fields = Fields::find()->where(['lib_type' => 1, 'active' => 1, 'deleted' => 0])->all();
$objectFieldIdArray = [];
$objectFieldValueTextArray = [];
foreach ($fields as $field) {
if (!empty($_GET['name_id_' . $field->id]))
$objectFieldIdArray[] = $_GET['name_id_' . $field->id];
if (!empty($_GET['name_text_' . $field->id]))
$objectFieldValueTextArray[] = $_GET['name_text_' . $field->id];
}
if (sizeof($objectFieldIdArray) > 0 || sizeof($objectFieldValueTextArray) > 0) {
$objects = $objects->joinWith('registerObjectFields');
}
if(sizeof($objectFieldIdArray) > 0) {
$conditionOr[] = ['IN', 'value_id', $objectFieldIdArray];
}
if(sizeof($objectFieldValueTextArray) > 0) {
foreach ($objectFieldValueTextArray as $value) {
$conditionOr[] = ['=', 'value_text', $value];
}
}
$objectIds = [];
if($conditionOr != ['or'] || $conditionAnd != ['and']) {
$objects = $objects->andWhere($conditionOr ?? [])->andWhere($conditionAnd ?? [])->all();
foreach ($objects as $object) {
$objectIds[] = $object->ref_num;
}
}
if(!empty($_GET['tags'])) {
$tags = explode(',', $_GET['tags']);
$objectTags = ObjectTags::find()->where(['IN', 'tag_id', $tags])->andWhere(['active' => 1, 'deleted' => 0])->all();
foreach ($objectTags as $objectTag) {
if(!in_array($objectTag->object_id, $objectIds)) {
$objectIds[] = $objectTag->object_id;
}
}
}
$collectionObjectConditionAnd = ['and'];
$collectionObjectConditionAnd[] = ['IN', 'object_id', $objectIds];
$collectionObjectConditionAnd[] = ['=', 'deleted', 0];
$collectionObjectConditionAnd[] = ['=', 'active', 1];
$collectionObjectConditionAnd[] = ['=', 'published', 1];
if (!empty($_GET['partner_id']))
$collectionObjectConditionAnd[] = ['=', 'partner_id', $_GET['partner_id']];
$collectionObjectConditionOr = ['or'];
$collectionObjectConditionOr[] = ['IS', 'is_payable', NULL];
$collectionObjectConditionOr[] = ['=', 'is_payable', 0];
$collectionObjects = CollectionsObjects::find()->joinWith('collection')
->where($collectionObjectConditionOr)
->andWhere($collectionObjectConditionAnd)
->groupBy('collection_id');
$count = $collectionObjects->count();
if ($count <= $per_page) $page = 1;
$collectionObjects->offset($per_page * $page - $per_page)->limit($per_page);
if (!empty($_GET['order_title'])) {
$collectionObjects = $collectionObjects->orderBy([$_GET['order_title'] => SORT_ASC]);
} else {
$collectionObjects = $collectionObjects->orderBy(['id' => SORT_DESC]);
}
//region DISPLAY DATA
$count = $collectionObjects->count();
$html = $this->render('list_collection_sq_by_filter_partial', ['collectionObjects' => $collectionObjects->all()]);
echo json_encode([
'html' => $html,
'pages_count' => ceil($count / $per_page),
'current_page' => (int)$page
]);
//endregion
} else {
$collections = Collections::find()->where(['or', ['=', 'is_payable', 0], ['IS', 'is_payable', null]])
->andWhere(['deleted' => 0, 'active' => 1, 'published' => 1]);
if (!empty($_GET['partner_id'])) {
$collections = $collections->andWhere(['partner_id' => $_GET['partner_id']]);
}
$collections = $collections->offset($per_page * $page - $per_page)->limit($per_page);
if (!empty($_GET['order_title'])) {
$collections = $collections->orderBy([$_GET['order_title'] => SORT_ASC]);
} else {
$collections = $collections->orderBy(['id' => SORT_DESC]);
}
$count = $collections->count();
$html = $this->render('list_collection_sq_partial', ['collections' => $collections->all()]);
echo json_encode([
'html' => $html,
'pages_count' => ceil($count / $per_page),
'current_page' => (int)$page
]);
}
@@ -0,0 +1,38 @@
<?php
/**
* @var \app\models\register\CollectionsObjects[] $collectionObjects
*/
use app\services\ViewReg;
use app\models\Ts;
?>
<link rel="stylesheet" href="/_public/assets/css/user.css">
<div class="content collection" style="position: relative; display: flex; flex-wrap: nowrap; flex-direction: row-reverse;">
<div class="collection-greed library <?= !empty($_GET['advance_filter']) ? 'filter-open' : '' ?>">
<div class="content-out gallery">
<?php for ($i = 0; $i < 9; $i++): ?>
<div class="gallery__item gallery__item--<?= $i ?>">
<?php if (!empty($collectionObjects[$i])):
$collectionObject = $collectionObjects[$i]; ?>
<a href="<?= $collectionObject->collection->getUrl() ?>">
<img style="width: 100%" src="<?= $collectionObject->collection->getImg() ?>" class="gallery__img"
alt="<?= $collectionObject->collection->title() ?>">
<div class="gallery__item_title">
<?= $collectionObject->collection->title() ?>
</div>
</a>
<?php endif; ?>
</div>
<?php endfor; ?>
</div>
</div>
<div class="filter-panel <?= !empty($_GET['advance_filter']) ? 'show' : '' ?>">
<div class="row ct">
<button onclick="filterApply()" class="profile-submit gradient ct"><?= Ts::get(164) ?></button>
<button onclick="filterClear()" class="profile-submit gradient ct"><?= Ts::get(165) ?></button>
</div>
<?= $this->render('list_collection_filter') ?>
</div>
</div>
@@ -0,0 +1,149 @@
<?php
use app\models\register\Tags;
use app\models\Ts;
use app\models\register\Fields;
$lg = Yii::$app->language;
$translateModule = [
'object_name' => [
'bg' => 'Име на обект',
'en' => 'Object name'
],
'object_creator' => [
'bg' => 'Създател на обект',
'en' => 'Object creator'
],
'year' => [
'bg' => 'Година',
'en' => 'Year'
],
'from' => ['bg' => 'От', 'en' => 'From'],
'to' => ['bg' => 'До', 'en' => 'To'],
];
?>
<div>
<p class="ct"><?= Ts::get(184) ?>:</p>
</div>
<!-- FROM OBJECT -->
<div class="row top10">
<label><?= $translateModule['object_name'][$lg]?></label>
<input data-filter-input="object_name"
value="<?= $_GET['object_name'] ?? '' ?>"
placeholder="">
<?php if (!empty($_GET['object_name'])): ?>
<div onclick="clearSingle(this)" class="clear-single"><i onclick="" class="la la-times"></i></div>
<?php endif; ?>
</div>
<div class="row top10">
<label><?= $translateModule['object_creator'][$lg] ?></label>
<input data-filter-input="created_by" value="<?= $_GET['created_by'] ?? '' ?>" placeholder="">
<?php if (!empty($_GET['created_by'])): ?>
<div onclick="clearSingle(this)" class="clear-single"><i onclick="" class="la la-times"></i></div>
<?php endif; ?>
</div>
<div class="row top10">
<label><?= $translateModule['year'][$lg] ?></label>
<div class="flex">
<div>
<div class="flex">
<input data-filter-input="year_from" value="<?= $_GET['year_from'] ?? '' ?>"
placeholder="<?= $translateModule['from'][$lg]?>">
<?php if (!empty($_GET['year_from'])): ?>
<div onclick="clearSingle(this)" class="clear-single"><i onclick="" class="la la-times"></i></div>
<?php endif; ?>
</div>
</div>
<div>
<div class="flex">
<input data-filter-input="year_to" value="<?= $_GET['year_to'] ?? '' ?>"
placeholder="<?=$translateModule['to'][$lg]?>">
<?php if (!empty($_GET['year_to'])): ?>
<div onclick="clearSingle(this)" class="clear-single"><i onclick="" class="la la-times"></i></div>
<?php endif; ?>
</div>
</div>
</div>
</div>
<!-- FROM FIELDS field_type = 2 (GENERAL) -->
<?php $general = Fields::find()->where(['lib_type' => 1, 'field_type' => 2])->andWhere(['>', 'level', 0])->all(); ?>
<?php foreach ($general as $item): ?>
<div class="row top10">
<label><?= $item->{$lg == 'en' ? 'name_en': 'name'} ?></label>
<div class="flex">
<?php if ($item->type == 1): ?>
<select class="category-field" onchange="loadSpecificCollectionFilter(this)"
data-filter-input="name_id_<?= $item->id ?>">
<option value=""></option>
<?php foreach ($item->fieldsValues as $fv): ?>
<?php if ($fv): ?>
<option <?= !empty($_GET['name_id_' . $item->id]) && $_GET['name_id_' . $item->id] == $fv->id ? 'selected' : '' ?>
value="<?= $fv['id'] ?? '' ?>"><?= $fv->getNameByLocale() ?></option>
<?php endif; ?>
<?php endforeach; ?>
</select>
<?php if (!empty($_GET['name_id_' . $item->id])): ?>
<div onclick="clearSingle(this)" class="clear-single"><i onclick="" class="la la-times"></i></div>
<?php endif; ?>
<?php else: ?>
<input data-filter-input="name_text_<?= $item->id ?>"
value="<?= $_GET['name_text_' . $item->id] ?? '' ?>"
placeholder="">
<?php if (!empty($_GET['name_text_' . $item->id])): ?>
<div onclick="clearSingle(this)" class="clear-single"><i onclick="" class="la la-times"></i></div>
<?php endif; ?>
<?php endif; ?>
</div>
</div>
<?php endforeach; ?>
<!-- FROM FIELDS field_type = 3 (CATEGORIES) -->
<?php $categories = Fields::find()->where(['lib_type' => 1, 'field_type' => 3])->andWhere(['>', 'level', 0])->all(); ?>
<?php foreach ($categories as $item): ?>
<div class="row top10">
<label><?= $item->{$lg == 'en' ? 'name_en': 'name'} ?></label>
<!-- DROP DOWN -->
<?php if ($item->type == 1): ?>
<div class="flex">
<select class="category-field" onchange="loadSpecificCollectionFilter(this)"
data-filter-input="name_id_<?= $item->id ?>">
<option value=""></option>
<?php foreach ($item->fieldsValues as $fv): ?>
<?php if ($fv): ?>
<option <?= !empty($_GET['name_id_' . $item->id]) && $_GET['name_id_' . $item->id] == $fv->id ? 'selected' : '' ?>
value="<?= $fv['id'] ?? '' ?>"><?= $fv->getNameByLocale() ?></option>
<?php endif; ?>
<?php endforeach; ?>
</select>
<?php if (!empty($_GET['name_id_' . $item->id])): ?>
<div onclick="clearSingle(this)" class="clear-single"><i onclick="" class="la la-times"></i></div>
<?php endif; ?>
</div>
<div data-content-id="name_id_<?= $item->id ?>">
<?php if (!empty($_GET['name_id_' . $item->id])): ?>
<?= $this->render('specific_filter', ['parent_id' => $_GET['name_id_' . $item->id], 'content_lib_type' => 1]) ?>
<?php endif; ?>
</div>
<?php else: ?>
<!-- /DROP DOWN -->
<!-- INPUT FIELD -->
<div class="flex">
<input data-filter-input="name_text_<?= $item->id ?>"
value="<?= $_GET['name_text_' . $item->id] ?? '' ?>"
placeholder="">
<?php if (!empty($_GET['name_text_' . $item->id])): ?>
<div onclick="clearSingle(this)" class="clear-single"><i onclick="" class="la la-times"></i></div>
<?php endif; ?>
</div>
<!-- /INPUT FIELD -->
<?php endif; ?>
</div>
<?php endforeach; ?>
@@ -0,0 +1,33 @@
<?php
use app\models\Articles;
$lg = Yii::$app->language;
$per_page = 12;
$page = $_GET['page'] ?? 1;
/**
* @var \yii\web\View $this
*/
?>
<?php
$collectionsObjects = \app\models\register\CollectionsObjects::find()->where(['collection_id' => $_GET['collection_id']]);
$collectionsObjects = $collectionsObjects->offset($per_page * $page - $per_page)->limit($per_page);
$count = $collectionsObjects->count();
$objects = [];
/** @var \app\models\register\CollectionsObjects $collectionsObject */
foreach ($collectionsObjects->all() as $collectionsObject) {
if ($collectionsObject->object)
$objects[] = $collectionsObject->object;
}
$html = $this->render('list_collection_objects_partial', ['objects' => $objects, 'collection' => \app\models\register\Collections::findOne($_GET['collection_id'])]);
echo json_encode([
'html' => $html,
'pages_count' => ceil($count / $per_page),
'current_page' => (int)$page
])
?>
@@ -0,0 +1,41 @@
<?php
use app\models\Articles;
$lg = Yii::$app->language;
$per_page = 12;
$page = $_GET['page'] ?? 1;
/**
* @var $object_id
*/
/**
* @var \yii\web\View $this
*/
?>
<?php
$objectFiles = \app\models\RegisterObjectFiles::find()
->where(['object_id' => $object_id, 'file_content_type' => 4])
->andWhere(['IS NOT', 'streaming_url', NULL]);
$objectFiles = $objectFiles->offset($per_page * $page - $per_page)->limit($per_page);
$count = $objectFiles->count();
$files = [];
/** @var \app\models\RegisterObjectFiles $objectFile */
foreach ($objectFiles->all() as $objectFile) {
$files[] = $objectFile;
}
$html = $this->render('list_collection_objects_models_partial', ['files' => $files]);
echo json_encode([
'html' => $html,
'pages_count' => ceil($count / $per_page),
'current_page' => (int)$page
])
?>
@@ -0,0 +1,23 @@
<?php
/**
* @var \app\models\RegisterObjectFiles[] $files
* @var $start
* @var $end
*/
use app\services\JWT;
$lg = Yii::$app->language;
?>
<?php foreach ($files as $video): ?>
<?php if ($video->file_url): ?>
<div onclick="load3dModel(this)" data-model-3d="<?= Yii::$app->params['media_server'] . '/api/render-model/' . JWT::encode(['id' => $video->id], JWT::SECRET_KEY) . '/?lg='.$lg ?>"
class="gallery__item video-thumb-container">
<div class="img-box">
<i class="play-icon la la-cube"></i>
</div>
<div class="video-thumb-title"><?= $video->video_title ?></div>
</div>
<?php endif; ?>
<?php endforeach; ?>
@@ -0,0 +1,38 @@
<?php
/**
* @var \app\models\RegisterObjects[] $objects
* @var \app\models\register\Collections $collection
* @var $start
* @var $end
*/
use app\models\Ts;
Ts::set([40]);
?>
<?php
for ($index = 0; $index < 12; $index++): ?>
<?php if (!empty($objects[$index])): ?>
<div class="gallery__item">
<?php /** @var \app\models\RegisterObjects $object */
$object = $objects[$index]; ?>
<a href="<?= $object->getCollectionUrl($collection) ?>" class="img-box">
<img style="width: 100%" src="<?= $object->getImg() ?>" class="gallery__img"
alt="<?= $object->getTitle() ?>">
<div class="gallery__item_title">
<?= $object->getTitle() ?>
</div>
</a>
<div class="hidden-grid-part">
<div class="title"><a href="<?= $object->getCollectionUrl($collection) ?>"><?= $object->getTitle() ?></a></div>
<div class="annotation"><?= $object->getAnnotation() ?></div>
<div class="link"><?= Ts::get(40) ?></div>
</div>
</div>
<?php else: ?>
<?php endif; ?>
<?php endfor; ?>
@@ -0,0 +1,41 @@
<?php
use app\models\Articles;
$lg = Yii::$app->language;
$per_page = 12;
$page = $_GET['page'] ?? 1;
/**
* @var $object_id
*/
/**
* @var \yii\web\View $this
*/
?>
<?php
$objectFiles = \app\models\RegisterObjectFiles::find()
->where(['object_id' => $object_id, 'file_content_type' => 3])
->andWhere(['IS NOT', 'streaming_url', NULL]);
$objectFiles = $objectFiles->offset($per_page * $page - $per_page)->limit($per_page);
$count = $objectFiles->count();
$files = [];
/** @var \app\models\RegisterObjectFiles $objectFile */
foreach ($objectFiles->all() as $objectFile) {
$files[] = $objectFile;
}
$html = $this->render('list_collection_objects_videos_partial', ['files' => $files]);
echo json_encode([
'html' => $html,
'pages_count' => ceil($count / $per_page),
'current_page' => (int)$page
])
?>
@@ -0,0 +1,24 @@
<?php
/**
* @var \app\models\RegisterObjectFiles[] $files
* @var $start
* @var $end
*/
use app\services\JWT;
?>
<?php foreach ($files as $video): ?>
<?php if ($video->streaming_url): ?>
<div data-id="<?= JWT::encode(['id' => $video->id], JWT::SECRET_KEY) ?>" onclick="streamFrame(this)"
class="gallery__item video-thumb-container">
<div class="img-box">
<img style="width: 100%" src="<?= $video->videoThumbnail() ?>" class="gallery__img video-thumb"
alt="<?= $video->video_title ?>">
<i class="play-icon la la-play-circle"></i>
</div>
<div class="video-thumb-title"><?= $video->video_title ?></div>
</div>
<?php endif; ?>
<?php endforeach; ?>
@@ -0,0 +1,38 @@
<?php
/**
* @var \app\models\register\Collections[] $collections
*/
use app\services\ViewReg;
use app\models\Ts;
?>
<link rel="stylesheet" href="/_public/assets/css/user.css">
<div class="content collection" style="position: relative; display: flex; flex-wrap: nowrap; flex-direction: row-reverse;">
<div class="collection-greed library <?= !empty($_GET['advance_filter']) ? 'filter-open' : '' ?>">
<div class="content-out gallery">
<?php for ($i = 0; $i < 9; $i++): ?>
<div class="gallery__item gallery__item--<?= $i ?>">
<?php if (!empty($collections[$i])):
$collection = $collections[$i]; ?>
<a href="<?= $collection->getUrl() ?>">
<img style="width: 100%" src="<?= $collection->getImg() ?>" class="gallery__img"
alt="<?= $collection->title() ?>">
<div class="gallery__item_title">
<?= $collection->title() ?>
</div>
</a>
<?php endif; ?>
</div>
<?php endfor; ?>
</div>
</div>
<div class="filter-panel <?= !empty($_GET['advance_filter']) ? 'show' : '' ?>">
<div class="row ct">
<button onclick="filterApply()" class="profile-submit gradient ct"><?= Ts::get(164) ?></button>
<button onclick="filterClear()" class="profile-submit gradient ct"><?= Ts::get(165) ?></button>
</div>
<?= $this->render('list_collection_filter') ?>
</div>
</div>
@@ -0,0 +1,36 @@
<?php
/**
* @var \app\models\register\CollectionsObjects[] $collectionObjects
*/
use app\services\ViewReg;
use app\models\Ts;
?>
<link rel="stylesheet" href="/_public/assets/css/collection-objects-greed.css">
<div class="content collection" style="position: relative; display: flex; flex-wrap: nowrap; flex-direction: row-reverse;">
<div class="collection-greed library <?= !empty($_GET['advance_filter']) ? 'filter-open' : '' ?>">
<div class="content-out gallery" id="list-article">
<?php foreach ($collectionObjects as $i => $collectionObject):
$collection = $collectionObject->collection;
?>
<div class="gallery__item">
<a href="<?= $collection->getUrl() ?>" class="img-box">
<img style="width: 100%" src="<?= $collection->getImg() ?>" class="gallery__img"
alt="<?= $collection->title() ?>">
<div class="gallery__item_title">
<?= $collection->title() ?>
</div>
</a>
</div>
<?php endforeach; ?>
</div>
</div>
<div class="filter-panel <?= !empty($_GET['advance_filter']) ? 'show' : '' ?>">
<div class="row ct">
<button onclick="filterApply()" class="profile-submit gradient ct"><?= Ts::get(164) ?></button>
<button onclick="filterClear()" class="profile-submit gradient ct"><?= Ts::get(165) ?></button>
</div>
<?= $this->render('list_collection_filter') ?>
</div>
</div>
@@ -0,0 +1,36 @@
<?php
/**
* @var \app\models\register\Collections[] $collections
*/
use app\services\ViewReg;
use app\models\Ts;
?>
<link rel="stylesheet" href="/_public/assets/css/collection-objects-greed.css">
<div class="content collection"
style="position: relative; display: flex; flex-wrap: nowrap; flex-direction: row-reverse;">
<div class="collection-greed library <?= !empty($_GET['advance_filter']) ? 'filter-open' : '' ?>">
<div class="content-out gallery" id="list-article">
<?php foreach ($collections as $i => $collection): ?>
<div class="gallery__item">
<a href="<?= $collection->getUrl() ?>" class="img-box">
<img style="width: 100%" src="<?= $collection->getImg() ?>" class="gallery__img"
alt="<?= $collection->title() ?>">
<div class="gallery__item_title">
<?= $collection->title() ?>
</div>
</a>
</div>
<?php endforeach; ?>
</div>
</div>
<div class="filter-panel <?= !empty($_GET['advance_filter']) ? 'show' : '' ?>">
<div class="row ct">
<button onclick="filterApply()" class="profile-submit gradient ct"><?= Ts::get(164) ?></button>
<button onclick="filterClear()" class="profile-submit gradient ct"><?= Ts::get(165) ?></button>
</div>
<?= $this->render('list_collection_filter') ?>
</div>
</div>
@@ -0,0 +1,114 @@
<?php
use app\models\register\Fields;
use app\models\RegisterObjects;
//echo json_encode($_GET);
//exit;
$lg = Yii::$app->language;
$per_page = 9;
$page = $_GET['page'] ?? 1
/**
* @var \yii\web\View $this
*/
?>
<?php
$library = RegisterObjects::find()
->where(['lib_type' => 2, 'is_active' => 1]);
//if (!empty($_GET['partner_id'])) {
// $library = $library->joinWith('projectPartners')->where(['partner_id' => $_GET['partner_id']]);
//}
$filter = ['or'];
exit;
if(!empty($_GET['search'])) {
exit;
$library->andWhere(['LIKE', 'name', $_GET['search']]);
}
/*
if (!empty($_GET['book_name'])) {
$filter[] = ['like', 'name', $_GET['book_name']];
$filter[] = ['like', 'ts_en_name', $_GET['book_name']];
}
if(!empty($_GET['created_by'])) {
$filter[] = ['like', 'created_by', $_GET['created_by']];
}
$library = $library->andWhere($filter);
$filter2 = [];
if(!empty($_GET['year_from']) || !empty($_GET['year_to'])) {
$filter2[] = 'and';
}
if(!empty($_GET['year_from'])) {
$filter2[] = ['>=', 'created_year', $_GET['year_from']];
}
if(!empty($_GET['year_to'])) {
$filter2[] = ['<=', 'created_year', $_GET['year_to']];
}
$library = $library->andWhere($filter2);
$main = Fields::find()->where(['lib_type' => 2])->all();
$prepare = [
'field_id' => [],
'value_id' => [],
];
$prepare2 = [];
foreach ($main as $item) {
if(!empty($_GET['name_id_' . $item->id])) {
$prepare['field_id'][] = $item->id;
$prepare['value_id'][] = $_GET['name_id_' . $item->id];
}
if(!empty($_GET['name_text_' . $item->id])) {
$prepare2[$item->id] = $_GET['name_text_' . $item->id];
}
}
if(sizeof($prepare['value_id']) > 0 ) {
$library = $library->joinWith('registerObjectFields')->andWhere(['IN', 'value_id', $prepare['value_id']]);
}
if(sizeof($prepare2) > 0) {
$loop = ['or'];
foreach ($prepare2 as $field_id => $value) {
$loop[] = ['field_id' => $field_id, 'value_text' => $value];
}
$library = $library->joinWith('registerObjectFields')->andWhere($loop);
}
*/
if (!empty($_GET['order_title'])) {
$library = $library->orderBy([$_GET['order_title'] => SORT_ASC]);
} else {
$library = $library->orderBy(['publish_date' => SORT_ASC]);
}
$count = $library->count();
$library = $library->offset($per_page * $page - $per_page)->limit($per_page);
if ($count <= $per_page) {
$page = 1;
}
$library = $library->offset($per_page * $page - $per_page)->limit($per_page);
$html = $this->render('list_e_library_partial', ['library' => $library->all()]);
$pages_count = ceil($count / $per_page);
echo json_encode([
'html' => $html,
'pages_count' => $pages_count,
'current_page' => (int)$page
])
?>
@@ -0,0 +1,148 @@
<?php
use app\models\Ts;
use app\models\register\Fields;
$lg = Yii::$app->language;
$translateModule = [
'object_name' => [
'bg' => 'Име на обект',
'en' => 'Object name'
],
'object_creator' => [
'bg' => 'Създател на обект',
'en' => 'Object creator'
],
'year' => [
'bg' => 'Година',
'en' => 'Year'
],
'from' => ['bg' => 'От', 'en' => 'From'],
'to' => ['bg' => 'До', 'en' => 'To'],
];
?>
<div class="row top10">
<label><?= Ts::get(155) ?></label>
<div class="flex">
<input data-filter-input="book_name" value="<?= $_GET['book_name'] ?? '' ?>"
placeholder="<?= Ts::get(155) ?>">
<?php if (!empty($_GET['book_name'])): ?>
<div onclick="clearSingle(this)" class="clear-single"><i onclick="" class="la la-times"></i></div>
<?php endif; ?>
</div>
</div>
<div class="row top10">
<label><?= Ts::get(162) ?></label>
<div class="flex">
<input data-filter-input="created_by" value="<?= $_GET['created_by'] ?? '' ?>"
placeholder="<?= Ts::get(162) ?>">
<?php if (!empty($_GET['created_by'])): ?>
<div onclick="clearSingle(this)" class="clear-single"><i onclick="" class="la la-times"></i></div>
<?php endif; ?>
</div>
</div>
<div class="row top10">
<label><?= $translateModule['year'][$lg] ?></label>
<div class="flex">
<div>
<div class="flex">
<input data-filter-input="year_from" value="<?= $_GET['year_from'] ?? '' ?>"
placeholder="<?= $translateModule['from'][$lg] ?>">
<?php if (!empty($_GET['year_from'])): ?>
<div onclick="clearSingle(this)" class="clear-single"><i onclick="" class="la la-times"></i></div>
<?php endif; ?>
</div>
</div>
<div>
<div class="flex">
<input data-filter-input="year_to" value="<?= $_GET['year_to'] ?? '' ?>"
placeholder="<?= $translateModule['to'][$lg] ?>">
<?php if (!empty($_GET['year_to'])): ?>
<div onclick="clearSingle(this)" class="clear-single"><i onclick="" class="la la-times"></i></div>
<?php endif; ?>
</div>
</div>
</div>
</div>
<div class="row top10">
<label><?= Ts::get(162) ?></label>
<div class="flex">
<input data-filter-input="description" value="<?= $_GET['description'] ?? '' ?>"
placeholder="<?= Ts::get(162) ?>">
<?php if (!empty($_GET['description'])): ?>
<div onclick="clearSingle(this)" class="clear-single"><i onclick="" class="la la-times"></i></div>
<?php endif; ?>
</div>
</div>
<?php $general = Fields::find()->where(['lib_type' => 2, 'field_type' => 2])->all(); ?>
<?php foreach ($general as $item): ?>
<div class="row top10">
<label><?= $item->{$lg == 'en' ? 'name_en' : 'name'} ?></label>
<div class="flex">
<?php if ($item->type == 1): ?>
<select class="category-field" onchange="loadSpecificFilter(this)"
data-filter-input="name_id_<?= $item->id ?>">
<option value=""></option>
<?php foreach ($item->fieldsValues as $fv): ?>
<?php if ($fv): ?>
<option <?= !empty($_GET['name_id_' . $item->id]) && $_GET['name_id_' . $item->id] == $fv->id ? 'selected' : '' ?>
value="<?= $fv['id'] ?? '' ?>"><?= $fv->getNameByLocale() ?></option>
<?php endif; ?>
<?php endforeach; ?>
</select>
<?php if (!empty($_GET['name_id_' . $item->id])): ?>
<div onclick="clearSingle(this)" class="clear-single"><i onclick="" class="la la-times"></i></div>
<?php endif; ?>
<?php else: ?>
<input data-filter-input="name_text_<?= $item->id ?>"
value="<?= $_GET['name_text_' . $item->id] ?? '' ?>"
placeholder="">
<?php if (!empty($_GET['name_text_' . $item->id])): ?>
<div onclick="clearSingle(this)" class="clear-single"><i onclick="" class="la la-times"></i></div>
<?php endif; ?>
<?php endif; ?>
</div>
</div>
<?php endforeach; ?>
<?php $categories = Fields::find()->where(['lib_type' => 2, 'field_type' => 3])->all(); ?>
<?php foreach ($categories as $item): ?>
<div class="row top10">
<label><?= $item->{$lg == 'en' ? 'name_en' : 'name'} ?></label>
<?php if ($item->type == 1): ?>
<div class="flex">
<select class="category-field" onchange="loadSpecificFilter(this)"
data-filter-input="name_id_<?= $item->id ?>">
<option value=""></option>
<?php foreach ($item->fieldsValues as $fv): ?>
<?php if ($fv): ?>
<option <?= !empty($_GET['name_id_' . $item->id]) && $_GET['name_id_' . $item->id] == $fv->id ? 'selected' : '' ?>
value="<?= $fv['id'] ?? '' ?>"><?= $fv->getNameByLocale() ?></option>
<?php endif; ?>
<?php endforeach; ?>
</select>
<?php if (!empty($_GET['name_id_' . $item->id])): ?>
<div onclick="clearSingle(this)" class="clear-single"><i onclick="" class="la la-times"></i></div>
<?php endif; ?>
</div>
<div data-content-id="name_id_<?= $item->id ?>">
<?php if(!empty($_GET['name_id_' . $item->id])): ?>
<?= $this->render('specific_filter', ['parent_id' => $_GET['name_id_' . $item->id]]) ?>
<?php endif; ?>
</div>
<?php else: ?>
<div class="flex">
<input data-filter-input="name_text_<?= $item->id ?>"
value="<?= $_GET['name_text_' . $item->id] ?? '' ?>"
placeholder="">
<?php if (!empty($_GET['name_text_' . $item->id])): ?>
<div onclick="clearSingle(this)" class="clear-single"><i onclick="" class="la la-times"></i></div>
<?php endif; ?>
<?php endif; ?>
</div>
</div>
<?php endforeach; ?>
<?php
?>
@@ -0,0 +1,202 @@
<?php
use app\services\ELibraryModels;
$lg = Yii::$app->language;
$translateModule = [
'object_name' => [
'bg' => 'Име на обект',
'en' => 'Object name'
],
'object_creator' => [
'bg' => 'Създател на обект',
'en' => 'Object creator'
],
'year' => [
'bg' => 'Година на публикуване',
'en' => 'Year'
],
'from' => ['bg' => 'От', 'en' => 'From'],
'to' => ['bg' => 'До', 'en' => 'To'],
'type' => ['bg' => 'Вид издание', 'en' => 'Edition type'],
'format' => ['bg' => 'Формат', 'en' => 'Format'],
'identifier' => ['bg' => 'Идентификатор', 'en' => 'Identifier'],
'language' => ['bg' => 'Език', 'en' => 'Language'],
'license' => ['bg' => 'Лиценз', 'en' => 'License'],
'copyright' => ['bg' => 'Авторски права', 'en' => 'Copyright'],
'partner' => ['bg' => 'Партньор', 'en' => 'Partner']
];
$lIndex = $lg == 'en' ? 1 : 0;
?>
<div class="row top10">
<label><?= $lg == 'en' ? 'Search' : 'Търсене' ?></label>
<div class="flex"><input data-filter-input="search" value="<?= $_GET['search'] ?? '' ?>">
<?php if (!empty($_GET['search'])): ?>
<div onclick="clearSingle(this)" class="clear-single"><i class="la la-times"></i></div>
<?php endif; ?>
</div>
</div>
<div class="row top10">
<label><?= $translateModule['year'][$lg] ?></label>
<div class="flex">
<input data-filter-input="year" value="<?= $_GET['year'] ?? '' ?>" placeholder="">
<?php if (!empty($_GET['year'])): ?>
<div onclick="clearSingle(this)" class="clear-single"><i class="la la-times"></i></div>
<?php endif; ?>
</div>
</div>
<div class="row top10">
<label><?= $translateModule['type'][$lg] ?></label>
<div class="flex">
<select data-filter-input="lib_type">
<option value="">-<?= $lg == 'en' ? 'choose' : 'избери' ?>-</option>
<?php foreach (ELibraryModels::$lib_types as $key => $lib_type): ?>
<option <?= !empty($_GET['lib_type']) && $_GET['lib_type'] == $key ? 'selected' : '' ?>
value="<?= $key ?>"><?= $lib_type[$lIndex] ?></option>
<?php endforeach ?>
</select>
<?php if (!empty($_GET['lib_type'])): ?>
<div onclick="clearSingle(this)" class="clear-single"><i class="la la-times"></i></div>
<?php endif; ?>
</div>
</div>
<div class="row top10">
<label><?= $translateModule['format'][$lg] ?></label>
<div class="flex">
<select data-filter-input="lib_format">
<option value="">-<?= $lg == 'en' ? 'choose' : 'избери' ?>-</option>
<?php foreach (ELibraryModels::$lib_format_opt as $key => $lib_format): ?>
<option <?= !empty($_GET['lib_format']) && $_GET['lib_format'] == $key ? 'selected' : '' ?>
value="<?= $key ?>"><?= $lib_format[$lIndex] ?></option>
<?php endforeach ?>
</select>
<?php if (!empty($_GET['lib_format'])): ?>
<div onclick="clearSingle(this)" class="clear-single"><i class="la la-times"></i></div>
<?php endif; ?>
</div>
</div>
<div class="row top10">
<label><?= $translateModule['identifier'][$lg] ?></label>
<div class="flex">
<input data-filter-input="identifier" value="<?= $_GET['identifier'] ?? '' ?>" placeholder="">
<?php if (!empty($_GET['identifier'])): ?>
<div onclick="clearSingle(this)" class="clear-single"><i class="la la-times"></i></div>
<?php endif; ?>
</div>
</div>
<div class="row top10">
<label><?= $translateModule['language'][$lg] ?></label>
<div class="flex">
<select data-filter-input="lib_language">
<option value="">-<?= $lg == 'en' ? 'choose' : 'избери' ?>-</option>
<?php foreach (ELibraryModels::$lib_language_opt as $key => $lib_language): ?>
<option <?= !empty($_GET['lib_language']) && $_GET['lib_language'] == $key ? 'selected' : '' ?>
value="<?= $key ?>"><?= $lib_language[$lIndex] ?? $lib_language[0] ?></option>
<?php endforeach ?>
</select>
<?php if (!empty($_GET['lib_language'])): ?>
<div onclick="clearSingle(this)" class="clear-single"><i class="la la-times"></i></div>
<?php endif; ?>
</div>
</div>
<div class="row top10">
<label><?= $translateModule['license'][$lg] ?></label>
<div class="flex">
<select data-filter-input="lib_license">
<option value="">-<?= $lg == 'en' ? 'choose' : 'избери' ?>-</option>
<?php foreach (ELibraryModels::$lib_licenses as $key => $lib_lic): ?>
<option <?= !empty($_GET['lib_license']) && $_GET['lib_license'] == $key ? 'selected' : '' ?>
value="<?= $key ?>"><?= $lib_lic[$lIndex] ?? $lib_lic[0] ?></option>
<?php endforeach ?>
</select>
<?php if (!empty($_GET['lib_license'])): ?>
<div onclick="clearSingle(this)" class="clear-single"><i class="la la-times"></i></div>
<?php endif; ?>
</div>
</div>
<div class="row top10">
<label><?= $translateModule['copyright'][$lg] ?></label>
<div class="flex">
<select data-filter-input="lib_rights">
<option value="">-<?= $lg == 'en' ? 'choose' : 'избери' ?>-</option>
<?php foreach (ELibraryModels::$lib_rights as $key => $lib_right): ?>
<option <?= !empty($_GET['lib_rights']) && $_GET['lib_rights'] == $key ? 'selected' : '' ?>
value="<?= $key ?>"><?= $lib_right[$lIndex] ?? $lib_right[0] ?></option>
<?php endforeach ?>
</select>
<?php if (!empty($_GET['lib_license'])): ?>
<div onclick="clearSingle(this)" class="clear-single"><i class="la la-times"></i></div>
<?php endif; ?>
</div>
</div>
<?php if(empty($_GET['partner_id'])): ?>
<div class="row top10">
<label><?= $translateModule['partner'][$lg] ?></label>
<div class="flex">
<select data-filter-input="partner">
<option value="">-<?= $lg == 'en' ? 'choose' : 'избери' ?>-</option>
<?php foreach (\app\models\register\Partner::partnerList() as $id => $partner): ?>
<option <?= !empty($_GET['partner']) && $_GET['partner'] == $id ? 'selected' : '' ?>
value="<?= $id ?>"><?= $partner ?></option>
<?php endforeach ?>
</select>
<?php if (!empty($_GET['partner'])): ?>
<div onclick="clearSingle(this)" class="clear-single"><i class="la la-times"></i></div>
<?php endif; ?>
</div>
</div>
<?php endif; ?>
<?php
//търсенето е по Заглавие, Реф. N и Идентификатор (в 7-те идентификатора)
//В Портала:
//Търсенето в списъка да бъде реализирано като има общо поле за търсене, което търси написания текст едновременно в следните полета: Автор,
// Друга авторска отговорност, Заглавие, Допълнение към заглавието, Паралелно заглавие, Място на публикуване, Издател,
// Резюме, Ключови думи, Заглавие на източник (всички полета, които имат търсене по ключови думи в колонката Търсене)
?>
<?php
/*
foreach ($key_labels as $k => $l): ?>
<?php if ($k == 'lib_format_opt' || $k == 'lib_language_opt') continue ?>
<div class="row top10">
<label><?= $l[$lIndex] ?></label>
<div class="flex">
<?php if ($k == 'lib_format'): ?>
<select data-filter-input="<?= $k ?>">
<option value="">-- <?= $lg == 'en' ? 'format' : 'формат' ?> --</option>
<?php foreach ($lib_format_opt as $i => $opt): ?>
<option <?= !empty($_GET[$k]) && $_GET[$k] == $i ? 'selected' : '' ?>
value="<?= $i ?>"><?= $opt[$lIndex] ?></option>
<?php endforeach; ?>
</select>
<?php elseif ($k == 'lib_language'): ?>
<select data-filter-input="<?= $k ?>">
<option value="">--</option>
<?php foreach ($lib_language_opt as $i => $opt): ?>
<option <?= !empty($_GET[$k]) && $_GET[$k] == $i ? 'selected' : '' ?>
value="<?= $i ?>"><?= $opt[$lIndex] ?></option>
<?php endforeach; ?>
</select>
<?php else: ?>
<input data-filter-input="<?= $k ?>" value="<?= $_GET[$k] ?? '' ?>"
placeholder="">
<?php endif; ?>
<?php if (!empty($_GET[$k])): ?>
<div onclick="clearSingle(this)" class="clear-single"><i onclick="" class="la la-times"></i></div>
<?php endif; ?>
</div>
</div>
<?php endforeach; ?>
*/
@@ -0,0 +1,163 @@
<?php
use app\models\register\Fields;
use app\models\RegisterObjects;
//echo json_encode($_GET);
//exit;
$lg = Yii::$app->language;
$per_page = 9;
$page = $_GET['page'] ?? 1;
/**
* @var \yii\web\View $this
*/
?>
<?php
$library = RegisterObjects::find()
->where(['lib_type' => 2, 'is_active' => 1]);
//if (!empty($_GET['partner_id'])) {
// $library = $library->joinWith('projectPartners')->where(['partner_id' => $_GET['partner_id']]);
//}
$key_labels = [
'lib_format',
'lib_identifier_isbn_print',
'lib_identifier_isbn_online',
'lib_identifier_issn_print',
'lib_identifier_issn_online',
'lib_identifier_doi',
'lib_identifier_ismn',
'lib_identifier_isan',
'lib_author_compiler',
'lib_language',
'lib_edition',
'lib_publisher_name',
'lib_publication_place'
];
$library->innerJoinWith('library');
if (!empty($_GET['search'])) {
$tags = \app\models\register\Tags::find()->where(['lib_type' => 2])->andWhere(['or',
['=', 'text', $_GET['search']],
['=', 'text_en', $_GET['search']],
])->all();
$tag_ref_nums = [];
foreach ($tags as $tag) {
foreach ($tag->objects as $tagObject) {
if (!in_array($tagObject->object_id, $tag_ref_nums)) {
$tag_ref_nums[] = $tagObject->object_id;
}
}
}
$search = [
'or',
['LIKE', 'name', $_GET['search']],
['LIKE', 'ts_en_name', $_GET['search']],
['LIKE', 'created_by', $_GET['search']],
['LIKE', 'annotation', $_GET['search']],
['LIKE', 'ts_en_annotation', $_GET['search']],
['LIKE', 'lib_author_compiler', $_GET['search']],
['LIKE', 'lib_author_translator', $_GET['search']],
['LIKE', 'lib_author_editor', $_GET['search']],
['LIKE', 'lib_author_reviewer', $_GET['search']],
['LIKE', 'lib_author_ilustrator', $_GET['search']],
['LIKE', 'lib_title_information', $_GET['search']],
['LIKE', 'lib_title_parallel', $_GET['search']],
['LIKE', 'lib_publisher_name', $_GET['search']],
['LIKE', 'lib_publication_place', $_GET['search']],
['LIKE', 'lib_article_source', $_GET['search']],
];
if (sizeof($tag_ref_nums) > 0) {
$search[] = ['IN', 'ref_num', $tag_ref_nums];
}
$library->andWhere($search);
}
if (!empty($_GET['year'])) {
$year_search = [
'or',
['=', 'created_year', $_GET['year']],
['=', 'lib_publication_date', $_GET['year']]
];
$library->andWhere($year_search);
}
if (!empty($_GET['lib_type'])) {
$library->andWhere(['lib_variant' => $_GET['lib_type']]);
}
if (!empty($_GET['lib_format'])) {
$library->andWhere(['lib_format' => $_GET['lib_format']]);
}
if (!empty($_GET['identifier'])) {
$library->andWhere([
'or',
['LIKE', 'lib_identifier_isbn_print', $_GET['identifier']],
['LIKE', 'lib_identifier_isbn_online', $_GET['identifier']],
['LIKE', 'lib_identifier_issn_print', $_GET['identifier']],
['LIKE', 'lib_identifier_issn_online', $_GET['identifier']],
['LIKE', 'lib_identifier_doi', $_GET['identifier']],
['LIKE','lib_identifier_ismn', $_GET['identifier']],
['LIKE', 'lib_identifier_isan', $_GET['identifier']],
]);
}
if(!empty($_GET['lib_language'])) {
$library->andWhere(
['like', 'lib_language', $_GET['lib_language']]
);
}
if(!empty($_GET['lib_license'])) {
$library->andWhere(['=', 'lib_license', $_GET['lib_license']]);
}
if(!empty($_GET['lib_rights'])) {
$library->andWhere(['=', 'lib_rights', $_GET['lib_rights']]);
}
if(!empty($_GET['partner'])) {
$library->andWhere(['partner_id' => $_GET['partner']]);
}
if(!empty($_GET['partner_id'])) {
$library->andWhere(['partner_id' => $_GET['partner_id']]);
}
if (!empty($_GET['order_title'])) {
$library = $library->orderBy([$_GET['order_title'] => SORT_ASC]);
} else {
$library = $library->orderBy(['publish_date' => SORT_ASC]);
}
$count = $library->count();
$library = $library->offset($per_page * $page - $per_page)->limit($per_page);
if ($count <= $per_page) {
$page = 1;
}
$library = $library->offset($per_page * $page - $per_page)->limit($per_page);
$html = $this->render('list_e_library_partial', ['library' => $library->all()]);
$pages_count = ceil($count / $per_page);
echo json_encode([
'html' => $html,
'pages_count' => $pages_count,
'current_page' => (int)$page,
'get' => $_GET
])
?>
@@ -0,0 +1,47 @@
<?php
/**
* @var \app\models\RegisterObjects[] $library
*/
use app\models\Ts;
use app\services\ViewReg;
?>
<link rel="stylesheet" href="/_public/assets/css/user.css">
<div class="filter-panel <?= !empty($_GET['advance_filter']) ? 'show' : '' ?>">
<div class="row ct">
<button onclick="filterApply()" class="profile-submit gradient ct"><?= Ts::get(164) ?></button>
<button onclick="filterClear()" class="profile-submit gradient ct"><?= Ts::get(165) ?></button>
</div>
<?= $this->render('list_e_library_filter_new') ?>
</div>
<div class="flex-wrap library <?= !empty($_GET['advance_filter']) ? 'filter-open' : '' ?>">
<?php
/** @var \app\models\RegisterObjects $lib */
foreach ($library as $lib): ?>
<div class="flex bottom30 list-library">
<div class="poster">
<a href="
<?= ViewReg::generateDefaultDetailUrl('e-library', $lib->id, $lib->getTitle()) ?>"
class="cell">
<div class="list-element-img cell-img"
style="background-image: url('<?= $lib->getMainImgFile() ?>')"></div>
</a>
</div>
<div class="library-info">
<div class="list-title top20">
<a href="<?= ViewReg::generateDefaultDetailUrl('e-library', $lib->id, $lib->getTitle()) ?>">
<?= $lib->getTitle() ?>
</a>
</div>
<div class="list-text text-limit-8 top20"><?= strip_tags($lib->getAnnotation()) ?></div>
<div class="list-label news top15"><?= Ts::get(162) ?></div>
<div class="top10"><?= $lib->created_by ?></div>
<?php if ($lib->partner_id): ?>
<div class="list-label campaigns top15"><?= Ts::get(163) ?></div>
<div class="top10"><?= $lib->partner->getTsName() ?></div>
<?php endif; ?>
</div>
</div>
<?php endforeach; ?>
</div>
@@ -0,0 +1,55 @@
<?php
use app\models\Articles;
use app\models\Expositions;
$lg = Yii::$app->language;
$per_page = 12;
$page = $_GET['page'] ?? 1
/**
* @var \yii\web\View $this
*/
?>
<?php
$condition = [];
if(!empty($_GET['partner_id'])) {
$condition['on_partner_page'] = 1;
} else {
$condition['is_active'] = 1;
}
$expositions = Expositions::find()->where($condition);
if(!empty($_GET['partner_id'])) {
$expositions = $expositions->andWhere(['partner_id' => $_GET['partner_id']]);
}
$expositions = $expositions->offset($per_page * $page - $per_page)->limit($per_page);
if (!empty($_GET['category']))
$expositions = $expositions->andWhere(['category_id' => $_GET['category']]);
if (!empty($_GET['order_title'])) {
$expositions = $expositions->orderBy([$_GET['order_title'] => SORT_ASC]);
} else {
$expositions = $expositions->orderBy(['publish_date' => SORT_DESC]);
}
if (!empty($_GET['tags'])) {
$tags = explode(',', $_GET['tags']);
if (sizeof($tags) > 0)
$expositions->joinWith('expositionTags')->andWhere(['IN', 'exposition_tag_id', $tags]);
}
$count = $expositions->count();
$html = $this->render('list_exposition_sq_partial', ['expositions' => $expositions->all()]);
echo json_encode([
'html' => $html,
'pages_count' => ceil($count / $per_page),
'current_page' => (int)$page
])
?>
@@ -0,0 +1,33 @@
<?php
use app\models\Articles;
$lg = Yii::$app->language;
$per_page = 12;
$page = $_GET['page'] ?? 1;
/**
* @var \yii\web\View $this
*/
?>
<?php
$expositionObjects = \app\models\ExpositionsObjects::find()->where(['exposition_id' => $_GET['exposition_id']]);
$expositionObjects = $expositionObjects->offset($per_page * $page - $per_page)->limit($per_page);
$count = $expositionObjects->count();
$objects = [];
/** @var \app\models\ExpositionsObjects $expositionObject */
foreach ($expositionObjects->all() as $expositionObject) {
if ($expositionObject->object)
$objects[] = $expositionObject->object;
}
$html = $this->render('list_exposition_objects_partial', ['objects' => $objects, 'exposition' => \app\models\Expositions::findOne($_GET['exposition_id'])]);
echo json_encode([
'html' => $html,
'pages_count' => ceil($count / $per_page),
'current_page' => (int)$page
])
?>
@@ -0,0 +1,39 @@
<?php
/**
* @var \app\models\RegisterObjects[] $objects
* @var \app\models\Expositions $exposition
* @var $start
* @var $end
*/
use app\models\Ts;
use app\services\ViewReg;
Ts::set([40])
?>
<?php
for ($index = 0; $index < 12; $index++): ?>
<?php if (!empty($objects[$index])): ?>
<div class="gallery__item">
<?php /** @var \app\models\RegisterObjects $object */
$object = $objects[$index]; ?>
<a href="<?= $object->getExpositionUrl($exposition) ?>" class="img-box">
<img style="width: 100%" src="<?= $object->getImg() ?>" class="gallery__img"
alt="<?= $object->getTitle() ?>">
<div class="gallery__item_title">
<?= $object->getTitle() ?>
</div>
</a>
<div class="hidden-grid-part">
<div class="title"><a href="<?= $object->getExpositionUrl($exposition) ?>"><?= $object->getTitle() ?></a></div>
<div class="annotation"><?= $object->getAnnotation() ?></div>
<div class="link"><?= Ts::get(40) ?></div>
</div>
</div>
<?php else: ?>
<?php endif; ?>
<?php endfor; ?>
@@ -0,0 +1,23 @@
<?php
/**
* @var \app\models\Expositions[] $expositions
*/
use app\services\ViewReg;
?>
<?php for ($i = 0; $i < 9; $i++): ?>
<div class="gallery__item gallery__item--<?= $i ?>">
<?php if (!empty($expositions[$i])):
$exposition = $expositions[$i]; ?>
<a href="<?= $exposition->getUrl() ?>">
<img style="width: 100%" src="<?= $exposition->getImg() ?>" class="gallery__img"
alt="<?= $exposition->title() ?>">
<div class="gallery__item_title">
<?= $exposition->title() ?>
</div>
</a>
<?php endif; ?>
</div>
<?php endfor; ?>
@@ -0,0 +1,27 @@
<?php
/**
* @var \app\models\Expositions[] $expositions
*/
use app\services\ViewReg;
?>
<link rel="stylesheet" href="/_public/assets/css/collection-objects-greed.css">
<div class="content collection"
style="position: relative; display: flex; flex-wrap: nowrap; flex-direction: row-reverse;">
<div class="collection-greed library">
<div class="content-out gallery" id="list-article">
<?php foreach ($expositions as $exposition): ?>
<div class="gallery__item">
<a href="<?= $exposition->getUrl() ?>">
<img style="width: 100%" src="<?= $exposition->getSqImg() ?>" class="gallery__img"
alt="<?= $exposition->title() ?>">
<div class="gallery__item_title">
<?= $exposition->title() ?>
</div>
</a>
</div>
<?php endforeach; ?>
</div>
</div>
</div>
@@ -0,0 +1,44 @@
<?php
use app\models\Projects;
$lg = Yii::$app->language;
$per_page = 10;
$page = $_GET['page'] ?? 1
/**
* @var \yii\web\View $this
*/
?>
<?php
$projects = Projects::find()->where(['is_active' => 1]);
if(!empty($_GET['partner_id'])) {
$projects = $projects->joinWith('projectPartners')->where(['partner_id' => $_GET['partner_id'], 'on_partner_page' => 1]);
}
if (!empty($_GET['order_title'])) {
$projects = $projects->orderBy([$_GET['order_title'] => SORT_ASC]);
} else {
$projects = $projects->orderBy(['publish_date' => SORT_ASC]);
}
$count = $projects->count();
$projects = $projects->offset($per_page * $page - $per_page)->limit($per_page);
if ($count <= $per_page) {
$page = 1;
}
$projects = $projects->offset($per_page * $page - $per_page)->limit($per_page);
$html = $this->render('list_project_partial', ['projects' => $projects->all()]);
$pages_count = ceil($count / $per_page);
echo json_encode([
'html' => $html,
'pages_count' => $pages_count,
'current_page' => (int)$page
])
?>
@@ -0,0 +1,37 @@
<?php
/**
* @var \app\models\Projects $projects
*/
use app\services\ViewReg;
?>
<div class="flex-wrap">
<?php
/** @var \app\models\Projects $project */
foreach ($projects as $project): ?>
<div class="cw6 flex bottom30">
<div class="cw6" style="height: 450px">
<a href="<?= ViewReg::generateDefaultDetailUrl('projects', $project->id, $project->title()) ?>"
class="cell">
<div class="list-element-img cell-img"
style="background-image: url('<?= $project->getSrcOfSingleImage('title_project_image', '11:14') ?>')"></div>
</a>
</div>
<div class="cw6">
<div class="cell" style="">
<div class="list-label date-label">
<?= date('d.m.Y/H:i', strtotime($project->publish_date)) ?>
</div>
<div class="list-title top20 left-right-15">
<a href="<?= ViewReg::generateDefaultDetailUrl('projects', $project->id, $project->title()) ?>">
<?= $project->title() ?>
</a>
</div>
<div class="list-text text-limit-8 top20 left-right-15"><?= strip_tags($project->textShort()) ?></div>
</div>
</div>
</div>
<?php endforeach; ?>
</div>
@@ -0,0 +1,38 @@
<link rel="stylesheet" href="/_public/plugins/splitejs/css/splide.min.css">
<script src="/_public/plugins/splitejs/js/splide.min.js"></script>
<?php
$object_id = $_GET['object_id'];
$object = \app\models\RegisterObjects::findOne($object_id);
/* @var $this \yii\web\View */
?>
<div class="splide" id="main-slider">
<div class="splide__track">
<div class="splide__list">
<?php if ($object): ?>
<?php foreach ($object->registerObjectImages as $image): ?>
<?php $src = $image->getResizedImg(false, true); ?>
<div class="splide__slide" style="width: 100%; display: flex; justify-content: center">
<img src="<?= $src ?>" alt="" style="height: 700px; width: auto; display: block">
</div>
<?php endforeach; ?>
<?php endif ?>
</div>
</div>
</div>
<script>
var main = new Splide('#main-slider', {
type: 'loop',
pagination: false,
arrows: true,
center: true
});
main.mount();
</script>
@@ -0,0 +1,20 @@
<?php
/* @var $this \yii\web\View
*
* @var \app\models\parsed\SearchResultModel[] $data
*/
?>
<?php foreach ($data as $result): ?>
<div class="flex row">
<div class="cw3">
<?= $result->type ?>
</div>
<div class="cw9">
<a href="<?= $result->url ?>"><?= $result->text ?></a>
</div>
</div>
<?php endforeach; ?>
@@ -0,0 +1,53 @@
<?php use app\models\register\Fields;
use app\models\register\FieldsValuesRelations;
$lg = Yii::$app->language;
/**
* @var $parent_id
*/
$fieldsValuesRelations = FieldsValuesRelations::find()->where(['parent_value_id' => $parent_id])->all();
$ids = [];
foreach ($fieldsValuesRelations as $fieldsValuesRelation) {
if ($fieldsValuesRelation->child_field_id != 0)
$ids[] = $fieldsValuesRelation->child_field_id;
}
$lib_type = $_GET['lib_type'] ?? 2;
if (!empty($content_lib_type)) {
$lib_type = $content_lib_type;
}
$main = Fields::find()->where(['IN', 'id', $ids])->andWhere(['lib_type' => $lib_type])->all(); ?>
<?php foreach ($main as $item): ?>
<div class="row top10">
<label><?= $item->{$lg == 'en' ? 'name_en' : 'name'} ?></label>
<div class="flex">
<?php if ($item->type == 1): ?>
<select class="category-field" onchange="loadSpecificCollectionFilter(this)"
data-filter-input="name_id_<?= $item->id ?>">
<option value=""></option>
<?php foreach ($item->fieldsValues as $fv): ?>
<?php if ($fv): ?>
<option <?= !empty($_GET['name_id_' . $item->id]) && $_GET['name_id_' . $item->id] == $fv->id ? 'selected' : '' ?>
value="<?= $fv['id'] ?? '' ?>"><?= $fv->getNameByLocale() ?></option>
<?php endif; ?>
<?php endforeach; ?>
</select>
<?php if (!empty($_GET['name_id_' . $item->id])): ?>
<div onclick="clearSingle(this)" class="clear-single"><i onclick="" class="la la-times"></i></div>
<?php endif; ?>
<?php else: ?>
<input data-filter-input="name_text_<?= $item->id ?>"
value="<?= $_GET['name_text_' . $item->id] ?? '' ?>"
placeholder="">
<?php if (!empty($_GET['name_text_' . $item->id])): ?>
<div onclick="clearSingle(this)" class="clear-single"><i onclick="" class="la la-times"></i></div>
<?php endif; ?>
<?php endif; ?>
</div>
<div data-content-id="name_id_<?= $item->id ?>">
<?php if (!empty($_GET['name_id_' . $item->id])): ?>
<?= $this->render('specific_filter', ['parent_id' => $_GET['name_id_' . $item->id], 'content_lib_type' => 1]) ?>
<?php endif; ?>
</div>
</div>
<?php endforeach; ?>
@@ -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; ?>

Some files were not shown because too many files have changed in this diff Show More