[Portfolio] parsing template ?

Noah Botimer botimer at umich.edu
Mon Jul 27 13:28:04 PDT 2009


Hi Jon,

You should check out XsltFunctions.java. It's not all that well  
documented, but there is a method available that turns a reference  
like that into a link, and one that extracts the item's display name.  
It might not be the same as what you'd parse out of this reference,  
but it will be the same as if it were shown in the Resources tool or  
somewhere in the UI (usually the same, though). There are also  
various other methods in there that can be called from your templates.

This technique is actually used in the default Form renderer  
(implemented in formFieldTemplate.xslt). What you're looking for is  
sakaifn:getReferenceUrl() and sakaifn:getReferenceName(), and the  
element with the attachment path is what to pass in. In this snippet,  
that's the current node, so the dot is used. The other stuff here is  
just for enough context to see the default view's attachment list in  
whole.

<!-- if there are attachments already, render these as a list -->
<!--todo: mime type lookup to resolve the icons  -->
<xsl:if test="$currentParent/node()[$name=name()]">
	<ul class="attachList labelindnt" style="clear:both;padding-top:.5em">
		<xsl:for-each select="$currentParent/node()[$name=name()]">
			<li>
				<img>
					<xsl:attribute name="src">
						<xsl:value-of select="sakaifn:getImageUrl(.)" />
					</xsl:attribute>
				</img>
				<input type="hidden" name="{$name}" value="{.}" />
				<a target="_blank">
					<xsl:attribute name="href">
						<xsl:value-of select="sakaifn:getReferenceUrl(.)" />
					</xsl:attribute>
					<xsl:value-of select="sakaifn:getReferenceName(.)" />
				</a>
			</li>
		</xsl:for-each>
	</ul>
</xsl:if>

Cheers,
-Noah

On Jul 27, 2009, at 4:00 PM, Jon Wheat wrote:

> I have a portfolio form that collects multiple attachments.
>
> The resulting XML looks like this -
>
>      <structuredData>
>         <document>
>           <docReflection> snipped </docReflection>
>           <fileSelect>/attachment/2f0ae395-a3dd-493b- 
> b9da-141395ad34ff/Matrices/8b842f05-a344-42a0-91c3-51f138d51f62/ 
> lang_c1.pdf</fileSelect>
>           <fileSelect>/attachment/2f0ae395-a3dd-493b- 
> b9da-141395ad34ff/Matrices/426b99d2-d514-4a08-ba9a-0d00ffd8e81d/ 
> lang_c2.pdf</fileSelect>
>           <fileSelect>/attachment/2f0ae395-a3dd-493b- 
> b9da-141395ad34ff/Matrices/c0afc9de-f294-49ec-bcfc-1e47a7d7908a/ 
> lang_c3.pdf</fileSelect>
>         </document>
>       </structuredData>
>
> I'm now attempting to grab just the filenames for these files and  
> am having difficulty both looping though the fileSelect(s) and  
> parsing the urls so I can create simple a lang_c1.pdf link.
>
> Does anyone have any template code that does this ?
>
> - Jon
>
> _______________________________________________
> portfolio mailing list
> portfolio at collab.sakaiproject.org
> http://collab.sakaiproject.org/mailman/listinfo/portfolio
>
> TO UNSUBSCRIBE: send email to portfolio- 
> unsubscribe at collab.sakaiproject.org with a subject of "unsubscribe"

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://collab.sakaiproject.org/pipermail/portfolio/attachments/20090727/f343d05c/attachment-0001.html 


More information about the portfolio mailing list