wp/wp-admin/js/theme.js
author ymh <ymh.work@gmail.com>
Wed, 06 Nov 2013 03:21:17 +0000
changeset 0 d970ebf37754
child 5 5e2f62d02dcd
permissions -rw-r--r--
first import
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
/**
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
 * Theme Browsing
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
 *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     4
 * Controls visibility of theme details on manage and install themes pages.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
 */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     6
jQuery( function($) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     7
	$('#availablethemes').on( 'click', '.theme-detail', function (event) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     8
		var theme   = $(this).closest('.available-theme'),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     9
			details = theme.find('.themedetaildiv');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
		if ( ! details.length ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    12
			details = theme.find('.install-theme-info .theme-details');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    13
			details = details.clone().addClass('themedetaildiv').appendTo( theme ).hide();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    15
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    16
		details.toggle();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    17
		event.preventDefault();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    18
	});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    19
});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    21
/**
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    22
 * Theme Browser Thickbox
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    23
 *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
 * Aligns theme browser thickbox.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    25
 */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
var tb_position;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
jQuery(document).ready( function($) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
	tb_position = function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    29
		var tbWindow = $('#TB_window'), width = $(window).width(), H = $(window).height(), W = ( 1040 < width ) ? 1040 : width, adminbar_height = 0;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    30
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    31
		if ( $('body.admin-bar').length )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    32
			adminbar_height = 28;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    33
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    34
		if ( tbWindow.size() ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    35
			tbWindow.width( W - 50 ).height( H - 45 - adminbar_height );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    36
			$('#TB_iframeContent').width( W - 50 ).height( H - 75 - adminbar_height );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    37
			tbWindow.css({'margin-left': '-' + parseInt( ( ( W - 50 ) / 2 ), 10 ) + 'px'});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    38
			if ( typeof document.body.style.maxWidth != 'undefined' )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    39
				tbWindow.css({'top': 20 + adminbar_height + 'px','margin-top':'0'});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    40
		};
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    41
	};
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    42
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    43
	$(window).resize(function(){ tb_position(); });
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    44
});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    45
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    46
/**
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    47
 * Theme Install
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    48
 *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    49
 * Displays theme previews on theme install pages.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    50
 */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    51
jQuery( function($) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    52
	if( ! window.postMessage )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    53
		return;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    54
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    55
	var preview = $('#theme-installer'),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    56
		info    = preview.find('.install-theme-info'),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    57
		panel   = preview.find('.wp-full-overlay-main'),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    58
		body    = $( document.body );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    59
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    60
	preview.on( 'click', '.close-full-overlay', function( event ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    61
		preview.fadeOut( 200, function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    62
			panel.empty();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    63
			body.removeClass('theme-installer-active full-overlay-active');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    64
		});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    65
		event.preventDefault();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    66
	});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    67
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    68
	preview.on( 'click', '.collapse-sidebar', function( event ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    69
		preview.toggleClass( 'collapsed' ).toggleClass( 'expanded' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    70
		event.preventDefault();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    71
	});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    72
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    73
	$('#availablethemes').on( 'click', '.install-theme-preview', function( event ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    74
		var src;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    75
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    76
		info.html( $(this).closest('.installable-theme').find('.install-theme-info').html() );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    77
		src = info.find( '.theme-preview-url' ).val();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    78
		panel.html( '<iframe src="' + src + '" />');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    79
		preview.fadeIn( 200, function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    80
			body.addClass('theme-installer-active full-overlay-active');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    81
		});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    82
		event.preventDefault();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    83
	});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    84
});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    85
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    86
var ThemeViewer;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    87
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    88
(function($){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    89
	ThemeViewer = function( args ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    90
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    91
		function init() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    92
			$( '#filter-click, #mini-filter-click' ).unbind( 'click' ).click( function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    93
				$( '#filter-click' ).toggleClass( 'current' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    94
				$( '#filter-box' ).slideToggle();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    95
				$( '#current-theme' ).slideToggle( 300 );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    96
				return false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    97
			});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    98
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    99
			$( '#filter-box :checkbox' ).unbind( 'click' ).click( function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   100
				var count = $( '#filter-box :checked' ).length,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   101
					text  = $( '#filter-click' ).text();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   102
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   103
				if ( text.indexOf( '(' ) != -1 )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   104
					text = text.substr( 0, text.indexOf( '(' ) );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   105
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   106
				if ( count == 0 )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   107
					$( '#filter-click' ).text( text );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   108
				else
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   109
					$( '#filter-click' ).text( text + ' (' + count + ')' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   110
			});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   111
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   112
			/* $('#filter-box :submit').unbind( 'click' ).click(function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   113
				var features = [];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   114
				$('#filter-box :checked').each(function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   115
					features.push($(this).val());
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   116
				});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   117
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   118
				listTable.update_rows({'features': features}, true, function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   119
					$( '#filter-click' ).toggleClass( 'current' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   120
					$( '#filter-box' ).slideToggle();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   121
					$( '#current-theme' ).slideToggle( 300 );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   122
				});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   123
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   124
				return false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   125
			}); */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   126
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   127
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   128
		// These are the functions we expose
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   129
		var api = {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   130
			init: init
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   131
		};
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   132
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   133
	return api;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   134
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   135
})(jQuery);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   136
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   137
jQuery( document ).ready( function($) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   138
	theme_viewer = new ThemeViewer();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   139
	theme_viewer.init();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   140
});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   141
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   142
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   143
/**
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   144
 * Class that provides infinite scroll for Themes admin screens
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   145
 *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   146
 * @since 3.4
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   147
 *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   148
 * @uses ajaxurl
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   149
 * @uses list_args
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   150
 * @uses theme_list_args
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   151
 * @uses $('#_ajax_fetch_list_nonce').val()
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   152
* */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   153
var ThemeScroller;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   154
(function($){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   155
	ThemeScroller = {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   156
		querying: false,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   157
		scrollPollingDelay: 500,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   158
		failedRetryDelay: 4000,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   159
		outListBottomThreshold: 300,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   160
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   161
		/**
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   162
		 * Initializer
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   163
		 *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   164
		 * @since 3.4
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   165
		 * @access private
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   166
		 */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   167
		init: function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   168
			var self = this;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   169
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   170
			// Get out early if we don't have the required arguments.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   171
			if ( typeof ajaxurl === 'undefined' ||
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   172
				 typeof list_args === 'undefined' ||
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   173
				 typeof theme_list_args === 'undefined' ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   174
					$('.pagination-links').show();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   175
					return;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   176
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   177
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   178
			// Handle inputs
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   179
			this.nonce = $('#_ajax_fetch_list_nonce').val();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   180
			this.nextPage = ( theme_list_args.paged + 1 );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   181
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   182
			// Cache jQuery selectors
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   183
			this.$outList = $('#availablethemes');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   184
			this.$spinner = $('div.tablenav.bottom').children( '.spinner' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   185
			this.$window = $(window);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   186
			this.$document = $(document);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   187
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   188
			/**
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   189
			 * If there are more pages to query, then start polling to track
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   190
			 * when user hits the bottom of the current page
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   191
			 */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   192
			if ( theme_list_args.total_pages >= this.nextPage )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   193
				this.pollInterval =
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   194
					setInterval( function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   195
						return self.poll();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   196
					}, this.scrollPollingDelay );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   197
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   198
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   199
		/**
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   200
		 * Checks to see if user has scrolled to bottom of page.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   201
		 * If so, requests another page of content from self.ajax().
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   202
		 *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   203
		 * @since 3.4
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   204
		 * @access private
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   205
		 */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   206
		poll: function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   207
			var bottom = this.$document.scrollTop() + this.$window.innerHeight();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   208
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   209
			if ( this.querying ||
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   210
				( bottom < this.$outList.height() - this.outListBottomThreshold ) )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   211
				return;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   212
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   213
			this.ajax();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   214
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   215
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   216
		/**
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   217
		 * Applies results passed from this.ajax() to $outList
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   218
		 *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   219
		 * @since 3.4
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   220
		 * @access private
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   221
		 *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   222
		 * @param results Array with results from this.ajax() query.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   223
		 */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   224
		process: function( results ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   225
			if ( results === undefined ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   226
				clearInterval( this.pollInterval );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   227
				return;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   228
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   229
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   230
			if ( this.nextPage > theme_list_args.total_pages )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   231
				clearInterval( this.pollInterval );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   232
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   233
			if ( this.nextPage <= ( theme_list_args.total_pages + 1 ) )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   234
				this.$outList.append( results.rows );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   235
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   236
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   237
		/**
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   238
		 * Queries next page of themes
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   239
		 *
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   240
		 * @since 3.4
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   241
		 * @access private
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   242
		 */
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   243
		ajax: function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   244
			var self = this;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   245
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   246
			this.querying = true;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   247
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   248
			var query = {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   249
				action: 'fetch-list',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   250
				paged: this.nextPage,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   251
				s: theme_list_args.search,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   252
				tab: theme_list_args.tab,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   253
				type: theme_list_args.type,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   254
				_ajax_fetch_list_nonce: this.nonce,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   255
				'features[]': theme_list_args.features,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   256
				'list_args': list_args
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   257
			};
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   258
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   259
			this.$spinner.show();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   260
			$.getJSON( ajaxurl, query )
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   261
				.done( function( response ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   262
					self.nextPage++;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   263
					self.process( response );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   264
					self.$spinner.hide();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   265
					self.querying = false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   266
				})
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   267
				.fail( function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   268
					self.$spinner.hide();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   269
					self.querying = false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   270
					setTimeout( function() { self.ajax(); }, self.failedRetryDelay );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   271
				});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   272
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   273
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   274
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   275
	$(document).ready( function($) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   276
		ThemeScroller.init();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   277
	});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   278
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   279
})(jQuery);