Make WordPress Core

Ticket #13524: 13524.diff

File 13524.diff, 2.3 KB (added by obenland, 11 years ago)
  • src/wp-admin/js/widgets.js

     
    44        var $document = $( document );
    55
    66wpWidgets = {
     7        /**
     8         * The sidebar that gets hovered, or false when it doesn't.
     9         *
     10         * @var element|null
     11         */
     12        hoveredSidebar: null,
    713
    814        init : function() {
    915                var rem, the_id,
     
    94100                        helper: 'clone',
    95101                        zIndex: 100,
    96102                        containment: '#wpwrap',
     103                        refreshPositions: true,
    97104                        start: function( event, ui ) {
    98105                                var chooser = $(this).find('.widgets-chooser');
    99106
     
    117124                        }
    118125                });
    119126
     127                /**
     128                 * Opens and closes Sidebars when Widgets are dragged in/out of them.
     129                 */
     130                sidebars.droppable( {
     131                        tolerance: 'intersect',
     132
     133                        /**
     134                         * Open Sidebar when a Widget gets dragged onto it.
     135                         *
     136                         * @param event
     137                         */
     138                        over: function( event ) {
     139                                var $wrap = $( event.target ).parent();
     140
     141                                if ( wpWidgets.hoveredSidebar && ! $wrap.is( wpWidgets.hoveredSidebar ) ) {
     142                                        wpWidgets.closeSidebar( event );
     143                                }
     144
     145                                if ( $wrap.hasClass( 'closed' ) ) {
     146                                        wpWidgets.hoveredSidebar = $wrap;
     147                                        $wrap.removeClass( 'closed' );
     148                                }
     149                        },
     150
     151                        /**
     152                         * Close Sidebar when the hovering widget moves out.
     153                         *
     154                         * @param event
     155                         */
     156                        out: function( event ) {
     157                                if ( wpWidgets.hoveredSidebar ) {
     158                                        wpWidgets.closeSidebar( event );
     159                                }
     160                        }
     161                } );
     162
    120163                sidebars.sortable({
    121164                        placeholder: 'widget-placeholder',
    122165                        items: '> .widget',
     
    148191                                        $widget = ui.item,
    149192                                        id = the_id;
    150193
     194                                // Reset the var to hold a previously closed sidebar.
     195                                wpWidgets.hoveredSidebar = null;
     196
    151197                                if ( $widget.hasClass('deleting') ) {
    152198                                        wpWidgets.save( $widget, 1, 0, 1 ); // delete widget
    153199                                        $widget.remove();
     
    491537        clearWidgetSelection: function() {
    492538                $( '#widgets-left' ).removeClass( 'chooser' );
    493539                $( '.widget-in-question' ).removeClass( 'widget-in-question' );
     540        },
     541
     542        /**
     543         * Closes a sidebar.
     544         *
     545         * Used when a widget gets dragged in/out of the sidebar and never dropped.
     546         *
     547         * @param sidebar
     548         */
     549        closeSidebar: function( sidebar ) {
     550                this.hoveredSidebar.addClass( 'closed' );
     551                $( sidebar.target ).css( 'min-height', '' );
     552                this.hoveredSidebar = null;
    494553        }
    495554};
    496555