|
151 | 151 | repeater:function( $src, $dest ) { |
152 | 152 | var srcField = acf.getField($src), |
153 | 153 | destField = acf.getField($dest); |
| 154 | + |
154 | 155 | srcField.$rows().each(function(i,row){ |
155 | 156 | $new_row = destField.add(); |
156 | 157 | copy_values( $(row), $new_row, '> .acf-field, > .acf-fields > .acf-field' ); |
|
223 | 224 | * @param $dest jQuery object holding the .acf-field object to copy to |
224 | 225 | */ |
225 | 226 | function copy_value( $src, $dest ) { |
226 | | - var $srcInput, $destInput, type; |
| 227 | + var type, |
| 228 | + copyEvent, |
| 229 | + doneEvent; |
227 | 230 |
|
228 | 231 | type = $src.attr('data-type'); |
229 | 232 |
|
| 233 | + copyEvent = $.Event( 'acf_duplicate:' + type ); |
| 234 | + copyEvent.destination = $dest; |
| 235 | + |
| 236 | + $src.trigger( copyEvent ); |
| 237 | + |
| 238 | + // allow canceling |
| 239 | + if ( copyEvent.isDefaultPrevented() ) { |
| 240 | + return; |
| 241 | + } |
| 242 | + |
230 | 243 | if ( ! copy_value_cb[ type ] ) { |
231 | | - // tet, range, url, number, |
232 | | - return copy_value_cb._default( $src, $dest, type ); |
| 244 | + // Defalt behaviour for text, range, url, number, |
| 245 | + copy_value_cb._default( $src, $dest, type ); |
| 246 | + } else { |
| 247 | + copy_value_cb[type]( $src, $dest ); |
233 | 248 | } |
234 | 249 |
|
235 | | - return copy_value_cb[type]( $src, $dest ); |
| 250 | + doneEvent = $.Event( 'acf_duplicated:' + type ); |
| 251 | + doneEvent.destination = $dest; |
| 252 | + |
| 253 | + $src.trigger( doneEvent ); |
236 | 254 | } |
237 | 255 |
|
238 | 256 | /** |
239 | 257 | * Copy values from one set of acf-fields to another. |
240 | | - * It is assumed that both $src adn $dest have an identical |
| 258 | + * It is assumed that both $src and $dest have identical fields |
241 | 259 | * |
242 | 260 | * @param $src jQuery object containing the .acf-field objects to copy from |
243 | 261 | * @param $dest jQuery object containing the .acf-field object to copy to |
|
305 | 323 | _duplicate: function( e ) { |
306 | 324 | var layout, |
307 | 325 | $field, |
308 | | - $layout, |
309 | | - $new_layout; |
| 326 | + $layout, // original field |
| 327 | + $new_layout; // cloned field |
310 | 328 |
|
311 | 329 | // get layout wrapper |
312 | 330 | $layout = $(e.target).closest('.layout'); |
|
375 | 393 | }); |
376 | 394 |
|
377 | 395 |
|
| 396 | +})(jQuery); |
| 397 | + |
| 398 | + |
| 399 | +// tests! |
| 400 | +(function($){ |
| 401 | + $(document).on('acf_duplicate:table',function(e){ |
| 402 | + var $src = $(e.target), |
| 403 | + $dest = e.destination; |
| 404 | + |
| 405 | + $dest.find('.acf-table-table').html($src.find('.acf-table-table').html()); |
| 406 | + $dest.find('select').val( $src.find('select').val() ).trigger('change'); |
| 407 | + $dest.trigger('change'); |
| 408 | + // trigger change |
| 409 | + |
| 410 | + e.preventDefault(); |
| 411 | + }); |
378 | 412 | })(jQuery) |
0 commit comments