diff --git a/common/models/event/Tag.php b/common/models/event/Tag.php
index 1c0b7c0..d9e3f75 100755
--- a/common/models/event/Tag.php
+++ b/common/models/event/Tag.php
@@ -102,7 +102,7 @@
*/
public function getLanguages()
{
- return $this->hasMany(TagLang::className(), [ 'blog_tag_id' => 'id' ]);
+ return $this->hasMany(TagLang::className(), [ 'event_tag_id' => 'id' ]);
}
/**
diff --git a/console/migrations/m180403_141700_add_page_columns.php b/console/migrations/m180403_141700_add_page_columns.php
index cf9801d..d8852e9 100644
--- a/console/migrations/m180403_141700_add_page_columns.php
+++ b/console/migrations/m180403_141700_add_page_columns.php
@@ -12,8 +12,8 @@ class m180403_141700_add_page_columns extends Migration
*/
public function safeUp()
{
- $this->addColumn('page','updated_at', $this->timestamp());
- $this->addColumn('page','created_at', $this->timestamp());
+ $this->addColumn('page','updated_at', $this->string());
+ $this->addColumn('page','created_at', $this->string());
}
/**
diff --git a/frontend/assets/GalleryAsset.php b/frontend/assets/GalleryAsset.php
new file mode 100644
index 0000000..2671f25
--- /dev/null
+++ b/frontend/assets/GalleryAsset.php
@@ -0,0 +1,28 @@
+ [],
],
],
+ 'buttonContent' => 'Send',
'scenario' => 'feedback',
'sendEmail' => false,
'formId' => 'feedback-form',
'ajax' => true,
'successCallback' => 'function (data) {
+ document.getElementById("feedback-form").reset();
$(".close").click();
$(".success_").animate({opacity: 1, top: \'40\'}, 200).addClass("done_");
setTimeout(function(){$(".success_").animate({opacity: 0, top: \'0\'}, 200,function(){
$(this).removeClass("done_");
})}, 4000);
+
}',
],
@@ -126,6 +129,7 @@
'formId' => 'contact-form',
'scenario' => 'default',
'successCallback' => 'function (data) {
+ document.getElementById("contact-form").reset();
$(".close").click();
$(".success_").animate({opacity: 1, top: \'40\'}, 200).addClass("done_");
setTimeout(function(){$(".success_").animate({opacity: 0, top: \'0\'}, 200,function(){
diff --git a/frontend/controllers/GalleryController.php b/frontend/controllers/GalleryController.php
new file mode 100644
index 0000000..1138495
--- /dev/null
+++ b/frontend/controllers/GalleryController.php
@@ -0,0 +1,22 @@
+with('language')->where(['status' => true])->orderBy('sort')->all();
+ return $this->render('index', [
+ 'images' => $images
+ ]);
+ }
+ }
\ No newline at end of file
diff --git a/frontend/views/event/tag.php b/frontend/views/event/tag.php
index 537579d..deec7fd 100755
--- a/frontend/views/event/tag.php
+++ b/frontend/views/event/tag.php
@@ -18,7 +18,7 @@
$this->params[ 'breadcrumbs' ][] = [
'label' => \Yii::t('app', 'Events'),
- 'url' => [ 'blog/index' ],
+ 'url' => [ 'event/index' ],
];
$this->params[ 'breadcrumbs' ][] = $seo->title;
diff --git a/frontend/views/event/view.php b/frontend/views/event/view.php
index 6f49096..2618f3a 100755
--- a/frontend/views/event/view.php
+++ b/frontend/views/event/view.php
@@ -13,7 +13,7 @@
$this->params[ 'breadcrumbs' ][] = [
'label' => \Yii::t('app', 'Events'),
- 'url' => [ 'blog/index' ],
+ 'url' => [ 'event/index' ],
];
$this->params[ 'breadcrumbs' ][] = $model->title;
diff --git a/frontend/views/gallery/index.php b/frontend/views/gallery/index.php
new file mode 100644
index 0000000..0960878
--- /dev/null
+++ b/frontend/views/gallery/index.php
@@ -0,0 +1,83 @@
+params[ 'breadcrumbs' ][] = \Yii::t('app', 'Gallery');
+ GalleryAsset::register($this);
+ ?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/frontend/views/site/index.php b/frontend/views/site/index.php
index 078fc8f..f160ec7 100755
--- a/frontend/views/site/index.php
+++ b/frontend/views/site/index.php
@@ -24,7 +24,7 @@ _________________________________________________________ -->
$slide){?>
-
+
diff --git a/frontend/web/js/gallery.js b/frontend/web/js/gallery.js
new file mode 100644
index 0000000..389128d
--- /dev/null
+++ b/frontend/web/js/gallery.js
@@ -0,0 +1,153 @@
+var initPhotoSwipeFromDOM = function(gallerySelector) {
+ // parse slide data (url, title, size ...) from DOM elements
+ // (children of gallerySelector)
+ var parseThumbnailElements = function(el) {
+ var thumbElements = el.childNodes, numNodes = thumbElements.length, items = [], figureEl, linkEl, size, item;
+ for (var i = 0; i < numNodes; i++) {
+ figureEl = thumbElements[ i ]; //
element
+ // include only element nodes
+ if (figureEl.nodeType !== 1) {
+ continue;
+ }
+ linkEl = figureEl.children[ 0 ]; // element
+ size = linkEl.getAttribute('data-size')
+ .split('x');
+ // create slide object
+ item = {
+ src: linkEl.getAttribute('href'),
+ w: parseInt(size[ 0 ], 10),
+ h: parseInt(size[ 1 ], 10)
+ };
+ if (figureEl.children.length > 1) {
+ // content
+ item.title = figureEl.children[ 1 ].innerHTML;
+ }
+ if (linkEl.children.length > 0) {
+ //
thumbnail element, retrieving thumbnail url
+ item.msrc = linkEl.children[ 0 ].getAttribute('src');
+ }
+ item.el = figureEl; // save link to element for getThumbBoundsFn
+ items.push(item);
+ }
+ return items;
+ };
+ // find nearest parent element
+ var closest = function closest(el, fn) {
+ return el && ( fn(el) ? el : closest(el.parentNode, fn) );
+ };
+ // triggers when user clicks on thumbnail
+ var onThumbnailsClick = function(e) {
+ e = e || window.event;
+ e.preventDefault ? e.preventDefault() : e.returnValue = false;
+ var eTarget = e.target || e.srcElement;
+ // find root element of slide
+ var clickedListItem = closest(
+ eTarget, function(el) {
+ return (el.tagName && el.tagName.toUpperCase() === 'FIGURE');
+ }
+ );
+ if (!clickedListItem) {
+ return;
+ }
+ // find index of clicked item by looping through all child nodes
+ // alternatively, you may define index via data- attribute
+ var clickedGallery = clickedListItem.parentNode, 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) {
+ // open PhotoSwipe if valid index found
+ openPhotoSwipe(index, clickedGallery);
+ }
+ return false;
+ };
+ // parse picture index and gallery index from URL (#&pid=1&gid=2)
+ var photoswipeParseHash = function() {
+ var hash = window.location.hash.substring(1), params = {};
+ if (hash.length < 5) {
+ 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 = {
+ // define gallery index (for URL)
+ galleryUID: galleryElement.getAttribute('data-pswp-uid'),
+ getThumbBoundsFn: function(index) {
+ // See Options -> getThumbBoundsFn section of documentation for more info
+ var thumbnail = items[ index ].el.getElementsByTagName('img')[ 0 ], // find thumbnail
+ pageYScroll = window.pageYOffset || document.documentElement.scrollTop, rect = thumbnail.getBoundingClientRect();
+ return {
+ x: rect.left,
+ y: rect.top + pageYScroll,
+ w: rect.width
+ };
+ }
+ };
+ // PhotoSwipe opened from URL
+ 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 {
+ // in URL indexes start from 1
+ options.index = parseInt(index, 10) - 1;
+ }
+ } else {
+ options.index = parseInt(index, 10);
+ }
+ // exit if index not found
+ if (isNaN(options.index)) {
+ return;
+ }
+ if (disableAnimation) {
+ options.showAnimationDuration = 0;
+ }
+ // Pass data to PhotoSwipe and initialize it
+ gallery = new PhotoSwipe(pswpElement, PhotoSwipeUI_Default, items, options);
+ gallery.init();
+ };
+ // loop through all gallery elements and bind events
+ 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);
+ }
+};
+// execute above function
+initPhotoSwipeFromDOM('.my-gallery');
--
libgit2 0.21.4