1 |
|
2 var wpWidgets; |
1 var wpWidgets; |
3 (function($) { |
2 (function($) { |
4 |
3 |
5 wpWidgets = { |
4 wpWidgets = { |
|
5 |
6 init : function() { |
6 init : function() { |
7 var rem; |
7 var rem, sidebars = $('div.widgets-sortables'); |
8 |
8 |
9 if ( $('body').hasClass('widgets_access') ) { |
9 $('#widgets-right').children('.widgets-holder-wrap').children('.sidebar-name').click(function(){ |
10 return; |
10 var c = $(this).siblings('.widgets-sortables'), p = $(this).parent(); |
11 } |
11 if ( !p.hasClass('closed') ) { |
12 |
|
13 $('#widgets-right div.sidebar-name').click(function(){ |
|
14 var c = $(this).siblings('.widgets-sortables'); |
|
15 if ( c.is(':visible') ) { |
|
16 c.sortable('disable'); |
12 c.sortable('disable'); |
17 $(this).parent().addClass('closed'); |
13 p.addClass('closed'); |
18 } else { |
14 } else { |
19 $(this).parent().removeClass('closed'); |
15 p.removeClass('closed'); |
20 c.sortable('enable').sortable('refresh'); |
16 c.sortable('enable').sortable('refresh'); |
21 } |
17 } |
22 }); |
18 }); |
23 |
19 |
24 $('#widgets-left div.sidebar-name').click(function(){ |
20 $('#widgets-left').children('.widgets-holder-wrap').children('.sidebar-name').click(function() { |
25 if ( $(this).siblings('.widget-holder').is(':visible') ) { |
21 $(this).siblings('.widget-holder').parent().toggleClass('closed'); |
26 $(this).parent().addClass('closed'); |
22 }); |
|
23 |
|
24 sidebars.not('#wp_inactive_widgets').each(function(){ |
|
25 var h = 50, H = $(this).children('.widget').length; |
|
26 h = h + parseInt(H * 48, 10); |
|
27 $(this).css( 'minHeight', h + 'px' ); |
|
28 }); |
|
29 |
|
30 $('a.widget-action').live('click', function(){ |
|
31 var css = {}, widget = $(this).closest('div.widget'), inside = widget.children('.widget-inside'), w = parseInt( widget.find('input.widget-width').val(), 10 ); |
|
32 |
|
33 if ( inside.is(':hidden') ) { |
|
34 if ( w > 250 && inside.closest('div.widgets-sortables').length ) { |
|
35 css['width'] = w + 30 + 'px'; |
|
36 if ( inside.closest('div.widget-liquid-right').length ) |
|
37 css['marginLeft'] = 235 - w + 'px'; |
|
38 widget.css(css); |
|
39 } |
|
40 wpWidgets.fixLabels(widget); |
|
41 inside.slideDown('fast'); |
27 } else { |
42 } else { |
28 $(this).parent().removeClass('closed'); |
43 inside.slideUp('fast', function() { |
29 } |
44 widget.css({'width':'','marginLeft':''}); |
30 }); |
45 }); |
31 |
46 } |
32 $('#widgets-right .widget, #wp_inactive_widgets .widget').each(function(){ |
47 return false; |
|
48 }); |
|
49 |
|
50 $('input.widget-control-save').live('click', function(){ |
|
51 wpWidgets.save( $(this).closest('div.widget'), 0, 1, 0 ); |
|
52 return false; |
|
53 }); |
|
54 |
|
55 $('a.widget-control-remove').live('click', function(){ |
|
56 wpWidgets.save( $(this).closest('div.widget'), 1, 1, 0 ); |
|
57 return false; |
|
58 }); |
|
59 |
|
60 $('a.widget-control-close').live('click', function(){ |
|
61 wpWidgets.close( $(this).closest('div.widget') ); |
|
62 return false; |
|
63 }); |
|
64 |
|
65 sidebars.children('.widget').each(function() { |
33 wpWidgets.appendTitle(this); |
66 wpWidgets.appendTitle(this); |
34 }); |
67 if ( $('p.widget-error', this).length ) |
35 |
68 $('a.widget-action', this).click(); |
36 this.addEvents(); |
69 }); |
37 $('.widget-error').parents('.widget').find('a.widget-action').click(); |
70 |
38 |
71 $('#widget-list').children('.widget').draggable({ |
39 $('#available-widgets').droppable({ |
72 connectToSortable: 'div.widgets-sortables', |
40 tolerance: 'pointer', |
73 handle: '> .widget-top > .widget-title', |
41 accept: function(o){ |
|
42 return $(o).parent().attr('id') != 'widget-list'; |
|
43 }, |
|
44 drop: function(e,ui) { |
|
45 ui.draggable.addClass('deleting'); |
|
46 $('#removing-widget').hide().children('span').html(''); |
|
47 }, |
|
48 over: function(e,ui) { |
|
49 ui.draggable.addClass('deleting'); |
|
50 $('.widget-placeholder').hide(); |
|
51 |
|
52 if ( ui.draggable.hasClass('ui-sortable-helper') ) |
|
53 $('#removing-widget').show().children('span').html( ui.draggable.find('.widget-title h4').html() ); |
|
54 }, |
|
55 out: function(e,ui) { |
|
56 ui.draggable.removeClass('deleting'); |
|
57 $('.widget-placeholder').show(); |
|
58 $('#removing-widget').hide().children('span').html(''); |
|
59 } |
|
60 }); |
|
61 |
|
62 $('#widget-list .widget').draggable({ |
|
63 connectToSortable: '.widgets-sortables', |
|
64 handle: '.widget-title', |
|
65 distance: 2, |
74 distance: 2, |
66 helper: 'clone', |
75 helper: 'clone', |
67 zIndex: 5, |
76 zIndex: 5, |
68 containment: 'document', |
77 containment: 'document', |
69 start: function(e,ui) { |
78 start: function(e,ui) { |
70 wpWidgets.fixWebkit(1); |
79 wpWidgets.fixWebkit(1); |
71 ui.helper.find('.widget-description').hide(); |
80 ui.helper.find('div.widget-description').hide(); |
72 }, |
81 }, |
73 stop: function(e,ui) { |
82 stop: function(e,ui) { |
74 if ( rem ) |
83 if ( rem ) |
75 $(rem).hide(); |
84 $(rem).hide(); |
76 rem = ''; |
85 rem = ''; |
77 wpWidgets.fixWebkit(); |
86 wpWidgets.fixWebkit(); |
78 } |
87 } |
79 }); |
88 }); |
80 |
89 |
81 $('.widgets-sortables').sortable({ |
90 sidebars.sortable({ |
82 placeholder: 'widget-placeholder', |
91 placeholder: 'widget-placeholder', |
83 connectWith: '.widgets-sortables', |
92 items: '> .widget', |
84 items: '.widget', |
93 handle: '> .widget-top > .widget-title', |
85 handle: '.widget-title', |
|
86 cursor: 'move', |
94 cursor: 'move', |
87 distance: 2, |
95 distance: 2, |
88 containment: 'document', |
96 containment: 'document', |
89 start: function(e,ui) { |
97 start: function(e,ui) { |
90 wpWidgets.fixWebkit(1); |
98 wpWidgets.fixWebkit(1); |
91 ui.item.find('.widget-inside').hide(); |
99 ui.item.children('.widget-inside').hide(); |
92 ui.item.css({'marginLeft':'','width':''}); |
100 ui.item.css({'marginLeft':'','width':''}); |
93 }, |
101 }, |
94 stop: function(e,ui) { |
102 stop: function(e,ui) { |
95 if ( ui.item.hasClass('ui-draggable') ) |
103 if ( ui.item.hasClass('ui-draggable') ) |
96 ui.item.draggable('destroy'); |
104 ui.item.draggable('destroy'); |
125 }, |
135 }, |
126 receive: function(e,ui) { |
136 receive: function(e,ui) { |
127 if ( !$(this).is(':visible') ) |
137 if ( !$(this).is(':visible') ) |
128 $(this).sortable('cancel'); |
138 $(this).sortable('cancel'); |
129 } |
139 } |
130 }).not(':visible').sortable('disable'); |
140 }).sortable('option', 'connectWith', 'div.widgets-sortables').parent().filter('.closed').children('.widgets-sortables').sortable('disable'); |
131 wpWidgets.resize(); |
141 |
132 wpWidgets.fixLabels(); |
142 $('#available-widgets').droppable({ |
|
143 tolerance: 'pointer', |
|
144 accept: function(o){ |
|
145 return $(o).parent().attr('id') != 'widget-list'; |
|
146 }, |
|
147 drop: function(e,ui) { |
|
148 ui.draggable.addClass('deleting'); |
|
149 $('#removing-widget').hide().children('span').html(''); |
|
150 }, |
|
151 over: function(e,ui) { |
|
152 ui.draggable.addClass('deleting'); |
|
153 $('div.widget-placeholder').hide(); |
|
154 |
|
155 if ( ui.draggable.hasClass('ui-sortable-helper') ) |
|
156 $('#removing-widget').show().children('span') |
|
157 .html( ui.draggable.find('div.widget-title').children('h4').html() ); |
|
158 }, |
|
159 out: function(e,ui) { |
|
160 ui.draggable.removeClass('deleting'); |
|
161 $('div.widget-placeholder').show(); |
|
162 $('#removing-widget').hide().children('span').html(''); |
|
163 } |
|
164 }); |
133 }, |
165 }, |
134 |
166 |
135 saveOrder : function(sb) { |
167 saveOrder : function(sb) { |
136 if ( sb ) |
168 if ( sb ) |
137 $('#' + sb).parents('.widgets-holder-wrap').find('.ajax-feedback').css('visibility', 'visible'); |
169 $('#' + sb).closest('div.widgets-holder-wrap').find('img.ajax-feedback').css('visibility', 'visible'); |
138 |
170 |
139 var a = { |
171 var a = { |
140 action: 'widgets-order', |
172 action: 'widgets-order', |
141 savewidgets: $('#_wpnonce_widgets').val(), |
173 savewidgets: $('#_wpnonce_widgets').val(), |
142 sidebars: [] |
174 sidebars: [] |
143 }; |
175 }; |
144 |
176 |
145 $('.widgets-sortables').each( function() { |
177 $('div.widgets-sortables').each( function() { |
146 a['sidebars[' + $(this).attr('id') + ']'] = $(this).sortable('toArray').join(','); |
178 a['sidebars[' + $(this).attr('id') + ']'] = $(this).sortable('toArray').join(','); |
147 }); |
179 }); |
148 |
180 |
149 $.post( ajaxurl, a, function() { |
181 $.post( ajaxurl, a, function() { |
150 $('.ajax-feedback').css('visibility', 'hidden'); |
182 $('img.ajax-feedback').css('visibility', 'hidden'); |
151 }); |
183 }); |
|
184 |
152 this.resize(); |
185 this.resize(); |
153 }, |
186 }, |
154 |
187 |
155 save : function(widget, del, animate, order) { |
188 save : function(widget, del, animate, order) { |
156 var sb = widget.parents('.widgets-sortables').attr('id'), data = widget.find('form').serialize(), a; |
189 var sb = widget.closest('div.widgets-sortables').attr('id'), data = widget.find('form').serialize(), a; |
157 widget = $(widget); |
190 widget = $(widget); |
158 widget.find('.ajax-feedback').css('visibility', 'visible'); |
191 $('.ajax-feedback', widget).css('visibility', 'visible'); |
159 |
192 |
160 a = { |
193 a = { |
161 action: 'save-widget', |
194 action: 'save-widget', |
162 savewidgets: $('#_wpnonce_widgets').val(), |
195 savewidgets: $('#_wpnonce_widgets').val(), |
163 sidebar: sb |
196 sidebar: sb |
191 wpWidgets.resize(); |
224 wpWidgets.resize(); |
192 } |
225 } |
193 } else { |
226 } else { |
194 $('.ajax-feedback').css('visibility', 'hidden'); |
227 $('.ajax-feedback').css('visibility', 'hidden'); |
195 if ( r && r.length > 2 ) { |
228 if ( r && r.length > 2 ) { |
196 $('.widget-content', widget).html(r); |
229 $('div.widget-content', widget).html(r); |
197 wpWidgets.appendTitle(widget); |
230 wpWidgets.appendTitle(widget); |
198 wpWidgets.fixLabels(widget); |
231 wpWidgets.fixLabels(widget); |
199 } |
232 } |
200 } |
233 } |
201 if ( order ) |
234 if ( order ) |
202 wpWidgets.saveOrder(); |
235 wpWidgets.saveOrder(); |
203 }); |
236 }); |
204 }, |
237 }, |
205 |
238 |
206 appendTitle : function(widget) { |
239 appendTitle : function(widget) { |
207 $('input[type="text"]', widget).each(function(){ |
240 var title = $('input[id*="-title"]', widget); |
208 var title; |
241 if ( title = title.val() ) { |
209 if ( this.id.indexOf('title') != -1 ) { |
242 title = title.replace(/<[^<>]+>/g, '').replace(/</g, '<').replace(/>/g, '>'); |
210 title = $(this).val().replace(/<[^<>]+>/g, '').replace(/</g, '<').replace(/>/g, '>'); |
243 $(widget).children('.widget-top').children('.widget-title').children() |
211 if ( title ) |
244 .children('.in-widget-title').html(': ' + title); |
212 $('.widget-title .in-widget-title', widget).html(': ' + title); |
245 } |
213 return false; |
|
214 } |
|
215 }); |
|
216 }, |
246 }, |
217 |
247 |
218 resize : function() { |
248 resize : function() { |
219 $('.widgets-sortables').not('#wp_inactive_widgets').each(function(){ |
249 $('div.widgets-sortables').not('#wp_inactive_widgets').each(function(){ |
220 var h = 50, H = $('.widget', this).length; |
250 var h = 50, H = $(this).children('.widget').length; |
221 h = h + parseInt(H * 48, 10); |
251 h = h + parseInt(H * 48, 10); |
222 $(this).css( 'minHeight', h + 'px' ); |
252 $(this).css( 'minHeight', h + 'px' ); |
223 }); |
253 }); |
224 }, |
254 }, |
225 |
255 |
228 $('body').css({ |
258 $('body').css({ |
229 WebkitUserSelect: n, |
259 WebkitUserSelect: n, |
230 KhtmlUserSelect: n |
260 KhtmlUserSelect: n |
231 }); |
261 }); |
232 }, |
262 }, |
233 |
263 |
234 fixLabels : function(sc) { |
264 fixLabels : function(widget) { |
235 sc = sc || document; |
265 widget.children('.widget-inside').find('label').each(function(){ |
236 |
|
237 $('.widget-inside label', sc).each(function(){ |
|
238 var f = $(this).attr('for'); |
266 var f = $(this).attr('for'); |
239 |
|
240 if ( f && f == $('input', this).attr('id') ) |
267 if ( f && f == $('input', this).attr('id') ) |
241 $(this).removeAttr('for'); |
268 $(this).removeAttr('for'); |
242 }); |
269 }); |
243 }, |
270 }, |
244 |
271 |
245 close : function(widget) { |
272 close : function(widget) { |
246 widget.find('.widget-inside').slideUp('fast', function(){ |
273 widget.children('.widget-inside').slideUp('fast', function(){ |
247 widget.css({'width':'','marginLeft':''}); |
274 widget.css({'width':'','marginLeft':''}); |
248 }); |
|
249 }, |
|
250 |
|
251 addEvents : function(sc) { |
|
252 sc = sc || document; |
|
253 $('a.widget-action', sc).click(function(){ |
|
254 var w = parseInt( $(this).parents('.widget').find('.widget-width').val(), 10 ), css = {}, inside = $(this).parents('.widget-top').siblings('.widget-inside'); |
|
255 if ( inside.is(':hidden') ) { |
|
256 if ( w > 250 && inside.parents('.widgets-sortables').length ) { |
|
257 css['width'] = w + 30 + 'px'; |
|
258 if ( inside.parents('.widget-liquid-right').length ) |
|
259 css['marginLeft'] = 235 - w + 'px'; |
|
260 inside.parents('.widget').css(css); |
|
261 } |
|
262 inside.slideDown('fast'); |
|
263 } else { |
|
264 inside.slideUp('fast', function(){ inside.parents('.widget').css({'width':'','marginLeft':''}); }); |
|
265 } |
|
266 return false; |
|
267 }); |
|
268 $('.widget-control-save', sc).click(function(){ |
|
269 wpWidgets.save( $(this).parents('.widget'), 0, 1, 0 ); |
|
270 return false; |
|
271 }); |
|
272 $('.widget-control-remove', sc).click(function(){ |
|
273 wpWidgets.save( $(this).parents('.widget'), 1, 1, 0 ); |
|
274 return false; |
|
275 }); |
|
276 $('.widget-control-close', sc).click(function(){ |
|
277 wpWidgets.close( $(this).parents('.widget') ); |
|
278 return false; |
|
279 }); |
275 }); |
280 } |
276 } |
281 }; |
277 }; |
282 $(document).ready(function(){wpWidgets.init();}); |
278 |
|
279 $(document).ready(function($){ wpWidgets.init(); }); |
283 |
280 |
284 })(jQuery); |
281 })(jQuery); |