Initial import

This commit is contained in:
Admin Nasledstvo
2026-05-01 20:52:04 +03:00
commit ac168868ee
10028 changed files with 2337954 additions and 0 deletions
@@ -0,0 +1,106 @@
<?php
echo $this->render('/_mobile_view_mode');
use app\models\Ts;
if(!empty($_GET['webview_mode'])) {
if(empty($_SESSION['token']) ) {
if(!empty($_GET['token'])) {
$_SESSION['token'] = $_GET['token'];
header('Location: ?booking=true&webview_mode=true');
exit;
} else {
header('Location: /bg/mobile-api/browser-close/');
}
}
}
/**
* @var \app\models\Articles $model ;
*/
/** @var \app\models\Events $event */
$event = $model->getArticle();
if ($event->type == 'booking'): ?>
<input id="error-msg-1" type="hidden" value="<?= Ts::get(177)?>">
<input id="error-msg-2" type="hidden" value="<?= Ts::get(178) ?>">
<input id="event_id" type="hidden" value="<?= $event->id ?>">
<div class="content">
<div class="main-profile-panel top50 open">
<div class="header-toggle-panel text-uppercase ct static-header">
<?= Ts::get(171) ?>
</div>
<div class="body booking-panel">
<div class="title"><?= $event->title() ?></div>
<div class="flex flex-center ticket-row select-date-time">
<div class="select-time">
<select id="select-date">
<option value=""><?= Ts::get(192) ?></option>
<?php foreach ($event->eventDatesArray() as $date): ?>
<option value="<?= $date ?>"><?= date_create($date)->format('d.m.Y') ?></option>
<?php endforeach; ?>
</select>
<i class="la la-calendar"></i>
</div>
<div class="select-time">
<select id="select-time">
<option value=""><?= Ts::get(193) ?></option>
<?php foreach ($event->eventTimesArray() as $time): ?>
<option value="<?= $time ?>"><?= $time ?></option>
<?php endforeach; ?>
</select>
<i class="la la-clock-o"></i>
</div>
</div>
<div class="top50"></div>
<div class="ticket-row header flex mobile-hide">
<div><?= Ts::get(172) ?></div>
<div class="ct"><?= Ts::get(173) ?></div>
<div class="ct"><?= Ts::get(174) ?></div>
<div class="rt"><?= Ts::get(175) ?></div>
</div>
<?php
/** @var \app\models\PriceObject $price_object */
foreach ($event->price_objects as $price_object): ?>
<div class="ticket-row ticket flex">
<div class="ticket-label mobile-show"><?= Ts::get(172) ?></div>
<div><?= $price_object->{'text_' . Yii::$app->language} ?></div>
<div class="ticket-label mobile-show"><?= Ts::get(173) ?></div>
<div class="flex flex-center no-padding">
<div data-relate-btn="<?= $price_object->id ?>" onclick="booking.countDecrease(this)"
class="counter-btn">-
</div>
<div data-cart="<?= $price_object->id ?>" data-relate-counter="<?= $price_object->id ?>" data-counter="0" class="counter">0</div>
<div data-relate-btn="<?= $price_object->id ?>" onclick="booking.countIncrease(this)"
class="counter-btn">+
</div>
</div>
<div class="ticket-label mobile-show"><?= Ts::get(174) ?></div>
<div data-relate-price="<?= $price_object->id ?>"
data-price="<?= (double)$price_object->price ?>" class="ct"><?= $price_object->price ?> лв.
</div>
<div class="ticket-label mobile-show"><?= Ts::get(175) ?></div>
<div data-realte-amount="<?= $price_object->id ?>" data-amount="0" class="rt"><span
class="amount">0.00</span> лв.
</div>
</div>
<?php endforeach; ?>
<div class="ticket-row header total flex">
<div><?= Ts::get(100)?>:</div>
<div class="ct"></div>
<div class="ct"></div>
<div data-total="0" class="rt"><span>0.00</span> лв.</div>
</div>
<div class="flex flex-center top25">
<div onclick="<?= empty($_GET['webview_mode']) ? 'booking.pay(this)' : 'booking.pay(this, 1)' ?>" class="pay-btn"><i class="la la-shopping-cart"></i> <?= Ts::get(244)?></div>
</div>
</div>
</div>
</div>
<?php endif; ?>
<script src="/_public/assets/js/booking.js"></script>
<script>
const booking = new Booking();
booking.default('<?= Yii::$app->language ?>')
</script>
@@ -0,0 +1,369 @@
<link href="/_public/plugins/photoswipe/photoswipe.css" rel="stylesheet">
<link href="/_public/plugins/photoswipe/default-skin/default-skin.css" rel="stylesheet">
<style>
.pswp img {
max-width: none;
object-fit: contain;
}
</style>
<!-- Root element of PhotoSwipe. Must have class pswp. -->
<div class="pswp" tabindex="-1" role="dialog" aria-hidden="true">
<!-- Background of PhotoSwipe.
It's a separate element as animating opacity is faster than rgba(). -->
<div class="pswp__bg"></div>
<!-- Slides wrapper with overflow:hidden. -->
<div class="pswp__scroll-wrap">
<!-- Container that holds slides.
PhotoSwipe keeps only 3 of them in the DOM to save memory.
Don't modify these 3 pswp__item elements, data is added later on. -->
<div class="pswp__container">
<div class="pswp__item"></div>
<div class="pswp__item"></div>
<div class="pswp__item"></div>
</div>
<!-- Default (PhotoSwipeUI_Default) interface on top of sliding area. Can be changed. -->
<div class="pswp__ui pswp__ui--hidden">
<div class="pswp__top-bar">
<!-- Controls are self-explanatory. Order can be changed. -->
<div class="pswp__counter"></div>
<div id="pswp__title" style="color: #FFFFFF; position: absolute; width: 100%; top: 8px; text-align: center"></div>
<button class="pswp__button pswp__button--close" title="Close (Esc)"></button>
<!--<button class="pswp__button pswp__button--share" title="Share"></button>-->
<button class="pswp__button pswp__button--fs" title="Toggle fullscreen"></button>
<button class="pswp__button pswp__button--zoom" title="Zoom in/out"></button>
<!-- Preloader demo https://codepen.io/dimsemenov/pen/yyBWoR -->
<!-- element will get class pswp__preloader--active when preloader is running -->
<div class="pswp__preloader">
<div class="pswp__preloader__icn">
<div class="pswp__preloader__cut">
<div class="pswp__preloader__donut"></div>
</div>
</div>
</div>
</div>
<div class="pswp__share-modal pswp__share-modal--hidden pswp__single-tap">
<div class="pswp__share-tooltip"></div>
</div>
<button class="pswp__button pswp__button--arrow--left" title="Previous (arrow left)">
</button>
<button class="pswp__button pswp__button--arrow--right" title="Next (arrow right)">
</button>
<div class="pswp__caption">
<div class="pswp__caption__center" style="text-align: center"></div>
</div>
</div>
</div>
</div>
<script src="/_public/plugins/photoswipe/photoswipe.min.js"></script>
<script src="/_public/plugins/photoswipe/photoswipe-ui-default.min.js"></script>
<script>
var initPhotoSwipeFromDOM = function (gallerySelector) {
var parseThumbnailElements = function (el) {
var thumbElements = el.childNodes,
numNodes = thumbElements.length,
items = [],
el,
childElements,
thumbnailEl,
size,
item;
for (var i = 0; i < numNodes; i++) {
el = thumbElements[i];
// include only element nodes
if (el.nodeType !== 1) {
continue;
}
childElements = el.children;
size = el.getAttribute('data-size').split('x');
// create slide object
item = {
src: el.getAttribute('href'),
w: parseInt(size[0], 10),
h: parseInt(size[1], 10),
author: el.getAttribute('data-author')
};
item.el = el; // save link to element for getThumbBoundsFn
if (childElements.length > 0) {
item.msrc = childElements[0].getAttribute('src'); // thumbnail url
if (childElements.length > 1) {
item.title = childElements[1].innerHTML; // caption (contents of figure)
}
}
var mediumSrc = el.getAttribute('data-med');
if (mediumSrc) {
size = el.getAttribute('data-med-size').split('x');
// "medium-sized" image
item.m = {
src: mediumSrc,
w: parseInt(size[0], 10),
h: parseInt(size[1], 10)
};
}
// original image
item.o = {
src: item.src,
w: item.w,
h: item.h
};
item.title = el.getAttribute('data-title');
items.push(item);
}
return items;
};
// find nearest parent element
var closest = function closest(el, fn) {
return el && ( fn(el) ? el : closest(el.parentNode, fn) );
};
var onThumbnailsClick = function (e) {
e = e || window.event;
e.preventDefault ? e.preventDefault() : e.returnValue = false;
var eTarget = e.target || e.srcElement;
var clickedListItem = closest(eTarget, function (el) {
return el.tagName === 'A';
});
if (!clickedListItem) {
return;
}
var clickedGallery = clickedListItem.parentNode;
var childNodes = clickedListItem.parentNode.childNodes,
numChildNodes = childNodes.length,
nodeIndex = 0,
index;
for (var i = 0; i < numChildNodes; i++) {
if (childNodes[i].nodeType !== 1) {
continue;
}
if (childNodes[i] === clickedListItem) {
index = nodeIndex;
break;
}
nodeIndex++;
}
if (index >= 0) {
openPhotoSwipe(index, clickedGallery);
}
return false;
};
var photoswipeParseHash = function () {
var hash = window.location.hash.substring(1),
params = {};
if (hash.length < 5) { // pid=1
return params;
}
var vars = hash.split('&');
for (var i = 0; i < vars.length; i++) {
if (!vars[i]) {
continue;
}
var pair = vars[i].split('=');
if (pair.length < 2) {
continue;
}
params[pair[0]] = pair[1];
}
if (params.gid) {
params.gid = parseInt(params.gid, 10);
}
return params;
};
var openPhotoSwipe = function (index, galleryElement, disableAnimation, fromURL) {
var pswpElement = document.querySelectorAll('.pswp')[0],
gallery,
options,
items;
items = parseThumbnailElements(galleryElement);
// define options (if needed)
options = {
galleryUID: galleryElement.getAttribute('data-pswp-uid'),
getThumbBoundsFn: function (index) {
// See Options->getThumbBoundsFn section of docs for more info
var thumbnail = items[index].el.children[0],
pageYScroll = window.pageYOffset || document.documentElement.scrollTop,
rect = thumbnail.getBoundingClientRect();
return {x: rect.left, y: rect.top + pageYScroll, w: rect.width};
},
addCaptionHTMLFn: function (item, captionEl, isFake) {
if (!item.title) {
captionEl.children[0].innerText = '';
return false;
}
captionEl.children[0].innerHTML = item.title;
return true;
},
};
if (fromURL) {
if (options.galleryPIDs) {
// parse real index when custom PIDs are used
// http://photoswipe.com/documentation/faq.html#custom-pid-in-url
for (var j = 0; j < items.length; j++) {
if (items[j].pid == index) {
options.index = j;
break;
}
}
} else {
options.index = parseInt(index, 10) - 1;
}
} else {
options.index = parseInt(index, 10);
}
// exit if index not found
if (isNaN(options.index)) {
return;
}
var radios = document.getElementsByName('gallery-style');
for (var i = 0, length = radios.length; i < length; i++) {
if (radios[i].checked) {
if (radios[i].id == 'radio-all-controls') {
} else if (radios[i].id == 'radio-minimal-black') {
options.mainClass = 'pswp--minimal--dark';
options.barsSize = {top: 0, bottom: 0};
options.captionEl = false;
options.fullscreenEl = false;
options.shareEl = false;
options.bgOpacity = 0.85;
options.tapToClose = true;
options.tapToToggleControls = false;
}
break;
}
}
if (disableAnimation) {
options.history = false;
options.focus = false;
options.showAnimationDuration = 0;
options.hideAnimationDuration = 0;
}
// Pass data to PhotoSwipe and initialize it
gallery = new PhotoSwipe(pswpElement, PhotoSwipeUI_Default, items, options);
// see: http://photoswipe.com/documentation/responsive-images.html
var realViewportWidth,
useLargeImages = false,
firstResize = true,
imageSrcWillChange;
gallery.listen('beforeResize', function () {
var dpiRatio = window.devicePixelRatio ? window.devicePixelRatio : 1;
dpiRatio = Math.min(dpiRatio, 2.5);
realViewportWidth = gallery.viewportSize.x * dpiRatio;
if (realViewportWidth >= 1200 || (!gallery.likelyTouchDevice && realViewportWidth > 800) || screen.width > 1200) {
if (!useLargeImages) {
useLargeImages = true;
imageSrcWillChange = true;
}
} else {
if (useLargeImages) {
useLargeImages = false;
imageSrcWillChange = true;
}
}
if (imageSrcWillChange && !firstResize) {
gallery.invalidateCurrItems();
}
if (firstResize) {
firstResize = false;
}
imageSrcWillChange = false;
});
gallery.listen('gettingData', function (index, item) {
if (useLargeImages) {
item.src = item.o.src;
item.w = item.o.w;
item.h = item.o.h;
} else {
item.src = item.m.src;
item.w = item.m.w;
item.h = item.m.h;
}
});
gallery.init();
};
// select all gallery elements
var galleryElements = document.querySelectorAll(gallerySelector);
for (var i = 0, l = galleryElements.length; i < l; i++) {
galleryElements[i].setAttribute('data-pswp-uid', i + 1);
galleryElements[i].onclick = onThumbnailsClick;
}
// Parse URL and open gallery if it contains #&pid=3&gid=1
var hashData = photoswipeParseHash();
if (hashData.pid && hashData.gid) {
openPhotoSwipe(hashData.pid, galleryElements[hashData.gid - 1], true, true);
}
};
initPhotoSwipeFromDOM('.photoswipe-gallery')
</script>
@@ -0,0 +1,51 @@
<?php
/**
* @var \app\models\Events $model
*/
use app\models\Ts;
?>
<?php if ($model->type == 'booking'): ?>
<div class="article-site-bar">
<div class="row font-bold"><?= Ts::get(105) ?>:</div>
<div class="row">
<div class="sub-row">
<i class="la la-calendar"></i><?= Ts::get(106) ?>:<span
class="font-bold left-15"><?= $model->getFormattedDates() ?></span>
</div>
<div class="sub-row">
<i class="la la-clock"></i><?= Ts::get(107) ?>:<span
class="font-bold left-15"><?= $model->daily_open_time ?></span>
</div>
</div>
<div class="row flex">
<i class="la la-map-marker" style="margin-top: -5px"></i><?= Ts::get(108) ?>:<span
class="font-bold left-15"><?= $model->getPlace() ?></span>
</div>
<?php if ($model->isBookingAvailable()): ?>
<a href="?booking=1" class="row booking font-bold">
<i class="la la-calendar-check"></i><?= Ts::get(109) ?>
</a>
<?php endif ?>
</div>
<?php elseif ($model->type == 'online'): ?>
<div class="article-site-bar">
<div class="row font-bold"><?= Ts::get(110) ?>:</div>
<div class="row">
<div class="sub-row">
<i class="la la-calendar"></i><?= Ts::get(106) ?>:<span
class="font-bold left-15"><?= $model->getFormattedDates() ?></span>
</div>
<div class="sub-row">
<i class="la la-clock"></i><?= Ts::get(107) ?>:<span
class="font-bold left-15"><?= $model->daily_open_time ?></span>
</div>
</div>
<div class="row booking font-bold">
<i class="la la-file-movie-o"></i><?= Ts::get(111) ?>
</div>
</div>
<?php endif; ?>
@@ -0,0 +1,79 @@
<?php
/**
* @var \app\models\RegisterObjects $model
*/
use app\models\Ts;
$lg = Yii::$app->language;
?>
<div class="flex top25">
<i class="la la-folder-open-o"></i>
<div class="row-info-object">
<?php foreach ($model->registerObjectFields as $registerObjectField): ?>
<div class="row-info">
<?php if ($registerObjectField->field): ?>
<?= $registerObjectField->field->{$lg == 'en' ? 'name_en' : 'name'} ?>
<?php endif; ?>
<?php if ($registerObjectField->fieldValue): ?>
:&nbsp;<b><?= $registerObjectField->fieldValue->{$lg == 'en' ? 'name_en' : 'name'} ?></b>
<?php else: ?>
:&nbsp;<b><?= $registerObjectField->value_text ?></b>
<?php endif; ?>
</div>
<?php endforeach; ?>
<?php if ($model->created_year): ?>
<div class="row-info"><?= Ts::get(250)?>: <b><?= $model->created_year ?></b></div>
<?php endif; ?>
<?php if ($model->created_by): ?>
<div class="row-info"><?= Ts::get(249)?>: <b><?= $model->created_by ?></b></div>
<?php endif; ?>
</div>
</div>
<div class="flex top25">
<i class="la la-map-marker"></i>
<div class="row-info-object">
<div class="row-info">
<b><?= Ts::get(158) ?></b>
</div>
<div class="row-info">
<?= Ts::get(159) ?>: <b><?= $model->city_id ? $model->city->name : Ts::get(161) ?></b>
</div>
<div class="row-info">
<?= Ts::get(160) ?>: <b><?= $model->getAdmAddress() ?></b>
</div>
</div>
</div>
<?php if ($model->getAnyInfocenter(['name' => true, 'address' => true, 'email' => false, 'website' => false])): ?>
<div class="flex top25">
<i class="la la-info-circle"></i>
<div class="row-info-object">
<div class="row-info">
<b><?= Ts::get(157) ?></b>
</div>
<?php if ($model->getInfocenter('name', true)): ?>
<div class="row-info">
<?= Ts::get(155) ?>: <b><?= $model->getInfocenter('name', true) ?></b>
</div>
<?php endif; ?>
<?php if ($model->getInfocenter('address', true)): ?>
<div class="row-info">
<?= Ts::get(133) ?>: <b><?= $model->getInfocenter('address', true) ?></b>
</div>
<?php endif; ?>
<?php if ($model->getInfocenter('email', false)): ?>
<div class="row-info">
Email: <b><?= $model->getInfocenter('email', false) ?></b>
</div>
<?php endif; ?>
<?php if ($model->getInfocenter('website', false)): ?>
<div class="row-info">
<?= Ts::get(156) ?>: <b><?= $model->getInfocenter('website', false) ?></b>
</div>
<?php endif; ?>
</div>
</div>
<?php endif; ?>
@@ -0,0 +1,93 @@
<?php
use app\models\Ts;
use app\models\Articles;
$lg = Yii::$app->language;
/**
* @var int | null $partner_id
*/
?>
<div class="content">
<div class="filter-buttons top50">
<button data-filter="art_table=all"><?= Ts::get(5) ?></button>
<button data-filter="art_table=news"><?= Ts::get(6) ?></button>
<button data-filter="art_table=events"><?= Ts::get(7) ?></button>
<button data-filter="art_table=campaigns"><?= Ts::get(8) ?></button>
<button data-switch="order_title=title<?= $lg == 'en' ? '_en' : '' ?>"><?= Ts::get(9) ?></button>
</div>
<div class="top50"></div>
</div>
<div class="content-out" id="list-article"></div>
<div class="content">
<div id="pagination" class="filter-buttons flex-center top50"></div>
</div>
<script>
let articleFilter = {}
<?php if(!empty($partner_id)):?>
articleFilter['partner_id'] = 'partner_id=<?= $partner_id?>';
<?php endif; ?>
document.addEventListener('DOMContentLoaded', () => {
if (window.location.search) {
let serialize = atob(window.location.search.substr(1))
try {
articleFilter = JSON.parse(serialize)
console.log(articleFilter);
} catch (e) {
console.log('Invalid query string');
}
}
document.querySelector(`[data-filter="${articleFilter['art_table'] || 'art_table=all'}"]`).classList.add('active')
let switcher = document.querySelector(`[data-switch="${articleFilter['switch_on'] || ''}"]`);
if (switcher)
switcher.classList.add('switch_on')
filter();
})
document.querySelectorAll('[data-filter]').forEach(button => {
button.addEventListener('click', function () {
const active = document.querySelector('[data-filter].active');
active.classList.remove('active');
button.classList.add('active');
button.scrollIntoView()
articleFilter['art_table'] = button.dataset.filter || null
filter();
})
})
document.querySelectorAll('[data-switch]').forEach(button => {
button.addEventListener('click', () => {
if (!button.classList.contains('switch_on')) {
button.classList.add('switch_on')
articleFilter['switch_on'] = button.dataset.switch
} else {
button.classList.remove('switch_on')
articleFilter['switch_on'] = null
}
filter()
})
})
function filter() {
let serializeArray = [];
Object.keys(articleFilter).forEach(key => {
if (articleFilter[key])
serializeArray.push(articleFilter[key])
})
let serialize = serializeArray.join('&')
if (serialize)
window.history.replaceState(null, null, `?${btoa(JSON.stringify(articleFilter))}`);
contentRequest(`/<?= $lg ?>/remote/get-articles/?${serialize}`, '#list-article', '#pagination', page => {
articleFilter['page'] = `page=${page}`;
filter()
})
console.log(articleFilter);
}
</script>
@@ -0,0 +1,206 @@
<?php
use app\models\register\Tags;
use app\models\Ts;
use app\models\Articles;
$lg = Yii::$app->language
/**
*
*/
?>
<div class="content">
<div class="filter-buttons top50">
<button data-filter=""><?= Ts::get(5) ?></button>
<?php if ($lg == 'en'): ?>
<button data-switch="order_title=ts_en_name"><?= Ts::get(9) ?></button>
<?php else: ?>
<button data-switch="order_title=name"><?= Ts::get(9) ?></button>
<?php endif; ?>
<div class="tags cw3 right-10">
<select id="tags" style="display:none;" class="search-select-box" multiple>
<option disabled value=""><?= Ts::get(48) ?></option>
<?php foreach (Tags::find()->where(['deleted' => 0, 'active' => 1, 'lib_type' => 1])->all() as $tag): ?>
<option value="<?= $tag->id ?>"><?= $tag->getName() ?></option>
<?php endforeach; ?>
</select>
</div>
<button class="filter mobile-hide"><?= Ts::get(11) ?></button>
<button class="filter-mobile-btn mobile-show"><?= Ts::get(11) ?></button>
</div>
<div class="top50"></div>
</div>
<div id="list-article"></div>
<div class="content">
<div id="pagination" class="filter-buttons flex-center top50"></div>
</div>
<script>
let articleFilter = {}
const searchBox = new SearchBox('#tags')
<?php if(!empty($partner_id)):?>
articleFilter['partner_id'] = 'partner_id=<?= $partner_id?>';
<?php endif; ?>
document.addEventListener('DOMContentLoaded', () => {
if (window.location.search) {
let serialize = atob(window.location.search.substr(1))
try {
articleFilter = JSON.parse(serialize)
} catch (e) {
console.log('Invalid query string');
}
}
console.log(articleFilter);
document.querySelector(`[data-filter="${articleFilter['art_table'] || ''}"]`).classList.add('active')
let switcher = document.querySelector(`[data-switch="${articleFilter['switch_on'] || ''}"]`);
if (switcher)
switcher.classList.add('switch_on')
filter();
})
document.querySelectorAll('[data-filter]').forEach(button => {
button.addEventListener('click', function () {
const active = document.querySelector('[data-filter].active');
active.classList.remove('active');
button.classList.add('active');
button.scrollIntoView()
articleFilter['art_table'] = button.dataset.filter || null
filter();
})
})
document.querySelectorAll('[data-switch]').forEach(button => {
button.addEventListener('click', () => {
if (!button.classList.contains('switch_on')) {
button.classList.add('switch_on')
articleFilter['switch_on'] = button.dataset.switch
} else {
button.classList.remove('switch_on')
articleFilter['switch_on'] = null
}
filter()
})
})
let filterBtn = document.querySelector('.filter');
let filterApplyBtn = document.querySelector('#filter-apply')
let filterClearBtn = document.querySelector('#filter-clear')
let filterMobile = document.querySelector('.filter-mobile-btn')
filterBtn.addEventListener('click', () => {
let lib = document.querySelector('.library');
let filterPanel = document.querySelector('.filter-panel')
if (lib.classList.contains('filter-open')) {
lib.classList.remove('filter-open')
filterPanel.classList.remove('show');
filterBtn.classList.remove('switch_on')
filterClear()
} else {
lib.classList.add('filter-open')
filterPanel.classList.add('show')
filterBtn.classList.add('switch_on')
}
})
filterMobile.addEventListener('click', () => {
let lib = document.querySelector('.library');
let filterPanel = document.querySelector('.filter-panel')
if (lib.classList.contains('filter-open-mobile')) {
//Close
lib.classList.remove('filter-open-mobile')
filterPanel.classList.remove('filter-mobile');
filterMobile.classList.remove('switch_on')
} else {
//Open
lib.classList.add('filter-open-mobile')
filterPanel.classList.add('filter-mobile');
filterMobile.classList.add('switch_on')
}
})
function filterApply() {
document.querySelectorAll('[data-filter-input]').forEach(input => {
console.log(input.dataset.filterInput);
//console.log(input.value);
if (input.value)
articleFilter[input.dataset.filterInput] = input.dataset.filterInput + '=' + input.value
})
if (Object.keys(articleFilter).length > 0) {
articleFilter['advance_filter'] = 'advance_filter=1';
}
filter()
filterMobile.classList.remove('switch_on')
}
function filterClear() {
articleFilter = {}
filter()
if (window.location.href) {
let newUrl = window.location.href.split('?')[0]
window.history.replaceState(null, null, newUrl)
}
document.querySelector('.filter').classList.remove('switch_on')
filterMobile.classList.remove('switch_on')
searchBox.clearBoxSelected();
}
function clearSingle(e) {
let input = e.parentNode.querySelector('[data-filter-input]');
delete articleFilter[input.dataset.filterInput];
if (articleFilter['switch_on']) {
delete articleFilter['switch_on'];
document.querySelector('.filter').classList.remove('switch_on')
filterMobile.classList.remove('switch_on')
}
if (Object.keys(articleFilter).length === 1) {
if (articleFilter['advance_filter']) {
articleFilter = {}
if (window.location.href) {
let newUrl = window.location.href.split('?')[0]
window.history.replaceState(null, null, newUrl)
}
}
}
filter();
}
function filter() {
let serializeArray = [];
Object.keys(articleFilter).forEach(key => {
if (articleFilter[key])
serializeArray.push(articleFilter[key])
})
let serialize = serializeArray.join('&')
if (serialize) {
let str = JSON.stringify(articleFilter)
let base64 = btoa(str.replace(/[\u00A0-\u2666]/g, function (c) {
return '&#' + c.charCodeAt(0) + ';';
}));
window.history.replaceState(null, null, `?${base64}`);
}
contentRequest(`/<?= $lg ?>/remote/get-collections/?${serialize}`, '#list-article', '#pagination', page => {
articleFilter['page'] = `page=${page}`;
filter()
})
}
searchBox.onChange(function (data, ids) {
if(ids) {
articleFilter['tags'] = `tags=${ids}`;
} else {
if(articleFilter['tags']) {
delete articleFilter['tags']
}
}
filter();
})
</script>
@@ -0,0 +1,84 @@
<?php
use app\models\Ts;
$lg = Yii::$app->language
/**
* @var \app\models\register\Collections $model
*/
?>
<link href="/_public/assets/css/collection-objects-greed.css" rel="stylesheet">
<link href="/_public/assets/css/article-module.css" rel="stylesheet">
<div class="content">
<div class="flex top25">
<div class="flex-left cw6">
<div class="title-list top15">
<?= Ts::get(47)?>
</div>
</div>
<div class="mobile-hide filter-buttons flex-right cw6">
<button data-render="grid" class="active"><i class="la la-grip-horizontal"></i></button>
<button data-render="list"><i class="la la-grip-lines"></i></button>
</div>
</div>
</div>
<div class="collection-greed top25">
<div class="content-out gallery" id="list-article"></div>
</div>
<div class="content">
<div id="pagination" class="filter-buttons flex-center top50"></div>
</div>
<script>
let articleFilter = {}
<?php if(!empty($partner_id)):?>
articleFilter['partner_id'] = 'partner_id=<?= $partner_id?>';
<?php endif; ?>
document.addEventListener('DOMContentLoaded', () => {
if (window.location.search) {
let serialize = atob(window.location.search.substr(1))
try {
articleFilter = JSON.parse(serialize)
} catch (e) {
console.log('Invalid query string');
}
}
console.log(articleFilter);
filter();
document.querySelectorAll('.filter-buttons button').forEach(e => {
e.addEventListener('click', () => {
const gallery = document.querySelector('.collection-greed .gallery');
document.querySelectorAll('.filter-buttons button').forEach(x => {
x.classList.remove('active');
})
if(e.dataset.render === 'list') {
gallery.classList.add('list');
} else {
gallery.classList.remove('list');
}
e.classList.add('active');
})
})
})
function filter() {
let serializeArray = [];
articleFilter.collection_id = 'collection_id=<?= $model->id?>';
Object.keys(articleFilter).forEach(key => {
if (articleFilter[key])
serializeArray.push(articleFilter[key])
})
let serialize = serializeArray.join('&')
if (serialize)
window.history.replaceState(null, null, `?${btoa(JSON.stringify(articleFilter))}`);
contentRequest(`/<?= $lg ?>/remote/get-collection-objects/?${serialize}`, '#list-article', '#pagination', page => {
articleFilter['page'] = `page=${page}`;
filter()
})
}
</script>
@@ -0,0 +1,55 @@
<?php
use app\models\Ts;
$lg = Yii::$app->language
/**
* @var \app\models\RegisterObjects $model
*
*/
?>
<link href="/_public/assets/css/collection-objects-greed.css" rel="stylesheet">
<link href="/_public/assets/css/article-module.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/hls.js@1"></script>
<script>
function streamFrame(e) {
modal.modalFrame(`<?= Yii::$app->params['media_server']?>/media/play/${e.dataset.id}/`);
}
</script>
<div class="content">
<div class="flex top25">
<div class="flex-left cw6">
<div class="title-list top15">
<?= Ts::get(240) ?>
</div>
</div>
</div>
</div>
<div class="collection-greed top25">
<div class="content-out gallery" id="video-list"></div>
</div>
<div class="content">
<div id="pagination" class="filter-buttons flex-center top50"></div>
</div>
<script>
document.addEventListener('DOMContentLoaded', () => {
videoList()
})
function videoList() {
let q = '?object_id=<?= $model->id ?>';
console.log(q);
contentRequest(`/<?= $lg ?>/remote/get-objects-models/${q}`, '#video-list', '#pagination', page => {
})
}
</script>
<!-- Or if you want the latest version from the main branch -->
<!-- <script src="https://cdn.jsdelivr.net/npm/hls.js@canary"></script> -->
@@ -0,0 +1,54 @@
<?php
use app\models\Ts;
$lg = Yii::$app->language
/**
* @var \app\models\RegisterObjects $model
*
*/
?>
<link href="/_public/assets/css/collection-objects-greed.css" rel="stylesheet">
<link href="/_public/assets/css/article-module.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/hls.js@1"></script>
<script>
function streamFrame(e) {
modal.modalFrame(`<?= Yii::$app->params['media_server']?>/media/play/${e.dataset.id}/`);
}
</script>
<div class="content">
<div class="flex top25">
<div class="flex-left cw6">
<div class="title-list top15">
<?= Ts::get(41) ?>
</div>
</div>
</div>
</div>
<div class="collection-greed top25">
<div class="content-out gallery" id="video-list"></div>
</div>
<div class="content">
<div id="pagination" class="filter-buttons flex-center top50"></div>
</div>
<script>
document.addEventListener('DOMContentLoaded', () => {
videoList()
})
function videoList() {
let q = '?object_id=<?= $model->id ?>';
console.log(q);
contentRequest(`/<?= $lg ?>/remote/get-objects-videos/${q}`, '#video-list', '#pagination', page => {
})
}
</script>
<!-- Or if you want the latest version from the main branch -->
<!-- <script src="https://cdn.jsdelivr.net/npm/hls.js@canary"></script> -->
@@ -0,0 +1,173 @@
<?php
use app\models\Ts;
use app\models\Articles;
$lg = Yii::$app->language
/**
*
*/
?>
<div class="content">
<div class="filter-buttons top50">
<button data-filter="" style="height: 0; width: 0; padding: 0 !important; overflow: hidden; opacity: 0; margin: 0 !important;"><?= Ts::get(5) ?></button>
<button data-switch="order_title=<?= $lg == 'en' ? 'ts_en_' : '' ?>name"><?= Ts::get(9) ?></button>
<button class="filter mobile-hide"><?= Ts::get(11) ?></button>
<button class="filter-mobile-btn mobile-show"><?= Ts::get(11) ?></button>
</div>
<div class="top50"></div>
</div>
<div class="content-out flex" id="list-article-library"></div>
<div class="content">
<div id="pagination" class="filter-buttons flex-center top50"></div>
</div>
<script>
let articleFilter = {}
<?php if(!empty($partner_id)):?>
articleFilter['partner_id'] = 'partner_id=<?= $partner_id?>';
<?php endif; ?>
document.addEventListener('DOMContentLoaded', () => {
if (window.location.search) {
let serialize = atob(window.location.search.substr(1))
try {
articleFilter = JSON.parse(serialize)
if(articleFilter.advance_filter === 'advance_filter=1') {
document.querySelector('.filter').classList.add('switch_on')
}
} catch (e) {
console.log('Invalid query string');
}
}
document.querySelector(`[data-filter="${articleFilter['art_table'] || ''}"]`).classList.add('active')
let switcher = document.querySelector(`[data-switch="${articleFilter['switch_on'] || ''}"]`);
if (switcher)
switcher.classList.add('switch_on')
filter();
})
document.querySelectorAll('[data-filter]').forEach(button => {
button.addEventListener('click', function () {
const active = document.querySelector('[data-filter].active');
active.classList.remove('active');
button.classList.add('active');
button.scrollIntoView()
articleFilter['art_table'] = button.dataset.filter || null
filter();
})
})
document.querySelectorAll('[data-switch]').forEach(button => {
button.addEventListener('click', () => {
if (!button.classList.contains('switch_on')) {
button.classList.add('switch_on')
articleFilter['switch_on'] = button.dataset.switch
} else {
button.classList.remove('switch_on')
articleFilter['switch_on'] = null
}
filter()
})
})
let filterBtn = document.querySelector('.filter');
let filterApplyBtn = document.querySelector('#filter-apply')
let filterClearBtn = document.querySelector('#filter-clear')
let filterMobile = document.querySelector('.filter-mobile-btn')
filterBtn.addEventListener('click', () => {
let lib = document.querySelector('.library');
let filterPanel = document.querySelector('.filter-panel')
if (lib.classList.contains('filter-open')) {
lib.classList.remove('filter-open')
filterPanel.classList.remove('show');
filterBtn.classList.remove('switch_on')
filterClear()
} else {
lib.classList.add('filter-open')
filterPanel.classList.add('show')
filterBtn.classList.add('switch_on')
}
})
filterMobile.addEventListener('click', () => {
let lib = document.querySelector('.library');
let filterPanel = document.querySelector('.filter-panel')
if(lib.classList.contains('filter-open-mobile')) {
//Close
lib.classList.remove('filter-open-mobile')
filterPanel.classList.remove('filter-mobile');
filterMobile.classList.remove('switch_on')
} else {
//Open
lib.classList.add('filter-open-mobile')
filterPanel.classList.add('filter-mobile');
filterMobile.classList.add('switch_on')
}
})
function filterApply() {
document.querySelectorAll('[data-filter-input]').forEach(input => {
console.log(input.dataset.filterInput);
articleFilter[input.dataset.filterInput] = input.dataset.filterInput + '=' + input.value
})
articleFilter['advance_filter'] = 'advance_filter=1';
filter()
filterMobile.classList.remove('switch_on')
}
function filterClear() {
articleFilter = {}
<?php if(!empty($partner_id)):?>
articleFilter['partner_id'] = 'partner_id=<?= $partner_id?>';
<?php endif; ?>
filter()
console.log(window.location.href)
if(window.location.href) {
let newUrl = window.location.href.split('?')[0]
window.history.replaceState(null, null, newUrl)
}
document.querySelector('.filter').classList.remove('switch_on')
filterMobile.classList.remove('switch_on')
}
function clearSingle(e) {
let input = e.parentNode.querySelector('[data-filter-input]');
delete articleFilter[input.dataset.filterInput];
filter();
}
function filter() {
let serializeArray = [];
Object.keys(articleFilter).forEach(key => {
if (articleFilter[key])
serializeArray.push(articleFilter[key])
})
let serialize = serializeArray.join('&')
if (serialize) {
let str = JSON.stringify(articleFilter)
let base64 = btoa(str.replace(/[\u00A0-\u2666]/g, function(c) {
return '&#' + c.charCodeAt(0) + ';';
}));
window.history.replaceState(null, null, `?${base64}`);
}
contentRequest(`/<?= $lg ?>/remote/get-e-library/?${serialize}`, '#list-article-library', '#pagination', page => {
articleFilter['page'] = `page=${page}`;
filter()
})
}
</script>
@@ -0,0 +1,116 @@
<?php
use app\models\Ts;
use app\models\Articles;
$lg = Yii::$app->language;
$categories = \app\models\ExpositionsCategories::listActive();
/**
*
*/
?>
<div class="content">
<div class="filter-buttons top50 flex-center">
<?php if ($lg == 'en'): ?>
<button data-switch="order_title=ts_en_name"><?= Ts::get(9) ?></button>
<?php else: ?>
<button data-switch="order_title=name"><?= Ts::get(9) ?></button>
<?php endif; ?>
<button data-filter=""><?= Ts::get(5) ?></button>
<?php foreach ($categories as $category): ?>
<button data-filter="category=<?= $category->id ?>"><?= $category->{$lg == 'en' ? 'name_en' : 'name'} ?></button>
<?php endforeach; ?>
<div class="tags cw3">
<select id="tags" style="display:none;" class="search-select-box" multiple>
<option disabled value=""><?= Ts::get(48)?></option>
<?php foreach (\app\models\Expositions::getTagList() as $item): ?>
<?php if(empty($item['name'])) continue; ?>
<option <?= $item['selected'] ?>
value="<?= $item['id'] ?>"><?= $item['name'] ?></option>
<?php endforeach; ?>
</select>
</div>
</div>
<div class="top50"></div>
</div>
<div class="collection-greed">
<div class="content-out gallery" id="list-article"></div>
</div>
<div class="content">
<div id="pagination" class="filter-buttons flex-center top50"></div>
</div>
<script>
let articleFilter = {}
<?php if(!empty($partner_id)):?>
articleFilter['partner_id'] = 'partner_id=<?= $partner_id?>';
<?php endif; ?>
document.addEventListener('DOMContentLoaded', () => {
if (window.location.search) {
let serialize = atob(window.location.search.substr(1))
try {
articleFilter = JSON.parse(serialize)
} catch (e) {
console.log('Invalid query string');
}
}
document.querySelector(`[data-filter="${articleFilter['art_table'] || ''}"]`).classList.add('active')
let switcher = document.querySelector(`[data-switch="${articleFilter['switch_on'] || ''}"]`);
if (switcher)
switcher.classList.add('switch_on')
filter();
})
document.querySelectorAll('[data-filter]').forEach(button => {
button.addEventListener('click', function () {
const active = document.querySelector('[data-filter].active');
active.classList.remove('active');
button.classList.add('active');
button.scrollIntoView()
articleFilter['category'] = button.dataset.filter || null
filter();
})
})
document.querySelectorAll('[data-switch]').forEach(button => {
button.addEventListener('click', () => {
if (!button.classList.contains('switch_on')) {
button.classList.add('switch_on')
articleFilter['switch_on'] = button.dataset.switch
} else {
button.classList.remove('switch_on')
articleFilter['switch_on'] = null
}
filter()
})
})
function filter() {
let serializeArray = [];
Object.keys(articleFilter).forEach(key => {
if (articleFilter[key])
serializeArray.push(articleFilter[key])
})
let serialize = serializeArray.join('&')
//if (serialize)
// window.history.replaceState(null, null, `?${btoa(JSON.stringify(articleFilter))}`);
contentRequest(`/<?= $lg ?>/remote/get-expositions/?${serialize}`, '#list-article', '#pagination', page => {
articleFilter['page'] = `page=${page}`;
filter()
})
}
</script>
<script src="/_public/assets/js/search-box.js"></script>
<script>
document.querySelectorAll('.search-select-box').forEach(el => {
const searchBox = new SearchBox(el)
searchBox.onChange(function (data, ids) {
articleFilter['tags'] = `tags=${ids}`;
filter();
})
})
</script>
@@ -0,0 +1,85 @@
<?php
use app\models\Ts;
$lg = Yii::$app->language
/**
* @var \app\models\Expositions $model
* @var null|int $parent_id
*/
?>
<link href="/_public/assets/css/collection-objects-greed.css" rel="stylesheet">
<link href="/_public/assets/css/article-module.css" rel="stylesheet">
<div class="content">
<div class="flex top25 cw6">
<div class="flex-left">
<div class="title-list top15">
<?= Ts::get(47)?>
</div>
</div>
<div class="filter-buttons flex-right cw6 mobile-hide">
<button data-render="grid" class="active"><i class="la la-grip-horizontal"></i></button>
<button data-render="list"><i class="la la-grip-lines"></i></button>
</div>
</div>
</div>
<div class="collection-greed top25">
<div class="content-out gallery" id="list-article"></div>
</div>
<div class="content">
<div id="pagination" class="filter-buttons flex-center top50"></div>
</div>
<script>
let articleFilter = {}
<?php if(!empty($partner_id)):?>
articleFilter['partner_id'] = 'partner_id=<?= $partner_id?>';
<?php endif; ?>
document.addEventListener('DOMContentLoaded', () => {
if (window.location.search) {
let serialize = atob(window.location.search.substr(1))
try {
articleFilter = JSON.parse(serialize)
} catch (e) {
console.log('Invalid query string');
}
}
console.log(articleFilter);
filter();
document.querySelectorAll('.filter-buttons button').forEach(e => {
e.addEventListener('click', () => {
const gallery = document.querySelector('.collection-greed .gallery');
document.querySelectorAll('.filter-buttons button').forEach(x => {
x.classList.remove('active');
})
if(e.dataset.render === 'list') {
gallery.classList.add('list');
} else {
gallery.classList.remove('list');
}
e.classList.add('active');
})
})
})
function filter() {
let serializeArray = [];
articleFilter.exposition_id = 'exposition_id=<?= $model->id?>';
Object.keys(articleFilter).forEach(key => {
if (articleFilter[key])
serializeArray.push(articleFilter[key])
})
let serialize = serializeArray.join('&')
if (serialize)
window.history.replaceState(null, null, `?${btoa(JSON.stringify(articleFilter))}`);
contentRequest(`/<?= $lg ?>/remote/get-exposition-objects/?${serialize}`, '#list-article', '#pagination', page => {
articleFilter['page'] = `page=${page}`;
filter()
})
}
</script>
@@ -0,0 +1,26 @@
<?php
/**
* @var \app\models\RegisterObjects $model
*/
use app\services\JWT;
$lg = Yii::$app->language;
$poster = $model->getMainImgFile();
?>
<link rel="stylesheet" href="/_public/assets/css/user.css">
<div class="top25">
<?php foreach ($model->pdfDocuments as $pdf): ?>
<div class="e-book-panel">
<div class="poster"><img src="<?= $poster ?>"></div>
<div style="padding-left: 30px">
<div class="title-list"><?= $lg=='en' ?'E-book' :'Електрона книга'?></div>
<div class="padding10">
<div data-pdf="<?= JWT::encode(['id' => $pdf->id], JWT::SECRET_KEY) ?>"
class="profile-submit gradient ct"><i class="la la-book-open"></i> <?= $lg == 'en' ? 'Read' : 'Прочети' ?>
</div>
</div>
</div>
</div>
<?php endforeach; ?>
</div>
@@ -0,0 +1,89 @@
<?php
use app\models\Ts;
use app\models\Articles;
$lg = Yii::$app->language
/**
*
*/
?>
<div class="content">
<div class="filter-buttons top50">
<button style="display: none" data-filter=""><?= Ts::get(5) ?></button>
<button data-switch="order_title=title<?= $lg == 'en' ? '_en' : '' ?>"><?= Ts::get(9) ?></button>
</div>
<div class="top50"></div>
</div>
<div class="content-out" id="list-article"></div>
<div class="content">
<div id="pagination" class="filter-buttons flex-center top50"></div>
</div>
<script>
let articleFilter = {}
<?php if(!empty($partner_id)):?>
articleFilter['partner_id'] = 'partner_id=<?= $partner_id?>';
<?php endif; ?>
document.addEventListener('DOMContentLoaded', () => {
if (window.location.search) {
let serialize = atob(window.location.search.substr(1))
try {
articleFilter = JSON.parse(serialize)
} catch (e) {
console.log('Invalid query string');
}
}
console.log(articleFilter);
document.querySelector(`[data-filter="${articleFilter['art_table'] || ''}"]`).classList.add('active')
let switcher = document.querySelector(`[data-switch="${articleFilter['switch_on'] || ''}"]`);
if (switcher)
switcher.classList.add('switch_on')
filter();
})
document.querySelectorAll('[data-filter]').forEach(button => {
button.addEventListener('click', function () {
const active = document.querySelector('[data-filter].active');
active.classList.remove('active');
button.classList.add('active');
button.scrollIntoView()
articleFilter['art_table'] = button.dataset.filter || null
filter();
})
})
document.querySelectorAll('[data-switch]').forEach(button => {
button.addEventListener('click', () => {
if (!button.classList.contains('switch_on')) {
button.classList.add('switch_on')
articleFilter['switch_on'] = button.dataset.switch
} else {
button.classList.remove('switch_on')
articleFilter['switch_on'] = null
}
filter()
})
})
function filter() {
let serializeArray = [];
Object.keys(articleFilter).forEach(key => {
if (articleFilter[key])
serializeArray.push(articleFilter[key])
})
let serialize = serializeArray.join('&')
if (serialize)
window.history.replaceState(null, null, `?${btoa(JSON.stringify(articleFilter))}`);
contentRequest(`/<?= $lg ?>/remote/get-projects/?${serialize}`, '#list-article', '#pagination', page => {
articleFilter['page'] = `page=${page}`;
filter()
})
}
</script>
@@ -0,0 +1 @@
<?php
@@ -0,0 +1,103 @@
<?php
use app\models\UserFavorites;
use app\services\Auth;
use app\models\Ts;
$fid = isset($model) ? $model->id : '';
$table = isset($model) ? $model->getTableName() : '';
$userFavorite = null;
$lg = Yii::$app->language;
if (!empty($fid) && !empty($table)) {
if (Auth::getUser()) {
$user = Auth::getUser();
$userFavorite = UserFavorites::find()->where(['table' => $table, 'fid' => $fid, 'user_id' => $user->id])->one();
}
}
$hoverLabels = [
'favorites' => [
'bg' => 'Запазване в любими',
'en' => 'Save to favorites'
],
'copy_link' => [
'bg' => 'Копиране връзка',
'en' => 'Copy link',
],
'share' => [
'bg' => 'Споделяне на страница',
'en' => 'Share a page'
],
'copy_message' => [
'bg' => 'Връзката е копирана успешно',
'en' => 'Link copied successfully'
]
]
?>
<div class="flex flex-center relation-buttons">
<?php if (empty($_SESSION['register_user'])): ?>
<div data-hover-title="<?= $hoverLabels['share'][$lg] ?>" data-fid="<?= $fid ?>" data-table="<?= $table ?>"
class="fvt la <?= $userFavorite ? 'la-heart' : 'la-heart-o' ?>"></div>
<?php endif; ?>
<div onclick="copyLink()" data-hover-title="<?= $hoverLabels['copy_link'][$lg] ?>" class="la la-link"></div>
<div onclick="shareLink()" data-hover-title="<?= $hoverLabels['share'][$lg] ?>" class="la la-share-alt-square"></div>
</div>
<script>
const fvt = document.querySelector('.fvt')
const lg = '<?= $lg ?>'
fvt.addEvents({
click: () => {
<?php if(!Auth::getUser()): ?>
flash.warning('<?= Ts::get(223) ?> <a style=\'color: #ffffff\' href=\'<?= Yii::$app->goToAction('user/login') ?>\'><?= $lg == 'en' ? 'Log in' : 'Вход' ?></a>')
<?php else: ?>
updateFavorites(fvt.dataset.fid, fvt.dataset.table)
<?php endif; ?>
}
})
function updateFavorites(fid, table) {
if (fid && table) {
const xhr = new XMLHttpRequest();
xhr.open('post', '/<?= $lg ?>/remote/favorites/')
xhr.responseType = 'json'
xhr.onload = () => {
const messageAdd = {
bg: 'Страницата е добавена в любими',
en: 'The webpage is added to favorites'
}
const messageRemove = {
bg: 'Страницата е премахната от любими',
en: 'The webpage is remove from favorites'
}
if (xhr.response && xhr.response.action) {
switch (xhr.response.action) {
case 'add':
flash.success(messageAdd[lg])
break;
case 'remove':
flash.success(messageRemove[lg])
break
}
fvt.switchClass('la-heart-o', 'la-heart')
}
}
xhr.send(JSON.stringify({fid, table}))
}
}
function copyLink() {
navigator.clipboard.writeText(window.location.href);
flash.success('<?= $hoverLabels['copy_message'][$lg] ?>');
}
function shareLink () {
var url = window.location.href
window.open('http://facebook.com/sharer/sharer.php?u='+encodeURIComponent(url), '', 'left=0,top=0,width=650,height=420,personalbar=0,toolbar=0,scrollbars=0,resizable=0');
}
</script>