hmmm IMO this macro should be in the xwiki-office/ directory along with the other 2 projects. WDYT? Thanks -Vincent On Sep 28, 2010, at 5:52 PM, mflorea (SVN) wrote:
Author: mflorea Date: 2010-09-28 17:52:58 +0200 (Tue, 28 Sep 2010) New Revision: 31441
Added: platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-office/ platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-office/pom.xml platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-office/src/ platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-office/src/main/ platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-office/src/main/java/ platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-office/src/main/java/org/ platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-office/src/main/java/org/xwiki/ platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-office/src/main/java/org/xwiki/rendering/ platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-office/src/main/java/org/xwiki/rendering/internal/ platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-office/src/main/java/org/xwiki/rendering/internal/macro/ platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-office/src/main/java/org/xwiki/rendering/internal/macro/office/ platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-office/src/main/java/org/xwiki/rendering/internal/macro/office/OfficeMacro.java platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-office/src/main/java/org/xwiki/rendering/macro/ platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-office/src/main/java/org/xwiki/rendering/macro/office/ platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-office/src/main/java/org/xwiki/rendering/macro/office/OfficeMacroParameters.java platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-office/src/main/resources/ platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-office/src/main/resources/META-INF/ platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-office/src/main/resources/META-INF/components.txt Modified: platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/pom.xml Log: XWIKI-5538: Create a macro to view office attachments
Modified: platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/pom.xml =================================================================== --- platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/pom.xml 2010-09-28 14:59:38 UTC (rev 31440) +++ platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/pom.xml 2010-09-28 15:52:58 UTC (rev 31441) @@ -116,5 +116,6 @@ <module>xwiki-rendering-macro-ruby</module> <module>xwiki-rendering-macro-python</module> <module>xwiki-rendering-macro-php</module> + <module>xwiki-rendering-macro-office</module> </modules> </project>
Added: platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-office/pom.xml =================================================================== --- platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-office/pom.xml (rev 0) +++ platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-office/pom.xml 2010-09-28 15:52:58 UTC (rev 31441) @@ -0,0 +1,58 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- + * + * See the NOTICE file distributed with this work for additional + * information regarding copyright ownership. + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + * +--> + +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <parent> + <artifactId>xwiki-core-rendering-macros-parent</artifactId> + <groupId>org.xwiki.platform</groupId> + <version>2.5-SNAPSHOT</version> + </parent> + <modelVersion>4.0.0</modelVersion> + <artifactId>xwiki-core-rendering-macro-office</artifactId> + <name>XWiki Platform - Core - Rendering - Macro - Office</name> + <version>2.5-SNAPSHOT</version> + <description>View office attachments (doc, ppt, xls, odt, odp, ods etc.) inside wiki pages without downloading or + importing them.</description> + <dependencies> + <dependency> + <groupId>org.xwiki.platform</groupId> + <artifactId>xwiki-core-office-viewer</artifactId> + <version>${project.version}</version> + </dependency> + </dependencies> + <build> + <plugins> + <plugin> + <!-- Apply the Checkstyle configurations defined in the top level pom.xml file --> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-checkstyle-plugin</artifactId> + </plugin> + </plugins> + </build> + <properties> + <!-- Skip Clirr execution since this is the first release of this module. Remove once XE 2.5M2 is released. --> + <xwiki.clirr.skip>true</xwiki.clirr.skip> + </properties> +</project>
Property changes on: platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-office/pom.xml ___________________________________________________________________ Added: svn:keywords + Author Id Revision HeadURL Added: svn:eol-style + native
Added: platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-office/src/main/java/org/xwiki/rendering/internal/macro/office/OfficeMacro.java =================================================================== --- platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-office/src/main/java/org/xwiki/rendering/internal/macro/office/OfficeMacro.java (rev 0) +++ platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-office/src/main/java/org/xwiki/rendering/internal/macro/office/OfficeMacro.java 2010-09-28 15:52:58 UTC (rev 31441) @@ -0,0 +1,108 @@ +/* + * See the NOTICE file distributed with this work for additional + * information regarding copyright ownership. + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ +package org.xwiki.rendering.internal.macro.office; + +import java.util.Collections; +import java.util.List; +import java.util.Map; + +import org.xwiki.bridge.DocumentAccessBridge; +import org.xwiki.component.annotation.Component; +import org.xwiki.component.annotation.Requirement; +import org.xwiki.model.EntityType; +import org.xwiki.model.reference.AttachmentReference; +import org.xwiki.model.reference.DocumentReference; +import org.xwiki.model.reference.EntityReferenceResolver; +import org.xwiki.office.viewer.OfficeViewer; +import org.xwiki.rendering.block.Block; +import org.xwiki.rendering.macro.AbstractMacro; +import org.xwiki.rendering.macro.MacroExecutionException; +import org.xwiki.rendering.macro.office.OfficeMacroParameters; +import org.xwiki.rendering.transformation.MacroTransformationContext; + +/** + * View office attachments (doc, ppt, xls, odt, odp, ods etc.) inside wiki pages without downloading or importing them. + * + * @version $Id$ + * @since 2.5M2 + */ +@Component("office") +public class OfficeMacro extends AbstractMacro<OfficeMacroParameters> +{ + /** + * The component used to resolve the attachment string reference relative to the current document reference. + */ + @Requirement("explicit") + private EntityReferenceResolver<String> explicitStringEntityReferenceResolver; + + /** + * The component used to get the current document reference. + */ + @Requirement + private DocumentAccessBridge documentAccessBridge; + + /** + * The component used to view the office attachments. + */ + @Requirement + private OfficeViewer officeViewer; + + /** + * Default constructor. + */ + public OfficeMacro() + { + super("Office Document Viewer", "View office attachments (doc, ppt, xls, odt, odp, ods etc.) inside " + + "wiki pages without downloading or importing them.", OfficeMacroParameters.class); + + setDefaultCategory(DEFAULT_CATEGORY_CONTENT); + } + + /** + * {@inheritDoc} + * + * @see AbstractMacro#execute(Object, String, MacroTransformationContext) + */ + public List<Block> execute(OfficeMacroParameters parameters, String content, MacroTransformationContext context) + throws MacroExecutionException + { + DocumentReference currentDocumentReference = documentAccessBridge.getCurrentDocumentReference(); + AttachmentReference attachmentReference = + new AttachmentReference(explicitStringEntityReferenceResolver.resolve(parameters.getAttachment(), + EntityType.ATTACHMENT, currentDocumentReference)); + Map<String, String> viewParameters = + Collections.singletonMap("filterStyles", String.valueOf(parameters.isFilterStyles())); + try { + return officeViewer.createView(attachmentReference, viewParameters).getChildren(); + } catch (Exception e) { + throw new MacroExecutionException("Failed to view office attachment.", e); + } + } + + /** + * {@inheritDoc} + * + * @see AbstractMacro#supportsInlineMode() + */ + public boolean supportsInlineMode() + { + return false; + } +}
Property changes on: platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-office/src/main/java/org/xwiki/rendering/internal/macro/office/OfficeMacro.java ___________________________________________________________________ Added: svn:keywords + Author Id Revision HeadURL Added: svn:eol-style + native
Added: platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-office/src/main/java/org/xwiki/rendering/macro/office/OfficeMacroParameters.java =================================================================== --- platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-office/src/main/java/org/xwiki/rendering/macro/office/OfficeMacroParameters.java (rev 0) +++ platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-office/src/main/java/org/xwiki/rendering/macro/office/OfficeMacroParameters.java 2010-09-28 15:52:58 UTC (rev 31441) @@ -0,0 +1,89 @@ +/* + * See the NOTICE file distributed with this work for additional + * information regarding copyright ownership. + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ +package org.xwiki.rendering.macro.office; + +import org.xwiki.properties.annotation.PropertyDescription; +import org.xwiki.properties.annotation.PropertyMandatory; + +/** + * Parameters for the {@link org.xwiki.rendering.internal.macro.office.OfficeMacro}. + * + * @version $Id$ + * @since 2.5M2 + */ +public class OfficeMacroParameters +{ + /** + * The office attachment to be viewed. Use an attachment string reference to specify which office file should be + * viewed: {@code file.ppt}, {@code [email protected]}, {@code [email protected]} or {@code wiki:[email protected]}. + */ + private String attachment; + + /** + * Whether to filter in-line CSS styles present in the HTML content produced by the OpenOffice server. Office + * content is usually better integrated in the host wiki page when styles are filtered. + * <p> + * Styles are filtered by default. + */ + private boolean filterStyles = true; + + /** + * @return a string reference to the office attachment to be viewed + */ + public String getAttachment() + { + return attachment; + } + + /** + * Sets the office attachment to be viewed. + * + * @param attachment an attachment string reference + */ + @PropertyDescription("The office attachment to be viewed. Use an attachment string reference to specify which " + + "office file should be viewed: file.ppt, [email protected], [email protected] or wiki:[email protected].") + @PropertyMandatory + public void setAttachment(String attachment) + { + this.attachment = attachment; + } + + /** + * @return {@code true} if the CSS styles present in the HTML content produces by the OpenOffice server are + * filtered, {@code false} otherwise + */ + public boolean isFilterStyles() + { + return filterStyles; + } + + /** + * Sets whether to filter in-line CSS styles present in the HTML content produced by the OpenOffice server. + * + * @param filterStyles {@code true} to filter the CSS style present in the HTML content produces by the OpenOffice + * server, {@code false} otherwise + */ + @PropertyDescription("Whether to filter in-line CSS styles present in the HTML content produced by the OpenOffice " + + "server. Office content is usually better integrated in the host wiki page when styles are filtered.") + public void setFilterStyles(boolean filterStyles) + { + this.filterStyles = filterStyles; + } +}
Property changes on: platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-office/src/main/java/org/xwiki/rendering/macro/office/OfficeMacroParameters.java ___________________________________________________________________ Added: svn:keywords + Author Id Revision HeadURL Added: svn:eol-style + native
Added: platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-office/src/main/resources/META-INF/components.txt =================================================================== --- platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-office/src/main/resources/META-INF/components.txt (rev 0) +++ platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-office/src/main/resources/META-INF/components.txt 2010-09-28 15:52:58 UTC (rev 31441) @@ -0,0 +1 @@ +org.xwiki.rendering.internal.macro.office.OfficeMacro \ No newline at end of file
Property changes on: platform/core/trunk/xwiki-rendering/xwiki-rendering-macros/xwiki-rendering-macro-office/src/main/resources/META-INF/components.txt ___________________________________________________________________ Added: svn:eol-style + native