|
| File: org/alfresco/components/content-viewer/content-viewer.get.config.xml |
<contentviewer>
<content mimetype="text/plain" viewer="viewers/text.ftl" preload="true"/>
<content mimetype="text/css" viewer="viewers/text.ftl" preload="true"/>
<content mimetype="text/html" viewer="viewers/html.ftl" preload="true"/>
<content mimetype="text/xml" viewer="viewers/xml.ftl" preload="true"/>
<content mimetype="application/x-shockwave-flash" viewer="viewers/flash.ftl" width="200" height="200"/>
<content mimetype="video/mpeg" viewer="viewers/video.ftl" />
<content mimetype="audio/x-wav" viewer="viewers/audio.ftl" />
<content mimetype="audio/mid" viewer="viewers/audio.ftl" />
<content mimetype="audio/mpeg" viewer="viewers/audio.ftl" />
<!-- audio/mpeg -->
<!-- video/quicktime -->
<content mimetype="application/rss+xml" viewer="viewers/rss.ftl" preload="true"/>
<content mimetype="image/gif" viewer="viewers/image.ftl"/>
<content mimetype="image/jpeg" viewer="viewers/image.ftl"/>
<content mimetype="image/png" viewer="viewers/image.ftl"/>
</contentviewer>
|
| File: org/alfresco/components/content-viewer/content-viewer.get.desc.xml |
<webscript>
<shortname>A view component for content in the repository</shortname>
<description>Displays a nodeRef</description>
<url>/components/content-viewer</url>
</webscript>
|
| File: org/alfresco/components/content-viewer/content-viewer.get.head.ftl |
<!-- Content Viewer Assets -->
|
| File: org/alfresco/components/content-viewer/content-viewer.get.html.ftl |
<#--
The included content will automatically have the same parameters as this template.
In other words have access to the node and its content.
-->
<#include "${viewer}"/>
|
| File: org/alfresco/components/content-viewer/content-viewer.get.js |
// Load the config to know what viewer to use for each mimetype
var contentviewer = new XML(config.script);
// Check mandatory parameters
var nodeRef = page.url.args.nodeRef;
if (nodeRef == null || nodeRef.length == 0)
{
status.code = 400;
status.message = "Parameter 'nodeRef' is missing.";
status.redirect = true;
}
// Call the repo for metadata
var json = remote.call("/api/metadata?nodeRef=" + nodeRef)
var node = eval('(' + json + ')');
/**
* If no viewer is configured for the nodes mime-type display
* a fallback template with an explanation text
*/
var viewer = "viewers/no-viewer-exist.ftl";
var preload = false;
var contentData = null;
var content = contentviewer.content.(@mimetype==node.mimetype);
if (content.length() == 1)
{
// Found a configured viewer for the mimetype
viewer = content.@viewer.toString();
preload = (content.@preload.toString() == "true");
}
else if (content.length() > 1)
{
// Multiple viewers found for the same mimetype, throw an error
status.code = 500;
status.message = "Multiple viewers (" + content.@viewer.toString() + ") defined for the mime-type ${node.mimetype}";
status.redirect = true;
}
// property namespaces
var mcns = "{http://www.alfresco.org/model/content/1.0}";
var msns = "{http://www.alfresco.org/model/system/1.0}";
// extract metadata
var storeType = node.properties[msns + "store-protocol"];
var storeId = node.properties[msns + "store-identifier"];
var nodeId = node.properties[msns + "node-uuid"];
var name = node.properties[mcns + "name"];
var contentUrl = "/api/node/content/" +storeType+ "/" +storeId + "/" + nodeId + "?" + encodeURIComponent(name)
if (preload)
{
/**
* This mimetype can be displayed inline and has therefore been configured
* to be loaded directly instead from the browser.
*/
contentData = remote.call(contentUrl);
}
// Prepare model for template
model.viewer = viewer;
model.node = node;
model.contentData = contentData;
model.contentUrl = "/alfresco/service" + contentUrl;
// Set the width
model.width = "100%"; // default value
if (node.properties[mcns + "width"])
{
model.width = node.properties[mcns + "width"];
}
else if (args.width)
{
model.width = args.width;
}
else if (content.@width.toString().length > 0)
{
model.width = content.@width.toString();
}
// Set the height
model.height = "100%"; // default value
if (node.properties[mcns + "height"])
{
model.height = node.properties[mcns + "height"];
}
else if (args.height)
{
model.height = args.height;
}
else if (content.@height.toString().length > 0)
{
model.height = content.@height.toString();
}
|