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