WordPress.org

Make WordPress Core

Ticket #13255: 13255.1.patch

File 13255.1.patch, 5.0 KB (added by koopersmith, 4 years ago)
  • wp-admin/js/widgets.dev.js

     
    44wpWidgets = { 
    55 
    66        init : function() { 
    7                 var rem, sidebars = $('div.widgets-sortables'); 
     7                var rem, sidebars = $('div.widgets-sortables'), available = $('#widget-list'); 
    88 
    99                $('#widgets-right').children('.widgets-holder-wrap').children('.sidebar-name').click(function(){ 
    1010                        var c = $(this).siblings('.widgets-sortables'), p = $(this).parent(); 
     
    6868                                $('a.widget-action', this).click(); 
    6969                }); 
    7070 
    71                 $('#widget-list').children('.widget').draggable({ 
     71                available.children('.widget').draggable({ 
    7272                        connectToSortable: 'div.widgets-sortables', 
    7373                        handle: '> .widget-top > .widget-title', 
    74                         distance: 2, 
     74                        distance: 5, 
    7575                        helper: 'clone', 
    7676                        zIndex: 5, 
    7777                        containment: 'document', 
    7878                        start: function(e,ui) { 
    7979                                wpWidgets.fixWebkit(1); 
     80                                $(e.target).trigger('wp-select-widget'); 
     81                                ui.helper.removeClass('selected-widget'); 
     82                                available.find('.selected-widget').not( ui.helper.add(e.target) ) 
     83                                        .clone().appendTo( ui.helper ).removeClass('selected-widget'); 
    8084                                ui.helper.find('div.widget-description').hide(); 
     85                                ui.helper.height( ui.helper.height() ); 
    8186                        }, 
    8287                        stop: function(e,ui) { 
    8388                                if ( rem ) 
     
    8590                                rem = ''; 
    8691                                wpWidgets.fixWebkit(); 
    8792                        } 
     93                }).bind('wp-select-widget', function() { 
     94                        $(this).addClass('selected-widget'); 
     95                }).bind('wp-deselect-widget', function() { 
     96                        $(this).removeClass('selected-widget'); 
     97                }).bind('wp-toggle-widget', function() { 
     98                        var t = $(this); 
     99                        t.trigger( (t.hasClass('selected-widget')) ? 'wp-deselect-widget' : 'wp-select-widget'); 
     100                }).find('.widget-title').click(function() { 
     101                        $(this).trigger('wp-toggle-widget'); 
    88102                }); 
    89103 
    90104                sidebars.sortable({ 
     
    96110                        containment: 'document', 
    97111                        start: function(e,ui) { 
    98112                                wpWidgets.fixWebkit(1); 
    99                                 ui.item.children('.widget-inside').hide(); 
     113                                ui.item.height('auto').children('.widget-inside').hide(); 
    100114                                ui.item.css({'marginLeft':'','width':''}); 
     115                                ui.placeholder.height( ui.helper.height() ); 
    101116                        }, 
    102                         stop: function(e,ui) { 
    103                                 if ( ui.item.hasClass('ui-draggable') ) 
    104                                         ui.item.draggable('destroy'); 
     117                        beforeStop: function(e,ui) { 
     118                                available.find('.selected-widget').trigger('wp-deselect-widget'); 
     119                                ui.helper.children('.widget').insertAfter( ui.item ).add( ui.item ).each(function() { 
     120                                        var item = $(this);                              
     121                                        if ( item.hasClass('ui-draggable') ) 
     122                                                item.draggable('destroy'); 
    105123 
    106                                 if ( ui.item.hasClass('deleting') ) { 
    107                                         wpWidgets.save( ui.item, 1, 0, 1 ); // delete widget 
    108                                         ui.item.remove(); 
    109                                         return; 
    110                                 } 
     124                                        if ( item.hasClass('deleting') ) { 
     125                                                wpWidgets.save( item, 1, 0, 1 ); // delete widget 
     126                                                item.remove(); 
     127                                                return; 
     128                                        } 
    111129 
    112                                 var add = ui.item.find('input.add_new').val(), 
    113                                         n = ui.item.find('input.multi_number').val(), 
    114                                         id = ui.item.attr('id'), 
    115                                         sb = $(this).attr('id'); 
     130                                        var add = item.find('input.add_new').val(), 
     131                                                n = item.find('input.multi_number').val(), 
     132                                                id = item.attr('id'), 
     133                                                sb = $(this).attr('id'); 
    116134 
    117                                 ui.item.css({'marginLeft':'','width':''}); 
    118                                 wpWidgets.fixWebkit(); 
    119                                 if ( add ) { 
    120                                         if ( 'multi' == add ) { 
    121                                                 ui.item.html( ui.item.html().replace(/<[^<>]+>/g, function(m){ return m.replace(/__i__|%i%/g, n); }) ); 
    122                                                 ui.item.attr( 'id', id.replace(/__i__|%i%/g, n) ); 
    123                                                 n++; 
    124                                                 $('div#' + id).find('input.multi_number').val(n); 
    125                                         } else if ( 'single' == add ) { 
    126                                                 ui.item.attr( 'id', 'new-' + id ); 
    127                                                 rem = 'div#' + id; 
     135                                        item.css({'marginLeft':'','width':''}); 
     136                                        wpWidgets.fixWebkit(); 
     137                                        if ( add ) { 
     138                                                if ( 'multi' == add ) { 
     139                                                        item.html( item.html().replace(/<[^<>]+>/g, function(m){ return m.replace(/__i__|%i%/g, n); }) ); 
     140                                                        item.attr( 'id', id.replace(/__i__|%i%/g, n) ); 
     141                                                        n++; 
     142                                                        $('div#' + id).find('input.multi_number').val(n); 
     143                                                } else if ( 'single' == add ) { 
     144                                                        item.attr( 'id', 'new-' + id ); 
     145                                                        rem = 'div#' + id; 
     146                                                } 
     147                                                wpWidgets.save( item, 0, 0, 1 ); 
     148                                                item.find('input.add_new').val(''); 
     149                                                item.find('a.widget-action').click(); 
     150                                                return; 
    128151                                        } 
    129                                         wpWidgets.save( ui.item, 0, 0, 1 ); 
    130                                         ui.item.find('input.add_new').val(''); 
    131                                         ui.item.find('a.widget-action').click(); 
    132                                         return; 
    133                                 } 
    134                                 wpWidgets.saveOrder(sb); 
     152                                        wpWidgets.saveOrder(sb);         
     153                                }); 
    135154                        }, 
    136155                        receive: function(e,ui) { 
    137156                                if ( !$(this).is(':visible') ) 
  • wp-admin/css/widgets.dev.css

     
    173173        padding: 5px 9px; 
    174174} 
    175175 
     176#widget-list .selected-widget .widget-top { 
     177        background: #FFFFE0; 
     178        border-color: #E6DB55; 
     179} 
     180 
     181#widget-list .ui-draggable-dragging { 
     182        background: transparent; 
     183} 
     184 
     185#widget-list .widget .widget { 
     186        margin: 20px 0 0 0; 
     187} 
     188 
    176189.widget-top .widget-title-action { 
    177190        float: right; 
    178191}