Make WordPress Core

Changeset 5343


Ignore:
Timestamp:
04/29/2007 08:16:26 PM (19 years ago)
Author:
rob1n
Message:

Move widgets' JS into the <head> of widgets.php. Should fix text/rss widget controls. see #4169

Files:
2 deleted
2 edited

Legend:

Unmodified
Added
Removed
  • branches/2.2/wp-admin/widgets.php

    r5324 r5343  
    66wp_enqueue_script( 'scriptaculous-dragdrop' );
    77
    8 wp_register_script( 'widgets-admin', '/wp-admin/widgets.js.php', array( 'scriptaculous-effects', 'scriptaculous-dragdrop' ), '1.0' );
    9 wp_enqueue_script( 'widgets-admin' );
    10 
    118function wp_widgets_admin_head() {
    12         global $wp_registered_sidebars, $wp_registered_widgets;
     9        global $wp_registered_sidebars, $wp_registered_widgets, $wp_registered_widget_controls;
    1310       
    1411        define( 'WP_WIDGETS_WIDTH', 1 + 262 * ( count( $wp_registered_sidebars ) ) );
     
    2017                #sbadmin #zones { width: <?php echo constant( 'WP_WIDGETS_WIDTH' ); ?>px; }
    2118        </style>
    22 <?php if ( ('rtl' == get_bloginfo('text_direction')) ) : ?>
     19<?php
     20        if ( get_bloginfo( 'text_direction' ) == 'rtl' ) {
     21?>
    2322        <link rel="stylesheet" href="widgets-rtl.css?version=<?php bloginfo('version'); ?>" type="text/css" />
    2423<?php
    25         endif;
    26 }
    27 
     24        }
     25       
     26        $cols = array();
     27        foreach ( $wp_registered_sidebars as $index => $sidebar ) {
     28                $cols[] = '\'' . $index . '\'';
     29        }
     30        $cols = implode( ', ', $cols );
     31       
     32        $widgets = array();
     33        foreach ( $wp_registered_widgets as $name => $widget ) {
     34                $widgets[] = '\'' . $widget['id'] . '\'';
     35        }
     36        $widgets = implode( ', ', $widgets );
     37?>
     38<script type="text/javascript">
     39// <![CDATA[
     40        var cols = [<?php echo $cols; ?>];
     41        var widgets = [<?php echo $widgets; ?>];
     42        var controldims = new Array;
     43        <?php foreach ( $wp_registered_widget_controls as $name => $widget ) : ?>
     44                controldims['<?php echo $widget['id']; ?>control'] = new Array;
     45                controldims['<?php echo $widget['id']; ?>control']['width'] = <?php echo (int) $widget['width']; ?>;
     46                controldims['<?php echo $widget['id']; ?>control']['height'] = <?php echo (int) $widget['height']; ?>;
     47        <?php endforeach; ?>
     48        function initWidgets() {
     49        <?php foreach ( $wp_registered_widget_controls as $name => $widget ) : ?>
     50                $('<?php echo $widget['id']; ?>popper').onclick = function() {popControl('<?php echo $widget['id']; ?>control');};
     51                $('<?php echo $widget['id']; ?>closer').onclick = function() {unpopControl('<?php echo $widget['id']; ?>control');};
     52                new Draggable('<?php echo $widget['id']; ?>control', {revert:false,handle:'controlhandle',starteffect:function(){},endeffect:function(){},change:function(o){dragChange(o);}});
     53                if ( true && window.opera )
     54                        $('<?php echo $widget['id']; ?>control').style.border = '1px solid #bbb';
     55        <?php endforeach; ?>
     56                if ( true && window.opera )
     57                        $('shadow').style.background = 'transparent';
     58                new Effect.Opacity('shadow', {to:0.0});
     59                widgets.map(function(o) {o='widgetprefix-'+o; Position.absolutize(o); Position.relativize(o);} );
     60                $A(Draggables.drags).map(function(o) {o.startDrag(null); o.finishDrag(null);});
     61                for ( var n in Draggables.drags ) {
     62                        if ( Draggables.drags[n].element.id == 'lastmodule' ) {
     63                                Draggables.drags[n].destroy();
     64                                break;
     65                        }
     66                }
     67                resetPaletteHeight();
     68        }
     69        function resetDroppableHeights() {
     70                var max = 6;
     71                cols.map(function(o) {var c = $(o).childNodes.length; if ( c > max ) max = c;} );
     72                var height = 35 * ( max + 1);
     73                cols.map(function(o) {h = (($(o).childNodes.length + 1) * 35); $(o).style.height = (h > 280 ? h : 280) + 'px';} );
     74        }
     75        function resetPaletteHeight() {
     76                var p = $('palette'), pd = $('palettediv'), last = $('lastmodule');
     77                p.appendChild(last);
     78                if ( Draggables.activeDraggable && last.id == Draggables.activeDraggable.element.id )
     79                        last = last.previousSibling;
     80                var y1 = Position.cumulativeOffset(last)[1] + last.offsetHeight;
     81                var y2 = Position.cumulativeOffset(pd)[1] + pd.offsetHeight;
     82                var dy = y1 - y2;
     83                pd.style.height = (pd.offsetHeight + dy + 9) + "px";
     84        }
     85        function maxHeight(elm) {
     86                htmlheight = document.body.parentNode.clientHeight;
     87                bodyheight = document.body.clientHeight;
     88                var height = htmlheight > bodyheight ? htmlheight : bodyheight;
     89                $(elm).style.height = height + 'px';
     90        }
     91        function dragChange(o) {
     92                el = o.element ? o.element : $(o);
     93                var p = Position.page(el);
     94                var right = p[0];
     95                var top = p[1];
     96                var left = $('shadow').offsetWidth - (el.offsetWidth + left);
     97                var bottom = $('shadow').offsetHeight - (el.offsetHeight + top);
     98                if ( right < 1 ) el.style.left = 0;
     99                if ( top < 1 ) el.style.top = 0;
     100                if ( left < 1 ) el.style.left = (left + right) + 'px';
     101                if ( bottom < 1 ) el.style.top = (top + bottom) + 'px';
     102        }
     103        function popControl(elm) {
     104                el = $(elm);
     105                el.style.width = controldims[elm]['width'] + 'px';
     106                el.style.height = controldims[elm]['height'] + 'px';
     107                var x = ( document.body.clientWidth - controldims[elm]['width'] ) / 2;
     108                var y = ( document.body.parentNode.clientHeight - controldims[elm]['height'] ) / 2;
     109                el.style.position = 'absolute';
     110                el.style.right = '' + x + 'px';
     111                el.style.top = '' + y + 'px';
     112                el.style.zIndex = 1000;
     113                el.className='control';
     114                $('shadow').onclick = function() {unpopControl(elm);};
     115            window.onresize = function(){maxHeight('shadow');dragChange(elm);};
     116                popShadow();
     117        }
     118        function popShadow() {
     119                maxHeight('shadow');
     120                var shadow = $('shadow');
     121                shadow.style.zIndex = 999;
     122                shadow.style.display = 'block';
     123            new Effect.Opacity('shadow', {duration:0.5, from:0.0, to:0.2});
     124        }
     125        function unpopShadow() {
     126            new Effect.Opacity('shadow', {to:0.0});
     127                $('shadow').style.display = 'none';
     128        }
     129        function unpopControl(el) {
     130                $(el).className='hidden';
     131                unpopShadow();
     132        }
     133        function serializeAll() {
     134        <?php foreach ( $wp_registered_sidebars as $index => $sidebar ) : ?>
     135                $('<?php echo $index; ?>order').value = Sortable.serialize('<?php echo $index; ?>');
     136        <?php endforeach; ?>
     137        }
     138        function updateAll() {
     139                resetDroppableHeights();
     140                resetPaletteHeight();
     141                cols.map(function(o){
     142                        var pm = $(o+'placematt');
     143                        if ( $(o).childNodes.length == 0 ) {
     144                                pm.style.display = 'block';
     145                                Position.absolutize(o+'placematt');
     146                        } else {
     147                                pm.style.display = 'none';
     148                        }
     149                });
     150        }
     151        function noSelection(event) {
     152                if ( document.selection ) {
     153                        var range = document.selection.createRange();
     154                        range.collapse(false);
     155                        range.select();
     156                        return false;
     157                }
     158        }
     159        addLoadEvent(updateAll);
     160        addLoadEvent(initWidgets);
     161        Event.observe(window, 'resize', resetPaletteHeight);
     162// ]]>
     163</script>
     164<?php
     165}
    28166add_action( 'admin_head', 'wp_widgets_admin_head' );
    29167do_action( 'sidebar_admin_setup' );
  • trunk/wp-admin/widgets.php

    r5324 r5343  
    66wp_enqueue_script( 'scriptaculous-dragdrop' );
    77
    8 wp_register_script( 'widgets-admin', '/wp-admin/widgets.js.php', array( 'scriptaculous-effects', 'scriptaculous-dragdrop' ), '1.0' );
    9 wp_enqueue_script( 'widgets-admin' );
    10 
    118function wp_widgets_admin_head() {
    12         global $wp_registered_sidebars, $wp_registered_widgets;
     9        global $wp_registered_sidebars, $wp_registered_widgets, $wp_registered_widget_controls;
    1310       
    1411        define( 'WP_WIDGETS_WIDTH', 1 + 262 * ( count( $wp_registered_sidebars ) ) );
     
    2017                #sbadmin #zones { width: <?php echo constant( 'WP_WIDGETS_WIDTH' ); ?>px; }
    2118        </style>
    22 <?php if ( ('rtl' == get_bloginfo('text_direction')) ) : ?>
     19<?php
     20        if ( get_bloginfo( 'text_direction' ) == 'rtl' ) {
     21?>
    2322        <link rel="stylesheet" href="widgets-rtl.css?version=<?php bloginfo('version'); ?>" type="text/css" />
    2423<?php
    25         endif;
    26 }
    27 
     24        }
     25       
     26        $cols = array();
     27        foreach ( $wp_registered_sidebars as $index => $sidebar ) {
     28                $cols[] = '\'' . $index . '\'';
     29        }
     30        $cols = implode( ', ', $cols );
     31       
     32        $widgets = array();
     33        foreach ( $wp_registered_widgets as $name => $widget ) {
     34                $widgets[] = '\'' . $widget['id'] . '\'';
     35        }
     36        $widgets = implode( ', ', $widgets );
     37?>
     38<script type="text/javascript">
     39// <![CDATA[
     40        var cols = [<?php echo $cols; ?>];
     41        var widgets = [<?php echo $widgets; ?>];
     42        var controldims = new Array;
     43        <?php foreach ( $wp_registered_widget_controls as $name => $widget ) : ?>
     44                controldims['<?php echo $widget['id']; ?>control'] = new Array;
     45                controldims['<?php echo $widget['id']; ?>control']['width'] = <?php echo (int) $widget['width']; ?>;
     46                controldims['<?php echo $widget['id']; ?>control']['height'] = <?php echo (int) $widget['height']; ?>;
     47        <?php endforeach; ?>
     48        function initWidgets() {
     49        <?php foreach ( $wp_registered_widget_controls as $name => $widget ) : ?>
     50                $('<?php echo $widget['id']; ?>popper').onclick = function() {popControl('<?php echo $widget['id']; ?>control');};
     51                $('<?php echo $widget['id']; ?>closer').onclick = function() {unpopControl('<?php echo $widget['id']; ?>control');};
     52                new Draggable('<?php echo $widget['id']; ?>control', {revert:false,handle:'controlhandle',starteffect:function(){},endeffect:function(){},change:function(o){dragChange(o);}});
     53                if ( true && window.opera )
     54                        $('<?php echo $widget['id']; ?>control').style.border = '1px solid #bbb';
     55        <?php endforeach; ?>
     56                if ( true && window.opera )
     57                        $('shadow').style.background = 'transparent';
     58                new Effect.Opacity('shadow', {to:0.0});
     59                widgets.map(function(o) {o='widgetprefix-'+o; Position.absolutize(o); Position.relativize(o);} );
     60                $A(Draggables.drags).map(function(o) {o.startDrag(null); o.finishDrag(null);});
     61                for ( var n in Draggables.drags ) {
     62                        if ( Draggables.drags[n].element.id == 'lastmodule' ) {
     63                                Draggables.drags[n].destroy();
     64                                break;
     65                        }
     66                }
     67                resetPaletteHeight();
     68        }
     69        function resetDroppableHeights() {
     70                var max = 6;
     71                cols.map(function(o) {var c = $(o).childNodes.length; if ( c > max ) max = c;} );
     72                var height = 35 * ( max + 1);
     73                cols.map(function(o) {h = (($(o).childNodes.length + 1) * 35); $(o).style.height = (h > 280 ? h : 280) + 'px';} );
     74        }
     75        function resetPaletteHeight() {
     76                var p = $('palette'), pd = $('palettediv'), last = $('lastmodule');
     77                p.appendChild(last);
     78                if ( Draggables.activeDraggable && last.id == Draggables.activeDraggable.element.id )
     79                        last = last.previousSibling;
     80                var y1 = Position.cumulativeOffset(last)[1] + last.offsetHeight;
     81                var y2 = Position.cumulativeOffset(pd)[1] + pd.offsetHeight;
     82                var dy = y1 - y2;
     83                pd.style.height = (pd.offsetHeight + dy + 9) + "px";
     84        }
     85        function maxHeight(elm) {
     86                htmlheight = document.body.parentNode.clientHeight;
     87                bodyheight = document.body.clientHeight;
     88                var height = htmlheight > bodyheight ? htmlheight : bodyheight;
     89                $(elm).style.height = height + 'px';
     90        }
     91        function dragChange(o) {
     92                el = o.element ? o.element : $(o);
     93                var p = Position.page(el);
     94                var right = p[0];
     95                var top = p[1];
     96                var left = $('shadow').offsetWidth - (el.offsetWidth + left);
     97                var bottom = $('shadow').offsetHeight - (el.offsetHeight + top);
     98                if ( right < 1 ) el.style.left = 0;
     99                if ( top < 1 ) el.style.top = 0;
     100                if ( left < 1 ) el.style.left = (left + right) + 'px';
     101                if ( bottom < 1 ) el.style.top = (top + bottom) + 'px';
     102        }
     103        function popControl(elm) {
     104                el = $(elm);
     105                el.style.width = controldims[elm]['width'] + 'px';
     106                el.style.height = controldims[elm]['height'] + 'px';
     107                var x = ( document.body.clientWidth - controldims[elm]['width'] ) / 2;
     108                var y = ( document.body.parentNode.clientHeight - controldims[elm]['height'] ) / 2;
     109                el.style.position = 'absolute';
     110                el.style.right = '' + x + 'px';
     111                el.style.top = '' + y + 'px';
     112                el.style.zIndex = 1000;
     113                el.className='control';
     114                $('shadow').onclick = function() {unpopControl(elm);};
     115            window.onresize = function(){maxHeight('shadow');dragChange(elm);};
     116                popShadow();
     117        }
     118        function popShadow() {
     119                maxHeight('shadow');
     120                var shadow = $('shadow');
     121                shadow.style.zIndex = 999;
     122                shadow.style.display = 'block';
     123            new Effect.Opacity('shadow', {duration:0.5, from:0.0, to:0.2});
     124        }
     125        function unpopShadow() {
     126            new Effect.Opacity('shadow', {to:0.0});
     127                $('shadow').style.display = 'none';
     128        }
     129        function unpopControl(el) {
     130                $(el).className='hidden';
     131                unpopShadow();
     132        }
     133        function serializeAll() {
     134        <?php foreach ( $wp_registered_sidebars as $index => $sidebar ) : ?>
     135                $('<?php echo $index; ?>order').value = Sortable.serialize('<?php echo $index; ?>');
     136        <?php endforeach; ?>
     137        }
     138        function updateAll() {
     139                resetDroppableHeights();
     140                resetPaletteHeight();
     141                cols.map(function(o){
     142                        var pm = $(o+'placematt');
     143                        if ( $(o).childNodes.length == 0 ) {
     144                                pm.style.display = 'block';
     145                                Position.absolutize(o+'placematt');
     146                        } else {
     147                                pm.style.display = 'none';
     148                        }
     149                });
     150        }
     151        function noSelection(event) {
     152                if ( document.selection ) {
     153                        var range = document.selection.createRange();
     154                        range.collapse(false);
     155                        range.select();
     156                        return false;
     157                }
     158        }
     159        addLoadEvent(updateAll);
     160        addLoadEvent(initWidgets);
     161        Event.observe(window, 'resize', resetPaletteHeight);
     162// ]]>
     163</script>
     164<?php
     165}
    28166add_action( 'admin_head', 'wp_widgets_admin_head' );
    29167do_action( 'sidebar_admin_setup' );
Note: See TracChangeset for help on using the changeset viewer.