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";