CCM NG: First part of getting the ItemLifecycleItemPane working

git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@5030 8810af33-2d31-482b-a856-94f89814c4df

Former-commit-id: b910b14008
pull/2/head
jensp 2017-10-05 17:15:47 +00:00
parent 06f531dfa3
commit 4be6c11a12
2 changed files with 54 additions and 15 deletions

View File

@ -18,11 +18,17 @@
*/
package com.arsdigita.cms.ui.lifecycle;
import org.hibernate.boot.archive.scan.spi.ClassDescriptor;
import org.libreccm.categorization.Categorization;
import org.libreccm.categorization.Category;
import org.librecms.contentsection.ContentItem;
import org.librecms.contentsection.ContentItemRepository;
import org.librecms.contentsection.ContentSection;
import org.librecms.contentsection.ContentSectionRepository;
import org.librecms.lifecycle.LifecycleDefinition;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;
@ -38,6 +44,9 @@ public class ItemLifecycleAdminController {
@Inject
private ContentItemRepository itemRepo;
@Inject
private ContentSectionRepository sectionRepo;
@Transactional(Transactional.TxType.REQUIRED)
public boolean isAssignedToAbstractCategory(final ContentItem item) {
@ -57,4 +66,32 @@ public class ItemLifecycleAdminController {
return count > 0;
}
@Transactional(Transactional.TxType.REQUIRED)
public List<LifecycleDefinition> getLifecycleDefinitions(
final ContentSection section) {
final ContentSection contentSection = sectionRepo
.findById(section.getObjectId())
.orElseThrow(() -> new IllegalArgumentException(String
.format("No ContentSection with ID %d in the database.",
section.getObjectId())));
return contentSection
.getLifecycleDefinitions()
.stream()
.collect(Collectors.toList());
}
@Transactional(Transactional.TxType.REQUIRED)
public LifecycleDefinition getDefaultLifecycle(final ContentItem item) {
final ContentItem contentItem = itemRepo
.findById(item.getObjectId())
.orElseThrow(() -> new IllegalArgumentException(String
.format("No ContentItem with ID %d in the database.",
item.getObjectId())));
return contentItem.getContentType().getDefaultLifecycle();
}
}

View File

@ -257,25 +257,28 @@ class ItemLifecycleSelectForm extends BaseForm {
addAction(new Submit("finish", gz("cms.ui.item.lifecycle.publish")));
// Form listeners
addValidationListener(new ValidationListener());
addSecurityListener(ItemPrivileges.PUBLISH, item);
addInitListener(new InitListener());
addProcessListener(new ProcessListener());
super.addValidationListener(new ValidationListener());
super.addSecurityListener(ItemPrivileges.PUBLISH, item);
super.addInitListener(new InitListener());
super.addProcessListener(new ProcessListener());
}
private class OptionPrinter implements PrintListener {
@Override
public final void prepare(final PrintEvent e) {
public final void prepare(final PrintEvent event) {
final ContentSection section = CMS.getContext().getContentSection();
final List<LifecycleDefinition> definitions = section
.getLifecycleDefinitions();
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
final ItemLifecycleAdminController controller = cdiUtil
.findBean(ItemLifecycleAdminController.class);
final SingleSelect target = (SingleSelect) e.getTarget();
final List<LifecycleDefinition> definitions = controller
.getLifecycleDefinitions(section);
final SingleSelect target = (SingleSelect) event.getTarget();
target.clearOptions();
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
final GlobalizationHelper globalizationHelper = cdiUtil.findBean(
GlobalizationHelper.class);
final Locale locale = globalizationHelper.getNegotiatedLocale();
@ -305,6 +308,8 @@ class ItemLifecycleSelectForm extends BaseForm {
final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
final ContentItemManager itemManager = cdiUtil.findBean(
ContentItemManager.class);
final ItemLifecycleAdminController controller = cdiUtil
.findBean(ItemLifecycleAdminController.class);
if (itemManager.isLive(item)) {
// If the item is published, select the currently
@ -315,11 +320,8 @@ class ItemLifecycleSelectForm extends BaseForm {
cycleSelect.setValue(state, definition.getDefinitionId());
} else {
// Set the default lifecycle (if it exists).
final ContentSection section = CMS.getContext()
.getContentSection();
final LifecycleDefinition definition = item.getContentType()
.getDefaultLifecycle();
final LifecycleDefinition definition = controller
.getDefaultLifecycle(item);
if (definition != null) {
cycleSelect.setValue(state, definition.getDefinitionId());