관리-도구
편집 파일: slideshow.crushFTP.js
var error_NoItemMessage = "<h3 style='text-align:center;'>No items available, or problem while fetching records.</h3>"; function resetDimensions() { var h = window.innerHeight ? window.innerHeight : $(window).height(); var w = $(window).width(); var container_w = $("#container").width(); var _h = h * 0.60; $("div.slideshow").css({"min-height":_h + "px"}); $("div.slideshow").find("span").css({"height":_h + "px","width":"auto"}); $("div.slideshow").find("img").css({"height":_h + "px","width":"auto"}); if($.browser.mozilla) { $("div.slideshow img").reflect({height:0.1,ImageHeight:_h}); } var thumb_w = 165; var thumbcount = (Math.round(container_w /thumb_w)) - 1; thumbcount = thumbcount <=0 ? 1: thumbcount; if(window.cfgallery && window.cfgallery.numThumbs){ if(window.cfgallery.numThumbs!=thumbcount) { window.cfgallery.numThumbs = thumbcount; window.cfgallery.rebuildThumbs(); } } var thumbsContainer = $("#thumbs"); var margin = (Math.round(container_w /2)) - (thumbcount * 1.7) - 25; thumbsContainer.css({"left":"50%","margin-left":"-" + margin + "px"}); } function resetHeightForSlideshowOnlyMode() { var _ssOnly = (top != self); if(_ssOnly && window.parent && window.parent.slideshowOnly) { $("#footerss").hide(); window.parent.resetSlideShowDimensions($(document).height() + 20); } else { $("#footerss").show(); } } function fetchItems(path) { var params = [['name', 'name'], ['path', 'href_path'], ['desc', 'keywords'], ['date', 'dateformatted'], ['size', 'sizeFormatted'], ['privs', 'privs']]; var basePath = '/WebInterface/function/'; var image; $("body").ajaxError(function(event, request, settings){ $("#pageLoadIndicator").replaceWith(error_NoItemMessage); $.unblockUI(); }); $.post(basePath, {command: 'getXMLListing', path: path}, function(data){ $('div.mainProcessIndicator').hide(); $.unblockUI(); var files = new Array(); if(data) { $(data).find('listing_subitem').each(function(){ if($(this).find('privs').text().search(/slideshow/i) == -1) return; if($(this).find('preview').text() == 'false') return; row = new Object(); for(i in params) row[params[i][0]] = $(this).find(params[i][1]).text(); row['enabled'] = true; row['thumb'] = new Image(); row['thumb'].src = basePath + '?command=getPreview&size=2&path=' + row['path']; row['imageSrc'] = basePath + '?command=getPreview&size=3&path=' + row['path']; row["fileName"] = row['path']; files.push(row); }); var _html = []; var _itemHTML="<li><a class=\"thumb\" name=\"NAME\" privs=\"PRIVS\" href=\"HREF\" title=\"TITLE\"><img src=\"SRC\" alt=\"TITLE\" /></a><div class=\"caption\"><div class=\"image-title\">TITLE</div></div></li>"; for(var item = 0;item<files.length;item++) { var curItem = files[item]; var _generatedHTML = _itemHTML; _generatedHTML = _generatedHTML.replace(/NAME/g, curItem.name); _generatedHTML = _generatedHTML.replace(/HREF/g, curItem.imageSrc); _generatedHTML = _generatedHTML.replace(/TITLE/g, curItem.name); _generatedHTML = _generatedHTML.replace(/SRC/g, curItem.thumb.src); _generatedHTML = _generatedHTML.replace(/DESCRIPTION/g, curItem.desc); _generatedHTML = _generatedHTML.replace(/PRIVS/g, curItem.privs); _html.push(_generatedHTML); } $("ul.thumbs").empty().append(_html.join("")); if(_html.length>0) { $("#pageLoadIndicator").hide(); $.unblockUI(); initSlideshow(); } else { $("#pageLoadIndicator").replaceWith(error_NoItemMessage).show(); $.unblockUI(); showActionControls(); } } else { $("#pageLoadIndicator").replaceWith(error_NoItemMessage).show(); $.unblockUI(); showActionControls(); } }, 'xml'); $(window).resize(function(){ resetDimensions(); }); } function setSlideshowDelay(sec) { if(window.cfgallery && window.cfgallery.delay){ window.cfgallery.delay = sec * 1000; } window.delaySlider.parent().find(".delay").remove() window.delaySlider.parent().append("<div class='delay'>(Delay "+ sec +" seconds)</div>"); } function initSlideshow() { // We only want these styles applied when javascript is enabled $('div.content').css('display', 'block'); // Initially set opacity on thumbs and add // additional styling for hover effect on thumbs var onMouseOutOpacity = 0.67; $('#thumbs ul.thumbs li').opacityrollover({ mouseOutOpacity: onMouseOutOpacity, mouseOverOpacity: 1.0, fadeSpeed: 'fast', exemptionSelector: '.selected' }); window.delaySlider = $("#slider").slider({ min: 1, max: 15, value : 3, slide: function (event, ui) { setSlideshowDelay(ui.value); } }); $("#slider").hide(); // Initialize Advanced Galleriffic Gallery window.cfgallery = $('#thumbs').galleriffic({ delay: 3000, numThumbs: 5, preloadAhead: 10, enableTopPager: false, enableBottomPager: true, maxPagesToShow: 5, imageContainerSel: '#slideshow', controlsContainerSel: '#controls', captionContainerSel: '#caption', loadingContainerSel: '#loading', renderSSControls: true, renderNavControls: true, playLinkText: 'Play Slideshow', pauseLinkText: 'Pause Slideshow', prevLinkText: 'Previous Item', nextLinkText: 'Next Item', nextPageLinkText: 'Next ›', prevPageLinkText: '‹ Prev', autoStart: false, syncTransitions: false, defaultTransitionDuration: 0, onSlideChange: function(prevIndex, nextIndex) { // 'this' refers to the gallery, which is an extension of $('#thumbs') resetHeightForSlideshowOnlyMode(); this.find('ul.thumbs').children() .eq(prevIndex).fadeTo(0, 1).end() .eq(nextIndex).fadeTo(0, 1); showActionControls(nextIndex); // Update the photo index display $('div.photo-index').html('(Item '+ (nextIndex+1) +' of '+ this.data.length +")"); resetHeightForSlideshowOnlyMode(); }, onTransitionOut: function(slide, caption, isSync, callback) { resetHeightForSlideshowOnlyMode(); slide.fadeTo(this.getDefaultTransitionDuration(isSync), 0.0, callback); caption.fadeTo(this.getDefaultTransitionDuration(isSync), 0.0); resetHeightForSlideshowOnlyMode(); }, onTransitionIn: function(slide, caption, isSync) { resetHeightForSlideshowOnlyMode(); var duration = this.getDefaultTransitionDuration(isSync); slide.fadeTo(duration, 1.0, function(){ resetDimensions(); }); // Position the caption at the bottom of the image and set its opacity var slideImage = slide.find('img'); caption.width(slideImage.width()) .css({ 'bottom' : Math.floor((slide.height() - slideImage.outerHeight()) / 2), 'left' : Math.floor((slide.width() - slideImage.width()) / 2) + slideImage.outerWidth() - slideImage.width() }) .fadeTo(duration, 1); resetHeightForSlideshowOnlyMode(); }, onPageTransitionOut: function(callback) { this.fadeTo(0, 0.0, callback); resetHeightForSlideshowOnlyMode(); }, onPageTransitionIn: function() { /*var prevPageLink = this.find('a.prev').css('visibility', 'hidden'); var nextPageLink = this.find('a.next').css('visibility', 'hidden'); // Show appropriate next / prev page links if (this.displayedPage > 0) prevPageLink.css('visibility', 'visible'); var lastPage = this.getNumPages() - 1; if(lastPage<0)lastPage=0; if (this.displayedPage < lastPage) nextPageLink.css('visibility', 'visible');*/ this.fadeTo(0, 1.0); resetHeightForSlideshowOnlyMode(); } }); resetDimensions(); resetHeightForSlideshowOnlyMode(); var curImage = $(document).data("curImage"); if(curImage) { var curElem = $("#thumbs").find("img[alt='"+curImage+"']").closest("a"); if(!curElem.closest("li").hasClass("selected")) { curElem.click(); } } /**************** Event handlers for custom next / prev page links **********************/ cfgallery.find('a.prev').click(function(e) { cfgallery.previousPage(); e.preventDefault(); }); cfgallery.find('a.next').click(function(e) { cfgallery.nextPage(); e.preventDefault(); }); $('a.play').click(function(e) { $(this).blur(); e.preventDefault(); }); }; function bindActionControlsEvents() { var itemControls = $("#itemControls"); $(".refreshButtonSS",itemControls).unbind().click(function(){ initSlideShow(); }); $(".downloadButton",itemControls).unbind().click(function(){ var elem = $(this).data("curItem"); var curDir = $(document).data("curDir"); var path = curDir + elem.attr("title"); window.downloadItems(false,path); }); $(".uploadButton",itemControls).unbind().click(function(){ var elem = $(this).data("curItem"); window.performAction("upload"); return false; }); $(".deleteButton",itemControls).unbind().click(function(){ var elem = $(this).data("curItem"); var curDir = $(document).data("curDir"); var path = curDir + elem.attr("title"); if(confirm("Are you sure you wish to delete " + path + " ?\n" + "Once deleted it can not revert back")) { window.performDeleteAction(path, function(){ initSlideShow(); }); } }); $(".fullscreenButton",itemControls).unbind().click(function(){ var url = window.location; var w = screen.availWidth - 15; var h = screen.availHeight - 60; var opts = "location=no,menubar=no,scrollbars=no,status=no,toolbar=no,resizable=no,width=" + w +"px,height=" + h + "px"; var curImg = $(".selected a").attr("href"); curImg = curImg.replace(/#/g,""); if(url.toString().indexOf("#")>=0) { url = url + "^^^" + curImg; } else { url = url + "#/^^^" + curImg; } window.open(url, '', opts); if(window.parent.window.closeSlideshow) window.parent.window.closeSlideshow(); }); } function showActionControls(nextIndex) { var itemControls = $("#itemControls"); var privs = false; var item = []; try{ var $thumbs = $('ul.thumbs').children(); item = $thumbs.eq(nextIndex); item = item.find("a"); privs = item.attr("privs"); } catch(e){} if(privs) { var _delete = privs.indexOf("(delete)")>=0; var _write = privs.indexOf("(write)")>=0; var _download = privs.indexOf("(read)")>=0; var _fullscreen = (top != self); itemControls.show(); $(".downloadButton",itemControls).toggle(_download).data("curItem",item); $(".uploadButton",itemControls).toggle(_write).data("curItem",item); $(".deleteButton",itemControls).toggle(_delete).data("curItem",item); $(".fullscreenButton",itemControls).toggle(_fullscreen); } else { $(".downloadButton,.uploadButton,.deleteButton",itemControls).hide(); } } function slideshowStatusChange(flag) { if(!flag) { $("#slider").hide(); window.delaySlider.parent().find(".delay").remove(); } else { $("#slider").show(); window.delaySlider.parent().append("<div class='delay'>(Delay "+ window.delaySlider.slider("value") +" seconds)</div>"); } } function initSlideShow() { $.blockUI({ css: { border: 'none', padding: '15px', backgroundColor: '#fff', '-webkit-border-radius': '10px', '-moz-border-radius': '10px', opacity: .7, color: '#000', top : '5%' } }); var loc = document.location.hash; loc = loc.toString().replace("#", "") || "/"; var curImageIndex = loc.indexOf("^^^"); if(curImageIndex>=0) { var curImage = loc.substring(curImageIndex + 3, loc.length); $(document).data("curImage",curImage); loc = loc.replace("^^^"+curImage,""); } $(document).data("curDir",loc); fetchItems(escape(unescape(loc))); $(document).data("slideShowOnly",true); bindActionControlsEvents(); $('#filesContainer').fileTree({ root: loc, overrideFromHash: true, expandSpeed: 1000, collapseSpeed: 1000, multiFolder: true, customData: true }, function(link) { window.open(link); }); }