Adding in repeat number of times, bug 167553.

This commit is contained in:
mikep%oeone.com 2003-01-03 14:37:33 +00:00
parent ef7dc45a07
commit ab4340e12a
5 changed files with 139 additions and 47 deletions

View File

@ -241,7 +241,10 @@ function loadCalendarEventDialog()
setFieldValue( "repeat-forever-radio", (gEvent.recurForever != undefined && gEvent.recurForever != false), "selected" );
setFieldValue( "repeat-until-radio", (gEvent.recurForever == undefined || gEvent.recurForever == false), "selected" );
setFieldValue( "repeat-until-radio", ( (gEvent.recurForever == undefined || gEvent.recurForever == false ) && gEvent.recurCount == 0), "selected" );
setFieldValue( "repeat-numberoftimes-radio", (gEvent.recurCount != 0), "selected" );
setFieldValue( "repeat-numberoftimes-textbox", gEvent.recurCount );
/* Categories stuff */
@ -396,7 +399,8 @@ function onOKCommand()
gEvent.recur = getFieldValue( "repeat-checkbox", "checked" );
gEvent.recurUnits = getFieldValue( "repeat-length-units", "value" );
gEvent.recurForever = getFieldValue( "repeat-forever-radio", "selected" );
gEvent.recurInterval = getFieldValue( "repeat-length-field" );
gEvent.recurInterval = getFieldValue( "repeat-length-field" );
gEvent.recurCount = getFieldValue( "repeat-numberoftimes-textbox" );
if( gEvent.recurInterval == 0 )
gEvent.recur = false;
@ -472,17 +476,23 @@ function onOKCommand()
// Attach any specified contacts to the event
if( gEventCardArray )
{
// Remove any existing contacts
gEvent.removeContacts();
// Add specified contacts
for( var cardId in gEventCardArray )
{
if( gEventCardArray[ cardId ] )
try{
// Remove any existing contacts
gEvent.removeContacts();
// Add specified contacts
for( var cardId in gEventCardArray )
{
gEvent.addContact( gEventCardArray[ cardId ] );
if( gEventCardArray[ cardId ] )
{
gEvent.addContact( gEventCardArray[ cardId ] );
}
}
}
catch( e )
{
}
}
var Server = getFieldValue( "server-field" );
@ -505,53 +515,116 @@ function checkEndTime()
if( endDate.getTime() < startDate.getTime() && !AllDayEvent )
{
document.getElementById( "end-time-warning" ).removeAttribute( "collapsed" );
return( false );
return( true );
}
else
{
document.getElementById( "end-time-warning" ).setAttribute( "collapsed", "true" );
return( true );
return( false );
}
}
/*
* Check that the end date is after the start date, if they are the same day
* then the checkEndTime function should catch the problem (if there is one).
*/
function checkRecurTime()
function checkEndDate()
{
// Bad to get into floats.
var startDate = Math.floor(document.getElementById( "start-date-picker" ).value.getTime()/86400000);
var endDate = Math.floor(document.getElementById( "end-date-picker" ).value.getTime()/86400000);
if ( endDate < startDate)
return -1;
else if (endDate > startDate)
return 1;
else
return 0;
}
function checkSetTimeDate()
{
var CheckEndDate = checkEndDate();
var CheckEndTime = checkEndTime();
if ( CheckEndDate < 0 )
{
// end before start
setDateError(true);
setTimeError(false);
return false;
}
else if ( CheckEndDate == 0 )
{
setDateError(false);
// start & end same
setTimeError(CheckEndTime);
return !CheckEndTime;
}
else
{
setDateError(false);
setTimeError(false);
return true;
}
}
/*
* Check that the recurrence end date is after the end date of the event.
* Unlike the time/date versions this one sets the error message too as is
* doesn't depend on the outcome of any of the other tests
*/
function checkSetRecurTime()
{
var recurEndDate = document.getElementById( "repeat-end-date-picker" ).value;
var endDate = document.getElementById( "end-date-picker" ).value;
var recurForever = getFieldValue( "repeat-forever-radio", "selected" );
if( recurEndDate.getTime() < endDate.getTime() && recurForever == false )
{
document.getElementById( "repeat-time-warning" ).removeAttribute( "collapsed" );
return( false );
}
else
{
document.getElementById( "repeat-time-warning" ).setAttribute( "collapsed", "true" );
return( true );
}
var recur = getFieldValue( "repeat-checkbox", "checked" );
dump(recurForever+ " and "+ recur+ "\n");
var state = (recurEndDate.getTime() < endDate.getTime() && !recurForever && recur) ;
setRecurError(state);
return(!state );
}
function setRecurError(state)
{
document.getElementById("repeat-time-warning" ).setAttribute( "collapsed", !state);
}
function setDateError(state)
{
document.getElementById( "end-date-warning" ).setAttribute( "collapsed", !state );
}
function setTimeError(state)
{
document.getElementById( "end-time-warning" ).setAttribute( "collapsed", !state );
}
function setOkButton(state)
{
if (state == false)
document.getElementById( "calendar-new-eventwindow" ).getButton( "accept" ).setAttribute( "disabled", true );
else
document.getElementById( "calendar-new-eventwindow" ).getButton( "accept" ).removeAttribute( "disabled" );
}
function updateOKButton()
{
var CheckEndTime = checkEndTime();
var CheckRecurTime = checkRecurTime();
if( ( CheckEndTime && CheckRecurTime ) === false )
document.getElementById( "calendar-new-eventwindow" ).getButton( "accept" ).setAttribute( "disabled", true );
else
document.getElementById( "calendar-new-eventwindow" ).getButton( "accept" ).removeAttribute( "disabled" );
var checkRecur = checkSetRecurTime();
var checkTimeDate = checkSetTimeDate();
setOkButton(checkRecur && checkTimeDate);
this.sizeToContent();
}
/**
* Called when a datepicker is finished, and a date was picked.
*/
@ -659,9 +732,14 @@ function updateEndDate( datepicker )
document.getElementById( "end-date-picker" ).value = newEndDate;
}
/*
* Called when the end date box has finished being editied
*/
function updateDateDifference( datepicker )
{
gDateDifference = ( datepicker.value.getTime() - document.getElementById( "start-date-picker" ).value.getTime() );
updateOKButton();
}
/**

View File

@ -175,12 +175,18 @@
</hbox>
</row>
<!-- All Day -->
<!-- End Time Warning -->
<row align="center">
<spacer />
<label id="end-time-warning" class="warning-text-class" value="&newevent.endtime.warning;" collapsed="true"/>
</row>
<!-- End Date Warning -->
<row align="center">
<spacer />
<label id="end-date-warning" class="warning-text-class" value="&newevent.enddate.warning;" collapsed="true"/>
</row>
<!-- All Day -->
<row align="center">
@ -291,7 +297,7 @@
<!-- Repeat -->
<vbox>
<hbox id="repeat-box" align="center">
<checkbox id="repeat-checkbox" class="proper-align" label="&newevent.repeat.label;" checked="false" oncommand="commandRepeat()"/>
<checkbox id="repeat-checkbox" class="proper-align" label="&newevent.repeat.label;" checked="false" oncommand="commandRepeat();commandUntil()"/>
<textbox id="repeat-length-field" class="cursor-pointer" disable-controller="repeat" value="1" oninput="repeatLengthKeyDown( this )"/>
<menulist crop="none" oncommand="repeatUnitCommand( this )" labelnumber="labelplural" id="repeat-length-units" disable-controller="repeat">
@ -330,17 +336,21 @@
<spacer class="repeat-left-spacer" />
<radiogroup id="repeat-until-group" disable-controller="repeat">
<radio id="repeat-forever-radio" disable-controller="repeat" label="&newevent.forever.label;" oncommand="commandUntil()"/>
<hbox id="repeat-end-box" align="center">
<vbox>
<vbox id="repeat-end-box" align="center">
<hbox>
<radio id="repeat-numberoftimes-radio" disable-controller="repeat" label="&newevent.numberoftimes.label;" oncommand=""/>
<textbox id="repeat-numberoftimes-textbox" disable-controller="repeat"/>
</hbox>
</vbox>
<vbox id="repeat-end-box" align="center">
<hbox>
<radio id="repeat-until-radio" disable-controller="repeat" label="&newevent.until.label;" oncommand="commandUntil()"/>
<spacer id="until-spacer"/>
<datepicker id="repeat-end-date-picker" value=""/>
<datepicker id="repeat-end-date-picker" value="" ondatepick="commandUntil()"/>
</hbox>
<label id="repeat-time-warning" class="warning-text-class" value="&newevent.recurend.warning;" collapsed="true"/>
</vbox>
</hbox>
</radiogroup>
</vbox>
</radiogroup>
</hbox>
<hbox align="center">

View File

@ -82,11 +82,13 @@
<!ENTITY newevent.repeat.label "Repeat every" >
<!ENTITY newevent.until.label "Until" >
<!ENTITY newevent.forever.label "Forever" >
<!ENTITY newevent.numberoftimes.label "Number of times" >
<!ENTITY newevent.category.label "Category" >
<!ENTITY newevent.exceptions.caption "Exceptions">
<!ENTITY newevent.addexceptions.label "Add Exception">
<!ENTITY newevent.deleteexceptions.label "Delete Exception">
<!ENTITY newevent.endtime.warning "Your start time is after your end time.">
<!ENTITY newevent.enddate.warning "Your start date is after your end date.">
<!ENTITY newevent.repeatdate.tooltip "Choose a date to end on" >
<!ENTITY newevent.recurend.warning "Your repeat time ends before your end time.">
<!ENTITY newevent.endtime.tooltip "Choose an end time for this event" >

View File

@ -119,7 +119,8 @@
min-width : 54px;
}
#repeat-length-field
#repeat-length-field,
#repeat-numberoftimes-textbox
{
max-width : 3em;
}

View File

@ -119,7 +119,8 @@
min-width : 54px;
}
#repeat-length-field
#repeat-length-field,
#repeat-numberoftimes-textbox
{
max-width : 3em;
}