001package org.nuxeo.template.web; 002 003import java.io.Serializable; 004import java.util.List; 005 006import org.apache.commons.logging.Log; 007import org.apache.commons.logging.LogFactory; 008import org.jboss.seam.annotations.In; 009import org.nuxeo.ecm.core.api.CoreSession; 010import org.nuxeo.ecm.core.api.DocumentModel; 011import org.nuxeo.ecm.core.api.DocumentNotFoundException; 012import org.nuxeo.ecm.core.api.IdRef; 013import org.nuxeo.ecm.core.api.security.SecurityConstants; 014import org.nuxeo.ecm.platform.rendition.service.RenditionDefinition; 015import org.nuxeo.ecm.platform.rendition.service.RenditionService; 016import org.nuxeo.ecm.platform.ui.web.api.NavigationContext; 017import org.nuxeo.runtime.api.Framework; 018import org.nuxeo.template.api.TemplateProcessorService; 019import org.nuxeo.template.api.adapters.TemplateBasedDocument; 020import org.nuxeo.template.api.adapters.TemplateSourceDocument; 021import org.nuxeo.template.rendition.TemplateBasedRenditionProvider; 022 023public class BaseTemplateAction implements Serializable { 024 025 private static final long serialVersionUID = 1L; 026 027 protected static final Log log = LogFactory.getLog(BaseTemplateAction.class); 028 029 @In(create = true) 030 protected transient NavigationContext navigationContext; 031 032 @In(create = true, required = false) 033 protected transient CoreSession documentManager; 034 035 public boolean canAddTemplateInputs() { 036 DocumentModel currentDocument = navigationContext.getCurrentDocument(); 037 if (!documentManager.hasPermission(currentDocument.getRef(), SecurityConstants.WRITE)) { 038 return false; 039 } 040 TemplateSourceDocument template = currentDocument.getAdapter(TemplateSourceDocument.class); 041 return template != null ? true : false; 042 } 043 044 public boolean canUpdateTemplateInputs(String templateName) { 045 DocumentModel currentDocument = navigationContext.getCurrentDocument(); 046 if (!documentManager.hasPermission(currentDocument.getRef(), SecurityConstants.WRITE)) { 047 return false; 048 } 049 TemplateSourceDocument template = currentDocument.getAdapter(TemplateSourceDocument.class); 050 if (template != null) { 051 return true; 052 } 053 TemplateBasedDocument templateBased = currentDocument.getAdapter(TemplateBasedDocument.class); 054 if (templateBased != null) { 055 return templateBased.hasEditableParams(templateName); 056 } 057 return false; 058 } 059 060 public boolean canResetParameters() { 061 DocumentModel currentDocument = navigationContext.getCurrentDocument(); 062 if (!documentManager.hasPermission(currentDocument.getRef(), SecurityConstants.WRITE)) { 063 return false; 064 } 065 TemplateBasedDocument templateBased = currentDocument.getAdapter(TemplateBasedDocument.class); 066 if (templateBased != null) { 067 return true; 068 } 069 return false; 070 } 071 072 public TemplateSourceDocument getCurrentDocumentAsTemplateSourceDocument() { 073 return navigationContext.getCurrentDocument().getAdapter(TemplateSourceDocument.class); 074 } 075 076 public DocumentModel resolveTemplateById(String uuid) { 077 try { 078 return documentManager.getDocument(new IdRef(uuid)); 079 } catch (DocumentNotFoundException e) { 080 return null; 081 } 082 } 083 084 public List<RenditionDefinition> getRenditions() { 085 RenditionService rs = Framework.getLocalService(RenditionService.class); 086 return rs.getDeclaredRenditionDefinitionsForProviderType(TemplateBasedRenditionProvider.class.getSimpleName()); 087 } 088 089 public List<TemplateSourceDocument> getAvailableOfficeTemplates(String targetType) { 090 TemplateProcessorService tps = Framework.getLocalService(TemplateProcessorService.class); 091 return tps.getAvailableOfficeTemplates(documentManager, targetType); 092 } 093 094}