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