<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
- <COPYRIGHT>
- Copyright 2003 Gerd Stolpmann
-
- <GPL>
- This file is part of WTimer.
-
- WTimer is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- WTimer is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with WDialog; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- </>
-->
<!-- $Id: timetravel.ui 6 2004-01-19 17:12:34Z gerd $
- ======================================================================
-
-->
<!-- This file defines the dialog "timetravel". -->
<ui:dialog name="timetravel" start-page="calendary">
<ui:variable name="session" type="dialog"/>
<!-- The session pseudo dialog, see session.ui -->
<ui:variable name="year">
<!--&timetravel-year;--> <!-- testdata -->
</ui:variable>
<ui:variable name="entered_year"/>
<ui:enumeration name="message">
<ui:enum internal="error-bad-year"
external="Please enter a number between 1902 and 2037!"/>
</ui:enumeration>
<ui:variable name="message" type="message">
<!--&timetravel-message;--> <!-- testdata -->
</ui:variable>
<ui:page name="calendary">
<t:basic-grid>
<p:nav-col>
<t:timetravel-nav/>
</p:nav-col>
<p:headline>
Time Travel
<t:head-info-box/>
</p:headline>
<p:main-col>
<div><a href="#help">Help</a><br/> </div>
<ui:enumerate variable="message" template="message"/>
<div class="cal-head">
Year: <ui:text variable="entered_year" maxlength="4" size="4"
cgi="keep"
onchange="check_year_string(this)"/>
<ui:if value1="$[session.js-enabled]" value2="yes">
<input type="button" value="+" class="cal-head-pm"
onclick="inc_year(document.uiform.var_entered_year)"/>
<input type="button" value="-" class="cal-head-pm"
onclick="dec_year(document.uiform.var_entered_year)"/>
</ui:if>
<ui:button label="Update" name="update"/>
</div>
<div class="cal-body">
<t:calendary-year year="$[year]"/>
</div>
<div class="help">
<a name="help"/>
<div>This dialog allows you to open a certain month of the current
sheet. Enter the year, press "Update", and click on the
calendar page of the month (or the button below). Use the
"+" and "-" buttons (Javascript needed) to go to the next
or the previous years, respectively.</div>
<div>Note that clicking on the calendar page does not work
for (current) Internet Explorers due to incompatibilities with web
standards.</div>
</div>
</p:main-col>
</t:basic-grid>
</ui:page>
<!-- ERROR HANDLING -->
<!-- See also ocaml class error_behaviour that uses the following
definitions
-->
<ui:variable name="runtime-error"/>
<ui:page name="runtime-error">
<t:basic-grid>
<p:nav-col>
<!-- empty nav-col: this is a modal dialog -->
</p:nav-col>
<p:headline>
Time Travel
<t:head-info-box/>
</p:headline>
<p:main-col>
<t:error errid="$[runtime-error]"/>
<ui:button name="cont-error" label="Continue"/>
</p:main-col>
</t:basic-grid>
</ui:page>
</ui:dialog>
<ui:template name="calendary-year" from-caller="year">
<!-- Displays the whole year by a 4x3 table of months -->
<table border="0" class="cal" cellpadding="10">
<tr>
<td class="cal"><t:calendary-month date="$year-01-01"/></td>
<td class="cal"><t:calendary-month date="$year-02-01"/></td>
<td class="cal"><t:calendary-month date="$year-03-01"/></td>
</tr>
<tr>
<td class="cal"><t:calendary-month date="$year-04-01"/></td>
<td class="cal"><t:calendary-month date="$year-05-01"/></td>
<td class="cal"><t:calendary-month date="$year-06-01"/></td>
</tr>
<tr>
<td class="cal"><t:calendary-month date="$year-07-01"/></td>
<td class="cal"><t:calendary-month date="$year-08-01"/></td>
<td class="cal"><t:calendary-month date="$year-09-01"/></td>
</tr>
<tr>
<td class="cal"><t:calendary-month date="$year-10-01"/></td>
<td class="cal"><t:calendary-month date="$year-11-01"/></td>
<td class="cal"><t:calendary-month date="$year-12-01"/></td>
</tr>
</table>
</ui:template>
<ui:template name="calendary-month" from-caller="date">
<!-- Displays a single month.
- date: Must be the first day of the month to display
-->
<ui:context>
<!-- Put $date into context so subsequent templates can access it -->
<ui:param name="date">$date</ui:param>
<!-- The whole month is a button: -->
<ui:richbutton
name="calendary-month"
index="${date/year}-${date/month}-01"
>
<!-- Generate the table whose columns are weekdays. The table has
- a fixed layout of 7 columns and 6 rows. This results in 42
- positions which are numbered from 0 to 41. The last five positions
- can never be filled, so these get the ordinal number 37.
- The template calendary-day either puts the day number into
- the table cells, or leaves them empty.
-->
<table border="0" class="cal-month">
<tr>
<td colspan="7" align="center">${date/month-en} ${date/year}</td>
</tr>
<tr>
<th class="cal-month">Sun</th>
<th class="cal-month">Mon</th>
<th class="cal-month">Tue</th>
<th class="cal-month">Wed</th>
<th class="cal-month">Thu</th>
<th class="cal-month">Fri</th>
<th class="cal-month">Sat</th>
</tr>
<tr>
<td class="cal-month"><t:calendary-day arg="$date 0"/></td>
<td class="cal-month"><t:calendary-day arg="$date 1"/></td>
<td class="cal-month"><t:calendary-day arg="$date 2"/></td>
<td class="cal-month"><t:calendary-day arg="$date 3"/></td>
<td class="cal-month"><t:calendary-day arg="$date 4"/></td>
<td class="cal-month"><t:calendary-day arg="$date 5"/></td>
<td class="cal-month"><t:calendary-day arg="$date 6"/></td>
</tr>
<tr>
<td class="cal-month"><t:calendary-day arg="$date 7"/></td>
<td class="cal-month"><t:calendary-day arg="$date 8"/></td>
<td class="cal-month"><t:calendary-day arg="$date 9"/></td>
<td class="cal-month"><t:calendary-day arg="$date 10"/></td>
<td class="cal-month"><t:calendary-day arg="$date 11"/></td>
<td class="cal-month"><t:calendary-day arg="$date 12"/></td>
<td class="cal-month"><t:calendary-day arg="$date 13"/></td>
</tr>
<tr>
<td class="cal-month"><t:calendary-day arg="$date 14"/></td>
<td class="cal-month"><t:calendary-day arg="$date 15"/></td>
<td class="cal-month"><t:calendary-day arg="$date 16"/></td>
<td class="cal-month"><t:calendary-day arg="$date 17"/></td>
<td class="cal-month"><t:calendary-day arg="$date 18"/></td>
<td class="cal-month"><t:calendary-day arg="$date 19"/></td>
<td class="cal-month"><t:calendary-day arg="$date 20"/></td>
</tr>
<tr>
<td class="cal-month"><t:calendary-day arg="$date 21"/></td>
<td class="cal-month"><t:calendary-day arg="$date 22"/></td>
<td class="cal-month"><t:calendary-day arg="$date 23"/></td>
<td class="cal-month"><t:calendary-day arg="$date 24"/></td>
<td class="cal-month"><t:calendary-day arg="$date 25"/></td>
<td class="cal-month"><t:calendary-day arg="$date 26"/></td>
<td class="cal-month"><t:calendary-day arg="$date 27"/></td>
</tr>
<tr>
<td class="cal-month"><t:calendary-day arg="$date 28"/></td>
<td class="cal-month"><t:calendary-day arg="$date 29"/></td>
<td class="cal-month"><t:calendary-day arg="$date 30"/></td>
<td class="cal-month"><t:calendary-day arg="$date 31"/></td>
<td class="cal-month"><t:calendary-day arg="$date 32"/></td>
<td class="cal-month"><t:calendary-day arg="$date 33"/></td>
<td class="cal-month"><t:calendary-day arg="$date 34"/></td>
</tr>
<tr>
<td class="cal-month"><t:calendary-day arg="$date 35"/></td>
<td class="cal-month"><t:calendary-day arg="$date 36"/></td>
<td class="cal-month"><t:calendary-day arg="$date 37"/></td>
<td class="cal-month"><t:calendary-day arg="$date 37"/></td>
<td class="cal-month"><t:calendary-day arg="$date 37"/></td>
<td class="cal-month"><t:calendary-day arg="$date 37"/></td>
<td class="cal-month"><t:calendary-day arg="$date 37"/></td>
</tr>
</table>
</ui:richbutton>
<!-- Legacy browsers cannot interpret the BUTTON element. So add
- a normal button for them, too.
-->
<ui:cond>
<ui:ifvar variable="session.grid" value="dynamic" op="contains"/>
<ui:true>
<center>
<ui:button name="calendary-month"
index="${date/year}-${date/month}-01"
label="Go to ${date/month-en}"/>
</center>
<br/>
</ui:true>
</ui:cond>
</ui:context>
</ui:template>
<ui:template name="calendary-day" from-context="date" from-caller="arg">
<!-- date: the month represented by the first day of the month
- arg: A string "YYYY-MM-01 N" where YYYY is the year, MM the month,
- and N the ordinal number of the cell
-
- cal-day is an output encoding that maps arg type strings to
- the day of the month, or the empty string. See main.ml for its
- definition.
-->
<ui:cond>
<ui:if value1="${arg/cal-day}" value2="" op="ne">
${arg/cal-day}
</ui:if>
<ui:true> </ui:true>
</ui:cond>
</ui:template>
<!-- ********************************************************************** -->
<!-- timetravel-nav: The navigation bar for timetravelling -->
<ui:template name="timetravel-nav">
<t:file-menu current="file-time-travel"/>
</ui:template>
<!-- ******************* For Emacs: ********************* -->
<!--
Local Variables:
mode: xml
sgml-parent-document: ("main.ui" "ui:application" "ui:dialog")
End:
-->