Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> xmlns:urwg="http://www.gridforum.org/2003/ur-wg"
    xmlns:SimpleDateFormat="http://xml.apache.org/xalan/java/java.text.SimpleDateFormat" xmlns:Date="http://xml.apache.org/xalan/java/java.util.Date">

    <!-- Declaration of parameters -->
    <!-- if you want to use a Sakai value or a passed in parameter from the -->
    <!-- query string, you should state it here -->
 

      <!-- The id parameter from the query string -->
    <xsl:param name="id"/>

        <!-- a number we can switch on to display The sakai.tool.placement.ia parameter from the query string -->
    <xsl:param name="sakai.tool.placement.id"/>

    <!-- a number we can switch on to display different content for each page -->
    <xsl:param name="pageNumber"/> 
   

    <!-- if passed, the created variable will be a key to a single blog Entry -->
    <xsl:param name="created"/> 
   

    <!-- Declare output method -->
    <xsl:output method="html"/>
  

     <!-- Main Template outputs our HTML page -->
    <xsl:template match="/">
        <xsl:choose>
        <html>    <xsl:when test="$pageNumber=4"> Rss! </xsl:when>
     <head><title><xsl:text>My Blog</xsl:text></title></head>      <xsl:otherwise>
      <body>          <html>
      <div>              <head>
      <img>                  <title>My Blog</title>
     <xsl:attribute name="src">                  <link           <xsl:value-of select="/ospiPresentation/presentationFiles/myLogo/artifact/fileArtifact/uri"/rel="stylesheet" type="text/css">
                            <!--<xsl:attribute name="href">blogStyle.css</xsl:attribute>-->
                             </xsl:attribute>
<xsl:attribute name="href">
                       <xsl:attribute name="alt">My Institutions Logo</xsl:attribute>      <xsl:value-of select="/ospiPresentation/presentationFiles/style/artifact/fileArtifact/uri"/>
                 <xsl:attribute name="style">float: right; padding: 1em</xsl:attribute>       </xsl:attribute>
             </img>           </link>
           <h1>My Blog</h1>        </head>
        </div>            <body>
                        <div id="wrapper">
   <!-- a little menu to navigate -->
                    <div id="menuheader" style="width: 100%; padding: 1em; margin: 1em 0; border-bottom: solid 1px black">
    >
                                <xsl:call-templateattribute name="menuLinkstyle">
                                    <xsl:with-param name="pageNumber"></xsl:with-param>text>background-image:url('</xsl:text>
                                    <xsl:withvalue-paramof nameselect="text">Home</xsl:with-param>/ospiPresentation/presentationFiles/backgroundImage/artifact/fileArtifact/uri"/>
                        </xsl:call-template> |           <xsl:text>')</xsl:text>
              <xsl:call-template name="menuLink">                 </xsl:attribute>
                 <xsl:with-param name="pageNumber">2</xsl:with-param>               <img>
                                    <xsl:with-paramattribute name="text">All Entries</xsl:with-param>src">
                                            </xsl:call-template> <xsl:value-of select="/ospiPresentation/presentationFiles/myLogo/artifact/fileArtifact/uri"/>
                    </div>                </xsl:attribute>
                         <!-- a switch to select content for this page based on the value of pageNumber --><xsl:attribute name="alt">My Institutions Logo</xsl:attribute>
                     <div>               <xsl:attribute name="style">float: right;</xsl:attribute>
       <xsl:choose>                         </img>
       <xsl:when test="$pageNumber=2">                        <h1>My Blog</h1>
       <h3>All Entries</h3>                    </div>
            <ul>                <!-- a little menu to navigate -->
              <xsl:for-each select="/ospiPresentation/blogEntry/artifact">             <div id="menu">
                          <xsl:sort  select="./metaData/repositoryNode/created" order="descending"/>   <ul>
                                    <li>
                                        <xsl:call-template name="menuLink">
     <li>                                       <xsl:with-param name="pageNumber"/>
            <a>                                <xsl:with-param name="text">Last 5</xsl:with-param>
                  <xsl:attribute name="href">                     </xsl:call-template>
                                   <xsl:text disable-output-escaping="yes">viewPresentation.osp?id=</xsl:text></li>
                                    <li>
                    <xsl:value-of select="$id"/>                    <xsl:call-template name="menuLink">
                                            <xsl:text disable-output-escapingwith-param name="yes">&amp;pageNumber=3&amp;created=<pageNumber">1</xsl:text>with-param>
                                            <xsl:with-param name="text">About Me</xsl:with-param>
         <xsl:value-of select="./metaData/repositoryNode/created"/>                               </xsl:call-template>
                       </xsl:attribute>             </li>
                                    <li>
  <xsl:value-of select="./metaData/displayName"/> -                                    <xsl:call-template name="menuLink">
                 <xsl:value-of select="./metaData/repositoryNode/created"/>                          <xsl:with-param name="pageNumber">2</xsl:with-param>
                     </a>                       <xsl:with-param name="text">Entry Index</xsl:with-param>
                   </li>                     </xsl:call-template>
                                    </li>
                   </xsl:for-each>                 <li>
                    </ul>                    <xsl:call-template name="menuLink">
       </xsl:when>                                     <xsl:whenwith-param testname="$pageNumber=3">pageNumber">4</xsl:with-param>
                                            <xsl:forwith-eachparam selectname="/ospiPresentation/blogEntry/artifact[metaData/repositoryNode/created=$created]">
text">RSS Feed</xsl:with-param>
                                   <div style="border: solid 1px black; padding: 1em; margin: 1em 1em 2em 2em"></xsl:call-template>
                                    </li>
         <h3><xsl:value-of select="./metaData/displayName"/></h3>                       </ul>
                 <h4><xsl:value-of select="./metaData/repositoryNode/created"/></h4>             </div>
                           <xsl:value-of select="./structuredData/blogEntry/entryBody" disable-output-escaping="yes"/ <div id="contentWrapper">
                                <div id="entryNav">
  </div>                                  </xsl:for-each><h3>Blog Posts</h3>
                            </xsl:when>        <ul>
                    <xsl:otherwise> 
                                <xsl:for-each select="/ospiPresentation/blogEntry/artifact[position() &lt; 5]">
                                    <xsl:sort  select="./metaData/repositoryNode/created" order="descending"/>        <xsl:sort data-type="number"
                           <div style="border: solid 1px black; padding: 1em; margin: 1em 1em 2em 2em">          select="Date:getTime(SimpleDateFormat:parse(SimpleDateFormat:new('EEE MMM dd kk:mm:ss zzz yyyy'), ./metaData/repositoryNode/created))"
                                            <h3><xsl:value-of select="./metaData/displayName"/></h3>    order="descending"/>
                                          <h4><xsl:value-of select="./metaData/repositoryNode/created"/></h4>
 <li>
                                       <xsl:value-of select="./structuredData/blogEntry/entryBody" disable-output-escaping="yes"/>       <a>
                             </div>                       <xsl:attribute name="href">
        </xsl:for-each>                             </xsl:otherwise>                         <xsl:text disable-output-escaping="yes">viewPresentation.osp?sakai.tool.placement.id=</xsl:choose>text>
                    </div>             </body>         </html>              </xsl:template>
<xsl:value-of select="$sakai.tool.placement.id"/>
        <!-- a named template to display links correctly -->                                      <xsl:template name="menuLink">         <xsl:param nametext disable-output-escaping="pageNumber"/>yes">&amp;id=</xsl:text>
         <xsl:param name="text"/>         <span style="padding: 0 2em;">                 <a>                 <xsl:attributevalue-of nameselect="href$id"/>
                    <xsl:text disable-output-escaping="yes">viewPresentation.osp?id=</xsl:text>                       <xsl:value-of select="$id"/>
                    <xsl:text disable-output-escaping="yes">&amp;pageNumber=3&amp;created=</xsl:text>
                    <xsl:value-of select="$pageNumber"/>                     </xsl:attribute>               <xsl:value-of select="./metaData/repositoryNode/created"/>
                <xsl:value-of select="$text"/>             </a>         </span>             </xsl:template>
</xsl:stylesheet>attribute>
                                                    <xsl:value-of select="./metaData/displayName"/>
                                                </a>
                                            </li>
                                        </xsl:for-each>
                                    </ul>
                                </div>
                                <!-- a switch to select content for this page based on the value of pageNumber -->
                                <div id="content">
                                    <xsl:choose>
                                        <xsl:when test="$pageNumber=1">
                                            <!-- about me --> About me Page </xsl:when>
                                        <xsl:when test="$pageNumber=2">
                                            <!-- display an index of all blog entries -->
                                            <h3>All Entries</h3>
                                            <ul id="datedEntryList">
                                                <xsl:for-each select="/ospiPresentation/blogEntry/artifact">
                                                    <xsl:sort data-type="number"
                                                        select="Date:getTime(SimpleDateFormat:parse(SimpleDateFormat:new('EEE MMM dd kk:mm:ss zzz yyyy'), ./metaData/repositoryNode/created))"
                                                        order="descending"/>
                                                    <li>
                                                        <a>
                                                            <xsl:attribute name="href">
                                                                <xsl:text disable-output-escaping="yes">viewPresentation.osp?sakai.tool.placement.id=</xsl:text>
                                                                <xsl:value-of select="$sakai.tool.placement.id"/>
                                                                <xsl:text disable-output-escaping="yes">&amp;id=</xsl:text>
                                                                <xsl:value-of select="$id"/>
                                                                <xsl:text disable-output-escaping="yes">&amp;pageNumber=3&amp;created=</xsl:text>
                                                                <xsl:value-of select="./metaData/repositoryNode/created"/>
                                                            </xsl:attribute>
                                                            <xsl:value-of select="./metaData/displayName"/> - <xsl:value-of select="./metaData/repositoryNode/created"/>
                                                        </a>
                                                    </li>
                                                </xsl:for-each>
                                            </ul>
                                        </xsl:when>
                                        <xsl:when test="$pageNumber=3">
                                            <!-- individual entry displayed -->
                                            <xsl:for-each select="/ospiPresentation/blogEntry/artifact[metaData/repositoryNode/created=$created]">
                                                <xsl:call-template name="entry">
                                                    <xsl:with-param name="title">
                                                        <xsl:value-of select="./metaData/displayName"/>
                                                    </xsl:with-param>
                                                    <xsl:with-param name="date">
                                                        <xsl:value-of select="./metaData/repositoryNode/created"/>
                                                    </xsl:with-param>
                                                    <xsl:with-param name="body">
                                                        <xsl:value-of select="./structuredData/blogEntry/entryBody"/>
                                                    </xsl:with-param>
                                                </xsl:call-template>
                                            </xsl:for-each>
                                        </xsl:when>
                                        <xsl:otherwise>
                                            <!-- last 5 blog entries -->                                            
                                            <xsl:for-each select="/ospiPresentation/blogEntry/artifact[position() &gt; 0]">
                                                <!-- sort by year, moth, day created dates formatted like: Tue Jan 09 09:59:52 EST 2007 -->
                                                <xsl:sort data-type="number"
                                                    select="Date:getTime(SimpleDateFormat:parse(SimpleDateFormat:new('EEE MMM dd kk:mm:ss zzz yyyy'), ./metaData/repositoryNode/created))"
                                                    order="descending"/>
                                                <xsl:call-template name="entry">
                                                    <xsl:with-param name="title">
                                                        <xsl:value-of select="./metaData/displayName"/>
                                                    </xsl:with-param>
                                                    <xsl:with-param name="date">
                                                        <xsl:value-of select="./metaData/repositoryNode/created"/>
                                                    </xsl:with-param>
                                                    <xsl:with-param name="body">
                                                        <xsl:value-of select="./structuredData/blogEntry/entryBody"/>
                                                    </xsl:with-param>
                                                </xsl:call-template>
                                            </xsl:for-each>
                                        </xsl:otherwise>
                                    </xsl:choose>
                                </div>
                                <!-- content -->
                                <div style="clear: both"/>
                            </div>
                            <!-- contentWrapper -->
                        </div>
                        <!-- end wrapper div -->
                    </body>
                </html>

            </xsl:otherwise>
        </xsl:choose>

    </xsl:template>

    <xsl:template name="entry">
        <xsl:param name="title"/>
        <xsl:param name="date"/>
        <xsl:param name="body"/>
        <div class="entry">
            <h3>
                <xsl:value-of select="$title"/>
            </h3>
            <div class="date">
                <xsl:value-of select="$date"/>
            </div>
            <div class="entryBody">
                <xsl:value-of select="$body" disable-output-escaping="yes"/>
            </div>
        </div>
    </xsl:template>

    <!-- a named template to menu display links correctly -->
    <xsl:template name="menuLink">
        <xsl:param name="pageNumber"/>
        <xsl:param name="text"/>
        <a>
            <xsl:attribute name="href">
                <xsl:text disable-output-escaping="yes">viewPresentation.osp?sakai.tool.placement.id=</xsl:text>
                <xsl:value-of select="$sakai.tool.placement.id"/>
                <xsl:text disable-output-escaping="yes">&amp;id=</xsl:text>
                <xsl:value-of select="$id"/>
                <xsl:text disable-output-escaping="yes">&amp;pageNumber=</xsl:text>
                <xsl:value-of select="$pageNumber"/>
            </xsl:attribute>
            <xsl:value-of select="$text"/>
        </a>
    </xsl:template>

    <!-- from O'Reilly XSLT Cookbook, 2nd Edition -->
    <!-- Recipe 4.4. Calculating Julian and Absolute Day Numbers from a Specified Date -->
    <xsl:template name="calculate-julian-day">
        <xsl:param name="year"/>
        <xsl:param name="month"/>
        <xsl:param name="day"/>

        <xsl:variable name="a" select="floor((14 - $month) div 12)"/>
        <xsl:variable name="y" select="$year + 4800 - $a"/>
        <xsl:variable name="m" select="$month + 12 * $a - 3"/>

        <xsl:value-of select="$day + floor((153 * $m + 2) div 5) + $y * 365 + 
            floor($y div 4) - floor($y div 100) + floor($y div 400) - 
            32045"/>

    </xsl:template>

</xsl:stylesheet>