347 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			347 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
/*
 | 
						|
 * jQuery pageSlide
 | 
						|
 * Version 2.0
 | 
						|
 * http://srobbin.com/jquery-pageslide/
 | 
						|
 *
 | 
						|
 * jQuery Javascript plugin which slides a webpage over to reveal an additional interaction pane.
 | 
						|
 *
 | 
						|
 * Copyright (c) 2011 Scott Robbin (srobbin.com)
 | 
						|
 * Dual licensed under the MIT and GPL licenses.
 | 
						|
*/
 | 
						|
 | 
						|
(function($){
 | 
						|
    // Convenience vars for accessing elements
 | 
						|
    var $body = $('#main-wrap'),
 | 
						|
        $pageslide = $('#pageslide'),
 | 
						|
        $viewPage = $('#view-page');
 | 
						|
    
 | 
						|
    var _sliding = false,   // Mutex to assist closing only once
 | 
						|
        _lastCaller;        // Used to keep track of last element to trigger pageslide
 | 
						|
    
 | 
						|
	// If the pageslide element doesn't exist, create it
 | 
						|
    if( $pageslide.length == 0 ) {
 | 
						|
         $pageslide = $('<div />').attr( 'id', 'pageslide' )
 | 
						|
                                  .css( 'display', 'none' )
 | 
						|
                                  .appendTo( $('#main-wrap') );
 | 
						|
    }
 | 
						|
    
 | 
						|
    /*
 | 
						|
     * Private methods 
 | 
						|
     */
 | 
						|
    function _load( url, useIframe ) {
 | 
						|
        // Are we loading an element from the page or a URL?
 | 
						|
        
 | 
						|
        if ( url.indexOf("#") === 0 ) {                
 | 
						|
            // Load a page element
 | 
						|
            $(url).clone(true).appendTo( $pageslide.empty() ).show();
 | 
						|
            if($('#items').length) {
 | 
						|
                $pageslide.css({'width': '324px'});
 | 
						|
            } else {
 | 
						|
                $pageslide.css({'width': '264px'});
 | 
						|
            }
 | 
						|
        } else {
 | 
						|
            // Load a URL. Into an iframe?
 | 
						|
            if( useIframe ) {
 | 
						|
                var iframe = $("<iframe />").attr({
 | 
						|
                                                src: url,
 | 
						|
                                                frameborder: 0,
 | 
						|
                                                hspace: 0
 | 
						|
                                            })
 | 
						|
                                            .css({
 | 
						|
                                                width: "100%",
 | 
						|
                                                height: "100%"
 | 
						|
                                            });
 | 
						|
                
 | 
						|
                $pageslide.html( iframe );
 | 
						|
            } else {
 | 
						|
                $viewPage.find('.content').load(url, function(){
 | 
						|
                    $viewPage.clone(true).appendTo( $pageslide.empty() ).show();
 | 
						|
                });
 | 
						|
                $(window).width() > 1600 ? $pageslide.css({'width': '1024px'}) : $pageslide.css({'width': '953px'});
 | 
						|
                // $pageslide.load( url );
 | 
						|
            }
 | 
						|
            
 | 
						|
            $pageslide.data( 'localEl', false );
 | 
						|
            
 | 
						|
        }
 | 
						|
    }
 | 
						|
    
 | 
						|
    // Function that controls opening of the pageslide
 | 
						|
    function _start( direction, speed ) {
 | 
						|
        var slideWidth,
 | 
						|
            bodyAnimateIn = {},
 | 
						|
            slideAnimateIn = {};
 | 
						|
        // If the slide is open or opening, just ignore the call
 | 
						|
        if( $pageslide.is(':visible') || _sliding ) return;	        
 | 
						|
        _sliding = true;
 | 
						|
                                                                    
 | 
						|
        switch( direction ) {
 | 
						|
            case 'left':
 | 
						|
                if($(window).width() > 1600) {
 | 
						|
                    $pageslide.css({'width': '1024px'});
 | 
						|
                    slideWidth = $pageslide.outerWidth( true );
 | 
						|
                    bodyAnimateIn['width'] = '-=' + slideWidth;
 | 
						|
                } else {
 | 
						|
                    $pageslide.css({'width': '953px'});
 | 
						|
                    slideWidth = $pageslide.outerWidth( true );
 | 
						|
                }
 | 
						|
                
 | 
						|
                $pageslide.css({ left: 'auto', right: '-' + slideWidth + 'px' });
 | 
						|
                slideAnimateIn['right'] = '+=' + slideWidth;
 | 
						|
 | 
						|
 | 
						|
 | 
						|
                // bodyAnimateIn['margin-left'] = '-=' + slideWidth;
 | 
						|
 | 
						|
                // for Orbit ---> Fixed page does not move to the left
 | 
						|
                    if($('#items').length) {
 | 
						|
                        // bodyAnimateIn['padding-left'] = '+=' + slideWidth;
 | 
						|
                    }
 | 
						|
                //
 | 
						|
 | 
						|
                break;
 | 
						|
            default:
 | 
						|
                // Original
 | 
						|
                // $pageslide.css({ left: '-' + slideWidth + 'px', right: 'auto' });
 | 
						|
                // bodyAnimateIn['margin-left'] = '+=' + slideWidth;
 | 
						|
 | 
						|
                // for Orbit
 | 
						|
                    // if($('#items').length) {
 | 
						|
                    //     $pageslide.css({'width': '324px'});
 | 
						|
                    //     slideWidth = $pageslide.outerWidth( true );
 | 
						|
                    // } else {
 | 
						|
                    //     $pageslide.css({'width': '264px'});
 | 
						|
                    // }
 | 
						|
                    slideWidth = $pageslide.outerWidth( true );
 | 
						|
                    if($sidebarState && !$('#items').length) {
 | 
						|
                        $pageslide.css({ left: '-' + (slideWidth-241) + 'px', right: 'auto' });
 | 
						|
                    }else{
 | 
						|
                        $pageslide.css({ left: '-' + (slideWidth-61) + 'px', right: 'auto' });
 | 
						|
                    };
 | 
						|
 | 
						|
                
 | 
						|
                    bodyAnimateIn['margin-left'] = '+=' + slideWidth;
 | 
						|
                    // bodyAnimateIn['width'] = '-=' + slideWidth;
 | 
						|
                // 
 | 
						|
 | 
						|
                slideAnimateIn['left'] = '+=' + slideWidth;
 | 
						|
                break;
 | 
						|
        }
 | 
						|
                    
 | 
						|
        // Animate the slide, and attach this slide's settings to the element
 | 
						|
        console.log("d")
 | 
						|
        $body.animate(bodyAnimateIn, speed);
 | 
						|
        $pageslide.show()
 | 
						|
                  .animate(slideAnimateIn, speed, function() {
 | 
						|
                      _sliding = false;
 | 
						|
                  });
 | 
						|
    }
 | 
						|
      
 | 
						|
    /*
 | 
						|
     * Declaration 
 | 
						|
     */
 | 
						|
    $.fn.pageslide = function(options) {
 | 
						|
        var $elements = this,
 | 
						|
            $ua = navigator.userAgent,
 | 
						|
            event = ($ua.match(/iPad/i)||$ua.match(/iPhone/i)||$ua.match(/iPod/i)||$ua.match(/Android/)) ? "touchstart" : "click";
 | 
						|
        // On click
 | 
						|
        $elements.on(event, function(e) {
 | 
						|
            var $self = $(this),
 | 
						|
                settings = $.extend({ href: $self.attr('href') }, options);
 | 
						|
            
 | 
						|
            // Prevent the default behavior and stop propagation
 | 
						|
            e.preventDefault();
 | 
						|
            e.stopPropagation();
 | 
						|
            
 | 
						|
            if ( $pageslide.is(':visible') && $self[0] == _lastCaller ) {
 | 
						|
                // If we clicked the same element twice, toggle closed
 | 
						|
                $.pageslide.close();
 | 
						|
            } else {                 
 | 
						|
                // Open
 | 
						|
                $.pageslide( settings );
 | 
						|
 | 
						|
                // for Orbit
 | 
						|
 | 
						|
                    if($('#items').length) {
 | 
						|
                        $('.item-menu > a, .navbar-inner').removeClass("active");
 | 
						|
                        $(this).parents('.navbar-inner').addClass('active').end().addClass('active');
 | 
						|
                        if(!$.support.touch) {
 | 
						|
                            if($('.item-menu > a').hasClass('active')) {
 | 
						|
                                $('.item-menu').css({
 | 
						|
                                    'display': 'none',
 | 
						|
                                });
 | 
						|
                                $(this).parents('.item-menu').css({
 | 
						|
                                    'display': 'inline-block',
 | 
						|
                                });
 | 
						|
                            }
 | 
						|
                        }
 | 
						|
                        if($(this).hasClass('view-page')) {
 | 
						|
                            pageID = $(this).data('pageId');
 | 
						|
                        }
 | 
						|
                    } else if($('.tags-groups').length) {
 | 
						|
                        $(this).parents('li').addClass("active").siblings().removeClass("active").parent('ul').siblings().children('li').removeClass("active");
 | 
						|
                    } else {
 | 
						|
                        $(this).parents("tr").addClass("active").siblings().removeClass("active");;
 | 
						|
                    }
 | 
						|
                    $pageslide.focusFirstField(); // focus first form
 | 
						|
 | 
						|
                    setTimeout(setScroll, 300);
 | 
						|
                // 
 | 
						|
 | 
						|
                // Record the last element to trigger pageslide
 | 
						|
                _lastCaller = $self[0];
 | 
						|
            }
 | 
						|
        });                   
 | 
						|
	};
 | 
						|
	
 | 
						|
	/*
 | 
						|
     * Default settings 
 | 
						|
     */
 | 
						|
    $.fn.pageslide.defaults = {
 | 
						|
        speed:      300,        // Accepts standard jQuery effects speeds (i.e. fast, normal or milliseconds)
 | 
						|
        direction:  'right',    // Accepts 'left' or 'right'
 | 
						|
        modal:      false,      // If set to true, you must explicitly close pageslide using $.pageslide.close();
 | 
						|
        iframe:     false,       // By default, linked pages are loaded into an iframe. Set this to false if you don't want an iframe.
 | 
						|
        href:       null        // Override the source of the content. Optional in most cases, but required when opening pageslide programmatically.
 | 
						|
    };
 | 
						|
	
 | 
						|
	/*
 | 
						|
     * Public methods 
 | 
						|
     */
 | 
						|
	
 | 
						|
	// Open the pageslide
 | 
						|
	$.pageslide = function( options ) {	    
 | 
						|
	    // Extend the settings with those the user has provided
 | 
						|
        var settings = $.extend({}, $.fn.pageslide.defaults, options);
 | 
						|
	    
 | 
						|
	    // Are we trying to open in different direction?
 | 
						|
        // if( $pageslide.is(':visible') && $pageslide.data( 'direction' ) != settings.direction) {
 | 
						|
        if( $pageslide.is(':visible')) {
 | 
						|
            $.pageslide.close(function(){
 | 
						|
                _load( settings.href, settings.iframe );
 | 
						|
                _start( settings.direction, settings.speed );
 | 
						|
            });
 | 
						|
        } else {                
 | 
						|
            _load( settings.href, settings.iframe );
 | 
						|
            if( $pageslide.is(':hidden') ) {
 | 
						|
                _start( settings.direction, settings.speed );
 | 
						|
            }
 | 
						|
        }
 | 
						|
        $pageslide.data( settings );
 | 
						|
 | 
						|
 | 
						|
        // for Orbit
 | 
						|
            if($('#add-tags').length) {
 | 
						|
                $('.set_new').addClass('active in').siblings().removeClass('active in');
 | 
						|
                $('#pageslide .select_default .search-query').attr('id','filter-default-tag')
 | 
						|
                $('#filter-default-tag').fastLiveFilter('.add-default-tags-list', '.filter-item', '.tag');
 | 
						|
                $('.add-default-tags-list .filter-item').removeClass('mark');
 | 
						|
            }
 | 
						|
        // 
 | 
						|
	}
 | 
						|
	
 | 
						|
	// Close the pageslide
 | 
						|
	$.pageslide.close = function( callback ) {
 | 
						|
        var $pageslide = $('#pageslide'),
 | 
						|
            slideWidth,
 | 
						|
            speed = $pageslide.data( 'speed' ),
 | 
						|
            bodyAnimateIn = {},
 | 
						|
            slideAnimateIn = {}
 | 
						|
            	        
 | 
						|
        // If the slide isn't open, just ignore the call
 | 
						|
        if( $pageslide.is(':hidden') || _sliding ) return;	        
 | 
						|
        _sliding = true;
 | 
						|
        
 | 
						|
        switch( $pageslide.data( 'direction' ) ) {
 | 
						|
            case 'left':
 | 
						|
                if($(window).width() > 1600) {
 | 
						|
                    $pageslide.css({'width': '1024px'});
 | 
						|
                } else {
 | 
						|
                    $pageslide.css({'width': '953px'});
 | 
						|
                }
 | 
						|
                slideWidth = $pageslide.outerWidth( true );
 | 
						|
                // bodyAnimateIn['margin-left'] = '+=' + slideWidth;
 | 
						|
                if($(window).width() > 1600) {
 | 
						|
                    bodyAnimateIn['width'] = '+=' + slideWidth;
 | 
						|
                }
 | 
						|
 | 
						|
                // for Orbit ---> Fixed page does not move to the left
 | 
						|
                    if($('#items').length) {
 | 
						|
                        bodyAnimateIn['padding-left'] = '-=' + slideWidth;
 | 
						|
                    }
 | 
						|
                //
 | 
						|
                
 | 
						|
                slideAnimateIn['right'] = '-=' + slideWidth;
 | 
						|
                break;
 | 
						|
            default:
 | 
						|
                // Original
 | 
						|
                // bodyAnimateIn['margin-left'] = '-=' + slideWidth;
 | 
						|
                // bodyAnimateIn['width'] = '+=' + slideWidth;
 | 
						|
 | 
						|
                // for Orbit
 | 
						|
                    // if($('#items').length) {
 | 
						|
                    //     $pageslide.css({'width': '324px'});
 | 
						|
                    //     slideWidth = $pageslide.outerWidth( true );
 | 
						|
                    // } else {
 | 
						|
                    //     $pageslide.css({'width': '264px'});
 | 
						|
                    // }
 | 
						|
                    slideWidth = $pageslide.outerWidth( true );
 | 
						|
                    bodyAnimateIn['margin-left'] = '-=' + slideWidth;
 | 
						|
                    // bodyAnimateIn['width'] = '+=' + slideWidth;
 | 
						|
                    if($pageslide.find('.preview').length) {
 | 
						|
                        $pageslide.find('.preview').cycle('destroy');
 | 
						|
                        $pageslide.find('.preview img').removeAttr('style');
 | 
						|
                    }
 | 
						|
                // 
 | 
						|
 | 
						|
                slideAnimateIn['left'] = '-=' + slideWidth;
 | 
						|
                break;
 | 
						|
        }
 | 
						|
 | 
						|
        // for Orbit
 | 
						|
            if($('#items').length) {
 | 
						|
                $(".navbar-inner").removeClass("active");
 | 
						|
                $('.item-menu > a, .navbar-inner').removeClass("active");
 | 
						|
                if(!$.support.touch) {
 | 
						|
                    $('.item-menu').css({
 | 
						|
                        'display': 'none',
 | 
						|
                    });
 | 
						|
                }
 | 
						|
            } else if($('.tags-groups').length) {
 | 
						|
                $('.tags-groups').children('li').removeClass("active");
 | 
						|
            } else {
 | 
						|
                $("tr").removeClass("active");
 | 
						|
            };
 | 
						|
        // 
 | 
						|
 | 
						|
        $pageslide.animate(slideAnimateIn, speed);
 | 
						|
        $body.animate(bodyAnimateIn, speed, function() {
 | 
						|
            $pageslide.hide();
 | 
						|
            _sliding = false;
 | 
						|
            if( typeof callback != 'undefined' ) callback();
 | 
						|
            $body.css({'width': 'auto'});
 | 
						|
        });
 | 
						|
    }
 | 
						|
	
 | 
						|
	/* Events */
 | 
						|
	
 | 
						|
	// Don't let clicks to the pageslide close the window
 | 
						|
    $pageslide.click(function(e) {
 | 
						|
        e.stopPropagation();
 | 
						|
    });
 | 
						|
 | 
						|
	// Close the pageslide if the document is clicked or the users presses the ESC key, unless the pageslide is modal
 | 
						|
	$(document).bind('click keyup', function(e) {
 | 
						|
	    // If this is a keyup event, let's see if it's an ESC key
 | 
						|
        if( e.type == "keyup" && e.keyCode != 27) return;
 | 
						|
	    
 | 
						|
	    // Make sure it's visible, and we're not modal	    
 | 
						|
	    if( $pageslide.is( ':visible' ) && !$pageslide.data( 'modal' ) ) {	        
 | 
						|
	        $.pageslide.close();
 | 
						|
	    }
 | 
						|
	});
 | 
						|
    function setScroll(){
 | 
						|
        $pageslide.children('.nano').nanoScroller({ scrollTop: 0, iOSNativeScrolling: true }); // set nano scroll
 | 
						|
    };
 | 
						|
	
 | 
						|
})(jQuery); |