Compare commits
22 Commits
thumb_widt
...
master
Author | SHA1 | Date |
---|---|---|
Harry Bomrah | afb11a2fa2 | |
Harry Bomrah | 1769924137 | |
Harry Bomrah | b6bb20d66a | |
Harry Bomrah | 4d1ab7a226 | |
Harry Bomrah | 1628c0d3d2 | |
Harry Bomrah | 1b293c185e | |
Ruling-Mac | 88eea54f76 | |
Ruling-Mac | 605c7d467f | |
Harry Bomrah | c66d1fad20 | |
Harry Bomrah | f211afc523 | |
Harry Bomrah | 863d89e46b | |
Harry Bomrah | 011f1c0f1e | |
Harry Bomrah | c98ceae1d6 | |
Harry Bomrah | 6da1ceb13f | |
Harry Bomrah | 269f7c5121 | |
Harry Bomrah | 5797173668 | |
Harry Bomrah | 939f13feeb | |
Harry Bomrah | f5fe643c71 | |
Harry Bomrah | 8bf1baf7f1 | |
Harry Bomrah | af41116726 | |
Harry Bomrah | 8aead66ac5 | |
Harry Bomrah | 7e432bd1ed |
|
@ -34,15 +34,19 @@ $(function () {
|
||||||
$(function() {
|
$(function() {
|
||||||
var $container = $('.gallery'),
|
var $container = $('.gallery'),
|
||||||
$containerData = $container.data();
|
$containerData = $container.data();
|
||||||
|
$container.data("order-edit","0");
|
||||||
|
$container.sortable({
|
||||||
|
disabled: true
|
||||||
|
});
|
||||||
$container.imagesLoaded(function(){
|
$container.imagesLoaded(function(){
|
||||||
var $albumname = $('.albumname'),
|
var $albumname = $('.albumname'),
|
||||||
$img = $('.rgalbum img');
|
$img = $('.rgalbum img');
|
||||||
$('.rgalbum > a').rsImg();
|
$('.rgalbum > a').rsImg();
|
||||||
if($containerData.galleryId == 'gallery') {
|
if($containerData.galleryId == 'gallery') {
|
||||||
$container.masonry({
|
// $container.masonry({
|
||||||
itemSelector : '.rgalbum',
|
// itemSelector : '.rgalbum',
|
||||||
isAnimated: true,
|
// isAnimated: true,
|
||||||
});
|
// });
|
||||||
$albumname.each(function(i) {
|
$albumname.each(function(i) {
|
||||||
var $albumblock = $(this).closest('a').height(),
|
var $albumblock = $(this).closest('a').height(),
|
||||||
$H = $(this).outerHeight(true);
|
$H = $(this).outerHeight(true);
|
||||||
|
@ -65,12 +69,7 @@ $(function() {
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
$('#orbit_gallery').delegate('.icons-tag', clickEvent, function(){
|
$('#orbit_gallery').delegate('.icons-tag', clickEvent, function(){
|
||||||
$(this).parents('.gallery_info').nextAll('.albumtag').slideToggle(300, function() {
|
$(this).parents('.gallery_info').nextAll('.albumtag').slideToggle(300);
|
||||||
$container.masonry({
|
|
||||||
itemSelector : '.rgalbum',
|
|
||||||
isAnimated: true,
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
@ -146,11 +145,11 @@ $(function() {
|
||||||
}
|
}
|
||||||
|
|
||||||
if($("#imgholder").length){
|
if($("#imgholder").length){
|
||||||
$('.open').pageslide({
|
$('.open').pageslide({
|
||||||
loadComplete: function(instance,elem) {
|
loadComplete: function(instance,elem) {
|
||||||
bindEvent(instance,elem);
|
bindEvent(instance,elem);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -215,19 +214,58 @@ $(function() {
|
||||||
$('.rgalbum').removeClass('active');
|
$('.rgalbum').removeClass('active');
|
||||||
$('.deletephoto, .deselect, .addtags').removeClass('hide')
|
$('.deletephoto, .deselect, .addtags').removeClass('hide')
|
||||||
});
|
});
|
||||||
|
var images_order = [];
|
||||||
|
$("#edit-order-btn").on("click",function(){
|
||||||
|
var el = $(this);
|
||||||
|
if($container.data("order-edit") == "0"){
|
||||||
|
$container.sortable("enable");
|
||||||
|
$(".order-edit-notification").slideDown();
|
||||||
|
images_order = $container.sortable( "toArray", { attribute: "data-image-id" });
|
||||||
|
$container.data("order-edit","1");
|
||||||
|
el.text("Save Order");
|
||||||
|
}else{
|
||||||
|
var temp = $container.sortable( "toArray", { attribute: "data-image-id" }),
|
||||||
|
type = $container.attr("id");
|
||||||
|
if(images_order.toString() != temp.toString()){
|
||||||
|
$.ajax({
|
||||||
|
url : "/admin/galleries/order",
|
||||||
|
data : {"imageids" : temp, "type" : type},
|
||||||
|
type : "post",
|
||||||
|
dataType : "json"
|
||||||
|
})
|
||||||
|
}
|
||||||
|
$(".order-edit-notification").slideUp();
|
||||||
|
$container.sortable("disable");
|
||||||
|
$container.data("order-edit","0");
|
||||||
|
el.text("Edit Order");
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
})
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
||||||
|
var last_image_id = null;
|
||||||
$('.add-imgs').on({
|
$('.add-imgs').on({
|
||||||
click: function() {
|
click: function() {
|
||||||
$('#fileupload').slideToggle(300, function() {
|
$('#fileupload').slideToggle(300, function() {
|
||||||
if(!$(this).is(':hidden')) {
|
if(!$(this).is(':hidden')) {
|
||||||
$('.add-imgs').html('<i class="icons-cross-2"></i> Close panel');
|
$('.add-imgs').html('<i class="icons-cross-2"></i> Close panel');
|
||||||
$('.rgbody').stop(true, false).animate({'padding-bottom': 280}, 300);
|
$('.rgbody').stop(true, false).animate({'padding-bottom': 280}, 300);
|
||||||
|
$("#edit-order-btn").hide();
|
||||||
|
$.ajax({
|
||||||
|
url : "/admin/galleries/last_image_id",
|
||||||
|
data : {"albumid" : $("#fileupload_aid").val()},
|
||||||
|
dataType : "json",
|
||||||
|
type : "get"
|
||||||
|
}).done(function(d){
|
||||||
|
last_image_id = d.last_image_id;
|
||||||
|
})
|
||||||
} else {
|
} else {
|
||||||
$('.add-imgs').html('<i class="icons-plus"></i> Add Image');
|
$('.add-imgs').html('<i class="icons-plus"></i> Add Image');
|
||||||
$('.files').empty()
|
$('.files').empty()
|
||||||
$('#file-list').checkListLength();
|
$('#file-list').checkListLength();
|
||||||
$('.rgbody').stop(true, false).animate({'padding-bottom': 0}, 300);
|
$('.rgbody').stop(true, false).animate({'padding-bottom': 0}, 300);
|
||||||
|
$("#edit-order-btn").show();
|
||||||
fetchNewImages();
|
fetchNewImages();
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
@ -235,20 +273,19 @@ $(function() {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
var fetchNewImages = function(){
|
var fetchNewImages = function(){
|
||||||
var lastid = ( $("li.rgalbum:last").length ? $("li.rgalbum:last").data("image-id") : null),
|
var albumid = $("#fileupload_aid").val();
|
||||||
albumid = $("#fileupload_aid").val();
|
|
||||||
|
|
||||||
$.getJSON('/admin/galleries/get_photoData_json?id='+albumid, function(json, textStatus) {
|
$.getJSON('/admin/galleries/get_photoData_json?id='+albumid, function(json, textStatus) {
|
||||||
photosData = json;
|
photosData = json;
|
||||||
});
|
});
|
||||||
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url : "/admin/new_images",
|
url : "/admin/galleries/new_images",
|
||||||
data : {"last_image_id" : lastid, "album_id" : albumid},
|
data : {"last_image_id" : last_image_id, "album_id" : albumid},
|
||||||
success : function(data){
|
success : function(data){
|
||||||
var $e = $(data);
|
var $e = $(data);
|
||||||
$imgs = $e.find("img");
|
$imgs = $e.find("img");
|
||||||
$("#imgholder").append($e);
|
$("#imgholder").prepend($e);
|
||||||
$os = $e.find("a.open");
|
$os = $e.find("a.open");
|
||||||
$os.pageslide({
|
$os.pageslide({
|
||||||
loadComplete: function(instance,elem) {
|
loadComplete: function(instance,elem) {
|
||||||
|
|
|
@ -17,7 +17,7 @@ var galleryAPI = function(){
|
||||||
this.loadTheater = function(id){
|
this.loadTheater = function(id){
|
||||||
|
|
||||||
g.loadstart();
|
g.loadstart();
|
||||||
var imageArray;
|
var imageArray = [];
|
||||||
var imagecount = 0;
|
var imagecount = 0;
|
||||||
var picHeight = 0;
|
var picHeight = 0;
|
||||||
var bindHandlers = function(){
|
var bindHandlers = function(){
|
||||||
|
@ -255,8 +255,9 @@ var galleryAPI = function(){
|
||||||
|
|
||||||
var preparestage = function(albumid){
|
var preparestage = function(albumid){
|
||||||
$.getJSON("../galleries/"+albumid+"/imgs",function(album){
|
$.getJSON("../galleries/"+albumid+"/imgs",function(album){
|
||||||
imageArray = eval(album.images);
|
// imageArray = eval(album.images);
|
||||||
$.each(album.images,function(i,image){
|
$.each(album.images,function(i,image){
|
||||||
|
imageArray.push(image)
|
||||||
if(image._id == id)
|
if(image._id == id)
|
||||||
imagecount = i;
|
imagecount = i;
|
||||||
})
|
})
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,444 @@
|
||||||
|
var GalleryTheater = function(){
|
||||||
|
var gt = this,
|
||||||
|
currentPic = {},
|
||||||
|
windowHeight = 0,
|
||||||
|
windowWidth = 0,
|
||||||
|
swipeController = null,
|
||||||
|
resizing = null;
|
||||||
|
loadingInterval = null,
|
||||||
|
mainPicLoading = 0,
|
||||||
|
nextPicLoading = 0,
|
||||||
|
prevPicLoading = 0,
|
||||||
|
currentSwipeImageDom = null,
|
||||||
|
currentSwipeImageDomLeftPos = 0,
|
||||||
|
windowScreenThresholdForTouch = 0,
|
||||||
|
loadingProcess = 0;
|
||||||
|
gt.stage = null;
|
||||||
|
gt.stripNextBtn = null;
|
||||||
|
gt.stripPrevBtn = null;
|
||||||
|
gt.thumbToggle = null;
|
||||||
|
gt.descriptionToggle = null;
|
||||||
|
gt.closeBtn = null;
|
||||||
|
gt.imageContainer = null;
|
||||||
|
gt.albumData = {};
|
||||||
|
gt.loader = null;
|
||||||
|
gt.thumbStrip = null;
|
||||||
|
gt.descriptionArea = null;
|
||||||
|
gt.isTheaterInitialized = false;
|
||||||
|
|
||||||
|
var initialize = function(){
|
||||||
|
gt.stage = $("#gallery-theater-stage");
|
||||||
|
gt.closeBtn = gt.stage.find(".gallery-close");
|
||||||
|
gt.switchBtn = gt.stage.find(".gallery-theme-switch");
|
||||||
|
gt.imageContainer = gt.stage.find(".image-container");
|
||||||
|
gt.thumbStrip = gt.stage.find(".gallery-thumb-wrap");
|
||||||
|
gt.thumbToggle = gt.stage.find(".gallery-thumb-toggle");
|
||||||
|
gt.loader = gt.stage.find(".gallery-loader");
|
||||||
|
gt.stripNextBtn = gt.stage.find(".gallery-thumb-next");
|
||||||
|
gt.stripPrevBtn = gt.stage.find(".gallery-thumb-prev");
|
||||||
|
gt.descriptionArea = gt.stage.find(".gallery-img-desc");
|
||||||
|
gt.descriptionToggle = gt.stage.find(".gallery-toggle-desc");
|
||||||
|
windowScreenThresholdForTouch = windowWidth / 3;
|
||||||
|
startLoading();
|
||||||
|
windowHeight = $(window).height();
|
||||||
|
windowWidth = $(window).width();
|
||||||
|
bindHandler();
|
||||||
|
if(window.location.hash != "" && window.location.hash != "#"){
|
||||||
|
var id = window.location.hash.split("#")[1];
|
||||||
|
gt.createTheater("/xhr/galleries/theater/" + id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var bindHandler = function(){
|
||||||
|
// handler to close the theater
|
||||||
|
gt.closeBtn.on("click",gt.destroyTheater);
|
||||||
|
|
||||||
|
// handler to show theater
|
||||||
|
$("div[data-list=images] a").on("click",function(){
|
||||||
|
gt.createTheater($(this).attr("href"));
|
||||||
|
return false;
|
||||||
|
})
|
||||||
|
|
||||||
|
gt.switchBtn.on("click",gt.switchTheme);
|
||||||
|
gt.descriptionToggle.on("click", gt.toggleDescription)
|
||||||
|
gt.stripPrevBtn.on("click", gt.scrollStripRight);
|
||||||
|
gt.stripNextBtn.on("click", gt.scrollStripLeft);
|
||||||
|
|
||||||
|
if(Modernizr.touch){
|
||||||
|
gt.imageContainer.swipe({
|
||||||
|
swipe : function(event, direction, distance, duration, fingerCount){
|
||||||
|
if(direction == "left"){
|
||||||
|
gt.nextPic();
|
||||||
|
}else if(direction == "right"){
|
||||||
|
gt.previousPic();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
gt.thumbToggle.swipe({
|
||||||
|
swipe : function(event, direction, distance, duration, fingerCount){
|
||||||
|
if(direction == "up"){
|
||||||
|
gt.thumbStrip.parent().addClass("show");
|
||||||
|
gt.thumbToggle.addClass("up");
|
||||||
|
gt.thumbToggle.find("i").removeClass("fa-angle-double-up").addClass("fa-angle-double-down");
|
||||||
|
}else if(direction == "down"){
|
||||||
|
gt.thumbStrip.parent().removeClass("show");
|
||||||
|
gt.thumbToggle.removeClass("up");
|
||||||
|
gt.thumbToggle.find("i").removeClass("fa-angle-double-down").addClass("fa-angle-double-up");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
//handler for window resize
|
||||||
|
$(window).resize(function(){
|
||||||
|
clearTimeout(resizing);
|
||||||
|
resizing = setTimeout(doneResizing,1000);
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
var bindKeyHandlers = function(){
|
||||||
|
if(!Modernizr.touch){
|
||||||
|
$(document.body).on("click",".gal-active", gt.nextPic);
|
||||||
|
$(document.body).on("click",".gal-prev", gt.previousPic);
|
||||||
|
$(document.body).on("click",".gal-next", gt.nextPic);
|
||||||
|
$(document).on("keyup",function(e){
|
||||||
|
switch(e.keyCode){
|
||||||
|
case 39:
|
||||||
|
gt.nextPic();
|
||||||
|
break;
|
||||||
|
case 37:
|
||||||
|
gt.previousPic();
|
||||||
|
break;
|
||||||
|
case 27:
|
||||||
|
gt.destroyTheater();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
var doneResizing = function(){
|
||||||
|
windowHeight = $(window).height();
|
||||||
|
windowWidth = $(window).width();
|
||||||
|
setThumbNavs();
|
||||||
|
}
|
||||||
|
|
||||||
|
var unBindKeyHandlers = function(){
|
||||||
|
$(document).unbind("keyup");
|
||||||
|
}
|
||||||
|
|
||||||
|
gt.destroyTheater = function(){
|
||||||
|
gt.stage.hide();
|
||||||
|
$("body").removeClass("gallery-mode-on");
|
||||||
|
gt.imageContainer.empty()
|
||||||
|
unBindKeyHandlers();
|
||||||
|
window.location.hash = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
gt.createTheater = function(link){
|
||||||
|
gt.stage.show();
|
||||||
|
$("body").addClass("gallery-mode-on");
|
||||||
|
bindKeyHandlers();
|
||||||
|
if(!gt.isTheaterInitialized){
|
||||||
|
$.ajax({
|
||||||
|
url : link,
|
||||||
|
dataType : "json",
|
||||||
|
type : "get"
|
||||||
|
}).done(function(data){
|
||||||
|
gt.albumData = data.data;
|
||||||
|
var cp = gt.albumData.images.filter(function(x){return x._id == gt.albumData.image})[0];
|
||||||
|
currentPic = {"image" : cp, "index" : gt.albumData.images.indexOf(cp)};
|
||||||
|
createThumbStrip();
|
||||||
|
})
|
||||||
|
}else{
|
||||||
|
var id = link.split("/")[4],
|
||||||
|
cp = gt.albumData.images.filter(function(x){return x._id == id})[0];
|
||||||
|
currentPic = {"image" : cp, "index" : gt.albumData.images.indexOf(cp)};
|
||||||
|
createThumbStrip();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
gt.hasNextImage = function(){
|
||||||
|
return (currentPic.index + 1) <= (gt.albumData.images.length - 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
gt.hasPreviousImage = function(){
|
||||||
|
return (currentPic.index > 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
gt.nextPic = function(){
|
||||||
|
if(loadingProcess == 0){
|
||||||
|
if(gt.hasNextImage()){
|
||||||
|
startLoading();
|
||||||
|
currentPic.image = gt.albumData.images[currentPic.index + 1];
|
||||||
|
currentPic.index = currentPic.index + 1;
|
||||||
|
setMainPic("next");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
gt.previousPic = function(){
|
||||||
|
if(loadingProcess == 0){
|
||||||
|
if(gt.hasPreviousImage()) {
|
||||||
|
startLoading();
|
||||||
|
currentPic.image = gt.albumData.images[currentPic.index - 1];
|
||||||
|
currentPic.index = currentPic.index - 1;
|
||||||
|
setMainPic("prev");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
gt.scrollStripLeft = function(){
|
||||||
|
pixels_to_move = parseInt(gt.thumbStrip.css("left")) - (66 * 3);
|
||||||
|
maximum_pixels = (windowWidth / 2) - (66 * (gt.albumData.images.length - 1));
|
||||||
|
if(pixels_to_move < maximum_pixels){
|
||||||
|
pixels_to_move = maximum_pixels;
|
||||||
|
}
|
||||||
|
gt.thumbStrip.css("left",pixels_to_move + "px");
|
||||||
|
}
|
||||||
|
|
||||||
|
gt.scrollStripRight = function(){
|
||||||
|
pixels_to_move = parseInt(gt.thumbStrip.css("left")) + (66 * 3);
|
||||||
|
maximum_pixels = (windowWidth / 2);
|
||||||
|
if(pixels_to_move > maximum_pixels){
|
||||||
|
pixels_to_move = maximum_pixels;
|
||||||
|
}
|
||||||
|
gt.thumbStrip.css("left",pixels_to_move + "px");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
gt.switchTheme = function(){
|
||||||
|
var themeWhiteKlass = "theme-white",
|
||||||
|
nightKlass = "fa fa-circle",
|
||||||
|
dayKlass = "fa fa-circle-o",
|
||||||
|
$body = $("body");
|
||||||
|
|
||||||
|
if (!gt.switchBtn.hasClass(themeWhiteKlass)) {
|
||||||
|
gt.switchBtn
|
||||||
|
.addClass(themeWhiteKlass)
|
||||||
|
.find("i")
|
||||||
|
.attr("class", dayKlass);
|
||||||
|
|
||||||
|
$body.addClass(themeWhiteKlass);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
gt.switchBtn
|
||||||
|
.removeClass(themeWhiteKlass)
|
||||||
|
.find("i")
|
||||||
|
.attr("class", nightKlass);
|
||||||
|
|
||||||
|
$body.removeClass(themeWhiteKlass);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
gt.toggleDescription = function(){
|
||||||
|
$(this).toggleClass("active");
|
||||||
|
gt.descriptionArea.toggleClass("active");
|
||||||
|
}
|
||||||
|
|
||||||
|
var startLoading = function(){
|
||||||
|
loadingProcess = 1;
|
||||||
|
mainPicLoading = 0;
|
||||||
|
nextPicLoading = 0;
|
||||||
|
prevPicLoading = 0;
|
||||||
|
gt.loader.show();
|
||||||
|
loadingInterval = setInterval(stopLoading, 300);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
var stopLoading = function(){
|
||||||
|
if(mainPicLoading == 1 && nextPicLoading == 1 && prevPicLoading == 1){
|
||||||
|
clearInterval(loadingInterval);
|
||||||
|
setTimeout(function(){
|
||||||
|
loadingProcess = 0;
|
||||||
|
gt.loader.hide();
|
||||||
|
},100)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var createThumbStrip = function(){
|
||||||
|
if(!gt.isTheaterInitialized){
|
||||||
|
$.each(gt.albumData.images,function(index, image){
|
||||||
|
var li = $("<li class='gallery-item'></li>"),
|
||||||
|
a = $("<a href=''></a>"),
|
||||||
|
img = $("<img class='gallery-thumb' src='' alt='Image Thumb'>");
|
||||||
|
a.on("click",function(){
|
||||||
|
startLoading();
|
||||||
|
var old_index = currentPic.index;
|
||||||
|
currentPic.image = gt.albumData.images[index];
|
||||||
|
currentPic.index = index;
|
||||||
|
if(old_index > index){
|
||||||
|
setMainPic("prev",true);
|
||||||
|
}else if(old_index < index){
|
||||||
|
setMainPic("next",true);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
})
|
||||||
|
|
||||||
|
img.attr("src",image.file.thumb.url);
|
||||||
|
img.attr("alt",image.alt_title);
|
||||||
|
li.attr("data-index",index);
|
||||||
|
a.append(img);
|
||||||
|
li.append(a);
|
||||||
|
gt.thumbStrip.append(li);
|
||||||
|
})
|
||||||
|
setThumbNavs();
|
||||||
|
}
|
||||||
|
setMainPic();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
var setThumbNavs = function() {
|
||||||
|
var $thumbNav = gt.stage.find('.gallery-thumb-navs'),
|
||||||
|
$thumb = gt.thumbStrip.find('img'),
|
||||||
|
thumbs = $thumb.length,
|
||||||
|
thumbWidth = $thumb.eq(0).width(),
|
||||||
|
thumbGap = parseInt($thumb.closest('li').css('margin-right'), 10),
|
||||||
|
widthSum = (thumbWidth + thumbGap) * thumbs,
|
||||||
|
margin = widthSum * 0.1,
|
||||||
|
totalWidth = widthSum + margin;
|
||||||
|
|
||||||
|
if (windowWidth < totalWidth) {
|
||||||
|
$thumbNav.addClass('show');
|
||||||
|
}else{
|
||||||
|
$thumbNav.removeClass('show');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
var setMainPic = function(direction,selectedFromStrip){
|
||||||
|
var img = null;
|
||||||
|
if(direction == null){
|
||||||
|
img = $("<img class='gallery-image gal-active'>");
|
||||||
|
img.hide();
|
||||||
|
img.attr("src", currentPic.image.file.theater.url);
|
||||||
|
gt.imageContainer.append(img);
|
||||||
|
img.one("load", function(){
|
||||||
|
calculateHeight(img);
|
||||||
|
mainPicLoading = 1;
|
||||||
|
img.fadeIn(100);
|
||||||
|
})
|
||||||
|
gt.isTheaterInitialized = true;
|
||||||
|
}else{
|
||||||
|
img = gt.imageContainer.find(".gal-active");
|
||||||
|
if(selectedFromStrip){
|
||||||
|
gt.imageContainer.find(".gal-" + direction).attr("src",currentPic.image.file.theater.url);
|
||||||
|
}
|
||||||
|
if(direction == "next"){
|
||||||
|
gt.imageContainer.find(".gal-prev").remove();
|
||||||
|
img.removeClass("gal-active").addClass("gal-prev gal-inactive temp");
|
||||||
|
gt.imageContainer.find(".gal-next").removeClass("gal-inactive gal-next").addClass("gal-active");
|
||||||
|
gt.thumbStrip.css("left",(parseInt(gt.thumbStrip.css("left")) - 66) + "px");
|
||||||
|
}else if(direction == "prev"){
|
||||||
|
gt.imageContainer.find(".gal-next").remove();
|
||||||
|
img.removeClass("gal-active").addClass("gal-next gal-inactive temp");
|
||||||
|
gt.imageContainer.find(".gal-prev").removeClass("gal-inactive gal-prev").addClass("gal-active");
|
||||||
|
gt.thumbStrip.css("left",(parseInt(gt.thumbStrip.css("left")) + 66) + "px");
|
||||||
|
}
|
||||||
|
mainPicLoading = 1;
|
||||||
|
}
|
||||||
|
gt.descriptionArea.html("<p>" + currentPic.image.description + "</p>");
|
||||||
|
if(currentPic.image.description == null){
|
||||||
|
gt.descriptionArea.addClass("hide");
|
||||||
|
}else{
|
||||||
|
gt.descriptionArea.removeClass("hide");
|
||||||
|
}
|
||||||
|
calculateHeight(gt.imageContainer.find(".gal-active"));
|
||||||
|
gt.thumbStrip.find("li.active").removeClass("active");
|
||||||
|
gt.thumbStrip.find("li[data-index=" + currentPic.index + "]").addClass("active");
|
||||||
|
|
||||||
|
setStripToCenter();
|
||||||
|
setNextPic();
|
||||||
|
setPrevPic();
|
||||||
|
changeUrl();
|
||||||
|
}
|
||||||
|
|
||||||
|
var calculateHeight = function(img){
|
||||||
|
var h = 0,
|
||||||
|
w = 0,
|
||||||
|
new_width = 0;
|
||||||
|
if(!Modernizr.touch){
|
||||||
|
if(typeof currentPic.image.height == "undefined"){
|
||||||
|
h = img.height();
|
||||||
|
currentPic.image.height = h;
|
||||||
|
w = img.width();
|
||||||
|
currentPic.image.width = w;
|
||||||
|
}else{
|
||||||
|
h = currentPic.image.height;
|
||||||
|
w = currentPic.image.width;
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
h = img.height();
|
||||||
|
w = img.width();
|
||||||
|
}
|
||||||
|
if(h > (windowHeight - 150)){
|
||||||
|
new_width = Math.round((windowHeight - 100) * w / h);
|
||||||
|
new_width = (new_width / windowWidth) * 100;
|
||||||
|
img.width(new_width + "%");
|
||||||
|
}else{
|
||||||
|
if(windowWidth < 770){
|
||||||
|
img.width("90%");
|
||||||
|
}else{
|
||||||
|
img.width("65%");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var changeUrl = function(){
|
||||||
|
window.location.hash = currentPic.image._id
|
||||||
|
}
|
||||||
|
|
||||||
|
var setStripToCenter = function(){
|
||||||
|
left = (windowWidth / 2) - (66 * currentPic.index);
|
||||||
|
gt.thumbStrip.css("left",left + "px");
|
||||||
|
}
|
||||||
|
|
||||||
|
var setNextPic = function(){
|
||||||
|
gt.imageContainer.find(".gal-next.temp").remove()
|
||||||
|
if(gt.hasNextImage()) {
|
||||||
|
var obj = gt.albumData.images[currentPic.index + 1],
|
||||||
|
nextImg = $("<img class='gallery-image gal-next gal-inactive'>");
|
||||||
|
nextImg.attr("src",obj.file.theater.url);
|
||||||
|
nextImg.hide();
|
||||||
|
gt.imageContainer.append(nextImg);
|
||||||
|
nextImg.on("load",function(){
|
||||||
|
calculateHeight(nextImg);
|
||||||
|
nextPicLoading = 1;
|
||||||
|
nextImg.fadeIn(100);
|
||||||
|
})
|
||||||
|
}else{
|
||||||
|
nextPicLoading = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var setPrevPic = function(){
|
||||||
|
gt.imageContainer.find(".gal-prev.temp").remove()
|
||||||
|
if(gt.hasPreviousImage()) {
|
||||||
|
var obj = gt.albumData.images[currentPic.index - 1],
|
||||||
|
prevImg = $("<img class='gallery-image gal-prev gal-inactive'>");
|
||||||
|
prevImg.attr("src",obj.file.theater.url);
|
||||||
|
prevImg.hide();
|
||||||
|
gt.imageContainer.prepend(prevImg);
|
||||||
|
prevImg.on("load",function(){
|
||||||
|
calculateHeight(prevImg);
|
||||||
|
prevPicLoading = 1;
|
||||||
|
prevImg.fadeIn(100);
|
||||||
|
})
|
||||||
|
}else{
|
||||||
|
prevPicLoading = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var l = function(x){
|
||||||
|
console.log(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
$(document).ready(function(){
|
||||||
|
initialize();
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// gallery-image gal-prev gal-inactive
|
|
@ -0,0 +1,261 @@
|
||||||
|
var GalleryTheater = function(){
|
||||||
|
var gt = this,
|
||||||
|
currentPic = {},
|
||||||
|
windowHeight = 0,
|
||||||
|
windowWidth = 0;
|
||||||
|
gt.stage = null;
|
||||||
|
gt.closeBtn = null;
|
||||||
|
gt.mainStageImage = null;
|
||||||
|
gt.prevStageImage = null;
|
||||||
|
gt.nextStageImage = null;
|
||||||
|
gt.albumData = {};
|
||||||
|
gt.thumbStrip = null;
|
||||||
|
gt.isTheaterInitialized = false;
|
||||||
|
|
||||||
|
var initialize = function(){
|
||||||
|
gt.stage = $("#gallery-theater-stage");
|
||||||
|
gt.closeBtn = gt.stage.find(".gallery-close");
|
||||||
|
gt.switchBtn = gt.stage.find(".gallery-theme-switch");
|
||||||
|
gt.mainStageImage = gt.stage.find(".gal-active");
|
||||||
|
gt.prevStageImage = gt.stage.find(".gal-prev");
|
||||||
|
gt.nextStageImage = gt.stage.find(".gal-next");
|
||||||
|
gt.thumbStrip = gt.stage.find(".gallery-thumb-wrap");
|
||||||
|
windowHeight = $(window).height();
|
||||||
|
windowWidth = $(window).width();
|
||||||
|
bindHandler();
|
||||||
|
if(window.location.hash != "" && window.location.hash != "#"){
|
||||||
|
var id = window.location.hash.split("#")[1];
|
||||||
|
gt.createTheater("/xhr/galleries/theater/" + id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var bindHandler = function(){
|
||||||
|
// handler to close the theater
|
||||||
|
gt.closeBtn.on("click",function(){
|
||||||
|
gt.destroyTheater();
|
||||||
|
})
|
||||||
|
|
||||||
|
// handler to show theater
|
||||||
|
$("div[data-list=images] a").on("click",function(){
|
||||||
|
gt.createTheater($(this).attr("href"));
|
||||||
|
return false;
|
||||||
|
})
|
||||||
|
|
||||||
|
// handler to show next image
|
||||||
|
gt.nextStageImage.on("click",function(){
|
||||||
|
if($(this).attr("src") != "#"){
|
||||||
|
gt.nextPic();
|
||||||
|
}
|
||||||
|
})
|
||||||
|
// handler to show prev image
|
||||||
|
gt.prevStageImage.on("click",function(){
|
||||||
|
if($(this).attr("src") != "#"){
|
||||||
|
gt.previousPic();
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
// handler to go to next image on center image click
|
||||||
|
gt.mainStageImage.on("click",gt.nextPic);
|
||||||
|
|
||||||
|
gt.switchBtn.on("click", function() {
|
||||||
|
var themeWhiteKlass = "theme-white",
|
||||||
|
nightKlass = "fa fa-circle",
|
||||||
|
dayKlass = "fa fa-circle-o",
|
||||||
|
$body = $("body");
|
||||||
|
|
||||||
|
if (!$(this).hasClass(themeWhiteKlass)) {
|
||||||
|
$(this)
|
||||||
|
.addClass(themeWhiteKlass)
|
||||||
|
.find("i")
|
||||||
|
.attr("class", dayKlass);
|
||||||
|
|
||||||
|
$body.addClass(themeWhiteKlass);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
$(this)
|
||||||
|
.removeClass(themeWhiteKlass)
|
||||||
|
.find("i")
|
||||||
|
.attr("class", nightKlass);
|
||||||
|
|
||||||
|
$body.removeClass(themeWhiteKlass);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
//handler for window resize
|
||||||
|
$(window).resize(function(){
|
||||||
|
windowHeight = $(window).height();
|
||||||
|
windowWidth = $(window).width();
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
var bindKeyHandlers = function(){
|
||||||
|
$(document).on("keyup",function(e){
|
||||||
|
switch(e.keyCode){
|
||||||
|
case 39:
|
||||||
|
gt.nextPic();
|
||||||
|
break;
|
||||||
|
case 37:
|
||||||
|
gt.previousPic();
|
||||||
|
break;
|
||||||
|
case 27:
|
||||||
|
gt.destroyTheater();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
var unBindKeyHandlers = function(){
|
||||||
|
$(document).unbind("keypress");
|
||||||
|
}
|
||||||
|
|
||||||
|
gt.destroyTheater = function(){
|
||||||
|
gt.stage.hide();
|
||||||
|
$("body").removeClass("gallery-mode-on");
|
||||||
|
unBindKeyHandlers();
|
||||||
|
window.location.hash = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
gt.createTheater = function(link){
|
||||||
|
gt.stage.show();
|
||||||
|
$("body").addClass("gallery-mode-on");
|
||||||
|
bindKeyHandlers();
|
||||||
|
if(!gt.isTheaterInitialized){
|
||||||
|
$.ajax({
|
||||||
|
url : link,
|
||||||
|
dataType : "json",
|
||||||
|
type : "get"
|
||||||
|
}).done(function(data){
|
||||||
|
gt.albumData = data.data;
|
||||||
|
var cp = gt.albumData.images.filter(function(x){return x._id == gt.albumData.image})[0];
|
||||||
|
currentPic = {"image" : cp, "index" : gt.albumData.images.indexOf(cp)};
|
||||||
|
createThumbStrip();
|
||||||
|
})
|
||||||
|
}else{
|
||||||
|
var id = link.split("/")[4],
|
||||||
|
cp = gt.albumData.images.filter(function(x){return x._id == id})[0];
|
||||||
|
currentPic = {"image" : cp, "index" : gt.albumData.images.indexOf(cp)};
|
||||||
|
createThumbStrip();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
gt.nextPic = function(){
|
||||||
|
if((currentPic.index + 1) <= (gt.albumData.images.length - 1)){
|
||||||
|
currentPic.image = gt.albumData.images[currentPic.index + 1];
|
||||||
|
currentPic.index = currentPic.index + 1;
|
||||||
|
setMainPic();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
gt.previousPic = function(){
|
||||||
|
if(currentPic.index > 0) {
|
||||||
|
currentPic.image = gt.albumData.images[currentPic.index - 1];
|
||||||
|
currentPic.index = currentPic.index - 1;
|
||||||
|
setMainPic();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var createThumbStrip = function(){
|
||||||
|
if(!gt.isTheaterInitialized){
|
||||||
|
$.each(gt.albumData.images,function(index, image){
|
||||||
|
var li = $("<li class='gallery-item'></li>"),
|
||||||
|
a = $("<a href=''></a>"),
|
||||||
|
img = $("<img class='gallery-thumb' src='' alt='Image Thumb'>");
|
||||||
|
a.on("click",function(){
|
||||||
|
currentPic.image = gt.albumData.images[index];
|
||||||
|
currentPic.index = index;
|
||||||
|
setMainPic();
|
||||||
|
return false;
|
||||||
|
})
|
||||||
|
img.attr("src",image.file.thumb.url);
|
||||||
|
img.attr("alt",image.alt_title);
|
||||||
|
li.attr("data-index",index);
|
||||||
|
a.append(img);
|
||||||
|
li.append(a);
|
||||||
|
gt.thumbStrip.append(li);
|
||||||
|
})
|
||||||
|
gt.isTheaterInitialized = true;
|
||||||
|
}
|
||||||
|
setMainPic();
|
||||||
|
}
|
||||||
|
|
||||||
|
var setMainPic = function(){
|
||||||
|
var obj = currentPic.image;
|
||||||
|
gt.mainStageImage.fadeOut(100,function(){
|
||||||
|
gt.mainStageImage.attr("src",obj.file.theater.url);
|
||||||
|
gt.mainStageImage.attr("alt",obj.alt_title);
|
||||||
|
gt.mainStageImage.one("load",function(){
|
||||||
|
var h = 0,
|
||||||
|
w = 0,
|
||||||
|
new_width = 0;
|
||||||
|
if(typeof currentPic.image.height == "undefined"){
|
||||||
|
h = gt.mainStageImage.height();
|
||||||
|
currentPic.image.height = h;
|
||||||
|
w = gt.mainStageImage.width();
|
||||||
|
currentPic.image.width = w;
|
||||||
|
}else{
|
||||||
|
h = currentPic.image.height;
|
||||||
|
w = currentPic.image.width;
|
||||||
|
}
|
||||||
|
if(h > (windowHeight - 100)){
|
||||||
|
new_width = Math.round((windowHeight - 100) * w / h);
|
||||||
|
new_width = (new_width / windowWidth) * 100;
|
||||||
|
gt.mainStageImage.width(new_width + "%");
|
||||||
|
}else{
|
||||||
|
if(windowWidth < 770){
|
||||||
|
gt.mainStageImage.width("90%");
|
||||||
|
}else{
|
||||||
|
gt.mainStageImage.width("65%");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
gt.mainStageImage.fadeIn(100);
|
||||||
|
})
|
||||||
|
});
|
||||||
|
gt.thumbStrip.find("li.active").removeClass("active");
|
||||||
|
gt.thumbStrip.find("li[data-index=" + currentPic.index + "]").addClass("active");
|
||||||
|
changeUrl();
|
||||||
|
setNextPic();
|
||||||
|
setPrevPic();
|
||||||
|
}
|
||||||
|
|
||||||
|
var changeUrl = function(){
|
||||||
|
window.location.hash = currentPic.image._id
|
||||||
|
}
|
||||||
|
|
||||||
|
var setNextPic = function(){
|
||||||
|
gt.nextStageImage.attr("src","#");
|
||||||
|
if((currentPic.index + 1) <= (gt.albumData.images.length - 1)) {
|
||||||
|
gt.nextStageImage.hide();
|
||||||
|
var obj = gt.albumData.images[currentPic.index + 1];
|
||||||
|
gt.nextStageImage.attr("src",obj.file.theater.url);
|
||||||
|
gt.nextStageImage.on("load",function(){
|
||||||
|
gt.nextStageImage.show();
|
||||||
|
});
|
||||||
|
}else{
|
||||||
|
gt.nextStageImage.hide();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var setPrevPic = function(){
|
||||||
|
gt.prevStageImage.attr("src","#");
|
||||||
|
if(currentPic.index > 0) {
|
||||||
|
gt.prevStageImage.hide();
|
||||||
|
var obj = gt.albumData.images[currentPic.index - 1];
|
||||||
|
gt.prevStageImage.attr("src",obj.file.theater.url);
|
||||||
|
gt.prevStageImage.on("load",function(){
|
||||||
|
gt.prevStageImage.show();
|
||||||
|
});
|
||||||
|
}else{
|
||||||
|
gt.prevStageImage.hide();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var l = function(x){
|
||||||
|
console.log(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
$(document).ready(function(){
|
||||||
|
initialize();
|
||||||
|
})
|
||||||
|
}
|
|
@ -4,10 +4,17 @@
|
||||||
list-style: none;
|
list-style: none;
|
||||||
}
|
}
|
||||||
#orbit_gallery .rgalbum {
|
#orbit_gallery .rgalbum {
|
||||||
|
position: relative;
|
||||||
|
float: left;
|
||||||
margin: 5px;
|
margin: 5px;
|
||||||
padding: 10px;
|
padding: 5px;
|
||||||
width: 200px;
|
width: 200px;
|
||||||
background: #FFFFFF;
|
background: #FFFFFF;
|
||||||
|
overflow: hidden;
|
||||||
|
-webkit-box-shadow: 0px 0px 5px rgba(0, 0, 0, .1);
|
||||||
|
-moz-box-shadow: 0px 0px 5px rgba(0, 0, 0, .1);
|
||||||
|
box-shadow: 0px 0px 5px rgba(0, 0, 0, .1);
|
||||||
|
-o-box-shadow: 0px 0px 5px rgba(0, 0, 0, .1);
|
||||||
-webkit-transition-property: left, right, top;
|
-webkit-transition-property: left, right, top;
|
||||||
-moz-transition-property: left, right, top;
|
-moz-transition-property: left, right, top;
|
||||||
-ms-transition-property: left, right, top;
|
-ms-transition-property: left, right, top;
|
||||||
|
@ -518,4 +525,18 @@
|
||||||
}
|
}
|
||||||
#fileupload #file-list .action-bnt {
|
#fileupload #file-list .action-bnt {
|
||||||
text-align: right;
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.order-edit-notification{
|
||||||
|
background-color: #ffffd5;
|
||||||
|
z-index: 10;
|
||||||
|
display: none;
|
||||||
|
height: 25px;
|
||||||
|
margin-left: 40%;
|
||||||
|
position: fixed;
|
||||||
|
text-align: center;
|
||||||
|
margin-top: 5px;
|
||||||
|
top: 85px;
|
||||||
|
width: 250px;
|
||||||
|
font-size: 13px;
|
||||||
}
|
}
|
|
@ -0,0 +1,457 @@
|
||||||
|
@import url(https://fonts.googleapis.com/css?family=Roboto);
|
||||||
|
|
||||||
|
/* Reset and basic styles */
|
||||||
|
|
||||||
|
body {
|
||||||
|
overflow-x: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
*,
|
||||||
|
*:before,
|
||||||
|
*:after {
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.gallery-mode-on {
|
||||||
|
/*overflow-y: hidden;*/
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Gallery */
|
||||||
|
|
||||||
|
#gallery-theater-stage {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#gallery-theater-stage > .gallery {
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
background: #000;
|
||||||
|
z-index: 2000;
|
||||||
|
}
|
||||||
|
|
||||||
|
.gallery-loader {
|
||||||
|
padding: 10px;
|
||||||
|
position: absolute;
|
||||||
|
display: none;
|
||||||
|
left: 50%;
|
||||||
|
top: 10px;
|
||||||
|
-webkit-transform: translate(-50%, 50%);
|
||||||
|
transform: translate(-50%, 50%);
|
||||||
|
border-radius: 2px;
|
||||||
|
z-index: 2000;
|
||||||
|
background-color: rgba(0, 0, 0, .6);
|
||||||
|
-webkit-transition: .3s all;
|
||||||
|
transition: .3s all;
|
||||||
|
}
|
||||||
|
|
||||||
|
.spinner {
|
||||||
|
margin: 0 auto;
|
||||||
|
width: 50px;
|
||||||
|
height: 20px;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.spinner > div {
|
||||||
|
background-color: #e8e8e8;
|
||||||
|
height: 100%;
|
||||||
|
width: 4px;
|
||||||
|
display: inline-block;
|
||||||
|
-webkit-animation: stretchdelay 1.2s infinite ease-in-out;
|
||||||
|
animation: stretchdelay 1.2s infinite ease-in-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
.spinner .rect2 {
|
||||||
|
-webkit-animation-delay: -1.1s;
|
||||||
|
animation-delay: -1.1s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.spinner .rect3 {
|
||||||
|
-webkit-animation-delay: -1.0s;
|
||||||
|
animation-delay: -1.0s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.spinner .rect4 {
|
||||||
|
-webkit-animation-delay: -0.9s;
|
||||||
|
animation-delay: -0.9s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.spinner .rect5 {
|
||||||
|
-webkit-animation-delay: -0.8s;
|
||||||
|
animation-delay: -0.8s;
|
||||||
|
}
|
||||||
|
|
||||||
|
@-webkit-keyframes stretchdelay {
|
||||||
|
0%,
|
||||||
|
40%,
|
||||||
|
100% {
|
||||||
|
-webkit-transform: scaleY(0.4)
|
||||||
|
}
|
||||||
|
20% {
|
||||||
|
-webkit-transform: scaleY(1.0)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes stretchdelay {
|
||||||
|
0%,
|
||||||
|
40%,
|
||||||
|
100% {
|
||||||
|
transform: scaleY(0.4);
|
||||||
|
-webkit-transform: scaleY(0.4);
|
||||||
|
}
|
||||||
|
20% {
|
||||||
|
transform: scaleY(1.0);
|
||||||
|
-webkit-transform: scaleY(1.0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.gallery-actions {
|
||||||
|
position: absolute;
|
||||||
|
right: 1rem;
|
||||||
|
top: 1rem;
|
||||||
|
cursor: pointer;
|
||||||
|
background: rgba(255, 255, 255, .7);
|
||||||
|
border-radius: 2px;
|
||||||
|
z-index: 2000;
|
||||||
|
}
|
||||||
|
|
||||||
|
.gallery-actions-btn {
|
||||||
|
padding: 8px 12px 8px 10px;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.gallery-actions-btn:hover {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.touch .gallery-actions-btn {
|
||||||
|
padding: 12px 15px 12px 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.gallery-toggle-desc.active {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.gallery-theme-switch {
|
||||||
|
border-right: 1px solid rgba(255, 255, 255, .2);
|
||||||
|
border-left: 1px solid rgba(255, 255, 255, .2);
|
||||||
|
}
|
||||||
|
|
||||||
|
.gallery-close {
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
|
||||||
|
.touch .image-container {
|
||||||
|
height: 100%;
|
||||||
|
padding-bottom: 150px;
|
||||||
|
z-index: 800;
|
||||||
|
}
|
||||||
|
|
||||||
|
.gallery-image {
|
||||||
|
position: fixed;
|
||||||
|
left: 50%;
|
||||||
|
top: 50%;
|
||||||
|
width: 60%;
|
||||||
|
height: auto;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.no-touch .gallery-image {
|
||||||
|
-webkit-transition: .3s all;
|
||||||
|
transition: .3s all;
|
||||||
|
}
|
||||||
|
|
||||||
|
.gal-prev {
|
||||||
|
display: none;
|
||||||
|
left: 0;
|
||||||
|
-webkit-transform: translate(-95%, -50%);
|
||||||
|
transform: translate(-95%, -50%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.gal-prev:hover {
|
||||||
|
-webkit-transform: translate(-94%, -50%);
|
||||||
|
transform: translate(-94%, -50%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.gal-next {
|
||||||
|
display: none;
|
||||||
|
left: auto;
|
||||||
|
right: 0;
|
||||||
|
-webkit-transform: translate(95%, -50%);
|
||||||
|
transform: translate(95%, -50%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.gal-next:hover {
|
||||||
|
-webkit-transform: translate(94%, -50%);
|
||||||
|
transform: translate(94%, -50%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.gal-inactive {
|
||||||
|
-webkit-transition: .3s all;
|
||||||
|
transition: .3s all;
|
||||||
|
opacity: .3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.gal-inactive:hover {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.gal-active {
|
||||||
|
display: none;
|
||||||
|
-webkit-transform: translate(-50%, -50%);
|
||||||
|
transform: translate(-50%, -50%);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Thumbnails */
|
||||||
|
|
||||||
|
.gallery-thumb-toggle {
|
||||||
|
position: absolute;
|
||||||
|
bottom: -1000px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.gallery-thumb-wrap {
|
||||||
|
overflow-y: hidden;
|
||||||
|
overflow-x: hidden;
|
||||||
|
list-style: none;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 10px 0;
|
||||||
|
text-align: center;
|
||||||
|
white-space: nowrap;
|
||||||
|
position: absolute;
|
||||||
|
left: 50%;
|
||||||
|
bottom: 0;
|
||||||
|
-webkit-transition: .3s all;
|
||||||
|
transition: .3s all;
|
||||||
|
}
|
||||||
|
|
||||||
|
.gallery-item {
|
||||||
|
margin-right: 1em;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.gallery-item.active {
|
||||||
|
border-radius: 2px;
|
||||||
|
border-radius: 0.125rem;
|
||||||
|
border: 5px solid #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.gallery-thumb {
|
||||||
|
width: 50px;
|
||||||
|
height: 50px;
|
||||||
|
opacity: .5;
|
||||||
|
-webkit-transition: .3s opacity;
|
||||||
|
transition: .3s opacity;
|
||||||
|
}
|
||||||
|
|
||||||
|
.gallery-thumb:hover {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.gallery-thumb-container {
|
||||||
|
height: 80px;
|
||||||
|
position: fixed;
|
||||||
|
left: 0;
|
||||||
|
bottom: 0;
|
||||||
|
width: 100%;
|
||||||
|
background: #1b1b1b;
|
||||||
|
}
|
||||||
|
|
||||||
|
.gallery-thumb-navs {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.gallery-thumb-navs.show {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.gallery-thumb-nav {
|
||||||
|
position: absolute;
|
||||||
|
cursor: pointer;
|
||||||
|
font-size: 1.4rem;
|
||||||
|
color: rgba(255, 255, 255, .7);
|
||||||
|
background: #222;
|
||||||
|
height: 80px;
|
||||||
|
line-height: 80px;
|
||||||
|
width: 50px;
|
||||||
|
text-align: center;
|
||||||
|
z-index: 900;
|
||||||
|
}
|
||||||
|
|
||||||
|
.gallery-thumb-nav:hover {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.gallery-thumb-prev {
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.gallery-thumb-next {
|
||||||
|
right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.active .gallery-thumb {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.gallery-img-desc {
|
||||||
|
color: #000;
|
||||||
|
line-height: 1.7;
|
||||||
|
padding: 1rem 1.5rem;
|
||||||
|
font-family: 'Roboto', sans-serif;
|
||||||
|
font-size: 0.8125rem;
|
||||||
|
position: fixed;
|
||||||
|
top: 4rem;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
margin: auto;
|
||||||
|
border-radius: 2px;
|
||||||
|
width: 90%;
|
||||||
|
background-color: #bdbdbd;
|
||||||
|
opacity: 0;
|
||||||
|
-webkit-transition: .3s all;
|
||||||
|
transition: .3s all;
|
||||||
|
z-index: 1000;
|
||||||
|
}
|
||||||
|
|
||||||
|
.gallery-img-desc p {
|
||||||
|
overflow: hidden;
|
||||||
|
height: 90px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.gallery-img-desc:empty {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.gallery-img-desc.active {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* White theme */
|
||||||
|
|
||||||
|
.theme-white #gallery-theater-stage > .gallery {
|
||||||
|
background-color: #fffdf7;
|
||||||
|
}
|
||||||
|
|
||||||
|
.theme-white .gallery-actions {
|
||||||
|
background-color: #eee;
|
||||||
|
border: 1px solid #ddd;
|
||||||
|
}
|
||||||
|
|
||||||
|
.theme-white .gallery-toggle-desc.active {
|
||||||
|
color: #ff4444;
|
||||||
|
}
|
||||||
|
|
||||||
|
.theme-white .gallery-theme-switch {
|
||||||
|
border-right: 1px solid #ddd;
|
||||||
|
border-left: 1px solid #ddd;
|
||||||
|
}
|
||||||
|
|
||||||
|
.theme-white .gallery-thumb-toggle,
|
||||||
|
.theme-white .gallery-thumb-toggle:before,
|
||||||
|
.theme-white .gallery-thumb-toggle:after {
|
||||||
|
color: #777;
|
||||||
|
border-color: #aaa;
|
||||||
|
}
|
||||||
|
|
||||||
|
.theme-white .gallery-thumb-container {
|
||||||
|
background-color: #e2e2e2;
|
||||||
|
border-top: 1px solid #c7c7c7;
|
||||||
|
}
|
||||||
|
|
||||||
|
.theme-white .gallery-actions-btn {
|
||||||
|
color: #777;
|
||||||
|
}
|
||||||
|
|
||||||
|
.theme-white .gallery-actions-btn:hover {
|
||||||
|
color: #ff4444;
|
||||||
|
}
|
||||||
|
|
||||||
|
.theme-white .gallery-item.active {
|
||||||
|
border-color: #ff4444;
|
||||||
|
}
|
||||||
|
|
||||||
|
.theme-white .gallery-thumb-nav {
|
||||||
|
color: #777;
|
||||||
|
background-color: #eee;
|
||||||
|
}
|
||||||
|
|
||||||
|
.theme-white .gallery-thumb-prev {
|
||||||
|
border-right: 1px solid #c7c7c7;
|
||||||
|
}
|
||||||
|
|
||||||
|
.theme-white .gallery-thumb-next {
|
||||||
|
border-left: 1px solid #c7c7c7;
|
||||||
|
}
|
||||||
|
|
||||||
|
.theme-white .gallery-thumb-nav:hover {
|
||||||
|
color: #ff4444;
|
||||||
|
}
|
||||||
|
|
||||||
|
.theme-white .gallery-img-desc {
|
||||||
|
background-color: #eee;
|
||||||
|
}
|
||||||
|
|
||||||
|
.theme-white .gallery-loader {
|
||||||
|
background-color: #777;
|
||||||
|
}
|
||||||
|
|
||||||
|
.theme-white .spinner > div {
|
||||||
|
color: #ff4444;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 768px) {
|
||||||
|
.gal-prev {
|
||||||
|
-webkit-transform: translate(-101%, -50%);
|
||||||
|
transform: translate(-101%, -50%);
|
||||||
|
}
|
||||||
|
.gal-next {
|
||||||
|
-webkit-transform: translate(101%, -50%);
|
||||||
|
transform: translate(101%, -50%);
|
||||||
|
}
|
||||||
|
.gallery-thumb-toggle {
|
||||||
|
bottom: 50px;
|
||||||
|
left: 0;
|
||||||
|
color: #fff;
|
||||||
|
width: 100%;
|
||||||
|
text-align: center;
|
||||||
|
-webkit-transition: .1s all;
|
||||||
|
transition: .1s all;
|
||||||
|
}
|
||||||
|
.gallery-thumb-toggle.up {
|
||||||
|
bottom: 96px;
|
||||||
|
}
|
||||||
|
.gallery-thumb-toggle:before {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: 10%;
|
||||||
|
margin: auto;
|
||||||
|
width: 38%;
|
||||||
|
border-top: 1px solid rgba(255, 255, 255, .2);
|
||||||
|
height: 1px;
|
||||||
|
}
|
||||||
|
.gallery-thumb-toggle:after {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
right: 10%;
|
||||||
|
margin: auto;
|
||||||
|
width: 38%;
|
||||||
|
border-top: 1px solid rgba(255, 255, 255, .2);
|
||||||
|
height: 1px;
|
||||||
|
}
|
||||||
|
.gallery-thumb-container {
|
||||||
|
bottom: -1000px;
|
||||||
|
-webkit-transition: .1s all;
|
||||||
|
transition: .1s all;
|
||||||
|
}
|
||||||
|
.gallery-thumb-container.show {
|
||||||
|
bottom: 0;
|
||||||
|
}
|
||||||
|
}
|
|
@ -4,13 +4,17 @@ class Admin::GalleriesController < OrbitAdminController
|
||||||
before_action :log_user_action
|
before_action :log_user_action
|
||||||
layout "back_end"
|
layout "back_end"
|
||||||
def index
|
def index
|
||||||
@albums = Album.all
|
@albums = Album.where(:order => -1).desc(:created_at)
|
||||||
|
albums = Album.where(:order.gt => -1).asc(:order)
|
||||||
|
@albums = @albums.concat(albums)
|
||||||
@tags = @module_app.tags
|
@tags = @module_app.tags
|
||||||
end
|
end
|
||||||
|
|
||||||
def show
|
def show
|
||||||
@album = Album.find(params[:id])
|
@album = Album.find(params[:id])
|
||||||
@images = @album.album_images
|
@images = @album.album_images.where(:order => -1).desc(:created_at)
|
||||||
|
images = @album.album_images.where(:order.gt => -1).asc(:order)
|
||||||
|
@images = @images.concat(images)
|
||||||
image_content = []
|
image_content = []
|
||||||
@images.each do |image|
|
@images.each do |image|
|
||||||
image_content << {"id" => image.id.to_s, "description" => image.description_translations,"tags" => image.tags.collect{|t| t.id.to_s}}
|
image_content << {"id" => image.id.to_s, "description" => image.description_translations,"tags" => image.tags.collect{|t| t.id.to_s}}
|
||||||
|
@ -61,7 +65,9 @@ class Admin::GalleriesController < OrbitAdminController
|
||||||
|
|
||||||
def get_photoData_json
|
def get_photoData_json
|
||||||
@album = Album.find(params[:id])
|
@album = Album.find(params[:id])
|
||||||
@images = @album.album_images
|
@images = @album.album_images.where(:order => -1).desc(:created_at)
|
||||||
|
images = @album.album_images.where(:order.gt => -1).asc(:order)
|
||||||
|
@images = @images.concat(images)
|
||||||
image_content = []
|
image_content = []
|
||||||
@images.each do |image|
|
@images.each do |image|
|
||||||
image_content << {"id" => image.id.to_s, "description" => image.description_translations,"tags" => image.tags.collect{|t| t.id.to_s}}
|
image_content << {"id" => image.id.to_s, "description" => image.description_translations,"tags" => image.tags.collect{|t| t.id.to_s}}
|
||||||
|
@ -127,7 +133,7 @@ class Admin::GalleriesController < OrbitAdminController
|
||||||
def imgs
|
def imgs
|
||||||
@album = Album.find(params[:gallery_id])
|
@album = Album.find(params[:gallery_id])
|
||||||
@tag_names = Array.new
|
@tag_names = Array.new
|
||||||
@images = @album.album_images.all
|
@images = @album.album_images.asc(:order)
|
||||||
@output = Array.new
|
@output = Array.new
|
||||||
@images.each do |values|
|
@images.each do |values|
|
||||||
@output << { _id: values.id.to_s,
|
@output << { _id: values.id.to_s,
|
||||||
|
@ -136,6 +142,7 @@ class Admin::GalleriesController < OrbitAdminController
|
||||||
title: values.title,
|
title: values.title,
|
||||||
file: values.file.as_json[:file],
|
file: values.file.as_json[:file],
|
||||||
gallery_album_id: values.album_id,
|
gallery_album_id: values.album_id,
|
||||||
|
order: values.order,
|
||||||
tags: values.tags}
|
tags: values.tags}
|
||||||
end
|
end
|
||||||
render :json=>{"images" => @output, "tags" => @album.tags}.to_json
|
render :json=>{"images" => @output, "tags" => @album.tags}.to_json
|
||||||
|
@ -157,17 +164,20 @@ class Admin::GalleriesController < OrbitAdminController
|
||||||
render :json=>{"files"=>a}.to_json
|
render :json=>{"files"=>a}.to_json
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def last_image_id
|
||||||
|
album = Album.find(params[:albumid])
|
||||||
|
lastimage = album.album_images.last
|
||||||
|
render :json => {"last_image_id" => lastimage.id.to_s}.to_json
|
||||||
|
end
|
||||||
|
|
||||||
def new_images
|
def new_images
|
||||||
|
@album = Album.find(params[:album_id])
|
||||||
if params[:last_image_id] != ""
|
if params[:last_image_id].present?
|
||||||
@lastimage = AlbumImage.find(params[:last_image_id])
|
lastimage = AlbumImage.find(params[:last_image_id])
|
||||||
@album = Album.find(params[:album_id])
|
@newimages = @album.album_images.where(:created_at.gt => lastimage.created_at,:order => -1).desc(:created_at)
|
||||||
@newimages = @album.album_images.where(:created_at.gt => @lastimage.created_at)
|
|
||||||
else
|
else
|
||||||
@album = Album.find(params[:album_id])
|
@newimages = @album.album_images.where(:order => -1).desc(:created_at)
|
||||||
@newimages = @album.album_images
|
|
||||||
end
|
end
|
||||||
|
|
||||||
render :layout=>false
|
render :layout=>false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -183,11 +193,11 @@ class Admin::GalleriesController < OrbitAdminController
|
||||||
end
|
end
|
||||||
|
|
||||||
def update
|
def update
|
||||||
@album = Album.find(params[:id])
|
album = Album.find(params[:id])
|
||||||
tagsToDestroy = []
|
tagsToDestroy = []
|
||||||
tagsToAdd = []
|
tagsToAdd = []
|
||||||
new_tags = params[:album][:tags] || []
|
new_tags = params[:album][:tags] || []
|
||||||
old_tags = @album.tags.collect{|t| t.id.to_s}
|
old_tags = album.tags.collect{|t| t.id.to_s}
|
||||||
old_tags.each do |tag|
|
old_tags.each do |tag|
|
||||||
if !new_tags.include?(tag)
|
if !new_tags.include?(tag)
|
||||||
tagsToDestroy << tag
|
tagsToDestroy << tag
|
||||||
|
@ -200,16 +210,16 @@ class Admin::GalleriesController < OrbitAdminController
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
update_children_image_tag(tagsToDestroy,tagsToAdd)
|
update_children_image_tag(album,tagsToDestroy,tagsToAdd)
|
||||||
@album.update_attributes(album_params)
|
album.update_attributes(album_params)
|
||||||
redirect_to "/admin/galleries/"+@album.id.to_s
|
redirect_to "/admin/galleries/"+album.id.to_s
|
||||||
end
|
end
|
||||||
|
|
||||||
def update_children_image_tag(tagsToDestroy,tagsToAdd)
|
def update_children_image_tag(album,tagsToDestroy,tagsToAdd)
|
||||||
# tagsToDestroy will contain all tag ids which have to be deleted from the galley_images
|
# tagsToDestroy will contain all tag ids which have to be deleted from the galley_images
|
||||||
# tagsToAdd will contain all tag ids which ve to be added in tall album_images
|
# tagsToAdd will contain all tag ids which ve to be added in tall album_images
|
||||||
@images = AlbumImage.all
|
images = album.album_images
|
||||||
@images.each do |image|
|
images.each do |image|
|
||||||
image_tags = image.tags.collect{|t| t.id.to_s}
|
image_tags = image.tags.collect{|t| t.id.to_s}
|
||||||
tagsToAdd.each do |tag|
|
tagsToAdd.each do |tag|
|
||||||
image_tags << tag
|
image_tags << tag
|
||||||
|
|
|
@ -4,9 +4,33 @@ class Admin::ImagesController < OrbitAdminController
|
||||||
@image = AlbumImage.find(params[:id])
|
@image = AlbumImage.find(params[:id])
|
||||||
@albumid = @image.album_id
|
@albumid = @image.album_id
|
||||||
@album = Album.find(@albumid)
|
@album = Album.find(@albumid)
|
||||||
@images = @album.album_images.all
|
@images = @album.album_images.asc(:order)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def changeorder
|
||||||
|
type = params[:type]
|
||||||
|
if type == "imgholder"
|
||||||
|
images = params[:imageids]
|
||||||
|
images.each_with_index do |image, i|
|
||||||
|
img = AlbumImage.find(image) rescue nil
|
||||||
|
if !img.nil?
|
||||||
|
img.order = i
|
||||||
|
img.save
|
||||||
|
end
|
||||||
|
end
|
||||||
|
elsif type == "orbit_gallery"
|
||||||
|
albums = params[:imageids]
|
||||||
|
albums.each_with_index do |albumid, i|
|
||||||
|
album = Album.find(albumid) rescue nil
|
||||||
|
if !album.nil?
|
||||||
|
album.order = i
|
||||||
|
album.save
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
render :json => {"success" => true}.to_json
|
||||||
|
end
|
||||||
|
|
||||||
def delete_photos
|
def delete_photos
|
||||||
images = params['images']
|
images = params['images']
|
||||||
images.each do |image|
|
images.each do |image|
|
||||||
|
|
|
@ -1,10 +1,12 @@
|
||||||
class GalleriesController < ApplicationController
|
class GalleriesController < ApplicationController
|
||||||
def index
|
def index
|
||||||
albums = Album.filter_by_categories
|
albums = Album.filter_by_categories.filter_by_tags.asc(:order)
|
||||||
galleries = albums.collect do |a|
|
galleries = albums.collect do |a|
|
||||||
|
alt_text = (a.description.nil? || a.description == "" ? "gallery image" : a.description)
|
||||||
{
|
{
|
||||||
"album-name" => a.name,
|
"album-name" => a.name,
|
||||||
"album-description" => a.description,
|
"album-description" => a.description,
|
||||||
|
"alt_title" => alt_text,
|
||||||
"link_to_show" => OrbitHelper.url_to_show(a.to_param),
|
"link_to_show" => OrbitHelper.url_to_show(a.to_param),
|
||||||
"thumb-src" => a.cover_path || "/assets/gallery/default.jpg"
|
"thumb-src" => a.cover_path || "/assets/gallery/default.jpg"
|
||||||
}
|
}
|
||||||
|
@ -20,10 +22,12 @@ class GalleriesController < ApplicationController
|
||||||
def show
|
def show
|
||||||
params = OrbitHelper.params
|
params = OrbitHelper.params
|
||||||
album = Album.find_by_param(params[:uid])
|
album = Album.find_by_param(params[:uid])
|
||||||
images = album.album_images.collect do |a|
|
images = album.album_images.asc(:order).collect do |a|
|
||||||
|
alt_text = (a.description.nil? || a.description == "" ? "gallery image" : a.description)
|
||||||
{
|
{
|
||||||
"image-description" => a.description,
|
"image-description" => a.description,
|
||||||
"link_to_show" => "/" + I18n.locale.to_s + params[:url] + "/-" + a.id.to_s + "?method=theater",
|
"alt_title" => alt_text,
|
||||||
|
"link_to_show" => "/xhr/galleries/theater/" + a.id.to_s,
|
||||||
"thumb-src" => a.file.thumb.url
|
"thumb-src" => a.file.thumb.url
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
@ -34,7 +38,8 @@ class GalleriesController < ApplicationController
|
||||||
end
|
end
|
||||||
|
|
||||||
def widget
|
def widget
|
||||||
albums = Album.filter_by_widget_categories
|
tags = OrbitHelper.widget_tags.empty? ? ["all"] : OrbitHelper.widget_tags
|
||||||
|
albums = Album.filter_by_widget_categories.filter_by_tags(tags)
|
||||||
params = OrbitHelper.params
|
params = OrbitHelper.params
|
||||||
counts = OrbitHelper.widget_data_count
|
counts = OrbitHelper.widget_data_count
|
||||||
|
|
||||||
|
@ -44,8 +49,10 @@ class GalleriesController < ApplicationController
|
||||||
albums.each do |album|
|
albums.each do |album|
|
||||||
total_images = total_images + album.album_images.count
|
total_images = total_images + album.album_images.count
|
||||||
end
|
end
|
||||||
total_images = counts > 9 ? 9 : counts
|
counts = counts > total_images ? total_images : counts
|
||||||
while images.count < counts and images.count < AlbumImage.count
|
abc = AlbumImage.count
|
||||||
|
counts = counts > abc ? abc : counts
|
||||||
|
while images.count < counts
|
||||||
albums.each do |album|
|
albums.each do |album|
|
||||||
img = album.album_images.sample
|
img = album.album_images.sample
|
||||||
if !images.include?(img) && img != nil
|
if !images.include?(img) && img != nil
|
||||||
|
@ -55,9 +62,15 @@ class GalleriesController < ApplicationController
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
images = images.collect do |a|
|
images = images.collect do |a|
|
||||||
|
alt_text = (a.description.nil? || a.description == "" ? "gallery image" : a.description)
|
||||||
|
|
||||||
{
|
{
|
||||||
"link_to_show" => OrbitHelper.widget_more_url + "/-" + a.id.to_s + "?method=theater",
|
"link_to_show" => OrbitHelper.widget_more_url + "/" + a.album.to_param + "#" + a.id.to_s,
|
||||||
"thumb-src" => a.file.thumb.url
|
"alt_title" => alt_text,
|
||||||
|
"thumb-src" => a.file.thumb.url,
|
||||||
|
"thumb-large-src" => a.file.thumb_large.url,
|
||||||
|
"mobile-src" => a.file.mobile.url,
|
||||||
|
"theater-src" => a.file.theater.url
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
{
|
{
|
||||||
|
@ -69,12 +82,14 @@ class GalleriesController < ApplicationController
|
||||||
def imgs(album_id)
|
def imgs(album_id)
|
||||||
album = Album.find(album_id)
|
album = Album.find(album_id)
|
||||||
tag_names = Array.new
|
tag_names = Array.new
|
||||||
images = album.album_images.all
|
images = album.album_images.asc(:order)
|
||||||
output = Array.new
|
output = Array.new
|
||||||
images.each do |values|
|
images.each do |values|
|
||||||
|
alt_text = (values.description.nil? || values.description == "" ? "gallery image" : values.description)
|
||||||
output << { _id: values.id.to_s,
|
output << { _id: values.id.to_s,
|
||||||
description: values.description,
|
description: values.description,
|
||||||
title: values.title,
|
title: values.title,
|
||||||
|
alt_title: alt_text,
|
||||||
file: values.file.as_json[:file],
|
file: values.file.as_json[:file],
|
||||||
gallery_album_id: values.album_id,
|
gallery_album_id: values.album_id,
|
||||||
tags: values.tags}
|
tags: values.tags}
|
||||||
|
@ -83,17 +98,18 @@ class GalleriesController < ApplicationController
|
||||||
end
|
end
|
||||||
|
|
||||||
def theater
|
def theater
|
||||||
params = OrbitHelper.params
|
image = AlbumImage.find(params[:id])
|
||||||
image = AlbumImage.find(params[:uid])
|
|
||||||
albumid = image.album_id
|
albumid = image.album_id
|
||||||
album = Album.find(albumid)
|
album = Album.find(albumid)
|
||||||
images = album.album_images.all
|
images = album.album_images.asc(:order)
|
||||||
{
|
data = {
|
||||||
"album" => album,
|
"album" => album,
|
||||||
"images" => images,
|
# "images" => images,
|
||||||
"image" => image,
|
"image" => image.id.to_s,
|
||||||
"wall_images" => imgs(albumid),
|
"images" => imgs(albumid)
|
||||||
"back_to_albums" => OrbitHelper.url_to_show(album.to_param)
|
}
|
||||||
}
|
|
||||||
|
render :json => {"data" => data}.to_json
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
|
@ -13,6 +13,7 @@ class Album
|
||||||
field :tag_names
|
field :tag_names
|
||||||
field :uid, type: String
|
field :uid, type: String
|
||||||
field :rss2_id, type: String
|
field :rss2_id, type: String
|
||||||
|
field :order, type: Integer, default: -1
|
||||||
|
|
||||||
# has_and_belongs_to_many :tags, :class_name => "GalleryTag"
|
# has_and_belongs_to_many :tags, :class_name => "GalleryTag"
|
||||||
has_many :album_images, :autosave => true, :dependent => :destroy
|
has_many :album_images, :autosave => true, :dependent => :destroy
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
require 'net/http'
|
||||||
class AlbumImage
|
class AlbumImage
|
||||||
include Mongoid::Document
|
include Mongoid::Document
|
||||||
include Mongoid::Timestamps
|
include Mongoid::Timestamps
|
||||||
|
@ -8,6 +9,7 @@ class AlbumImage
|
||||||
field :title
|
field :title
|
||||||
field :description, localize: true
|
field :description, localize: true
|
||||||
field :rss2_id, type: String
|
field :rss2_id, type: String
|
||||||
|
field :order, type: Integer, default: -1
|
||||||
|
|
||||||
# has_and_belongs_to_many :tags, :class_name => "GalleryTag"
|
# has_and_belongs_to_many :tags, :class_name => "GalleryTag"
|
||||||
|
|
||||||
|
|
|
@ -32,6 +32,11 @@ class GalleryUploader < CarrierWave::Uploader::Base
|
||||||
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
|
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def fix_exif_rotation
|
||||||
|
manipulate! do |img|
|
||||||
|
img.tap(&:auto_orient)
|
||||||
|
end
|
||||||
|
end
|
||||||
# Provide a default URL as a default if there hasn't been a file uploaded:
|
# Provide a default URL as a default if there hasn't been a file uploaded:
|
||||||
# def default_url
|
# def default_url
|
||||||
# "/images/fallback/" + [version_name, "default.png"].compact.join('_')
|
# "/images/fallback/" + [version_name, "default.png"].compact.join('_')
|
||||||
|
@ -50,14 +55,22 @@ class GalleryUploader < CarrierWave::Uploader::Base
|
||||||
# end
|
# end
|
||||||
|
|
||||||
version :thumb do
|
version :thumb do
|
||||||
|
process :fix_exif_rotation
|
||||||
process :resize_to_fill => [200, 200]
|
process :resize_to_fill => [200, 200]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
version :thumb_large do
|
||||||
|
process :fix_exif_rotation
|
||||||
|
process :resize_to_fill => [600, 600]
|
||||||
|
end
|
||||||
|
|
||||||
version :theater do
|
version :theater do
|
||||||
|
process :fix_exif_rotation
|
||||||
process :resize_to_limit => [1920, 1080]
|
process :resize_to_limit => [1920, 1080]
|
||||||
end
|
end
|
||||||
|
|
||||||
version :mobile do
|
version :mobile do
|
||||||
|
process :fix_exif_rotation
|
||||||
process :resize_to_limit => [1152, 768]
|
process :resize_to_limit => [1152, 768]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -81,6 +94,6 @@ class GalleryUploader < CarrierWave::Uploader::Base
|
||||||
# rescue ::MiniMagick::Error, ::MiniMagick::Invalid => e
|
# rescue ::MiniMagick::Error, ::MiniMagick::Invalid => e
|
||||||
# raise CarrierWave::ProcessingError.new("Failed to manipulate with MiniMagick, maybe it is not an image? Original Error: #{e}")
|
# raise CarrierWave::ProcessingError.new("Failed to manipulate with MiniMagick, maybe it is not an image? Original Error: #{e}")
|
||||||
# end
|
# end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<li class="rgalbum">
|
<li class="rgalbum" data-image-id="<%= album.id %>">
|
||||||
<a href="<%= admin_gallery_path(album.id) %>">
|
<a href="<%= admin_gallery_path(album.id) %>">
|
||||||
<% if album.cover == "default" %>
|
<% if album.cover == "default" %>
|
||||||
<%= image_tag "gallery/default.jpg" %>
|
<%= image_tag "gallery/default.jpg" %>
|
||||||
|
|
|
@ -1,14 +1,26 @@
|
||||||
<ul id="orbit_gallery" class="gallery" data-gallery-id="gallery">
|
<div class="order-edit-notification">Albums re-ordering enabled.</div>
|
||||||
<% @albums.each do |album| %>
|
|
||||||
<%= render :partial => "album", :object => album %>
|
<div class="rgbody">
|
||||||
<% end %>
|
<ul id="orbit_gallery" class="gallery clearfix" data-gallery-id="gallery">
|
||||||
</ul>
|
<% @albums.each do |album| %>
|
||||||
|
<%= render :partial => "album", :object => album %>
|
||||||
|
<% end %>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="bottomnav clearfix">
|
||||||
|
<div class="action pull-right">
|
||||||
|
<% if can_edit_or_delete?(nil) %>
|
||||||
|
<a href="#" class="btn btn-small btn-info order-btn-class" id="edit-order-btn">Edit Order</a>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<% content_for :page_specific_css do %>
|
<% content_for :page_specific_css do %>
|
||||||
<%= stylesheet_link_tag "gallery" %>
|
<%= stylesheet_link_tag "gallery" %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<% content_for :page_specific_javascript do %>
|
<% content_for :page_specific_javascript do %>
|
||||||
|
<%= javascript_include_tag "lib/jquery-ui-1.10.0.custom.min" %>
|
||||||
<%= javascript_include_tag "jquery.masonry.min.js" %>
|
<%= javascript_include_tag "jquery.masonry.min.js" %>
|
||||||
<%= javascript_include_tag "jquery.lite.image.resize.js" %>
|
<%= javascript_include_tag "jquery.lite.image.resize.js" %>
|
||||||
<%= javascript_include_tag "gallery" %>
|
<%= javascript_include_tag "gallery" %>
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
|
<% content_for :page_specific_css do %>
|
||||||
<%= stylesheet_link_tag "gallery" %>
|
<%= stylesheet_link_tag "gallery" %>
|
||||||
<%= stylesheet_link_tag "lib/tags-groups" %>
|
<%= stylesheet_link_tag "lib/tags-groups" %>
|
||||||
|
<% end %>
|
||||||
<!-- <div class="topnav clearfix">
|
<!-- <div class="topnav clearfix">
|
||||||
<ul class="breadcrumb text-info pull-left">
|
<ul class="breadcrumb text-info pull-left">
|
||||||
<li><a href="/orbit_4.0.1/admin/dashboards/dashboards.shtml">Dashboard</a> <span class="divider">/</span></li>
|
<li><a href="/orbit_4.0.1/admin/dashboards/dashboards.shtml">Dashboard</a> <span class="divider">/</span></li>
|
||||||
|
@ -9,6 +10,7 @@
|
||||||
</ul>
|
</ul>
|
||||||
</div> -->
|
</div> -->
|
||||||
<!-- Bottom Nav -->
|
<!-- Bottom Nav -->
|
||||||
|
<div class="order-edit-notification">Images re-ordering enabled.</div>
|
||||||
<div class="bottomnav clearfix">
|
<div class="bottomnav clearfix">
|
||||||
<div class="action pull-left">
|
<div class="action pull-left">
|
||||||
<a href="<%= admin_galleries_path %>" class="btn btn-small"><i class="icons-back"></i> Back</a>
|
<a href="<%= admin_galleries_path %>" class="btn btn-small"><i class="icons-back"></i> Back</a>
|
||||||
|
@ -19,6 +21,7 @@
|
||||||
<a href="#dialog" data-toggle="modal" class="btn btn-warning btn-small deletephoto hide"><i class="icons-cross-3"></i> Delete Photo</a>
|
<a href="#dialog" data-toggle="modal" class="btn btn-warning btn-small deletephoto hide"><i class="icons-cross-3"></i> Delete Photo</a>
|
||||||
<a href="#view-photo-tags" class="btn btn-primary btn-small addtags open hide" for="batch"><i class="icons-tag"></i> Add Tags</a>
|
<a href="#view-photo-tags" class="btn btn-primary btn-small addtags open hide" for="batch"><i class="icons-tag"></i> Add Tags</a>
|
||||||
<a href="<%= edit_admin_gallery_path(@album.id) %>" class="btn btn-small btn-success"><i class="icon-edit"></i> Edit</a>
|
<a href="<%= edit_admin_gallery_path(@album.id) %>" class="btn btn-small btn-success"><i class="icon-edit"></i> Edit</a>
|
||||||
|
<a href="#" class="btn btn-small btn-info order-btn-class" id="edit-order-btn">Edit Order</a>
|
||||||
<b class="divider"></b>
|
<b class="divider"></b>
|
||||||
|
|
||||||
<a href="#" class="add-imgs btn btn-small btn-primary"><i class="icons-plus"></i> Add Image</a>
|
<a href="#" class="add-imgs btn btn-small btn-primary"><i class="icons-plus"></i> Add Image</a>
|
||||||
|
@ -169,6 +172,7 @@
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<% content_for :page_specific_javascript do %>
|
<% content_for :page_specific_javascript do %>
|
||||||
|
<%= javascript_include_tag "lib/jquery-ui-1.10.0.custom.min" %>
|
||||||
<%= javascript_include_tag "jquery.masonry.min.js" %>
|
<%= javascript_include_tag "jquery.masonry.min.js" %>
|
||||||
<%= javascript_include_tag "jquery.lite.image.resize.js" %>
|
<%= javascript_include_tag "jquery.lite.image.resize.js" %>
|
||||||
<%= javascript_include_tag "lib/checkbox.card" %>
|
<%= javascript_include_tag "lib/checkbox.card" %>
|
||||||
|
|
|
@ -1 +1,59 @@
|
||||||
<%= render_view %>
|
<%= render_view %>
|
||||||
|
<% OrbitHelper.render_css_in_head(["theater.css"]) %>
|
||||||
|
<%= javascript_include_tag "jquery.touchSwipe.min" %>
|
||||||
|
<%= javascript_include_tag "theater" %>
|
||||||
|
<% OrbitHelper.render_meta_tags([{"name" => "mobile-web-app-capable","content" => "yes"},{"name" => "apple-mobile-web-app-status-bar-style","content" => "black-translucent"}]) %>
|
||||||
|
<div id="gallery-theater-stage">
|
||||||
|
<div class="gallery">
|
||||||
|
<div class="gallery-loader">
|
||||||
|
<div class="spinner">
|
||||||
|
<div class="rect1"></div>
|
||||||
|
<div class="rect2"></div>
|
||||||
|
<div class="rect3"></div>
|
||||||
|
<div class="rect4"></div>
|
||||||
|
<div class="rect5"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="gallery-actions">
|
||||||
|
<div class="gallery-toggle-desc gallery-actions-btn">
|
||||||
|
<i class="fa fa-comment"></i>
|
||||||
|
</div>
|
||||||
|
<div class="gallery-theme-switch gallery-actions-btn">
|
||||||
|
<i class="fa fa-circle"></i>
|
||||||
|
</div>
|
||||||
|
<div class="gallery-close gallery-actions-btn">
|
||||||
|
<i class="fa fa-times"></i>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="image-container" id="image-container"></div>
|
||||||
|
<div class="gallery-thumb-toggle gallery-thumb-line">
|
||||||
|
<i class="fa fa-angle-double-up"></i>
|
||||||
|
</div>
|
||||||
|
<div class="gallery-thumb-container">
|
||||||
|
<div class="gallery-thumb-navs">
|
||||||
|
<div class="gallery-thumb-prev gallery-thumb-nav">
|
||||||
|
<i class="fa fa-arrow-circle-o-left"></i>
|
||||||
|
</div>
|
||||||
|
<div class="gallery-thumb-next gallery-thumb-nav">
|
||||||
|
<i class="fa fa-arrow-circle-o-right"></i>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<ul class="gallery-thumb-wrap">
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="gallery-img-desc">
|
||||||
|
<div class="gallery-img-desc-inner">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
if(typeof Modernizr == "undefined"){
|
||||||
|
var script = $("<script>");
|
||||||
|
script.attr("src","/assets/modernizr.js");
|
||||||
|
$("head").append(script);
|
||||||
|
}
|
||||||
|
var gt = new GalleryTheater();
|
||||||
|
|
||||||
|
</script>
|
|
@ -15,23 +15,23 @@
|
||||||
<div id="imgholder">
|
<div id="imgholder">
|
||||||
<div class="rslide" style="position:relative; width:100%;">
|
<div class="rslide" style="position:relative; width:100%;">
|
||||||
<div class="rslideinside"><div id="loading" style="display:none;"></div>
|
<div class="rslideinside"><div id="loading" style="display:none;"></div>
|
||||||
<div class="comp" id='main_pic' data-content='<%= @image.album_id %>'><a href="" id="nextpic" class="navN" title="下一張" onclick="return false;" ><img src="<%= @image.file.theater.url %>" alt="" /></a></div>
|
<div class="comp" id='main_pic' data-content='<%= @image.album_id %>'><a href="" id="nextpic" class="navN" title="下一張" ><img src="<%= @image.file.theater.url %>" alt="<%= @image.description.nil? || @image.description == "" ? "gallery image" : @image.description %>" /></a></div>
|
||||||
<div class="rslidenav">
|
<div class="rslidenav">
|
||||||
<a href="" class="navP" title="上一張" onclick="return false;">Prev</a>
|
<a href="" class="navP" title="上一張" >Prev</a>
|
||||||
<a href="" class="navN" title="下一張" onclick="return false;">Next</a>
|
<a href="" class="navN" title="下一張" >Next</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="slidelist">
|
<div class="slidelist">
|
||||||
<ul id='galleryimagelist' style="display:none;">
|
<ul id='galleryimagelist' style="display:none;">
|
||||||
<% @images.each_with_index do |image,i| %>
|
<% @images.each_with_index do |image,i| %>
|
||||||
<li for="<%= i %>"><a href="<%= image.id %>" class="list_element" data-content="<%= image.file.theater.url %>" onclick="return false;"><img src="<%= image.file.thumb.url %>" alt="" /></a></li>
|
<li for="<%= i %>"><a href="<%= image.id %>" class="list_element" data-content="<%= image.file.theater.url %>" ><img src="<%= image.file.thumb.url %>" alt="<%= image.description.nil? || image.description == "" ? "gallery image" : image.description %>" /></a></li>
|
||||||
<% end %>
|
<% end %>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="slidectrl">
|
<div class="slidectrl">
|
||||||
<a href="" class="togglescreen" title="切換全螢幕" onclick="return false;">Screen</a>
|
<a href="" class="togglescreen" title="切換全螢幕" >Screen</a>
|
||||||
<a href="" class="togglelist" title="顯示照片清單" onclick="return false;">List</a>
|
<a href="" class="togglelist" title="顯示照片清單" >List</a>
|
||||||
<a href="" class="browserfullscreen" title="顯示照片清單" onclick="return false;">F</a>
|
<a href="" class="browserfullscreen" title="顯示照片清單" >F</a>
|
||||||
<div class="slideinfo">
|
<div class="slideinfo">
|
||||||
<span class="info"><%= @image.description %></span>
|
<span class="info"><%= @image.description %></span>
|
||||||
</div>
|
</div>
|
||||||
|
@ -67,6 +67,7 @@
|
||||||
var gallery = new galleryAPI();
|
var gallery = new galleryAPI();
|
||||||
gallery.initialize();
|
gallery.initialize();
|
||||||
gallery.loadTheater("<%= params[:id] %>","<%= params[:image_id] %>");
|
gallery.loadTheater("<%= params[:id] %>","<%= params[:image_id] %>");
|
||||||
|
$("#orbit_gallery a").on("click",function(){return false;})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -3,22 +3,27 @@ Rails.application.routes.draw do
|
||||||
locales = Site.first.in_use_locales rescue I18n.available_locales
|
locales = Site.first.in_use_locales rescue I18n.available_locales
|
||||||
|
|
||||||
scope "(:locale)", locale: Regexp.new(locales.join("|")) do
|
scope "(:locale)", locale: Regexp.new(locales.join("|")) do
|
||||||
|
get "/xhr/galleries/theater/:id" => "galleries#theater"
|
||||||
namespace :admin do
|
namespace :admin do
|
||||||
get "galleries/get_photoData_json" => "galleries#get_photoData_json"
|
get "galleries/get_photoData_json" => "galleries#get_photoData_json"
|
||||||
|
|
||||||
|
get "galleries/new_images" => "galleries#new_images"
|
||||||
|
get "galleries/last_image_id" => "galleries#last_image_id"
|
||||||
|
post "galleries/set_cover" => "galleries#set_cover"
|
||||||
|
post "galleries/delete_photos" => "images#delete_photos"
|
||||||
|
post "galleries/update_image" => "images#update_image"
|
||||||
|
post "galleries/image_tagging" => "images#image_tagging"
|
||||||
|
post "galleries/order" => "images#changeorder"
|
||||||
|
|
||||||
resources :galleries do
|
resources :galleries do
|
||||||
get "imgs" => "galleries#imgs"
|
get "imgs" => "galleries#imgs"
|
||||||
end
|
end
|
||||||
resources :images
|
resources :images
|
||||||
post "galleries/upload_image" => "galleries#upload_image"
|
post "galleries/upload_image" => "galleries#upload_image"
|
||||||
|
|
||||||
get "new_images" => "galleries#new_images"
|
|
||||||
post "galleries/set_cover" => "galleries#set_cover"
|
|
||||||
post "galleries/delete_photos" => "images#delete_photos"
|
|
||||||
post "galleries/update_image" => "images#update_image"
|
|
||||||
post "galleries/image_tagging" => "images#image_tagging"
|
|
||||||
# match "image_tagging" => "album_images#image_tagging"
|
# match "image_tagging" => "album_images#image_tagging"
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue