You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by ta...@apache.org on 2015/06/28 00:00:02 UTC

svn commit: r1687969 - in /portals/jetspeed-2/portal/trunk: applications/jetspeed/src/main/webapp/WEB-INF/templates/layout/html/columns/ applications/jetspeed/src/main/webapp/WEB-INF/templates/layout/html/max-responsive/ applications/jetspeed/src/main/...

Author: taylor
Date: Sat Jun 27 22:00:01 2015
New Revision: 1687969

URL: http://svn.apache.org/r1687969
Log:
JS2-845: AutoRefresh feature. To enable auto-refresh for a portlet, add an entry in portlet.xml like <js:metadata name=refreshRate>30000</js:metadata>. An optional refreshFunction can also be provided. If a function is not provided, the portlet pipeline is called for a portlet window automatically. A auto-refresh function can be provided, <js:metadata name=refreshFunction>ForgottenPasswordComponent.refresh</js:metadata>. Both global and module functions are supported. Module functions should be provided as Module.Function. Angular functions are also supported: <js:metadata name=refreshFunction>angular:memoryController</js:metadata> by prefixing with angular:, and provided the controller div id for an angular controller. A  function named refresh() with no parameters is required

Added:
    portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/javascript/jetspeed/jetspeed-refresh.js
Modified:
    portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/templates/layout/html/columns/layout.vm
    portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/templates/layout/html/max-responsive/layout.vm
    portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/templates/layout/html/maximized/layout.vm
    portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/templates/layout/html/responsive/layout.vm
    portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/bootstrap-blue/header.vm
    portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/bootstrap-green/header.vm
    portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/bootstrap-red/header.vm
    portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/bootstrap/header.vm
    portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/greenearth/header.vm
    portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/inherit/header.vm
    portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/jetspeed/header.vm
    portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/oldstyle/header.vm
    portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/purpleplanet/css/styles.css
    portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/purpleplanet/header.vm
    portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/turbo/header.vm
    portals/jetspeed-2/portal/trunk/components/jetspeed-page-layout/src/main/java/org/apache/jetspeed/om/page/impl/ContentFragmentImpl.java
    portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/PortletAggregatorImpl.java
    portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/PortletRendererImpl.java
    portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/velocity/JetspeedPowerToolImpl.java
    portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/PortalReservedParameters.java
    portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/administration/PortalConfigurationConstants.java
    portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/layout/JetspeedPowerTool.java
    portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/om/page/ContentFragment.java
    portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/conf/jetspeed/jetspeed.properties

Modified: portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/templates/layout/html/columns/layout.vm
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/templates/layout/html/columns/layout.vm?rev=1687969&r1=1687968&r2=1687969&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/templates/layout/html/columns/layout.vm (original)
+++ portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/templates/layout/html/columns/layout.vm Sat Jun 27 22:00:01 2015
@@ -313,8 +313,15 @@ limitations under the License.
 			#set($col = $coords.x)
 			#set($lastRow = $columnLayout.getLastRowNumber($col))
 			#set($row = $coords.y)
-			
-			<div id='$f.id' name='$f.name' column='${col}' row='${row}' class="portal-layout-cell portal-layout-cell-${layoutType}-${row}-${col}" >
+            #set($refreshRate = "")
+            #set($refreshFunc = "")
+            #if($f.refreshRate != -1)
+              #set($refreshRate = "refreshRate='"+$f.refreshRate+"'")
+              #if ("$!f.refreshFunction" != "")
+                #set($refreshFunction = "refreshFunction='"+$f.refreshFunction+"'")
+              #end
+            #end
+			<div id='$f.id' name='$f.name' column='${col}' row='${row}' class="portal-layout-cell portal-layout-cell-${layoutType}-${row}-${col}" $refreshRate $refreshFunction>
 				
 		  #if($f.isLocked() == false)
 		  

Modified: portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/templates/layout/html/max-responsive/layout.vm
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/templates/layout/html/max-responsive/layout.vm?rev=1687969&r1=1687968&r2=1687969&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/templates/layout/html/max-responsive/layout.vm (original)
+++ portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/templates/layout/html/max-responsive/layout.vm Sat Jun 27 22:00:01 2015
@@ -18,13 +18,21 @@ limitations under the License.
 #set($f = $request.getAttribute("org.apache.jetspeed.maximized.Fragment"))
 #set($rootFragment = $myPage.rootFragment)
 #set($messages = $portletConfig.getResourceBundle($renderRequest.Locale))
+#set($refreshRate = "")
+#set($refreshFunc = "")
+#if($f.refreshRate != -1)
+    #set($refreshRate = "refreshRate='"+$f.refreshRate+"'")
+    #if ("$!f.refreshFunction" != "")
+        #set($refreshFunction = "refreshFunction='"+$f.refreshFunction+"'")
+    #end
+#end
 
 #if ($rootFragment.decoration.header)
    #parse($rootFragment.decoration.header)
 #end
 
   ## get the decorated Portlet content
-  <div id="portal-layout-$htmlUtil.getSafeElementId($myPage.id)" class="portal-layout-maxed">
+  <div id="portal-layout-$htmlUtil.getSafeElementId($myPage.id)" name='$f.name' class="portal-layout-maxed" $refreshRate $refreshFunction>
     $jetspeed.setCurrentFragment($f)    
     #parse($f.decoration.template)
   </div>

Modified: portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/templates/layout/html/maximized/layout.vm
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/templates/layout/html/maximized/layout.vm?rev=1687969&r1=1687968&r2=1687969&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/templates/layout/html/maximized/layout.vm (original)
+++ portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/templates/layout/html/maximized/layout.vm Sat Jun 27 22:00:01 2015
@@ -18,13 +18,21 @@ limitations under the License.
 #set($f = $request.getAttribute("org.apache.jetspeed.maximized.Fragment"))
 #set($rootFragment = $myPage.rootFragment)
 #set($messages = $portletConfig.getResourceBundle($renderRequest.Locale))
+#set($refreshRate = "")
+#set($refreshFunc = "")
+#if($f.refreshRate != -1)
+    #set($refreshRate = "refreshRate='"+$f.refreshRate+"'")
+    #if ("$!f.refreshFunction" != "")
+        #set($refreshFunction = "refreshFunction='"+$f.refreshFunction+"'")
+    #end
+#end
 
 #if ($rootFragment.decoration.header)
    #parse($rootFragment.decoration.header)
 #end
 
   ## get the decorated Portlet content
-  <div id="portal-layout-$htmlUtil.getSafeElementId($myPage.id)" class="portal-layout-maxed">
+  <div id="portal-layout-$htmlUtil.getSafeElementId($myPage.id)" name='$f.name' class="portal-layout-maxed" $refreshRate $refreshFunction>
     $jetspeed.setCurrentFragment($f)    
     #parse($f.decoration.template)
   </div>

Modified: portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/templates/layout/html/responsive/layout.vm
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/templates/layout/html/responsive/layout.vm?rev=1687969&r1=1687968&r2=1687969&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/templates/layout/html/responsive/layout.vm (original)
+++ portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/WEB-INF/templates/layout/html/responsive/layout.vm Sat Jun 27 22:00:01 2015
@@ -80,8 +80,16 @@ limitations under the License.
           #set($col = $coords.x)
           #set($lastRow = $columnLayout.getLastRowNumber($col))
           #set($row = $coords.y)
+          #set($refreshRate = "")
+          #set($refreshFunc = "")
+          #if($f.refreshRate != -1)
+            #set($refreshRate = "refreshRate='"+$f.refreshRate+"'")
+            #if ("$!f.refreshFunction" != "")
+                #set($refreshFunction = "refreshFunction='"+$f.refreshFunction+"'")
+            #end
+          #end
 
-            <div id='$f.id' name='$f.name' column='${col}' row='${row}' class="portal-layout-cell portal-layout-cell-${layoutType}-${row}-${col}" >
+            <div id='$f.id' name='$f.name' column='${col}' row='${row}' class="portal-layout-cell portal-layout-cell-${layoutType}-${row}-${col}"  $refreshRate $refreshFunction>
 
               #if($f.isLocked() == false)
 
@@ -105,8 +113,8 @@ limitations under the License.
                                     #set ($fd = $f.Decorator)
                                   #end
                                   #foreach($pd in $decorationFactory.getPortletDecorations($rc))
-                                  <option value='$pd' #if ($pd == $fd) SELECTED #end>$pd
-                    #end
+                                    <option value='$pd' #if ($pd == $fd) SELECTED #end>$pd
+                                  #end
                                 </select>
                             #end
                           #else

Modified: portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/bootstrap-blue/header.vm
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/bootstrap-blue/header.vm?rev=1687969&r1=1687968&r2=1687969&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/bootstrap-blue/header.vm (original)
+++ portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/bootstrap-blue/header.vm Sat Jun 27 22:00:01 2015
@@ -72,6 +72,28 @@ var JETUI_YUI = {
 #includeJavaScriptForHead()
 <link rel="stylesheet" type="text/css" href="#BaseHref()css/bootstrap/dist/css/bootstrap-blue.css"/>
 <link rel="stylesheet" type="text/css" href="#BaseHref()decorations/layout/bootstrap-blue/css/styles-new-blue.css"/>
+#if ($jetspeed.isAutoRefreshEnabled())
+<script type="text/javascript" src="#BaseHref()javascript/jetspeed/jetspeed-refresh.js"></script>
+<script type="text/javascript">
+#set ($max = $request.getAttribute("org.apache.jetspeed.maximized.Fragment"))
+#if ($max)
+  var layoutCell = "portal-layout-maxed";
+#else
+  var layoutCell = "portal-layout-cell";
+#end
+function jetspeedLoad() {
+  jetspeedRefresher.load(layoutCell, "panel-body");
+}
+if (window.addEventListener) // W3C standard
+{
+  window.addEventListener('load', jetspeedLoad, false);
+}
+else if (window.attachEvent) // Microsoft
+{
+  window.attachEvent('onload', jetspeedLoad);
+}
+</script>
+#end
 </head>
 <body class="#PageBaseCSSClass()">
 <!--  BEGIN: layout/html/jetspeed/decorator.vm -->

Modified: portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/bootstrap-green/header.vm
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/bootstrap-green/header.vm?rev=1687969&r1=1687968&r2=1687969&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/bootstrap-green/header.vm (original)
+++ portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/bootstrap-green/header.vm Sat Jun 27 22:00:01 2015
@@ -72,6 +72,28 @@ var JETUI_YUI = {
 #includeJavaScriptForHead()
 <link rel="stylesheet" type="text/css" href="#BaseHref()css/bootstrap/dist/css/bootstrap-green.css"/>
 <link rel="stylesheet" type="text/css" href="#BaseHref()decorations/layout/bootstrap-green/css/styles-new-green.css"/>
+#if ($jetspeed.isAutoRefreshEnabled())
+<script type="text/javascript" src="#BaseHref()javascript/jetspeed/jetspeed-refresh.js"></script>
+<script type="text/javascript">
+#set ($max = $request.getAttribute("org.apache.jetspeed.maximized.Fragment"))
+#if ($max)
+  var layoutCell = "portal-layout-maxed";
+#else
+  var layoutCell = "portal-layout-cell";
+#end
+function jetspeedLoad() {
+  jetspeedRefresher.load(layoutCell, "panel-body");
+}
+if (window.addEventListener) // W3C standard
+{
+  window.addEventListener('load', jetspeedLoad, false);
+}
+else if (window.attachEvent) // Microsoft
+{
+  window.attachEvent('onload', jetspeedLoad);
+}
+</script>
+#end
 </head>
 <body class="#PageBaseCSSClass()">
 <!--  BEGIN: layout/html/jetspeed/decorator.vm -->

Modified: portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/bootstrap-red/header.vm
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/bootstrap-red/header.vm?rev=1687969&r1=1687968&r2=1687969&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/bootstrap-red/header.vm (original)
+++ portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/bootstrap-red/header.vm Sat Jun 27 22:00:01 2015
@@ -72,6 +72,28 @@ var JETUI_YUI = {
 #includeJavaScriptForHead()
 <link rel="stylesheet" type="text/css" href="#BaseHref()css/bootstrap/dist/css/bootstrap-red.css"/>
 <link rel="stylesheet" type="text/css" href="#BaseHref()decorations/layout/bootstrap-red/css/styles-new-red.css"/>
+#if ($jetspeed.isAutoRefreshEnabled())
+<script type="text/javascript" src="#BaseHref()javascript/jetspeed/jetspeed-refresh.js"></script>
+<script type="text/javascript">
+#set ($max = $request.getAttribute("org.apache.jetspeed.maximized.Fragment"))
+#if ($max)
+  var layoutCell = "portal-layout-maxed";
+#else
+  var layoutCell = "portal-layout-cell";
+#end
+function jetspeedLoad() {
+  jetspeedRefresher.load(layoutCell, "panel-body");
+}
+if (window.addEventListener) // W3C standard
+{
+  window.addEventListener('load', jetspeedLoad, false);
+}
+else if (window.attachEvent) // Microsoft
+{
+  window.attachEvent('onload', jetspeedLoad);
+}
+</script>
+#end
 </head>
 <body class="#PageBaseCSSClass()">
 <!--  BEGIN: layout/html/jetspeed/decorator.vm -->

Modified: portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/bootstrap/header.vm
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/bootstrap/header.vm?rev=1687969&r1=1687968&r2=1687969&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/bootstrap/header.vm (original)
+++ portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/bootstrap/header.vm Sat Jun 27 22:00:01 2015
@@ -72,6 +72,28 @@ var JETUI_YUI = {
 #includeJavaScriptForHead()
 <link rel="stylesheet" type="text/css" href="#BaseHref()css/bootstrap/dist/css/bootstrap.css"/>
 <link rel="stylesheet" type="text/css" href="#BaseHref()decorations/layout/bootstrap/css/styles-new.css"/>
+#if ($jetspeed.isAutoRefreshEnabled())
+<script type="text/javascript" src="#BaseHref()javascript/jetspeed/jetspeed-refresh.js"></script>
+<script type="text/javascript">
+#set ($max = $request.getAttribute("org.apache.jetspeed.maximized.Fragment"))
+#if ($max)
+  var layoutCell = "portal-layout-maxed";
+#else
+  var layoutCell = "portal-layout-cell";
+#end
+function jetspeedLoad() {
+    jetspeedRefresher.load(layoutCell, "panel-body");
+}
+if (window.addEventListener) // W3C standard
+{
+    window.addEventListener('load', jetspeedLoad, false);
+}
+else if (window.attachEvent) // Microsoft
+{
+    window.attachEvent('onload', jetspeedLoad);
+}
+</script>
+#end
 </head>
 <body class="#PageBaseCSSClass()">
 <!--  BEGIN: layout/html/jetspeed/decorator.vm -->

Modified: portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/greenearth/header.vm
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/greenearth/header.vm?rev=1687969&r1=1687968&r2=1687969&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/greenearth/header.vm (original)
+++ portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/greenearth/header.vm Sat Jun 27 22:00:01 2015
@@ -70,7 +70,28 @@ var JETUI_YUI = {
 <link rel="shortcut icon" href="#BaseHref()images/jetspeed.jpg" type="image/x-icon" />
 #includeJavaScriptForHead()
 #IncludeStylesheets()
-
+#if ($jetspeed.isAutoRefreshEnabled())
+<script type="text/javascript" src="#BaseHref()javascript/jetspeed/jetspeed-refresh.js"></script>
+<script type="text/javascript">
+#set ($max = $request.getAttribute("org.apache.jetspeed.maximized.Fragment"))
+#if ($max)
+  var layoutCell = "portal-layout-maxed";
+#else
+  var layoutCell = "portal-layout-cell";
+#end
+function jetspeedLoad() {
+  jetspeedRefresher.load(layoutCell, "PContent");
+}
+if (window.addEventListener) // W3C standard
+{
+  window.addEventListener('load', jetspeedLoad, false);
+}
+else if (window.attachEvent) // Microsoft
+{
+  window.attachEvent('onload', jetspeedLoad);
+}
+</script>
+#end
 </head>
 <body class="#PageBaseCSSClass()">
 <!--  BEGIN: layout/html/jetspeed/decorator.vm -->

Modified: portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/inherit/header.vm
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/inherit/header.vm?rev=1687969&r1=1687968&r2=1687969&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/inherit/header.vm (original)
+++ portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/inherit/header.vm Sat Jun 27 22:00:01 2015
@@ -72,7 +72,28 @@ var JETUI_YUI = {
 #includeJavaScriptForHead()
 #includeInheritStylesheets()
 #IncludeStylesheets()
-
+#if ($jetspeed.isAutoRefreshEnabled())
+<script type="text/javascript" src="#BaseHref()javascript/jetspeed/jetspeed-refresh.js"></script>
+<script type="text/javascript">
+#set ($max = $request.getAttribute("org.apache.jetspeed.maximized.Fragment"))
+#if ($max)
+  var layoutCell = "portal-layout-maxed";
+#else
+  var layoutCell = "portal-layout-cell";
+#end
+function jetspeedLoad() {
+  jetspeedRefresher.load(layoutCell, "PContent");
+}
+if (window.addEventListener) // W3C standard
+{
+  window.addEventListener('load', jetspeedLoad, false);
+}
+else if (window.attachEvent) // Microsoft
+{
+  window.attachEvent('onload', jetspeedLoad);
+}
+</script>
+#end
 </head>
 <body class="#PageBaseCSSClass()">
 <!--  BEGIN: layout/html/jetspeed/decorator.vm -->

Modified: portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/jetspeed/header.vm
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/jetspeed/header.vm?rev=1687969&r1=1687968&r2=1687969&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/jetspeed/header.vm (original)
+++ portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/jetspeed/header.vm Sat Jun 27 22:00:01 2015
@@ -70,28 +70,50 @@ var JETUI_YUI = {
 <link rel="shortcut icon" href="#BaseHref()images/jetspeed.jpg" type="image/x-icon" />
 #includeJavaScriptForHead()
 #IncludeStylesheets()
-
+#if ($jetspeed.isAutoRefreshEnabled())
+<script type="text/javascript" src="#BaseHref()javascript/jetspeed/jetspeed-refresh.js"></script>
+<script type="text/javascript">
+#set ($max = $request.getAttribute("org.apache.jetspeed.maximized.Fragment"))
+#if ($max)
+  var layoutCell = "portal-layout-maxed";
+#else
+  var layoutCell = "portal-layout-cell";
+#end
+function jetspeedLoad() {
+  jetspeedRefresher.load(layoutCell, "PContent");
+}
+if (window.addEventListener) // W3C standard
+{
+  window.addEventListener('load', jetspeedLoad, false);
+}
+else if (window.attachEvent) // Microsoft
+{
+  window.attachEvent('onload', jetspeedLoad);
+}
+</script>
+#end
 </head>
-<body class="#PageBaseCSSClass()">
-<!--  BEGIN: layout/html/jetspeed/decorator.vm -->
-<!-- Page Action Bar -->
+<body class="#PageBaseCSSClass()">
+<!--  BEGIN: layout/html/jetspeed/decorator.vm -->
+<!-- Page Action Bar -->
 #if ($request.getUserPrincipal())
 <span class="layout-statusarea"><b>$jetspeed.getUserAttribute("user.name.given","") $jetspeed.getUserAttribute("user.name.family", ${request.userPrincipal.name})</b> | <a href="#BaseHref()login/logout">Log out</a></span>
-#end
+#end
 #if (!$jetspeed.isAjaxCustomizationEnabled())
 #PageActionBar()
 #end
 <!-- end of header -->
 <div id="layout-${rootFragment.id}" class="#PageBaseCSSClass()" >
-<div class="header">
-<h1 class="logo">Jetspeed 2</h1>
-<div class="menu">
+<div class="header">
+<h1 class="logo">Jetspeed 2</h1>
+<div class="menu">
 #if (!$jetspeed.isAjaxCustomizationEnabled())
-#set($pagesStandardMenu = $site.getMenu("pages"))
#if(!$pagesStandardMenu.empty)
+#set($pagesStandardMenu = $site.getMenu("pages"))
+#if(!$pagesStandardMenu.empty)
 #includeTabsNavigation($pagesStandardMenu $LEFT_TO_RIGHT)
 #end
 #end
-</div>
+</div>
 </div>
 #if (!$jetspeed.isAjaxCustomizationEnabled())
     <!-- Content Table -->

Modified: portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/oldstyle/header.vm
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/oldstyle/header.vm?rev=1687969&r1=1687968&r2=1687969&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/oldstyle/header.vm (original)
+++ portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/oldstyle/header.vm Sat Jun 27 22:00:01 2015
@@ -35,25 +35,47 @@ limitations under the License.
 <link rel="shortcut icon" href="#BaseHref()images/jetspeed.jpg" type="image/x-icon" />
 #includeJavaScriptForHead()
 #IncludeStylesheets()
-
+#if ($jetspeed.isAutoRefreshEnabled())
+<script type="text/javascript" src="#BaseHref()javascript/jetspeed/jetspeed-refresh.js"></script>
+<script type="text/javascript">
+#set ($max = $request.getAttribute("org.apache.jetspeed.maximized.Fragment"))
+#if ($max)
+  var layoutCell = "portal-layout-maxed";
+#else
+  var layoutCell = "portal-layout-cell";
+#end
+function jetspeedLoad() {
+  jetspeedRefresher.load(layoutCell, "PContent");
+}
+if (window.addEventListener) // W3C standard
+{
+  window.addEventListener('load', jetspeedLoad, false);
+}
+else if (window.attachEvent) // Microsoft
+{
+  window.attachEvent('onload', jetspeedLoad);
+}
+</script>
+#end
 </head>
-<body class="#PageBaseCSSClass()">
-<!--  BEGIN: layout/html/oldstyle/decorator.vm -->
-<!-- Page Action Bar -->
-#if ($request.getUserPrincipal())
-<a class="layout-oldstyle-logout" href="#BaseHref()login/logout">Logout</a>
-#end
-#PageActionBar()
+<body class="#PageBaseCSSClass()">
+<!--  BEGIN: layout/html/oldstyle/decorator.vm -->
+<!-- Page Action Bar -->
+#if ($request.getUserPrincipal())
+<a class="layout-oldstyle-logout" href="#BaseHref()login/logout">Logout</a>
+#end
+#PageActionBar()
 <!-- end of header -->
 </div>   
 <div id="layout-${rootFragment.id}" class="#PageBaseCSSClass()" >
-<div class="header">
-<h1 class="logo">Jetspeed 2</h1>
-<div class="menu">
-#set($pagesStandardMenu = $site.getMenu("pages"))
#if(!$pagesStandardMenu.empty)
+<div class="header">
+<h1 class="logo">Jetspeed 2</h1>
+<div class="menu">
+#set($pagesStandardMenu = $site.getMenu("pages"))
+#if(!$pagesStandardMenu.empty)
 #includeTabsNavigation($pagesStandardMenu $LEFT_TO_RIGHT)
 #end
-</div>
+</div>
 </div>
     <!-- Content Table -->
     <table cellpadding="0" cellspacing="0" border="0" width="100%" id="main">
@@ -85,4 +107,4 @@ limitations under the License.
                 ## $jetspeed.include($jetspeed.currentFragment)
                 
                 <!--  END: layout/html/tigris/decorator.vm -->
-                
+                

Modified: portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/purpleplanet/css/styles.css
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/purpleplanet/css/styles.css?rev=1687969&r1=1687968&r2=1687969&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/purpleplanet/css/styles.css (original)
+++ portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/purpleplanet/css/styles.css Sat Jun 27 22:00:01 2015
@@ -182,7 +182,7 @@ background-position: 0px -30px
 }
 
 .layout-purpleplanet .menu {
-    background:url(../images/blue_gradient.png) #3A0058;
+    background:url(../images/blue_gradient.gif) #3A0058;
     padding:1px;
     border-top:1px solid #fff;
 }

Modified: portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/purpleplanet/header.vm
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/purpleplanet/header.vm?rev=1687969&r1=1687968&r2=1687969&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/purpleplanet/header.vm (original)
+++ portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/purpleplanet/header.vm Sat Jun 27 22:00:01 2015
@@ -70,7 +70,28 @@ var JETUI_YUI = {
 <link rel="shortcut icon" href="#BaseHref()images/jetspeed.jpg" type="image/x-icon" />
 #includeJavaScriptForHead()
 #IncludeStylesheets()
-
+#if ($jetspeed.isAutoRefreshEnabled())
+<script type="text/javascript" src="#BaseHref()javascript/jetspeed/jetspeed-refresh.js"></script>
+<script type="text/javascript">
+#set ($max = $request.getAttribute("org.apache.jetspeed.maximized.Fragment"))
+#if ($max)
+  var layoutCell = "portal-layout-maxed";
+#else
+  var layoutCell = "portal-layout-cell";
+#end
+function jetspeedLoad() {
+  jetspeedRefresher.load(layoutCell, "PContent");
+}
+if (window.addEventListener) // W3C standard
+{
+  window.addEventListener('load', jetspeedLoad, false);
+}
+else if (window.attachEvent) // Microsoft
+{
+  window.attachEvent('onload', jetspeedLoad);
+}
+</script>
+#end
 </head>
 <body class="#PageBaseCSSClass()">
 <!--  BEGIN: layout/html/jetspeed/decorator.vm -->

Modified: portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/turbo/header.vm
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/turbo/header.vm?rev=1687969&r1=1687968&r2=1687969&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/turbo/header.vm (original)
+++ portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/decorations/layout/turbo/header.vm Sat Jun 27 22:00:01 2015
@@ -70,7 +70,28 @@ var JETUI_YUI = {
 <link rel="shortcut icon" href="#BaseHref()images/jetspeed.jpg" type="image/x-icon" />
 #includeJavaScriptForHead()
 #IncludeStylesheets()
-
+#if ($jetspeed.isAutoRefreshEnabled())
+<script type="text/javascript" src="#BaseHref()javascript/jetspeed/jetspeed-refresh.js"></script>
+<script type="text/javascript">
+#set ($max = $request.getAttribute("org.apache.jetspeed.maximized.Fragment"))
+#if ($max)
+  var layoutCell = "portal-layout-maxed";
+#else
+  var layoutCell = "portal-layout-cell";
+#end
+function jetspeedLoad() {
+  jetspeedRefresher.load(layoutCell, "PContent");
+}
+if (window.addEventListener) // W3C standard
+{
+  window.addEventListener('load', jetspeedLoad, false);
+}
+else if (window.attachEvent) // Microsoft
+{
+  window.attachEvent('onload', jetspeedLoad);
+}
+</script>
+#end
 </head>
 <body class="#PageBaseCSSClass()">
 <!--  BEGIN: layout/html/jetspeed/decorator.vm -->

Added: portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/javascript/jetspeed/jetspeed-refresh.js
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/javascript/jetspeed/jetspeed-refresh.js?rev=1687969&view=auto
==============================================================================
--- portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/javascript/jetspeed/jetspeed-refresh.js (added)
+++ portals/jetspeed-2/portal/trunk/applications/jetspeed/src/main/webapp/javascript/jetspeed/jetspeed-refresh.js Sat Jun 27 22:00:01 2015
@@ -0,0 +1,117 @@
+var jetspeedRefresher = (function() {
+
+    return {
+        reloadPortlet : function(self, id, name, msWait, pContent) {
+            self.getContent(id, name, pContent);
+            setTimeout(self.reloadPortlet, msWait, self, id, name, msWait, pContent);
+        },
+
+        reloadFunction : function(self, id, name, msWait, f, pContent) {
+            if (f.indexOf(".") == -1) {
+                if (f.indexOf("angular") == 0) {
+                    var arguments = f.split(":");
+                    angular.element(document.getElementById(arguments[1])).scope().refresh();
+                }
+                else {
+                    window[f](id, name); // global function
+                }
+            }
+            else {
+                var namespaced = f.split(".");
+                window[namespaced[0]][namespaced[1]](id, name);
+            }
+            setTimeout(self.reloadFunction, msWait, self, id, name, msWait, f, pContent);
+        },
+
+        load : function(layoutCell, pContent) {
+            var x = document.getElementsByClassName(layoutCell);
+            var i = 0;
+            var self = this;
+            for (i = 0; i < x.length; i++) {
+                if (x[i].getAttribute('refreshRate')) {
+                    if (x[i].getAttribute('refreshFunction')) {
+                        setTimeout(this.reloadFunction, x[i].getAttribute('refreshRate'), self, x[i].id, x[i].getAttribute('name'),
+                            x[i].getAttribute('refreshRate'), x[i].getAttribute('refreshFunction'), pContent);
+                    }
+                    else {
+                        setTimeout(self.reloadPortlet, x[i].getAttribute('refreshRate'), self, x[i].id, x[i].getAttribute('name'),
+                            x[i].getAttribute('refreshRate'), pContent);
+                    }
+                }
+            }
+        },
+
+        getContent : function(id, name, pContent) {
+            this.ajax("/jetspeed/portlet?entity=" + id + "&portlet=" + name + "&skipHead=true", function(data)
+            {
+                var container = document.getElementById(id);
+                var inner = container.getElementsByClassName(pContent);
+                inner[0].innerHTML = "<span style=\"line-height:0.005px;\">&nbsp;</span>" + data;
+            });
+        },
+
+        ajax : function(url, callback) {
+            if(typeof jQuery != 'undefined')
+            {
+                jQuery.ajax({
+                    url: url,
+                    success: function(data, status, xhr)
+                    {
+                        if(callback)
+                        {
+                            callback(data);
+                        }
+                    }
+                });
+            }
+            else
+            {
+                var xmlhttp = null;
+
+                if(typeof XMLHttpRequest!='undefined')
+                {
+                    xmlhttp = new XMLHttpRequest();
+                }
+                else
+                {
+                    try
+                    {
+                        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
+                    }
+                    catch (e)
+                    {
+                        try
+                        {
+                            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
+                        }
+                        catch (E)
+                        {
+                            xmlhttp = null;
+                        }
+                    }
+                }
+
+                if(xmlhttp)
+                {
+                    xmlhttp.open('GET', url, true);
+
+                    xmlhttp.onreadystatechange = function()
+                    {
+                        if (xmlhttp.readyState == 4)
+                        {
+                            if(xmlhttp.status == 200)
+                            {
+                                if(callback)
+                                {
+                                    callback(xmlhttp.responseText);
+                                }
+                            }
+                        }
+                    };
+
+                    xmlhttp.send(null);
+                }
+            }
+        }
+    }
+})();

Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-page-layout/src/main/java/org/apache/jetspeed/om/page/impl/ContentFragmentImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-page-layout/src/main/java/org/apache/jetspeed/om/page/impl/ContentFragmentImpl.java?rev=1687969&r1=1687968&r2=1687969&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-page-layout/src/main/java/org/apache/jetspeed/om/page/impl/ContentFragmentImpl.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-page-layout/src/main/java/org/apache/jetspeed/om/page/impl/ContentFragmentImpl.java Sat Jun 27 22:00:01 2015
@@ -76,6 +76,9 @@ public class ContentFragmentImpl impleme
     private SecurityConstraints constraints;
     private String refId;
 
+    private long refreshRate = -1;
+    private String refreshFunction = null;
+
     /**
      * Construct new dynamic content fragment with
      * a transiently computed id.
@@ -1718,4 +1721,21 @@ public class ContentFragmentImpl impleme
     {
         this.id = id;
     }
+
+    public long getRefreshRate() {
+        return refreshRate;
+    }
+
+    public void setRefreshRate(long rate) {
+        this.refreshRate = rate;
+    }
+
+    public String getRefreshFunction() {
+        return this.refreshFunction;
+    }
+
+    public void setRefreshFunction(String function) {
+        this.refreshFunction = function;
+    }
+
 }

Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/PortletAggregatorImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/PortletAggregatorImpl.java?rev=1687969&r1=1687968&r2=1687969&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/PortletAggregatorImpl.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/PortletAggregatorImpl.java Sat Jun 27 22:00:01 2015
@@ -122,7 +122,11 @@ public class PortletAggregatorImpl imple
                 mutableNavState.setState(window, requestedWindowState);
             }
         }
-        
+        String skipHead = context.getRequestParameter("skipHead");
+        if (skipHead != null) {
+            context.setAttribute("jetapp.headers.flag", Boolean.TRUE);
+        }
+
         ContentFragment contentFragment = window.getFragment();
         renderer.renderNow(contentFragment, context);
         
@@ -130,9 +134,11 @@ public class PortletAggregatorImpl imple
         {            
             context.getResponse().setHeader( "JS_PORTLET_TITLE", StringEscapeUtils.escapeHtml( contentFragment.getPortletContent().getTitle() ) );
         }
-        
-        writeHeadElements(context, window);
-        
+
+        if (skipHead == null) {
+            writeHeadElements(context, window);
+        }
+
         context.getResponse().getWriter().write(contentFragment.getRenderedContent());
         PortletContent content = contentFragment.getPortletContent();
         

Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/PortletRendererImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/PortletRendererImpl.java?rev=1687969&r1=1687968&r2=1687969&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/PortletRendererImpl.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/aggregator/impl/PortletRendererImpl.java Sat Jun 27 22:00:01 2015
@@ -16,8 +16,10 @@
  */
 package org.apache.jetspeed.aggregator.impl;
 
+import org.apache.jetspeed.Jetspeed;
 import org.apache.jetspeed.JetspeedActions;
 import org.apache.jetspeed.PortalReservedParameters;
+import org.apache.jetspeed.administration.PortalConfigurationConstants;
 import org.apache.jetspeed.aggregator.PortletAccessDeniedException;
 import org.apache.jetspeed.aggregator.PortletContent;
 import org.apache.jetspeed.aggregator.PortletRenderer;
@@ -95,7 +97,9 @@ public class PortletRendererImpl impleme
      * The OutOfService message
      */
     protected String outOfServiceMessage = DEFAULT_OUT_OF_SERVICE_MESSAGE;
-    
+
+    protected boolean autoRefreshEnabled = true;
+
     public PortletRendererImpl(PortletContainer container, 
                                WorkerMonitor workMonitor,
                                PortalStatistics statistics,
@@ -111,6 +115,9 @@ public class PortletRendererImpl impleme
         this.checkSecurityConstraints = checkSecurityConstraints;
         this.accessController = accessController;
         this.portletContentCache = portletContentCache;
+        if (Jetspeed.getConfiguration() != null) {
+            this.autoRefreshEnabled = Jetspeed.getConfiguration().getBoolean(PortalConfigurationConstants.AUTO_REFRESH_ENABLED, true);
+
     }
 
     public PortletRendererImpl(PortletContainer container, 
@@ -243,6 +250,17 @@ public class PortletRendererImpl impleme
                     return null;
                 }
             }
+            // autoRefresh feature
+            if (autoRefreshEnabled) {
+                long refreshRate = this.getRefreshRate(portletDefinition);
+                if (refreshRate != -1) {
+                    portletWindow.getFragment().setRefreshRate(refreshRate);
+                    String refreshFunction = this.getRefreshFunction(portletDefinition);
+                    if (refreshFunction != null) {
+                        portletWindow.getFragment().setRefreshFunction(refreshFunction);
+                    }
+                }
+            }
             job = buildRenderingJob( portletWindow, requestContext, true, portletDefinition, timeoutMetadata );
         }
         catch (PortletAccessDeniedException pade)
@@ -256,7 +274,8 @@ public class PortletRendererImpl impleme
 
         return job;
     }
-           
+
+
     /** 
      * 
      * Render the specified rendering job.
@@ -393,7 +412,48 @@ public class PortletRendererImpl impleme
         }       
         return timeoutMetadata;
     }
-    
+
+    protected long getRefreshRate(PortletDefinition portletDefinition)
+    {
+        long refreshRate = -1;
+        Collection<LocalizedField> refreshFields = null;
+
+        if (portletDefinition != null)
+        {
+            refreshFields = portletDefinition.getMetadata().getFields(PortalReservedParameters.PORTLET_EXTENDED_DESCRIPTOR_REFRESH_RATE);
+        }
+
+        if (refreshFields != null && !refreshFields.isEmpty())
+        {
+            try
+            {
+                refreshRate = Long.parseLong(refreshFields.iterator().next().getValue());
+            }
+            catch (NumberFormatException nfe)
+            {
+                log.warn("Invalid refreshRate metadata: " + nfe.getMessage());
+            }
+        }
+        return refreshRate;
+    }
+
+    protected String getRefreshFunction(PortletDefinition portletDefinition)
+    {
+        String refreshFunction = null;
+        Collection<LocalizedField> refreshFields = null;
+
+        if (portletDefinition != null)
+        {
+            refreshFields = portletDefinition.getMetadata().getFields(PortalReservedParameters.PORTLET_EXTENDED_DESCRIPTOR_REFRESH_FUNCTION);
+        }
+
+        if (refreshFields != null && !refreshFields.isEmpty())
+        {
+            refreshFunction = refreshFields.iterator().next().getValue();
+        }
+        return refreshFunction;
+    }
+
     protected void setTimeoutOnJob(long timeoutMetadata, RenderingJob rJob)
     {
         

Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/velocity/JetspeedPowerToolImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/velocity/JetspeedPowerToolImpl.java?rev=1687969&r1=1687968&r2=1687969&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/velocity/JetspeedPowerToolImpl.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/velocity/JetspeedPowerToolImpl.java Sat Jun 27 22:00:01 2015
@@ -128,7 +128,9 @@ public class JetspeedPowerToolImpl imple
     private BasePortalURL baseUrlAccess;
     
     private PortletRenderer renderer;
+
     protected boolean ajaxCustomization = false;
+    protected boolean autoRefreshEnabled = true;
     
     public JetspeedPowerToolImpl(RequestContext requestContext, PortletConfig portletConfig, RenderRequest renderRequest, RenderResponse renderResponse, PortletRenderer renderer) throws Exception
     {
@@ -151,7 +153,8 @@ public class JetspeedPowerToolImpl imple
         decorationLocator = (TemplateLocator) getComponent("DecorationLocator");
         String jetuiMode = Jetspeed.getConfiguration().getString(PortalConfigurationConstants.JETUI_CUSTOMIZATION_METHOD, PortalConfigurationConstants.JETUI_CUSTOMIZATION_SERVER);
         this.ajaxCustomization = (jetuiMode.equals(PortalConfigurationConstants.JETUI_CUSTOMIZATION_AJAX));
-        
+        this.autoRefreshEnabled = Jetspeed.getConfiguration().getBoolean(PortalConfigurationConstants.AUTO_REFRESH_ENABLED, true);
+
         // By using null, we create a re-useable locator
         capabilityMap = requestContext.getCapabilityMap();
         locale = requestContext.getLocale();
@@ -915,6 +918,10 @@ public class JetspeedPowerToolImpl imple
         return this.ajaxCustomization;
     }
 
+    public boolean isAutoRefreshEnabled() {
+        return this.autoRefreshEnabled;
+    }
+
     public Map<String,String> getUserAttributes()
     {
         RequestContext rc = getRequestContext();

Modified: portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/PortalReservedParameters.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/PortalReservedParameters.java?rev=1687969&r1=1687968&r2=1687969&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/PortalReservedParameters.java (original)
+++ portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/PortalReservedParameters.java Sat Jun 27 22:00:01 2015
@@ -188,5 +188,18 @@ public interface PortalReservedParameter
       * PORTAL_SITE_REQUEST_CONTEXT_ATTR_KEY - request portal site context attribute key
       */
      public static final String PORTAL_SITE_REQUEST_CONTEXT_ATTR_KEY = "org.apache.jetspeed.portalsite.PortalSiteRequestContext";
-     
+
+    /**
+     * A portlet can have a specific setting for the refresh rate for automatically
+     * re-rendering the portlet. If set to -1 or undefined, no refresh will be executed
+     * refresh rate is in seconds
+     */
+    public static final String PORTLET_EXTENDED_DESCRIPTOR_REFRESH_RATE = "refreshRate";
+
+    /**
+     * A portlet can have a specific setting for the automatic refresh function that will be called
+     * when refreshing the portlet. This setting is dependent on refreshRate.
+     */
+    public static final String PORTLET_EXTENDED_DESCRIPTOR_REFRESH_FUNCTION = "refreshFunction";
+
 }

Modified: portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/administration/PortalConfigurationConstants.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/administration/PortalConfigurationConstants.java?rev=1687969&r1=1687968&r2=1687969&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/administration/PortalConfigurationConstants.java (original)
+++ portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/administration/PortalConfigurationConstants.java Sat Jun 27 22:00:01 2015
@@ -107,4 +107,7 @@ public interface PortalConfigurationCons
     static final String XSS_FILTER_POST = "xss.filter.post";
     static final String XSS_REGEX = "xss.filter.regexes";
     static final String XSS_FLAGS = "xss.filter.flags";
+
+    /** AutoRefresh */
+    static final String AUTO_REFRESH_ENABLED = "autorefresh.enabled";
 }

Modified: portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/layout/JetspeedPowerTool.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/layout/JetspeedPowerTool.java?rev=1687969&r1=1687968&r2=1687969&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/layout/JetspeedPowerTool.java (original)
+++ portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/layout/JetspeedPowerTool.java Sat Jun 27 22:00:01 2015
@@ -366,5 +366,10 @@ public interface JetspeedPowerTool
      * @return the portal configuration
      */
     PortalConfiguration getPortalConfiguration();
-    
+
+    /**
+     * Is AutoRefresh support for automatic portlet rendering enabled
+     * @return true when auto refresh is enabled in Jetspeed properties
+     */
+    boolean isAutoRefreshEnabled();
 }
\ No newline at end of file

Modified: portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/om/page/ContentFragment.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/om/page/ContentFragment.java?rev=1687969&r1=1687968&r2=1687969&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/om/page/ContentFragment.java (original)
+++ portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/om/page/ContentFragment.java Sat Jun 27 22:00:01 2015
@@ -694,4 +694,9 @@ public interface ContentFragment
      *                   or USER where the default user name is used if null)
      */
     void updateStateMode(String portletState, String portletMode, String scope, String scopeValue);
+
+    long getRefreshRate();
+    void setRefreshRate(long rate);
+    String getRefreshFunction();
+    void setRefreshFunction(String function);
 }

Modified: portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/conf/jetspeed/jetspeed.properties
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/conf/jetspeed/jetspeed.properties?rev=1687969&r1=1687968&r2=1687969&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/conf/jetspeed/jetspeed.properties (original)
+++ portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/conf/jetspeed/jetspeed.properties Sat Jun 27 22:00:01 2015
@@ -449,6 +449,12 @@ xss.filter.flags = 2 | 8 | 32
 xss.filter.regexes = expression\\((.*?)\\)
 xss.filter.flags = 2 | 8 | 32
 
+#-------------------------------------------------------------------------
+# Auto Refresh
+# since 2.3.0
+#-------------------------------------------------------------------------
+autorefresh.enabled = true
+
 
 
 



---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org