web/wp-admin/js/postbox.dev.js
changeset 194 32102edaa81b
parent 136 bde1974c263b
--- a/web/wp-admin/js/postbox.dev.js	Thu Sep 16 15:45:36 2010 +0000
+++ b/web/wp-admin/js/postbox.dev.js	Mon Nov 19 18:26:13 2012 +0100
@@ -1,83 +1,70 @@
 var postboxes;
+
 (function($) {
 	postboxes = {
-		add_postbox_toggles : function(page,args) {
-			this.init(page,args);
-			$('.postbox h3, .postbox .handlediv').click( function() {
+		add_postbox_toggles : function(page, args) {
+			var self = this;
+
+			self.init(page, args);
+
+			$('.postbox h3, .postbox .handlediv').bind('click.postboxes', function() {
 				var p = $(this).parent('.postbox'), id = p.attr('id');
+
+				if ( 'dashboard_browser_nag' == id )
+					return;
+
 				p.toggleClass('closed');
-				postboxes.save_state(page);
+
+				if ( page != 'press-this' )
+					self.save_state(page);
+
 				if ( id ) {
 					if ( !p.hasClass('closed') && $.isFunction(postboxes.pbshow) )
-						postboxes.pbshow(id);
+						self.pbshow(id);
 					else if ( p.hasClass('closed') && $.isFunction(postboxes.pbhide) )
-						postboxes.pbhide(id);
+						self.pbhide(id);
 				}
-			} );
+			});
+
 			$('.postbox h3 a').click( function(e) {
 				e.stopPropagation();
-			} );
-			$('.hide-postbox-tog').click( function() {
+			});
+
+			$('.postbox a.dismiss').bind('click.postboxes', function(e) {
+				var hide_id = $(this).parents('.postbox').attr('id') + '-hide';
+				$( '#' + hide_id ).prop('checked', false).triggerHandler('click');
+				return false;
+			});
+
+			$('.hide-postbox-tog').bind('click.postboxes', function() {
 				var box = $(this).val();
-				if ( $(this).attr('checked') ) {
+
+				if ( $(this).prop('checked') ) {
 					$('#' + box).show();
 					if ( $.isFunction( postboxes.pbshow ) )
-						postboxes.pbshow( box );
+						self.pbshow( box );
 				} else {
 					$('#' + box).hide();
 					if ( $.isFunction( postboxes.pbhide ) )
-						postboxes.pbhide( box );
+						self.pbhide( box );
 				}
-				postboxes.save_state(page);
-			} );
-			$('.columns-prefs input[type="radio"]').click(function(){
-				var num = $(this).val(), i, el, p = $('#poststuff');
-
-				if ( p.length ) { // write pages
-					if ( num == 2 ) {
-						p.addClass('has-right-sidebar');
-						$('#side-sortables').addClass('temp-border');
-					} else if ( num == 1 ) {
-						p.removeClass('has-right-sidebar');
-						$('#normal-sortables').append($('#side-sortables').children('.postbox'));
-					}
-				} else { // dashboard
-					for ( i = 4; ( i > num && i > 1 ); i-- ) {
-						el = $('#' + colname(i) + '-sortables');
-						$('#' + colname(i-1) + '-sortables').append(el.children('.postbox'));
-						el.parent().hide();
-					}
-					for ( i = 1; i <= num; i++ ) {
-						el = $('#' + colname(i) + '-sortables');
-						if ( el.parent().is(':hidden') )
-							el.addClass('temp-border').parent().show();
-					}
-					$('.postbox-container:visible').css('width', 98/num + '%');
-				}
-				postboxes.save_order(page);
+				self.save_state(page);
+				self._mark_area();
 			});
 
-			function colname(n) {
-				switch (n) {
-					case 1:
-						return 'normal';
-						break
-					case 2:
-						return 'side';
-						break
-					case 3:
-						return 'column3';
-						break
-					case 4:
-						return 'column4';
-						break
-					default:
-						return '';
+			$('.columns-prefs input[type="radio"]').bind('click.postboxes', function(){
+				var n = parseInt($(this).val(), 10);
+
+				if ( n ) {
+					self._pb_edit(n);
+					self.save_order(page);
 				}
-			}
+			});
 		},
 
 		init : function(page, args) {
+			var isMobile = $(document.body).hasClass('mobile');
+
 			$.extend( this, args || {} );
 			$('#wpbody-content').css('overflow','hidden');
 			$('.meta-box-sortables').sortable({
@@ -86,36 +73,40 @@
 				items: '.postbox',
 				handle: '.hndle',
 				cursor: 'move',
+				delay: ( isMobile ? 200 : 0 ),
 				distance: 2,
 				tolerance: 'pointer',
 				forcePlaceholderSize: true,
 				helper: 'clone',
 				opacity: 0.65,
-				start: function(e,ui) {
-					$('body').css({
-						WebkitUserSelect: 'none',
-						KhtmlUserSelect: 'none'
-					});
-					/*
-					if ( $.browser.msie )
+				stop: function(e,ui) {
+					if ( $(this).find('#dashboard_browser_nag').is(':visible') && 'dashboard_browser_nag' != this.firstChild.id ) {
+						$(this).sortable('cancel');
 						return;
-					ui.item.addClass('noclick');
-					*/
-				},
-				stop: function(e,ui) {
+					}
+
 					postboxes.save_order(page);
-					ui.item.parent().removeClass('temp-border');
-					$('body').css({
-						WebkitUserSelect: '',
-						KhtmlUserSelect: ''
-					});
+				},
+				receive: function(e,ui) {
+					if ( 'dashboard_browser_nag' == ui.item[0].id )
+						$(ui.sender).sortable('cancel');
+
+					postboxes._mark_area();
 				}
 			});
+
+			if ( isMobile ) {
+				$(document.body).bind('orientationchange.postboxes', function(){ postboxes._pb_change(); });
+				this._pb_change();
+			}
+
+			this._mark_area();
 		},
 
 		save_state : function(page) {
 			var closed = $('.postbox').filter('.closed').map(function() { return this.id; }).get().join(','),
-			hidden = $('.postbox').filter(':hidden').map(function() { return this.id; }).get().join(',');
+				hidden = $('.postbox').filter(':hidden').map(function() { return this.id; }).get().join(',');
+
 			$.post(ajaxurl, {
 				action: 'closed-postboxes',
 				closed: closed,
@@ -127,6 +118,7 @@
 
 		save_order : function(page) {
 			var postVars, page_columns = $('.columns-prefs input:checked').val() || 0;
+
 			postVars = {
 				action: 'meta-box-order',
 				_ajax_nonce: $('#meta-box-order-nonce').val(),
@@ -139,6 +131,47 @@
 			$.post( ajaxurl, postVars );
 		},
 
+		_mark_area : function() {
+			var visible = $('div.postbox:visible').length, side = $('#post-body #side-sortables');
+
+			$('#dashboard-widgets .meta-box-sortables:visible').each(function(n, el){
+				var t = $(this);
+
+				if ( visible == 1 || t.children('.postbox:visible').length )
+					t.removeClass('empty-container');
+				else
+					t.addClass('empty-container');
+			});
+
+			if ( side.length ) {
+				if ( side.children('.postbox:visible').length )
+					side.removeClass('empty-container');
+				else if ( $('#postbox-container-1').css('width') == '280px' )
+					side.addClass('empty-container');
+			}
+		},
+
+		_pb_edit : function(n) {
+			var el = $('.metabox-holder').get(0);
+			el.className = el.className.replace(/columns-\d+/, 'columns-' + n);
+		},
+
+		_pb_change : function() {
+			switch ( window.orientation ) {
+				case 90:
+				case -90:
+					this._pb_edit(2);
+					break;
+				case 0:
+				case 180:
+					if ( $('#poststuff').length )
+						this._pb_edit(1);
+					else
+						this._pb_edit(2);
+					break;
+			}
+		},
+
 		/* Callbacks */
 		pbshow : false,