+
+
+
+
+ $this)); ?>
+
+ items)) : ?>
+
+
+
+
+
+
+
+ |
+ ', 'a.ordering', $listDirn, $listOrder); ?>
+ |
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+
+
+
+ |
+ pagination->getListFooter(); ?>
+ |
+
+
+
+
+ items)) : ?>
+ items as $i => $item) :
+ $item->max_ordering = 0;
+ $ordering = ($listOrder == 'a.ordering');
+ $canEdit = $user->authorise('core.edit', 'com_sppagebuilder.page.' . $item->id) || ($user->authorise('core.edit.own', 'com_speasyimagegallery.album.' . $item->id) && $item->created_by == $userId);
+ $canCheckin = $user->authorise('core.manage', 'com_checkin') || $item->checked_out == $userId || $item->checked_out == 0;
+ $canChange = $user->authorise('core.edit.state', 'com_sppagebuilder.page.' . $item->id) && $canCheckin;
+ $link = JRoute::_('index.php?option=com_speasyimagegallery&task=album.edit&id=' . $item->id);
+ ?>
+
+ |
+
+
+
+
+
+
+
+ |
+
+ id); ?>
+ |
+
+
+ |
+
+ checked_out) : ?>
+ editor, $item->checked_out_time, 'albums.', $canCheckin); ?>
+
+
+
+
+ escape($item->title); ?>
+
+
+ escape($item->title); ?>
+
+
+
+ escape($item->alias)); ?>
+
+ catid) : ?>
+
+ escape($item->category_title); ?>
+
+
+ |
+
+ escape($item->access_title); ?>
+ |
+
+
+ escape($item->author_name); ?>
+ |
+
+ created > 0 ? JHtml::_('date', $item->created, JText::_('DATE_FORMAT_LC4')) : '-';
+ ?>
+ |
+
+ language == '*') : ?>
+
+
+ language_title ? $this->escape($item->language_title) : JText::_('JUNDEFINED'); ?>
+
+ |
+
+
+ hits; ?>
+
+ |
+
+
+ published, $i, 'albums.', $canChange);?>
+ |
+
+
+ id; ?>
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/views/albums/view.html.php b/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/views/albums/view.html.php
new file mode 100644
index 00000000..3e0e43a3
--- /dev/null
+++ b/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/views/albums/view.html.php
@@ -0,0 +1,81 @@
+items = $this->get('Items');
+ $this->pagination = $this->get('Pagination');
+ $this->state = $this->get('State');
+ $this->filter_order = $app->getUserStateFromRequest($context.'filter_order', 'filter_order', 'id', 'cmd');
+ $this->filter_order_Dir = $app->getUserStateFromRequest($context.'filter_order_Dir', 'filter_order_Dir', 'desc', 'cmd');
+ $this->filterForm = $this->get('FilterForm');
+ $this->activeFilters = $this->get('ActiveFilters');
+
+ $this->canDo = SpeasyimagegalleryHelper::getActions();
+
+ // Check for errors.
+ if (count($errors = $this->get('Errors')))
+ {
+ JError::raiseError(500, implode('
', $errors));
+ return false;
+ }
+
+ // Set the submenu
+ SpeasyimagegalleryHelper::addSubmenu('albums');
+ $this->addToolBar();
+ $this->sidebar = JHtmlSidebar::render();
+
+ return parent::display($tpl);
+
+ }
+
+ protected function addToolBar()
+ {
+ JToolBarHelper::title(JText::_('COM_SPEASYIMAGEGALLERY_MANAGER') . JText::_('COM_SPEASYIMAGEGALLERY_MANAGER_ALBUMS'), 'pictures');
+
+ if ($this->canDo->get('core.create'))
+ {
+ JToolBarHelper::addNew('album.add', 'JTOOLBAR_NEW');
+ }
+ if ($this->canDo->get('core.edit'))
+ {
+ JToolBarHelper::editList('album.edit', 'JTOOLBAR_EDIT');
+ }
+
+ if ($this->state->get('filter.published') == -2 && $this->canDo->get('core.delete')) {
+ JToolbarHelper::deleteList('', 'albums.delete', 'JTOOLBAR_EMPTY_TRASH');
+ } elseif ($this->canDo->get('core.edit.state')) {
+ JToolbarHelper::trash('albums.trash');
+ }
+
+ if ($this->canDo->get('core.admin'))
+ {
+ JToolBarHelper::divider();
+ JToolBarHelper::preferences('com_speasyimagegallery');
+ }
+ }
+}
diff --git a/deployed/speasyimagegallery/components/com_speasyimagegallery/assets/css/style-min.css b/deployed/speasyimagegallery/components/com_speasyimagegallery/assets/css/style-min.css
new file mode 100644
index 00000000..d7707e4c
--- /dev/null
+++ b/deployed/speasyimagegallery/components/com_speasyimagegallery/assets/css/style-min.css
@@ -0,0 +1,7 @@
+/**
+* @package com_spsimplephotogallery
+* @author JoomShaper http://www.joomshaper.com
+* @copyright Copyright (c) 2010 - 2017 JoomShaper
+* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or later
+*/
+.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;content:"";line-height:0}.clearfix:after{clear:both}.speasyimagegallery-album{float:left;display:block}.speasyimagegallery-album-description{font-size:14px;line-height:1.4;margin-bottom:20px}.speasyimagegallery-album > div > a{display:block;position:relative}.speasyimagegallery-album > div img{width:100%}.speasyimagegallery-album > div > a:after{content:" ";position:absolute;top:0;left:0;right:0;bottom:0;background:-moz-linear-gradient(top,rgba(0,0,0,0) 0%,rgba(0,0,0,1) 100%);background:-webkit-linear-gradient(top,rgba(0,0,0,0) 0%,rgba(0,0,0,1) 100%);background:linear-gradient(to bottom,rgba(0,0,0,0) 0%,rgba(0,0,0,1) 100%);opacity:.5;-webkit-transition:opacity 400ms;transition:opacity 400ms}.speasyimagegallery-album-info{position:absolute;left:0;right:0;bottom:0;padding:20px;z-index:1}.speasyimagegallery-album-title{display:block;font-size:18px;line-height:1;letter-spacing:1px;color:rgba(255,255,255,.9);text-decoration:none;font-weight:700;margin:0 0 5px;outline:0;-webkit-transition:color 400ms;transition:color 400ms}.speasyimagegallery-album-title:hover,.speasyimagegallery-album-title:focus,.speasyimagegallery-album-title:active{outline:0;text-decoration:none}.speasyimagegallery-album-meta{display:block;margin:-5px}.speasyimagegallery-album-meta > span{display:block;float:left;margin:5px;font-size:13px;line-height:1;font-weight:700;letter-spacing:1px;color:rgba(255,255,255,.6);-webkit-transition:color 400ms;transition:color 400ms}.speasyimagegallery-album-meta > span:hover,.speasyimagegallery-album-meta > span:active,.speasyimagegallery-album-meta > span:focus{outline:0;text-decoration:none}.speasyimagegallery-album:hover > div > a:after{opacity:.7}.speasyimagegallery-album:hover .speasyimagegallery-album-title{color:#fff}.speasyimagegallery-album:hover .speasyimagegallery-album-meta > span{color:rgba(255,255,255,.8)}.speasyimagegallery-gallery{display:block}.speasyimagegallery-gallery-item{cursor:zoom-in;display:block;float:left}.speasyimagegallery-gallery-item img{width:100%}.speasyimagegallery-gallery-item > div{position:relative}.speasyimagegallery-gallery-item > div:after{content:" ";position:absolute;bottom:0;left:0;right:0;top:0;z-index:1;background:-moz-linear-gradient(top,rgba(0,0,0,0) 0%,rgba(0,0,0,.3) 100%);background:-webkit-linear-gradient(top,rgba(0,0,0,0) 0%,rgba(0,0,0,.3) 100%);background:linear-gradient(to bottom,rgba(0,0,0,0) 0%,rgba(0,0,0,.3) 100%);opacity:0;-webkit-transition:opacity 400ms;transition:opacity 400ms}.speasyimagegallery-gallery-item:hover > div:after{opacity:1}.speasyimagegallery-gallery-item-content{position:absolute;bottom:0;left:0;right:0;padding:10px;z-index:2;opacity:0;-webkit-transition:opacity 400ms;transition:opacity 400ms}.speasyimagegallery-gallery-item:hover .speasyimagegallery-gallery-item-content{opacity:1}.speasyimagegallery-gallery-item-title{display:block;color:#fff;margin:0;padding:0;font-size:13px;line-height:1.2;font-weight:700;letter-spacing:1px}.speasyimagegallery-modal-open{overflow:hidden}.speasyimagegallery-modal-wrapper{position:fixed;top:0;left:0;right:0;bottom:0;z-index:100000;background:rgba(0,0,0,0.8);overflow:hidden;text-align:center;cursor:zoom-out}.speasyimagegallery-modal{position:fixed;top:50%;left:50%;background:#000;z-index:1034;max-width:100%;max-height:100%;box-shadow:0 0 10px rgba(0,0,0,0.2);-webkit-box-shadow:0 0 10px rgba(0,0,0,0.2);-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);cursor:pointer}.speasyimagegallery-next,.speasyimagegallery-prev{position:fixed;top:0;width:40px;height:100%;opacity:0;-webkit-transition:opacity 300ms;transition:opacity 300ms}.speasyimagegallery-next{right:0}.speasyimagegallery-prev{left:0}.speasyimagegallery-modal-wrapper:hover .speasyimagegallery-next,.speasyimagegallery-modal-wrapper:hover .speasyimagegallery-prev{opacity:1}.speasyimagegallery-next > span,.speasyimagegallery-prev > span{display:block;position:relative;top:50%;width:16px;height:16px;border-top:5px solid #fff}.speasyimagegallery-next > span{left:-3px;border-right:5px solid #fff;transform:rotate(45deg) translateY(-50%);-webkit-transform:rotate(45deg) translateY(-50%)}.speasyimagegallery-prev > span{left:22px;border-left:5px solid #fff;transform:rotate(-45deg) translateY(-50%)}.speasyimagegallery-hidden,.speasyimagegallery-close.speasyimagegallery-hidden{display:none}.speasyimagegallery-close,.speasyimagegallery-close:hover,.speasyimagegallery-close:active,.speasyimagegallery-close:focus{display:block;font-size:30px;height:36px;width:36px;line-height:36px;color:rgba(255,255,255,.8);font-weight:700;text-align:center;position:absolute;top:-36px;right:-10px;text-decoration:none;outline:none;-webkit-transition:color 300ms;transition:color 300ms}.speasyimagegallery-close:hover{color:#fff}.speasyimagegallery-modal-close:hover,.speasyimagegallery-modal-close:active,.speasyimagegallery-modal-close:focus{color:#2384d3}.speasyimagegallery-image-wrapper{position:relative}.speasyimagegallery-modal-body{overflow:hidden}.speasyimagegallery-image-content{position:absolute;z-index:1;background:rgba(0,0,0,.8);color:#fff;bottom:0;left:0;right:0;font-size:14px;line-height:24px;padding:10px;text-align:left;-webkit-animation:fadeInUp 300ms;animation:fadeInUp 300ms}.speasyimagegallery-image-title{font-size:16px;font-weight:700;display:block}.speasyimagegallery-gallery-stat{font-weight:700;font-size:13px;color:rgba(255,255,255,0.5);float:right}.speasyimagegallery-gallery-loading{position:absolute;top:50%;left:50%;margin-left:-12px;margin-top:-12px;border-radius:50%;width:24px;height:24px;border:.25rem solid rgba(255,255,255,.2);border-top-color:#fff;-webkit-animation:spin 1s infinite linear;animation:spin 1s infinite linear}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes pulse{50%{background:#fff}}@keyframes pulse{50%{background:#fff}}@-webkit-keyframes fadeInUp{from{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInUp{from{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}to{opacity:1;-webkit-transform:none;transform:none}}
diff --git a/deployed/speasyimagegallery/components/com_speasyimagegallery/assets/css/style.css b/deployed/speasyimagegallery/components/com_speasyimagegallery/assets/css/style.css
new file mode 100644
index 00000000..3ce0e69e
--- /dev/null
+++ b/deployed/speasyimagegallery/components/com_speasyimagegallery/assets/css/style.css
@@ -0,0 +1,412 @@
+/**
+* @package com_spsimplephotogallery
+* @author JoomShaper http://www.joomshaper.com
+* @copyright Copyright (c) 2010 - 2017 JoomShaper
+* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or later
+*/
+.clearfix {
+ *zoom: 1;
+}
+.clearfix:before,
+.clearfix:after {
+ display: table;
+ content: "";
+ line-height: 0;
+}
+.clearfix:after {
+ clear: both;
+}
+
+/*Album List*/
+.speasyimagegallery-album {
+ float: left;
+ display: block;
+}
+
+.speasyimagegallery-album-description {
+ font-size: 14px;
+ line-height: 1.4;
+ margin-bottom: 20px;
+}
+
+.speasyimagegallery-album > div > a {
+ display: block;
+ position: relative;
+}
+
+.speasyimagegallery-album > div img {
+ width: 100%;
+}
+
+.speasyimagegallery-album > div > a:after {
+ content: " ";
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ background: -moz-linear-gradient(top, rgba(0,0,0,0) 0%, rgba(0,0,0,1) 100%);
+ background: -webkit-linear-gradient(top, rgba(0,0,0,0) 0%,rgba(0,0,0,1) 100%);
+ background: linear-gradient(to bottom, rgba(0,0,0,0) 0%,rgba(0,0,0,1) 100%);
+ opacity: .5;
+ -webkit-transition: opacity 400ms;
+ transition: opacity 400ms;
+}
+
+.speasyimagegallery-album-info {
+ position: absolute;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ padding: 20px;
+ z-index: 1;
+}
+
+.speasyimagegallery-album-title {
+ display: block;
+ font-size: 18px;
+ line-height: 1;
+ letter-spacing: 1px;
+ color: rgba(255, 255, 255, .9);
+ text-decoration: none;
+ font-weight: bold;
+ margin: 0 0 5px;
+ outline: 0;
+ -webkit-transition: color 400ms;
+ transition: color 400ms;
+}
+
+.speasyimagegallery-album-title:hover,
+.speasyimagegallery-album-title:focus,
+.speasyimagegallery-album-title:active {
+ outline: 0;
+ text-decoration: none;
+}
+
+.speasyimagegallery-album-meta {
+ display: block;
+ margin: -5px;
+}
+
+.speasyimagegallery-album-meta > span {
+ display: block;
+ float: left;
+ margin: 5px;
+ font-size: 13px;
+ line-height: 1;
+ font-weight: bold;
+ letter-spacing: 1px;
+ color: rgba(255, 255, 255, .6);
+ -webkit-transition: color 400ms;
+ transition: color 400ms;
+}
+
+.speasyimagegallery-album-meta > span:hover,
+.speasyimagegallery-album-meta > span:active,
+.speasyimagegallery-album-meta > span:focus {
+ outline: 0;
+ text-decoration: none;
+}
+
+.speasyimagegallery-album:hover > div > a:after {
+ opacity: .7;
+}
+
+.speasyimagegallery-album:hover .speasyimagegallery-album-title {
+ color: #fff;
+}
+
+.speasyimagegallery-album:hover .speasyimagegallery-album-meta > span {
+ color: rgba(255, 255, 255, .8);
+}
+
+/* Gallery */
+.speasyimagegallery-gallery {
+ display: block;
+}
+.speasyimagegallery-gallery-item {
+ cursor: zoom-in;
+ display: block;
+ float: left;
+}
+
+.speasyimagegallery-gallery-item img {
+ width: 100%;
+}
+
+.speasyimagegallery-gallery-item > div {
+ position: relative;
+}
+
+.speasyimagegallery-gallery-item > div:after {
+ content: " ";
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ top: 0;
+ z-index: 1;
+ background: -moz-linear-gradient(top, rgba(0,0,0,0) 0%, rgba(0,0,0,.3) 100%);
+ background: -webkit-linear-gradient(top, rgba(0,0,0,0) 0%,rgba(0,0,0,.3) 100%);
+ background: linear-gradient(to bottom, rgba(0,0,0,0) 0%,rgba(0,0,0,.3) 100%);
+ opacity: 0;
+ -webkit-transition: opacity 400ms;
+ transition: opacity 400ms;
+}
+
+.speasyimagegallery-gallery-item:hover > div:after {
+ opacity: 1;
+}
+
+.speasyimagegallery-gallery-item-content {
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ padding: 10px;
+ z-index: 2;
+ opacity: 0;
+ -webkit-transition: opacity 400ms;
+ transition: opacity 400ms;
+}
+
+.speasyimagegallery-gallery-item:hover .speasyimagegallery-gallery-item-content {
+ opacity: 1;
+}
+
+.speasyimagegallery-gallery-item-title {
+ display: block;
+ color: #fff;
+ margin: 0;
+ padding: 0;
+ font-size: 13px;
+ line-height: 1.2;
+ font-weight: bold;
+ letter-spacing: 1px;
+}
+
+/*Modal*/
+.speasyimagegallery-modal-open {
+ overflow: hidden;
+}
+
+.speasyimagegallery-modal-wrapper {
+ position: fixed;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ z-index: 1033;
+ background: rgba(0, 0, 0, 0.8);
+ overflow: hidden;
+ text-align: center;
+ cursor: zoom-out;
+}
+
+.speasyimagegallery-modal {
+ position: fixed;
+ top: 50%;
+ left: 50%;
+ background: #000;
+ z-index: 1034;
+ max-width: 100%;
+ max-height: 100%;
+ box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);
+ -webkit-box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);
+ -webkit-transform: translate(-50%, -50%);
+ transform: translate(-50%, -50%);
+ cursor: pointer;
+}
+
+.speasyimagegallery-next,
+.speasyimagegallery-prev {
+ position: fixed;
+ top: 0;
+ width: 40px;
+ height: 100%;
+ opacity: 0;
+ -webkit-transition: opacity 300ms;
+ transition: opacity 300ms;
+}
+.speasyimagegallery-next {
+ right: 0;
+}
+
+.speasyimagegallery-prev {
+ left: 0;
+}
+
+.speasyimagegallery-modal-wrapper:hover .speasyimagegallery-next,
+.speasyimagegallery-modal-wrapper:hover .speasyimagegallery-prev {
+ opacity: 1;
+}
+
+.speasyimagegallery-next > span,
+.speasyimagegallery-prev > span {
+ display: block;
+ position: relative;
+ top: 50%;
+ width: 16px;
+ height: 16px;
+ border-top: 5px solid #fff;
+}
+
+.speasyimagegallery-next > span {
+ left: -3px;
+ border-right: 5px solid #fff;
+ transform: rotate(45deg) translateY(-50%);
+ -webkit-transform: rotate(45deg) translateY(-50%);
+}
+
+.speasyimagegallery-prev > span {
+ left: 22px;
+ border-left: 5px solid #fff;
+ transform: rotate(-45deg) translateY(-50%);
+}
+
+.speasyimagegallery-hidden,
+.speasyimagegallery-close.speasyimagegallery-hidden {
+ display: none;
+}
+
+.speasyimagegallery-close,
+.speasyimagegallery-close:hover,
+.speasyimagegallery-close:active,
+.speasyimagegallery-close:focus {
+ display: block;
+ font-size: 30px;
+ height: 36px;
+ width: 36px;
+ line-height: 36px;
+ color: rgba(255, 255, 255, .8);
+ font-weight: bold;
+ text-align: center;
+ position: absolute;
+ top: -36px;
+ right: -10px;
+ text-decoration: none;
+ outline: none;
+ -webkit-transition: color 300ms;
+ transition: color 300ms;
+}
+
+.speasyimagegallery-close:hover {
+ color: #fff;
+}
+
+.speasyimagegallery-modal-close:hover,
+.speasyimagegallery-modal-close:active,
+.speasyimagegallery-modal-close:focus {
+ color: #2384d3;
+}
+
+.speasyimagegallery-image-wrapper {
+ position: relative;
+}
+
+.speasyimagegallery-modal-body {
+ overflow: hidden;
+}
+
+.speasyimagegallery-image-content {
+ position: absolute;
+ z-index: 1;
+ background: rgba(0, 0,0, .8);
+ color: #fff;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ font-size: 14px;
+ line-height: 24px;
+ padding: 10px;
+ text-align: left;
+ -webkit-animation: fadeInUp 300ms;
+ animation: fadeInUp 300ms;
+}
+
+.speasyimagegallery-image-title {
+ font-size: 16px;
+ font-weight: bold;
+ display: block;
+}
+
+.speasyimagegallery-gallery-stat {
+ font-weight: bold;
+ font-size: 13px;
+ color: rgba(255, 255, 255, 0.5);
+ float: right;
+}
+
+.speasyimagegallery-gallery-loading {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ margin-left: -12px;
+ margin-top: -12px;
+ border-radius: 50%;
+ width: 24px;
+ height: 24px;
+ border: 0.25rem solid rgba(255, 255, 255, .2);
+ border-top-color: #fff;
+ -webkit-animation: spin 1s infinite linear;
+ animation: spin 1s infinite linear;
+}
+
+@-webkit-keyframes spin {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+ 100% {
+ -webkit-transform: rotate(360deg);
+ transform: rotate(360deg);
+ }
+}
+@keyframes spin {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+ 100% {
+ -webkit-transform: rotate(360deg);
+ transform: rotate(360deg);
+ }
+}
+@-webkit-keyframes pulse {
+ 50% {
+ background: white;
+ }
+}
+@keyframes pulse {
+ 50% {
+ background: white;
+ }
+}
+
+@-webkit-keyframes fadeInUp {
+ from {
+ opacity: 0;
+ -webkit-transform: translate3d(0, 100%, 0);
+ transform: translate3d(0, 100%, 0);
+ }
+
+ to {
+ opacity: 1;
+ -webkit-transform: none;
+ transform: none;
+ }
+}
+
+@keyframes fadeInUp {
+ from {
+ opacity: 0;
+ -webkit-transform: translate3d(0, 100%, 0);
+ transform: translate3d(0, 100%, 0);
+ }
+
+ to {
+ opacity: 1;
+ -webkit-transform: none;
+ transform: none;
+ }
+}
diff --git a/deployed/speasyimagegallery/components/com_speasyimagegallery/assets/js/script-min.js b/deployed/speasyimagegallery/components/com_speasyimagegallery/assets/js/script-min.js
new file mode 100644
index 00000000..0c2e513d
--- /dev/null
+++ b/deployed/speasyimagegallery/components/com_speasyimagegallery/assets/js/script-min.js
@@ -0,0 +1,7 @@
+/**
+* @package com_speasyimagegallery
+* @author JoomShaper http://www.joomshaper.com
+* @copyright Copyright (c) 2010 - 2017 JoomShaper
+* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or later
+*/
+!function(a){a.fn.speasyimagegallery=function(b){var c={showCounter:!0,showTitle:!0,showDescription:!0};this.each(function(){b&&a.extend(c,b);var d=this,e=function(){this.items=a(d).parent().children(),this.count=this.items.length-1,this.index=this.items.index(d),this.navPrev="",this.navNext="",this.loaded=!1,this.naturalWidth=0,this.naturalHeight=0,this.init=function(){this.modal(),this.goto(this.index);var b=this;this.navNext.on("click",function(a){a.preventDefault(),b.next()}),a(document).on("click",".speasyimagegallery-image",function(a){a.preventDefault(),b.next()}),a(document).on("click",".speasyimagegallery-modal-wrapper, .speasyimagegallery-close",function(a){a.target===this&&(a.preventDefault(),b.close())}),a(document).on("keyup",function(a){39==a.keyCode&&(a.preventDefault(),b.next()),37==a.keyCode&&(a.preventDefault(),b.prev()),27==a.keyCode&&(a.preventDefault(),b.close())}),this.navPrev.on("click",function(a){a.preventDefault(),b.prev()}),a(window).on("resize",function(){var c=b.resize();a(".speasyimagegallery-modal").css({width:c.width,height:c.height})})},this.modal=function(){a('
').appendTo(a("body").addClass("speasyimagegallery-modal-open")),this.modal=a("#speasyimagegallery-modal"),this.navNext=this.modal.find(".speasyimagegallery-next"),this.navPrev=this.modal.find(".speasyimagegallery-prev")},this.close=function(){this.index=0,this.loaded=!0,this.naturalWidth=0,this.naturalHeight=0,a("#speasyimagegallery-modal").fadeOut(function(){a(this).remove()}),a(".speasyimagegallery-modal").animate({width:100,height:100},300,function(){a(this).remove(),a("body").removeClass("speasyimagegallery-modal-open")})},this.resize=function(){var b=a(window).width()-80,c=a(window).height()-80,d=0,e=this.naturalWidth,f=this.naturalHeight;return e>b&&(d=b/e,f*=d,e*=d),f>c&&(d=c/f,e*=d,f*=d),{width:e,height:f}},this.next=function(){this.index
0?this.index=this.index-1:this.index=this.count,this.goto(this.index)},this.goto=function(b){if(this.loaded===!1){var d=this,e=a(this.items[b]);d.loaded=!0,a(".speasyimagegallery-modal-body").html('');var f=a("
").attr("src",e.attr("href")).on("load",function(){if(this.complete&&"undefined"!=typeof this.naturalWidth&&0!=this.naturalWidth){d.naturalWidth=this.naturalWidth,d.naturalHeight=this.naturalHeight;var b=d.resize();a(".speasyimagegallery-modal").animate({width:b.width,height:b.height},300,function(){var b='';b+='

',(c.showCounter||c.showTitle&&e.attr("data-title")||c.showDescription&&e.attr("data-desc"))&&(e.attr("data-title")||e.attr("data-description"))&&(b+='
',c.showCounter&&(b+='
'+(d.index+1)+" of "+(d.count+1)+""),c.showTitle&&e.attr("data-title")&&(b+='
'+e.attr("data-title")+""),c.showDescription&&e.attr("data-desc")&&(b+='
'+e.attr("data-desc")+"
"),b+="
"),b+="
",a(".speasyimagegallery-modal-body").html(b),d.modal.find(".speasyimagegallery-hidden").removeClass("speasyimagegallery-hidden"),d.loaded=!1})}else;})}}};(new e).init()})}}(jQuery);
diff --git a/deployed/speasyimagegallery/components/com_speasyimagegallery/assets/js/script.js b/deployed/speasyimagegallery/components/com_speasyimagegallery/assets/js/script.js
new file mode 100644
index 00000000..ef7b27e2
--- /dev/null
+++ b/deployed/speasyimagegallery/components/com_speasyimagegallery/assets/js/script.js
@@ -0,0 +1,228 @@
+/**
+* @package com_speasyimagegallery
+* @author JoomShaper http://www.joomshaper.com
+* @copyright Copyright (c) 2010 - 2017 JoomShaper
+* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or later
+*/
+
+;(function($){
+
+ $.fn.speasyimagegallery = function(options) {
+
+ var settings = {
+ 'showCounter': true,
+ 'showTitle': true,
+ 'showDescription': true
+ };
+
+ this.each(function() {
+
+ if (options) {
+ $.extend(settings, options);
+ }
+
+ var item = this;
+
+ var speasyimagegallery = function(){
+
+ this.items = $(item).parent().children();
+ this.count = (this.items.length) - 1;
+ this.index = this.items.index(item);
+ this.navPrev = '';
+ this.navNext = '';
+ this.loaded = false;
+ this.naturalWidth = 0;
+ this.naturalHeight = 0;
+
+ this.init = function() {
+ this.modal();
+ this.goto(this.index);
+ var that = this;
+
+ this.navNext.on('click', function(event) {
+ event.preventDefault();
+ that.next();
+ });
+
+ $(document).on('click', '.speasyimagegallery-image', function(event){
+ event.preventDefault();
+ that.next();
+ });
+
+ $(document).on('click', '.speasyimagegallery-modal-wrapper, .speasyimagegallery-close', function(event){
+ if (event.target !== this) {
+ return;
+ }
+ event.preventDefault();
+ that.close();
+ });
+
+ $(document).on('keyup', function(event) {
+ if(event.keyCode == 39) {
+ event.preventDefault();
+ that.next();
+ }
+
+ if(event.keyCode == 37) {
+ event.preventDefault();
+ that.prev();
+ }
+
+ if(event.keyCode == 27) {
+ event.preventDefault();
+ that.close();
+ }
+ })
+
+ this.navPrev.on('click', function(event) {
+ event.preventDefault();
+ that.prev();
+ });
+
+ $(window).on('resize', function() {
+ var dimension = that.resize();
+ $('.speasyimagegallery-modal').css({
+ width: dimension.width,
+ height: dimension.height
+ });
+ });
+ }
+
+ this.modal = function() {
+ $('').appendTo($('body').addClass('speasyimagegallery-modal-open'));
+ this.modal = $('#speasyimagegallery-modal');
+ this.navNext = this.modal.find('.speasyimagegallery-next');
+ this.navPrev = this.modal.find('.speasyimagegallery-prev');
+ }
+
+ this.close = function() {
+ this.index = 0;
+ this.loaded = true;
+ this.naturalWidth = 0;
+ this.naturalHeight = 0;
+
+ $('#speasyimagegallery-modal').fadeOut(function() {
+ $(this).remove();
+ });
+
+ $('.speasyimagegallery-modal').animate({
+ width: 100,
+ height: 100
+ }, 300, function() {
+ $(this).remove();
+ $('body').removeClass('speasyimagegallery-modal-open')
+ });
+ }
+
+ // Resize modal window
+ this.resize = function() {
+ var maxWidth = ($(window).width()) - 80;
+ var maxHeight = ($(window).height()) - 80;
+ var ratio = 0;
+ var width = this.naturalWidth;
+ var height = this.naturalHeight;
+
+ if(width > maxWidth){
+ ratio = maxWidth / width;
+ height = height * ratio;
+ width = width * ratio;
+ }
+
+ if(height > maxHeight){
+ ratio = maxHeight / height;
+ width = width * ratio;
+ height = height * ratio;
+ }
+
+ return {
+ 'width': width,
+ 'height': height
+ }
+ }
+
+ // Go to next
+ this.next = function() {
+ if (this.index < this.count) {
+ this.index = this.index + 1;
+ } else {
+ this.index = 0;
+ }
+ this.goto(this.index);
+ }
+
+ // Go to Prev
+ this.prev = function() {
+ if (this.index > 0) {
+ this.index = this.index -1;
+ } else {
+ this.index = this.count;
+ }
+ this.goto(this.index);
+ }
+
+ // Go to index
+ this.goto = function(index) {
+
+ if(this.loaded === false) {
+ var that = this;
+ var $item = $(this.items[index]);
+ that.loaded = true;
+
+ $('.speasyimagegallery-modal-body').html('');
+
+ var img = $("
").attr('src', $item.attr('href')).on('load', function() {
+ if (!this.complete || typeof this.naturalWidth == "undefined" || this.naturalWidth == 0) {
+
+ } else {
+
+ that.naturalWidth = this.naturalWidth;
+ that.naturalHeight = this.naturalHeight;
+
+ var dimension = that.resize();
+
+ $('.speasyimagegallery-modal').animate({
+ width: dimension.width,
+ height: dimension.height
+ }, 300, function() {
+ var galleryHtml = '';
+ galleryHtml += '

';
+
+ if((settings.showCounter) || (settings.showTitle && $item.attr('data-title')) || (settings.showDescription && $item.attr('data-desc'))) {
+ if($item.attr('data-title') || $item.attr('data-description')) {
+ galleryHtml += '
';
+
+ if(settings.showCounter){
+ galleryHtml += '
'+ (that.index + 1) + ' of ' + (that.count + 1) +'';
+ }
+
+ if(settings.showTitle && $item.attr('data-title')) {
+ galleryHtml += '
'+ $item.attr('data-title') +'';
+ }
+
+ if(settings.showDescription && $item.attr('data-desc')) {
+ galleryHtml += '
'+ $item.attr('data-desc') +'
';
+ }
+
+ galleryHtml += '
';
+ }
+ }
+
+ galleryHtml += '
'
+
+ $('.speasyimagegallery-modal-body').html(galleryHtml);
+ that.modal.find('.speasyimagegallery-hidden').removeClass('speasyimagegallery-hidden');
+ that.loaded = false;
+ });
+
+ }
+ });
+ }
+ }
+
+ }
+
+ new speasyimagegallery().init();
+ });
+ }
+
+})(jQuery);
diff --git a/deployed/speasyimagegallery/components/com_speasyimagegallery/controller.php b/deployed/speasyimagegallery/components/com_speasyimagegallery/controller.php
new file mode 100644
index 00000000..b22af45e
--- /dev/null
+++ b/deployed/speasyimagegallery/components/com_speasyimagegallery/controller.php
@@ -0,0 +1,14 @@
+input->getInt('id');
+ $this->setState('album.id', $albumId);
+
+ $user = JFactory::getUser();
+
+ $this->setState('filter.language', JLanguageMultilang::isEnabled());
+ }
+
+ public function getItem( $albumId = null )
+ {
+ $user = JFactory::getUser();
+
+ $albumId = (!empty($albumId))? $albumId : (int)$this->getState('album.id');
+
+ if ( $this->_item == null )
+ {
+ $this->_item = array();
+ }
+
+ if (!isset($this->_item[$albumId]))
+ {
+ try
+ {
+ $db = $this->getDbo();
+ $query = $db->getQuery(true)
+ ->select('a.*')
+ ->from('#__speasyimagegallery_albums as a')
+ ->where('a.id = ' . (int) $albumId);
+
+ $query->select('l.title AS language_title')
+ ->leftJoin( $db->quoteName('#__languages') . ' AS l ON l.lang_code = a.language');
+
+ $query->select('ua.name AS author_name')
+ ->leftJoin('#__users AS ua ON ua.id = a.created_by');
+
+ // Filter by published state.
+ $query->where('a.published = 1');
+
+ if ($this->getState('filter.language'))
+ {
+ $query->where('a.language in (' . $db->quote(JFactory::getLanguage()->getTag()) . ',' . $db->quote('*') . ')');
+ }
+
+ $db->setQuery($query);
+ $data = $db->loadObject();
+
+ if(isset($data->id) && $data->id) {
+ $data->images = $this->getImages($data->id);
+ }
+
+ if (empty($data)) {
+ return JError::raiseError(404, JText::_('COM_SPEASYIMAGEGALLERY_ERROR_ALBUM_NOT_FOUND'));
+ }
+
+ $user = JFactory::getUser();
+ $groups = $user->getAuthorisedViewLevels();
+ if(!in_array($data->access, $groups)) {
+ return JError::raiseError(404, JText::_('COM_SPEASYIMAGEGALLERY_ERROR_ALBUM_NOT_AUTHORISED'));
+ }
+
+ $this->_item[$albumId] = $data;
+ }
+ catch (Exception $e)
+ {
+ if ($e->getCode() == 404 )
+ {
+ JError::raiseError(404, $e->getMessage());
+ }
+ else
+ {
+ $this->setError($e);
+ $this->_item[$albumId] = false;
+ }
+ }
+ }
+
+ return $this->_item[$albumId];
+ }
+
+ public function getImages($album_id) {
+ $db = JFactory::getDbo();
+ $query = $db->getQuery(true);
+ $query->select(array('a.*'));
+ $query->from($db->quoteName('#__speasyimagegallery_images', 'a'));
+ $query->where($db->quoteName('album_id') . ' = '. $db->quote($album_id));
+ $query->where($db->quoteName('state') . ' = '. $db->quote(1));
+ $query->order('a.ordering DESC');
+ $db->setQuery($query);
+ return $db->loadObjectList();
+ }
+
+
+ public function hit($pk = 0)
+ {
+ $pk = (!empty($pk)) ? $pk : (int) $this->getState('album.id');
+ $table = JTable::getInstance('Album', 'SpeasyimagegalleryTable');
+ $table->load($pk);
+ $table->hit($pk);
+
+ return true;
+ }
+
+}
diff --git a/deployed/speasyimagegallery/components/com_speasyimagegallery/models/albums.php b/deployed/speasyimagegallery/components/com_speasyimagegallery/models/albums.php
new file mode 100644
index 00000000..5b7018fd
--- /dev/null
+++ b/deployed/speasyimagegallery/components/com_speasyimagegallery/models/albums.php
@@ -0,0 +1,53 @@
+input->get('catid', 0, 'INT');
+
+ // Create a new query object.
+ $db = $this->getDbo();
+ $query = $db->getQuery(true);
+
+ // Select the required fields from the table.
+ $query->select('a.*');
+ $query->from($db->quoteName('#__speasyimagegallery_albums', 'a'));
+
+ // Join over the categories.
+ $query->select('c.title AS category_title, c.alias AS category_alias')
+ ->join('LEFT', '#__categories AS c ON c.id = a.catid');
+
+ // Images count
+ $query->select('CASE WHEN c.count IS NULL THEN 0 ELSE c.count END as count')->join('LEFT', '( SELECT b.album_id, COUNT(b.album_id) as count FROM '. $db->quoteName('#__speasyimagegallery_images', 'b') . ' WHERE b.state = 1 GROUP BY b.album_id ) AS c ON c.album_id = a.id');
+
+ //Authorised
+ $groups = implode(',', $user->getAuthorisedViewLevels());
+ $query->where('a.access IN (' . $groups . ')');
+
+ // Filter category
+ if($catid) {
+ $query->where('a.catid = ' . $catid);
+ }
+
+ // Filter by language
+ $query->where('a.language in (' . $db->quote(JFactory::getLanguage()->getTag()) . ',' . $db->quote('*') . ')');
+ $query->where('a.published = 1');
+ $query->order('a.ordering ASC');
+
+ return $query;
+ }
+
+}
diff --git a/deployed/speasyimagegallery/components/com_speasyimagegallery/router.php b/deployed/speasyimagegallery/components/com_speasyimagegallery/router.php
new file mode 100644
index 00000000..3d9632bb
--- /dev/null
+++ b/deployed/speasyimagegallery/components/com_speasyimagegallery/router.php
@@ -0,0 +1,158 @@
+menu->getActive();
+ $menuItemGiven = false;
+ }
+ else
+ {
+ $menuItem = $this->menu->getItem($query['Itemid']);
+ $menuItemGiven = true;
+ }
+
+ // Check again
+ if ($menuItemGiven && isset($menuItem) && $menuItem->component != 'com_speasyimagegallery')
+ {
+ $menuItemGiven = false;
+ unset($query['Itemid']);
+ }
+
+ if (isset($query['view']))
+ {
+ $view = $query['view'];
+ }
+ else
+ {
+ // We need to have a view in the query or it is an invalid URL
+ return $segments;
+ }
+
+ // Are we dealing with an album that is attached to a menu item?
+ if (($menuItem instanceof stdClass)
+ && $menuItem->query['view'] == $query['view']
+ && isset($query['id'])
+ && $menuItem->query['id'] == (int) $query['id'])
+ {
+
+ unset($query['view']);
+ unset($query['id']);
+
+ return $segments;
+ }
+
+ if ($view == 'album')
+ {
+ if (!$menuItemGiven)
+ {
+ $segments[] = $view;
+ }
+
+ unset($query['view']);
+
+ if ($view == 'album')
+ {
+ if (isset($query['id']))
+ {
+ // Make sure we have the id and the alias
+ if (strpos($query['id'], ':') === false)
+ {
+ $db = JFactory::getDbo();
+ $dbQuery = $db->getQuery(true)
+ ->select('alias')
+ ->from('#__speasyimagegallery_albums')
+ ->where('id=' . (int) $query['id']);
+ $db->setQuery($dbQuery);
+ $alias = $db->loadResult();
+ $query['id'] = $query['id'] . ':' . $alias;
+ }
+ }
+ else
+ {
+ return $segments;
+ }
+ }
+ else
+ {
+ return $segments;
+ }
+
+ if ($view == 'album')
+ {
+ list($tmp, $id) = explode(':', $query['id'], 2);
+ $segments[] = $id;
+ }
+
+ unset($query['id']);
+ }
+
+ $total = count($segments);
+
+ for ($i = 0; $i < $total; $i++)
+ {
+ $segments[$i] = str_replace(':', '-', $segments[$i]);
+ }
+
+ return $segments;
+
+ }
+
+ public function parse(&$segments)
+ {
+ $app = JFactory::getApplication();
+ $menu = $app->getMenu();
+ $item = $menu->getActive();
+ $count = count($segments);
+
+ $vars = array();
+ $vars['view'] = 'album';
+
+ if (!isset($item))
+ {
+ $alias = $segments[$count - 1];
+ } else {
+ $alias = $segments[0];
+ }
+
+ $db = JFactory::getDbo();
+ $dbquery = $db->getQuery(true);
+ $dbquery->select($dbquery->qn('id'))
+ ->from($dbquery->qn('#__speasyimagegallery_albums'))
+ ->where('alias = ' . $dbquery->q($alias));
+ $db->setQuery($dbquery);
+
+ $vars['id'] = $db->loadResult();
+
+ return $vars;
+ }
+}
+
+function speasyimagegalleryBuildRoute(&$query)
+{
+ $router = new SpeasyimagegalleryRouter;
+
+ return $router->build($query);
+}
+
+function speasyimagegalleryParseRoute($segments)
+{
+ $router = new SpeasyimagegalleryRouter;
+
+ return $router->parse($segments);
+}
diff --git a/deployed/speasyimagegallery/components/com_speasyimagegallery/speasyimagegallery.php b/deployed/speasyimagegallery/components/com_speasyimagegallery/speasyimagegallery.php
new file mode 100644
index 00000000..2a2f7672
--- /dev/null
+++ b/deployed/speasyimagegallery/components/com_speasyimagegallery/speasyimagegallery.php
@@ -0,0 +1,15 @@
+input;
+$controller->execute($input->getCmd('task'));
+$controller->redirect();
diff --git a/deployed/speasyimagegallery/components/com_speasyimagegallery/views/album/tmpl/default.php b/deployed/speasyimagegallery/components/com_speasyimagegallery/views/album/tmpl/default.php
new file mode 100644
index 00000000..47b92713
--- /dev/null
+++ b/deployed/speasyimagegallery/components/com_speasyimagegallery/views/album/tmpl/default.php
@@ -0,0 +1,153 @@
+addStylesheet(JURI::base(true) . '/components/com_speasyimagegallery/assets/css/style-min.css');
+$doc->addScript(JURI::base(true) . '/components/com_speasyimagegallery/assets/js/script-min.js');
+
+$column = $this->params->get('column', 4);
+if ($column > 12) {
+ $column = 12;
+}
+$width = round(100 / $column, 4);
+$gutter = round($this->params->get('gutter', 20) / 2);
+
+// Tablet
+$column_sm = $this->params->get('column_sm', 3);
+if ($column_sm > 12) {
+ $column_sm = 12;
+}
+$width_sm = round(100 / $column_sm, 4);
+$gutter_sm = round($this->params->get('gutter_sm', 15) / 2);
+
+// Mobile
+$column_xs = $this->params->get('column_xs', 2);
+if ($column_xs > 12) {
+ $column_xs = 12;
+}
+$width_xs = round(100 / $column_xs, 4);
+$gutter_xs = round($this->params->get('gutter_xs', 10) / 2);
+?>
+
+
+
+
+
+
+
+ params->get('show_page_heading', 1)) : ?>
+
escape($this->params->get('page_heading')); ?>
+
+
+ item->description) : ?>
+
item->description; ?>
+
+
+ item->images)) {
+ ?>
+
+ ' . JText::_('COM_SPEASYIMAGEGALLERY_NO_IMAGES') . '
';
+ } ?>
+
+
+
\ No newline at end of file
diff --git a/deployed/speasyimagegallery/components/com_speasyimagegallery/views/album/tmpl/default.xml b/deployed/speasyimagegallery/components/com_speasyimagegallery/views/album/tmpl/default.xml
new file mode 100644
index 00000000..39a47d02
--- /dev/null
+++ b/deployed/speasyimagegallery/components/com_speasyimagegallery/views/album/tmpl/default.xml
@@ -0,0 +1,21 @@
+
+