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">&nbsp;</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%"
         //