shuber      2005/06/03 16:40:12 CEST

  Modified files:
    src/view/jsp         eventlistener.jsp 
  Log:
  Modified JSP event listener to use new FieldEditHelp structure to notify 
which are the updated fields.
  
  Revision  Changes    Path
  1.5       +360 -331  corporate_portal_templates/src/view/jsp/eventlistener.jsp
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/corporate_portal_templates/src/view/jsp/eventlistener.jsp.diff?r1=1.4&r2=1.5&f=h
  
  
  
  Index: eventlistener.jsp
  ===================================================================
  RCS file: 
/home/cvs/repository/corporate_portal_templates/src/view/jsp/eventlistener.jsp,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- eventlistener.jsp 27 May 2005 11:39:48 -0000      1.4
  +++ eventlistener.jsp 3 Jun 2005 14:40:11 -0000       1.5
  @@ -6,6 +6,7 @@
   <%@ page import="org.jahia.data.fields.*" %>
   <%@ page import="org.jahia.data.events.*" %>
   <%@ page import="org.jahia.engines.*" %>
  +<%@ page import="org.jahia.engines.addcontainer.*" %>
   <%@ page import="org.jahia.engines.categories.*" %>
   <%@ page import="org.jahia.engines.selectpage.*" %>
   <%@ page import="org.jahia.engines.shared.*" %>
  @@ -20,10 +21,10 @@
   <jsp:useBean id="eventsToTrap" class="java.util.Vector" scope="application"/>
   <%// loads the events to trap
   if (eventsToTrap.size() == 0) {
  -     eventsToTrap.add("addContainerEngineAfterInit");
  -     eventsToTrap.add("addContainerEngineBeforeSave");
  -     eventsToTrap.add("containerAdded");
  -     eventsToTrap.add("containerUpdated");
  +    eventsToTrap.add("addContainerEngineAfterInit");
  +    eventsToTrap.add("addContainerEngineBeforeSave");
  +    eventsToTrap.add("containerAdded");
  +    eventsToTrap.add("containerUpdated");
   }
   
   String eventName = (String) request.getAttribute("eventName");
  @@ -41,29 +42,35 @@
   
   // Proof of concept for Parlement Europeen
   if ( eventsToTrap.contains(eventName)){
  +  logger.debug("Found event we listen to : " + eventName + ", 
processing...");
   
  -     HashMap engineMap = (HashMap) jParams.getSession().getAttribute( 
"jahia_session_engineMap" );
  -     
  -     if (engineMap == null) { return; }
  -     String languageCode = (String)engineMap.get("languageCode");
  -     HashSet updatedFields = (HashSet)engineMap.get("updated.fields");
  +    HashMap engineMap = (HashMap) jParams.getSession().getAttribute( 
"jahia_session_engineMap" );
  +
  +    if (engineMap == null) {
  +      logger.debug("No engineMap found, aborting processing");
  +      return;
  +    }
  +       String languageCode = (String)engineMap.get("languageCode");
  +    HashSet updatedFields = (HashSet)engineMap.get("updated.fields");
       if (updatedFields == null) {
  -         updatedFields = new HashSet();
  -         engineMap.put("updated.fields", updatedFields);
  -     }
  -
  -     
  -     // Check if we are processing a "directoryDocContainer" container
  -     JahiaContainer theContainer = (JahiaContainer)jahiaEvent.getObject();
  -     if ( 
"ProjectNewsContainer".equals(theContainer.getDefinition().getName()) ){
  -             if ( "containerAdded".equals(eventName) || 
"containerUpdated".equals(eventName) ){
  -                     // we want to set the start date if empty
  -                     JahiaField theField = 
theContainer.getField("ProjectNewsStart");
  -                     if ((theField.getValue() == null) || 
("null".equals(theField.getValue())) || (theField.getValue().length() == 0)) {
  -                             
theField.setObject(String.valueOf(jahiaEvent.getEventTime()));
  -                             theField.save(jParams);
  -                     }
  -             }
  +        updatedFields = new HashSet();
  +        engineMap.put("updated.fields", updatedFields);
  +    }
  +  ContainerFieldsEditHelper feh = (ContainerFieldsEditHelper) 
engineMap.get(AddContainer_Engine.
  +       ENGINE_NAME + "." + 
FieldsEditHelperAbstract.FIELDS_EDIT_HELPER_CONTEXTID);
  +
  +
  +    // Check if we are processing a "directoryDocContainer" container
  +    JahiaContainer theContainer = (JahiaContainer)jahiaEvent.getObject();
  +    if ( 
"ProjectNewsContainer".equals(theContainer.getDefinition().getName()) ){
  +        if ( "containerAdded".equals(eventName) || 
"containerUpdated".equals(eventName) ){
  +            // we want to set the start date if empty
  +            JahiaField theField = theContainer.getField("ProjectNewsStart");
  +            if ((theField.getValue() == null) || 
("null".equals(theField.getValue())) || (theField.getValue().length() == 0)) {
  +                
theField.setObject(String.valueOf(jahiaEvent.getEventTime()));
  +                theField.save(jParams);
  +            }
  +        }
       }
       if ( "blogs".equals(theContainer.getDefinition().getName()) ){
           if ( "addContainerEngineAfterInit".equals(eventName) ) {
  @@ -149,10 +156,12 @@
   
               JahiaField theField = theContainer.getField("date");
               if (theField.getObject() == null) {
  -                Calendar cal = 
Calendar.getInstance(TimeZone.getTimeZone("UTC")); 
  +                Calendar cal = 
Calendar.getInstance(TimeZone.getTimeZone("UTC"));
                   long now = cal.getTime().getTime();
                   String nowStr = String.valueOf(now);
                   theField.setObject(nowStr);
  +                        feh.addUpdatedField(theField.getID(), 
theField.getLanguageCode());
  +                        logger.debug("Adding updated field #" + 
theField.getID() + " for language code [" + theField.getLanguageCode() + "]");
                   updatedFields.add(new Integer(theField.getID()));
                   logger.debug("Set value for field [date] to : [" + 
theField.getObject() +"]");
               }
  @@ -160,11 +169,13 @@
               if (theField.getObject() == null) {
                   String author = jParams.getUser().getUserKey();
                   theField.setObject(author);
  +                        feh.addUpdatedField(theField.getID(), 
theField.getLanguageCode());
                   updatedFields.add(new Integer(theField.getID()));
                   logger.debug("Set value for field [author] to [" + 
theField.getObject() + "]");
               } else if ("".equals(theField.getObject())) {
                   String author = jParams.getUser().getUserKey();
                   theField.setObject(author);
  +                        feh.addUpdatedField(theField.getID(), 
theField.getLanguageCode());
                   updatedFields.add(new Integer(theField.getID()));
                   logger.debug("Set value for field [author] to [" + 
theField.getObject() + "]");
               }
  @@ -201,328 +212,346 @@
           }
   
   
  -     } else if ( 
"directoryDocContainer".equals(theContainer.getDefinition().getName()) ){
  -             if ( "addContainerEngineAfterInit".equals(eventName) ) {
  +    } else if ( 
"directoryDocContainer".equals(theContainer.getDefinition().getName()) ){
  +        if ( "addContainerEngineAfterInit".equals(eventName) ) {
  +
  +            // we want to init the page field
  +            JahiaField theField = theContainer.getField("directoryDocPage");
  +            JahiaPageEngineTempBean pageBean = null;
  +
  +            HashMap pageBeans = (HashMap)jParams.
  +                    getSession().getAttribute("Page_Field.PageBeans");
  +            if ( pageBeans == null ){
  +                pageBeans = new HashMap();
  +                jParams.
  +                    getSession().setAttribute("Page_Field.PageBeans", 
pageBeans);
  +            }
  +
  +            // Verify if this page field was not already edited in this 
session.
  +            pageBean = 
(JahiaPageEngineTempBean)pageBeans.get(theField.getDefinition().getName());
  +
  +            String creator = null;
  +            String creationDate = null;
  +            String lastContributor = null;
  +
  +            if (pageBean == null) {
  +
  +                JahiaPageDefinition pageDef = 
ServicesRegistry.getInstance().getJahiaPageTemplateService()
  +                .lookupPageTemplateByName ("Document Detail", 
jParams.getSiteID());
   
  -                     // we want to init the page field
  -                     JahiaField theField = 
theContainer.getField("directoryDocPage");
  -                     JahiaPageEngineTempBean pageBean = null;
  -
  -             HashMap pageBeans = (HashMap)jParams.
  -                     getSession().getAttribute("Page_Field.PageBeans");
  -             if ( pageBeans == null ){
  -                 pageBeans = new HashMap();
  -                 jParams.
  -                     getSession().setAttribute("Page_Field.PageBeans", 
pageBeans);
  -             }
  -
  -             // Verify if this page field was not already edited in this 
session.
  -             pageBean = 
(JahiaPageEngineTempBean)pageBeans.get(theField.getDefinition().getName());
  -
  -                     String creator = null;
  -                     String creationDate = null;
  -                     String lastContributor = null;
  -
  -             if (pageBean == null) {
  -
  -                             JahiaPageDefinition pageDef = 
ServicesRegistry.getInstance().getJahiaPageTemplateService()
  -                     .lookupPageTemplateByName ("Document Detail", 
jParams.getSiteID());
  -
  -                 // First call or recall of engine.
  -                 
jParams.getSession().removeAttribute(SelectPage_Engine.SESSION_PARAMS);
  -                 if (theField.getObject() == null) { // Is it a new page ?
  -                     boolean isLinkOnly = 
theField.getValue().toLowerCase().indexOf("jahia_linkonly") != -1;
  -                     pageBean = new JahiaPageEngineTempBean(
  -                             -1, // Page ID
  -                             theField.getJahiaID(),
  -                             theField.getPageID(),
  -                             isLinkOnly ? JahiaPage.TYPE_URL : // URL type 
per default
  -                                          JahiaPage.TYPE_DIRECT, // or 
create a new page per default
  -                             pageDef.getID(),
  -                             "http://";, // URL undefined
  -                             -1, // Link ID undefined
  -                             jParams.getUser().getUserKey(),
  -                             theField.getID()); // value should be < 0 if 
new field.
  -                     pageBean.setOperation(isLinkOnly ? Page_Field.LINK_URL 
: Page_Field.CREATE_PAGE);
  +                // First call or recall of engine.
  +                
jParams.getSession().removeAttribute(SelectPage_Engine.SESSION_PARAMS);
  +                if (theField.getObject() == null) { // Is it a new page ?
  +                    boolean isLinkOnly = 
theField.getValue().toLowerCase().indexOf("jahia_linkonly") != -1;
  +                    pageBean = new JahiaPageEngineTempBean(
  +                            -1, // Page ID
  +                            theField.getJahiaID(),
  +                            theField.getPageID(),
  +                            isLinkOnly ? JahiaPage.TYPE_URL : // URL type 
per default
  +                                         JahiaPage.TYPE_DIRECT, // or create 
a new page per default
  +                            pageDef.getID(),
  +                            "http://";, // URL undefined
  +                            -1, // Link ID undefined
  +                            jParams.getUser().getUserKey(),
  +                            theField.getID()); // value should be < 0 if new 
field.
  +                    pageBean.setOperation(isLinkOnly ? Page_Field.LINK_URL : 
Page_Field.CREATE_PAGE);
   
  -                                     pageBean.sharedTitle(true);
  +                       pageBean.sharedTitle(true);
   
                   pageBeans.put("directoryDocPage", pageBean);
   
  -                             creator = jParams.getUser().getUsername();
  -                             Date d = new java.util.Date();
  -                             creationDate = String.valueOf(d.getTime());
  -                             lastContributor = 
jParams.getUser().getUsername();
  +                creator = jParams.getUser().getUsername();
  +                Date d = new java.util.Date();
  +                creationDate = String.valueOf(d.getTime());
  +                lastContributor = jParams.getUser().getUsername();
               }
   
  -             } else {
  -                     // check if the current page it a moved one
  +        } else {
  +            // check if the current page it a moved one
   
  -             String operation = jParams.getParameter("operation"); // Value 
from FORM
  -     int selectedPageID = pageBean.getPageLinkID();
  +            String operation = jParams.getParameter("operation"); // Value 
from FORM
  +            int selectedPageID = pageBean.getPageLinkID();
               if (jParams.getRequest().getParameter("shouldSetPageLinkID") != 
null) {
                   selectedPageID = SelectPage_Engine.getInstance()
  -                                     
.getSelectedPageID(jParams.getSession());
  +                            .getSelectedPageID(jParams.getSession());
               }
   
  -                     // check if the current page it a moved one
  -                     if ( Page_Field.MOVE_PAGE.equals(operation) ){
  -                             Integer previousPageID = 
(Integer)jParams.getRequest()
  -                                     
.getAttribute("eventlistener.previousPageID");
  -
  -                             if ( previousPageID == null
  -                                     || previousPageID.intValue() != 
selectedPageID ){
  -
  -                                     previousPageID = new 
Integer(selectedPageID);
  -                                     
request.setAttribute("eventlistener.previousPageID",
  -                                             previousPageID);
  -
  -                                     if ( selectedPageID != -1 ){
  -                                             try {
  -                                                     ContentPage cPage = 
ContentPage
  -                                                             
.getPage(selectedPageID,false);
  -                                                     ContentPageField 
cPageField = (ContentPageField)
  -                                                             
cPage.getParent( jParams.getUser(),
  -                                                                             
        jParams.getEntryLoadRequest(),
  -                                                                             
        ParamBean.NORMAL);
  -                                                     if ( cPageField == null 
){
  -                                                             // try to get 
the active
  -                                                             
EntryLoadRequest lRequest =
  -                                                                     new 
EntryLoadRequest(EntryLoadRequest.ACTIVE_WORKFLOW_STATE,0,
  -                                                                     
jParams.getEntryLoadRequest().getLocales());
  -                                                             cPageField = 
(ContentPageField)
  -                                                                     
cPage.getParent( jParams.getUser(),
  -                                                                             
        lRequest,
  -                                                                             
        ParamBean.NORMAL);
  -                                                     }
  -                                                     ContentContainer 
cContainer =
  -                                                                     
(ContentContainer)cPageField
  -                                                                             
        .getParent(     jParams.getUser(),
  -                                                                             
                                jParams.getEntryLoadRequest(),
  -                                                                             
                                ParamBean.NORMAL) ;
  -                                                     JahiaContainer 
jContainer =
  -                                                             
cContainer.getJahiaContainer(jParams,
  -                                                                             
                jParams.getEntryLoadRequest());
  -
  -                                                     JahiaField jField = 
jContainer.getField("metaDataCreator");
  -                                                     String fieldValue = "";
  -                                                     if ( jField != null && 
jField.getValue() != null){
  -                                                             fieldValue = 
jField.getValue().trim();
  -                                                     }
  -                                                     if ( 
!"".equals(fieldValue) ){
  -                                                             creator = 
fieldValue;
  -                                                     }
  -
  -                                                     jField = 
jContainer.getField("metaDataCreationDate");
  -                                                     fieldValue = "";
  -                                                     if ( jField != null && 
jField.getObject() != null){
  -                                                             fieldValue = 
((String)jField.getObject()).trim();
  -                                                     }
  -                                                     if ( 
!"".equals(fieldValue) ){
  -                                                             creationDate = 
fieldValue;
  -                                                     }
  -
  -                                                     jField = 
jContainer.getField("metaDataLastContributor");
  -                                                     fieldValue = "";
  -                                                     if ( jField != null && 
jField.getValue() != null){
  -                                                             fieldValue = 
jField.getValue().trim();
  -                                                     }
  -                                                     if ( 
!"".equals(fieldValue) ){
  -                                                             lastContributor 
= fieldValue;
  -                                                     }
  -
  -                                                     jField = 
jContainer.getField("metaDataLastModificationDate");
  -                                                     fieldValue = "";
  -                                                     if ( jField != null && 
jField.getObject() != null){
  -                                                             fieldValue = 
((String)jField.getObject()).trim();
  -                                                     }
  -                                                     if ( 
!"".equals(fieldValue) ){
  -                                                             // we want to 
set the last modification date field
  -                                                             jField = 
theContainer.getField("metaDataLastModificationDate");
  -                                                             
jField.setObject(fieldValue);
  -                                                             
updatedFields.add(new Integer(jField.getID()));
  -                                                     }
  -
  -                                                     jField = 
jContainer.getField("metaDataPublishingDate");
  -                                                     fieldValue = "";
  -                                                     if ( jField != null && 
jField.getObject() != null){
  -                                                             fieldValue = 
((String)jField.getObject()).trim();
  -                                                     }
  -                                                     if ( 
!"".equals(fieldValue) ){
  -                                                             // we want to 
set the last publishing date
  -                                                             jField = 
theContainer.getField("metaDataPublishingDate");
  -                                                             
jField.setObject(fieldValue);
  -                                                             
updatedFields.add(new Integer(jField.getID()));
  -                                                     }
  -
  -                                                     jField = 
jContainer.getField("metaDataPublisher");
  -                                                     fieldValue = "";
  -                                                     if ( jField != null && 
jField.getValue() != null){
  -                                                             fieldValue = 
jField.getValue().trim();
  -                                                     }
  -                                                     if ( 
!"".equals(fieldValue) ){
  -                                                             // we want to 
set the last publisher
  -                                                             jField = 
theContainer.getField("metaDataPublisher");
  -                                                             
jField.setValue(fieldValue);
  -                                                             
updatedFields.add(new Integer(jField.getID()));
  -                                                     }
  -
  -                                                     jField = 
jContainer.getField("directoryDocType");
  -                                                     fieldValue = "";
  -                                                     if ( jField != null && 
jField.getValue() != null){
  -                                                             fieldValue = 
jField.getValue().trim();
  -                                                     }
  -                                                     if ( 
!"".equals(fieldValue) ){
  -                                                             // we want to 
set the last publisher
  -                                                             jField = 
theContainer.getField("directoryDocType");
  -                                                             
jField.setValue(fieldValue);
  -                                                             
updatedFields.add(new Integer(jField.getID()));
  -                                                     }
  -
  -                                                     jField = 
jContainer.getField("directoryDocSource");
  -                                                     fieldValue = "";
  -                                                     if ( jField != null && 
jField.getValue() != null){
  -                                                             fieldValue = 
jField.getValue().trim();
  -                                                     }
  -                                                     if ( 
!"".equals(fieldValue) ){
  -                                                             // we want to 
set the last publisher
  -                                                             jField = 
theContainer.getField("directoryDocSource");
  -                                                             
jField.setValue(fieldValue);
  -                                                             
updatedFields.add(new Integer(jField.getID()));
  -                                                     }
  -                                                     jField = 
jContainer.getField("directoryShortDocDescription");
  -                                                     fieldValue = "";
  -                                                     if ( jField != null && 
jField.getValue() != null){
  -                                                             fieldValue = 
jField.getValue().trim();
  -                                                     }
  -                                                     if ( 
!"".equals(fieldValue) ){
  -                                                             // we want to 
set the last publisher
  -                                                             jField = 
theContainer.getField("directoryShortDocDescription");
  -                                                             
jField.setValue(fieldValue);
  -                                                             
updatedFields.add(new Integer(jField.getID()));
  -                                                     }
  -
  -                                                     ContentDefinition 
contentDefinition = jContainer.getDefinition();
  -                                     ArrayList selectedCategories = new 
ArrayList();
  -                                                     Set categories = 
Category.getObjectCategories(cContainer.getObjectKey());
  -                                                     Iterator iterator = 
categories.iterator();
  -                                                     while ( 
iterator.hasNext() ){
  -                                                             Category cat = 
(Category)iterator.next();
  -                                                             
selectedCategories.add(cat.getKey());
  -                                     }
  -
  -                                     ArrayList defaultSelectedCategories =
  -                                             (ArrayList) 
session.getAttribute(DEFAULTCATEGORIES_SESSIONKEYPREFIX +
  -                                                     
theContainer.getDefinition().getObjectKey());
  -                                     if (defaultSelectedCategories != null) {
  -                                                             for ( int i=0; 
i<defaultSelectedCategories.size() ; i++ ){
  -                                                                     String 
val = (String)defaultSelectedCategories.get(i);
  -                                                                             
if ( !selectedCategories.contains(val) ){
  -                                                                             
        selectedCategories.add(val);
  -                                                                             
}
  -                                                                     }
  -                                                             }
  -                                             
engineMap.put(SELECTEDCATEGORIES_ENGINEMAPKEY, selectedCategories);
  -
  -                                                 
ManageCategories.getInstance().handleActions(jParams, JahiaEngine.LOAD_MODE,
  -                                                     engineMap, new 
ContentContainerKey(jContainer.getID()),
  -                                                     
jContainer.getDefinition(), false);
  -                                                     } catch ( Throwable t ){
  -                                                             
t.printStackTrace();
  -                                                     }
  -                                             }
  -                                     }
  -                             }
  -                     }
  +            // check if the current page it a moved one
  +            if ( Page_Field.MOVE_PAGE.equals(operation) ){
  +                Integer previousPageID = (Integer)jParams.getRequest()
  +                    .getAttribute("eventlistener.previousPageID");
  +
  +                if ( previousPageID == null
  +                    || previousPageID.intValue() != selectedPageID ){
  +
  +                    previousPageID = new Integer(selectedPageID);
  +                    request.setAttribute("eventlistener.previousPageID",
  +                        previousPageID);
  +
  +                    if ( selectedPageID != -1 ){
  +                        try {
  +                            ContentPage cPage = ContentPage
  +                                .getPage(selectedPageID,false);
  +                            ContentPageField cPageField = (ContentPageField)
  +                                cPage.getParent( jParams.getUser(),
  +                                            jParams.getEntryLoadRequest(),
  +                                            ParamBean.NORMAL);
  +                            if ( cPageField == null ){
  +                                // try to get the active
  +                                EntryLoadRequest lRequest =
  +                                    new 
EntryLoadRequest(EntryLoadRequest.ACTIVE_WORKFLOW_STATE,0,
  +                                    
jParams.getEntryLoadRequest().getLocales());
  +                                cPageField = (ContentPageField)
  +                                    cPage.getParent( jParams.getUser(),
  +                                            lRequest,
  +                                            ParamBean.NORMAL);
  +                            }
  +                            ContentContainer cContainer =
  +                                    (ContentContainer)cPageField
  +                                            .getParent(      
jParams.getUser(),
  +                                                        
jParams.getEntryLoadRequest(),
  +                                                        ParamBean.NORMAL) ;
  +                            JahiaContainer jContainer =
  +                                cContainer.getJahiaContainer(jParams,
  +                                                
jParams.getEntryLoadRequest());
  +
  +                            JahiaField jField = 
jContainer.getField("metaDataCreator");
  +                            String fieldValue = "";
  +                            if ( jField != null && jField.getValue() != 
null){
  +                                fieldValue = jField.getValue().trim();
  +                            }
  +                            if ( !"".equals(fieldValue) ){
  +                                creator = fieldValue;
  +                            }
  +
  +                            jField = 
jContainer.getField("metaDataCreationDate");
  +                            fieldValue = "";
  +                            if ( jField != null && jField.getObject() != 
null){
  +                                fieldValue = 
((String)jField.getObject()).trim();
  +                            }
  +                            if ( !"".equals(fieldValue) ){
  +                                creationDate = fieldValue;
  +                            }
  +
  +                            jField = 
jContainer.getField("metaDataLastContributor");
  +                            fieldValue = "";
  +                            if ( jField != null && jField.getValue() != 
null){
  +                                fieldValue = jField.getValue().trim();
  +                            }
  +                            if ( !"".equals(fieldValue) ){
  +                                lastContributor = fieldValue;
  +                            }
  +
  +                            jField = 
jContainer.getField("metaDataLastModificationDate");
  +                            fieldValue = "";
  +                            if ( jField != null && jField.getObject() != 
null){
  +                                fieldValue = 
((String)jField.getObject()).trim();
  +                            }
  +                            if ( !"".equals(fieldValue) ){
  +                                // we want to set the last modification date 
field
  +                                jField = 
theContainer.getField("metaDataLastModificationDate");
  +                                jField.setObject(fieldValue);
  +                                  feh.addUpdatedField(jField.getID(), 
jField.getLanguageCode());
  +                                updatedFields.add(new 
Integer(jField.getID()));
  +                            }
  +
  +                            jField = 
jContainer.getField("metaDataPublishingDate");
  +                            fieldValue = "";
  +                            if ( jField != null && jField.getObject() != 
null){
  +                                fieldValue = 
((String)jField.getObject()).trim();
  +                            }
  +                            if ( !"".equals(fieldValue) ){
  +                                // we want to set the last publishing date
  +                                jField = 
theContainer.getField("metaDataPublishingDate");
  +                                jField.setObject(fieldValue);
  +                                feh.addUpdatedField(jField.getID(), 
jField.getLanguageCode());
  +                                updatedFields.add(new 
Integer(jField.getID()));
  +                            }
  +
  +                            jField = 
jContainer.getField("metaDataPublisher");
  +                            fieldValue = "";
  +                            if ( jField != null && jField.getValue() != 
null){
  +                                fieldValue = jField.getValue().trim();
  +                            }
  +                            if ( !"".equals(fieldValue) ){
  +                                // we want to set the last publisher
  +                                jField = 
theContainer.getField("metaDataPublisher");
  +                                jField.setValue(fieldValue);
  +                                feh.addUpdatedField(jField.getID(), 
jField.getLanguageCode());
  +                                updatedFields.add(new 
Integer(jField.getID()));
  +                            }
  +
  +                            jField = jContainer.getField("directoryDocType");
  +                            fieldValue = "";
  +                            if ( jField != null && jField.getValue() != 
null){
  +                                fieldValue = jField.getValue().trim();
  +                            }
  +                            if ( !"".equals(fieldValue) ){
  +                                // we want to set the last publisher
  +                                jField = 
theContainer.getField("directoryDocType");
  +                                jField.setValue(fieldValue);
  +                                feh.addUpdatedField(jField.getID(), 
jField.getLanguageCode());
  +                                updatedFields.add(new 
Integer(jField.getID()));
  +                            }
  +
  +                            jField = 
jContainer.getField("directoryDocSource");
  +                            fieldValue = "";
  +                            if ( jField != null && jField.getValue() != 
null){
  +                                fieldValue = jField.getValue().trim();
  +                            }
  +                            if ( !"".equals(fieldValue) ){
  +                                // we want to set the last publisher
  +                                jField = 
theContainer.getField("directoryDocSource");
  +                                jField.setValue(fieldValue);
  +                                feh.addUpdatedField(jField.getID(), 
jField.getLanguageCode());
  +                                updatedFields.add(new 
Integer(jField.getID()));
  +                            }
  +                            jField = 
jContainer.getField("directoryShortDocDescription");
  +                            fieldValue = "";
  +                            if ( jField != null && jField.getValue() != 
null){
  +                                fieldValue = jField.getValue().trim();
  +                            }
  +                            if ( !"".equals(fieldValue) ){
  +                                // we want to set the last publisher
  +                                jField = 
theContainer.getField("directoryShortDocDescription");
  +                                jField.setValue(fieldValue);
  +                                feh.addUpdatedField(jField.getID(), 
jField.getLanguageCode());
  +                                updatedFields.add(new 
Integer(jField.getID()));
  +                            }
  +
  +                            ContentDefinition contentDefinition = 
jContainer.getDefinition();
  +                            ArrayList selectedCategories = new ArrayList();
  +                            Set categories = 
Category.getObjectCategories(cContainer.getObjectKey());
  +                            Iterator iterator = categories.iterator();
  +                            while ( iterator.hasNext() ){
  +                                Category cat = (Category)iterator.next();
  +                                selectedCategories.add(cat.getKey());
  +                            }
  +
  +                    ArrayList defaultSelectedCategories =
  +                        (ArrayList) 
session.getAttribute(DEFAULTCATEGORIES_SESSIONKEYPREFIX +
  +                            theContainer.getDefinition().getObjectKey());
  +                            if (defaultSelectedCategories != null) {
  +                                for ( int i=0; 
i<defaultSelectedCategories.size() ; i++ ){
  +                                    String val = 
(String)defaultSelectedCategories.get(i);
  +                                        if ( 
!selectedCategories.contains(val) ){
  +                                            selectedCategories.add(val);
  +                                        }
  +                                    }
  +                                }
  +                                
engineMap.put(SELECTEDCATEGORIES_ENGINEMAPKEY, selectedCategories);
  +
  +                                
ManageCategories.getInstance().handleActions(jParams, JahiaEngine.LOAD_MODE,
  +                                    engineMap, new 
ContentContainerKey(jContainer.getID()),
  +                                    jContainer.getDefinition(), false);
  +                            } catch ( Throwable t ){
  +                                t.printStackTrace();
  +                            }
  +                        }
  +                    }
  +                }
  +            }
   
  -                     // we want to init the creator field
  -                     if ( creator != null ){
  +            // we want to init the creator field
  +            if ( creator != null ){
                   theField = theContainer.getField("metaDataCreator");
  -                             theField.setValue(creator);
  -                             updatedFields.add(new 
Integer(theField.getID()));
  -                     }
  -
  -                     // we want to init the creation date field
  -                     if ( creationDate != null ){
  -                             Date d = new java.util.Date();
  +                theField.setValue(creator);
  +                feh.addUpdatedField(theField.getID(), 
theField.getLanguageCode());
  +                updatedFields.add(new Integer(theField.getID()));
  +            }
  +
  +            // we want to init the creation date field
  +            if ( creationDate != null ){
  +                Date d = new java.util.Date();
                   theField = theContainer.getField("metaDataCreationDate");
  -                             theField.setObject(creationDate);
  -                             updatedFields.add(new 
Integer(theField.getID()));
  -                     }
  -
  -                     // we want set the last contributor field
  -                     if ( lastContributor != null ){
  -                             theField = 
theContainer.getField("metaDataLastContributor");
  -                             theField.setValue(lastContributor);
  -                             updatedFields.add(new 
Integer(theField.getID()));
  -                     }
  -
  -             } else if ( "addContainerEngineBeforeSave".equals(eventName) ) {
  -                     // we want set the page title
  -                     HashMap pageBeans = (HashMap)jParams.
  -                     getSession().getAttribute("Page_Field.PageBeans");
  -                     if ( pageBeans != null ){
  -                             // Verify if this page field was not already 
edited in this session.
  -                             JahiaPageEngineTempBean pageBean =
  -                                     
(JahiaPageEngineTempBean)pageBeans.get("directoryDocPage");
  -
  -                             if (pageBean != null) {
  -                                     // we want to set the title
  -                                     pageBeans.put("directoryDocPage", 
pageBean);
  -                             }
  -                     }
  -             } else if ( "containerAdded".equals(eventName) || 
"containerUpdated".equals(eventName) ){
  -
  -                     // we want to set the last modification date field
  -                     JahiaField theField = 
theContainer.getField("metaDataLastModificationDate");
  -                     
theField.setObject(String.valueOf(jahiaEvent.getEventTime()));
  -                     theField.save(jParams);
  -
  -                     // we want set the last contributor field
  -                     theField = 
theContainer.getField("metaDataLastContributor");
  -                     theField.setValue(jParams.getUser().getUsername());
  -                     theField.save(jParams);
  -
  -                     // we want to create a staged entry for the field  
"metaDataPublishingDate"
  -                     // to have it activated
  -                     theField = 
theContainer.getField("metaDataPublishingDate");
  -                     theField.setObject(theField.getValue());
  -                     theField.save(jParams);
  -
  -                     // we want to create a staged entry for the field  
"metaDataPublisher"
  -                     // to have it activated
  -                     theField = theContainer.getField("metaDataPublisher");
  -                     theField.setValue(theField.getValue());
  -                     theField.save(jParams);
  -             }
  -     }
  +                theField.setObject(creationDate);
  +                feh.addUpdatedField(theField.getID(), 
theField.getLanguageCode());
  +                updatedFields.add(new Integer(theField.getID()));
  +            }
  +
  +            // we want set the last contributor field
  +            if ( lastContributor != null ){
  +                theField = theContainer.getField("metaDataLastContributor");
  +                theField.setValue(lastContributor);
  +                feh.addUpdatedField(theField.getID(), 
theField.getLanguageCode());
  +                updatedFields.add(new Integer(theField.getID()));
  +            }
  +
  +            theField = theContainer.getField("metaDataLastModificationDate");
  +               feh.addUpdatedField(theField.getID(), 
theField.getLanguageCode());
  +            theField = theContainer.getField("metaDataLastContributor");
  +               feh.addUpdatedField(theField.getID(), 
theField.getLanguageCode());
  +            theField = theContainer.getField("metaDataPublishingDate");
  +               feh.addUpdatedField(theField.getID(), 
theField.getLanguageCode());
  +            theField = theContainer.getField("metaDataPublisher");
  +               feh.addUpdatedField(theField.getID(), 
theField.getLanguageCode());
  +
  +        } else if ( "addContainerEngineBeforeSave".equals(eventName) ) {
  +            // we want set the page title
  +                HashMap pageBeans = (HashMap)jParams.
  +                    getSession().getAttribute("Page_Field.PageBeans");
  +                if ( pageBeans != null ){
  +                    // Verify if this page field was not already edited in 
this session.
  +                    JahiaPageEngineTempBean pageBean =
  +                        
(JahiaPageEngineTempBean)pageBeans.get("directoryDocPage");
  +
  +                    if (pageBean != null) {
  +                            // we want to set the title
  +                            pageBeans.put("directoryDocPage", pageBean);
  +                        }
  +            }
  +        } else if ( "containerAdded".equals(eventName) || 
"containerUpdated".equals(eventName) ){
  +
  +            // we want to set the last modification date field
  +            JahiaField theField = 
theContainer.getField("metaDataLastModificationDate");
  +            theField.setObject(String.valueOf(jahiaEvent.getEventTime()));
  +            theField.save(jParams);
  +
  +            // we want set the last contributor field
  +            theField = theContainer.getField("metaDataLastContributor");
  +            theField.setValue(jParams.getUser().getUsername());
  +            theField.save(jParams);
  +
  +            // we want to create a staged entry for the field  
"metaDataPublishingDate"
  +            // to have it activated
  +            theField = theContainer.getField("metaDataPublishingDate");
  +            theField.setObject(theField.getValue());
  +            theField.save(jParams);
  +
  +            // we want to create a staged entry for the field  
"metaDataPublisher"
  +            // to have it activated
  +            theField = theContainer.getField("metaDataPublisher");
  +            theField.setValue(theField.getValue());
  +            theField.save(jParams);
  +        }
  +    }
   }
   
   // Proof of concept for Parlement Europeen
   if ( "beforeFieldActivation".equals(eventName) ){
   
  -     ContentField contentField = (ContentField)jahiaEvent.getObject();
  -     JahiaSaveVersion saveVersion = (JahiaSaveVersion)jahiaEvent.getSource();
  -     int fieldDefId = contentField.getFieldDefID();
  -     JahiaFieldDefinition fieldDef = 
JahiaFieldDefinitionsRegistry.getInstance().getDefinition(fieldDefId);
  -
  -     // Last activation Date Field
  -     if ( "metaDataPublishingDate".equals(fieldDef.getName()) ){
  -             JahiaField theField = 
contentField.getJahiaField(jParams.getEntryLoadRequest());
  -             
theField.setObject(String.valueOf(saveVersion.getVersionID()*1000L));
  -             theField.save(jParams);
  -
  -             // reload the contentField
  -             contentField = ContentField.getField(theField.getID());
  -     }
  -
  -     // Publisher Field
  -     if ( "metaDataPublisher".equals(fieldDef.getName()) ){
  -             JahiaField theField = 
contentField.getJahiaField(jParams.getEntryLoadRequest());
  -             theField.setValue(jParams.getUser().getUsername());
  -             theField.save(jParams);
  -
  -             // reload the contentField
  -             contentField = ContentField.getField(theField.getID());
  -     }
  -}%>
  \ No newline at end of file
  +    ContentField contentField = (ContentField)jahiaEvent.getObject();
  +    JahiaSaveVersion saveVersion = (JahiaSaveVersion)jahiaEvent.getSource();
  +    int fieldDefId = contentField.getFieldDefID();
  +    JahiaFieldDefinition fieldDef = 
JahiaFieldDefinitionsRegistry.getInstance().getDefinition(fieldDefId);
  +
  +    // Last activation Date Field
  +    if ( "metaDataPublishingDate".equals(fieldDef.getName()) ){
  +        JahiaField theField = 
contentField.getJahiaField(jParams.getEntryLoadRequest());
  +        theField.setObject(String.valueOf(saveVersion.getVersionID()*1000L));
  +        theField.save(jParams);
  +
  +        // reload the contentField
  +        contentField = ContentField.getField(theField.getID());
  +    }
  +
  +    // Publisher Field
  +    if ( "metaDataPublisher".equals(fieldDef.getName()) ){
  +        JahiaField theField = 
contentField.getJahiaField(jParams.getEntryLoadRequest());
  +        theField.setValue(jParams.getUser().getUsername());
  +        theField.save(jParams);
  +
  +        // reload the contentField
  +        contentField = ContentField.getField(theField.getID());
  +    }
  +}%>
  

Reply via email to