Copied to clipboard

Flag this post as spam?

This post will be reported to the moderators as potential spam to be looked at


  • Bjarne Fyrstenborg 1182 posts 3441 karma points MVP 4x c-trib
    Dec 01, 2011 @ 20:40
    Bjarne Fyrstenborg
    0

    Add class for current date

    Hi..

    I have an event calendar where I try to add a class to the td i the table for the current date, where I have tried with:

    <xsl:variable name="currentDate" select="concat($day,'. ',$MonthName,' ',$Year)" />
    <
    xsl:if test="$currentDate">
    <xsl:attribute name="class">
                  <xsl:text>today</xsl:text>
    </xsl:attribute>
    </xsl:if>

    and

    <xsl:if test="umbraco.library:CurrentDate()">
    <xsl:attribute name="class">
                  <xsl:text>today</xsl:text>
    </xsl:attribute>
    </xsl:if>

    but it adds the today class for all dates except the ones, where an empty class is added..

    What do I need to add a class for todays date/current date..?

    Bjarne

     

     

  • Jan Skovgaard 11258 posts 23500 karma points MVP 7x admin c-trib
    Dec 01, 2011 @ 21:20
    Jan Skovgaard
    0

    Hi Bjarne

    Could you provide a bit more of the code? I would like to see more of the context if that's ok :)

    /Jan

  • Bjarne Fyrstenborg 1182 posts 3441 karma points MVP 4x c-trib
    Dec 01, 2011 @ 21:37
    Bjarne Fyrstenborg
    0

    Okay, here is the full code :) It's basically the code to the event calendar in Business Website Starter Pack with some small modifications..

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE xsl:stylesheet [ <!ENTITY nbsp "&#x00A0;"> ]>
    <xsl:stylesheet 
      version="1.0" 
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
      xmlns:exslt="http://exslt.org/common"
      xmlns:date="http://exslt.org/dates-and-times"
      xmlns:msxml="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" 
      exclude-result-prefixes="date exslt msxml umbraco.library Exslt.ExsltCommon Exslt.ExsltDatesAndTimes Exslt.ExsltMath Exslt.ExsltRegularExpressions Exslt.ExsltStrings Exslt.ExsltSets ">


    <xsl:output method="xml" omit-xml-declaration="yes"/>

    <xsl:param name="currentPage"/>

    <xsl:template match="/">
      
      <div class="event_main">
        <xsl:value-of select="$currentPage/pageContent" disable-output-escaping="yes" />
        <h2>
          <xsl:choose>
            <xsl:when test="$currentPage/pageHeading != ''">
              <xsl:value-of select="$currentPage/pageHeading"/>
            </xsl:when>
            <xsl:otherwise>
              <xsl:value-of select="$currentPage/@nodeName"/>
            </xsl:otherwise>
          </xsl:choose>
          <xsl:value-of select="$MonthName" /><xsl:text</xsl:text><xsl:value-of select="$Year" /></h2>
        <div class="event_nav">
          <p><xsl:text>Der vises i øjeblikket: </xsl:text><xsl:value-of select="$MonthName" /><xsl:text</xsl:text><xsl:value-of select="$Year" /></p>
          <xsl:call-template name="PreviousMonthLink" />  
          <xsl:call-template name="NextMonthLink" />
        </div>
        
      </div>
      
      <div class="event_sidebar">
        <xsl:call-template name="Calendar" />
        <class="ical_export">
          <a>
            <xsl:attribute name="href">
              <xsl:value-of select="umbraco.library:NiceUrl($currentPage/@id)" /><xsl:text>?altTemplate=iCalExportAll</xsl:text>
          </xsl:attribute>
          Eksportér alle events (iCal)
          </a>
        </p>  
      </div>
      
      <div class="events_list">
      <xsl:choose>
        <xsl:when test="count($currentPage//* [@isDoc and name()='Event' and Exslt.ExsltStrings:lowercase($currentMonthYear) = Exslt.ExsltStrings:lowercase(umbraco.library:FormatDateTime(./eventStartDateTime, 'MMMM,yyyy'))]) &gt; 0">
            <ul class="events_list">
              <xsl:for-each select="$currentPage//* [@isDoc and name()='Event' and Exslt.ExsltStrings:lowercase($currentMonthYear) = Exslt.ExsltStrings:lowercase(umbraco.library:FormatDateTime(./eventStartDateTime, 'MMMM,yyyy'))]">
                <xsl:sort select="current()/eventStartDateTime" order="ascending" />
                <li>
                  <div class="news_date">
                     <span class="month"><xsl:value-of select="umbraco.library:FormatDateTime(current()/eventStartDateTime, 'MMM')"/></span>
                     <span class="day"><xsl:value-of select="umbraco.library:Replace(umbraco.library:FormatDateTime(current()/eventStartDateTime, ' d'), ' ','')"/></span>
                     <span class="year"><xsl:value-of select="umbraco.library:FormatDateTime(current()/eventStartDateTime, 'yyyy')"/></span>
                  </div>
                  <div class="event_desc">
                  <h3><href="{umbraco.library:NiceUrl(current()/@id)}"><xsl:value-of select="current()/@nodeName" /></a></h3>
                  <p>
                    <xsl:choose>
                    <xsl:when test="current()/eventAllDay != '0'">
                      <xsl:value-of select="umbraco.library:FormatDateTime(current()/eventStartDateTime, 'dddd, d. MMMM yyyy')"/>
                    </xsl:when>
                    <xsl:otherwise>
                      <xsl:value-of select="umbraco.library:FormatDateTime(current()/eventStartDateTime, 'dddd, d. MMMM yyyy H:mm')"/>
                    </xsl:otherwise>
                    </xsl:choose>
                  </p>
                  <!--<p><xsl:value-of select="current()/data [@alias='eventLocationAddress']"/></p>-->
                  </div>
                </li>
                
              </xsl:for-each>
            </ul>
          </xsl:when>
          <xsl:otherwise>
            <class="no_events">Der er ingen events i denne måned.</p>
          </xsl:otherwise>
        </xsl:choose>
      </div>
      
    </xsl:template>

    <xsl:variable name="DisplayDate" select="Exslt.ExsltDatesAndTimes:date()"/>



    <xsl:variable name="Year">
    <xsl:choose>
      <xsl:when test="umbraco.library:Request('year') &lt;= 0 or string(umbraco.library:Request('year')) = ''">
        <xsl:value-of select="Exslt.ExsltDatesAndTimes:year($DisplayDate)"/>
      </xsl:when>
      <xsl:otherwise>
        <xsl:value-of select="umbraco.library:Request('year')"/>
      </xsl:otherwise>
    </xsl:choose>
    </xsl:variable>

    <xsl:variable name="Month">
    <xsl:choose>
      <xsl:when test="umbraco.library:Request('month') &lt;= 0 or string(umbraco.library:Request('month')) = ''">
        <xsl:value-of select="Exslt.ExsltDatesAndTimes:monthinyear($DisplayDate)"/>
      </xsl:when>
      <xsl:otherwise>
        <xsl:value-of select="umbraco.library:Request('month')"/>
      </xsl:otherwise>
    </xsl:choose>
    </xsl:variable>

    <xsl:variable name="currentMonthYear" select="concat($MonthName,',',$Year)" />

    <xsl:variable name="MonthName">
      <xsl:choose>
        <xsl:when test="$Month = 1">januar</xsl:when>
        <xsl:when test="$Month = 2">februar</xsl:when>
        <xsl:when test="$Month = 3">marts</xsl:when>
        <xsl:when test="$Month = 4">april</xsl:when>
        <xsl:when test="$Month = 5">maj</xsl:when>
        <xsl:when test="$Month = 6">juni</xsl:when>
        <xsl:when test="$Month = 7">juli</xsl:when>
        <xsl:when test="$Month = 8">august</xsl:when>
        <xsl:when test="$Month = 9">september</xsl:when>
        <xsl:when test="$Month = 10">oktober</xsl:when>
        <xsl:when test="$Month = 11">november</xsl:when>
        <xsl:when test="$Month = 12">december</xsl:when>
        <xsl:otherwise>ugyldig måned</xsl:otherwise>
      </xsl:choose>
    </xsl:variable>

    <xsl:variable name="NumberOfDaysInMonth">
      <xsl:call-template name="DaysInMonth">
        <xsl:with-param name="month" select="$Month" />
        <xsl:with-param name="year" select="$Year" />
      </xsl:call-template>
    </xsl:variable>
    <xsl:variable name="FirstDayInWeekForMonth">
      <xsl:choose>
        <xsl:when test="$Month &lt; 10">
          <xsl:value-of select="Exslt.ExsltDatesAndTimes:dayinweek(Exslt.ExsltDatesAndTimes:date(concat($Year,'-0', $Month, '-01')))" />
        </xsl:when>
        <xsl:otherwise>
          <xsl:value-of select="Exslt.ExsltDatesAndTimes:dayinweek(Exslt.ExsltDatesAndTimes:date(concat($Year,'-', $Month, '-01')))" />
        </xsl:otherwise>
      </xsl:choose>
    </xsl:variable>
    <xsl:variable name="WeeksInMonth"><xsl:value-of select="($NumberOfDaysInMonth + $FirstDayInWeekForMonth - 1) div 7" /></xsl:variable>

    <xsl:template name="DaysInMonth">
      <xsl:param name="month"><xsl:value-of select="$Month" /></xsl:param>
      <xsl:param name="year"><xsl:value-of select="$Year" /></xsl:param>
      <xsl:choose>
        <xsl:when test="$month = 1 or $month = 3 or $month = 5 or $month = 7 or $month = 8 or $month = 10 or $month = 12">31</xsl:when>
        <xsl:when test="$month=2">
          <xsl:choose>
            <xsl:when test="$year mod 4 = 0">29</xsl:when>
            <xsl:otherwise>28</xsl:otherwise>
          </xsl:choose>
        </xsl:when>
        <xsl:otherwise>30</xsl:otherwise>
      </xsl:choose>
    </xsl:template>

    <xsl:template name="NextMonthLink">
      <xsl:param name="currentMonth"><xsl:value-of select="$Month" /></xsl:param>
      <xsl:param name="currentYear"><xsl:value-of select="$Year" /></xsl:param>
      <xsl:choose>
        <xsl:when test="$currentMonth = 12">
          <class="next_month" title="Næste måned">
            <xsl:attribute name="href">
              <xsl:value-of select="umbraco.library:NiceUrl($currentPage/@id)"/>
              <xsl:text>?year=</xsl:text>
              <xsl:value-of select="$currentYear + 1"/>
              <xsl:text>&amp;month=1</xsl:text>
            </xsl:attribute>
            <span><xsl:text>Næste måned</xsl:text></span>
          </a>
        </xsl:when>
        <xsl:otherwise>
          <class="next_month" title="Næste måned">
            <xsl:attribute name="href">
              <xsl:value-of select="umbraco.library:NiceUrl($currentPage/@id)"/>
              <xsl:text>?year=</xsl:text>
              <xsl:value-of select="$currentYear"/>
              <xsl:text>&amp;month=</xsl:text>
              <xsl:value-of select="$currentMonth + 1"/>
            </xsl:attribute>
            <span><xsl:text>Næste måned &#187;</xsl:text></span>
          </a>
        </xsl:otherwise>
      </xsl:choose>
    </xsl:template>

    <xsl:template name="PreviousMonthLink">
      <xsl:param name="currentMonth"><xsl:value-of select="$Month" /></xsl:param>
      <xsl:param name="currentYear"><xsl:value-of select="$Year" /></xsl:param>
      <xsl:choose>
        <xsl:when test="$currentMonth = 1">
          <class="previous_month" title="Forrige måned">
            <xsl:attribute name="href">
              <xsl:value-of select="umbraco.library:NiceUrl($currentPage/@id)"/>
              <xsl:text>?year=</xsl:text>
              <xsl:value-of select="$currentYear - 1"/>
              <xsl:text>&amp;month=12</xsl:text>
            </xsl:attribute>
            <span><xsl:text>Forrige måned</xsl:text></span>
          </a>
        </xsl:when>
        <xsl:otherwise>
          <class="previous_month" title="Forrige måned">
            <xsl:attribute name="href">
              <xsl:value-of select="umbraco.library:NiceUrl($currentPage/@id)"/>
              <xsl:text>?year=</xsl:text>
              <xsl:value-of select="$currentYear"/><xsl:text>&amp;month=</xsl:text>
              <xsl:value-of select="$currentMonth - 1"/>
            </xsl:attribute>
            <span><xsl:text>&#171; Forrige måned</xsl:text></span>
          </a>
        </xsl:otherwise>
      </xsl:choose>
    </xsl:template>

    <xsl:template name="Calendar">
        
      
      
      <h5 class="event_cal_current">
        <xsl:value-of select="$MonthName" />
        <xsl:text</xsl:text>
        <xsl:value-of select="$Year" />
        <xsl:call-template name="PreviousMonthLink" />  
          <xsl:call-template name="NextMonthLink" />
      </h5>
          
      <table class="sm_calendar">
        <tr>
          <th><abbr title="Søndag">Søn</abbr></th>
          <th><abbr title="Mandag">Man</abbr></th>
          <th><abbr title="Tirsdag">Tir</abbr></th>
          <th><abbr title="Onsdag">Ons</abbr></th>
          <th><abbr title="Torsdag">Tor</abbr></th>
          <th><abbr title="Fredag">Fre</abbr></th>
          <th><abbr title="Lørdag">Lør</abbr></th>
        </tr>
        <xsl:call-template name="CalendarWeek"/>
      </table>
    </xsl:template>

    <xsl:template name="CalendarWeek">
      <xsl:param name="week">1</xsl:param>
      <xsl:param name="day">1</xsl:param>
      <tr>
        <xsl:call-template name="CalendarDay">
          <xsl:with-param name="day" select="$day" />
        </xsl:call-template>
      </tr>
      <xsl:if test="$WeeksInMonth &gt; $week">
        <xsl:call-template name="CalendarWeek">
          <xsl:with-param name="week" select="$week + 1" />
          <xsl:with-param name="day" select="$week * 7 - ($FirstDayInWeekForMonth - 2)" />
        </xsl:call-template>
      </xsl:if>
    </xsl:template>

    <xsl:template name="CalendarDay">
      <xsl:param name="count">1</xsl:param>
      <xsl:param name="day" />
      <xsl:choose>
        <xsl:when test="($day = 1 and $count != $FirstDayInWeekForMonth) or $day &gt; $NumberOfDaysInMonth">
          <td class="empty"><xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text></td>
          <xsl:if test="$count &lt; 7">
            <xsl:call-template name="CalendarDay">
              <xsl:with-param name="count" select="$count + 1" />
              <xsl:with-param name="day" select="$day" />
            </xsl:call-template>
          </xsl:if>
        </xsl:when>
        <xsl:otherwise>
          <td>
              <xsl:variable name="currentDate" select="concat($day,'. ',$MonthName,' ',$Year)" />
              
              <xsl:variable name="eventsToday" select="count($currentPage//* [@isDoc and name()='Event' and Exslt.ExsltStrings:lowercase($currentDate) = Exslt.ExsltStrings:lowercase(umbraco.library:FormatDateTime(./eventStartDateTime, 'd. MMMM yyyy'))])" />
              
              <xsl:if test="$eventsToday &gt; 0">
                <xsl:attribute name="class">
                  <xsl:text>eventDay</xsl:text>
                </xsl:attribute>
                <div class="events_today">
                 <div class="tooltip">
                  <div class="top"><xsl:text</xsl:text></div>
                  <h6><xsl:value-of select="$currentDate" /></h6>
                  Events i dag: <xsl:value-of select="$eventsToday" />
                  <ul class="events_today_list">
              <xsl:for-each select="$currentPage//* [@isDoc and name()='Event' and Exslt.ExsltStrings:lowercase($currentDate) = Exslt.ExsltStrings:lowercase(umbraco.library:FormatDateTime(./eventStartDateTime, 'd. MMMM yyyy'))]">
                <li>
                  <href="{umbraco.library:NiceUrl(current()/@id)}"><xsl:value-of select="current()/@nodeName" /></a>
                </li>  
              </xsl:for-each>
              </ul>
                <div class="bottom"><xsl:text</xsl:text></div>
               </div>
              </div>
            </xsl:if>
            
            <xsl:if test="$currentDate">
                <xsl:attribute name="class">
                  <xsl:text>today</xsl:text>
                </xsl:attribute>
              </xsl:if>
            
              <xsl:value-of select="$day" />
          </td>
          <xsl:if test="$count &lt; 7">
            <xsl:call-template name="CalendarDay">
              <xsl:with-param name="count" select="$count + 1" />
              <xsl:with-param name="day" select="$day + 1" />
            </xsl:call-template>
          </xsl:if>
        </xsl:otherwise>
      </xsl:choose>
    </xsl:template>

    </xsl:stylesheet>

    Bjarne

  • Jan Skovgaard 11258 posts 23500 karma points MVP 7x admin c-trib
    Dec 01, 2011 @ 21:45
    Jan Skovgaard
    0

    Hi Bjarne

    Ok...what happens if you do this...

    <xsl:if test="umbraco.library:GetCurrentDate() = $currentDate">

    <!-- your attribute stuff here-->
    </xsl:if>

    /Jan

  • Bjarne Fyrstenborg 1182 posts 3441 karma points MVP 4x c-trib
    Dec 01, 2011 @ 21:49
    Bjarne Fyrstenborg
    0

    Then I get this error Extension object 'urn:umbraco.library' does not contain a matching 'GetCurrentDate' method that has 0 parameter(s). 

    Bjarne

  • Jan Skovgaard 11258 posts 23500 karma points MVP 7x admin c-trib
    Dec 01, 2011 @ 22:11
    Jan Skovgaard
    0

    Oops...my bad, wrote it wrong! There is no GetCurrentDate method :)

    Just use the method you're writing about in the initial post - umbraco.library:CurrentDate()

    /Jan

  • Bjarne Fyrstenborg 1182 posts 3441 karma points MVP 4x c-trib
    Dec 01, 2011 @ 22:14
    Bjarne Fyrstenborg
    0

    Okay.. I had tried that too, but it doesn't add any class..

    You can see the calendar here: http://sub.ak-security.dk/da/aktuelt/events.aspx

  • Jan Skovgaard 11258 posts 23500 karma points MVP 7x admin c-trib
    Dec 01, 2011 @ 22:55
    Jan Skovgaard
    2

    Hmm, what does the output from you $currentDate variable look like? I suspect that the content of the variable and the output from the CurrentDate method is not the same.

    /Jan

  • Bjarne Fyrstenborg 1182 posts 3441 karma points MVP 4x c-trib
    Dec 01, 2011 @ 23:00
    Bjarne Fyrstenborg
    0

    the $currentDate gives me a date on this format:  1. december 2011

    but yes I don't think that it match the standard date format..
    the best is probably to format umbraco.library.CurrentDate() ..

    Bjarne 

  • Bjarne Fyrstenborg 1182 posts 3441 karma points MVP 4x c-trib
    Dec 01, 2011 @ 23:43
    Bjarne Fyrstenborg
    0

    I solved it with this:

    <xsl:if test="umbraco.library:FormatDateTime(umbraco.library:CurrentDate(), 'd. MMMM yyyy') = $currentDate">
    <xsl:attribute name="class">
                  <xsl:text>today</xsl:text>
    </xsl:attribute>
     </xsl:if>

    and now it has a class added to the current date..

    Bjarne

  • jonok 260 posts 476 karma points
    Aug 16, 2013 @ 04:26
    jonok
    0

    Is there a way to get this code to start on a Saturday instead of a Sunday?

  • This forum is in read-only mode while we transition to the new forum.

    You can continue this topic on the new forum by tapping the "Continue discussion" link below.

Please Sign in or register to post replies