You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rave.apache.org by ca...@apache.org on 2012/04/26 04:35:52 UTC
svn commit: r1330635 - in /rave/trunk:
rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/
rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/
rave-portal-resources/src/main/webapp/script/
rave-portal-resources/src/test/javascri...
Author: carlucci
Date: Thu Apr 26 02:35:51 2012
New Revision: 1330635
URL: http://svn.apache.org/viewvc?rev=1330635&view=rev
Log:
RAVE-583: Refactor global widgetsByRegionIdMap javascript variable
Modified:
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/RegionWidgetTag.java
rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/mobile_home.jsp
rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/page.jsp
rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/personProfile.jsp
rave/trunk/rave-portal-resources/src/main/webapp/script/rave.js
rave/trunk/rave-portal-resources/src/test/javascript/raveSpec.js
rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/main/java/org/apache/rave/provider/opensocial/web/renderer/OpenSocialWidgetRenderer.java
rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/test/java/org/apache/rave/provider/opensocial/web/renderer/OpenSocialWidgetRendererTest.java
rave/trunk/rave-providers/rave-w3c-provider/src/main/java/org/apache/rave/provider/w3c/web/renderer/W3cWidgetRenderer.java
Modified: rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/RegionWidgetTag.java
URL: http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/RegionWidgetTag.java?rev=1330635&r1=1330634&r2=1330635&view=diff
==============================================================================
--- rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/RegionWidgetTag.java (original)
+++ rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/RegionWidgetTag.java Thu Apr 26 02:35:51 2012
@@ -37,7 +37,7 @@ public class RegionWidgetTag extends Abs
// Script block for disabled gadget
private static final String DISABLED_SCRIPT_BLOCK =
- "<script>rave.registerWidget(widgetsByRegionIdMap, %1$s, {type: 'DISABLED'," +
+ "<script>rave.registerWidget(%1$s, {type: 'DISABLED'," +
" regionWidgetId: %2$s," +
" disabledMessage: '%3$s'," +
" collapsed: %4$s," +
Modified: rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/mobile_home.jsp
URL: http://svn.apache.org/viewvc/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/mobile_home.jsp?rev=1330635&r1=1330634&r2=1330635&view=diff
==============================================================================
--- rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/mobile_home.jsp (original)
+++ rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/mobile_home.jsp Thu Apr 26 02:35:51 2012
@@ -70,7 +70,7 @@
</c:choose>
</c:set>
<div id="tab-${userPage.entityId}" class="rave-ui-tab rave-ui-tab-mobile<c:if test="${isCurrentPage}"> rave-ui-tab-selected rave-ui-tab-selected-mobile</c:if>">
- <div id="pageTitle-${userPage.entityId}" class="page-title" onclick="rave.viewPage(${userPage.entityId});"><c:out value="${userPage.name}"/></div>
+ <div id="pageTitle-${userPage.entityId}" class="page-title" onclick="rave.viewPage(${userPage.entityId});"><c:out value="${userPage.name}"/></div>
</div>
</c:forEach>
<%-- display the add page button at the end of the tabs --%>
@@ -79,7 +79,7 @@
</div>
</div>
<%-- the mobile view will only show one column of widgets --%>
- <div id="pageContent" class="pageContent-mobile">
+ <div id="pageContent" class="pageContent-mobile">
<c:forEach var="region" items="${page.regions}">
<div class="region-mobile" id="region-${region.entityId}-id">
<c:forEach var="regionWidget" items="${region.regionWidgets}">
@@ -87,8 +87,8 @@
<div class="widget-title-bar widget-title-bar-mobile" onclick="rave.toggleMobileWidget(${regionWidget.entityId});">
<span id="widget-${regionWidget.entityId}-collapse" class="widget-toolbar-toggle-collapse" title="<fmt:message key="widget.chrome.toggle"/>"></span>
<div id="widget-${regionWidget.entityId}-title" class="widget-title">
- <c:out value="${regionWidget.widget.title}"/>
- </div>
+ <c:out value="${regionWidget.widget.title}"/>
+ </div>
</div>
<div class="widget-prefs" id="widget-${regionWidget.entityId}-prefs-content"></div>
<div class="widget widget-mobile" id="widget-${regionWidget.entityId}-body">
@@ -156,19 +156,12 @@
</form>
</div>
-<portal:register-init-script location="${'BEFORE_RAVE'}">
- <script>
- //Define the global widgets map. This map will be populated by RegionWidgetRender providers.
- var widgetsByRegionIdMap = {};
- </script>
-</portal:register-init-script>
-
<portal:register-init-script location="${'AFTER_RAVE'}">
<script>
$(function() {
rave.setMobile(true);
rave.initProviders();
- rave.initWidgets(widgetsByRegionIdMap);
+ rave.initWidgets();
});
</script>
</portal:register-init-script>
\ No newline at end of file
Modified: rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/page.jsp
URL: http://svn.apache.org/viewvc/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/page.jsp?rev=1330635&r1=1330634&r2=1330635&view=diff
==============================================================================
--- rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/page.jsp (original)
+++ rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/page.jsp Thu Apr 26 02:35:51 2012
@@ -231,18 +231,12 @@
<a href="#" class="btn btn-primary" onclick="rave.layout.moveWidgetToPage($('#moveWidgetModal').data('regionWidgetId'));"><fmt:message key="_rave_client.common.move"/></a>
</div>
</div>
-<portal:register-init-script location="${'BEFORE_RAVE'}">
- <script>
- //Define the global widgets map. This map will be populated by RegionWidgetRender providers.
- var widgetsByRegionIdMap = {};
- </script>
-</portal:register-init-script>
<portal:register-init-script location="${'AFTER_RAVE'}">
<script>
$(function() {
rave.initProviders();
- rave.initWidgets(widgetsByRegionIdMap);
+ rave.initWidgets();
rave.initUI();
rave.layout.init();
});
Modified: rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/personProfile.jsp
URL: http://svn.apache.org/viewvc/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/personProfile.jsp?rev=1330635&r1=1330634&r2=1330635&view=diff
==============================================================================
--- rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/personProfile.jsp (original)
+++ rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/personProfile.jsp Thu Apr 26 02:35:51 2012
@@ -187,18 +187,11 @@
</div>
<div class="clear-float"> </div>
-<portal:register-init-script location="${'BEFORE_RAVE'}">
- <script>
- //Define the global widgets map. This map will be populated by RegionWidgetRender providers.
- var widgetsByRegionIdMap = {};
- </script>
-</portal:register-init-script>
-
<portal:register-init-script location="${'AFTER_RAVE'}">
<script>
$(function () {
rave.initProviders();
- rave.initWidgets(widgetsByRegionIdMap);
+ rave.initWidgets();
rave.initUI();
rave.layout.init();
rave.personprofile.init();
Modified: rave/trunk/rave-portal-resources/src/main/webapp/script/rave.js
URL: http://svn.apache.org/viewvc/rave/trunk/rave-portal-resources/src/main/webapp/script/rave.js?rev=1330635&r1=1330634&r2=1330635&view=diff
==============================================================================
--- rave/trunk/rave-portal-resources/src/main/webapp/script/rave.js (original)
+++ rave/trunk/rave-portal-resources/src/main/webapp/script/rave.js Thu Apr 26 02:35:51 2012
@@ -19,6 +19,7 @@
var rave = rave || (function () {
var providerMap = {};
var widgetByIdMap = {};
+ var widgetsByRegionIdMap = {};
var context = "";
var clientMessages = {};
var openAjaxHub;
@@ -840,13 +841,21 @@ var rave = rave || (function () {
return clientMessages[key] = message;
}
- function registerWidget(widgetsByRegionIdMap, regionId, widget) {
+ function registerWidget(regionId, widget) {
if (!widgetsByRegionIdMap.hasOwnProperty(regionId)) {
widgetsByRegionIdMap[regionId] = [];
}
widgetsByRegionIdMap[regionId].push(widget);
}
+ function getWidgetsByRegionIdMap() {
+ return widgetsByRegionIdMap;
+ }
+
+ function clearWidgetsByRegionIdMap() {
+ widgetsByRegionIdMap = {};
+ }
+
function initializeProviders() {
//Current providers are rave.wookie and rave.opensocial.
//Providers register themselves when loaded, so
@@ -889,7 +898,7 @@ var rave = rave || (function () {
openAjaxHub = null;
}
- function initializeWidgets(widgetsByRegionIdMap) {
+ function initializeWidgets() {
//We get the widget objects in a map keyed by region ID. The code below converts that map into a flat array
//of widgets with all the top widgets in each region first, then the seconds widgets in each region, then the
//third, etc until we have all widgets in the array. This allows us to render widgets from left to right and
@@ -1028,7 +1037,6 @@ var rave = rave || (function () {
return {
/**
* Registers the specified widget into the widgetsByRegionIdMap under the specified regionId.
- * @param widgetsByRegionIdMap The map.
* @param regionId The regionId.
* @param widget The widget.
*/
@@ -1264,6 +1272,16 @@ var rave = rave || (function () {
*
* @param message the message to log
*/
- log:log
+ log:log,
+
+ /**
+ * Returns the widgetsByRegionIdMap
+ */
+ getWidgetsByRegionIdMap:getWidgetsByRegionIdMap,
+
+ /**
+ * Clears the widgetsByRegionIdMap. Useful for testing.
+ */
+ clearWidgetsByRegionIdMap:clearWidgetsByRegionIdMap
}
})();
Modified: rave/trunk/rave-portal-resources/src/test/javascript/raveSpec.js
URL: http://svn.apache.org/viewvc/rave/trunk/rave-portal-resources/src/test/javascript/raveSpec.js?rev=1330635&r1=1330634&r2=1330635&view=diff
==============================================================================
--- rave/trunk/rave-portal-resources/src/test/javascript/raveSpec.js (original)
+++ rave/trunk/rave-portal-resources/src/test/javascript/raveSpec.js Thu Apr 26 02:35:51 2012
@@ -17,7 +17,16 @@
* under the License.
*/
describe("Rave", function() {
-
+ function registerWidgetsFromRegionIdMap(widgetsByRegionIdMap) {
+ for(var regionId in widgetsByRegionIdMap) {
+ if(widgetsByRegionIdMap.hasOwnProperty(regionId)) {
+ var widgetMap = widgetsByRegionIdMap[regionId];
+ for (var i=0; i < widgetMap.length; i++) {
+ rave.registerWidget(regionId, widgetMap[i]);
+ }
+ }
+ }
+ }
function getMockProvider(type) {
return (function() {
var called = false;
@@ -133,9 +142,11 @@ describe("Rave", function() {
];
var provider1 = getMockProvider("FOO");
var provider2 = getMockProvider("BAR");
+ rave.clearWidgetsByRegionIdMap();
+ registerWidgetsFromRegionIdMap(widgetsByRegionIdMap);
rave.registerProvider(provider1);
rave.registerProvider(provider2);
- rave.initWidgets(widgetsByRegionIdMap);
+ rave.initWidgets();
expect(provider1.initWidgetsWasCalled(2)).toBeTruthy();
expect(provider2.initWidgetsWasCalled(2)).toBeTruthy();
expect($().hasClass(HIDDEN_CLASS)).toEqual(true);
@@ -170,8 +181,10 @@ describe("Rave", function() {
originalInitWidgetFunction(widget);
widgets.push(widget);
};
+ rave.clearWidgetsByRegionIdMap();
+ registerWidgetsFromRegionIdMap(widgetsByRegionIdMap);
rave.registerProvider(provider1);
- rave.initWidgets(widgetsByRegionIdMap);
+ rave.initWidgets();
expect(provider1.initWidgetsWasCalled(12)).toBeTruthy();
for (var i = 0; i < 12; i++) {
@@ -182,21 +195,21 @@ describe("Rave", function() {
it("puts widgets in buckets keyed by regionIds", function() {
createMockJQuery();
- var widgetsByRegionIdMap = {};
+ rave.clearWidgetsByRegionIdMap();
var regionOneKey = 1;
var regionTwoKey = 2;
- rave.registerWidget(widgetsByRegionIdMap, regionOneKey, {arbitrary:"value"});
- rave.registerWidget(widgetsByRegionIdMap, regionOneKey, {arbitrary:"value"});
+ rave.registerWidget(regionOneKey, {arbitrary:"value"});
+ rave.registerWidget(regionOneKey, {arbitrary:"value"});
- rave.registerWidget(widgetsByRegionIdMap, regionTwoKey, {arbitrary:"value"});
+ rave.registerWidget(regionTwoKey, {arbitrary:"value"});
- rave.registerWidget(widgetsByRegionIdMap, regionOneKey, {arbitrary:"value"});
- rave.registerWidget(widgetsByRegionIdMap, regionOneKey, {arbitrary:"value"});
+ rave.registerWidget(regionOneKey, {arbitrary:"value"});
+ rave.registerWidget(regionOneKey, {arbitrary:"value"});
- rave.registerWidget(widgetsByRegionIdMap, regionTwoKey, {arbitrary:"value"});
+ rave.registerWidget(regionTwoKey, {arbitrary:"value"});
- expect(widgetsByRegionIdMap[regionOneKey].length).toEqual(4);
- expect(widgetsByRegionIdMap[regionTwoKey].length).toEqual(2);
+ expect(rave.getWidgetsByRegionIdMap()[regionOneKey].length).toEqual(4);
+ expect(rave.getWidgetsByRegionIdMap()[regionTwoKey].length).toEqual(2);
});
it("Renders an error gadget when invalid widget is provided", function(){
@@ -213,10 +226,13 @@ describe("Rave", function() {
var provider1 = getMockProvider("FOO");
var provider2 = getMockProvider("BAR");
+ rave.clearWidgetsByRegionIdMap();
+ registerWidgetsFromRegionIdMap(widgetsByRegionIdMap);
+
rave.registerProvider(provider1);
rave.registerProvider(provider2);
rave.addClientMessage("widget.provider.error", "This widget type is currently unsupported. Check with your administrator and be sure the correct provider is registered.");
- rave.initWidgets(widgetsByRegionIdMap);
+ rave.initWidgets();
expect($().expression()).toEqual("#widget-43-body");
expect($().html()).toEqual("This widget type is currently unsupported. Check with your administrator and be sure the correct provider is registered.");
expect(provider1.initWidgetsWasCalled(2)).toBeTruthy();
@@ -230,8 +246,9 @@ describe("Rave", function() {
widgetsByRegionIdMap[1] = [
{type:"DISABLED", regionWidgetId:20, disabledMessage: "Widget disabled"}
];
-
- rave.initWidgets(widgetsByRegionIdMap);
+ rave.clearWidgetsByRegionIdMap();
+ registerWidgetsFromRegionIdMap(widgetsByRegionIdMap);
+ rave.initWidgets();
expect($().expression()).toEqual("#widget-20-body");
expect($().html()).toEqual("Widget disabled");
});
@@ -243,8 +260,10 @@ describe("Rave", function() {
expect($().hasClass(HIDDEN_CLASS)).toEqual(true);
var widgetsByRegionIdMap = {};
+ rave.clearWidgetsByRegionIdMap();
+ registerWidgetsFromRegionIdMap(widgetsByRegionIdMap);
- rave.initWidgets(widgetsByRegionIdMap);
+ rave.initWidgets();
expect($().hasClass(HIDDEN_CLASS)).toEqual(false);
});
});
Modified: rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/main/java/org/apache/rave/provider/opensocial/web/renderer/OpenSocialWidgetRenderer.java
URL: http://svn.apache.org/viewvc/rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/main/java/org/apache/rave/provider/opensocial/web/renderer/OpenSocialWidgetRenderer.java?rev=1330635&r1=1330634&r2=1330635&view=diff
==============================================================================
--- rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/main/java/org/apache/rave/provider/opensocial/web/renderer/OpenSocialWidgetRenderer.java (original)
+++ rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/main/java/org/apache/rave/provider/opensocial/web/renderer/OpenSocialWidgetRenderer.java Thu Apr 26 02:35:51 2012
@@ -62,7 +62,7 @@ public class OpenSocialWidgetRenderer im
//Note the widgets.push() call. This defines the widget objects, which are
//added to the widgets[] array in home.jsp.
private static final String SCRIPT_BLOCK =
- "<script>rave.registerWidget(widgetsByRegionIdMap, %1$s, {type: '%2$s'," +
+ "<script>rave.registerWidget(%1$s, {type: '%2$s'," +
" regionWidgetId: %3$s," +
" widgetUrl: '%4$s', " +
" securityToken: '%5$s', " +
Modified: rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/test/java/org/apache/rave/provider/opensocial/web/renderer/OpenSocialWidgetRendererTest.java
URL: http://svn.apache.org/viewvc/rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/test/java/org/apache/rave/provider/opensocial/web/renderer/OpenSocialWidgetRendererTest.java?rev=1330635&r1=1330634&r2=1330635&view=diff
==============================================================================
--- rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/test/java/org/apache/rave/provider/opensocial/web/renderer/OpenSocialWidgetRendererTest.java (original)
+++ rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/test/java/org/apache/rave/provider/opensocial/web/renderer/OpenSocialWidgetRendererTest.java Thu Apr 26 02:35:51 2012
@@ -90,7 +90,7 @@ public class OpenSocialWidgetRendererTes
new RegionWidgetPreference(3L, 1L, null, null)));
final String markup =
- "<script>rave.registerWidget(widgetsByRegionIdMap, 1, {type: 'OpenSocial'," +
+ "<script>rave.registerWidget(1, {type: 'OpenSocial'," +
" regionWidgetId: 1," +
" widgetUrl: '" + VALID_GADGET_URL +"', " +
" securityToken: '" + VALID_SECURITY_TOKEN + "', " +
@@ -124,7 +124,7 @@ public class OpenSocialWidgetRendererTes
rw.setRegion(region);
final String markup =
- "<script>rave.registerWidget(widgetsByRegionIdMap, 1, {type: 'OpenSocial'," +
+ "<script>rave.registerWidget(1, {type: 'OpenSocial'," +
" regionWidgetId: null," +
" widgetUrl: 'null', " +
" securityToken: 'null', " +
Modified: rave/trunk/rave-providers/rave-w3c-provider/src/main/java/org/apache/rave/provider/w3c/web/renderer/W3cWidgetRenderer.java
URL: http://svn.apache.org/viewvc/rave/trunk/rave-providers/rave-w3c-provider/src/main/java/org/apache/rave/provider/w3c/web/renderer/W3cWidgetRenderer.java?rev=1330635&r1=1330634&r2=1330635&view=diff
==============================================================================
--- rave/trunk/rave-providers/rave-w3c-provider/src/main/java/org/apache/rave/provider/w3c/web/renderer/W3cWidgetRenderer.java (original)
+++ rave/trunk/rave-providers/rave-w3c-provider/src/main/java/org/apache/rave/provider/w3c/web/renderer/W3cWidgetRenderer.java Thu Apr 26 02:35:51 2012
@@ -60,12 +60,12 @@ public class W3cWidgetRenderer implement
this.userService = userService;
this.scriptManager = scriptManager;
}
-
+
/**
* The script block template
*/
private static final String SCRIPT_BLOCK =
- "<script>rave.registerWidget(widgetsByRegionIdMap, %1$s, {type: '%2$s'," +
+ "<script>rave.registerWidget(%1$s, {type: '%2$s'," +
" regionWidgetId: %3$s," +
" widgetUrl: '%4$s', " +
" height: '%5$s', " +
@@ -93,14 +93,14 @@ public class W3cWidgetRenderer implement
if(!WIDGET_TYPE.equals(widget.getType())) {
throw new NotSupportedException("Invalid widget type passed to renderer: " + widget.getType());
}
-
+
String widgetScript = getWidgetScript(item);
scriptManager.registerScriptBlock(widgetScript, ScriptLocation.AFTER_RAVE, RenderScope.CURRENT_REQUEST, context);
logger.debug("Gadget Script Data: " + widgetScript);
return String.format(MARKUP, item.getEntityId());
}
-
+
/**
* Create a widget script block
* @param item the RegionWidget to create a script block for
@@ -108,17 +108,17 @@ public class W3cWidgetRenderer implement
*/
private String getWidgetScript(RegionWidget item) {
User user = userService.getAuthenticatedUser();
-
+
//
// For the shared data key we use the RegionWidget entity ID.
//
String sharedDataKey = String.valueOf(item.getEntityId());
-
+
//
// Get the Rave Widget for this regionWidget instance
//
W3CWidget contextualizedWidget = (W3CWidget) widgetService.getWidget(user, sharedDataKey, item.getWidget());
-
+
//
// TODO make this do something useful; currently these preferences aren't
// actually available in the Widget Instance as prefs are managed separately in Wookie
@@ -133,7 +133,7 @@ public class W3cWidgetRenderer implement
}
}
}
-
+
//
// Use width and height attributes if available, otherwise set to "100%"
//