From: <fg...@us...> - 2013-12-08 08:27:46
|
Revision: 4459 http://openutils.svn.sourceforge.net/openutils/?rev=4459&view=rev Author: fgiust Date: 2013-12-08 08:27:42 +0000 (Sun, 08 Dec 2013) Log Message: ----------- MEDIA-309 Download-link is not rendered Modified Paths: -------------- magnoliamodules/trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/pages/MediaFolderViewPage.java magnoliamodules/trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/types/impl/BaseTypeHandler.java magnoliamodules/trunk/openutils-mgnlmedia/src/main/resources/net/sourceforge/openutils/mgnlmedia/media/pages/MediaFolderViewPage.html Added Paths: ----------- magnoliamodules/trunk/openutils-mgnlmedia/src/main/resources/mgnl-bootstrap/media-nooverwrite/config.modules.media.virtualURIMapping.media-download.xml Modified: magnoliamodules/trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/pages/MediaFolderViewPage.java =================================================================== --- magnoliamodules/trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/pages/MediaFolderViewPage.java 2013-12-07 21:11:44 UTC (rev 4458) +++ magnoliamodules/trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/pages/MediaFolderViewPage.java 2013-12-08 08:27:42 UTC (rev 4459) @@ -19,6 +19,7 @@ package net.sourceforge.openutils.mgnlmedia.media.pages; +import info.magnolia.cms.beans.runtime.FileProperties; import info.magnolia.cms.core.MgnlNodeType; import info.magnolia.cms.core.Path; import info.magnolia.cms.exchange.ActivationManagerFactory; @@ -31,6 +32,7 @@ import info.magnolia.init.MagnoliaConfigurationProperties; import info.magnolia.jcr.util.MetaDataUtil; import info.magnolia.jcr.util.NodeUtil; +import info.magnolia.jcr.util.PropertyUtil; import info.magnolia.module.admininterface.commands.ActivationCommand; import info.magnolia.objectfactory.Components; import info.magnolia.templating.functions.TemplatingFunctions; @@ -48,6 +50,7 @@ import java.util.Map; import javax.jcr.Node; +import javax.jcr.PathNotFoundException; import javax.jcr.RepositoryException; import javax.jcr.Session; import javax.servlet.ServletException; @@ -60,6 +63,7 @@ import net.sourceforge.openutils.mgnlmedia.media.configuration.MediaTypeConfiguration; import net.sourceforge.openutils.mgnlmedia.media.lifecycle.MediaModule; import net.sourceforge.openutils.mgnlmedia.media.tags.el.MediaEl; +import net.sourceforge.openutils.mgnlmedia.media.types.impl.BaseTypeHandler; import org.apache.commons.chain.Command; import org.apache.commons.lang.StringUtils; @@ -510,15 +514,58 @@ if (media == null) { + try + { + response.sendError(404); + } + catch (IOException e) + { + // ignore + } return null; } + MediaTypeConfiguration mtc = Components .getComponent(MediaConfigurationManager.class) .getMediaTypeConfigurationFromMedia(media); + + if (mtc == null) + { + + // path points to a node but not a media + try + { + response.sendError(404); + } + catch (IOException e) + { + // ignore + } + return null; + } String url = mtc.getHandler().getUrl(media); String filename = mtc.getHandler().getFullFilename(media); + try + { + if (media.hasNode(BaseTypeHandler.ORGINAL_NODEDATA_NAME)) + { + Node original = media.getNode(BaseTypeHandler.ORGINAL_NODEDATA_NAME); + String mime = PropertyUtil.getString(original, FileProperties.PROPERTY_CONTENTTYPE); + + if (StringUtils.isNotEmpty(mime)) + { + this.response.setContentType(mime); + } + } + } + catch (RepositoryException e) + { + // should not happen + log.debug(e.getMessage(), e); + } + this.response.addHeader("Content-Disposition", "attachment; filename=" + filename); try { Modified: magnoliamodules/trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/types/impl/BaseTypeHandler.java =================================================================== --- magnoliamodules/trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/types/impl/BaseTypeHandler.java 2013-12-07 21:11:44 UTC (rev 4458) +++ magnoliamodules/trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/types/impl/BaseTypeHandler.java 2013-12-08 08:27:42 UTC (rev 4459) @@ -223,7 +223,7 @@ { try { - return !media.hasProperty(ORGINAL_NODEDATA_NAME); + return !media.hasNode(ORGINAL_NODEDATA_NAME); } catch (RepositoryException e) { Added: magnoliamodules/trunk/openutils-mgnlmedia/src/main/resources/mgnl-bootstrap/media-nooverwrite/config.modules.media.virtualURIMapping.media-download.xml =================================================================== --- magnoliamodules/trunk/openutils-mgnlmedia/src/main/resources/mgnl-bootstrap/media-nooverwrite/config.modules.media.virtualURIMapping.media-download.xml (rev 0) +++ magnoliamodules/trunk/openutils-mgnlmedia/src/main/resources/mgnl-bootstrap/media-nooverwrite/config.modules.media.virtualURIMapping.media-download.xml 2013-12-08 08:27:42 UTC (rev 4459) @@ -0,0 +1,44 @@ +<?xml version="1.0" encoding="UTF-8"?> +<sv:node sv:name="media-download" xmlns:sv="http://www.jcp.org/jcr/sv/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <sv:property sv:name="jcr:primaryType" sv:type="Name"> + <sv:value>mgnl:contentNode</sv:value> + </sv:property> + <sv:property sv:name="jcr:uuid" sv:type="String"> + <sv:value>ae0cc614-772b-4aba-8eab-4857dec74e50</sv:value> + </sv:property> + <sv:property sv:name="class" sv:type="String"> + <sv:value>info.magnolia.cms.beans.config.RegexpVirtualURIMapping</sv:value> + </sv:property> + <sv:property sv:name="fromURI" sv:type="String"> + <sv:value>/media/download/(.*)</sv:value> + </sv:property> + <sv:property sv:name="jcr:createdBy" sv:type="String"> + <sv:value>admin</sv:value> + </sv:property> + <sv:property sv:name="toURI" sv:type="String"> + <sv:value>forward:/.magnolia/pages/mediaFolderView.html?command=download&path=/$1</sv:value> + </sv:property> + <sv:node sv:name="MetaData"> + <sv:property sv:name="jcr:primaryType" sv:type="Name"> + <sv:value>mgnl:metaData</sv:value> + </sv:property> + <sv:property sv:name="jcr:createdBy" sv:type="String"> + <sv:value>admin</sv:value> + </sv:property> + <sv:property sv:name="mgnl:Data" sv:type="String"> + <sv:value>MetaData</sv:value> + </sv:property> + <sv:property sv:name="mgnl:activated" sv:type="Boolean"> + <sv:value>false</sv:value> + </sv:property> + <sv:property sv:name="mgnl:authorid" sv:type="String"> + <sv:value>superuser</sv:value> + </sv:property> + <sv:property sv:name="mgnl:creationdate" sv:type="String"> + <sv:value>2004-11-02T15:34:20.479+01:00</sv:value> + </sv:property> + <sv:property sv:name="mgnl:lastmodified" sv:type="Date"> + <sv:value>2013-12-07T23:13:04.690+01:00</sv:value> + </sv:property> + </sv:node> +</sv:node> Property changes on: magnoliamodules/trunk/openutils-mgnlmedia/src/main/resources/mgnl-bootstrap/media-nooverwrite/config.modules.media.virtualURIMapping.media-download.xml ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +text/xml \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +Author Date Id Revision \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Modified: magnoliamodules/trunk/openutils-mgnlmedia/src/main/resources/net/sourceforge/openutils/mgnlmedia/media/pages/MediaFolderViewPage.html =================================================================== --- magnoliamodules/trunk/openutils-mgnlmedia/src/main/resources/net/sourceforge/openutils/mgnlmedia/media/pages/MediaFolderViewPage.html 2013-12-07 21:11:44 UTC (rev 4458) +++ magnoliamodules/trunk/openutils-mgnlmedia/src/main/resources/net/sourceforge/openutils/mgnlmedia/media/pages/MediaFolderViewPage.html 2013-12-08 08:27:42 UTC (rev 4459) @@ -502,7 +502,7 @@ [/#if] [#if !media.external] <li> - <a href="?command=download&path=${media.handle}" style="background-image: url('${this.request.contextPath}/.resources/media/icons/ico16-download.png');"> + <a href="${this.request.contextPath}/media/download${media.handle}" style="background-image: url('${this.request.contextPath}/.resources/media/icons/ico16-download.png');"> <span>${this.msgs.get('media.download')}</span> </a> </li> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |