Datumsfelder haben nun einen Datepicker

This commit is contained in:
Andreas Österreicher
2007-06-21 09:33:06 +00:00
parent 3bb1ca3864
commit e6450000ec
9 changed files with 706 additions and 21 deletions
+79 -15
View File
@@ -1,5 +1,24 @@
<?php
include('../vilesci/config.inc.php');
/* Copyright (C) 2006 Technikum-Wien
*
* This program 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.
*
* This program 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 this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
*/
header("Content-type: application/vnd.mozilla.xul+xml");
echo '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';
?>
@@ -9,51 +28,96 @@
xmlns:html="http://www.w3.org/1999/xhtml"
>
<!--
Binding fuer das Datumfeld
Zeigt ein DropDown Menue mit einem Kalender zur Datumsauswahl an
und ueberprueft das eingegebene Datum auf Gueltigkeit
-->
<binding id="Datum">
<content>
<xul:textbox maxlength="10" xbl:inherits="disabled, value" size="10" tooltiptext="Format: DD.MM.JJJJ Beispiel: 31.12.2007"/>
<!--<xul:textbox maxlength="10" xbl:inherits="disabled, value" size="10" tooltiptext="Format: DD.MM.JJJJ Beispiel: 31.12.2007"/>-->
<xul:hbox>
<xul:spacer flex="1"/>
<xul:menulist anonid="binding-menulist-field" style="margin: 1px" editable="true" xbl:inherits="disabled, value" label="">
<xul:menupopup>
<xul:datepicker anonid="binding-datepicker-field" currentday="20" currentmonth="5" currentyear="2007"
onselect="parentNode.parentNode.parentNode.parentNode.value=this.selection.currentDay+'.'+(parseInt(this.selection.currentMonth)+1)+'.'+this.selection.currentYear"/>
</xul:menupopup>
</xul:menulist>
<xul:spacer flex="1"/>
</xul:hbox>
</content>
<implementation>
<property name="value" onget="return document.getAnonymousNodes(this)[0].value" >
<property name="value" onget="return document.getAnonymousElementByAttribute(this ,'anonid', 'binding-menulist-field').label" >
<setter>
<![CDATA[
document.getAnonymousNodes(this)[0].value = val;
menulist = document.getAnonymousElementByAttribute(this ,'anonid', 'binding-menulist-field')
picker = document.getAnonymousElementByAttribute(this ,'anonid', 'binding-datepicker-field')
//Wert setzen
menulist.label=val;
if(val!='')
{
//Wenn das Datum stimmt, dann wird der Hintergrund auf Weiss gesetzt und
//das Datum im Datepicker gesetzt
//Wenn das Datum falsch ist, dann wird der Hintergrund auf Rot gesetzt
if(CheckDatum(val))
document.getAnonymousNodes(this)[0].style.backgroundColor="#FFFFFF";
{
parts = val.split('.');
dat = new Date(parts[2],parts[1]-1,parts[0]);
picker.view.setDate(dat);
picker.selection.setDate(dat);
menulist.style.backgroundColor="#FFFFFF";
}
else
document.getAnonymousNodes(this)[0].style.backgroundColor="#F46B6B";
menulist.style.backgroundColor="#F46B6B";
}
else
{
if(!document.getAnonymousNodes(this)[0].disabled)
document.getAnonymousNodes(this)[0].style.backgroundColor="#FFFFFF";
if(!menulist.disabled)
menulist.style.backgroundColor="#FFFFFF";
}
]]>
</setter>
</property>
<property name="iso" onget="return ConvertDateToISO(document.getAnonymousNodes(this)[0].value)" >
<property name="iso" onget="return ConvertDateToISO(document.getAnonymousElementByAttribute(this ,'anonid', 'binding-menulist-field').label)" >
<setter>
<![CDATA[
return false;
]]>
</setter>
</property>
<property name="disabled" onget="return document.getAnonymousNodes(this)[0].disabled" >
<property name="disabled" onget="return document.getAnonymousElementByAttribute(this ,'anonid', 'binding-menulist-field').disabled" >
<setter>
document.getAnonymousNodes(this)[0].disabled = val;
<![CDATA[
document.getAnonymousElementByAttribute(this ,'anonid', 'binding-menulist-field').disabled = val;
]]>
</setter>
</property>
</implementation>
<handlers>
<handler event="input">
<![CDATA[
var datum = document.getAnonymousNodes(this)[0].value;
menulist = document.getAnonymousElementByAttribute(this ,'anonid', 'binding-menulist-field')
picker = document.getAnonymousElementByAttribute(this ,'anonid', 'binding-datepicker-field')
var datum = menulist.label;
//Wenn das Datum stimmt, dann wird der Hintergrund auf Weiss gesetzt und
//das Datum im Datepicker gesetzt
//Wenn das Datum falsch ist, dann wird der Hintergrund auf Rot gesetzt
if(CheckDatum(datum))
document.getAnonymousNodes(this)[0].style.backgroundColor="#FFFFFF";
{
parts = datum.split('.');
dat = new Date(parts[2],parts[1]-1,parts[0]);
picker.view.setDate(dat);
picker.selection.setDate(dat);
menulist.style.backgroundColor="#FFFFFF";
}
else
document.getAnonymousNodes(this)[0].style.backgroundColor="#F46B6B";
menulist.style.backgroundColor="#F46B6B";
]]>
</handler>
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

+254
View File
@@ -0,0 +1,254 @@
/* ::::: datepicker ::::: */
/* :::: declarations :::: */
@IMPORT url("../spinbutton/spinbutton.css");
datepicker {-moz-binding: url("datepicker.xml#datepicker");}
datepicker-month {-moz-binding: url("datepicker.xml#datepicker-month");}
datepicker-year {-moz-binding: url("datepicker.xml#datepicker-year");}
datepicker-day {-moz-binding: url("datepicker.xml#datepicker-day");}
datepicker-calendar {-moz-binding: url("datepicker.xml#datepicker-calendar");}
datepicker-view {-moz-binding: url("datepicker.xml#datepicker-view");}
datepicker-button {-moz-binding: url("datepicker.xml#datepicker-button");}
/* :::: public style :::: */
datepicker {
font-family:monospace, cursive, serif, sans-serif;
font-size:12px;
}
/* partie centrale */
datepicker-calendar {
background-color:#E0EAFC;
color:black;
}
/* affichage des mois */
datepicker-month {
color:black;
}
/* affichage des années */
datepicker-year {
color:black;
}
/* afichage des jours */
datepicker-day {
color:black;
}
/* buttons pour revenir au mois courant */
datepicker-button.today {
list-style-image:url(date.png);
/* list-style-image:url(calendar.png); */
}
/* buttons pour changer de mois */
datepicker-button.previous-month {
/* list-style-image:url(chrome://browser/skin/Toolbar-small.png); */
list-style-image:url(navigation.png);
-moz-image-region:rect(0px 16px 16px 0px);
}
datepicker-button.next-month {
/* list-style-image:url(chrome://browser/skin/Toolbar-small.png); */
list-style-image:url(navigation.png);
-moz-image-region:rect(0px 32px 16px 16px);
}
/* jour selectionné */
datepicker-calendar[isyear][ismonth][currentday="1"] datepicker-day[value="1"],
datepicker-calendar[isyear][ismonth][currentday="2"] datepicker-day[value="2"],
datepicker-calendar[isyear][ismonth][currentday="3"] datepicker-day[value="3"],
datepicker-calendar[isyear][ismonth][currentday="4"] datepicker-day[value="4"],
datepicker-calendar[isyear][ismonth][currentday="5"] datepicker-day[value="5"],
datepicker-calendar[isyear][ismonth][currentday="6"] datepicker-day[value="6"],
datepicker-calendar[isyear][ismonth][currentday="7"] datepicker-day[value="7"],
datepicker-calendar[isyear][ismonth][currentday="8"] datepicker-day[value="8"],
datepicker-calendar[isyear][ismonth][currentday="9"] datepicker-day[value="9"],
datepicker-calendar[isyear][ismonth][currentday="10"] datepicker-day[value="10"],
datepicker-calendar[isyear][ismonth][currentday="11"] datepicker-day[value="11"],
datepicker-calendar[isyear][ismonth][currentday="12"] datepicker-day[value="12"],
datepicker-calendar[isyear][ismonth][currentday="13"] datepicker-day[value="13"],
datepicker-calendar[isyear][ismonth][currentday="14"] datepicker-day[value="14"],
datepicker-calendar[isyear][ismonth][currentday="15"] datepicker-day[value="15"],
datepicker-calendar[isyear][ismonth][currentday="16"] datepicker-day[value="16"],
datepicker-calendar[isyear][ismonth][currentday="17"] datepicker-day[value="17"],
datepicker-calendar[isyear][ismonth][currentday="18"] datepicker-day[value="18"],
datepicker-calendar[isyear][ismonth][currentday="19"] datepicker-day[value="19"],
datepicker-calendar[isyear][ismonth][currentday="20"] datepicker-day[value="20"],
datepicker-calendar[isyear][ismonth][currentday="21"] datepicker-day[value="21"],
datepicker-calendar[isyear][ismonth][currentday="22"] datepicker-day[value="22"],
datepicker-calendar[isyear][ismonth][currentday="23"] datepicker-day[value="23"],
datepicker-calendar[isyear][ismonth][currentday="24"] datepicker-day[value="24"],
datepicker-calendar[isyear][ismonth][currentday="25"] datepicker-day[value="25"],
datepicker-calendar[isyear][ismonth][currentday="26"] datepicker-day[value="26"],
datepicker-calendar[isyear][ismonth][currentday="27"] datepicker-day[value="27"],
datepicker-calendar[isyear][ismonth][currentday="28"] datepicker-day[value="28"],
datepicker-calendar[isyear][ismonth][currentday="29"] datepicker-day[value="29"],
datepicker-calendar[isyear][ismonth][currentday="30"] datepicker-day[value="30"],
datepicker-calendar[isyear][ismonth][currentday="31"] datepicker-day[value="31"] {
color:white;
background-color:#005B90;
}
/* survol d'une date */
datepicker-day:hover[value="1"], datepicker-day:hover[value="2"], datepicker-day:hover[value="3"], datepicker-day:hover[value="4"], datepicker-day:hover[value="5"], datepicker-day:hover[value="6"], datepicker-day:hover[value="7"],
datepicker-day:hover[value="8"], datepicker-day:hover[value="9"], datepicker-day:hover[value="10"], datepicker-day:hover[value="11"], datepicker-day:hover[value="12"], datepicker-day:hover[value="13"], datepicker-day:hover[value="14"],
datepicker-day:hover[value="15"], datepicker-day:hover[value="16"], datepicker-day:hover[value="17"], datepicker-day:hover[value="18"], datepicker-day:hover[value="19"], datepicker-day:hover[value="20"], datepicker-day:hover[value="21"],
datepicker-day:hover[value="22"], datepicker-day:hover[value="23"], datepicker-day:hover[value="24"], datepicker-day:hover[value="25"], datepicker-day:hover[value="26"], datepicker-day:hover[value="27"], datepicker-day:hover[value="28"],
datepicker-day:hover[value="29"], datepicker-day:hover[value="30"], datepicker-day:hover[value="31"] {
border:solid 1px lightcoral;
cursor:pointer;
}
/* jour d'aujourd'hui */
datepicker-view[isyear][ismonth][today="1"] datepicker-day[value="1"],
datepicker-view[isyear][ismonth][today="2"] datepicker-day[value="2"],
datepicker-view[isyear][ismonth][today="3"] datepicker-day[value="3"],
datepicker-view[isyear][ismonth][today="4"] datepicker-day[value="4"],
datepicker-view[isyear][ismonth][today="5"] datepicker-day[value="5"],
datepicker-view[isyear][ismonth][today="6"] datepicker-day[value="6"],
datepicker-view[isyear][ismonth][today="7"] datepicker-day[value="7"],
datepicker-view[isyear][ismonth][today="8"] datepicker-day[value="8"],
datepicker-view[isyear][ismonth][today="9"] datepicker-day[value="9"],
datepicker-view[isyear][ismonth][today="10"] datepicker-day[value="10"],
datepicker-view[isyear][ismonth][today="11"] datepicker-day[value="11"],
datepicker-view[isyear][ismonth][today="12"] datepicker-day[value="12"],
datepicker-view[isyear][ismonth][today="13"] datepicker-day[value="13"],
datepicker-view[isyear][ismonth][today="14"] datepicker-day[value="14"],
datepicker-view[isyear][ismonth][today="15"] datepicker-day[value="15"],
datepicker-view[isyear][ismonth][today="16"] datepicker-day[value="16"],
datepicker-view[isyear][ismonth][today="17"] datepicker-day[value="17"],
datepicker-view[isyear][ismonth][today="18"] datepicker-day[value="18"],
datepicker-view[isyear][ismonth][today="19"] datepicker-day[value="19"],
datepicker-view[isyear][ismonth][today="20"] datepicker-day[value="20"],
datepicker-view[isyear][ismonth][today="21"] datepicker-day[value="21"],
datepicker-view[isyear][ismonth][today="22"] datepicker-day[value="22"],
datepicker-view[isyear][ismonth][today="23"] datepicker-day[value="23"],
datepicker-view[isyear][ismonth][today="24"] datepicker-day[value="24"],
datepicker-view[isyear][ismonth][today="25"] datepicker-day[value="25"],
datepicker-view[isyear][ismonth][today="26"] datepicker-day[value="26"],
datepicker-view[isyear][ismonth][today="27"] datepicker-day[value="27"],
datepicker-view[isyear][ismonth][today="28"] datepicker-day[value="28"],
datepicker-view[isyear][ismonth][today="29"] datepicker-day[value="29"],
datepicker-view[isyear][ismonth][today="30"] datepicker-day[value="30"],
datepicker-view[isyear][ismonth][today="31"] datepicker-day[value="31"] {
color:#E85C0B;
}
/* jour d'aujourd'hui selectionné */
datepicker-view[isyear][ismonth][today="1"] datepicker-calendar[isyear][ismonth][currentday="1"] datepicker-day[value="1"],
datepicker-view[isyear][ismonth][today="2"] datepicker-calendar[isyear][ismonth][currentday="2"] datepicker-day[value="2"],
datepicker-view[isyear][ismonth][today="3"] datepicker-calendar[isyear][ismonth][currentday="3"] datepicker-day[value="3"],
datepicker-view[isyear][ismonth][today="4"] datepicker-calendar[isyear][ismonth][currentday="4"] datepicker-day[value="4"],
datepicker-view[isyear][ismonth][today="5"] datepicker-calendar[isyear][ismonth][currentday="5"] datepicker-day[value="5"],
datepicker-view[isyear][ismonth][today="6"] datepicker-calendar[isyear][ismonth][currentday="6"] datepicker-day[value="6"],
datepicker-view[isyear][ismonth][today="7"] datepicker-calendar[isyear][ismonth][currentday="7"] datepicker-day[value="7"],
datepicker-view[isyear][ismonth][today="8"] datepicker-calendar[isyear][ismonth][currentday="8"] datepicker-day[value="8"],
datepicker-view[isyear][ismonth][today="9"] datepicker-calendar[isyear][ismonth][currentday="9"] datepicker-day[value="9"],
datepicker-view[isyear][ismonth][today="10"] datepicker-calendar[isyear][ismonth][currentday="10"] datepicker-day[value="10"],
datepicker-view[isyear][ismonth][today="11"] datepicker-calendar[isyear][ismonth][currentday="11"] datepicker-day[value="11"],
datepicker-view[isyear][ismonth][today="12"] datepicker-calendar[isyear][ismonth][currentday="12"] datepicker-day[value="12"],
datepicker-view[isyear][ismonth][today="13"] datepicker-calendar[isyear][ismonth][currentday="13"] datepicker-day[value="13"],
datepicker-view[isyear][ismonth][today="14"] datepicker-calendar[isyear][ismonth][currentday="14"] datepicker-day[value="14"],
datepicker-view[isyear][ismonth][today="15"] datepicker-calendar[isyear][ismonth][currentday="15"] datepicker-day[value="15"],
datepicker-view[isyear][ismonth][today="16"] datepicker-calendar[isyear][ismonth][currentday="16"] datepicker-day[value="16"],
datepicker-view[isyear][ismonth][today="17"] datepicker-calendar[isyear][ismonth][currentday="17"] datepicker-day[value="17"],
datepicker-view[isyear][ismonth][today="18"] datepicker-calendar[isyear][ismonth][currentday="18"] datepicker-day[value="18"],
datepicker-view[isyear][ismonth][today="19"] datepicker-calendar[isyear][ismonth][currentday="19"] datepicker-day[value="19"],
datepicker-view[isyear][ismonth][today="20"] datepicker-calendar[isyear][ismonth][currentday="20"] datepicker-day[value="20"],
datepicker-view[isyear][ismonth][today="21"] datepicker-calendar[isyear][ismonth][currentday="21"] datepicker-day[value="21"],
datepicker-view[isyear][ismonth][today="22"] datepicker-calendar[isyear][ismonth][currentday="22"] datepicker-day[value="22"],
datepicker-view[isyear][ismonth][today="23"] datepicker-calendar[isyear][ismonth][currentday="23"] datepicker-day[value="23"],
datepicker-view[isyear][ismonth][today="24"] datepicker-calendar[isyear][ismonth][currentday="24"] datepicker-day[value="24"],
datepicker-view[isyear][ismonth][today="25"] datepicker-calendar[isyear][ismonth][currentday="25"] datepicker-day[value="25"],
datepicker-view[isyear][ismonth][today="26"] datepicker-calendar[isyear][ismonth][currentday="26"] datepicker-day[value="26"],
datepicker-view[isyear][ismonth][today="27"] datepicker-calendar[isyear][ismonth][currentday="27"] datepicker-day[value="27"],
datepicker-view[isyear][ismonth][today="28"] datepicker-calendar[isyear][ismonth][currentday="28"] datepicker-day[value="28"],
datepicker-view[isyear][ismonth][today="29"] datepicker-calendar[isyear][ismonth][currentday="29"] datepicker-day[value="29"],
datepicker-view[isyear][ismonth][today="30"] datepicker-calendar[isyear][ismonth][currentday="30"] datepicker-day[value="30"],
datepicker-view[isyear][ismonth][today="31"] datepicker-calendar[isyear][ismonth][currentday="31"] datepicker-day[value="31"] {
color:yellow;
background-color:#005B90;
}
/* moi courant */
datepicker-view[isyear][ismonth] datepicker-month {
font-weight:bold;
}
/* année courante */
datepicker-view[isyear] datepicker-year {
font-weight:bold;
}
/* colonne des dimanches */
datepicker columns column:first-child {
background-color:gainsboro;
border-right:solid gray 1px;
}
/* colonne des lundi */
datepicker columns column:first-child + column {
}
/* colonne des mardis */
datepicker columns column:first-child + column + column {
}
/* colonne des mercredis */
datepicker columns column:first-child + column + column + column {
}
/* colonne des jeudis */
datepicker columns column:first-child + column + column + column + column {
}
/* colonne des vendredi */
datepicker columns column:first-child + column + column + column + column + column {
}
/* colonne des samedis */
datepicker columns column:first-child + column + column + column + column + column + column {
border-left:solid gray 1px;
}
/* affichage des jours */
rows[anonid="datepicker-rows"] row:first-child {
font-weight:bold;
background-color:linen;
color:#005B90;
}
/* :::: private style :::: */
datepicker-button {
background-color:transparent;
-moz-appearance:toolbarbutton;
padding:3px;
-moz-box-pack:center;
-moz-box-align:center;
opacity:1.0 !important;
}
datepicker {
margin:0px;
padding:0px;
text-align:center;
cursor:default;
}
datepicker-month {
text-align:right;
width:65px;
display:none;
}
datepicker-day {
border:solid 1px transparent;
}
rows[anonid="datepicker-rows"] row:first-child {
border-bottom:solid gray 1px;
height:25px;
padding-top:3px;
}
/* mois affiché */
datepicker-view[currentmonth="0"] spacer:first-child + datepicker-month,
datepicker-view[currentmonth="1"] spacer:first-child + datepicker-month + datepicker-month,
datepicker-view[currentmonth="2"] spacer:first-child + datepicker-month + datepicker-month + datepicker-month,
datepicker-view[currentmonth="3"] spacer:first-child + datepicker-month + datepicker-month + datepicker-month + datepicker-month,
datepicker-view[currentmonth="4"] spacer:first-child + datepicker-month + datepicker-month + datepicker-month + datepicker-month + datepicker-month,
datepicker-view[currentmonth="5"] spacer:first-child + datepicker-month + datepicker-month + datepicker-month + datepicker-month + datepicker-month + datepicker-month,
datepicker-view[currentmonth="6"] spacer:first-child + datepicker-month + datepicker-month + datepicker-month + datepicker-month + datepicker-month + datepicker-month + datepicker-month,
datepicker-view[currentmonth="7"] spacer:first-child + datepicker-month + datepicker-month + datepicker-month + datepicker-month + datepicker-month + datepicker-month + datepicker-month + datepicker-month,
datepicker-view[currentmonth="8"] spacer:first-child + datepicker-month + datepicker-month + datepicker-month + datepicker-month + datepicker-month + datepicker-month + datepicker-month + datepicker-month + datepicker-month,
datepicker-view[currentmonth="9"] spacer:first-child + datepicker-month + datepicker-month + datepicker-month + datepicker-month + datepicker-month + datepicker-month + datepicker-month + datepicker-month + datepicker-month + datepicker-month,
datepicker-view[currentmonth="10"] spacer:first-child + datepicker-month + datepicker-month + datepicker-month + datepicker-month + datepicker-month + datepicker-month + datepicker-month + datepicker-month + datepicker-month + datepicker-month + datepicker-month,
datepicker-view[currentmonth="11"] spacer:first-child + datepicker-month + datepicker-month + datepicker-month + datepicker-month + datepicker-month + datepicker-month + datepicker-month + datepicker-month + datepicker-month + datepicker-month + datepicker-month + datepicker-month {
display:-moz-box;
}
+366
View File
@@ -0,0 +1,366 @@
<?xml version="1.0"?>
<bindings xmlns="http://www.mozilla.org/xbl"
xmlns:xbl="http://www.mozilla.org/xbl"
xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<binding id="datepicker">
<content>
<xul:datepicker-view anonid="datepicker-view" flex="1" xbl:inherits="currentyear=currentyear,currentmonth=currentmonth">
<xul:datepicker-calendar anonid="datepicker-calendar" xbl:inherits="currentyear=currentyear,currentmonth=currentmonth,currentday=currentday"/>
</xul:datepicker-view>
</content>
<implementation>
<property name="selection" onget="return document.getAnonymousElementByAttribute(this ,'anonid', 'datepicker-calendar');"/>
<property name="view" onget="return document.getAnonymousElementByAttribute(this ,'anonid', 'datepicker-view');"/>
<method name="updateCalendar">
<body><![CDATA[
var date = new Date(this.view.currentYear, this.view.currentMonth, 1, 0, 0, 0, 0);
var rows = document.getAnonymousElementByAttribute(this.selection ,"anonid", "datepicker-rows");
var days = rows.getElementsByTagName("datepicker-day");
for(var i=0; i<days.length; i++) days[i].setAttribute("value", "");
var sem = 0, j =0, d = 0;
var month = date.getMonth();
while(month==date.getMonth()) {
j = date.getDay(); // jour de la semaine; 0-6
d = date.getDate() // jour du mois 1-31
days[sem*7+j].setAttribute("value", d);
if(j==6) sem++;
date.setDate(++d);
}
]]></body>
</method>
</implementation>
<handlers>
<handler event="select"><![CDATA[
if(this.getAttribute("onselect")!="") try {this.getAttribute("onselect");} catch(e) {}
event.preventDefault();
event.stopPropagation();
]]></handler>
<handler event="click"><![CDATA[
]]></handler>
</handlers>
</binding>
<binding id="datepicker-month" extends="xul:label">
<content value=""/>
</binding>
<binding id="datepicker-year" extends="xul:label">
<content value=""/>
</binding>
<binding id="datepicker-day" extends="xul:label">
<implementation>
<field name="_datepicker">null</field>
<property name="datepicker">
<getter><![CDATA[
if(this._datepicker==null) {
this._datepicker = this.parentNode;
while(this._datepicker.localName!="datepicker") this._datepicker = this._datepicker.parentNode;
}
return this._datepicker;
]]></getter>
</property>
</implementation>
<handlers>
<handler event="click" phase="target"><![CDATA[
var val = this.getAttribute("value");
if(val!="") {
this.datepicker.selection.currentDay=val;
this.datepicker.selection.currentMonth=this.datepicker.view.currentMonth;
this.datepicker.selection.currentYear=this.datepicker.view.currentYear;
}
if(this.datepicker.parentNode.localName=="menupopup") this.datepicker.parentNode.hidePopup();
var evt = document.createEvent("HTMLEvents");
evt.initEvent("select", true, true);
this.datepicker.dispatchEvent(evt);
event.preventDefault();
event.stopPropagation();
]]></handler>
</handlers>
</binding>
<binding id="datepicker-calendar">
<content currentday="" currentmonth="" currentyear="" ismonth="false" isyear="false">
<xul:grid flex="1">
<xul:columns>
<xul:column flex="1"/><xul:column flex="1"/><xul:column flex="1"/><xul:column flex="1"/><xul:column flex="1"/><xul:column flex="1"/><xul:column flex="1"/>
</xul:columns>
<xul:rows flex="1" anonid="datepicker-rows">
<xul:row>
<xul:label flex="1"/><xul:label flex="1"/><xul:label flex="1"/><xul:label flex="1"/>
<xul:label flex="1"/><xul:label flex="1"/><xul:label flex="1"/>
</xul:row>
<xul:row><xul:datepicker-day value=""/><xul:datepicker-day value=""/><xul:datepicker-day value=""/><xul:datepicker-day value=""/><xul:datepicker-day value=""/><xul:datepicker-day value=""/><xul:datepicker-day value=""/></xul:row>
<xul:row><xul:datepicker-day value=""/><xul:datepicker-day value=""/><xul:datepicker-day value=""/><xul:datepicker-day value=""/><xul:datepicker-day value=""/><xul:datepicker-day value=""/><xul:datepicker-day value=""/></xul:row>
<xul:row><xul:datepicker-day value=""/><xul:datepicker-day value=""/><xul:datepicker-day value=""/><xul:datepicker-day value=""/><xul:datepicker-day value=""/><xul:datepicker-day value=""/><xul:datepicker-day value=""/></xul:row>
<xul:row><xul:datepicker-day value=""/><xul:datepicker-day value=""/><xul:datepicker-day value=""/><xul:datepicker-day value=""/><xul:datepicker-day value=""/><xul:datepicker-day value=""/><xul:datepicker-day value=""/></xul:row>
<xul:row><xul:datepicker-day value=""/><xul:datepicker-day value=""/><xul:datepicker-day value=""/><xul:datepicker-day value=""/><xul:datepicker-day value=""/><xul:datepicker-day value=""/><xul:datepicker-day value=""/></xul:row>
<xul:row><xul:datepicker-day value=""/><xul:datepicker-day value=""/><xul:datepicker-day value=""/><xul:datepicker-day value=""/><xul:datepicker-day value=""/><xul:datepicker-day value=""/><xul:datepicker-day value=""/></xul:row>
</xul:rows>
</xul:grid>
</content>
<implementation>
<constructor><![CDATA[
var today = new Date();
// mise a jour des label des jours
var j;
var rows = document.getAnonymousElementByAttribute(this ,"anonid", "datepicker-rows");
var title = rows.firstChild;
var labels = title.getElementsByTagName("label");
for(var i=0; i<7; i++) {
j = today.toLocaleString().split(" ")[0];
labels[today.getDay()].setAttribute("value", j.substring(0, 1).toUpperCase()+j.substring(1, 2));
labels[today.getDay()].setAttribute("tooltiptext", j);
today.setDate(today.getDate()+1);
}
]]></constructor>
<field name="_datepicker">null</field>
<property name="datepicker">
<getter><![CDATA[
if(this._datepicker==null) {
this._datepicker = this.parentNode;
while(this._datepicker.localName!="datepicker") this._datepicker = this._datepicker.parentNode;
}
return this._datepicker;
]]></getter>
</property>
<property name="currentMonth">
<getter><![CDATA[
return this.getAttribute("currentmonth");
]]></getter>
<setter><![CDATA[
var today = new Date();
if(isNaN(val)) val = today.getMonth();
if(val>11) {val = 0; this.currentYear++;}
if(val<0) {val = 11; this.currentYear--;}
this.setAttribute("currentmonth", val);
if(val==this.datepicker.view.currentMonth) this.setAttribute("ismonth", true);
else this.removeAttribute("ismonth");
]]></setter>
</property>
<property name="currentYear">
<getter><![CDATA[
return this.getAttribute("currentyear");
]]></getter>
<setter><![CDATA[
var today = new Date();
if(isNaN(val)) val = today.getFullYear();
this.setAttribute("currentyear", val);
if(val==this.datepicker.view.currentYear) this.setAttribute("isyear", true);
else this.removeAttribute("isyear");
]]></setter>
</property>
<property name="currentDay">
<getter><![CDATA[
return this.getAttribute("currentday");
]]></getter>
<setter><![CDATA[
var today = new Date();
if(isNaN(val)) val = today.getDate();
this.setAttribute("currentday", val);
]]></setter>
</property>
<method name="isSelected">
<body><![CDATA[
return this.getDate()!=null;
]]></body>
</method>
<method name="getDate">
<body><![CDATA[
if(this.currentDay!=""&&this.currentMonth!=""&&this.currentYear!="") {
return new Date(this.currentYear, this.currentMonth, this.currentDay, 0, 0, 0, 0, 0);
}
return null;
]]></body>
</method>
<method name="setDate">
<parameter name="date"/>
<body><![CDATA[
try {
this.currentDay = date.getDate();
this.currentMonth = date.getMonth();
this.currentYear = date.getFullYear();
} catch(e) {}
]]></body>
</method>
</implementation>
</binding>
<binding id="datepicker-view">
<content orient="vertical" today="" currentmonth="" currentyear="" ismonth="false" isyear="false">
<xul:toolbox>
<xul:toolbar anonid="datepicker-month-toolbar">
<xul:datepicker-button class="previous-month" oncommand="this.parentNode.parentNode.parentNode.currentMonth--"/>
<xul:datepicker-button class="today" oncommand="this.parentNode.parentNode.parentNode.setDate(new Date())"/>
<xul:toolbaritem orient="vertical">
<xul:spacer flex="1"/>
<xul:datepicker-month/><xul:datepicker-month/><xul:datepicker-month/><xul:datepicker-month/><xul:datepicker-month/><xul:datepicker-month/><xul:datepicker-month/><xul:datepicker-month/><xul:datepicker-month/><xul:datepicker-month/><xul:datepicker-month/><xul:datepicker-month/>
<xul:spacer flex="1"/>
</xul:toolbaritem>
<xul:toolbarspacer width="5px"/>
<xul:toolbaritem>
<xul:vbox>
<xul:spacer flex="1"/>
<xul:datepicker-year value="" xbl:inherits="value=currentyear"/>
<xul:spacer flex="1"/>
</xul:vbox>
<xul:spacer width="3px"/>
<xul:spinbutton onclickup="this.parentNode.parentNode.parentNode.parentNode.currentYear++"
onclickdn="this.parentNode.parentNode.parentNode.parentNode.currentYear--"/>
</xul:toolbaritem>
<xul:toolbarspacer flex="1"/>
<xul:datepicker-button class="next-month" oncommand="this.parentNode.parentNode.parentNode.currentMonth++"/>
</xul:toolbar>
</xul:toolbox>
<children/>
</content>
<implementation>
<constructor><![CDATA[
var today = new Date();
document.getAnonymousElementByAttribute(this ,"class", "today").setAttribute("tooltiptext", today.toLocaleDateString());
if(this.getAttribute("currentyear")==""||isNaN(this.getAttribute("currentyear"))) this.currentYear=today.getFullYear();
if(this.getAttribute("currentmonth")==""||isNaN(this.getAttribute("currentmonth"))) this.currentMonth=today.getMonth();
this.currentYear = this.getAttribute("currentyear");
this.currentMonth = this.getAttribute("currentmonth");
this.toDay = today.getDate();
// mise a jour des label des mois
var m = "";
var tlbritem = document.getAnonymousElementByAttribute(this ,"anonid", "datepicker-month-toolbar");
var months = tlbritem.getElementsByTagName("datepicker-month");
var idx = 1;
today.setDate(15);
var fields = today.toLocaleString().split(" ");
if(isNaN(fields[2])) idx = 2;
for(var i=0; i<12; i++) {
m = today.toLocaleString().split(" ")[idx];
months[today.getMonth()].setAttribute("value", m.substring(0, 1).toUpperCase()+m.substring(1));
months[today.getMonth()].value = m.substring(0, 1).toUpperCase()+m.substring(1);
today.setMonth(today.getMonth()+1);
}
]]></constructor>
<property name="datepicker">
<getter><![CDATA[
if(this._datepicker==null) {
this._datepicker = this.parentNode;
while(this._datepicker.localName!="datepicker") this._datepicker = this._datepicker.parentNode;
}
return this._datepicker;
]]></getter>
</property>
<property name="currentMonth">
<getter><![CDATA[
return this.getAttribute("currentmonth");
]]></getter>
<setter><![CDATA[
var today = new Date();
if(isNaN(val)) val = today.getMonth();
if(val>11) {val = 0; this.currentYear++;}
if(val<0) {val = 11; this.currentYear--;}
this.setAttribute("currentmonth", val);
this.datepicker.updateCalendar();
if(val==today.getMonth()) this.setAttribute("ismonth", true);
else this.removeAttribute("ismonth");
if(val==this.datepicker.selection.currentMonth) this.datepicker.selection.setAttribute("ismonth", true);
else this.datepicker.selection.removeAttribute("ismonth");
]]></setter>
</property>
<property name="currentYear">
<getter><![CDATA[
return this.getAttribute("currentyear");
]]></getter>
<setter><![CDATA[
var today = new Date();
if(isNaN(val)) val = today.getFullYear();
this.setAttribute("currentyear", val);
this.datepicker.updateCalendar();
if(val==today.getFullYear()) this.setAttribute("isyear", true);
else this.removeAttribute("isyear");
if(val==this.datepicker.selection.currentYear) this.datepicker.selection.setAttribute("isyear", true);
else this.datepicker.selection.removeAttribute("isyear");
]]></setter>
</property>
<property name="toDay">
<getter><![CDATA[
return this.getAttribute("today");
]]></getter>
<setter><![CDATA[
var today = new Date();
if(isNaN(val)) val = today.getDate();
this.setAttribute("today", val);
]]></setter>
</property>
<method name="getDate">
<body><![CDATA[
if(this.toDay!=""&&this.currentMonth!=""&&this.currentYear!="") {
return new Date(this.currentYear, this.currentMonth, this.toDay, 0, 0, 0, 0, 0);
}
return null;
]]></body>
</method>
<method name="setDate">
<parameter name="date"/>
<body><![CDATA[
try {
this.toDay = date.getDate();
this.currentMonth = date.getMonth();
this.currentYear = date.getFullYear();
} catch(e) {}
]]></body>
</method>
</implementation>
<handlers>
<handler event="click"><![CDATA[
event.preventDefault();
event.stopPropagation();
]]></handler>
</handlers>
</binding>
<binding id="datepicker-button">
<content>
<xul:image class="toolbarbutton-icon" xbl:inherits="validate,src=image,toolbarmode,buttonstyle"/>
</content>
<implementation>
<constructor><![CDATA[
this.setAttribute("id", "spinbutton-arrow"+Math.random());
this.id=this.getAttribute("id");
]]></constructor>
<field name="_timer">null</field>
<field name="_delay">400</field>
<field name="id"></field>
<method name="_fireEvent">
<body><![CDATA[
var evt = document.createEvent("MouseEvents");
try {
evt.initMouseEvent("mousedown", true, true, window, 1, 0, 0, 0, 0, false, false, false, false, 0, this);
this.dispatchEvent(evt);
} catch(e) {};
]]></body>
</method>
</implementation>
<handlers>
<handler event="click"><![CDATA[
this._delay = 400;
clearTimeout(this._timer);
]]></handler>
<handler event="mouseout"><![CDATA[
this._delay = 400;
clearTimeout(this._timer);
]]></handler>
<handler event="mouseup"><![CDATA[
this._delay = 400;
clearTimeout(this._timer);
]]></handler>
<handler event="mousedown" button="0"><![CDATA[
var evt = document.createEvent("MouseEvents");
try {
evt.initMouseEvent("action", true, true, window, 1, event.screenX, event.screenY, event.clientX, event.clientY, false, false, false, false, 0, this);
} catch(e) {};
this.dispatchEvent(evt);
this._timer = setTimeout("document.getElementById('"+this.id+"')._fireEvent()", this._delay);
if(this._delay>50) this._delay = this._delay*0.8;
]]></handler>
<handler event="action"><![CDATA[
var command = this.getAttribute("oncommand");
if(command!="") try {eval(command);} catch(e) {}
]]></handler>
</handlers>
</binding>
</bindings>
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

+1 -1
View File
@@ -42,6 +42,7 @@ if(!$benutzer->loadVariables($user))
echo '<?xml-stylesheet href="'.APP_ROOT.'skin/tempus.css" type="text/css"?>';
echo '<?xml-stylesheet href="'.APP_ROOT.'content/bindings.css" type="text/css" ?>';
echo '<?xul-overlay href="'.APP_ROOT.'content/fasoverlay.xul.php"?>';
echo '<?xml-stylesheet href="datepicker/datepicker.css" type="text/css"?>';
?>
<!DOCTYPE window [
<?php require("../locale/de-AT/fas.dtd"); ?>
@@ -225,7 +226,6 @@ echo '<?xul-overlay href="'.APP_ROOT.'content/fasoverlay.xul.php"?>';
</splitter>
<vbox id="vbox-main" flex="15" />
</hbox>
<statusbar id="status-bar" persist="collapsed">
<statusbarpanel class="statusbarpanel-iconic" id="logo-icon" />
<statusbarpanel id="statusbarpanel-semester" label="<?php echo $semester_aktuell; ?>"/>
+3 -3
View File
@@ -358,7 +358,7 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
<textbox id="student-prestudent-textbox-zgvort" disabled="true" maxlength="64"/>
<label value="ZGV Datum" control="student-prestudent-textbox-zgvdatum"/>
<hbox>
<box class='Datum' id="student-prestudent-textbox-zgvdatum" />
<box class='Datum' id="student-prestudent-textbox-zgvdatum" disabled="true"/>
<!--<textbox id="student-prestudent-textbox-zgvdatum" disabled="true" maxlength="10" size="10" tooltiptext="Format: JJJJ-MM-DD Beispiel: 1970-01-31"/>-->
</hbox>
</row>
@@ -379,7 +379,7 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
<textbox id="student-prestudent-textbox-zgvmasterort" disabled="true" maxlength="64"/>
<label value="ZGV Master Datum" control="student-prestudent-textbox-zgvmasterdatum"/>
<hbox>
<box class='Datum' id="student-prestudent-textbox-zgvmasterdatum" />
<box class='Datum' id="student-prestudent-textbox-zgvmasterdatum" disabled="true"/>
<!--<textbox id="student-prestudent-textbox-zgvmasterdatum" disabled="true" maxlength="10" size="10" tooltiptext="Format: JJJJ-MM-DD Beispiel: 1970-01-31"/>-->
</hbox>
</row>
@@ -401,7 +401,7 @@ echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
<row>
<label value="Anmeldung zum Reihungstest am" control="student-prestudent-textbox-anmeldungreihungstest"/>
<hbox>
<box class="Datum" id="student-prestudent-textbox-anmeldungreihungstest" />
<box class="Datum" id="student-prestudent-textbox-anmeldungreihungstest" disabled="true"/>
<!--<textbox id="student-prestudent-textbox-zgvmasterdatum" disabled="true" maxlength="10" size="10" tooltiptext="Format: JJJJ-MM-DD Beispiel: 1970-01-31"/>-->
<button id="student-prestudent-button-anmeldungreihungstest-heute" label="Heute" oncommand="StudentAnmeldungreihungstestHeute()" disabled="true" style="margin:0px;"/>
</hbox>
@@ -31,6 +31,7 @@ echo '<?xml version="1.0" encoding="UTF-8"?>'."\n";
echo '<?xml-stylesheet href="'.APP_ROOT.'skin/tempus.css" type="text/css"?>';
echo '<?xml-stylesheet href="'.APP_ROOT.'content/bindings.css" type="text/css"?>';
echo '<?xml-stylesheet href="../datepicker/datepicker.css" type="text/css"?>';
?>
<window id="student-konto-neu-dialog" title="Neu"
@@ -61,8 +62,8 @@ echo '<?xml-stylesheet href="'.APP_ROOT.'content/bindings.css" type="text/css"?>
<row>
<label value="Buchungsdatum" control="student-konto-neu-textbox-buchungsdatum"/>
<hbox>
<box class='Datum' id="student-konto-neu-textbox-buchungsdatum" value="<?php echo date('d.m.Y');?>" />
<spacer flex="1" />
<box class='Datum' id="student-konto-neu-textbox-buchungsdatum" value="<?php echo date('d.m.Y');?>"/>
<spacer flex="1" />
</hbox>
</row>
<row>