Initial import
This commit is contained in:
@@ -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
Reference in New Issue
Block a user