cmailleux    2005/11/23 17:22:00 CET

  Modified files:
    core/src/java/org/jahia/engines/pages 
                                          PageProperties_Engine.java 
    core/src/java/org/jahia/services/fields 
                                            JahiaFieldBaseService.java 
    core/src/webapp/WEB-INF/var/shared_templates 
                                                 corporate_portal_templates.jar 
  Log:
  Update document listing template

  Correctly load metadata field

  Add transaction in page properties
  
  Revision  Changes      Path
  1.32      +166 -140    
jahia/core/src/java/org/jahia/engines/pages/PageProperties_Engine.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/engines/pages/PageProperties_Engine.java.diff?r1=1.31&r2=1.32&f=h
  1.28      +4 -1        
jahia/core/src/java/org/jahia/services/fields/JahiaFieldBaseService.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/services/fields/JahiaFieldBaseService.java.diff?r1=1.27&r2=1.28&f=h
  1.80      +1446 -1460  
jahia/core/src/webapp/WEB-INF/var/shared_templates/corporate_portal_templates.jar
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/webapp/WEB-INF/var/shared_templates/corporate_portal_templates.jar.diff?r1=1.79&r2=1.80&f=h
  
  
  
  Index: PageProperties_Engine.java
  ===================================================================
  RCS file: 
/home/cvs/repository/jahia/core/src/java/org/jahia/engines/pages/PageProperties_Engine.java,v
  retrieving revision 1.31
  retrieving revision 1.32
  diff -u -r1.31 -r1.32
  --- PageProperties_Engine.java        23 Nov 2005 15:53:55 -0000      1.31
  +++ PageProperties_Engine.java        23 Nov 2005 16:21:58 -0000      1.32
  @@ -1,4 +1,4 @@
  -// $Id: PageProperties_Engine.java,v 1.31 2005/11/23 15:53:55 xlawrence Exp $
  +// $Id: PageProperties_Engine.java,v 1.32 2005/11/23 16:21:58 cmailleux Exp $
   //
   //
   //                                   ____.
  @@ -52,6 +52,11 @@
   import org.jahia.services.version.EntryLoadRequest;
   import org.jahia.views.engines.contentdefinition.ContentDefinitionEngine;
   import 
org.jahia.views.engines.versioning.pages.actions.PagesVersioningAction;
  +import org.jahia.hibernate.manager.SpringContextSingleton;
  +import org.springframework.transaction.PlatformTransactionManager;
  +import org.springframework.transaction.TransactionStatus;
  +import org.springframework.transaction.support.TransactionTemplate;
  +import 
org.springframework.transaction.support.TransactionCallbackWithoutResult;
   
   import java.util.*;
   
  @@ -77,6 +82,7 @@
       private static final ServicesRegistry servicesRegistry = 
ServicesRegistry.getInstance();
       private static final LockService lockService = 
servicesRegistry.getLockService();
       private static final CacheService cacheService = 
servicesRegistry.getCacheService();
  +    private TransactionTemplate transactionTemplate;
   
       /**
        * Default constructor, creates a new <code>PageProperties_Engine</code> 
instance.
  @@ -350,7 +356,7 @@
           logger.debug("processCurrentScreen: " + theScreen + " LOAD_MODE");
   
           // indicates to sub enginesthat we are processing last screen
  -        int mode = JahiaEngine.LOAD_MODE;
  +        final int[] mode = new int[]{JahiaEngine.LOAD_MODE};
   
           // #ifdef LOCK
           final LockKey lockKey = 
LockKey.composeLockKey(LockKey.UPDATE_PAGE_TYPE,
  @@ -369,7 +375,7 @@
           } else if (theScreen.equals("rightsMgmt")) {
               if (engineMap.get("adminAccess") != null) {
                   ManageRights.getInstance().
  -                        handleActions(jParams, mode, engineMap, 
thePage.getAclID());
  +                        handleActions(jParams, mode[0], engineMap, 
thePage.getAclID());
   
               } else {
                   throw new JahiaForbiddenAccessException();
  @@ -378,7 +384,7 @@
               if (engineMap.get("writeAccess") != null
                       || engineMap.get("adminAccess") != null) {
                   TimeBasedPublishingEngine.getInstance().
  -                        handleActions(jParams, mode, engineMap, 
ContentPage.getPage(thePage.getID()).getObjectKey());
  +                        handleActions(jParams, mode[0], engineMap, 
ContentPage.getPage(thePage.getID()).getObjectKey());
               } else {
                   throw new JahiaForbiddenAccessException();
               }
  @@ -402,7 +408,7 @@
                   throw new JahiaForbiddenAccessException();
               }
           } else if (theScreen.equals("categories")) {
  -            ManageCategories.getInstance().handleActions(jParams, mode,
  +            ManageCategories.getInstance().handleActions(jParams, mode[0],
                       engineMap, new ContentPageKey(thePage.getID()),
                       thePage.getPageTemplate(), false);
           } else if (theScreen.equals("contentdefinition")) {
  @@ -430,20 +436,26 @@
               }
           } else if (theScreen.equals("workflow")) {
               if (engineMap.get("adminAccess") != null) {
  -                ManageWorkflow.getInstance().handleActions(jParams, mode,
  +                ManageWorkflow.getInstance().handleActions(jParams, mode[0],
                           engineMap, jParams.getContentPage());
               } else {
                   throw new JahiaForbiddenAccessException();
               }
           } else if (theScreen.equals("metadata")) {
               final ObjectKey objectKey = 
ContentPage.getPage(thePage.getID()).getObjectKey();
  -            Metadata_Engine.getInstance().handleActions(jParams, mode, 
objectKey);
  +            Metadata_Engine.getInstance().handleActions(jParams, mode[0], 
objectKey);
           } else if (theScreen.equals("save") || theScreen.equals("apply")) {
  -
  +            if (transactionTemplate == null) {
  +                SpringContextSingleton instance = 
SpringContextSingleton.getInstance();
  +                if (instance.isInitialized()) {
  +                    PlatformTransactionManager manager = 
(PlatformTransactionManager) 
instance.getContext().getBean("transactionManager");
  +                    transactionTemplate = new TransactionTemplate(manager);
  +                }
  +            }
               // #ifdef LOCK
               // Did somebody steal the lock ? Panpan cucul !
               if (jParams.settings().areLocksActivated() &&
  -                    lockService.isStealedInContext(lockKey, user, 
user.getUserKey())) {
  +                lockService.isStealedInContext(lockKey, user, 
user.getUserKey())) {
                   engineMap.put("screen", jParams.
                           getParameter("lastscreen"));
                   engineMap.put("jspSource", "apply");
  @@ -451,9 +463,9 @@
               }
               // #endif
   
  -            mode = JahiaEngine.VALIDATE_MODE;
  +            mode[0] = JahiaEngine.VALIDATE_MODE;
               final EngineValidationHelper evh = ManageRights.getInstance().
  -                    handleActions(jParams, mode, engineMap, 
thePage.getAclID());
  +                    handleActions(jParams, mode[0], engineMap, 
thePage.getAclID());
   
               if (evh != null && evh.hasErrors()) {
                   engineMap.put(JahiaEngine.ENGINE_VALIDATION_HELPER, evh);
  @@ -461,148 +473,162 @@
                   engineMap.put("jspSource", TEMPLATE_JSP);
                   return evh;
               }
  +            try {
  +                transactionTemplate.execute(new 
TransactionCallbackWithoutResult() {
  +                    protected void 
doInTransactionWithoutResult(TransactionStatus status) {
  +                        try {
  +                            mode[0] = JahiaEngine.SAVE_MODE;
  +
  +                            // create one entry for each language
  +                            final ContentPage contentPage = 
servicesRegistry.getJahiaPageService().lookupContentPage(
  +                                    thePage.getID(), false);
  +
  +                            // save workflow
  +                            
ManageWorkflow.getInstance().handleActions(jParams, mode[0],
  +                                                                       
engineMap, contentPage);
  +
  +                            //Map languageStates = 
contentPage.getLanguagesStates (false);
  +
  +                            HashSet updatedLanguageEntries = (HashSet) 
engineMap.get(
  +                                    "updatedLanguageEntries");
  +                            if (updatedLanguageEntries == null) {
  +                                updatedLanguageEntries = new HashSet();
  +                            }
  +                            if (!updatePageData(jParams, engineMap, 
elh.getCurrentLanguageCode())) {
  +                                // if there was an error, come back to last 
screen
  +                                String lastScreen = 
jParams.getParameter("lastscreen");
  +                                if (lastScreen == null) {
  +                                    lastScreen = "edit";
  +                                }
  +                                engineMap.put("screen", lastScreen);
  +                                // already set
  +                                //engineMap.put( "jspSource", TEMPLATE_JSP );
  +                            }
  +
  +                            boolean changed = 
thePage.setTitles(updatedLanguageEntries, pageTempBean.getTitles());
  +
  +                            //String  pageTitle       = 
(String)engineMap.get ("dataPageTitle");
  +                            //Boolean validate = (Boolean) engineMap.get 
("validate");
  +
  +                            //thePage.setTitle (pageTitle);
  +                            changed |= 
thePage.setPageTemplateID(pageTempBean.getPageTemplateID());
  +
  +                            final String pageURLKey = 
jParams.getParameter("pageURLKey");
  +                            logger.debug("processCurrentScreen - pageURLKey: 
" + pageURLKey);
  +
  +                            if (pageURLKey != null) {
  +                                if ("".equals(pageURLKey)) {
  +                                    changed |= 
thePage.removeProperty(PageProperty.PAGE_URL_KEY_PROPNAME);
  +                                } else {
  +                                    changed |= 
thePage.setProperty(PageProperty.PAGE_URL_KEY_PROPNAME, pageURLKey);
  +                                }
  +                                engineMap.put("dataPageURLKey", pageURLKey);
  +                            }
  +
  +                            logger.debug("changed: " + changed);
  +
  +                            if (changed) {
  +                                thePage.commitChanges(true, user);
  +
  +                                // let's flush the sitemap to make sure the 
changes are updated
  +                                // everywhere.
  +                                
servicesRegistry.getJahiaSiteMapService().resetSiteMap();
  +
  +                                final JahiaEvent objectCreatedEvent = new 
JahiaEvent(this, jParams, contentPage);
  +                                servicesRegistry.getJahiaEventService()
  +                                        
.fireContentObjectUpdated(objectCreatedEvent);
  +
  +                                /* handled by previous event
  +                                // index page
  +                                
ServicesRegistry.getInstance().getJahiaSearchService()
  +                                        .indexPage(thePage.getID(), 
jParams.getUser());
  +
  +                                int pageFieldID = 
ServicesRegistry.getInstance()
  +                                
.getJahiaPageService().getPageFieldID(contentPage.
  +                                        getID());
  +                                if (pageFieldID != -1) {
  +                                    try {
  +                                        ContentField field = 
ContentField.getField(pageFieldID);
  +                                        if ( field.getContainerID() > 0 ){
  +                                            ServicesRegistry.getInstance()
  +                                            
.getJahiaSearchService().indexContainer(field.getContainerID(), 
jParams.getUser());
  +                                        }
  +                                    } catch ( Throwable t ){
  +                                    }
  +                                }*/
  +
  +                                engineMap.put("dataPageTitle", 
pageTempBean.getTitle(elh.getCurrentLanguageCode()));
  +                            }
  +
  +                            // save rights
  +                            if (engineMap.get("adminAccess") != null) {
  +                                engineMap.put("logObjectType",
  +                                              
Integer.toString(LoggingEventListener.PAGE_TYPE));
  +                                engineMap.put("logObject", thePage);
  +                                //ViewRights.getInstance().handleActions 
(jParams, mode, engineMap, thePage.getAclID());
  +                                
ManageRights.getInstance().handleActions(jParams, mode[0],
  +                                                                         
engineMap, thePage.getAclID());
  +                            }
  +
  +                            // save timebasedpublishing engine
  +                            if (engineMap.get("writeAccess") != null
  +                                || engineMap.get("adminAccess") != null) {
  +                                TimeBasedPublishingEngine.getInstance().
  +                                        handleActions(jParams, mode[0], 
engineMap, ContentPage.getPage(thePage.getID()).getObjectKey());
  +                            }
  +
  +                            // save categories
  +                            
ManageCategories.getInstance().handleActions(jParams, mode[0],
  +                                                                         
engineMap,
  +                                                                         new 
ContentPageKey(thePage.getID()), thePage.getPageTemplate(), false);
  +
  +                            // save metadata
  +                            final ObjectKey objectKey = 
ContentPage.getPage(thePage.getID()).getObjectKey();
  +                            
Metadata_Engine.getInstance().handleActions(jParams, mode[0], objectKey);
   
  -            mode = JahiaEngine.SAVE_MODE;
  -
  -            // create one entry for each language
  -            final ContentPage contentPage = 
servicesRegistry.getJahiaPageService().lookupContentPage(
  -                    thePage.getID(), false);
  -
  -            // save workflow
  -            ManageWorkflow.getInstance().handleActions(jParams, mode,
  -                    engineMap, contentPage);
  -
  -            //Map languageStates = contentPage.getLanguagesStates (false);
  -
  -            HashSet updatedLanguageEntries = (HashSet) engineMap.get(
  -                    "updatedLanguageEntries");
  -            if (updatedLanguageEntries == null) {
  -                updatedLanguageEntries = new HashSet();
  -            }
  -            if (!updatePageData(jParams, engineMap, 
elh.getCurrentLanguageCode())) {
  -                // if there was an error, come back to last screen
  -                String lastScreen = jParams.getParameter("lastscreen");
  -                if (lastScreen == null) {
  -                    lastScreen = "edit";
  -                }
  -                engineMap.put("screen", lastScreen);
  -                // already set
  -                //engineMap.put( "jspSource", TEMPLATE_JSP );
  -            }
  -
  -            boolean changed = thePage.setTitles(updatedLanguageEntries, 
pageTempBean.getTitles());
  -
  -            //String  pageTitle       = (String)engineMap.get 
("dataPageTitle");
  -            //Boolean validate = (Boolean) engineMap.get ("validate");
  -
  -            //thePage.setTitle (pageTitle);
  -            changed |= 
thePage.setPageTemplateID(pageTempBean.getPageTemplateID());
  -
  -            final String pageURLKey = jParams.getParameter("pageURLKey");
  -            logger.debug("processCurrentScreen - pageURLKey: " + pageURLKey);
  -
  -            if (pageURLKey != null) {
  -                if ("".equals(pageURLKey)) {
  -                    changed |= 
thePage.removeProperty(PageProperty.PAGE_URL_KEY_PROPNAME);
  -                } else {
  -                    changed |= 
thePage.setProperty(PageProperty.PAGE_URL_KEY_PROPNAME, pageURLKey);
  -                }
  -                engineMap.put("dataPageURLKey", pageURLKey);
  -            }
  -
  -            logger.debug("changed: " + changed);
  -
  -            if (changed) {
  -                thePage.commitChanges(true, user);
  -
  -                // let's flush the sitemap to make sure the changes are 
updated
  -                // everywhere.
  -                servicesRegistry.getJahiaSiteMapService().resetSiteMap();
  -
  -                final JahiaEvent objectCreatedEvent = new JahiaEvent(this, 
jParams, contentPage);
  -                servicesRegistry.getJahiaEventService()
  -                        .fireContentObjectUpdated(objectCreatedEvent);
  -
  -                /* handled by previous event
  -                // index page
  -                ServicesRegistry.getInstance().getJahiaSearchService()
  -                        .indexPage(thePage.getID(), jParams.getUser());
  -
  -                int pageFieldID = ServicesRegistry.getInstance()
  -                .getJahiaPageService().getPageFieldID(contentPage.
  -                        getID());
  -                if (pageFieldID != -1) {
  -                    try {
  -                        ContentField field = 
ContentField.getField(pageFieldID);
  -                        if ( field.getContainerID() > 0 ){
  -                            ServicesRegistry.getInstance()
  -                            
.getJahiaSearchService().indexContainer(field.getContainerID(), 
jParams.getUser());
  +                        } catch (Throwable e) {
  +                            throw new RuntimeException(e);
                           }
  -                    } catch ( Throwable t ){
                       }
  -                }*/
  -
  -                engineMap.put("dataPageTitle", 
pageTempBean.getTitle(elh.getCurrentLanguageCode()));
  -            }
  -
  -            // save rights
  -            if (engineMap.get("adminAccess") != null) {
  -                engineMap.put("logObjectType",
  -                        Integer.toString(LoggingEventListener.PAGE_TYPE));
  -                engineMap.put("logObject", thePage);
  -                //ViewRights.getInstance().handleActions (jParams, mode, 
engineMap, thePage.getAclID());
  -                ManageRights.getInstance().handleActions(jParams, mode,
  -                        engineMap, thePage.getAclID());
  -            }
  -
  -            // save timebasedpublishing engine
  -            if (engineMap.get("writeAccess") != null
  -                    || engineMap.get("adminAccess") != null) {
  -                TimeBasedPublishingEngine.getInstance().
  -                        handleActions(jParams, mode, engineMap, 
ContentPage.getPage(thePage.getID()).getObjectKey());
  -            }
  -
  -            // save categories
  -            ManageCategories.getInstance().handleActions(jParams, mode,
  -                    engineMap,
  -                    new ContentPageKey(thePage.getID()), 
thePage.getPageTemplate(), false);
  +                });
  +            } catch (Throwable e) {
  +                logger.error("Error during add operation of a new element we 
must flush all caches to ensure integrity between database and viewing");
  +                
ServicesRegistry.getInstance().getCacheService().flushAllCaches();
  +                throw new JahiaException(e.getMessage(), e.getMessage(),
  +                                         JahiaException.DATABASE_ERROR, 
JahiaException.CRITICAL_SEVERITY, e);
  +            } finally {
  +                final String lastScreen = jParams.getParameter("lastscreen");
  +                if (lastScreen != null) {
  +                    logger.debug("lastScreen=" + lastScreen);
  +                    if (lastScreen.equals("edit")) {
   
  -            // save metadata
  -            final ObjectKey objectKey = 
ContentPage.getPage(thePage.getID()).getObjectKey();
  -            Metadata_Engine.getInstance().handleActions(jParams, mode, 
objectKey);
  -
  -
  -            final String lastScreen = jParams.getParameter("lastscreen");
  -            if (lastScreen != null) {
  -                logger.debug("lastScreen=" + lastScreen);
  -                if (lastScreen.equals("edit")) {
  -
  -                    // since we cannot efficiently determine all the 
references
  -                    // to this page we do an entire cache flush.
  -                    /** todo is there a better way to do this ? */
  -                    cacheService.getHtmlCacheInstance().flush();
  +                        // since we cannot efficiently determine all the 
references
  +                        // to this page we do an entire cache flush.
  +                        /** todo is there a better way to do this ? */
  +                        cacheService.getHtmlCacheInstance().flush();
   
  -                    // fire event
  -                    final JahiaEvent theEvent = new JahiaEvent(this, 
jParams, thePage);
  -                    
servicesRegistry.getJahiaEventService().fireSetPageProperties(theEvent);
  +                        // fire event
  +                        final JahiaEvent theEvent = new JahiaEvent(this, 
jParams, thePage);
  +                        
servicesRegistry.getJahiaEventService().fireSetPageProperties(theEvent);
  +                    }
                   }
  -            }
  -            if (theScreen.equals("apply")) {
  -                engineMap.put("screen", lastScreen);
  -            }
  -            // #ifdef LOCK
  -            else {
  -                if (jParams.settings().areLocksActivated()) {
  -                    lockService.release(lockKey, user, user.getUserKey());
  +                if (theScreen.equals("apply")) {
  +                    engineMap.put("screen", lastScreen);
  +                }
  +                // #ifdef LOCK
  +                else {
  +                    if (jParams.settings().areLocksActivated()) {
  +                        lockService.release(lockKey, user, 
user.getUserKey());
  +                    }
                   }
               }
               // #endif
           } else if (theScreen.equals("cancel")) {
               // #ifdef LOCK
   
  -            mode = JahiaEngine.CANCEL_MODE;
  +            mode[0] = JahiaEngine.CANCEL_MODE;
               ManageRights.getInstance().
  -                    handleActions(jParams, mode, engineMap, 
thePage.getAclID());
  +                    handleActions(jParams, mode[0], engineMap, 
thePage.getAclID());
   
               if (jParams.settings().areLocksActivated()) {
                   lockService.release(lockKey, user, user.getUserKey());
  
  
  
  Index: JahiaFieldBaseService.java
  ===================================================================
  RCS file: 
/home/cvs/repository/jahia/core/src/java/org/jahia/services/fields/JahiaFieldBaseService.java,v
  retrieving revision 1.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- JahiaFieldBaseService.java        23 Nov 2005 16:18:55 -0000      1.27
  +++ JahiaFieldBaseService.java        23 Nov 2005 16:21:58 -0000      1.28
  @@ -769,7 +769,10 @@
           // method to ensure dynamically Expression evaluation and Contextual
           // ( multilanguage ) processing of field value.
           loadField(theField,loadFlag,jParams,loadVersion);
  -
  +        if(contentField.isMetadata()) {
  +            theField.setIsMetadata(true);
  +            
theField.setMetadataOwnerObjectKey(contentField.getMetadataOwnerObjectKey());   
         
  +        }
           return theField;
   
       } // loadField
  
  
  
  Index: corporate_portal_templates.jar
  ===================================================================
        <<Binary file>>
  

Reply via email to