Envoyé par : bobbytux
Date : 12/11/2004 21:40
dans le .xul, ajouter :
<?xul-overlay href="http://monsite.toto.fr/datepicker/datePicker.xul"?> (là, il faut remplacer 'http://monsite.toto.fr' ....)
dans le tag <windows/> :
<popupset> <popup id="calendar"/> </popupset>
<label class="inputlabel" value="date signature:" />
<textbox readonly='true' id="dateSignature"/>
<button label="..." popup='calendar' onmouseover="setDateCtl('dateSignature');" />
sur un sous-repertoire datepicker, creer un fichier datepicker.js :
// Inspired by the work of Tan Ling Wee on 2 Dec 2001
// email : fuushikaden@yahoo.com
// Written by Pascal Courtonne on Nov 2004
// email : pascal@sedir.fr
var fixedX = -1 // x position (-1 if to appear below control)
var fixedY = -1 // y position (-1 if to appear below control)
var startAt = 1 // 0 - sunday ; 1 - monday
var showWeekNumber = 1 // 0 - don't show; 1 - show
var showToday = 0 // 0 - don't show; 1 - show
var imgDir = "datepicker/" // directory for images ... e.g. var imgDir="/img/"
var todayString = "Aujourd'hui : "
var crossobj, crossMonthObj, crossYearObj, monthSelected, yearSelected, dateSelected, omonthSelected, oyearSelected, odateSelected, monthConstructed, yearConstructed, intervalID1, intervalID2,timeoutID1,timeoutID2, ctlToPlaceValue, ctlNow, dateFormat, nStartingYear
ctlToPlaceValue="";
var bPageLoaded=false
var ie=document.all
var today = new Date()
var dateNow = today.getDate()
var monthNow = today.getMonth()
var yearNow = today.getYear()
var imgsrc = new Array("drop1.gif","drop2.gif","left1.gif","left2.gif","right1.gif","right2.gif")
var img = new Array()
var monthName = new Array("Janvier","Fevrier","Mars","Avril","Mai","Juin","Juillet",
"Aout","Septembre","Octobre","Novembre","Decembre")
if (startAt==0)
{
dayName = new Array ("Dim","Lun","Mar","Mer","Jeu","Ven","Sam")
}
else
{
dayName = new Array ("Lun","Mar","Mer","Jeu","Ven","Sam","Dim")
}
var styleAnchor="text-decoration:none;color:black;"
var styleLightBorder="border-style:solid;border-width:1px;border-color:#a0a0a0;"
function swapImage(srcImg, destImg)
{
document.getElementById(srcImg).setAttribute("src",imgDir + destImg)
}
function setDateCtl(ctl2)
{
ctlToPlaceValue=ctl2;
}
function recordValue(sdate)
{
document.getElementById(ctlToPlaceValue).value = sdate;
}
function initFormat()
{
format="dd/mm/yyyy";
dateFormat=format;
formatChar = " "
aFormat = dateFormat.split(formatChar)
if(aFormat.length < 3 )
{
formatChar = "/"
aFormat = dateFormat.split(formatChar)
if(aFormat.length<3)
{
formatChar = "."
aFormat = dateFormat.split(formatChar)
if(aFormat.length<3)
{
formatChar = "-"
aFormat = dateFormat.split(formatChar)
if(aFormat.length<3)
{
// invalid date format
formatChar=""
}
}
}
}
tokensChanged = 0
if(formatChar == "")
{
// use users date
aData = ctl2.value.split(formatChar)
for(i=0;i<3;i++)
{
if((aFormat[i]=="d") || (aFormat[i]=="dd"))
{
dateSelected = parseInt(aData[i], 10)
tokensChanged ++
}
else if((aFormat[i]=="m") || (aFormat[i]=="mm"))
{
monthSelected = parseInt(aData[i], 10) - 1
tokensChanged ++
}
else if(aFormat[i]=="yyyy")
{
yearSelected = parseInt(aData[i], 10)
tokensChanged ++
}
else if(aFormat[i]=="mmm")
{
for(j=0; j<12; j++)
{
if(aData[i]==monthName[j])
{
monthSelected=j
tokensChanged ++
}
}
}
}
}
if ((tokensChanged!=3)||isNaN(dateSelected)||isNaN(monthSelected)||isNaN(yearSelected))
{
dateSelected = dateNow
monthSelected = monthNow
yearSelected = yearNow
}
odateSelected=dateSelected
omonthSelected=monthSelected
oyearSelected=yearSelected
}
function initCalendar()
{
if(ctlToPlaceValue=="")
{
alert("Erreur : controle date non defini");
}
if(bPageLoaded != true)
{
yearNow += 1900;
lbl_today = document.getElementById('lblToday');
lbl_today.setAttribute("value",
todayString + dayName[(today.getDay()-startAt==-1)?6:(today.getDay()-startAt)]+", " + dateNow + " " + monthName[monthNow].substring(0,3) + " " + yearNow);
initFormat();
}
title_img1 = document.getElementById('changeMonthLeft');
title_img1.setAttribute("src",imgDir+"left1.gif");
title_img1.setAttribute("border","1");
title_img1.setAttribute("onmouseover","swapImage(\"changeMonthLeft\",\"left2.gif\");");
title_img1.setAttribute("onmouseout","swapImage(\"changeMonthLeft\",\"left1.gif\");");
title_img1.setAttribute("onmousedown","decMonth()");
title_img2 = document.getElementById('changeMonthRight');
title_img2.setAttribute("src",imgDir+"right1.gif");
title_img2.setAttribute("border","1");
title_img2.setAttribute("onmouseover","swapImage(\"changeMonthRight\",\"right2.gif\");");
title_img2.setAttribute("onmouseout","swapImage(\"changeMonthRight\",\"right1.gif\");");
title_img2.setAttribute("onmousedown","incMonth()");
title_box3 = document.getElementById('changeMonthBox');
title_box3.setAttribute("style","border-style:solid;border-width:1px;border-color:#3366FF;cursor:pointer");
title_box3.setAttribute("onmouseover",
document.getElementById('changeMonthBox').setAttribute(\"style\",\"border-style:solid;border-width:1px;border-color:#88AAFF;cursor:pointer\")");
title_box3.setAttribute("onmouseout",
"document.getElementById('changeMonthBox').setAttribute(\"style\",\"border-style:solid;border-width:1px;border-color:#3366FF;cursor:pointer\")");
title_label1 = document.getElementById('spanMonth');
title_label1.setAttribute("value","mois");
title_img3 = document.getElementById('changeYearLeft');
title_img3.setAttribute("src",imgDir+"left1.gif");
title_img3.setAttribute("border","1");
title_img3.setAttribute("onmouseover","swapImage(\"changeYearLeft\",\"left2.gif\");");
title_img3.setAttribute("onmouseout","swapImage(\"changeYearLeft\",\"left1.gif\");");
title_img3.setAttribute("onmousedown","decYear()");
title_img4 = document.getElementById('changeYearRight');
title_img4.setAttribute("src",imgDir+"right1.gif");
title_img4.setAttribute("border","1");
title_img4.setAttribute("onmouseover","swapImage(\"changeYearRight\",\"right2.gif\");");
title_img4.setAttribute("onmouseout","swapImage(\"changeYearRight\",\"right1.gif\");");
title_img4.setAttribute("onmousedown","incYear()");
title_box4 = document.getElementById('changeYearBox');
title_box4.setAttribute("style","border-style:solid;border-width:1px;border-color:#3366FF;cursor:pointer");
title_box4.setAttribute("onmouseover","document.getElementById('changeYearBox').setAttribute(\"style\",\"border-style:solid;border-width:1px;border-color:#88AAFF;cursor:pointer\")");
title_box4.setAttribute("onmouseout","document.getElementById('changeYearBox').setAttribute(\"style\",\"border-style:solid;border-width:1px;border-color:#3366FF;cursor:pointer\")");
title_label2 = document.getElementById('spanYear');
title_label2.setAttribute("value","annee");
bPageLoaded=true
monthSelected=monthNow;
yearSelected=yearNow;
constructCalendar();
}
function padZero(num)
{
return (num < 10) ? '0' + num : num ;
}
function constructDate(d,m,y)
{
sTmp = dateFormat
sTmp = sTmp.replace ("dd","<e>")
sTmp = sTmp.replace ("d","<d>")
sTmp = sTmp.replace ("<e>",padZero(d))
sTmp = sTmp.replace ("<d>",d)
sTmp = sTmp.replace ("mmm","<o>")
sTmp = sTmp.replace ("mm","<n>")
sTmp = sTmp.replace ("m","<m>")
sTmp = sTmp.replace ("<m>",m+1)
sTmp = sTmp.replace ("<n>",padZero(m+1))
sTmp = sTmp.replace ("<o>",monthName[m])
return sTmp.replace ("yyyy",y)
}
function StartDecMonth()
{
intervalID1=setInterval("decMonth()",80)
}
function StartIncMonth()
{
intervalID1=setInterval("incMonth()",80)
}
function incMonth ()
{
monthSelected++
if (monthSelected>11)
{
monthSelected=0
yearSelected++
}
constructCalendar()
}
function decMonth ()
{
monthSelected--
if (monthSelected<0)
{
monthSelected=11
yearSelected--
}
constructCalendar()
}
function incYear()
{
title_label2 = document.getElementById('spanYear');
yearSelected++
title_label2.setAttribute("value",yearSelected);
constructCalendar();
}
function decYear()
{
title_label2 = document.getElementById('spanYear');
yearSelected--;
title_label2.setAttribute("value",yearSelected);
constructCalendar();
}
function WeekNbr(today)
{
Year = takeYear(today);
Month = today.getMonth();
Day = today.getDate();
now = Date.UTC(Year,Month,Day+1,0,0,0);
var Firstday = new Date();
Firstday.setYear(Year);
Firstday.setMonth(0);
Firstday.setDate(1);
then = Date.UTC(Year,0,1,0,0,0);
var Compensation = Firstday.getDay();
if (Compensation > 3)
Compensation -= 4;
else
Compensation += 3;
NumberOfWeek = Math.round((((now-then)/86400000)+Compensation)/7);
return NumberOfWeek;
}
function takeYear(theDate)
{
x = theDate.getYear();
var y = x % 100;
y += (y < 38) ? 2000 : 1900;
return y;
}
function constructCalendar ()
{
var aNumDays = Array (31,0,31,30,31,30,31,31,30,31,30,31)
var dateMessage
var startDate = new Date (yearSelected,monthSelected,1)
var endDate
if (monthSelected==1) // si mois de fevrier --> calcul le nombre de jours
{
endDate = new Date (yearSelected,monthSelected+1,1);
endDate = new Date (endDate - (24*60*60*1000));
numDaysInMonth = endDate.getDate()
}
else
{
numDaysInMonth = aNumDays[monthSelected];
}
datePointer = 0
dayPointer = startDate.getDay()-1; // - startAt
if (dayPointer<0)
{
dayPointer = 6
}
// construction de la grille des jours du mois en cours
var curColGrid=1;
var curRowGrid=1;
for ( var i=1; i<=dayPointer;i++ )
{
var content_rows = document.getElementById("d_l"+curRowGrid+"c"+curColGrid++);
content_rows.setAttribute("value"," ");
content_rows.setAttribute("style","background-color:#FFFFFF;");
content_rows.setAttribute("onmouseover","");
content_rows.setAttribute("onmouseout","");
}
for ( datePointer=1; datePointer<=numDaysInMonth; datePointer++ )
{
dayPointer++;
var content_rows = document.getElementById("d_l"+curRowGrid+"c"+curColGrid);
content_rows.setAttribute("value",datePointer);
content_rows.setAttribute("onmousedown",
"hidePopup();recordValue(\""+padZero(datePointer)+"/"+padZero(monthSelected+1)+"/"+yearSelected+"\")");
content_rows.setAttribute("onmouseover","document.getElementById(\"d_l"+curRowGrid+"c"+curColGrid+"\").setAttribute(\"style\",\"background-color:#88AAFF;cursor:pointer\")");
if ((datePointer==dateNow)&&(monthSelected==monthNow)&&(yearSelected==yearNow))
dstyle = "color:#ff0000";
else if (dayPointer % 7 == 0)
dstyle = "color:#909090";
else
dstyle = "color:#000000";
content_rows.setAttribute("style",dstyle);
content_rows.setAttribute("onmouseout","document.getElementById(\"d_l"+curRowGrid+"c"+curColGrid+"\").setAttribute(\"style\",\""+dstyle+";cursor:pointer\")");
curColGrid++;
if(curColGrid > 7)
{
curColGrid = 1;
curRowGrid++;
}
}
do {
while(curColGrid < 8)
{
var content_rows = document.getElementById("d_l"+curRowGrid+"c"+curColGrid++);
content_rows.setAttribute("value"," ");
content_rows.setAttribute("style","background-color:#FFFFFF;");
content_rows.setAttribute("onmouseover","");
content_rows.setAttribute("onmouseout","");
}
if(curColGrid > 7)
{
curColGrid = 1;
curRowGrid++;
}
}
while(curRowGrid < 7);
document.getElementById("spanMonth").setAttribute("value", monthName[monthSelected]);
document.getElementById("spanYear").setAttribute("value", yearSelected);
}
sur le meme repertoire, creer un fichier datepicker.xul :
<?xml version="1.0"?>
<!DOCTYPE overlay>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<overlay
id="calendar"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script type="application/x-javascript" src="datePicker.js"/>
<popup id="calendar" onpopupshown="initCalendar()">
<window xmlns:html="http://www.w3.org/1999/xhtml"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
style="border: thin solid black;">
<vbox style='font-family:arial;font-size:11px;border-width:1;border-style:solid;border-color:#a0a0a0;'>
<hbox style='padding:2px;font-family:arial;font-size:11px;background-color:#0000aa;color:#ffffff'>
<hbox id='caption'>
<hbox id="changeMonthBox">
<image id="changeMonthLeft" />
<label id="spanMonth" />
<image id="changeMonthRight" />
</hbox>
<hbox id="changeYearBox">
<image id="changeYearLeft" />
<label id="spanYear" />
<image id="changeYearRight" />
</hbox>
<hbox/>
<image src='datepicker/close.gif' style="cursor:pointer" onmousedown='hidePopup()' border='0' />
</hbox>
</hbox>
<grid style='padding:5px;background-color:#ffffff'>
<columns>
<column maxwidth="54"/>
<column maxwidth="54"/>
<column maxwidth="54"/>
<column maxwidth="54"/>
<column maxwidth="54"/>
<column maxwidth="54"/>
<column maxwidth="54"/>
</columns>
<rows id='content' style='font-family:arial;font-size:11px;'>
<row style='background-color:#7070aa;color:#ffffff'>
<label value="Lun"/>
<label value="Mar"/>
<label value="Mer"/>
<label value="Jeu"/>
<label value="Ven"/>
<label value="Sam"/>
<label value="Dim"/>
</row>
<row>
<label value=' ' id='d_l1c1' />
<label value=' ' id='d_l1c2' />
<label value=' ' id='d_l1c3' />
<label value=' ' id='d_l1c4' />
<label value=' ' id='d_l1c5' />
<label value=' ' id='d_l1c6' />
<label value=' ' id='d_l1c7' />
</row>
<row>
<label value=' ' id='d_l2c1' />
<label value=' ' id='d_l2c2' />
<label value=' ' id='d_l2c3' />
<label value=' ' id='d_l2c4' />
<label value=' ' id='d_l2c5' />
<label value=' ' id='d_l2c6' />
<label value=' ' id='d_l2c7' />
</row>
<row>
<label value=' ' id='d_l3c1' />
<label value=' ' id='d_l3c2' />
<label value=' ' id='d_l3c3' />
<label value=' ' id='d_l3c4' />
<label value=' ' id='d_l3c5' />
<label value=' ' id='d_l3c6' />
<label value=' ' id='d_l3c7' />
</row>
<row>
<label value=' ' id='d_l4c1' />
<label value=' ' id='d_l4c2' />
<label value=' ' id='d_l4c3' />
<label value=' ' id='d_l4c4' />
<label value=' ' id='d_l4c5' />
<label value=' ' id='d_l4c6' />
<label value=' ' id='d_l4c7' />
</row>
<row>
<label value=' ' id='d_l5c1' />
<label value=' ' id='d_l5c2' />
<label value=' ' id='d_l5c3' />
<label value=' ' id='d_l5c4' />
<label value=' ' id='d_l5c5' />
<label value=' ' id='d_l5c6' />
<label value=' ' id='d_l5c7' />
</row>
<row>
<label value=' ' id='d_l6c1' />
<label value=' ' id='d_l6c2' />
<label value=' ' id='d_l6c3' />
<label value=' ' id='d_l6c4' />
<label value=' ' id='d_l6c5' />
<label value=' ' id='d_l6c6' />
<label value=' ' id='d_l6c7' />
</row>
</rows>
</grid>
<hbox style='padding:5px;font-size:11px;background-color:#f0f0f0'>
<label id='lblToday' value="today"/>
</hbox>
</vbox>
</window>
</popup>
</overlay>
Je vous laisse le soins de créer les .gif necessaires ...
@++
Il n'est plus possible de poster des messages dans ce forum.
Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.
Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™
sont des marques de la fondation Mozilla.