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 2011/12/22 18:18:15 UTC

svn commit: r1222358 - in /incubator/rave/trunk: rave-portal-resources/src/main/resources/ rave-portal-resources/src/main/webapp/WEB-INF/tags/ rave-portal-resources/src/main/webapp/css/ rave-portal-resources/src/main/webapp/script/ rave-portal-resource...

Author: carlucci
Date: Thu Dec 22 17:18:15 2011
New Revision: 1222358

URL: http://svn.apache.org/viewvc?rev=1222358&view=rev
Log:
RAVE-394: Create an item in the Widget menu to go directly to its Widget Detail page

Modified:
    incubator/rave/trunk/rave-portal-resources/src/main/resources/messages.properties
    incubator/rave/trunk/rave-portal-resources/src/main/resources/messages_nl.properties
    incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/tags/region_widget.tag
    incubator/rave/trunk/rave-portal-resources/src/main/webapp/css/default.css
    incubator/rave/trunk/rave-portal-resources/src/main/webapp/script/rave.js
    incubator/rave/trunk/rave-portal-resources/src/main/webapp/script/rave_layout.js
    incubator/rave/trunk/rave-portal-resources/src/main/webapp/script/rave_opensocial.js
    incubator/rave/trunk/rave-portal-resources/src/test/javascript/raveSpec.js
    incubator/rave/trunk/rave-providers/rave-opensocial-provider/src/main/java/org/apache/rave/provider/opensocial/web/renderer/OpenSocialWidgetRenderer.java
    incubator/rave/trunk/rave-providers/rave-opensocial-provider/src/test/java/org/apache/rave/provider/opensocial/web/renderer/OpenSocialWidgetRendererTest.java
    incubator/rave/trunk/rave-providers/rave-w3c-provider/src/main/java/org/apache/rave/provider/w3c/web/renderer/W3cWidgetRenderer.java

Modified: incubator/rave/trunk/rave-portal-resources/src/main/resources/messages.properties
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal-resources/src/main/resources/messages.properties?rev=1222358&r1=1222357&r2=1222358&view=diff
==============================================================================
--- incubator/rave/trunk/rave-portal-resources/src/main/resources/messages.properties (original)
+++ incubator/rave/trunk/rave-portal-resources/src/main/resources/messages.properties Thu Dec 22 17:18:15 2011
@@ -208,6 +208,7 @@ widget.widgetStatus.PUBLISHED=
 
 widget.chrome.toggle=Collapse/Restore Widget
 
+widget.menu.about=About this Widget
 widget.menu.delete=Delete Widget
 widget.menu.editprefs=Edit Preferences
 widget.menu.maximize=Maximize

Modified: incubator/rave/trunk/rave-portal-resources/src/main/resources/messages_nl.properties
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal-resources/src/main/resources/messages_nl.properties?rev=1222358&r1=1222357&r2=1222358&view=diff
==============================================================================
--- incubator/rave/trunk/rave-portal-resources/src/main/resources/messages_nl.properties (original)
+++ incubator/rave/trunk/rave-portal-resources/src/main/resources/messages_nl.properties Thu Dec 22 17:18:15 2011
@@ -208,6 +208,7 @@ widget.widgetStatus.PUBLISHED=
 
 widget.chrome.toggle=In-/uitklappen widget
 
+widget.menu.about=Over deze Widget
 widget.menu.delete=Verwijder widget
 widget.menu.editprefs=Pas voorkeursinstellingen aan
 widget.menu.maximize=Maximaliseer

Modified: incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/tags/region_widget.tag
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/tags/region_widget.tag?rev=1222358&r1=1222357&r2=1222358&view=diff
==============================================================================
--- incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/tags/region_widget.tag (original)
+++ incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/tags/region_widget.tag Thu Dec 22 17:18:15 2011
@@ -63,6 +63,9 @@ Template for rendering a RegionWidget in
                     <div id="widget-${regionWidget.entityId}-menu-delete-item" class="widget-menu-item">
                         <fmt:message key="widget.menu.delete"/>
                     </div>
+                    <div id="widget-${regionWidget.entityId}-menu-about-item" class="widget-menu-item widget-menu-item-divider">
+                        <fmt:message key="widget.menu.about"/>
+                    </div>
                 </div>
             </div>
             <%-- the minimize widget button, which is hidden by default and only displays in maximized view --%>

Modified: incubator/rave/trunk/rave-portal-resources/src/main/webapp/css/default.css
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal-resources/src/main/webapp/css/default.css?rev=1222358&r1=1222357&r2=1222358&view=diff
==============================================================================
--- incubator/rave/trunk/rave-portal-resources/src/main/webapp/css/default.css (original)
+++ incubator/rave/trunk/rave-portal-resources/src/main/webapp/css/default.css Thu Dec 22 17:18:15 2011
@@ -817,6 +817,11 @@ span.error, label.error {
 .widget-menu-item-disabled {
     color: #D3D3D3;
 }
+
+.widget-menu-item-divider {
+    border-top: 1px solid #000000;
+}
+
 .widget-menu-button {
     cursor: pointer;
 }

Modified: incubator/rave/trunk/rave-portal-resources/src/main/webapp/script/rave.js
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal-resources/src/main/webapp/script/rave.js?rev=1222358&r1=1222357&r2=1222358&view=diff
==============================================================================
--- incubator/rave/trunk/rave-portal-resources/src/main/webapp/script/rave.js (original)
+++ incubator/rave/trunk/rave-portal-resources/src/main/webapp/script/rave.js Thu Dec 22 17:18:15 2011
@@ -156,7 +156,7 @@ var rave = rave || (function() {
         function initMobileWidgetUI() {
             $(".widget-wrapper").each(function(){
                 var widgetId = extractObjectIdFromElementId($(this).attr("id"));                
-                var widget = rave.getWidgetById(widgetId);
+                var widget = rave.getRegionWidgetById(widgetId);
                             
                 // init the collapse/restore toggle for the title bar                
                 $(this).find(".widget-title-bar-mobile").click({id: widgetId}, toggleCollapseAction); 
@@ -183,7 +183,7 @@ var rave = rave || (function() {
             $("#widget-" + regionWidgetId + "-min").show();                                    
             // hide the collapse/restore toggle icon in canvas mode
             $("#widget-" + regionWidgetId + "-collapse").hide();
-            var widget = rave.getWidgetById(regionWidgetId);
+            var widget = rave.getRegionWidgetById(regionWidgetId);
             if(typeof widget != "undefined" && isFunction(widget.maximize)) {
                 widget.maximize();
             }
@@ -201,7 +201,7 @@ var rave = rave || (function() {
             $("#widget-" + regionWidgetId + "-widget-menu-wrapper").show();                                                                                            
             // show the collapse/restore toggle icon
             $("#widget-" + regionWidgetId + "-collapse").show();
-            var widget = rave.getWidgetById(regionWidgetId);
+            var widget = rave.getRegionWidgetById(regionWidgetId);
             // if the widget is collapsed execute the collapse function
             // otherwise execute the minimize function
             if(typeof widget != "undefined"){
@@ -215,7 +215,7 @@ var rave = rave || (function() {
       
         function toggleCollapseAction(args) {     
             var regionWidgetId = args.data.id;
-            var widget = getWidgetById(regionWidgetId);    
+            var widget = getRegionWidgetById(regionWidgetId);
             // toggle the collapse state of the widget
             var newCollapsedValue = !widget.collapsed;
             var functionArgs = {"regionWidgetId": regionWidgetId, "collapsed": newCollapsedValue};
@@ -247,7 +247,7 @@ var rave = rave || (function() {
         
         function doWidgetUiCollapse(args) {
             // update the in-memory widget with the new collapsed status
-            rave.getWidgetById(args.regionWidgetId).collapsed = args.collapsed;
+            rave.getRegionWidgetById(args.regionWidgetId).collapsed = args.collapsed;
 
             // toggle the collapse/restore icon
             rave.toggleCollapseWidgetIcon(args.regionWidgetId);
@@ -308,7 +308,7 @@ var rave = rave || (function() {
         }
 
         function editPrefsAction(regionWidgetId) {
-            var regionWidget = getWidgetById(regionWidgetId);
+            var regionWidget = getRegionWidgetById(regionWidgetId);
             var userPrefs = regionWidget.metadata.userPrefs;
             var hasRequiredUserPrefs = false;
             
@@ -400,7 +400,7 @@ var rave = rave || (function() {
         }
 
         function saveEditPrefsAction(args) {
-            var regionWidget = getWidgetById(args.data.id);
+            var regionWidget = getRegionWidgetById(args.data.id);
             var prefsElement = $("#" + WIDGET_PREFS_CONTENT(regionWidget.regionWidgetId));
 
             var updatedPrefs = {};
@@ -489,7 +489,7 @@ var rave = rave || (function() {
          * @param widgetId identifier of the region widget
          */
         function styleWidgetButtons(widgetId) {
-            var widget = rave.getWidgetById(widgetId);
+            var widget = rave.getRegionWidgetById(widgetId);
             
             // init the widget minimize button which is hidden by default
             // and only renders when widget is in maximized view
@@ -676,7 +676,7 @@ var rave = rave || (function() {
         return context;
     }
 
-    function getWidgetById(regionWidgetId) {
+    function getRegionWidgetById(regionWidgetId) {
         return widgetByIdMap[regionWidgetId];
     }
 
@@ -684,6 +684,10 @@ var rave = rave || (function() {
         var fragment = (pageId != null) ? ("/" + pageId) : "";
         window.location.href = rave.getContext() + "page/view" + fragment;      
     }
+
+    function viewWidgetDetail(widgetId, referringPageId) {
+        window.location.href = rave.getContext() + "store/widget/" + widgetId + "?referringPageId=" + referringPageId;
+    }
     
     /**
      * Utility function to determine if a javascript object is a function
@@ -787,9 +791,9 @@ var rave = rave || (function() {
         getContext: getContext,
         
         /**
-         * Gets a widget by id
+         * Gets a regionwidget by region widget id
          */
-        getWidgetById: getWidgetById,
+        getRegionWidgetById: getRegionWidgetById,
         
         /**
          * View a page
@@ -797,6 +801,14 @@ var rave = rave || (function() {
          * @param pageId the pageId to view, or if null, the user's default page
          */
         viewPage: viewPage,
+
+        /**
+         * View the widget detail page of a widget
+         *
+         * @param widgetId to widgetId to view
+         * @param referringPageId the entityId of the page the call is coming from
+         */
+        viewWidgetDetail: viewWidgetDetail,
         
         /**
          * Toggles the collapse/restore icon of the rendered widget

Modified: incubator/rave/trunk/rave-portal-resources/src/main/webapp/script/rave_layout.js
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal-resources/src/main/webapp/script/rave_layout.js?rev=1222358&r1=1222357&r2=1222358&view=diff
==============================================================================
--- incubator/rave/trunk/rave-portal-resources/src/main/webapp/script/rave_layout.js (original)
+++ incubator/rave/trunk/rave-portal-resources/src/main/webapp/script/rave_layout.js Thu Dec 22 17:18:15 2011
@@ -162,7 +162,7 @@ rave.layout = rave.layout || (function()
             if (!$menuItemDelete.hasClass("page-menu-item-disabled")) {                            
                 $menuItemDelete.bind('click', function(event) {
                     // send the rpc request to delete the page
-                    rave.api.rest.deletePage({pageId: getCurrentPageId(), successCallback: rave.viewPage});  
+                    rave.api.rest.deletePage({pageId: getCurrentPageId(), successCallback: rave.viewPage});
                     pageMenu.hide();
                     // prevent the menu button click event from bubbling up to parent 
                     // DOM object event handlers such as the page tab click event
@@ -323,7 +323,22 @@ rave.layout = rave.layout || (function()
                         // 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("widget-menu-item-disabled")) {
+                    $menuItemAbout.bind('click', function(event) {
+                        var regionWidget = rave.getRegionWidgetById(rave.getObjectIdFromDomId(this.id));
+                        // hide the widget menu
+                        rave.layout.hideWidgetMenu(regionWidget.regionWidgetId);
+                        // 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();
+                    });
+                }
             });
 
             // close the widget menu if the user clicks outside of it

Modified: incubator/rave/trunk/rave-portal-resources/src/main/webapp/script/rave_opensocial.js
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal-resources/src/main/webapp/script/rave_opensocial.js?rev=1222358&r1=1222357&r2=1222358&view=diff
==============================================================================
--- incubator/rave/trunk/rave-portal-resources/src/main/webapp/script/rave_opensocial.js (original)
+++ incubator/rave/trunk/rave-portal-resources/src/main/webapp/script/rave_opensocial.js Thu Dec 22 17:18:15 2011
@@ -125,7 +125,7 @@ rave.opensocial = rave.opensocial || (fu
             $(getGadgetIframeByWidgetId(this.regionWidgetId)).hide();            
         };
         gadget.restore = function() {
-             renderGadgetView(rave.opensocial.VIEW_NAMES.HOME, rave.getWidgetById(this.regionWidgetId));
+             renderGadgetView(rave.opensocial.VIEW_NAMES.HOME, rave.getRegionWidgetById(this.regionWidgetId));
         };
         gadget.savePreferences = function(userPrefs) {
             this.userPrefs = userPrefs;
@@ -188,7 +188,7 @@ rave.opensocial = rave.opensocial || (fu
      * @param widgetId the widgetId
      */ 
     function getActiveGadgetHolderByWidgetId(widgetId) {
-        return rave.getWidgetById(widgetId).site.getActiveGadgetHolder();     
+        return rave.getRegionWidgetById(widgetId).site.getActiveGadgetHolder();     
     }
 
     /**
@@ -281,7 +281,7 @@ rave.opensocial = rave.opensocial || (fu
      */ 
     function setPref(args, editToken, prefName, prefValue) {        
         var widgetId = rave.getObjectIdFromDomId(args.gs.getActiveGadgetHolder().getElement().id);                               
-        var regionWidget = rave.getWidgetById(widgetId);
+        var regionWidget = rave.getRegionWidgetById(widgetId);
         // update the memory prefs object
         regionWidget.userPrefs[prefName] = prefValue;
         // persist it to database

Modified: incubator/rave/trunk/rave-portal-resources/src/test/javascript/raveSpec.js
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal-resources/src/test/javascript/raveSpec.js?rev=1222358&r1=1222357&r2=1222358&view=diff
==============================================================================
--- incubator/rave/trunk/rave-portal-resources/src/test/javascript/raveSpec.js (original)
+++ incubator/rave/trunk/rave-portal-resources/src/test/javascript/raveSpec.js Thu Dec 22 17:18:15 2011
@@ -576,7 +576,7 @@ describe("Rave", function() {
             var args = {};
             args.data = {};
             args.data.id = 99;
-            spyOn(rave, "getWidgetById").andReturn(mockWidget);
+            spyOn(rave, "getRegionWidgetById").andReturn(mockWidget);
             
             rave.maximizeWidget(args);                      
            
@@ -591,8 +591,8 @@ describe("Rave", function() {
             expect($().getValue("hideWasCalled-#widget-" + args.data.id + "-widget-menu-wrapper")).toEqual(true);  
             // verify widget minimize show was called
             expect($().getValue("showWasCalled-#widget-" + args.data.id + "-min")).toEqual(true);        
-            // verify getWidgetById called
-            expect(rave.getWidgetById).toHaveBeenCalledWith(args.data.id); 
+            // verify getRegionWidgetById called
+            expect(rave.getRegionWidgetById).toHaveBeenCalledWith(args.data.id); 
             // verify collapse/restore icon hide was called
             expect($().getValue("hideWasCalled-#widget-" + args.data.id + "-collapse")).toEqual(true);                 
             // verify widget.maximize was called
@@ -611,7 +611,7 @@ describe("Rave", function() {
             var args = {};
             args.data = {};
             args.data.id = 99;
-            spyOn(rave, "getWidgetById").andReturn(mockWidget);
+            spyOn(rave, "getRegionWidgetById").andReturn(mockWidget);
             
             rave.minimizeWidget(args);                      
             
@@ -630,8 +630,8 @@ describe("Rave", function() {
             expect($().getValue("showWasCalled-#widget-" + args.data.id + "-widget-menu-wrapper")).toEqual(true);                                  
             // verify collapse/restore icon show was called
             expect($().getValue("showWasCalled-#widget-" + args.data.id + "-collapse")).toEqual(true);                 
-            // verify getWidgetById called
-            expect(rave.getWidgetById).toHaveBeenCalledWith(args.data.id);                   
+            // verify getRegionWidgetById called
+            expect(rave.getRegionWidgetById).toHaveBeenCalledWith(args.data.id);                   
             // verify widget.minimize was called
             expect(mockWidget.minimizeWasCalled).toEqual(true);             
         });                    

Modified: incubator/rave/trunk/rave-providers/rave-opensocial-provider/src/main/java/org/apache/rave/provider/opensocial/web/renderer/OpenSocialWidgetRenderer.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-providers/rave-opensocial-provider/src/main/java/org/apache/rave/provider/opensocial/web/renderer/OpenSocialWidgetRenderer.java?rev=1222358&r1=1222357&r2=1222358&view=diff
==============================================================================
--- incubator/rave/trunk/rave-providers/rave-opensocial-provider/src/main/java/org/apache/rave/provider/opensocial/web/renderer/OpenSocialWidgetRenderer.java (original)
+++ incubator/rave/trunk/rave-providers/rave-opensocial-provider/src/main/java/org/apache/rave/provider/opensocial/web/renderer/OpenSocialWidgetRenderer.java Thu Dec 22 17:18:15 2011
@@ -68,7 +68,8 @@ public class OpenSocialWidgetRenderer im
             " securityToken: '%5$s', " +
             " metadata: %6$s," +
             " userPrefs: %7$s," +
-            " collapsed: %8$s});</script>";
+            " collapsed: %8$s, " +
+            " widgetId: %9$s});</script>";
     private static final String MARKUP = "<!-- RegionWidget %1$s placeholder -->";
 
     @Override
@@ -110,8 +111,15 @@ public class OpenSocialWidgetRenderer im
             }
         }
 
-        return String.format(SCRIPT_BLOCK, item.getRegion().getEntityId(), Constants.WIDGET_TYPE, item.getEntityId(),
-                item.getWidget().getUrl(), securityTokenService.getEncryptedSecurityToken(item),
-                openSocialService.getGadgetMetadata(item.getWidget().getUrl()), userPrefs.toString(), item.isCollapsed());
+        return String.format(SCRIPT_BLOCK,
+                item.getRegion().getEntityId(),
+                Constants.WIDGET_TYPE,
+                item.getEntityId(),
+                item.getWidget().getUrl(),
+                securityTokenService.getEncryptedSecurityToken(item),
+                openSocialService.getGadgetMetadata(item.getWidget().getUrl()),
+                userPrefs.toString(),
+                item.isCollapsed(),
+                item.getWidget().getEntityId());
     }
 }
\ No newline at end of file

Modified: incubator/rave/trunk/rave-providers/rave-opensocial-provider/src/test/java/org/apache/rave/provider/opensocial/web/renderer/OpenSocialWidgetRendererTest.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-providers/rave-opensocial-provider/src/test/java/org/apache/rave/provider/opensocial/web/renderer/OpenSocialWidgetRendererTest.java?rev=1222358&r1=1222357&r2=1222358&view=diff
==============================================================================
--- incubator/rave/trunk/rave-providers/rave-opensocial-provider/src/test/java/org/apache/rave/provider/opensocial/web/renderer/OpenSocialWidgetRendererTest.java (original)
+++ incubator/rave/trunk/rave-providers/rave-opensocial-provider/src/test/java/org/apache/rave/provider/opensocial/web/renderer/OpenSocialWidgetRendererTest.java Thu Dec 22 17:18:15 2011
@@ -95,7 +95,8 @@ public class OpenSocialWidgetRendererTes
             " securityToken: '" + VALID_SECURITY_TOKEN + "', " +
             " metadata: " + VALID_METADATA + "," +
             " userPrefs: {\"speed\":\"fast\",\"color\":\"blue\"}," +
-            " collapsed: " + VALID_COLLAPSED + "});</script>";
+            " collapsed: " + VALID_COLLAPSED + ", " +
+            " widgetId: 1});</script>";
 
         expect(securityTokenService.getEncryptedSecurityToken(rw)).andReturn(VALID_SECURITY_TOKEN);
         replay(securityTokenService);
@@ -128,7 +129,8 @@ public class OpenSocialWidgetRendererTes
             " securityToken: '" + VALID_SECURITY_TOKEN + "', " +
             " metadata: null," +
             " userPrefs: null," +
-            " collapsed: false});</script>";
+            " collapsed: false, " +
+            " widgetId: null});</script>";
 
         scriptManager.registerScriptBlock(markup, ScriptLocation.AFTER_RAVE, RenderScope.CURRENT_REQUEST, null);
         expectLastCall();

Modified: incubator/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/incubator/rave/trunk/rave-providers/rave-w3c-provider/src/main/java/org/apache/rave/provider/w3c/web/renderer/W3cWidgetRenderer.java?rev=1222358&r1=1222357&r2=1222358&view=diff
==============================================================================
--- incubator/rave/trunk/rave-providers/rave-w3c-provider/src/main/java/org/apache/rave/provider/w3c/web/renderer/W3cWidgetRenderer.java (original)
+++ incubator/rave/trunk/rave-providers/rave-w3c-provider/src/main/java/org/apache/rave/provider/w3c/web/renderer/W3cWidgetRenderer.java Thu Dec 22 17:18:15 2011
@@ -70,7 +70,8 @@ public class W3cWidgetRenderer implement
         " widgetUrl: '%4$s', " +
         " height: '%5$s', " +
         " width: '%6$s', " +
-        " collapsed: %7$s});</script>";
+        " collapsed: %7$s, " +
+        " widgetId: %8$s});</script>";
     private static final String MARKUP = "<!-- RegionWidget %1$s placeholder -->";
 
 
@@ -146,7 +147,14 @@ public class W3cWidgetRenderer implement
         //
         // Construct and return script block
         //
-        return String.format(SCRIPT_BLOCK, item.getRegion().getEntityId(), WIDGET_TYPE, item.getEntityId(),
-                contextualizedWidget.getUrl(), height, width, item.isCollapsed());
+        return String.format(SCRIPT_BLOCK,
+                item.getRegion().getEntityId(),
+                WIDGET_TYPE,
+                item.getEntityId(),
+                contextualizedWidget.getUrl(),
+                height,
+                width,
+                item.isCollapsed(),
+                item.getWidget().getEntityId());
     }
 }