svn commit: r564473 - in /lenya/branches/BRANCH_1_2_X/src/webapp/lenya/usecases/neutron: jx/meta.jx jx/upload-success.jx neutron.js

[email protected]
Newsgroups gmane.comp.cms.lenya.cvs
Message-ID <[email protected]>
Author: jann
Date: Thu Aug  9 22:52:08 2007
New Revision: 564473

URL: http://svn.apache.org/viewvc?view=rev&rev=564473
Log:
Adding upload feature to neutron usecase. Thanks to Thomas Comiotto

Added:
    lenya/branches/BRANCH_1_2_X/src/webapp/lenya/usecases/neutron/jx/meta.jx
    lenya/branches/BRANCH_1_2_X/src/webapp/lenya/usecases/neutron/jx/upload-success.jx
Modified:
    lenya/branches/BRANCH_1_2_X/src/webapp/lenya/usecases/neutron/neutron.js

Added: lenya/branches/BRANCH_1_2_X/src/webapp/lenya/usecases/neutron/jx/meta.jx
URL: http://svn.apache.org/viewvc/lenya/branches/BRANCH_1_2_X/src/webapp/lenya/usecases/neutron/jx/meta.jx?view=auto&rev=564473
==============================================================================
--- lenya/branches/BRANCH_1_2_X/src/webapp/lenya/usecases/neutron/jx/meta.jx (added)
+++ lenya/branches/BRANCH_1_2_X/src/webapp/lenya/usecases/neutron/jx/meta.jx Thu Aug  9 22:52:08 2007
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<dc:metadata xmlns:dc="http://purl.org/dc/elements/1.1/">
+  <dc:title>${title}</dc:title>
+  <dc:type></dc:type>
+  <dc:rights>All rights reserved.</dc:rights>
+  <dc:publisher></dc:publisher>
+  <dc:date></dc:date>
+  <dc:language></dc:language>
+  <dc:creator>${creator}</dc:creator>
+  <dc:coverage></dc:coverage>
+  <dc:description></dc:description>
+  <dc:extent></dc:extent>
+  <dc:identifier></dc:identifier>
+  <dc:subject></dc:subject>
+  <dc:relation></dc:relation>
+  <dc:contributor></dc:contributor>
+  <dc:source></dc:source>
+  <dc:format>${mimeType}</dc:format>
+</dc:metadata>

Added: lenya/branches/BRANCH_1_2_X/src/webapp/lenya/usecases/neutron/jx/upload-success.jx
URL: http://svn.apache.org/viewvc/lenya/branches/BRANCH_1_2_X/src/webapp/lenya/usecases/neutron/jx/upload-success.jx?view=auto&rev=564473
==============================================================================
--- lenya/branches/BRANCH_1_2_X/src/webapp/lenya/usecases/neutron/jx/upload-success.jx (added)
+++ lenya/branches/BRANCH_1_2_X/src/webapp/lenya/usecases/neutron/jx/upload-success.jx Thu Aug  9 22:52:08 2007
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<status xmlns="http://www.wyona.org/neutron/1.0" xmlns:jx="http://apache.org/cocoon/templates/jx/1.0">
+  <message>Upload completed</message>
+  <resource name="${filename}" uri="${filename}" internalURI="${filename}"/>
+</status>
+

Modified: lenya/branches/BRANCH_1_2_X/src/webapp/lenya/usecases/neutron/neutron.js
URL: http://svn.apache.org/viewvc/lenya/branches/BRANCH_1_2_X/src/webapp/lenya/usecases/neutron/neutron.js?view=diff&rev=564473&r1=564472&r2=564473
==============================================================================
--- lenya/branches/BRANCH_1_2_X/src/webapp/lenya/usecases/neutron/neutron.js (original)
+++ lenya/branches/BRANCH_1_2_X/src/webapp/lenya/usecases/neutron/neutron.js Thu Aug  9 22:52:08 2007
@@ -22,6 +22,11 @@
 importClass(Packages.org.apache.lenya.ac.Identity);
 importClass(Packages.org.apache.lenya.cms.publication.DefaultDocumentIdToPathMapper);
 importClass(Packages.org.apache.lenya.ac.AccreditableManager);
+importClass(Packages.org.apache.lenya.cms.authoring.UploadHelper);
+importClass(Packages.org.apache.lenya.cms.publication.ResourcesManager);
+importClass(Packages.java.io.File);
+importClass(Packages.java.io.FileInputStream);
+
 
 /**
  * Provides flow functions for Neutron protocol support.
@@ -182,6 +187,78 @@
     return;
   }
 }
+
+
+/**
+ * Upload
+ */
+
+
+function upload () {
+
+  var flowHelper = new FlowHelper();
+  var uploadHelper = new UploadHelper("/tmp");
+
+  var uploadFile = cocoon.request.get("upload-file");
+  var title = cocoon.request.get("title");
+  var creator = cocoon.request.get("creator");
+  var rights = cocoon.request.get("rights");
+  var mimeType = cocoon.request.get("mimeType");
+
+  if (!uploadFile) {
+    cocoon.sendStatus(403);
+    return;
+  }
+
+
+  cocoon.log.error("Upload File: " + uploadFile + "\n");
+
+  var document = flowHelper.getPageEnvelope(cocoon).getDocument();
+  var file = uploadHelper.save(cocoon.request, "upload-file"); 
+  var fileName = file.getName();
+
+  var resolver = cocoon.getComponent(Packages.org.apache.excalibur.source.SourceResolver.ROLE);
+  var resourcesManager = new ResourcesManager(document);
+    
+  var assetDirectoryPath = resourcesManager.getPath();
+  var assetPath = assetDirectoryPath +  File.separator + fileName;
+  var targetSource = resolver.resolveURI(assetPath);
+
+  var is = new FileInputStream(file);
+  var os = targetSource.getOutputStream();
+
+  var buffer = new java.lang.reflect.Array.newInstance(java.lang.Byte.TYPE, 1024);
+  var len;
+
+  try {
+    while((len = is.read(buffer)) >= 0)
+      os.write(buffer, 0, len);
+  } catch (e) {
+
+  } finally {
+    is.close();
+    os.close();
+  }
+
+
+  var metaFilePath = resolver.resolveURI(assetPath + ".meta");
+  var metaOs = metaFilePath.getOutputStream();
+
+  cocoon.processPipelineTo("createmetadata", {"mimeType" : mimeType, "title" : title, "creator": creator}, metaOs);
+
+  metaOs.close();
+
+
+  var assetFile = new File(assetPath);
+
+  if (assetFile.exists()) {
+    cocoon.sendPage("upload-success.jx", {"filename" : fileName});  
+  } else {
+    cocoon.sendStatus(403);
+  }  
+
+}
+
 
 
 /**
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.