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>
  

Reply via email to