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,