orbit-basic/vendor/built_in_modules/gallery/app/assets/javascripts/galleryAPI_frontend.js.erb

254 lines
7.1 KiB
Plaintext
Raw Normal View History

2012-08-22 17:36:39 +00:00
<%# encoding: utf-8 %>
$.extend($.expr[':'], {
'containsi': function (elem, i, match, array) {
return (elem.textContent || elem.innerText || '').toLowerCase().indexOf((match[3] || "").toLowerCase()) >= 0;
}
});
var galleryAPI = function(){
g = this;
this.urlVars = rcom.getUrlVars();
this.albumArea = $("#orbit_gallery");
this.loadArea = null;
2012-09-05 11:08:48 +00:00
this.tagList = $(".taglist ul");
this.loading = $("#loading");
2012-08-22 17:36:39 +00:00
// this.authenticated = false;
this.initialize = function(callbackFn){
if(g.loadArea == "theater"){
if(rcom.getInternetExplorerVersion()!=-1){
var photo_id = window.location.hash.replace("#","");
if(photo_id){
var params = rcom.getUrlVars();
var url = window.location.href.split("?")[0];
params["id"] = photo_id;
for(i=0;i<params.length;i++){
if(i == 0)
url+="?"+params[i]+"="+params[params[i]];
else
url+="&"+params[i]+"="+params[params[i]];
}
window.location.href = url;
}
}
}
2012-08-22 17:36:39 +00:00
}
2012-08-22 17:36:39 +00:00
this.loadTheater = function(id){
var imageArray;
var imagecount = 0;
2012-09-04 13:30:17 +00:00
// var picHeight = 0;
g.loadstart();
2012-08-22 17:36:39 +00:00
var bindHandlers = function(){
var $slidelist = $('.slidelist'),
$rslide = $('.rslide'),
$rslidenav = $('.rslidenav'),
$img = $("#main_pic img"),
wHeight = $(window).height();
2012-09-04 13:30:17 +00:00
$("#main_pic").height("auto");
2012-09-11 08:50:42 +00:00
$img.css("height","auto");
2012-08-22 17:36:39 +00:00
var updatePhotoTag = function(){
2012-09-05 11:08:48 +00:00
var tagnames = imageArray[imagecount].tag_names;
g.tagList.empty();
for(tag in tagnames){
g.tagList.append("<li>"+tagnames[tag]+"</li>");
2012-08-22 17:36:39 +00:00
}
2012-09-05 11:08:48 +00:00
2012-08-22 17:36:39 +00:00
}
2012-09-04 13:30:17 +00:00
2012-08-22 17:36:39 +00:00
$(".slidectrl a.togglelist").click(function(){
var rslide_h = $rslide.outerHeight();
if ( $slidelist.height() < 1 ){
$slidelist.stop().animate({'height':rslide_h - 30}, 300);
$slidelist.find("ul").show();
} else {
$slidelist.stop().animate({'height':'0px'}, 300);
$slidelist.find("ul").hide();
}
})
$(".slidectrl .togglescreen").click(function(){
toggleFullscreen();
})
$(".slidectrl .browserfullscreen").click(function(){
browserFullScreen();
})
$slidelist.find(".list_element").click(function(){
imagecount = parseInt($(this).parent().attr("for"));
changeImage($(this));
})
$rslidenav.find(".navN").click(function(){
nextpic($(this));
})
$rslidenav.find("a.navP").click(function(){
prevpic($(this));
})
$("#nextpic").click(function(){
nextpic($(this));
})
$(document).keydown(function(e){
if (e.keyCode == 37){
prevpic($rslidenav.find(".navP"));
return false;
}
if(e.keyCode == 39){
nextpic($rslidenav.find(".navN"));
return false;
}
if(e.keyCode == 27){
toggleFullscreen();
$rslide.removeClass('browserFullScreen');
return false;
}
if(e.keyCode == 70 || e.keyCode == 102){
if($rslide.hasClass("fullscreen"))
browserFullScreen();
}
});
var browserFullScreen = function(){
var el = document.documentElement,
rfs = el.requestFullScreen || el.webkitRequestFullScreen || el.mozRequestFullScreen;
rfs.call(el);
}
2012-09-03 13:49:35 +00:00
$(window).resize(function(){
if(window.innerWidth == screen.width && window.innerHeight == screen.height) {
$rslide.addClass('browserFullScreen');
} else {
$rslide.removeClass('browserFullScreen');
}
})
2012-08-22 17:36:39 +00:00
var nextpic = function(dom){
if(imagecount == imageArray.length - 1)
imagecount = 0;
else
imagecount++;
changeImage(dom);
}
var prevpic = function(dom){
if(imagecount == 0)
imagecount = imageArray.length - 1
else
imagecount--;
changeImage(dom);
}
var toggleFullscreen = function(){
if($rslide.hasClass("fullscreen")){
$rslide.css("position","relative");
$rslide.removeClass("fullscreen");
$(".slidectrl .browserfullscreen").hide();
$img.css({"padding":""})
2012-09-04 13:30:17 +00:00
$("#main_pic").height("auto");
2012-08-22 17:36:39 +00:00
}else{
2012-09-11 08:50:42 +00:00
$("#main_pic").height(wHeight);
$img.css("height","auto");
2012-08-22 17:36:39 +00:00
$rslide.css("position","");
$rslide.addClass("fullscreen");
$img.css({"padding":($rslide.height()-$img.height())/2})
$(".slidectrl .browserfullscreen").show();
}
}
var changeImage = function(dom){
var pageurl = dom.attr('href');
2012-09-03 13:49:35 +00:00
2012-08-22 17:36:39 +00:00
$img.fadeOut(200,function(){
g.loadstart();
2013-11-05 05:23:18 +00:00
if($rslide.hasClass("fullscreen")){
$img.attr({"src":dom.attr("data-content")}).css("height","100%").load(function(){
g.loadcomplete();
$img.fadeIn(200);
});
2013-11-05 05:23:18 +00:00
}else{
$img.attr({"src":dom.attr("data-content")}).css("height","auto").load(function(){
console.log(dom.attr("data-content"));
g.loadcomplete();
$img.fadeIn(200);
});;
}
2012-08-22 17:36:39 +00:00
if($rslide.hasClass("fullscreen")){
$img.css({"padding":($rslide.height()-$img.height())/2})
}
$slidelist.stop().animate({'height':'0px'}, 300);
$slidelist.find("ul").hide();
2012-09-03 13:49:35 +00:00
if(rcom.getInternetExplorerVersion() == -1){
2012-09-04 13:30:17 +00:00
2012-09-03 13:49:35 +00:00
if(pageurl!=window.location){
2013-11-12 04:20:36 +00:00
pageurl = window.location.pathname+"?id="+pageurl+"&controller_action=theater";
2012-09-03 13:49:35 +00:00
window.history.pushState({path:pageurl},'',pageurl);
}
}else{
window.location.hash = pageurl;
}
2012-08-22 17:36:39 +00:00
// $(".slideinfo b.info").text(imageArray[imagecount].title);
updatePhotoTag();
2013-07-18 09:20:46 +00:00
if(imageArray[imagecount].description)
$(".slideinfo .info").text(imageArray[imagecount].description);
else
$(".slideinfo .info").text("");
2012-08-22 17:36:39 +00:00
if(imageArray.length > 1)
updateNavigation();
})
}
var updateNavigation = function(){
var next, prev;
if(imagecount == 0){
next = 1;
prev = imageArray.length - 1;
}else if(imagecount == imageArray.length - 1){
next = 0
prev = imageArray.length - 2;
}else{
next = imagecount + 1;
prev = imagecount - 1;
}
2012-09-03 13:49:35 +00:00
$(".navN").attr({"href":imageArray[next]._id,"data-content":imageArray[next].file.url});
$(".navP").attr({"href":imageArray[prev]._id,"data-content":imageArray[prev].file.url});
2012-08-22 17:36:39 +00:00
};
if(imageArray.length > 1)
updateNavigation();
}
var preparestage = function(albumid){
2013-11-07 14:07:57 +00:00
$.getJSON("/panel/gallery/front_end/albums/"+albumid+"/imgs",{"inner":true},function(album){
2012-08-22 17:36:39 +00:00
imageArray = eval(album.images);
$.each(album.images,function(i,image){
if(image._id == id)
imagecount = i;
})
bindHandlers();
})
}
// if(rcom.getInternetExplorerVersion()!=-1){
// var url_constructor = window.location.href.split("/");
// var url = "";
// for(x=0;x<=url_constructor.length-1;x++){
// if(x == url_constructor.length-1){
// url+="#!/"+url_constructor[x];
// }else{
// url+=url_constructor[x]+"/";
// }
// }
2012-09-03 13:49:35 +00:00
// window.location.href = url;
// }
2012-09-03 13:49:35 +00:00
var albumid = $("#main_pic").attr("data-content");
g.albumArea.css("margin-bottom","0");
2012-09-04 13:30:17 +00:00
// picHeight = $(window).height() - ($("#orbit-bar").outerHeight() + $("#orbit_gallery .form-actions").outerHeight());
2012-09-03 13:49:35 +00:00
preparestage(albumid);
2012-09-04 13:30:17 +00:00
2012-08-22 17:36:39 +00:00
}
this.loadcomplete = function(){
g.loading.hide();
}
this.loadstart = function(){
g.loading.show();
}
2012-08-22 17:36:39 +00:00
}
galleryAPI.prototype.locale = "en";