<%# 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; this.tagList = $("ul#gallery_tag_list"); this.initialize = function(callbackFn){ $(document).ready(function(){ bindHandlers(); }) var bindHandlers = function(){ $("#filter .filter_btns a").click(function(){ if(!$(this).hasClass("active")){ $(this).addClass("active"); if(g.urlVars.length == 0) window.location = "albums?" + $(this).attr("href"); else window.location = window.location.href +"&"+ $(this).attr("href"); }else{ $(this).removeClass("active"); var loc = window.location.href; var url = loc.replace($(this).attr("href")+"&",""); if(url == loc) url = loc.replace($(this).attr("href"),""); if(url.charAt(url.length-1)=="&" || url.charAt(url.length-1)=="?") url = url.substr(0,url.length-1); window.location = url; } }) $("#filter .filter-clear a").click(function(){ var loc = window.location.href; var url = null; var forwhat = $(this).attr("for"); $("#filter ."+forwhat+" a.active").each(function(){ $(this).removeClass("active"); url = loc.replace($(this).attr("href")+"&",""); if(url == loc) url = loc.replace($(this).attr("href"),""); if(url.charAt(url.length-1)=="&" || url.charAt(url.length-1)=="?") url = url.substr(0,url.length-1); loc = url; }) window.location = url; }) } } this.makeNewAlbum = function(path){ $.get(path,function(html){ rcom.modalWindow({loadHtml:html,width:400,height:320,"closeBtn":false},function(dom){ $("form#new_gallery_album").submit(function(){ var validated = true; $(this).find(".error").removeClass("error"); $(this).find(".validate").each(function(){ if(!$(this).val()){ validated = false; $(this).parent().addClass("error"); } }) if(!validated) return false; }) dom.find("#album_name_close_btn").click(function(){ rcom.modalWindowClose(); }) }) }) } this.deleteAlbum = function(id){ if(confirm("<%= I18n.t('gallery.del_album?') %>")){ $.ajax({ type: "DELETE", url : id, success : function(){ window.location = "../albums"; } }) } } this.loadAlbums = function(id){ g.albumArea.find(".rghead .rgfn a").click(function(){g.makeNewAlbum($(this).attr("href"))}); g.albumArea.addClass('o_gallery'); g.albumArea.find("#imgholder").empty(); if(id!="all"){ var cids = []; var tids = []; var href = null; console.log(cids); var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&'); for(var i = 0; i < hashes.length; i++){ hash = hashes[i].split('='); if(hash[0]=="cat"){ cids.push(hash[1]); href = "cat="+hash[1]; }else if(hash[0]=="tag"){ tids.push(hash[1]); href = "tag="+hash[1]; } $("#filter .filter_btns a[href='"+href+"']").addClass("active"); } if(cids.length == 0) cids = "all"; }else{ var cids = "all"; } $.getJSON("get_albums",{cid:cids,tid:tids},function(categories){ $.each(categories,function(x,category){ $.each(category,function(i,album){ album.description = (album.description?album.description:"<%= I18n.t('gallery.no_description') %>") if(album.cover == "default") var $img = $("
"+album.name+""+album.category_name+"
"); else var $img = $("
"+album.name+""+album.category_name+"
"); var tag_string = ""; for(tag in album.tag_names){ tag_string+= '' + album.tag_names[tag] + ''; } $img.find(".tagnames").html(tag_string); g.albumArea.find("#imgholder").append($img); }) }) }) } this.loadImages = function(id){ var panelopen = false; $('.bt-tag').click(function(){ $(this).toggleClass("active"); var $tag_panel = $('#tag_panel'), tag_panel_position = 0; if( $tag_panel.css('right') == '0px' ){ tag_panel_position = -200; } $tag_panel.animate({'right':tag_panel_position}, 300); g.albumArea .delay(200) .animate({'margin-right':tag_panel_position+200},300); return false; }); g.albumArea.find("#tag_search_box").keyup(function(e){ sval = $(this).val(); if(sval == "<%= I18n.t('gallery.search_tags') %>") sval = ""; sval = sval.replace(/(^\s*)|(\s*$)/g,''); if(sval){ var re1 = new RegExp("^[\u4E00-\uFA29]*$"); //Chinese character range var re2 = new RegExp("^[\uE7C7-\uE7F3]*$"); if ((re1.test(sval) && (re2.test(sval)))){ $("#gallery_tag_list li span:not(:contains("+sval+"))").parent().slideUp(); }else{ $("#gallery_tag_list li span:not(:containsi("+sval+"))").parent().slideUp(); } }else{ $("#gallery_tag_list li").slideDown(); } }) g.albumArea.find("#tag_panel .bt-save").click(function(){ g.saveTags(id,"album"); }) g.albumArea.find(".rghead .rgfn .bt-add").click(function(){ showUploadPanel(); }) g.albumArea.find(".rghead .rgfn .bt-del").click(function(){ g.deleteAlbum(id); }) $("#upload_panel_holder").remove(); var uploadpanel = $('
Close Panel
'); var frame = $(''); uploadpanel.find(".bt-cls").click(function(){ uploadpanel.hide("slide"); frame.remove(); g.loadImages(id); panelopen = false; }) var showUploadPanel = function(){ if(!panelopen){ uploadpanel.prepend(frame); uploadpanel.show("slide"); panelopen = true; } } g.albumArea.addClass('o_album'); g.albumArea.find(".rghead .rgfn").append(uploadpanel); g.albumArea.find("#imgholder").empty(); $.getJSON(id+"/imgs",function(album){ $.each(album.images,function(i,image){ var thumb = image.file.thumb.url; image.description = (image.description?image.description:"<%= I18n.t('gallery.no_description') %>") var $img = $("
"); g.albumArea.find("#imgholder").append($img); }) g.tagList.find("input").attr("checked",false); if(typeof album.tag_names == "undefined"){ $.each(album.tags,function(i,tag){ g.tagList.find("li[data-content="+tag+"] input").attr("checked",true); }) }else{ $.each(album.tag_names,function(i,tagname){ $li = $("
  • "+tagname+"
  • "); g.tagList.append($li); }) } }) } this.loadTheater = function(id){ var imageArray; var imagecount = 0; var picHeight = 0; var bindHandlers = function(){ var $slidelist = $('.slidelist'), $rslide = $('.rslide'), $rslidenav = $('.rslidenav'), $img = $("#main_pic img"), wHeight = $(window).height(); $("#main_pic").height(picHeight); $img.height("100%"); $('.bt-tag').click(function(){ if(!$(this).hasClass("active")) updatePhotoTag(); $(this).toggleClass("active"); var $tag_panel = $('#tag_panel'), tag_panel_position = 0; if( $tag_panel.css('right') == '0px' ){ tag_panel_position = -200; } $tag_panel.animate({'right':tag_panel_position}, 300); g.albumArea .delay(200) .animate({'margin-right':tag_panel_position+200},300); return false; }); var updatePhotoTag = function(){ var tags = imageArray[imagecount].tag_ids; if(tags.length > 0 && g.tagList.find("li").length == 0){ var tagnames = imageArray[imagecount].tag_names; g.tagList.empty(); for(i in tagnames){ $li = $("
  • "+tagnames[i]+"
  • "); g.tagList.append($li); } }else if(tags.length > 0 && g.tagList.find("li").length > 0) { g.tagList.find("input").attr("checked",false); for(tag in tags){ g.tagList.find("li[data-content="+tags[tag]+"] input").attr("checked",true); } }else if(tags.length == 0){ if(g.tagList.find("input").length == 0) g.tagList.empty(); else g.tagList.find("input").attr("checked",false); } } g.albumArea.find("#tag_search_box").keyup(function(e){ sval = $(this).val(); if(sval == "<%= I18n.t('gallery.search_tags') %>") sval = ""; sval = sval.replace(/(^\s*)|(\s*$)/g,''); if(sval){ var re1 = new RegExp("^[\u4E00-\uFA29]*$"); //Chinese character range var re2 = new RegExp("^[\uE7C7-\uE7F3]*$"); if ((re1.test(sval) && (re2.test(sval)))){ $("#gallery_tag_list li span:not(:contains("+sval+"))").parent().slideUp(); }else{ $("#gallery_tag_list li span:not(:containsi("+sval+"))").parent().slideUp(); } }else{ $("#gallery_tag_list li").slideDown(); } }) g.albumArea.find("#tag_panel .bt-save").click(function(){ g.saveTags(imageArray[imagecount]._id,"pic",function(tagids){ imageArray[imagecount].tag_ids = tagids; }) }) $(".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); } $(window).resize(function(){ if(window.innerWidth == screen.width && window.innerHeight == screen.height) { $rslide.addClass('browserFullScreen'); } else { $rslide.removeClass('browserFullScreen'); } }) 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":""}) $("#main_pic").height(picHeight ); }else{ $("#main_pic").height(wHeight); // $img.height("100%"); $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'); $img.fadeOut(200,function(){ $img.attr({"src":dom.attr("data-content"),"height":picHeight+"px"}); $img.fadeIn(200); if($rslide.hasClass("fullscreen")){ $img.css({"padding":($rslide.height()-$img.height())/2}) } $slidelist.stop().animate({'height':'0px'}, 300); $slidelist.find("ul").hide(); if(rcom.getInternetExplorerVersion() == -1){ if(pageurl!=window.location){ window.history.pushState({path:pageurl},'',pageurl); } }else{ window.location.hash = pageurl; } // $(".slideinfo b.info").text(imageArray[imagecount].title); if($('.bt-tag').hasClass("active")) updatePhotoTag(); $(".slideinfo .info").text(imageArray[imagecount].description); 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; } $(".navN").attr({"href":imageArray[next]._id,"data-content":imageArray[next].file.url}); $(".navP").attr({"href":imageArray[prev]._id,"data-content":imageArray[prev].file.url}); }; if(imageArray.length > 1) updateNavigation(); } var preparestage = function(albumid){ $.getJSON("../albums/"+albumid+"/imgs",function(album){ 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]+"/"; } } window.location.href = url; } var albumid = $("#main_pic").attr("data-content"); g.albumArea.find(".bt-back").attr("href","../albums/"+albumid); g.albumArea.find(".bt-edit").attr("href","../albums/"+albumid+"/edit"); g.albumArea.css("margin-bottom","0"); picHeight = $(window).height() - ($("#orbit-bar").outerHeight() + $("#orbit_gallery .form-actions").outerHeight()); preparestage(albumid); } this.editAlbum = function(id){ var bindHandlers = function(){ $(".nav .nav-tabs a").click(function(){ $(".tab_content .tab-pane").hide(); }) $(".description_loader .edit_fn .bt-cover").click(function(){ $(".bt-cover").removeClass("setcover active btn-primary"); $(".bt-cover span").removeClass("icon-white icon-star").addClass("icon-star-empty"); $(this).addClass("setcover active btn-primary"); $(this).find("span").removeClass("icon-star-empty").addClass("icon-white icon-star"); $.post("set_cover",{"imageid":$(this).attr("for")}); }) $(".description_loader .edit_fn .bt-dels").click(function(){ $(this) .toggleClass("setdelete btn-danger active") .find('span').toggleClass('icon-white'); if($(".description_loader .edit_fn .setdelete").length > 0) g.albumArea.find(".rghead .rgfn .bt-save").show(); if($(this).hasClass("active")){ $(this).parent().parent().find("input.del_field").val(true); }else{ $(this).parent().parent().find("input.del_field").val(false); } delete_cover(); }) var delete_cover = function(){ if($(".description_loader .setcover").parent().find(".bt-dels").hasClass("active")){ $("input.del_cover").val(true); }else{ $("input.del_cover").val(false); } } var current_element_for_tags = null; var current_element_no = null; $('.bt-tag').click(function(){ var has_class = false; if($(this).hasClass("active")) has_class = true; $('.bt-tag').removeClass("active"); $(this).toggleClass("active"); var count = 0; $('.bt-tag').each(function(){ if($(this).hasClass("active")) count++; }) if(has_class){ $(this).removeClass("active"); count = 0; } var $tag_panel = $('#tag_panel'), tag_panel_position = 0; if(count == 1) tag_panel_position = 0 else if(count == 0){ if( $tag_panel.css('right') == '0px' ){ tag_panel_position = -200; } } $tag_panel.animate({'right':tag_panel_position}, 300); g.albumArea .delay(200) .animate({'margin-right':tag_panel_position+200},300); current_element_for_tags = $(this).attr("href"); if(count == 1){ current_element_no = $(this).parent().attr("no"); if(imageTagArray[current_element_no].id == current_element_for_tags){ g.tagList.find("input").attr("checked",false); for(tag in imageTagArray[current_element_no].tags){ g.tagList.find("li[data-content="+imageTagArray[current_element_no].tags[tag]+"] input").attr("checked",true); } } } return false; }); g.albumArea.find("#tag_search_box").keyup(function(e){ sval = $(this).val(); if(sval == "<%= I18n.t('gallery.search_tags') %>") sval = ""; sval = sval.replace(/(^\s*)|(\s*$)/g,''); if(sval){ var re1 = new RegExp("^[\u4E00-\uFA29]*$"); //Chinese character range var re2 = new RegExp("^[\uE7C7-\uE7F3]*$"); if ((re1.test(sval) && (re2.test(sval)))){ $("#gallery_tag_list li span:not(:contains("+sval+"))").parent().slideUp(); }else{ $("#gallery_tag_list li span:not(:containsi("+sval+"))").parent().slideUp(); } }else{ $("#gallery_tag_list li").slideDown(); } }) g.albumArea.find("#tag_panel .bt-save").click(function(){ g.saveTags(current_element_for_tags,"pic",function(tagids){ imageTagArray[current_element_no].tags = tagids; }) }) var tempval; $(".txtchange").focus(function(){ tempval = $(this).val(); }).keyup(function(){ if($(this).val() != tempval) g.albumArea.find(".rghead .rgfn .bt-save").show(); }) // g.albumArea.find(".rghead .rgfn .bt-delete").click(function(){ // var deleteurl = $(this).attr("href"); // var images_to_delete = new Array(); // var delete_cover = false; // var doms_to_delete = new Array(); // var thiscover = $(".description_loader .edit_fn .setcover").attr("for"); // $(".description_loader .edit_fn .bt-dels").each(function(){ // if($(this).hasClass("setdelete")){ // images_to_delete.push($(this).attr("href")); // $(".tab_content .rgphoto_edit[data-content="+$(this).attr("href")+"]").each(function(){ // doms_to_delete.push($(this)); // }) // if(thiscover == $(this).attr("href")) // delete_cover = true; // } // }) // if(confirm("Deleting "+images_to_delete.length+" image(s)?")){ // $.ajax({ // data : {"images":images_to_delete,"delete_cover":delete_cover}, // type : "DELETE", // url : deleteurl+"/"+id, // have to ask chris about delete resource // success : function(){ // for(dom in doms_to_delete){ // doms_to_delete[dom].hide("slide",function(){$(this).remove();}) // } // g.albumArea.find(".rghead .rgfn .bt-delete").hide(); // } // }) // } // }) } g.albumArea.addClass('o_album_edit'); var imageTagArray = null; $.getJSON("images_tags",function(data){ imageTagArray = eval(data); }) bindHandlers(); } this.saveTags = function(id,tagsfor,callbackFn){ var tagids = new Array(); g.tagList.find("li input:checked").each(function(){ tagids.push($(this).parent().attr("data-content")); }) $.post("../save_tags",{"id":id,"tag":tagsfor,"tids":tagids},function(){ if(typeof callbackFn == "function") callbackFn.call(this,tagids); }) } } galleryAPI.prototype.locale = "en";