knguyen 2005/08/25 13:51:14 CEST
Modified files:
core/src/java/org/jahia/ajax DateTimeAjaxServlet.java
core/src/java/org/jahia/content
TimeBasedPublishingJahiaObject.java
core/src/java/org/jahia/engines/timebasedpublishing
CalendarHandler.java
core/src/java/org/jahia/services/containers
ContentContainer.java
ContentContainerList.java
core/src/java/org/jahia/services/pages ContentPage.java
core/src/java/org/jahia/services/timebasedpublishing
TimeBasedPublishingImplService.java
core/src/webapp/jsp/jahia/engines/timebasedpublishing
calendar.jsp
Log:
- complete timebp with parent inheritance
Revision Changes Path
1.4 +0 -1
jahia/core/src/java/org/jahia/ajax/DateTimeAjaxServlet.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/ajax/DateTimeAjaxServlet.java.diff?r1=1.3&r2=1.4&f=h
1.2 +13 -0
jahia/core/src/java/org/jahia/content/TimeBasedPublishingJahiaObject.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/content/TimeBasedPublishingJahiaObject.java.diff?r1=1.1&r2=1.2&f=h
1.3 +5 -1
jahia/core/src/java/org/jahia/engines/timebasedpublishing/CalendarHandler.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/engines/timebasedpublishing/CalendarHandler.java.diff?r1=1.2&r2=1.3&f=h
1.18 +11 -0
jahia/core/src/java/org/jahia/services/containers/ContentContainer.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/services/containers/ContentContainer.java.diff?r1=1.17&r2=1.18&f=h
1.10 +11 -0
jahia/core/src/java/org/jahia/services/containers/ContentContainerList.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/services/containers/ContentContainerList.java.diff?r1=1.9&r2=1.10&f=h
1.29 +15 -0
jahia/core/src/java/org/jahia/services/pages/ContentPage.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/services/pages/ContentPage.java.diff?r1=1.28&r2=1.29&f=h
1.6 +77 -10
jahia/core/src/java/org/jahia/services/timebasedpublishing/TimeBasedPublishingImplService.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/services/timebasedpublishing/TimeBasedPublishingImplService.java.diff?r1=1.5&r2=1.6&f=h
1.4 +4 -1
jahia/core/src/webapp/jsp/jahia/engines/timebasedpublishing/calendar.jsp
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/webapp/jsp/jahia/engines/timebasedpublishing/calendar.jsp.diff?r1=1.3&r2=1.4&f=h
Index: DateTimeAjaxServlet.java
===================================================================
RCS file: /cvs/jahia/core/src/java/org/jahia/ajax/DateTimeAjaxServlet.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- DateTimeAjaxServlet.java 22 Aug 2005 08:40:35 -0000 1.3
+++ DateTimeAjaxServlet.java 25 Aug 2005 11:51:12 -0000 1.4
@@ -106,7 +106,6 @@
timeZoneOffSet = Long.parseLong(val);
} catch ( Throwable t) {
}
-
int hostTimeZone = TimeZone.getDefault().getOffset(new
Date().getTime());
timeZoneOffSet = hostTimeZone - timeZoneOffSet;
Index: TimeBasedPublishingJahiaObject.java
===================================================================
RCS file:
/cvs/jahia/core/src/java/org/jahia/content/TimeBasedPublishingJahiaObject.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- TimeBasedPublishingJahiaObject.java 10 Aug 2005 08:26:57 -0000
1.1
+++ TimeBasedPublishingJahiaObject.java 25 Aug 2005 11:51:12 -0000
1.2
@@ -25,8 +25,21 @@
String operationMode) throws JahiaException;
/**
+ * Returns the parent of the current object
+ * @return
+ */
+ public TimeBasedPublishingJahiaObject
getParentForTimeBasedPublishing(JahiaUser user,
+ EntryLoadRequest loadRequest,
+ String operationMode) throws JahiaException;
+
+ /**
* This method is called to notify that time based publishing state has
changed
*/
public void notifyStateChanged();
+ /**
+ * Return the ObjectKey
+ */
+ public ObjectKey getObjectKey();
+
}
Index: CalendarHandler.java
===================================================================
RCS file:
/cvs/jahia/core/src/java/org/jahia/engines/timebasedpublishing/CalendarHandler.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- CalendarHandler.java 22 Aug 2005 08:40:36 -0000 1.2
+++ CalendarHandler.java 25 Aug 2005 11:51:13 -0000 1.3
@@ -99,9 +99,13 @@
if ("".equals(val.trim())){
dateLong = new Long(0);
} else {
+ // update value only if there is real change
try {
- dateLong = new Long(Long.parseLong(val)
+ Long valLong = new Long(Long.parseLong(val));
+ if ( dateLong.longValue() !=
(valLong.longValue()-this.timeZoneOffSet.longValue()) ){
+ dateLong = new Long(valLong.longValue()
- this.timeZoneOffSet.longValue() -
this.serverClientTimeDiff.longValue());
+ }
} catch ( Throwable t){
}
}
Index: ContentContainer.java
===================================================================
RCS file:
/cvs/jahia/core/src/java/org/jahia/services/containers/ContentContainer.java,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -r1.17 -r1.18
--- ContentContainer.java 10 Aug 2005 15:53:47 -0000 1.17
+++ ContentContainer.java 25 Aug 2005 11:51:13 -0000 1.18
@@ -973,6 +973,17 @@
}
/**
+ * Returns the parent of the current object for timebased publishing
+ *
+ * @return
+ */
+ public TimeBasedPublishingJahiaObject
getParentForTimeBasedPublishing(JahiaUser user,
+ EntryLoadRequest loadRequest,
+ String operationMode) throws JahiaException{
+ return this.getPage();
+ }
+
+ /**
* This method is called to notify that time based publishing state has
changed
*/
public void notifyStateChanged(){
Index: ContentContainerList.java
===================================================================
RCS file:
/cvs/jahia/core/src/java/org/jahia/services/containers/ContentContainerList.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- ContentContainerList.java 10 Aug 2005 08:27:03 -0000 1.9
+++ ContentContainerList.java 25 Aug 2005 11:51:13 -0000 1.10
@@ -537,6 +537,17 @@
}
/**
+ * Returns the parent of the current object for timebased publishing
+ *
+ * @return
+ */
+ public TimeBasedPublishingJahiaObject
getParentForTimeBasedPublishing(JahiaUser user,
+ EntryLoadRequest loadRequest,
+ String operationMode) throws JahiaException{
+ return
(TimeBasedPublishingJahiaObject)getParent(user,loadRequest,operationMode);
+ }
+
+ /**
* Returns childs that implement TimeBasedPublishingJahiaObject interface
*
* @param user
Index: ContentPage.java
===================================================================
RCS file: /cvs/jahia/core/src/java/org/jahia/services/pages/ContentPage.java,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -r1.28 -r1.29
--- ContentPage.java 16 Aug 2005 09:56:19 -0000 1.28
+++ ContentPage.java 25 Aug 2005 11:51:13 -0000 1.29
@@ -5052,6 +5052,21 @@
}
/**
+ * Returns the parent of the current object for timebased publishing
+ *
+ * @return
+ */
+ public TimeBasedPublishingJahiaObject
getParentForTimeBasedPublishing(JahiaUser user,
+ EntryLoadRequest loadRequest,
+ String operationMode) throws JahiaException{
+ ContentPageField pageField =
(ContentPageField)this.getParent(user,loadRequest,operationMode);
+ if ( pageField != null ){
+ return (TimeBasedPublishingJahiaObject)
ContentContainer.getContainer(pageField.getContainerID());
+ }
+ return null;
+ }
+
+ /**
* Returns childs that implement TimeBasedPublishingJahiaObject interface
*
* @param user
Index: TimeBasedPublishingImplService.java
===================================================================
RCS file:
/cvs/jahia/core/src/java/org/jahia/services/timebasedpublishing/TimeBasedPublishingImplService.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- TimeBasedPublishingImplService.java 23 Aug 2005 10:17:17 -0000
1.5
+++ TimeBasedPublishingImplService.java 25 Aug 2005 11:51:14 -0000
1.6
@@ -2,10 +2,8 @@
import org.jahia.exceptions.JahiaInitializationException;
import org.jahia.content.*;
-import org.jahia.settings.SettingsBean;
import org.jahia.hibernate.manager.*;
import org.jahia.services.usermanager.JahiaUser;
-import org.jahia.services.usermanager.JahiaUserManagerService;
import org.jahia.services.version.EntryLoadRequest;
import org.jahia.registries.ServicesRegistry;
import org.jahia.params.ParamBean;
@@ -243,6 +241,29 @@
}
return;
}
+
+ RetentionRule effectiveRule = rule;
+ if ( localRule.getId().intValue() == rule.getId().intValue() &&
+ localRule.getInherited().booleanValue() ){
+ // as the rule inherit from parent, we propagate parent state
instead of rule
+ try {
+ TimeBasedPublishingJahiaObject parent =
(TimeBasedPublishingJahiaObject)
+
jahiaObject.getParentForTimeBasedPublishing(root,EntryLoadRequest.STAGED,ParamBean.EDIT);
+ if ( parent != null ){
+ JahiaObjectDelegate parentObjectDelegate =
+
jahiaObjectMgr.getJahiaObjectDelegate(parent.getObjectKey());
+ if ( parentObjectDelegate != null ){
+ copyParentStateToCurrentObjectAndChilds(jahiaObject,
parentObjectDelegate);
+ }
+ }
+ } catch ( Throwable t){
+ logger.debug("Error copying parent timebased publishing
statues to child"
+ + jahiaObjectDelegate.getObjectKey(),t);
+ return;
+ }
+ return;
+ }
+
// apply to childs
try {
List childs =
jahiaObject.getChildsForTimeBasedPublishing(root,EntryLoadRequest.STAGED,ParamBean.EDIT);
@@ -250,21 +271,50 @@
TimeBasedPublishingJahiaObject child = null;
while ( iterator.hasNext() ){
child = (TimeBasedPublishingJahiaObject)iterator.next();
- handleTimeBasedPublishingEvent(theEvent, rule, child);
+ handleTimeBasedPublishingEvent(theEvent, effectiveRule,
child);
}
} catch ( Throwable t) {
logger.debug("Error converting JahiaObjectDelegate to
JahiaObjec",t);
}
// apply rule to current object
- applyTimeBasedPublishingEvent(theEvent, rule, jahiaObjectDelegate);
+ applyTimeBasedPublishingEvent(theEvent, effectiveRule,
jahiaObjectDelegate);
}
- /**
- *
- * @param theEvent
- * @param rule
- * @param jahiaObject
- * @return true if object state will change otherwise false
+ private void
copyParentStateToCurrentObjectAndChilds(TimeBasedPublishingJahiaObject
jahiaObject,
+ JahiaObjectDelegate
parentObjectDelegate){
+ // use the first parent rule that is not inherited
+ // apply to childs
+ try {
+ List childs = jahiaObject.getChildsForTimeBasedPublishing(root,
+ EntryLoadRequest.STAGED,ParamBean.EDIT);
+ Iterator iterator = childs.iterator();
+ TimeBasedPublishingJahiaObject child = null;
+ JahiaObjectDelegate childObjectDelegate = null;
+ while ( iterator.hasNext() ){
+ child = (TimeBasedPublishingJahiaObject)iterator.next();
+ childObjectDelegate =
jahiaObjectMgr.getJahiaObjectDelegate(child.getObjectKey());
+ if ( childObjectDelegate != null ){
+ copyParentStateToCurrentObjectAndChilds(child,
parentObjectDelegate);
+ }
+ }
+ JahiaObjectDelegate objectDelegate =
jahiaObjectMgr.getJahiaObjectDelegate(jahiaObject.getObjectKey());
+ if ( objectDelegate != null ){
+
objectDelegate.setTimeBPState(parentObjectDelegate.getTimeBPState());
+
objectDelegate.setValidFromDate(parentObjectDelegate.getValidFromDate());
+
objectDelegate.setValidToDate(parentObjectDelegate.getValidToDate());
+ jahiaObjectMgr.save(objectDelegate);
+ }
+ } catch ( Throwable t) {
+ logger.debug("Error copying parent state to childs",t);
+ }
+ }
+
+/**
+ *
+ * @param theEvent
+ * @param rule
+ * @param jahiaObject
+ * @return true if object state will change otherwise false
*/
private boolean stateWillChange(RetentionRuleEvent theEvent,
RetentionRule rule,
@@ -279,6 +329,23 @@
}
} else if ( theEvent.getEventType() ==
RetentionRuleEvent.UPDATING_RULE ){
RangeRetentionRule rangeRule = (RangeRetentionRule)rule;
+ if ( rule.getInherited().booleanValue() ){
+ // check agains parent state
+ try {
+ TimeBasedPublishingJahiaObject timeBPObject =
(TimeBasedPublishingJahiaObject)
+
JahiaObject.getInstanceAsObject(jahiaObject.getObjectKey());
+ TimeBasedPublishingJahiaObject parent = timeBPObject
+
.getParentForTimeBasedPublishing(root,EntryLoadRequest.STAGED,ParamBean.EDIT);
+ JahiaObjectDelegate parentDelegate = jahiaObjectMgr
+ .getJahiaObjectDelegate(parent.getObjectKey());
+ if ( parentDelegate != null ){
+ return ( jahiaObject.getTimeBPState().intValue()
+ !=
parentDelegate.getTimeBPState().intValue() );
+ }
+ } catch ( Throwable t){
+ logger.debug("exception checking state change",t);
+ }
+ }
if ( jahiaObject.getValidFromDate().longValue() !=
rangeRule.getValidFromDate().longValue() ){
return true;
} else if ( jahiaObject.getValidToDate().longValue() !=
rangeRule.getValidToDate().longValue() ){
Index: calendar.jsp
===================================================================
RCS file:
/cvs/jahia/core/src/webapp/jsp/jahia/engines/timebasedpublishing/calendar.jsp,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- calendar.jsp 22 Aug 2005 08:40:38 -0000 1.3
+++ calendar.jsp 25 Aug 2005 11:51:14 -0000 1.4
@@ -61,7 +61,10 @@
var tmpDate = new Date();
var timeOffSet = tmpDate.getTimezoneOffset() * 60 * 1000 * -1;
-var calTime = <%=calHandler.getDateLong().longValue()%> +
<%=calHandler.getServerClientTimeDiff().longValue()%>;
+var calTime = <%=calHandler.getDateLong().longValue()%>;
+if ( (<%=calHandler.getServerClientTimeDiff().longValue()%> +
timeOffSet)%(60*1000) ){
+ calTime = calTime +
<%=calHandler.getServerClientTimeDiff().longValue()%>;
+}
calTime = calTime + timeOffSet;
-->
</SCRIPT>