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>>