WordPress.org

Make WordPress Core

Ticket #13255: 13255.1.patch

File 13255.1.patch, 5.0 KB (added by koopersmith, 8 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}