Commit c4d70d93c9b3a481420738d826ad2b3ddbcff316

Authored by Anastasia
1 parent 4368a120

- blog

- forms
- gallery
common/models/event/Tag.php
... ... @@ -102,7 +102,7 @@
102 102 */
103 103 public function getLanguages()
104 104 {
105   - return $this->hasMany(TagLang::className(), [ 'blog_tag_id' => 'id' ]);
  105 + return $this->hasMany(TagLang::className(), [ 'event_tag_id' => 'id' ]);
106 106 }
107 107  
108 108 /**
... ...
console/migrations/m180403_141700_add_page_columns.php
... ... @@ -12,8 +12,8 @@ class m180403_141700_add_page_columns extends Migration
12 12 */
13 13 public function safeUp()
14 14 {
15   - $this->addColumn('page','updated_at', $this->timestamp());
16   - $this->addColumn('page','created_at', $this->timestamp());
  15 + $this->addColumn('page','updated_at', $this->string());
  16 + $this->addColumn('page','created_at', $this->string());
17 17 }
18 18  
19 19 /**
... ...
frontend/assets/GalleryAsset.php 0 → 100644
  1 +<?php
  2 + /**
  3 + * Created by PhpStorm.
  4 + * User: stes
  5 + * Date: 07.05.18
  6 + * Time: 17:29
  7 + */
  8 +
  9 + namespace frontend\assets;
  10 +
  11 + use yii\web\AssetBundle;
  12 +
  13 + class GalleryAsset extends AssetBundle
  14 + {
  15 + public $basePath = '@webroot';
  16 + public $baseUrl = '@web';
  17 + public $css = [
  18 + 'css/photoswipe.css'
  19 + ];
  20 + public $js = [
  21 + 'js/photoswipe.min.js',
  22 + 'js/photoswipe-ui-default.min.js',
  23 + 'js/gallery.js'
  24 + ];
  25 + public $depends = [
  26 + 'frontend\assets\AppAsset',
  27 + ];
  28 + }
0 29 \ No newline at end of file
... ...
frontend/config/main.php
... ... @@ -56,16 +56,19 @@
56 56 'options' => [],
57 57 ],
58 58 ],
  59 + 'buttonContent' => 'Send',
59 60 'scenario' => 'feedback',
60 61 'sendEmail' => false,
61 62 'formId' => 'feedback-form',
62 63 'ajax' => true,
63 64 'successCallback' => 'function (data) {
  65 + document.getElementById("feedback-form").reset();
64 66 $(".close").click();
65 67 $(".success_").animate({opacity: 1, top: \'40\'}, 200).addClass("done_");
66 68 setTimeout(function(){$(".success_").animate({opacity: 0, top: \'0\'}, 200,function(){
67 69 $(this).removeClass("done_");
68 70 })}, 4000);
  71 +
69 72 }',
70 73 ],
71 74  
... ... @@ -126,6 +129,7 @@
126 129 'formId' => 'contact-form',
127 130 'scenario' => 'default',
128 131 'successCallback' => 'function (data) {
  132 + document.getElementById("contact-form").reset();
129 133 $(".close").click();
130 134 $(".success_").animate({opacity: 1, top: \'40\'}, 200).addClass("done_");
131 135 setTimeout(function(){$(".success_").animate({opacity: 0, top: \'0\'}, 200,function(){
... ...
frontend/controllers/GalleryController.php 0 → 100644
  1 +<?php
  2 + /**
  3 + * Created by PhpStorm.
  4 + * User: stes
  5 + * Date: 07.05.18
  6 + * Time: 17:08
  7 + */
  8 +
  9 + namespace frontend\controllers;
  10 +
  11 + use common\models\Gallery;
  12 + use yii\web\Controller;
  13 +
  14 + class GalleryController extends Controller
  15 + {
  16 + public function actionIndex(){
  17 + $images = Gallery::find()->with('language')->where(['status' => true])->orderBy('sort')->all();
  18 + return $this->render('index', [
  19 + 'images' => $images
  20 + ]);
  21 + }
  22 + }
0 23 \ No newline at end of file
... ...
frontend/views/event/tag.php
... ... @@ -18,7 +18,7 @@
18 18  
19 19 $this->params[ 'breadcrumbs' ][] = [
20 20 'label' => \Yii::t('app', 'Events'),
21   - 'url' => [ 'blog/index' ],
  21 + 'url' => [ 'event/index' ],
22 22 ];
23 23  
24 24 $this->params[ 'breadcrumbs' ][] = $seo->title;
... ...
frontend/views/event/view.php
... ... @@ -13,7 +13,7 @@
13 13  
14 14 $this->params[ 'breadcrumbs' ][] = [
15 15 'label' => \Yii::t('app', 'Events'),
16   - 'url' => [ 'blog/index' ],
  16 + 'url' => [ 'event/index' ],
17 17 ];
18 18  
19 19 $this->params[ 'breadcrumbs' ][] = $model->title;
... ...
frontend/views/gallery/index.php 0 → 100644
  1 +<?php
  2 + /**
  3 + * @var \common\models\Gallery[] $images;
  4 + */
  5 + use artbox\core\helpers\ImageHelper;
  6 + use frontend\assets\GalleryAsset;
  7 +
  8 + $this->params[ 'breadcrumbs' ][] = \Yii::t('app', 'Gallery');
  9 + GalleryAsset::register($this);
  10 + ?>
  11 +
  12 +
  13 +
  14 +
  15 +<div id="content">
  16 + <div class="container">
  17 + <div class="row">
  18 + <div class="col-md-12">
  19 + <div class="my-gallery" itemscope itemtype="http://schema.org/ImageGallery">
  20 + <?php foreach ($images as $gallery){?>
  21 + <figure class="reviews_gallery">
  22 + <a href="<?=$gallery->image->getUrl()?>" itemprop="contentUrl" data-size="<?= getimagesize(
  23 + $gallery->image->getPath()
  24 + )[ 0 ] ?>x<?= getimagesize($gallery->image->getPath()
  25 + )[ 1 ] ?>">
  26 + <img src="<?= ImageHelper::set($gallery->image->getPath())
  27 + ->resize(360, 216)
  28 + ->quality(82)
  29 + ->render(
  30 + ) ?>" itemprop="thumbnail" alt="<?=$gallery->title?>"/>
  31 + </a>
  32 + </figure>
  33 + <?php }?>
  34 + </div>
  35 + </div>
  36 + </div>
  37 + </div>
  38 +</div>
  39 +
  40 +<div class="pswp" tabindex="-1" role="dialog" aria-hidden="true">
  41 +
  42 + <div class="pswp__bg"></div>
  43 +
  44 + <div class="pswp__scroll-wrap">
  45 +
  46 + <div class="pswp__container">
  47 + <div class="pswp__item"></div>
  48 + <div class="pswp__item"></div>
  49 + <div class="pswp__item"></div>
  50 + </div>
  51 +
  52 + <div class="pswp__ui pswp__ui--hidden">
  53 + <div class="pswp__top-bar">
  54 +
  55 + <div class="pswp__counter"></div>
  56 + <button class="pswp__button pswp__button--close" title="Close (Esc)"></button>
  57 + <button class="pswp__button pswp__button--share" title="Share"></button>
  58 + <button class="pswp__button pswp__button--fs" title="Toggle fullscreen"></button>
  59 + <button class="pswp__button pswp__button--zoom" title="Zoom in/out"></button>
  60 +
  61 +
  62 + <div class="pswp__preloader">
  63 + <div class="pswp__preloader__icn">
  64 + <div class="pswp__preloader__cut">
  65 + <div class="pswp__preloader__donut"></div>
  66 + </div>
  67 + </div>
  68 + </div>
  69 + </div>
  70 + <div class="pswp__share-modal pswp__share-modal--hidden pswp__single-tap">
  71 + <div class="pswp__share-tooltip"></div>
  72 + </div>
  73 + <button class="pswp__button pswp__button--arrow--left" title="Previous (arrow left)">
  74 + </button>
  75 + <button class="pswp__button pswp__button--arrow--right" title="Next (arrow right)">
  76 + </button>
  77 + <div class="pswp__caption">
  78 + <div class="pswp__caption__center"></div>
  79 + </div>
  80 + </div>
  81 + </div>
  82 +</div>
  83 +
... ...
frontend/views/site/index.php
... ... @@ -24,7 +24,7 @@ _________________________________________________________ --&gt;
24 24 <div class="homepage owl-carousel" >
25 25  
26 26 <?php foreach ($slides as $key => $slide){?>
27   - <div class="home-carousel" style="background: url(<?=$slide->background->getPath()?>) center center repeat">
  27 + <div class="home-carousel" style="background: url(<?=$slide->background->getUrl()?>) center center repeat">
28 28 <div class="item">
29 29 <div class="row">
30 30 <div class="col-sm-5 <?=($key%2 == 0) ? 'right' : ''?>">
... ...
frontend/web/js/gallery.js 0 → 100644
  1 +var initPhotoSwipeFromDOM = function(gallerySelector) {
  2 + // parse slide data (url, title, size ...) from DOM elements
  3 + // (children of gallerySelector)
  4 + var parseThumbnailElements = function(el) {
  5 + var thumbElements = el.childNodes, numNodes = thumbElements.length, items = [], figureEl, linkEl, size, item;
  6 + for (var i = 0; i < numNodes; i++) {
  7 + figureEl = thumbElements[ i ]; // <figure> element
  8 + // include only element nodes
  9 + if (figureEl.nodeType !== 1) {
  10 + continue;
  11 + }
  12 + linkEl = figureEl.children[ 0 ]; // <a> element
  13 + size = linkEl.getAttribute('data-size')
  14 + .split('x');
  15 + // create slide object
  16 + item = {
  17 + src: linkEl.getAttribute('href'),
  18 + w: parseInt(size[ 0 ], 10),
  19 + h: parseInt(size[ 1 ], 10)
  20 + };
  21 + if (figureEl.children.length > 1) {
  22 + // <figcaption> content
  23 + item.title = figureEl.children[ 1 ].innerHTML;
  24 + }
  25 + if (linkEl.children.length > 0) {
  26 + // <img> thumbnail element, retrieving thumbnail url
  27 + item.msrc = linkEl.children[ 0 ].getAttribute('src');
  28 + }
  29 + item.el = figureEl; // save link to element for getThumbBoundsFn
  30 + items.push(item);
  31 + }
  32 + return items;
  33 + };
  34 + // find nearest parent element
  35 + var closest = function closest(el, fn) {
  36 + return el && ( fn(el) ? el : closest(el.parentNode, fn) );
  37 + };
  38 + // triggers when user clicks on thumbnail
  39 + var onThumbnailsClick = function(e) {
  40 + e = e || window.event;
  41 + e.preventDefault ? e.preventDefault() : e.returnValue = false;
  42 + var eTarget = e.target || e.srcElement;
  43 + // find root element of slide
  44 + var clickedListItem = closest(
  45 + eTarget, function(el) {
  46 + return (el.tagName && el.tagName.toUpperCase() === 'FIGURE');
  47 + }
  48 + );
  49 + if (!clickedListItem) {
  50 + return;
  51 + }
  52 + // find index of clicked item by looping through all child nodes
  53 + // alternatively, you may define index via data- attribute
  54 + var clickedGallery = clickedListItem.parentNode, childNodes = clickedListItem.parentNode.childNodes, numChildNodes = childNodes.length, nodeIndex = 0, index;
  55 + for (var i = 0; i < numChildNodes; i++) {
  56 + if (childNodes[ i ].nodeType !== 1) {
  57 + continue;
  58 + }
  59 + if (childNodes[ i ] === clickedListItem) {
  60 + index = nodeIndex;
  61 + break;
  62 + }
  63 + nodeIndex++;
  64 + }
  65 + if (index >= 0) {
  66 + // open PhotoSwipe if valid index found
  67 + openPhotoSwipe(index, clickedGallery);
  68 + }
  69 + return false;
  70 + };
  71 + // parse picture index and gallery index from URL (#&pid=1&gid=2)
  72 + var photoswipeParseHash = function() {
  73 + var hash = window.location.hash.substring(1), params = {};
  74 + if (hash.length < 5) {
  75 + return params;
  76 + }
  77 + var vars = hash.split('&');
  78 + for (var i = 0; i < vars.length; i++) {
  79 + if (!vars[ i ]) {
  80 + continue;
  81 + }
  82 + var pair = vars[ i ].split('=');
  83 + if (pair.length < 2) {
  84 + continue;
  85 + }
  86 + params[ pair[ 0 ] ] = pair[ 1 ];
  87 + }
  88 + if (params.gid) {
  89 + params.gid = parseInt(params.gid, 10);
  90 + }
  91 + return params;
  92 + };
  93 + var openPhotoSwipe = function(index, galleryElement, disableAnimation, fromURL) {
  94 + var pswpElement = document.querySelectorAll('.pswp')[ 0 ], gallery, options, items;
  95 + items = parseThumbnailElements(galleryElement);
  96 + // define options (if needed)
  97 + options = {
  98 + // define gallery index (for URL)
  99 + galleryUID: galleryElement.getAttribute('data-pswp-uid'),
  100 + getThumbBoundsFn: function(index) {
  101 + // See Options -> getThumbBoundsFn section of documentation for more info
  102 + var thumbnail = items[ index ].el.getElementsByTagName('img')[ 0 ], // find thumbnail
  103 + pageYScroll = window.pageYOffset || document.documentElement.scrollTop, rect = thumbnail.getBoundingClientRect();
  104 + return {
  105 + x: rect.left,
  106 + y: rect.top + pageYScroll,
  107 + w: rect.width
  108 + };
  109 + }
  110 + };
  111 + // PhotoSwipe opened from URL
  112 + if (fromURL) {
  113 + if (options.galleryPIDs) {
  114 + // parse real index when custom PIDs are used
  115 + // http://photoswipe.com/documentation/faq.html#custom-pid-in-url
  116 + for (var j = 0; j < items.length; j++) {
  117 + if (items[ j ].pid == index) {
  118 + options.index = j;
  119 + break;
  120 + }
  121 + }
  122 + } else {
  123 + // in URL indexes start from 1
  124 + options.index = parseInt(index, 10) - 1;
  125 + }
  126 + } else {
  127 + options.index = parseInt(index, 10);
  128 + }
  129 + // exit if index not found
  130 + if (isNaN(options.index)) {
  131 + return;
  132 + }
  133 + if (disableAnimation) {
  134 + options.showAnimationDuration = 0;
  135 + }
  136 + // Pass data to PhotoSwipe and initialize it
  137 + gallery = new PhotoSwipe(pswpElement, PhotoSwipeUI_Default, items, options);
  138 + gallery.init();
  139 + };
  140 + // loop through all gallery elements and bind events
  141 + var galleryElements = document.querySelectorAll(gallerySelector);
  142 + for (var i = 0, l = galleryElements.length; i < l; i++) {
  143 + galleryElements[ i ].setAttribute('data-pswp-uid', i + 1);
  144 + galleryElements[ i ].onclick = onThumbnailsClick;
  145 + }
  146 + // Parse URL and open gallery if it contains #&pid=3&gid=1
  147 + var hashData = photoswipeParseHash();
  148 + if (hashData.pid && hashData.gid) {
  149 + openPhotoSwipe(hashData.pid, galleryElements[ hashData.gid - 1 ], true, true);
  150 + }
  151 +};
  152 +// execute above function
  153 +initPhotoSwipeFromDOM('.my-gallery');
... ...