diff --git a/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/access.xml b/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/access.xml new file mode 100644 index 00000000..ff4bdf3b --- /dev/null +++ b/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/access.xml @@ -0,0 +1,18 @@ + + +
+ + + + + + + +
+
+ + + + +
+
diff --git a/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/assets/css/font-awesome.min.css b/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/assets/css/font-awesome.min.css new file mode 100644 index 00000000..540440ce --- /dev/null +++ b/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/assets/css/font-awesome.min.css @@ -0,0 +1,4 @@ +/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.7.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-vcard:before,.fa-address-card:before{content:"\f2bb"}.fa-vcard-o:before,.fa-address-card-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto} diff --git a/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/assets/css/style.css b/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/assets/css/style.css new file mode 100644 index 00000000..bf19e25b --- /dev/null +++ b/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/assets/css/style.css @@ -0,0 +1,222 @@ +/** +* @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 +*/ + +.speasyimagegallery-images-wrapper { + position: relative; +} + +.speasyimagegallery-toolbar { + padding-bottom: 20px; +} + +.speasyimagegallery-album-cover.no-image { + display: none; +} + +.speasyimagegallery-no-images .speasyimagegallery-images-empty, +.speasyimagegallery-images-list.sp-pagebuilder-media-drop .speasyimagegallery-images-empty { + display: table; +} + +.speasyimagegallery-no-images .speasyimagegallery-images-wrapper, +.speasyimagegallery-images-list.sp-pagebuilder-media-drop .speasyimagegallery-images-wrapper { + display: none; +} + +.speasyimagegallery-images-empty { + display: none; + padding: 30px 0; + text-align: center; + height: 500px; + width: 100%; + border: 3px dashed #c3c3c3; + border-radius: 10px; +} + +.speasyimagegallery-images-empty>div { + display: table-cell; + vertical-align: middle; + text-align: center; +} + +.ui-sortable-helper { + background: #f7fcff !important; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); + -webkit-box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); +} + +.sp-table { + background: #f5f5f5; + padding: 20px; + border-radius: 4px; + position: relative; +} + +.sp-thead { + display: block; + margin-bottom: 15px; +} + +.sp-thead > div { + display: block; + float: left; +} + +.sp-thead > div > div { + font-weight: bold; +} + +.sp-tbody > .sp-tr { + background: #fff; + padding: 15px 0; + display: block; + border-radius: 3px; + margin-top: 5px; +} + +.sp-tbody > .sp-tr > div { + display: block; + float: left; +} + +.sp-tbody > .sp-tr img { + border: 1px solid #e5e5e5; +} + +.speasyimagegallery-image-title { + display: block; + font-size: 16px; + line-height: 1.8; + font-weight: bold; +} + +.speasyimagegallery-image-filename { + color: #666; +} + +.speasyimagegallery-image-tools { + margin-top: 10px; + visibility: hidden; +} + +.speasyimagegallery-singe-image:hover .speasyimagegallery-image-tools { + visibility: visible; +} + +.speasyimagegallery-image-tools > a { + display: inline-block; + margin-right: 10px; + text-decoration: none; +} + +.speasyimagegallery-image-tools > a.speasyimagegallery-edit-image, +.speasyimagegallery-image-tools > a.speasyimagegallery-edit-image:hover { + color: #2384d3; + text-decoration: none; +} + +.speasyimagegallery-image-tools > a.speasyimagegallery-delete-image, +.speasyimagegallery-image-tools > a.speasyimagegallery-delete-image:hover { + color: #bd362f; + text-decoration: none; +} + +/*Progress Bar*/ +.speasyimagegallery-image-loader-text { + width: 30%; +} + +.speasyimagegallery-image-loader-progress { + width: 70%; +} + +.speasyimagegallery-image-loader-text > div, +.speasyimagegallery-image-loader-progress > div { + padding: 10px 20px; +} + +.speasyimagegallery-progress { + height: 20px; + overflow: hidden; + background-color: #f1f2f3; + border-radius: 3px; +} + +.speasyimagegallery-progress-bar { + float: left; + width: 0; + height: 100%; + font-size: 12px; + line-height: 20px; + color: #fff; + text-align: center; + background-color: #2384d3; + -webkit-transition: width .6s ease; + -o-transition: width .6s ease; + transition: width .6s ease; +} + +/*Modal*/ +.speasyimagegallery-edit-modal-open { + overflow: hidden; +} + +.speasyimagegallery-edit-modal-wrapper { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: rgba(0, 0, 0, .5); + z-index: 1033; + overflow: auto; +} + +.speasyimagegallery-edit-modal { + width: 600px; + max-width: 95%; + background: #fff; + margin: 40px auto; + border-radius: 4px; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); + -webkit-box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); +} + +.speasyimagegallery-edit-modal-header { + background: #f5f5f5; + padding: 20px; + border-radius: 4px 4px 0 0; + position: relative; + border-bottom: 1px solid #e5e5e5; +} + +.speasyimagegallery-edit-modal-header h3 { + font-size: 18px; + line-height: 1; + margin: 0; + padding: 0; +} + +.speasyimagegallery-edit-modal-close { + position: absolute; + top: 50%; + right: 20px; + font-size: 18px; + color: #888; + transform: translateY(-50%); + -webkit-transform: translateY(-50%); +} + +.speasyimagegallery-edit-modal-close:hover, +.speasyimagegallery-edit-modal-close:active, +.speasyimagegallery-edit-modal-close:focus { + color: #2384d3; +} + +.speasyimagegallery-edit-modal-body { + padding: 20px; +} diff --git a/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/assets/fonts/FontAwesome.otf b/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/assets/fonts/FontAwesome.otf new file mode 100644 index 00000000..401ec0f3 Binary files /dev/null and b/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/assets/fonts/FontAwesome.otf differ diff --git a/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/assets/fonts/fontawesome-webfont.eot b/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/assets/fonts/fontawesome-webfont.eot new file mode 100644 index 00000000..e9f60ca9 Binary files /dev/null and b/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/assets/fonts/fontawesome-webfont.eot differ diff --git a/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/assets/fonts/fontawesome-webfont.svg b/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/assets/fonts/fontawesome-webfont.svg new file mode 100644 index 00000000..855c845e --- /dev/null +++ b/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/assets/fonts/fontawesome-webfont.svg @@ -0,0 +1,2671 @@ + + + + +Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016 + By ,,, +Copyright Dave Gandy 2016. All rights reserved. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/assets/fonts/fontawesome-webfont.ttf b/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/assets/fonts/fontawesome-webfont.ttf new file mode 100644 index 00000000..35acda2f Binary files /dev/null and b/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/assets/fonts/fontawesome-webfont.ttf differ diff --git a/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/assets/fonts/fontawesome-webfont.woff b/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/assets/fonts/fontawesome-webfont.woff new file mode 100644 index 00000000..400014a4 Binary files /dev/null and b/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/assets/fonts/fontawesome-webfont.woff differ diff --git a/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/assets/fonts/fontawesome-webfont.woff2 b/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/assets/fonts/fontawesome-webfont.woff2 new file mode 100644 index 00000000..4d13fc60 Binary files /dev/null and b/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/assets/fonts/fontawesome-webfont.woff2 differ diff --git a/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/assets/js/script.js b/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/assets/js/script.js new file mode 100644 index 00000000..c510e1c7 --- /dev/null +++ b/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/assets/js/script.js @@ -0,0 +1,252 @@ +jQuery(function($) { + + //Ordering + $(document).ready(function(){ + $( "#imagesList" ).sortable({ + axis: 'y', + update: function (event, ui) { + var data = { + orders: $(this).sortable('toArray').toString() + } + $.ajax({ + type: "POST", + url: 'index.php?option=com_speasyimagegallery&task=albums.sort_images', + data: data + }) + } + }); + }); + + // Change state + $(document).on('click', '.btn-change-state', function(event) { + event.preventDefault(); + var $this = $(this); + + var data = { + id: $(this).closest('.speasyimagegallery-singe-image').attr('id'), + state: $(this).attr('data-state') + } + + if(data.state == 'enabled') { + $this.removeClass('active').removeAttr('data-state').attr('data-state', 'disabled').html(''); + } else { + $this.addClass('active').removeAttr('data-state').attr('data-state', 'enabled').html(''); + } + + $.ajax({ + type: "POST", + url: 'index.php?option=com_speasyimagegallery&task=albums.image_state', + data: data + }) + }); + + // Delete single image + $(document).on('click', '.speasyimagegallery-delete-image', function(event) { + event.preventDefault(); + if(confirm(Joomla.JText._('COM_SPEASYIMAGEGALLERY_DELETE_IMAGE_CONFIRM'))) { + var $this = $(this); + var data = { + id: $this.closest('.speasyimagegallery-singe-image').attr('id'), + album_id: album_id + } + $.ajax({ + type: "POST", + url: 'index.php?option=com_speasyimagegallery&task=albums.image_delete', + data: data, + success: function(response) { + var data = $.parseJSON(response); + if(data.status) { + $this.closest('.speasyimagegallery-singe-image').remove(); + } + + if(!data.count) { + $('.speasyimagegallery-images-list').addClass('speasyimagegallery-no-images'); + } + } + }) + } + }); + + // Edit Image + $(document).on('click', '.speasyimagegallery-edit-image', function(event) { + event.preventDefault(); + var $this = $(this); + var data = { + id: $this.attr('data-id'), + album_id: album_id + } + + $.ajax({ + type: "POST", + url: 'index.php?option=com_speasyimagegallery&task=albums.edit_image', + data: data, + beforeSend: function() { + $this.find('.fa').addClass('fa-spinner fa-spin'); + }, + success: function(response) { + $this.find('.fa').removeClass('fa-spinner fa-spin'); + var modal = '
'; + modal += '

'+ Joomla.JText._('COM_SPEASYIMAGEGALLERY_MODAL_EDIT_IMAGE') +'

'; + modal += '
' + response + '
'; + modal += '
'; + $('body').addClass('speasyimagegallery-edit-modal-open').append(modal); + } + }) + }); + + //Save image settings + $(document).on('click', '#btn-save-image-settings', function(event) { + event.preventDefault(); + var $this = $(this); + var id = $this.attr('data-image'), + title = $('#speasyimagegallery-image-field-title').val(), + alt = $('#speasyimagegallery-image-field-alt').val(), + desc = $('#speasyimagegallery-image-field-desc').val() + + var data = { + id: id, + title: title, + alt: alt, + desc: desc + } + + $.ajax({ + type: "POST", + url: 'index.php?option=com_speasyimagegallery&task=albums.save_image', + data: data, + beforeSend: function() { + $this.find('.fa').addClass('fa-spinner fa-spin'); + }, + success: function(response) { + $('#imagesList').find('#' + id).find('.speasyimagegallery-image-title').text(title); + $('body').removeClass('speasyimagegallery-edit-modal-open'); + $('.speasyimagegallery-edit-modal-wrapper').remove(); + } + }) + }); + + // Close Modal + $(document).on('click', '.speasyimagegallery-edit-modal-close', function(event) { + event.preventDefault(); $('body').removeClass('speasyimagegallery-edit-modal-open'); + $('.speasyimagegallery-edit-modal-wrapper').remove(); + }); + + // Upload Image + $.fn.uploadImages = function(options) { + + var options = $.extend({ + index: '', + data : '' + }, options); + + $.ajax({ + type: "POST", + url: 'index.php?option=com_speasyimagegallery&task=albums.upload_image', + data: options.data, + contentType: false, + cache: false, + processData:false, + beforeSend: function() { + var placeholder = '
'; + placeholder += '
'; + placeholder += '
'+ Joomla.JText._('COM_SPEASYIMAGEGALLERY_IMAGE_UPLOADING') +'...
'; + placeholder += '
'; + placeholder += '
'; + placeholder += '
'; + $('#imagesList').prepend($(placeholder)); + $('.speasyimagegallery-images-list').removeClass('speasyimagegallery-no-images'); + }, + success: function(response) { + var data = $.parseJSON(response); + if(data.status) { + $('#imagesList').find('#' + options.index).remove(); + $('#imagesList').prepend(data.output); + } else { + $('#imagesList').find('#' + options.index).remove(); + alert(data.output); + } + + if(data.count) { + $('.speasyimagegallery-images-list').removeClass('speasyimagegallery-no-images'); + } else { + $('.speasyimagegallery-images-list').addClass('speasyimagegallery-no-images'); + } + + }, + xhr: function() { + myXhr = $.ajaxSettings.xhr(); + if(myXhr.upload){ + myXhr.upload.addEventListener('progress', function(evt) { + $('#imagesList').find('#' + options.index).find('.speasyimagegallery-progress-bar').css('width', Math.floor(evt.loaded / evt.total *100) + '%').text(Math.floor(evt.loaded / evt.total *100) + '%'); + }, false); + } + return myXhr; + } + }) + }; + + $(document).on('click', '#speasyimagegallery-upload-images-empty, #speasyimagegallery-btn-upload-images', function(event){ + event.preventDefault() + $('#speasyimagegallery-images-input-file').click() + }); + + $('#speasyimagegallery-images-input-file').on('change', function(event){ + event.preventDefault() + var $this = $(this) + var files = $(this).prop('files'); + var formdata = new FormData(); + + for (i=0;i + +
+ + + + + + + + +
+
+ +
+
diff --git a/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/controller.php b/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/controller.php new file mode 100644 index 00000000..f23e48df --- /dev/null +++ b/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/controller.php @@ -0,0 +1,15 @@ +authorise( "core.edit", "com_speasyimagegallery.album." . $id ); + } + } + + protected function postSaveHook(JModelLegacy $model, $validData = array()) + { + $params = JComponentHelper::getParams('com_speasyimagegallery'); + $width = $params->get('thumb_width', 150); + $height = $params->get('thumb_height', 150); + $item = $model->getItem(); + $id = $item->get('id'); + $image = JPATH_ROOT . '/' . $item->image; + + if(file_exists($image)) { + $folder = JPATH_ROOT . '/images/speasyimagegallery/albums/' . $id; + $base_name = JFile::stripExt($image); + $ext = JFile::getExt($image); + + if(!JFolder::exists($folder)) + { + JFolder::create($folder, 0755); + } + + SpeasyimagegalleryHelper::createThumbs($image, array( + 'thumb'=> array($width, $height) + ), $folder, '', $ext); + } + + return true; + } +} diff --git a/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/controllers/albums.php b/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/controllers/albums.php new file mode 100644 index 00000000..457d1393 --- /dev/null +++ b/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/controllers/albums.php @@ -0,0 +1,229 @@ + true)) + { + $model = parent::getModel($name, $prefix, $config); + return $model; + } + + // Upload File + public function upload_image() + { + $model = $this->getModel(); + $user = JFactory::getUser(); + $input = JFactory::getApplication()->input; + $album_id = $input->post->get('album_id', 0, 'INT'); + $file = $input->files->get('image'); + $report = array(); + $params = JComponentHelper::getParams('com_speasyimagegallery'); + $width = $params->get('thumb_width', 150); + $height = $params->get('thumb_height', 150); + + $authorised = $user->authorise('core.edit', 'com_speasyimagegallery') || $user->authorise('core.edit.own', 'com_speasyimagegallery'); + + if ($authorised !== true) + { + $report['status'] = false; + $report['output'] = JText::_('JERROR_ALERTNOAUTHOR'); + echo json_encode($report); + die(); + } + + if(count($file)) + { + if ($file['error'] == UPLOAD_ERR_OK) + { + $error = false; + $contentLength = (int) $_SERVER['CONTENT_LENGTH']; + $mediaHelper = new JHelperMedia; + $postMaxSize = $mediaHelper->toBytes(ini_get('post_max_size')); + $memoryLimit = $mediaHelper->toBytes(ini_get('memory_limit')); + + // Check for the total size of post back data. + if (($postMaxSize > 0 && $contentLength > $postMaxSize) || ($memoryLimit != -1 && $contentLength > $memoryLimit)) + { + $report['status'] = false; + $report['output'] = JText::_('COM_SPEASYIMAGEGALLERY_IMAGE_TOTAL_SIZE_EXCEEDS'); + $error = true; + echo json_encode($report); + die; + } + + $uploadMaxFileSize = $mediaHelper->toBytes(ini_get('upload_max_filesize')); + + if (($file['error'] == 1) || ($uploadMaxFileSize > 0 && $file['size'] > $uploadMaxFileSize)) + { + $report['status'] = false; + $report['output'] = JText::_('COM_SPEASYIMAGEGALLERY_IMAGE_LARGE'); + $error = true; + } + + // File formats + $accepted_formats = array('jpg', 'jpeg', 'png', 'gif', 'bmp'); + + // Upload if no error found + if(!$error) + { + $date = JFactory::getDate(); + + $file_ext = strtolower(JFile::getExt($file['name'])); + + if(in_array($file_ext, $accepted_formats)) + { + + $folder = 'images/speasyimagegallery/albums/' . $album_id . '/images'; + + if(!JFolder::exists( JPATH_ROOT . '/' . $folder )) + { + JFolder::create(JPATH_ROOT . '/' . $folder, 0755); + } + + $name = $file['name']; + $path = $file['tmp_name']; + // Do no override existing file + + $media_file = preg_replace("/[\s-_]+/", "-", JFile::makeSafe(basename(strtolower($name)))); + $i = 0; + do { + $base_name = JFile::stripExt($media_file) . ($i ? "$i" : ""); + $ext = JFile::getExt($media_file); + $media_name = $base_name . '.' . $ext; + $i++; + $dest = JPATH_ROOT . '/' . $folder . '/' . $media_name; + $src = $folder . '/' . $media_name; + } while(file_exists($dest)); + // End Do not override + + if(JFile::upload($path, $dest, false, true)) + { + + $sources = SpeasyimagegalleryHelper::createThumbs($dest, array( + 'mini'=> array(64, 64), + 'thumb'=> array($width, $height), + 'x_thumb'=> array($width*2, $height), + 'y_thumb'=> array($width, $height*2) + ), $folder, $base_name, $ext); + + $report['thumb'] = JURI::root(true) . '/' . $sources['thumb']; + + $image = array( + 'title' => $base_name, + 'alt' => $base_name, + 'ext' => $ext, + 'album_id' => $album_id, + 'images' => json_encode($sources) + ); + + $inserted_image = $model->insertMedia($image); + $report['status'] = true; + $report['output'] = JLayoutHelper::render('image', array('image'=>$inserted_image)); + + } + else + { + $report['status'] = false; + $report['output'] = JText::_('COM_SPEASYIMAGEGALLERY_IMAGE_UPLOAD_FAILED'); + } + + } + else + { + $report['status'] = false; + $report['output'] = JText::_('COM_SPEASYIMAGEGALLERY_IMAGE_NOT_SUPPORTED'); + } + + } + } + } + else + { + $report['status'] = false; + $report['output'] = JText::_('COM_SPEASYIMAGEGALLERY_IMAGE_UPLOAD_FAILED'); + } + + $report['count'] = $model->getCount($input->post->get('album_id', 0, 'INT')); + + echo json_encode($report); + die(); + } + + // Sort images + public function sort_images() { + $input = JFactory::getApplication()->input; + $orders = $input->get('orders', '', 'STRING'); + $orders = explode(',', $orders); + $model = $this->getModel(); + $model->save_ajax_orderings($orders); + die(); + } + + // Change Image state + public function image_state() { + $input = JFactory::getApplication()->input; + $id = $input->get('id', '', 'INT'); + $state = $input->get('state', 'enabled', 'STRING'); + $model = $this->getModel(); + $model->change_image_state($id, $state); + die(); + } + + // Delete Image + public function image_delete() { + $input = JFactory::getApplication()->input; + $id = $input->get('id', '', 'INT'); + $album_id = $input->get('album_id', '', 'INT'); + $model = $this->getModel(); + $result = $model->image_delete($id, $album_id); + echo json_encode($result); + die(); + } + + // Edit Image + public function edit_image() { + $input = JFactory::getApplication()->input; + $id = $input->get('id', '', 'INT'); + $album_id = $input->get('album_id', '', 'INT'); + $model = $this->getModel(); + $image = $model->getImages($album_id, $id); + echo JLayoutHelper::render('edit', array('image'=>$image)); + die(); + } + + // save image + public function save_image() { + $input = JFactory::getApplication()->input; + $id = $input->get('id', '', 'INT'); + $title = $input->get('title', '', 'STRING'); + $alt = $input->get('alt', '', 'STRING'); + $desc = $input->get('desc', '', 'STRING'); + + $attr = array( + 'id'=>$id, + 'title'=>$title, + 'alt'=>$alt, + 'desc'=>$desc + ); + + $model = $this->getModel(); + $model->saveImage($attr); + die(); + } + +} diff --git a/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/helpers/speasyimagegallery.php b/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/helpers/speasyimagegallery.php new file mode 100644 index 00000000..764b647a --- /dev/null +++ b/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/helpers/speasyimagegallery.php @@ -0,0 +1,139 @@ +set($action->name, JFactory::getUser()->authorise($action->name, $assetName)); + } + + return $result; + } + + // Create thumbs + public static function createThumbs($src, $sizes = array(), $folder, $base_name, $ext) + { + + list($originalWidth, $originalHeight) = getimagesize($src); + + switch($ext) + { + case 'bmp': $img = imagecreatefromwbmp($src); break; + case 'gif': $img = imagecreatefromgif($src); break; + case 'jpg': $img = imagecreatefromjpeg($src); break; + case 'jpeg': $img = imagecreatefromjpeg($src); break; + case 'png': $img = imagecreatefrompng($src); break; + } + + if(count($sizes)) + { + $output = array(); + + if($base_name) + { + $output['original'] = $folder . '/' . $base_name . '.' . $ext; + } + + foreach ($sizes as $key => $size) + { + $targetWidth = $size[0]; + $targetHeight = $size[1]; + $ratio_thumb = $targetWidth/$targetHeight; + $ratio_original = $originalWidth/$originalHeight; + + if ($ratio_original >= $ratio_thumb) { + $height = $originalHeight; + $width = ceil(($height*$targetWidth)/$targetHeight); + $x = ceil(($originalWidth-$width)/2); + $y = 0; + } else { + $width = $originalWidth; + $height = ceil(($width*$targetHeight)/$targetWidth); + $y = ceil(($originalHeight-$height)/2); + $x = 0; + } + + $new = imagecreatetruecolor($targetWidth, $targetHeight); + + if($ext == "gif" or $ext == "png") + { + imagecolortransparent($new, imagecolorallocatealpha($new, 0, 0, 0, 127)); + imagealphablending($new, false); + imagesavealpha($new, true); + } + + imagecopyresampled($new, $img, 0, 0, $x, $y, $targetWidth, $targetHeight, $width, $height); + + if($base_name) + { + $dest = dirname($src) . '/' . $base_name . '_' . $key . '.' . $ext; + $output[$key] = $folder . '/' . $base_name . '_' . $key . '.' . $ext; + } + else + { + $dest = $folder . '/' . $key . '.' . $ext; + } + + switch($ext) + { + case 'bmp': imagewbmp($new, $dest); break; + case 'gif': imagegif($new, $dest); break; + case 'jpg': imagejpeg($new, $dest); break; + case 'jpeg': imagejpeg($new, $dest); break; + case 'png': imagepng($new, $dest); break; + } + } + + return $output; + } + + return false; + } + +} diff --git a/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/layouts/edit.php b/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/layouts/edit.php new file mode 100644 index 00000000..1459c95a --- /dev/null +++ b/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/layouts/edit.php @@ -0,0 +1,60 @@ +images); + +// No direct access +defined('_JEXEC') or die('Restricted access'); +?> + +
+
+
+ <?php echo $image->alt; ?> +
+
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+ +
+
+
+
diff --git a/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/layouts/image.php b/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/layouts/image.php new file mode 100644 index 00000000..af53e6ba --- /dev/null +++ b/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/layouts/image.php @@ -0,0 +1,61 @@ +images); + +// No direct access +defined('_JEXEC') or die('Restricted access'); +?> +
+ +
+ + + +
+ +
+ <?php echo $image->alt; ?> +
+ +
+
+ title; ?> + filename; ?> +
+ + +
+
+
+ +
+ created, JText::_('DATE_FORMAT_LC4')); ?> +
+ +
+ created_by); + ?> + + escape($author->username); ?> +
+ +
+ state) { ?> + + + + +
+ +
+ id; ?> +
+
diff --git a/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/layouts/images.php b/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/layouts/images.php new file mode 100644 index 00000000..3c3a2f5e --- /dev/null +++ b/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/layouts/images.php @@ -0,0 +1,87 @@ + + +
+ +
+ +
+
+
+ +

+ +

+
+ + +
+
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+ +
+ $image) { + echo JLayoutHelper::render('image', array('image'=>$image)); + } + ?> +
+ +
+ +
+
+loadForm('com_speasyimagegallery.album', 'album', array( 'control' => 'jform', 'load_data' => $loadData ) ); + + if (empty($form)) + { + return false; + } + + return $form; + } + + /** + * Method to get the data that should be injected in the form. + * + * @return mixed The data for the form. + * + * @since 1.6 + */ + protected function loadFormData() + { + // Check the session for previously entered form data. + $data = JFactory::getApplication()->getUserState( 'com_speasyimagegallery.edit.album.data', array() ); + + if (empty($data)) + { + $data = $this->getItem(); + } + + return $data; + } + + public function save($data) { + $input = JFactory::getApplication()->input; + $filter = JFilterInput::getInstance(); + + // Automatic handling of alias for empty fields + if (in_array($input->get('task'), array('apply', 'save')) && (!isset($data['id']) || (int) $data['id'] == 0)) + { + if ($data['alias'] == null) + { + if (JFactory::getConfig()->get('unicodeslugs') == 1) + { + $data['alias'] = JFilterOutput::stringURLUnicodeSlug($data['title']); + } + else + { + $data['alias'] = JFilterOutput::stringURLSafe($data['title']); + } + + $table = JTable::getInstance('Album', 'SpeasyimagegalleryTable'); + + while ($table->load(array('alias' => $data['alias'], 'catid' => $data['catid']))) + { + $data['alias'] = StringHelper::increment($data['alias'], 'dash'); + } + } + } + + if (parent::save($data)) + { + return true; + } + + return false; + } + + /** + * Method to check if it's OK to delete a message. Overwrites JModelAdmin::canDelete + */ + protected function canDelete($record) + { + if (!empty($record->id)) + { + if ($record->published != -2) + { + return false; + } + + return JFactory::getUser()->authorise('core.delete', 'com_speasyimagegallery.album.' . (int) $record->id); + } + + return false; + } + + // Delete images + public function delete(&$pks) + { + $return = parent::delete($pks); + + if ($return) + { + foreach ($pks as $pk) { + // delete images + $cover = JPATH_ROOT . "/images/speasyimagegallery/albums/" . $pk; + if(JFolder::exists($cover)) { + JFolder::delete($cover); + } + + // Get all images + $images = $this->getImages($pk); + if(count($images)) { + foreach ($images as $key => $image) { + $this->image_delete($image->id, $pk); + } + } + + } + } + + return $return; + } + + // Get images + public function getImages($album_id = 0, $id = 0) { + $db = JFactory::getDbo(); + $query = $db->getQuery(true); + $query->select(array('a.*')); + $query->from($db->quoteName('#__speasyimagegallery_images', 'a')); + + if($album_id) { + $query->where($db->quoteName('album_id') . ' = '. $db->quote($album_id)); + } + + if($id) { + $query->where($db->quoteName('id') . ' = '. $db->quote($id)); + $db->setQuery($query); + return $db->loadObject(); + } else { + $query->order('a.ordering DESC'); + $db->setQuery($query); + return $db->loadObjectList(); + } + } + + public function getCount($album_id = 0) { + $db = JFactory::getDbo(); + $query = $db->getQuery(true); + $query->select('COUNT(a.id)'); + $query->from($db->quoteName('#__speasyimagegallery_images', 'a')); + if($album_id) { + $query->where($db->quoteName('album_id') . ' = '. $db->quote($album_id)); + } + $db->setQuery($query); + $total = $db->loadResult(); + + if($total) { + return $total; + } + + return 0; + } + + // upload + public function insertMedia($attribs = array()) { + $total = $this->getCount($attribs['album_id']); + $db = JFactory::getDbo(); + $image = new stdClass(); + $title = ucwords(preg_replace("/[\s-_]+/", " ", $attribs['title'])); + $image->filename = $attribs['title'] . '.' . $attribs['ext']; + $image->title = $title; + $image->alt = $title; + $image->album_id = $attribs['album_id']; + $image->state = 1; + $image->ordering = ($total + 1); + $image->created = JHtml::_('date', strtotime(JFactory::getDate('now')), 'Y-m-d h:m:s'); + $image->created_by = JFactory::getUser()->id; + $image->images = $attribs['images']; + + $db->insertObject('#__speasyimagegallery_images', $image); + + // Retrive Image + $insertid = $db->insertid(); + $insertImage = $this->getImages($attribs['album_id'], $insertid); + + return $insertImage; + } + + // Update orderings + public function save_ajax_orderings($orderings = array()) { + if(count($orderings)) { + $count = count($orderings); + foreach ($orderings as $key => $id) { + $image = new stdClass(); + $image->id = $id; + $image->ordering = ($count - $key) + 1; + $result = JFactory::getDbo()->updateObject('#__speasyimagegallery_images', $image, 'id'); + } + } + } + + // Update state + public function change_image_state($id, $state) { + $image = new stdClass(); + $image->id = $id; + if($state == 'enabled') { + $image->state = 0; + } else { + $image->state = 1; + } + $result = JFactory::getDbo()->updateObject('#__speasyimagegallery_images', $image, 'id'); + } + + public function saveImage($attr) { + $image = new stdClass(); + $image->id = $attr['id']; + $image->title = $attr['title']; + $image->alt = $attr['alt']; + $image->description = $attr['desc']; + $result = JFactory::getDbo()->updateObject('#__speasyimagegallery_images', $image, 'id'); + } + + public function image_delete($id, $album_id) { + $image = $this->getImages($album_id, $id); + $sources = json_decode($image->images); + foreach ($sources as $key => $source) { + $path = JPATH_ROOT . '/' . $source; + if(file_exists($path)) { + JFile::delete($path); + } + } + + $db = JFactory::getDbo(); + $query = $db->getQuery(true); + $conditions = array($db->quoteName('id') . ' = ' . $id); + $query->delete($db->quoteName('#__speasyimagegallery_images')); + $query->where($conditions); + $db->setQuery($query); + $db->execute(); + + $output = array(); + $output['status'] = true; + $output['count'] = $this->getCount($album_id); + + return $output; + + } + +} diff --git a/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/models/albums.php b/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/models/albums.php new file mode 100644 index 00000000..b4ca515c --- /dev/null +++ b/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/models/albums.php @@ -0,0 +1,180 @@ +context; + + $search = $this->getUserStateFromRequest($this->context . '.filter.search', 'filter_search'); + $this->setState('filter.search', $search); + + $access = $this->getUserStateFromRequest($this->context . '.filter.access', 'filter_access'); + $this->setState('filter.access', $access); + + $published = $this->getUserStateFromRequest($this->context . '.filter.published', 'filter_published', ''); + $this->setState('filter.published', $published); + + $categoryId = $this->getUserStateFromRequest($this->context . '.filter.category_id', 'filter_category_id'); + $this->setState('filter.category_id', $categoryId); + + $language = $this->getUserStateFromRequest($this->context . '.filter.language', 'filter_language', ''); + $this->setState('filter.language', $language); + + // List state information. + parent::populateState($ordering, $direction); + } + + protected function getStoreId($id = '') + { + // Compile the store id. + $id .= ':' . $this->getState('filter.search'); + $id .= ':' . $this->getState('filter.access'); + $id .= ':' . $this->getState('filter.published'); + $id .= ':' . $this->getState('filter.category_id'); + $id .= ':' . $this->getState('filter.language'); + + return parent::getStoreId($id); + } + + /** + * Method to build an SQL query to load the list data. + * + * @return string An SQL query + */ + protected function getListQuery() + { + // Initialize variables. + $app = JFactory::getApplication(); + $db = JFactory::getDbo(); + $query = $db->getQuery(true); + + // Create the base select statement. + $query->select( + $this->getState( + 'list.select', + 'a.*' + ) + ); + + $query->from('#__speasyimagegallery_albums as a'); + + $query->select('l.title AS language_title') + ->join('LEFT', $db->quoteName('#__languages') . ' AS l ON l.lang_code = a.language'); + + // Join over the users for the checked out user. + $query->select('uc.name AS editor') + ->join('LEFT', '#__users AS uc ON uc.id=a.checked_out'); + + $query->select('ua.name AS author_name') + ->join('LEFT', '#__users AS ua ON ua.id = a.created_by'); + + $query->select('ug.title AS access_title') + ->join('LEFT','#__viewlevels AS ug ON ug.id = a.access'); + + // Join over the categories. + $query->select('c.title AS category_title') + ->join('LEFT', '#__categories AS c ON c.id = a.catid'); + + // Filter by published state + $published = $this->getState('filter.published'); + + if (is_numeric($published)) + { + $query->where('a.published = ' . (int) $published); + } + elseif ($published === '') + { + $query->where('(a.published IN (0, 1))'); + } + + // Filter by a single or group of categories. + $baselevel = 1; + $categoryId = $this->getState('filter.category_id'); + + if (is_numeric($categoryId)) + { + $cat_tbl = JTable::getInstance('Category', 'JTable'); + $cat_tbl->load($categoryId); + $rgt = $cat_tbl->rgt; + $lft = $cat_tbl->lft; + $baselevel = (int) $cat_tbl->level; + $query->where('c.lft >= ' . (int) $lft) + ->where('c.rgt <= ' . (int) $rgt); + } + elseif (is_array($categoryId)) + { + JArrayHelper::toInteger($categoryId); + $categoryId = implode(',', $categoryId); + $query->where('a.catid IN (' . $categoryId . ')'); + } + + // Filter by language + if ($language = $this->getState('filter.language')) + { + $query->where('a.language = ' . $db->quote($language)); + } + + $search = $this->getState('filter.search'); + if (!empty($search)) + { + if (stripos($search, 'id:') === 0) + { + $query->where('a.id = ' . (int) substr($search, 3)); + } + elseif (stripos($search, 'author:') === 0) + { + $search = $db->quote('%' . $db->escape(substr($search, 7), true) . '%'); + $query->where('(uc.name LIKE ' . $search . ' OR uc.username LIKE ' . $search . ')'); + } + else + { + $search = $db->quote('%' . $db->escape($search, true) . '%'); + $query->where('(a.title LIKE ' . $search . ')'); + } + } + + // Add the list ordering clause. + $orderCol = $app->getUserStateFromRequest($this->context.'filter_order', 'filter_order', 'id', 'cmd'); + $orderDirn = $app->getUserStateFromRequest($this->context.'filter_order_Dir', 'filter_order_Dir', 'desc', 'cmd'); + + $query->order($db->escape($orderCol) . ' ' . $db->escape($orderDirn)); + + return $query; + } + } diff --git a/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/models/fields/albums.php b/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/models/fields/albums.php new file mode 100644 index 00000000..a62e7791 --- /dev/null +++ b/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/models/fields/albums.php @@ -0,0 +1,32 @@ +getQuery(true); + $query->select($db->quoteName(array('id', 'title'))); + $query->from($db->quoteName('#__speasyimagegallery_albums')); + $query->where($db->quoteName('published') . ' = '. $db->quote(1)); + $query->order('ordering DESC'); + $db->setQuery($query); + return $db->loadAssocList('id', 'title'); + + } +} diff --git a/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/models/forms/album.xml b/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/models/forms/album.xml new file mode 100644 index 00000000..f3fc3144 --- /dev/null +++ b/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/models/forms/album.xml @@ -0,0 +1,43 @@ + +
+
+ + + + +
+ +
+ + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + +
+
diff --git a/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/models/forms/filter_albums.xml b/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/models/forms/filter_albums.xml new file mode 100644 index 00000000..a47939f3 --- /dev/null +++ b/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/models/forms/filter_albums.xml @@ -0,0 +1,22 @@ + +
+ + + + + + + + + + + + + + + + + + + +
diff --git a/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/speasyimagegallery.php b/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/speasyimagegallery.php new file mode 100644 index 00000000..c2224600 --- /dev/null +++ b/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/speasyimagegallery.php @@ -0,0 +1,22 @@ +authorise('core.manage', 'com_speasyimagegallery')) +{ + throw new Exception(JText::_('JERROR_ALERTNOAUTHOR')); +} + +// Require helper file +JLoader::register('SpeasyimagegalleryHelper', JPATH_COMPONENT . '/helpers/speasyimagegallery.php'); +$controller = JControllerLegacy::getInstance('Speasyimagegallery'); +$controller->execute(JFactory::getApplication()->input->get('task')); +$controller->redirect(); diff --git a/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/speasyimagegallery.xml b/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/speasyimagegallery.xml new file mode 100644 index 00000000..a55ff26e --- /dev/null +++ b/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/speasyimagegallery.xml @@ -0,0 +1,63 @@ + + + COM_SPEASYIMAGEGALLERY + Mar 2016 + JoomShaper + support@joomshaper.com + http://www.joomshaper.com + @JoomShaper 2010 - 2017. All rights reserved. + GNU General Public License version 2 or later + 1.0 + A simple image gallery component for Joomla. + + + https://www.joomshaper.com/updates/com-speasyimagegallery.xml + + + + + sql/install.mysql.utf8.sql + + + + + + sql/uninstall.mysql.utf8.sql + + + + + speasyimagegallery.php + controller.php + router.php + views + models + assets + + + en-GB/en-GB.com_speasyimagegallery.ini + + + + COM_SPEASYIMAGEGALLERY + + speasyimagegallery.php + config.xml + controller.php + access.xml + assets + controllers + helpers + layouts + models + sql + tables + views + + + en-GB/en-GB.com_speasyimagegallery.ini + en-GB/en-GB.com_speasyimagegallery.sys.ini + + + + diff --git a/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/sql/install.mysql.utf8.sql b/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/sql/install.mysql.utf8.sql new file mode 100644 index 00000000..01e1aac0 --- /dev/null +++ b/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/sql/install.mysql.utf8.sql @@ -0,0 +1,47 @@ +CREATE TABLE IF NOT EXISTS `#__speasyimagegallery_albums` ( + `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, + `asset_id` int(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT 'FK to the #__assets table.', + `title` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '', + `alias` varchar(400) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL DEFAULT '', + `image` varchar(500) COLLATE utf8mb4_unicode_ci NOT NULL, + `description` mediumtext COLLATE utf8mb4_unicode_ci NOT NULL, + `published` tinyint(3) NOT NULL DEFAULT '0', + `catid` int(10) NOT NULL DEFAULT '0', + `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + `created_by` int(10) UNSIGNED NOT NULL DEFAULT '0', + `modified` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + `modified_by` int(10) UNSIGNED NOT NULL DEFAULT '0', + `checked_out` int(10) UNSIGNED NOT NULL DEFAULT '0', + `checked_out_time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + `attribs` varchar(5120) COLLATE utf8mb4_unicode_ci NOT NULL, + `ordering` int(11) NOT NULL DEFAULT '0', + `metakey` text COLLATE utf8mb4_unicode_ci NOT NULL, + `metadesc` text COLLATE utf8mb4_unicode_ci NOT NULL, + `access` int(10) UNSIGNED NOT NULL DEFAULT '0', + `hits` int(10) UNSIGNED NOT NULL DEFAULT '0', + `metadata` text COLLATE utf8mb4_unicode_ci NOT NULL, + `featured` tinyint(3) UNSIGNED NOT NULL DEFAULT '0' COMMENT 'Set if item is featured.', + `language` char(7) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'The language code for the article.', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci; + +CREATE TABLE IF NOT EXISTS `#__speasyimagegallery_images` ( + `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, + `asset_id` int(10) UNSIGNED NOT NULL DEFAULT '0' COMMENT 'FK to the #__assets table.', + `album_id` int(10) NOT NULL DEFAULT '0', + `title` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '', + `alt` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '', + `filename` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `description` mediumtext COLLATE utf8mb4_unicode_ci NOT NULL, + `state` tinyint(3) NOT NULL DEFAULT '0', + `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + `created_by` int(10) UNSIGNED NOT NULL DEFAULT '0', + `modified` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + `modified_by` int(10) UNSIGNED NOT NULL DEFAULT '0', + `checked_out` int(10) UNSIGNED NOT NULL DEFAULT '0', + `checked_out_time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + `images` varchar(5120) COLLATE utf8mb4_unicode_ci NOT NULL, + `ordering` int(11) NOT NULL DEFAULT '0', + `language` char(7) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'The language code for the article.', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci; diff --git a/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/sql/uninstall.mysql.utf8.sql b/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/sql/uninstall.mysql.utf8.sql new file mode 100644 index 00000000..e69de29b diff --git a/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/tables/album.php b/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/tables/album.php new file mode 100644 index 00000000..ed52fbd8 --- /dev/null +++ b/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/tables/album.php @@ -0,0 +1,74 @@ +id) { + $this->modified = $date->toSql(); + $this->modified_by = $user->get('id'); + } else { + if (!(int) $this->created) { + $this->created = $date->toSql(); + } + if (empty($this->created_by)) { + $this->created_by = $user->get('id'); + } + } + + // Verify that the alias is unique + $table = JTable::getInstance('Album', 'SpeasyimagegalleryTable'); + + if ($table->load(array('alias' => $this->alias)) && ($table->id != $this->id || $this->id == 0)) + { + $this->setError(JText::_('COM_SPEASYIMAGEGALLERY_ERROR_UNIQUE_ALIAS')); + + return false; + } + + return parent::store($updateNulls); + } + + public function check() + { + // Check for valid name. + if (trim($this->title) == '') + { + throw new UnexpectedValueException(sprintf('The title is empty')); + } + + if (empty($this->alias)) + { + $this->alias = $this->title; + } + + $this->alias = JApplicationHelper::stringURLSafe($this->alias, $this->language); + + if (trim(str_replace('-', '', $this->alias)) == '') + { + $this->alias = JFactory::getDate()->format('Y-m-d-H-i-s'); + } + + return true; + + } + +} diff --git a/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/views/album/tmpl/edit.php b/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/views/album/tmpl/edit.php new file mode 100644 index 00000000..8c275b7d --- /dev/null +++ b/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/views/album/tmpl/edit.php @@ -0,0 +1,82 @@ + 0 )); +JHtml::_('jquery.ui', array('core', 'sortable')); + +$doc->addStylesheet(jURI::base(true) . '/components/com_speasyimagegallery/assets/css/font-awesome.min.css'); +$doc->addStylesheet(jURI::base(true) . '/components/com_speasyimagegallery/assets/css/style.css'); +$doc->addScript(jURI::base(true) . '/components/com_speasyimagegallery/assets/js/validation.js'); +$doc->addScript(jURI::base(true) . '/components/com_speasyimagegallery/assets/js/script.js'); + +// Language strings +JText::script('COM_SPEASYIMAGEGALLERY_DELETE_IMAGE_CONFIRM'); +JText::script('COM_SPEASYIMAGEGALLERY_IMAGE_UPLOADING'); +JText::script('COM_SPEASYIMAGEGALLERY_MODAL_EDIT_IMAGE'); + +if($this->item->id) { + $doc->addScriptdeclaration('var album_id = '. $this->item->id .';'); +} else { + $doc->addScriptdeclaration('var album_id = 0;'); +} + +?> +
+ + +
+ +
+
+ item->id) + { + echo JHtml::_('bootstrap.startTabSet', 'myTab', array('active' => 'images')); + echo JHtml::_('bootstrap.addTab', 'myTab', 'images', 'Images'); + echo JLayoutHelper::render('images', array('total'=>$this->total, 'images'=>$this->images)); + echo JHtml::_('bootstrap.endTab'); + } + else + { + echo JHtml::_('bootstrap.startTabSet', 'myTab', array('active' => 'description')); + } + ?> + + +
+ form->getInput('description'); ?> +
+ + + +
+ form->renderFieldset('publishing'); ?> +
+ + + +
+ +
+
+ form->renderFieldset('info'); ?> +
+
+
+ +
+ + + +
diff --git a/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/views/album/view.html.php b/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/views/album/view.html.php new file mode 100644 index 00000000..a8f13b4f --- /dev/null +++ b/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/views/album/view.html.php @@ -0,0 +1,79 @@ +getModel('Album'); + $this->form = $this->get('Form'); + $this->item = $this->get('Item'); + $this->id = $this->item->id; + + $this->images = array(); + $this->total = 0; + if(isset($this->id) && $this->id) { + $this->images = $model->getImages($this->id); + $this->total = $model->getCount($this->id); + } + + $this->canDo = SpeasyimagegalleryHelper::getActions($this->item->id); + + // Check for errors. + if (count($errors = $this->get('Errors'))) + { + JError::raiseError(500, implode('
', $errors)); + return false; + } + + $this->addToolBar(); + parent::display($tpl); + } + + protected function addToolBar() + { + $input = JFactory::getApplication()->input; + + // Hide Joomla Administrator Main menu + $input->set('hidemainmenu', true); + + $isNew = ($this->item->id == 0); + + JToolBarHelper::title(JText::_('COM_SPEASYIMAGEGALLERY_MANAGER') . ($isNew ? JText::_('COM_SPEASYIMAGEGALLERY_ALBUM_NEW') : JText::_('COM_SPEASYIMAGEGALLERY_ALBUM_EDIT')), 'pictures'); + + if ($isNew) + { + // For new records, check the create permission. + if ($this->canDo->get('core.create')) + { + JToolBarHelper::apply('album.apply', 'JTOOLBAR_APPLY'); + } + JToolBarHelper::cancel('album.cancel', 'JTOOLBAR_CANCEL'); + } + else + { + if ($this->canDo->get('core.edit')) + { + // We can save the new record + JToolBarHelper::apply('album.apply', 'JTOOLBAR_APPLY'); + JToolBarHelper::save('album.save', 'JTOOLBAR_SAVE'); + } + JToolBarHelper::cancel('album.cancel', 'JTOOLBAR_CLOSE'); + } + } +} diff --git a/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/views/albums/tmpl/default.php b/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/views/albums/tmpl/default.php new file mode 100644 index 00000000..ecb35cec --- /dev/null +++ b/deployed/speasyimagegallery/administrator/components/com_speasyimagegallery/views/albums/tmpl/default.php @@ -0,0 +1,210 @@ +get('id'); + +$listOrder = $this->escape($this->filter_order); +$listDirn = $this->escape($this->filter_order_Dir); +$saveOrder = $listOrder == 'a.ordering'; + +if ($saveOrder) { + $saveOrderingUrl = 'index.php?option=com_speasyimagegallery&task=albums.saveOrderAjax&tmpl=component'; + JHtml::_('sortablelist.sortable', 'albumList', 'adminForm', strtolower($listDirn), $saveOrderingUrl, false, true); +} +?> + + + +
+ sidebar)) : ?> +
+ sidebar; ?> +
+
+ +
+ + + $this)); ?> + + items)) : ?> +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + 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); + ?> + + + + + + + + + + + + + + + + + + +
+ ', 'a.ordering', $listDirn, $listOrder); ?> + + + + + + + + + + + + + + + + + + + + +
+ pagination->getListFooter(); ?> +
+ + + + + + + + + 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.index0?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+=''+e.attr(',(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 += ''+ $item.attr('data-alt') +''; + + 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 @@ + + + + + +
+ + +
+
+ +
+ + + + + + +
+
+
diff --git a/deployed/speasyimagegallery/components/com_speasyimagegallery/views/album/view.html.php b/deployed/speasyimagegallery/components/com_speasyimagegallery/views/album/view.html.php new file mode 100644 index 00000000..a94b2f8b --- /dev/null +++ b/deployed/speasyimagegallery/components/com_speasyimagegallery/views/album/view.html.php @@ -0,0 +1,89 @@ +item = $this->get('Item'); + + $app = JFactory::getApplication(); + $this->params = $app->getParams(); + $menus = JFactory::getApplication()->getMenu(); + $menu = $menus->getActive(); + + if($menu) { + $this->params->merge($menu->params); + } + + // Check for errors. + if (count($errors = $this->get('Errors'))) + { + JError::raiseWarning(500, implode("\n", $errors)); + + return false; + } + + $model = $this->getModel(); + $model->hit(); + + $this->_prepareDocument($this->item); + parent::display($tpl); + } + + protected function _prepareDocument($item) + { + $app = JFactory::getApplication(); + $title = null; + + // Because the application sets a default page title, + $this->params->def('page_heading', $item->title); + $title = $item->title; + + if (empty($title)) + { + $title = $app->get('sitename'); + } + elseif ($app->get('sitename_pagetitles', 0) == 1) + { + $title = JText::sprintf('JPAGETITLE', $app->get('sitename'), $title); + } + elseif ($app->get('sitename_pagetitles', 0) == 2) + { + $title = JText::sprintf('JPAGETITLE', $title, $app->get('sitename')); + } + + $this->document->setTitle($title); + + if (isset($this->item->metadesc) && $this->item->metadesc) + { + $this->document->setDescription($this->item->metadesc); + } + + if (isset($this->item->metakey) && $this->item->metakey) + { + $this->document->setMetadata('keywords', $this->item->metakey); + } + + if ($this->params->get('robots')) + { + $this->document->setMetadata('robots', $this->params->get('robots')); + } + } +} diff --git a/deployed/speasyimagegallery/components/com_speasyimagegallery/views/albums/tmpl/default.php b/deployed/speasyimagegallery/components/com_speasyimagegallery/views/albums/tmpl/default.php new file mode 100644 index 00000000..865ad8b1 --- /dev/null +++ b/deployed/speasyimagegallery/components/com_speasyimagegallery/views/albums/tmpl/default.php @@ -0,0 +1,117 @@ +addStylesheet( JURI::base(true) . '/components/com_speasyimagegallery/assets/css/style-min.css' ); +$input = JFactory::getApplication()->input; + +$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')); ?>

+ + + items)) { ?> +
+ items as $key => $this->item) { ?> + item->image)); + $Itemid = ($input->get('Itemid', 0, 'INT'))? '&Itemid=' . $input->get('Itemid', 0, 'INT') : ''; + $link = 'index.php?option=com_speasyimagegallery&view=album&id=' . $this->item->id . ':' . $this->item->alias . $Itemid; + ?> + + +
+ ' . JText::_('COM_SPEASYIMAGEGALLERY_NO_ALBUMS') . '
'; + }?> + +
+
 
+ \ No newline at end of file diff --git a/deployed/speasyimagegallery/components/com_speasyimagegallery/views/albums/tmpl/default.xml b/deployed/speasyimagegallery/components/com_speasyimagegallery/views/albums/tmpl/default.xml new file mode 100644 index 00000000..87bc2d1e --- /dev/null +++ b/deployed/speasyimagegallery/components/com_speasyimagegallery/views/albums/tmpl/default.xml @@ -0,0 +1,22 @@ + + + + + +
+ + + +
+
+ +
+ + + + + + +
+
+
diff --git a/deployed/speasyimagegallery/components/com_speasyimagegallery/views/albums/view.html.php b/deployed/speasyimagegallery/components/com_speasyimagegallery/views/albums/view.html.php new file mode 100644 index 00000000..ffec4e90 --- /dev/null +++ b/deployed/speasyimagegallery/components/com_speasyimagegallery/views/albums/view.html.php @@ -0,0 +1,97 @@ +items = $this->get('Items'); + + $app = JFactory::getApplication(); + $this->params = $app->getParams(); + $menus = JFactory::getApplication()->getMenu(); + $menu = $menus->getActive(); + + if($menu) { + $this->params->merge($menu->params); + } + + // Check for errors. + if (count($errors = $this->get('Errors'))) + { + JLog::add(implode('
', $errors), JLog::WARNING, 'jerror'); + return false; + } + + $this->_prepareDocument(); + parent::display($tpl); + } + + protected function _prepareDocument() + { + $app = JFactory::getApplication(); + $menus = $app->getMenu(); + $title = null; + + // Because the application sets a default page title, + // we need to get it from the menu item itself + $menu = $menus->getActive(); + + if ($menu) + { + $this->params->def('page_heading', $this->params->get('page_title', $menu->title)); + } + else + { + $this->params->def('page_heading', JText::_('COM_SPEASYIMAGEGALLERY_DEFAULT_PAGE_TITLE')); + } + + $title = $this->params->get('page_title', ''); + + if (empty($title)) + { + $title = $app->get('sitename'); + } + elseif ($app->get('sitename_pagetitles', 0) == 1) + { + $title = JText::sprintf('JPAGETITLE', $app->get('sitename'), $title); + } + elseif ($app->get('sitename_pagetitles', 0) == 2) + { + $title = JText::sprintf('JPAGETITLE', $title, $app->get('sitename')); + } + + $this->document->setTitle($title); + + if ($this->params->get('menu-meta_description')) + { + $this->document->setDescription($this->params->get('menu-meta_description')); + } + + if ($this->params->get('menu-meta_keywords')) + { + $this->document->setMetadata('keywords', $this->params->get('menu-meta_keywords')); + } + + if ($this->params->get('robots')) + { + $this->document->setMetadata('robots', $this->params->get('robots')); + } + } +}