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 Page(a)file.doc}, {@code Space.Page(a)file.xls} or
{@code wiki:Space.Page@file.odt}.
+ */
+ 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, Page(a)file.doc,
Space.Page(a)file.xls or wiki:Space.Page@file.odt.")
+ @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
_______________________________________________
devs mailing list
devs(a)xwiki.org