Skip to content

Instantly share code, notes, and snippets.

@DavidSSL
Created September 21, 2012 19:23
Show Gist options
  • Save DavidSSL/3763376 to your computer and use it in GitHub Desktop.
Save DavidSSL/3763376 to your computer and use it in GitHub Desktop.
<xml version="1.0" encoding="UTF-8"?>
xsl:stylesheet [
<!--ENTITY nbsp " ">
]>
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxml="urn:schemas-microsoft-com:xslt"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:umbraco.library="urn:umbraco.library"
xmlns:Exslt.ExsltCommon="urn:Exslt.ExsltCommon"
xmlns:Exslt.ExsltDatesAndTimes="urn:Exslt.ExsltDatesAndTimes"
xmlns:Exslt.ExsltMath="urn:Exslt.ExsltMath"
xmlns:Exslt.ExsltRegularExpressions="urn:Exslt.ExsltRegularExpressions"
xmlns:Exslt.ExsltStrings="urn:Exslt.ExsltStrings"
xmlns:Exslt.ExsltSets="urn:Exslt.ExsltSets"
xmlns:tagsLib="urn:tagsLib"
xmlns:BlogLibrary="urn:BlogLibrary"
xmlns:effects="http://www.umbraco.org/randomTools"
exclude-result-prefixes="msxml umbraco.library Exslt.ExsltCommon Exslt.ExsltDatesAndTimes Exslt.ExsltMath Exslt.ExsltRegularExpressions Exslt.ExsltStrings Exslt.ExsltSets tagsLib BlogLibrary effects msxsl">
<xsl:output method="xml" omit-xml-declaration="yes"/>
<msxsl:script language="CSharp" implements-prefix="effects">
bin/umbraco.dll"/>
<!--[CDATA[-->
public string randomEffect(int lowerLimit, int upperLimit)
{
StringBuilder sb = new StringBuilder();
Random random = umbraco.library.GetRandom();
lock(random)
{
switch (random.Next(lowerLimit, upperLimit))
{
case 0:
sb.Append("from: '100% 80% 1x',to: '100% 0% 1.7x',time:7");
break;
case 1:
sb.Append("from: 'top left',to: 'bottom right 1.5x',time: 5");
break;
case 2:
sb.Append("from: 'bottom right',to: 'top left 1.1x', time: 5");
break;
case 3:
sb.Append("from: '100% 50%',to: '30% 50% 1.5x',time: 5");
break;
case 4:
sb.Append("from: '50% 100% 1x',to: '50% 0% 5.7x',time: 6");
break;
default:
sb.Append("from: '90% 60% 1x',to: '80% 0% 1.7x',time: 5");
break;
}
}
return sb.ToString();
}
]]>
</msxsl:script>
<xsl:param name="currentPage"/>
<xsl:template match="/">
<xsl:value-of select="umbraco.library:AddJquery()"/>
<xsl:value-of select="umbraco.library:RegisterJavaScriptFile('crossSlide', '/scripts/jquery.cross-slide.js')"/>
<xsl:variable name="filePathStart">
<xsl:text>/umbraco/ImageGen.ashx?image=</xsl:text>
</xsl:variable>
<xsl:variable name="fileWidth">
<xsl:text>&amp;width=350</xsl:text>
</xsl:variable>
<script type="text/javascript">
$('#image-block').crossSlide({
fade: 1
}, [
<xsl:for-each select="$currentPage/descendant::node[@nodeTypeAlias='RunwayGalleryPhoto']">
{ src: '<xsl:value-of select="$filePathStart" disable-output-escaping="yes"/><xsl:value-of select="concat(substring-before(data [@alias='umbracoFile'],'.'), '.jpg')"/><xsl:value-of select="$fileWidth" disable-output-escaping="yes"/>',
<xsl:value-of select="effects:randomEffect(0,5)"/> }
<xsl:if test="position() != last()">
<xsl:text>,</xsl:text>
</xsl:if>
</xsl:for-each>
]);
</script>
</xsl:template>
</xsl:stylesheet>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment