You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@lenya.apache.org by Maciek Kaminski <ma...@tiger.com.pl> on 2005/01/03 18:09:56 UTC
inital document upload [was document upload]
Here is my first prototype of "initial document uploading".
The most important modification is in config/tasks/targets.xml, where
I've modified target create in to validate uploaded document and
replace with default one. Additionaly when uploaded file seems to be
in OpenOffice writer format it gets converted to xhtml by convert task
based on writer2latex:
<target name="create">
<property name="create.parent-id" value=""/>
<property name="create.child-id" value=""/>
<property name="create.child-name" value=""/>
<property name="create.init-file" value=""/>
<property name="create.child-type" value=""/>
<property name="create.doctype" value=""/>
<property name="create.language" value=""/>
<property name="create.title" value=""/>
<property name="create.creator" value=""/>
<property name="create.description" value=""/>
<property name="create.subject" value=""/>
<property name="create.publisher" value=""/>
<property name="create.date" value=""/>
<property name="create.rights" value=""/>
<property name="create.columns" value=""/>
<property name="create.userid" value=""/>
<property name="create.ipaddress" value=""/>
<property name="create.filename" value=""/>
<echo>create-with-init-file: ${create.filename}</echo>
<echo>create.doctype: ${create.doctype}</echo>
<property name="document.file" value=""/>
<mapdocumentidtofile
area="${authoring.area}"
documentid="${create.parent-id}/${create.child-id}"
language="${create.language}"
propertyname="document.file"
/>
<!--
Here conversion to html and validation takes place.
I use here if task from ant contrib project
(http://ant-contrib.sourceforge.net/)
and convert task based on writer2latex project
(http://www.hj-gym.dk/~hj/writer2latex/).
-->
<if>
<and>
<isset property="create.filename"/>
<not><equals arg1="${create.filename}" arg2=""/></not>
<equals arg1="${create.doctype}" arg2="xhtml"/>
</and>
<then>
<if>
<and>
<contains string="${create.filename}" substring=".sxw"/>
<equals arg1="${create.doctype}" arg2="xhtml"/>
</and>
<then>
<tempfile property="temp.file" suffix=".xhtml"/>
<convertsxw
inFile="${create.filename}"
outFile="${temp.file}"
outputFormat="xhtml"
configFile="${pub.dir}/config/tasks/cleanxhtml.xml"/>
<xslt in="${temp.file}"
out="${create.filename}"
force="true"
style="${pub.dir}/xslt/fixw2l.xslt"/>
<delete file="${temp.file}"/>
</then>
<else>
<jing
rngfile="${pub.dir}/config/doctypes/schemas/${create.doctype}.rng">
<fileset file="{create.filename}"/>
</jing>
</else>
</if>
</then>
</if>
<taskdef name="create"
classname="org.apache.lenya.cms.ant.DocumentCreatorTask"/>
<create
authoringpath="${authoring.dir}"
area="${authoring.area}"
parentid="${create.parent-id}"
childid="${create.child-id}"
childname="${create.child-name}"
childtype="${create.child-type}"
documenttype="${create.doctype}"
language="${create.language}"/>
<if>
<and>
<isset property="create.filename"/>
<not><equals arg1="${create.filename}" arg2=""/></not>
</and>
<then>
<move file="${create.filename}" tofile="${document.file}"/>
</then>
</if>
<!-- Init the workflow history -->
<echo>init the workflow history with document-id:
${create.parent-id}/${create.child-id}</echo>
<echo>with document-type: ${create.doctype}</echo>
<echo>with language: ${create.language}</echo>
<echo>with user ID: ${create.userid}</echo>
<echo>with IP address: ${create.ipaddress}</echo>
<init-history
documentid="${create.parent-id}/${create.child-id}"
documenttype="${create.doctype}"
language="${create.language}"
userid="${create.userid}"
machineip="${create.ipaddress}"
/>
<tempfile property="temp.file" destDir="work"/>
<xslt in="${document.file}"
out="${temp.file}"
force="true"
style="${pub.dir}/../../xslt/authoring/addMetaData.xsl">
<param name="title" expression="${create.title}"/>
<param name="creator" expression="${create.creator}"/>
<param name="subject" expression="${create.subject}"/>
<param name="description" expression="${create.description}"/>
<param name="language" expression="${create.language}"/>
<param name="publisher" expression="${create.publisher}"/>
<param name="date" expression="${create.date}"/>
<param name="rights" expression="${create.rights}"/>
<param name="columns" expression="${create.columns}"/>
</xslt>
<move file="${temp.file}" tofile="${document.file}"/>
</target>
To have documents uploaded the lenya/xslt/authoring/create.xsp had to be
modified:
at line 134:
<tr>
<td class="lenya-entry-caption"><i18n:text>File
Name</i18n:text>:</td><td><input class="lenya-form-element" type="file"
name="properties.create.filename"/></td>
</tr>
This prototype works but it is far from optimal solution. Here are the
problems that I need strategic advice on:
- what idea lays behind puting cms routines into ant tasks?
- should uploaded document validation and conversion be executed inside
targets.xml? It is rather part of document creation logic, no user
interface,
so from that point of view it should go to targets.xml.
But there is no graceful way (at least I don't know of any) to return
validation
result back to user interface (i.e. sitemap).
Maciej Kaminski
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@lenya.apache.org
For additional commands, e-mail: user-help@lenya.apache.org