You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rave.apache.org by mp...@apache.org on 2011/12/09 20:54:31 UTC

svn commit: r1212601 - in /incubator/rave/trunk: rave-components/rave-core/src/main/java/org/apache/rave/portal/model/ rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/ rave-portal-resources/src/main/resources/ rave-portal-resource...

Author: mpierce
Date: Fri Dec  9 19:54:31 2011
New Revision: 1212601

URL: http://svn.apache.org/viewvc?rev=1212601&view=rev
Log:
(Rave-210) Committing Venkat's patch for disabling widgets

Modified:
    incubator/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/Widget.java
    incubator/rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/AbstractContextAwareSingletonBeanDependentTag.java
    incubator/rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/RegionWidgetTag.java
    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/jsp/views/admin/widgetdetail.jsp
    incubator/rave/trunk/rave-portal-resources/src/main/webapp/script/rave.js
    incubator/rave/trunk/rave-portal-resources/src/test/javascript/raveSpec.js

Modified: incubator/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/Widget.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/Widget.java?rev=1212601&r1=1212600&r2=1212601&view=diff
==============================================================================
--- incubator/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/Widget.java (original)
+++ incubator/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/model/Widget.java Fri Dec  9 19:54:31 2011
@@ -157,6 +157,14 @@ public class Widget implements BasicEnti
     @JoinColumn(name = "owner_id")
     private User owner;
 
+    @XmlElement
+    @Basic @Column(name = "disable_rendering")
+    private boolean disableRendering;
+
+    @XmlElement
+    @Basic @Column(name = "disable_rendering_message")
+    private String disableRenderingMessage;
+
     @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval = true)
     @JoinColumn(name = "widget_id", referencedColumnName = "entity_id")
     private List<WidgetRating> ratings;
@@ -303,6 +311,22 @@ public class Widget implements BasicEnti
         this.ratings = ratings;
     }
 
+    public boolean isDisableRendering() {
+        return disableRendering;
+    }
+
+    public void setDisableRendering(boolean disableRendering) {
+        this.disableRendering = disableRendering;
+    }
+
+    public String getDisableRenderingMessage() {
+        return disableRenderingMessage;
+    }
+
+    public void setDisableRenderingMessage(String disableRenderingMessage) {
+        this.disableRenderingMessage = disableRenderingMessage;
+    }
+
     @Override
     public boolean equals(Object obj) {
         if (obj == null) {
@@ -337,7 +361,9 @@ public class Widget implements BasicEnti
                 ", author='" + author + '\'' +
                 ", description='" + description + '\'' +
                 ", widgetStatus=" + widgetStatus + '\'' +
-                ", owner=" + owner +
+                ", owner=" + owner + '\'' +
+                ", disable_rendering=" + disableRendering + '\'' +
+                ", disable_rendering_message=" + disableRenderingMessage +
                 '}';
     }
 }

Modified: incubator/rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/AbstractContextAwareSingletonBeanDependentTag.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/AbstractContextAwareSingletonBeanDependentTag.java?rev=1212601&r1=1212600&r2=1212601&view=diff
==============================================================================
--- incubator/rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/AbstractContextAwareSingletonBeanDependentTag.java (original)
+++ incubator/rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/AbstractContextAwareSingletonBeanDependentTag.java Fri Dec  9 19:54:31 2011
@@ -23,13 +23,11 @@ import org.apache.rave.portal.web.render
 import org.springframework.context.ApplicationContext;
 import org.springframework.web.context.support.WebApplicationContextUtils;
 
-import javax.naming.Context;
 import javax.servlet.ServletContext;
 import javax.servlet.jsp.JspException;
 import javax.servlet.jsp.tagext.TagSupport;
 import java.io.IOException;
 import java.util.HashMap;
-import java.util.Map;
 
 /**
  * Abstract
@@ -70,6 +68,10 @@ public abstract class AbstractContextAwa
     }
 
     private T getBeanFromContext() throws JspException {
+        return getBeanFromContext(clazz);
+    }
+
+    protected <E> E getBeanFromContext(Class<E> clazz ) throws JspException {
         ServletContext currentServletContext = pageContext.getServletContext();
         ApplicationContext springContext = WebApplicationContextUtils.getRequiredWebApplicationContext(currentServletContext);
         return springContext.getBean(clazz);

Modified: incubator/rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/RegionWidgetTag.java
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/RegionWidgetTag.java?rev=1212601&r1=1212600&r2=1212601&view=diff
==============================================================================
--- incubator/rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/RegionWidgetTag.java (original)
+++ incubator/rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/RegionWidgetTag.java Fri Dec  9 19:54:31 2011
@@ -19,8 +19,13 @@
 
 package org.apache.rave.portal.web.tag;
 
+import org.apache.commons.lang.StringEscapeUtils;
 import org.apache.rave.portal.model.RegionWidget;
+import org.apache.rave.portal.web.renderer.RenderScope;
 import org.apache.rave.portal.web.renderer.RenderService;
+import org.apache.rave.portal.web.renderer.ScriptLocation;
+import org.apache.rave.portal.web.renderer.ScriptManager;
+
 import javax.servlet.jsp.JspException;
 
 /**
@@ -30,6 +35,13 @@ public class RegionWidgetTag extends Abs
 
     private RegionWidget regionWidget;
 
+    // Script block for disabled gadget
+    private static final String DISABLED_SCRIPT_BLOCK =
+            "<script>rave.registerWidget(widgetsByRegionIdMap, %1$s, {type: 'DISABLED'," +
+            " regionWidgetId: %2$s," +
+            " disabledMessage: '%3$s'," +
+            " collapsed: %4$s});</script>";
+
     public RegionWidgetTag() {
         super(RenderService.class);
     }
@@ -50,10 +62,21 @@ public class RegionWidgetTag extends Abs
      */
     @Override
     public int doStartTag() throws JspException {
-        if (regionWidget != null && getBean().getSupportedWidgetTypes().contains(regionWidget.getWidget().getType())) {
-            writeString(getBean().render(regionWidget, getContext()));
-        } else {
-            throw new JspException("Unsupported regionWidget type or regionWidget not set: " + regionWidget);
+
+        if (regionWidget != null && getBean().getSupportedWidgetTypes().contains(regionWidget.getWidget().getType()) ) {
+            if ( regionWidget.getWidget().isDisableRendering() ) {
+                ScriptManager scriptManager = getBeanFromContext(ScriptManager.class);
+                String widgetScript = String.format(DISABLED_SCRIPT_BLOCK, regionWidget.getRegion().getEntityId(),
+                        regionWidget.getEntityId(),
+                        StringEscapeUtils.escapeJavaScript(regionWidget.getWidget().getDisableRenderingMessage()),
+                        regionWidget.isCollapsed());
+                scriptManager.registerScriptBlock(widgetScript, ScriptLocation.AFTER_RAVE, RenderScope.CURRENT_REQUEST, getContext());
+            } else {
+                writeString(getBean().render(regionWidget, getContext()));
+            }
+        }
+        else {
+                throw new JspException("Unsupported regionWidget type or regionWidget not set: " + regionWidget);
         }
         //Certain JSP implementations use tag pools.  Setting the regionWidget to null ensures that there is no chance a given tag
         //will accidentally re-use a region widget if the attribute in the JSP is empty

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=1212601&r1=1212600&r2=1212601&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 Fri Dec  9 19:54:31 2011
@@ -178,6 +178,8 @@ widget.author=Author
 widget.authorEmail=Author's email address
 widget.description=Description
 widget.description.required=Description is required
+widget.disableRendering=Disable Gadget
+widget.disableRenderingMessage=Disable Gadget Message
 widget.screenshotUrl=Screenshot
 widget.screenshotUrl.malformed=URL is malformed
 widget.thumbnailUrl=Thumbnail

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=1212601&r1=1212600&r2=1212601&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 Fri Dec  9 19:54:31 2011
@@ -178,6 +178,8 @@ widget.author=Eigenaar
 widget.authorEmail=E-mail adres eigenaar
 widget.description=Beschrijving
 widget.description.required=Beschrijving is verplicht
+widget.disableRendering=Uit te schakelen Gadget
+widget.disableRenderingMessage=Uit te schakelen Gadget Message
 widget.screenshotUrl=Screenshot
 widget.screenshotUrl.malformed=URL is niet correct
 widget.thumbnailUrl=Miniatuur

Modified: incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/admin/widgetdetail.jsp
URL: http://svn.apache.org/viewvc/incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/admin/widgetdetail.jsp?rev=1212601&r1=1212600&r2=1212601&view=diff
==============================================================================
--- incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/admin/widgetdetail.jsp (original)
+++ incubator/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/admin/widgetdetail.jsp Fri Dec  9 19:54:31 2011
@@ -99,6 +99,18 @@
                             </p>
 
                             <p>
+                                <form:label path="disableRendering"><fmt:message key="widget.disableRendering"/></form:label>
+                                <form:checkbox path="disableRendering" id="disableRendering"/>
+                                <form:errors path="disableRendering" cssClass="error"/>
+                            </p>
+
+                            <p>
+                                <form:label path="disableRenderingMessage"><fmt:message key="widget.disableRenderingMessage"/></form:label>
+                                <form:input path="disableRenderingMessage" cssClass="long" autofocus="autofocus"/>
+                                <form:errors path="disableRenderingMessage" cssClass="error"/>
+                            </p>
+
+                            <p>
                                 <form:label path="widgetStatus"><fmt:message key="widget.widgetStatus"/></form:label>
                                 <form:select path="widgetStatus" items="${widgetStatus}"/>
                             </p>

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=1212601&r1=1212600&r2=1212601&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 Fri Dec  9 19:54:31 2011
@@ -615,6 +615,10 @@ var rave = rave || (function() {
     }
 
     function initializeWidget(widget) {
+        if (widget.type == "DISABLED") {
+            renderDisabledWidget(widget.regionWidgetId, unescape(widget.disabledMessage));
+            return;
+        }
         var provider = providerMap[widget.type];
         if (typeof provider == "undefined") {
             renderErrorWidget(widget.regionWidgetId, WIDGET_PROVIDER_ERROR);
@@ -640,6 +644,10 @@ var rave = rave || (function() {
         $("#widget-" + id + "-body").html(message);
     }
 
+    function renderDisabledWidget(id, message) {
+        $("#widget-" + id + "-body").html(message);
+    }
+
     function updateContext(contextPath) {
         context = contextPath;
     }

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=1212601&r1=1212600&r2=1212601&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 Fri Dec  9 19:54:31 2011
@@ -211,6 +211,19 @@ describe("Rave", function() {
             expect(provider1.initWidgetsWasCalled(2)).toBeTruthy();
             expect(provider2.initWidgetsWasCalled(2)).toBeTruthy();
         });
+
+        it("Renders a disabled gadget when disabled flag is set", function(){
+            createMockJQuery();
+
+            var widgetsByRegionIdMap = {};
+            widgetsByRegionIdMap[1] = [
+                    {type:"DISABLED",  regionWidgetId:20, disabledMessage: "Widget disabled"}
+            ];
+
+            rave.initWidgets(widgetsByRegionIdMap);
+            expect($().expression()).toEqual("#widget-20-body");
+            expect($().html()).toEqual("Widget disabled");
+        });
         
         it("Renders the empty page message when page has no widgets", function(){
             var HIDDEN_CLASS = "hidden";