web/wp-admin/js/postbox.dev.js
author ymh <ymh.work@gmail.com>
Mon, 22 Mar 2010 16:36:28 +0100
changeset 5 ac511f1ccc8e
parent 1 0d28b7c10758
permissions -rw-r--r--
add hgignore
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1
0d28b7c10758 First commit
ymh
parents:
diff changeset
     1
var postboxes;
0d28b7c10758 First commit
ymh
parents:
diff changeset
     2
(function($) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
     3
	postboxes = {
0d28b7c10758 First commit
ymh
parents:
diff changeset
     4
		add_postbox_toggles : function(page,args) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
     5
			this.init(page,args);
0d28b7c10758 First commit
ymh
parents:
diff changeset
     6
			$('.postbox h3, .postbox .handlediv').click( function() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
     7
				var p = $(this).parent('.postbox'), id = p.attr('id');
0d28b7c10758 First commit
ymh
parents:
diff changeset
     8
				p.toggleClass('closed');
0d28b7c10758 First commit
ymh
parents:
diff changeset
     9
				postboxes.save_state(page);
0d28b7c10758 First commit
ymh
parents:
diff changeset
    10
				if ( id ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    11
					if ( !p.hasClass('closed') && $.isFunction(postboxes.pbshow) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
    12
						postboxes.pbshow(id);
0d28b7c10758 First commit
ymh
parents:
diff changeset
    13
					else if ( p.hasClass('closed') && $.isFunction(postboxes.pbhide) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
    14
						postboxes.pbhide(id);
0d28b7c10758 First commit
ymh
parents:
diff changeset
    15
				}
0d28b7c10758 First commit
ymh
parents:
diff changeset
    16
			} );
0d28b7c10758 First commit
ymh
parents:
diff changeset
    17
			$('.postbox h3 a').click( function(e) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    18
				e.stopPropagation();
0d28b7c10758 First commit
ymh
parents:
diff changeset
    19
			} );
0d28b7c10758 First commit
ymh
parents:
diff changeset
    20
			$('.hide-postbox-tog').click( function() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    21
				var box = $(this).val();
0d28b7c10758 First commit
ymh
parents:
diff changeset
    22
				if ( $(this).attr('checked') ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    23
					$('#' + box).show();
0d28b7c10758 First commit
ymh
parents:
diff changeset
    24
					if ( $.isFunction( postboxes.pbshow ) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
    25
						postboxes.pbshow( box );
0d28b7c10758 First commit
ymh
parents:
diff changeset
    26
				} else {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    27
					$('#' + box).hide();
0d28b7c10758 First commit
ymh
parents:
diff changeset
    28
					if ( $.isFunction( postboxes.pbhide ) )
0d28b7c10758 First commit
ymh
parents:
diff changeset
    29
						postboxes.pbhide( box );
0d28b7c10758 First commit
ymh
parents:
diff changeset
    30
				}
0d28b7c10758 First commit
ymh
parents:
diff changeset
    31
				postboxes.save_state(page);
0d28b7c10758 First commit
ymh
parents:
diff changeset
    32
			} );
0d28b7c10758 First commit
ymh
parents:
diff changeset
    33
			$('.columns-prefs input[type="radio"]').click(function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
    34
				var num = $(this).val(), i, el, p = $('#poststuff');
0d28b7c10758 First commit
ymh
parents:
diff changeset
    35
0d28b7c10758 First commit
ymh
parents:
diff changeset
    36
				if ( p.length ) { // write pages
0d28b7c10758 First commit
ymh
parents:
diff changeset
    37
					if ( num == 2 ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    38
						p.addClass('has-right-sidebar');
0d28b7c10758 First commit
ymh
parents:
diff changeset
    39
						$('#side-sortables').addClass('temp-border');
0d28b7c10758 First commit
ymh
parents:
diff changeset
    40
					} else if ( num == 1 ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    41
						p.removeClass('has-right-sidebar');
0d28b7c10758 First commit
ymh
parents:
diff changeset
    42
						$('#normal-sortables').append($('#side-sortables').children('.postbox'));
0d28b7c10758 First commit
ymh
parents:
diff changeset
    43
					}
0d28b7c10758 First commit
ymh
parents:
diff changeset
    44
				} else { // dashboard
0d28b7c10758 First commit
ymh
parents:
diff changeset
    45
					for ( i = 4; ( i > num && i > 1 ); i-- ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    46
						el = $('#' + colname(i) + '-sortables');
0d28b7c10758 First commit
ymh
parents:
diff changeset
    47
						$('#' + colname(i-1) + '-sortables').append(el.children('.postbox'));
0d28b7c10758 First commit
ymh
parents:
diff changeset
    48
						el.parent().hide();
0d28b7c10758 First commit
ymh
parents:
diff changeset
    49
					}
0d28b7c10758 First commit
ymh
parents:
diff changeset
    50
					for ( i = 1; i <= num; i++ ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    51
						el = $('#' + colname(i) + '-sortables');
0d28b7c10758 First commit
ymh
parents:
diff changeset
    52
						if ( el.parent().is(':hidden') )
0d28b7c10758 First commit
ymh
parents:
diff changeset
    53
							el.addClass('temp-border').parent().show();
0d28b7c10758 First commit
ymh
parents:
diff changeset
    54
					}
0d28b7c10758 First commit
ymh
parents:
diff changeset
    55
					$('.postbox-container:visible').css('width', 98/num + '%');
0d28b7c10758 First commit
ymh
parents:
diff changeset
    56
				}
0d28b7c10758 First commit
ymh
parents:
diff changeset
    57
				postboxes.save_order(page);
0d28b7c10758 First commit
ymh
parents:
diff changeset
    58
			});
0d28b7c10758 First commit
ymh
parents:
diff changeset
    59
0d28b7c10758 First commit
ymh
parents:
diff changeset
    60
			function colname(n) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    61
				switch (n) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    62
					case 1:
0d28b7c10758 First commit
ymh
parents:
diff changeset
    63
						return 'normal';
0d28b7c10758 First commit
ymh
parents:
diff changeset
    64
						break
0d28b7c10758 First commit
ymh
parents:
diff changeset
    65
					case 2:
0d28b7c10758 First commit
ymh
parents:
diff changeset
    66
						return 'side';
0d28b7c10758 First commit
ymh
parents:
diff changeset
    67
						break
0d28b7c10758 First commit
ymh
parents:
diff changeset
    68
					case 3:
0d28b7c10758 First commit
ymh
parents:
diff changeset
    69
						return 'column3';
0d28b7c10758 First commit
ymh
parents:
diff changeset
    70
						break
0d28b7c10758 First commit
ymh
parents:
diff changeset
    71
					case 4:
0d28b7c10758 First commit
ymh
parents:
diff changeset
    72
						return 'column4';
0d28b7c10758 First commit
ymh
parents:
diff changeset
    73
						break
0d28b7c10758 First commit
ymh
parents:
diff changeset
    74
					default:
0d28b7c10758 First commit
ymh
parents:
diff changeset
    75
						return '';
0d28b7c10758 First commit
ymh
parents:
diff changeset
    76
				}
0d28b7c10758 First commit
ymh
parents:
diff changeset
    77
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
    78
		},
0d28b7c10758 First commit
ymh
parents:
diff changeset
    79
0d28b7c10758 First commit
ymh
parents:
diff changeset
    80
		init : function(page, args) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    81
			$.extend( this, args || {} );
0d28b7c10758 First commit
ymh
parents:
diff changeset
    82
			$('#wpbody-content').css('overflow','hidden');
0d28b7c10758 First commit
ymh
parents:
diff changeset
    83
			$('.meta-box-sortables').sortable({
0d28b7c10758 First commit
ymh
parents:
diff changeset
    84
				placeholder: 'sortable-placeholder',
0d28b7c10758 First commit
ymh
parents:
diff changeset
    85
				connectWith: '.meta-box-sortables',
0d28b7c10758 First commit
ymh
parents:
diff changeset
    86
				items: '.postbox',
0d28b7c10758 First commit
ymh
parents:
diff changeset
    87
				handle: '.hndle',
0d28b7c10758 First commit
ymh
parents:
diff changeset
    88
				cursor: 'move',
0d28b7c10758 First commit
ymh
parents:
diff changeset
    89
				distance: 2,
0d28b7c10758 First commit
ymh
parents:
diff changeset
    90
				tolerance: 'pointer',
0d28b7c10758 First commit
ymh
parents:
diff changeset
    91
				forcePlaceholderSize: true,
0d28b7c10758 First commit
ymh
parents:
diff changeset
    92
				helper: 'clone',
0d28b7c10758 First commit
ymh
parents:
diff changeset
    93
				opacity: 0.65,
0d28b7c10758 First commit
ymh
parents:
diff changeset
    94
				start: function(e,ui) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    95
					$('body').css({
0d28b7c10758 First commit
ymh
parents:
diff changeset
    96
						WebkitUserSelect: 'none',
0d28b7c10758 First commit
ymh
parents:
diff changeset
    97
						KhtmlUserSelect: 'none'
0d28b7c10758 First commit
ymh
parents:
diff changeset
    98
					});
0d28b7c10758 First commit
ymh
parents:
diff changeset
    99
					/*
0d28b7c10758 First commit
ymh
parents:
diff changeset
   100
					if ( $.browser.msie )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   101
						return;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   102
					ui.item.addClass('noclick');
0d28b7c10758 First commit
ymh
parents:
diff changeset
   103
					*/
0d28b7c10758 First commit
ymh
parents:
diff changeset
   104
				},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   105
				stop: function(e,ui) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   106
					postboxes.save_order(page);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   107
					ui.item.parent().removeClass('temp-border');
0d28b7c10758 First commit
ymh
parents:
diff changeset
   108
					$('body').css({
0d28b7c10758 First commit
ymh
parents:
diff changeset
   109
						WebkitUserSelect: '',
0d28b7c10758 First commit
ymh
parents:
diff changeset
   110
						KhtmlUserSelect: ''
0d28b7c10758 First commit
ymh
parents:
diff changeset
   111
					});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   112
				}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   113
			});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   114
		},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   115
0d28b7c10758 First commit
ymh
parents:
diff changeset
   116
		save_state : function(page) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   117
			var closed = $('.postbox').filter('.closed').map(function() { return this.id; }).get().join(','),
0d28b7c10758 First commit
ymh
parents:
diff changeset
   118
			hidden = $('.postbox').filter(':hidden').map(function() { return this.id; }).get().join(',');
0d28b7c10758 First commit
ymh
parents:
diff changeset
   119
			$.post(ajaxurl, {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   120
				action: 'closed-postboxes',
0d28b7c10758 First commit
ymh
parents:
diff changeset
   121
				closed: closed,
0d28b7c10758 First commit
ymh
parents:
diff changeset
   122
				hidden: hidden,
0d28b7c10758 First commit
ymh
parents:
diff changeset
   123
				closedpostboxesnonce: jQuery('#closedpostboxesnonce').val(),
0d28b7c10758 First commit
ymh
parents:
diff changeset
   124
				page: page
0d28b7c10758 First commit
ymh
parents:
diff changeset
   125
			});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   126
		},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   127
0d28b7c10758 First commit
ymh
parents:
diff changeset
   128
		save_order : function(page) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   129
			var postVars, page_columns = $('.columns-prefs input:checked').val() || 0;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   130
			postVars = {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   131
				action: 'meta-box-order',
0d28b7c10758 First commit
ymh
parents:
diff changeset
   132
				_ajax_nonce: $('#meta-box-order-nonce').val(),
0d28b7c10758 First commit
ymh
parents:
diff changeset
   133
				page_columns: page_columns,
0d28b7c10758 First commit
ymh
parents:
diff changeset
   134
				page: page
0d28b7c10758 First commit
ymh
parents:
diff changeset
   135
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   136
			$('.meta-box-sortables').each( function() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   137
				postVars["order[" + this.id.split('-')[0] + "]"] = $(this).sortable( 'toArray' ).join(',');
0d28b7c10758 First commit
ymh
parents:
diff changeset
   138
			} );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   139
			$.post( ajaxurl, postVars );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   140
		},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   141
0d28b7c10758 First commit
ymh
parents:
diff changeset
   142
		/* Callbacks */
0d28b7c10758 First commit
ymh
parents:
diff changeset
   143
		pbshow : false,
0d28b7c10758 First commit
ymh
parents:
diff changeset
   144
0d28b7c10758 First commit
ymh
parents:
diff changeset
   145
		pbhide : false
0d28b7c10758 First commit
ymh
parents:
diff changeset
   146
	};
0d28b7c10758 First commit
ymh
parents:
diff changeset
   147
0d28b7c10758 First commit
ymh
parents:
diff changeset
   148
}(jQuery));