diff --git a/ChangeLog b/ChangeLog index 286d2b6e8..582a816ef 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-03-24 Wolfgang Sourdeau + + * UI/Scheduler/UIxCalMainView.m: if the module settings key + exists, do not reset it. + 2009-03-24 Ludovic Marcotte * UI/MailerUI/UIxMailListView.m diff --git a/SoObjects/SOGo/SOGoObject.m b/SoObjects/SOGo/SOGoObject.m index 2858b14d3..44b613c87 100644 --- a/SoObjects/SOGo/SOGoObject.m +++ b/SoObjects/SOGo/SOGoObject.m @@ -561,8 +561,8 @@ SEL SOGoSelectorForPropertySetter (NSString *property) [self _davPrivilegesFromRoles: roles]); [currentAce addObject: currentGrant]; [aces addObject: davElementWithContent (@"ace", @"DAV:", currentAce)]; - [currentAce release]; } + [currentAce release]; } - (void) _fillAcesWithRolesForPseudoPrincipals: (NSMutableArray *) aces diff --git a/UI/MainUI/Version b/UI/MainUI/Version index 051efa3c5..5768c75df 100644 --- a/UI/MainUI/Version +++ b/UI/MainUI/Version @@ -1,5 +1,5 @@ # Version file -SUBMINOR_VERSION:=0 +SUBMINOR_VERSION:=1 # v0.9.1 requires Main v0.9.59 diff --git a/UI/Scheduler/UIxCalMainView.m b/UI/Scheduler/UIxCalMainView.m index 86cd931ce..f1c56ee87 100644 --- a/UI/Scheduler/UIxCalMainView.m +++ b/UI/Scheduler/UIxCalMainView.m @@ -40,9 +40,6 @@ #import -static NSMutableArray *monthMenuItems = nil; -static NSMutableArray *yearMenuItems = nil; - @implementation UIxCalMainView - (void) _setupContext @@ -60,24 +57,22 @@ static NSMutableArray *yearMenuItems = nil; moduleSettings = [ud objectForKey: module]; if (!moduleSettings) { - moduleSettings = [NSMutableDictionary new]; - [moduleSettings autorelease]; + moduleSettings = [NSMutableDictionary dictionary]; + [ud setObject: moduleSettings forKey: module]; } - [ud setObject: moduleSettings forKey: module]; } - (NSArray *) monthMenuItems { + static NSMutableArray *monthMenuItems = nil; unsigned int count; if (!monthMenuItems) { - monthMenuItems = [NSMutableArray arrayWithCapacity: 12]; - + monthMenuItems = [[NSMutableArray alloc] initWithCapacity: 12]; for (count = 1; count < 13; count++) [monthMenuItems addObject: [NSString stringWithFormat: @"%.2d", count]]; - [monthMenuItems retain]; } return monthMenuItems; @@ -100,15 +95,15 @@ static NSMutableArray *yearMenuItems = nil; - (NSArray *) yearMenuItems { + static NSMutableArray *yearMenuItems = nil; int count, year; if (!yearMenuItems) { year = [[NSCalendarDate date] yearOfCommonEra]; - yearMenuItems = [NSMutableArray arrayWithCapacity: 11]; + yearMenuItems = [[NSMutableArray alloc] initWithCapacity: 11]; for (count = -5; count < 6; count++) [yearMenuItems addObject: [NSNumber numberWithInt: year + count]]; - [yearMenuItems retain]; } return yearMenuItems; diff --git a/UI/Scheduler/UIxComponentEditor.m b/UI/Scheduler/UIxComponentEditor.m index ea2cb6077..f8d22a9e3 100644 --- a/UI/Scheduler/UIxComponentEditor.m +++ b/UI/Scheduler/UIxComponentEditor.m @@ -94,15 +94,16 @@ iRANGE(2); - (id) init { + UIxDatePicker *datePicker; + if ((self = [super init])) { - UIxDatePicker *datePicker; - // We must instanciate a UIxDatePicker object to retrieve // the proper date format to use. datePicker = [[UIxDatePicker alloc] initWithContext: context]; dateFormat = [datePicker dateFormat]; - + [datePicker release]; + component = nil; componentCalendar = nil; [self setPrivacy: @"PUBLIC"]; @@ -127,8 +128,6 @@ iRANGE(2); repeat7 = nil; range1 = nil; range2 = nil; - - [datePicker release]; } return self; @@ -167,7 +166,7 @@ iRANGE(2); [repeat7 release]; [range1 release]; [range2 release]; - + [component release]; [componentCalendar release]; @@ -195,7 +194,7 @@ iRANGE(2); [names appendFormat: @"%@,", [currentAttendee cn]]; else [names appendFormat: @"%@,", [currentAttendee rfc822Email]]; - + [emails appendFormat: @"%@,", [currentAttendee rfc822Email]]; uid = [um getUIDForEmail: [currentAttendee rfc822Email]]; if (uid != nil) @@ -363,7 +362,12 @@ iRANGE(2); [self setRange1: @"0"]; } else - DESTROY(repeat); + { + DESTROY(repeat); + repeatType = @"0"; + repeat1 = @"0"; + repeat2 = @"1"; + } } /* warning: we use this method which will be triggered by the template system diff --git a/UI/Scheduler/UIxRecurrenceEditor.m b/UI/Scheduler/UIxRecurrenceEditor.m index 6fc576fe5..cdc4ba4e1 100644 --- a/UI/Scheduler/UIxRecurrenceEditor.m +++ b/UI/Scheduler/UIxRecurrenceEditor.m @@ -29,13 +29,6 @@ @implementation UIxRecurrenceEditor -- (id) defaultAction -{ - [[self parent] setToolbar: @""]; - - return self; -} - - (NSArray *) monthlyRepeatList { static NSArray *monthlyRepeatList = nil; @@ -43,7 +36,7 @@ if (!monthlyRepeatList) { monthlyRepeatList = [NSArray arrayWithObjects: @"First", @"Second", @"Third", - @"Fourth", @"Fift", @"Last", nil]; + @"Fourth", @"Fift", @"Last", nil]; [monthlyRepeatList retain]; } diff --git a/UI/WebServerResources/UIxRecurrenceEditor.js b/UI/WebServerResources/UIxRecurrenceEditor.js index a30ef240a..71832056a 100644 --- a/UI/WebServerResources/UIxRecurrenceEditor.js +++ b/UI/WebServerResources/UIxRecurrenceEditor.js @@ -86,10 +86,20 @@ function initializeFormValues() { $("repeatType").value = repeatType; // Default values + var startTimeDate = parent$("startTime_date").value.asDate(); + $('yearlyDayField').value = startTimeDate.getDate(); + $('yearlyMonth1').value = startTimeDate.getMonth(); + $("weekDay"+startTimeDate.getDay()).addClassName("_selected"); + $("monthDay"+startTimeDate.getDate()).addClassName("_selected"); + $('recurrence_form').setRadioValue('dailyRadioButtonName', 0); - $('recurrence_form').setRadioValue('monthlyRadioButtonName', 0); + $('recurrence_form').setRadioValue('monthlyRadioButtonName', 1); $('recurrence_form').setRadioValue('yearlyRadioButtonName', 0); $('endDate_date').disabled = true; + $('dailyDaysField').value = "1"; + $('weeklyWeeksField').value = "1"; + $('monthlyMonthsField').value = "1"; + $('yearlyYearsField').value = "1"; if (repeatType == 0) { // Repeat daily @@ -101,6 +111,9 @@ function initializeFormValues() { $('weeklyWeeksField').value = parent$("repeat1").value; // log ("div: " + weekDiv); // log ("days: " + parent$("repeat2").value); + for (var i = 0; i < 7; i++) { + $("weekDay" + i).removeClassName("_selected"); + } var days = "" + parent$("repeat2").value; if (days.length > 0) { var daysArray = days.split(","); @@ -116,6 +129,10 @@ function initializeFormValues() { $('monthlyRepeat').value = parent$("repeat3").value; $('monthlyDay').value = parent$("repeat4").value; var days = "" + parent$("repeat5").value; + for (var i = 0; i < 31; i++) { + $("monthDay" + (i + 1)).removeClassName("_selected"); + } + if (days.length > 0) { var daysArray = days.split(","); daysArray.each(function(index) { @@ -253,37 +270,65 @@ function handleMonthlyRecurrence() { return validate; } +function validateYearlyRecurrence() { + var errors = ["Please specify a numerical value in the Year(s)" + + " field greater or equal to 1.", + "Please specify a numerical value in the month day" + + " field greater or equal to 1."]; + + var errorToShow = 0; + var fieldValue = "" + $('yearlyYearsField').value; + if (fieldValue.length > 0) { + // We check if the yearlyYearsField really contains an integer + var v = parseInt(fieldValue); + if (!isNaN(v) && v > 0) { + errorToShow = 1; + fieldValue = "" + $('yearlyDayField').value; + if (fieldValue.length > 0) { + // We check if the yearlyYearsField really contains an integer + var v = parseInt(fieldValue); + if (!isNaN(v) && v > 0) { + errorToShow = -1; + } + } + } + } + + if (errorToShow > -1) + window.alert(errors[errorToShow]); + + return (errorToShow == -1); +} + function handleYearlyRecurrence() { var validate = false; var radioValue = $('recurrence_form').getRadioValue('yearlyRadioButtonName'); - // FIXME - right now we do not support rules // such as Every Second Tuesday of February if (radioValue == 1) window.alert("This type of recurrence is currently unsupported."); else { - var showError = true; - - var fieldValue = "" + $('yearlyYearsField').value; - if (fieldValue.length > 0) { - // We check if the yearlyYearsField really contains an integer - var v = parseInt(fieldValue); - if (!isNaN(v) && v > 0) { - validate = true; - showError = false; - parent$("repeat1").value = fieldValue; - parent$("repeat2").value = radioValue; - parent$("repeat3").value = $('yearlyDayField').value; - parent$("repeat4").value = $('yearlyMonth1').value; - parent$("repeat5").value = $('yearlyRepeat').value; - parent$("repeat6").value = $('yearlyDay').value; - parent$("repeat7").value = $('yearlyMonth2').value; - } - } - - if (showError) - window.alert("Please specify a numerical value in the Year(s) field greater or equal to 1."); + if (validateYearlyRecurrence()) { + var fieldValue = "" + $('yearlyYearsField').value; + if (fieldValue.length > 0) { + // We check if the yearlyYearsField really contains an integer + var v = parseInt(fieldValue); + if (!isNaN(v) && v > 0) { + validate = true; + showError = false; + parent$("repeat1").value = fieldValue; + parent$("repeat2").value = radioValue; + parent$("repeat3").value = $('yearlyDayField').value; + parent$("repeat4").value = $('yearlyMonth1').value; + parent$("repeat5").value = $('yearlyRepeat').value; + parent$("repeat6").value = $('yearlyDay').value; + parent$("repeat7").value = $('yearlyMonth2').value; + } + } + } + else + validate = false; } return validate;