Author: psharples
Date: Sun Sep 23 10:42:53 2012
New Revision: 1389007

URL: http://svn.apache.org/viewvc?rev=1389007&view=rev
Log:
Improvements made to the rendering of dynamically added widgets. Before this 
update, the widgets were missing the styling & menu handlers once they loaded. 
SEE RAVE-743.

Modified:
    rave/trunk/rave-portal-resources/src/main/webapp/static/script/rave.js
    
rave/trunk/rave-portal-resources/src/main/webapp/static/script/rave_layout.js

Modified: rave/trunk/rave-portal-resources/src/main/webapp/static/script/rave.js
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-portal-resources/src/main/webapp/static/script/rave.js?rev=1389007&r1=1389006&r2=1389007&view=diff
==============================================================================
--- rave/trunk/rave-portal-resources/src/main/webapp/static/script/rave.js 
(original)
+++ rave/trunk/rave-portal-resources/src/main/webapp/static/script/rave.js Sun 
Sep 23 10:42:53 2012
@@ -889,7 +889,8 @@ var rave = rave || (function () {
             displayEmptyPageMessage:displayEmptyPageMessage,
             displayUsersOfWidget:displayUsersOfWidget,
             showInfoMessage:showInfoMessage,
-            registerPopup:registerPopup
+            registerPopup:registerPopup,
+            styleWidgetButtons: styleWidgetButtons
         };
 
     })();
@@ -970,20 +971,24 @@ var rave = rave || (function () {
         openAjaxHub = null;
     }
 
-    function renderNewWidget(regionWidgetId){
+    function renderNewWidget(regionWidgetId, init){
         // When run as the callback argument supplied to 
rave.api.rpc.addWidgetToPage
         // this method will render the widget in the current page.
-
         // load widget into a placeholder element
         var placeholder = document.createElement("div");
-        
$(placeholder).load(rave.getContext()+"/api/rest/regionwidget/"+regionWidgetId, 
function(){
-          // prepend to first region
-          var region = $("#region-1-id");
-          region.prepend(placeholder);
-          // remove the placeholder around the widget-wrapper
-          region.children(":first").children(":first").unwrap();
-          // initialize
-          initializeWidgets();
+        
$(placeholder).load(rave.getContext()+"api/rest/regionwidget/"+regionWidgetId, 
function(){
+            var $firstRegion = $(".region:not(.region-locked):first")
+            var firstRegionId = ($firstRegion).attr('id');
+            // prepend to first region
+            var region = $("#"+firstRegionId);
+            region.prepend(placeholder);
+            // remove the placeholder around the widget-wrapper
+            region.children(":first").children(":first").unwrap();
+            if(init){
+                initializeWidgets();
+                rave.styleWidgetButtons(regionWidgetId);
+                rave.layout.bindWidgetMenu(regionWidgetId);
+            }
         });
     }
 
@@ -1479,6 +1484,8 @@ var rave = rave || (function () {
          * @param message The message to display.
          */
         showInfoMessage:ui.showInfoMessage,
+        
+        styleWidgetButtons : ui.styleWidgetButtons,
 
         /**
          * Returns a language specific message based on the supplied key

Modified: 
rave/trunk/rave-portal-resources/src/main/webapp/static/script/rave_layout.js
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-portal-resources/src/main/webapp/static/script/rave_layout.js?rev=1389007&r1=1389006&r2=1389007&view=diff
==============================================================================
--- 
rave/trunk/rave-portal-resources/src/main/webapp/static/script/rave_layout.js 
(original)
+++ 
rave/trunk/rave-portal-resources/src/main/webapp/static/script/rave_layout.js 
Sun Sep 23 10:42:53 2012
@@ -559,11 +559,76 @@ rave.layout = rave.layout || (function()
         }
 
         /**
-         * Initializes the private widgetMenu closure
+         * Initializes a single widgets private widgetMenu closure
          * - binds click event handler to menu button
          * - binds menu item click event handlers
          * - binds body click event handler to close the menu
          */
+        function bindWidgetMenu(widgetId){
+            // setup the move to page menu item
+            $menuItemMove = $("#widget-" + widgetId + "-menu-move-item");
+            if (!$menuItemMove.hasClass("menu-item-disabled")) {
+                $menuItemMove.bind('click', function(event) {
+                    var regionWidgetId = rave.getObjectIdFromDomId(this.id);
+                    // Clear the dropdown box; needing to do this may be a bug?
+                    $('.dropdown').removeClass('open');
+                    // Open the modal
+                    $("#moveWidgetModal").data('regionWidgetId', 
regionWidgetId);
+                    $("#moveWidgetModal").modal('show');
+
+                    // prevent the menu button click event from bubbling up to 
parent
+                    // DOM object event handlers such as the page tab click 
event
+                    event.stopPropagation();
+                });
+            }
+
+            // setup the delete widget menu item
+            $menuItemDelete  = $("#widget-" + widgetId + "-menu-delete-item");
+            if (!$menuItemDelete.hasClass("menu-item-disabled")) {
+                $menuItemDelete.bind('click', function(event) {
+                    var regionWidgetId = rave.getObjectIdFromDomId(this.id);
+
+                    // invoke the rpc call to remove the widget from the page
+                    rave.layout.deleteRegionWidget(regionWidgetId);
+
+                    // prevent the menu button click event from bubbling up to 
parent
+                    // DOM object event handlers such as the page tab click 
event
+                    event.stopPropagation();
+                });
+            }
+
+            // setup the maximize widget menu item
+            $menuItemMaximize  = $("#widget-" + widgetId + 
"-menu-maximize-item");
+            if (!$menuItemMaximize.hasClass("menu-item-disabled")) {
+                $menuItemMaximize.bind('click', function(event) {
+                    var regionWidgetId = rave.getObjectIdFromDomId(this.id);
+
+                    // maximize the widget
+                    rave.maximizeWidget({data: {id: regionWidgetId}});
+                    // prevent the menu button click event from bubbling up to 
parent
+                    // DOM object event handlers such as the page tab click 
event
+                    event.stopPropagation();
+                });
+            }
+
+            // setup the about this widget menu item
+            $menuItemAbout  = $("#widget-" + widgetId + "-menu-about-item");
+            if (!$menuItemAbout.hasClass("menu-item-disabled")) {
+                $menuItemAbout.bind('click', function(event) {
+                    var regionWidget = 
rave.getRegionWidgetById(rave.getObjectIdFromDomId(this.id));
+
+                    // go to the widget detail page
+                    rave.viewWidgetDetail(regionWidget.widgetId, 
getCurrentPageId());
+                    // prevent the menu button click event from bubbling up to 
parent
+                    // DOM object event handlers such as the page tab click 
event
+                    event.stopPropagation();
+                });
+            }
+        }
+        
+        /**
+         * Initializes ALL widgets private widgetMenu closure
+         */
         function init() {
             // loop over each widget-menu and initialize the menu items
             // note: the edit prefs menu item is by default rendered disabled
@@ -572,66 +637,7 @@ rave.layout = rave.layout || (function()
             //       the menu item
             $(".widget-menu").each(function(index, element){
                 var widgetId = rave.getObjectIdFromDomId(element.id);
-
-                // setup the move to page menu item
-                $menuItemMove = $("#widget-" + widgetId + "-menu-move-item");
-                if (!$menuItemMove.hasClass("menu-item-disabled")) {
-                    $menuItemMove.bind('click', function(event) {
-                        var regionWidgetId = 
rave.getObjectIdFromDomId(this.id);
-                        // Clear the dropdown box; needing to do this may be a 
bug?
-                        $('.dropdown').removeClass('open');
-                        // Open the modal
-                        $("#moveWidgetModal").data('regionWidgetId', 
regionWidgetId);
-                        $("#moveWidgetModal").modal('show');
-
-                        // prevent the menu button click event from bubbling 
up to parent
-                        // DOM object event handlers such as the page tab 
click event
-                        event.stopPropagation();
-                    });
-                }
-
-                // setup the delete widget menu item
-                $menuItemDelete  = $("#widget-" + widgetId + 
"-menu-delete-item");
-                if (!$menuItemDelete.hasClass("menu-item-disabled")) {
-                    $menuItemDelete.bind('click', function(event) {
-                        var regionWidgetId = 
rave.getObjectIdFromDomId(this.id);
-
-                        // invoke the rpc call to remove the widget from the 
page
-                        rave.layout.deleteRegionWidget(regionWidgetId);
-
-                        // prevent the menu button click event from bubbling 
up to parent
-                        // DOM object event handlers such as the page tab 
click event
-                        event.stopPropagation();
-                    });
-                }
-
-                // setup the maximize widget menu item
-                $menuItemMaximize  = $("#widget-" + widgetId + 
"-menu-maximize-item");
-                if (!$menuItemMaximize.hasClass("menu-item-disabled")) {
-                    $menuItemMaximize.bind('click', function(event) {
-                        var regionWidgetId = 
rave.getObjectIdFromDomId(this.id);
-
-                        // maximize the widget
-                        rave.maximizeWidget({data: {id: regionWidgetId}});
-                        // prevent the menu button click event from bubbling 
up to parent
-                        // DOM object event handlers such as the page tab 
click event
-                        event.stopPropagation();
-                    });
-                }
-
-                // setup the about this widget menu item
-                $menuItemAbout  = $("#widget-" + widgetId + 
"-menu-about-item");
-                if (!$menuItemAbout.hasClass("menu-item-disabled")) {
-                    $menuItemAbout.bind('click', function(event) {
-                        var regionWidget = 
rave.getRegionWidgetById(rave.getObjectIdFromDomId(this.id));
-
-                        // go to the widget detail page
-                        rave.viewWidgetDetail(regionWidget.widgetId, 
getCurrentPageId());
-                        // prevent the menu button click event from bubbling 
up to parent
-                        // DOM object event handlers such as the page tab 
click event
-                        event.stopPropagation();
-                    });
-                }
+                bindWidgetMenu(widgetId);
             });
         }
 
@@ -664,6 +670,7 @@ rave.layout = rave.layout || (function()
 
         return {
             init: init,
+            bindWidgetMenu : bindWidgetMenu,
             hideAll: hideAllMenus,
             hide: hideMenu,
             show: showMenu,
@@ -805,6 +812,7 @@ rave.layout = rave.layout || (function()
         hideWidgetMenu: widgetMenu.hide,
         deleteRegionWidget: deleteRegionWidget,
         enableEditPrefsMenuItem: widgetMenu.enableEditPrefsMenuItem,
+        bindWidgetMenu: widgetMenu.bindWidgetMenu,
         addPage: addPage,
         updatePage: updatePage,
         movePage: movePage,


Reply via email to