propagate from branch 'ca.inverse.sogo.1_3_16' (head d29498142c4a9f1d780373bd5f0d80b17f6e2c33)
to branch 'ca.inverse.sogo' (head 7ce650138898448e808ecf1785eedab0ad0d3e6d) Monotone-Parent: 7ce650138898448e808ecf1785eedab0ad0d3e6d Monotone-Parent: d29498142c4a9f1d780373bd5f0d80b17f6e2c33 Monotone-Revision: 41c57dcc45ba83665003200a0ea8b1cc14d09eec Monotone-Author: ludovic@Sophos.ca Monotone-Date: 2012-05-30T12:46:26 Monotone-Branch: ca.inverse.sogo
This commit is contained in:
commit
f0d028a858
26
ChangeLog
26
ChangeLog
|
@ -1,3 +1,29 @@
|
||||||
|
2012-05-29 Francis Lachapelle <flachapelle@inverse.ca>
|
||||||
|
|
||||||
|
* UI/WebServerResources/UIxMailEditor.js (validateEditorInput):
|
||||||
|
merged with onValidate.
|
||||||
|
(onValidate): don't force the subject to be defined, but alert
|
||||||
|
the user.
|
||||||
|
|
||||||
|
* UI/MailerUI/UIxMailView.m (-messageSubject): don't set the
|
||||||
|
subject to "Untitled" if it's not set.
|
||||||
|
|
||||||
|
* UI/MailPartViewers/UIxMailPartMessageViewer.m (-messageSubject): idem.
|
||||||
|
|
||||||
|
* UI/MailerUI/UIxMailEditor.m (-validateForSend): don't force the
|
||||||
|
subject to be defined.
|
||||||
|
|
||||||
|
* SoObjects/Mailer/SOGoMailObject+Draft.m (-subjectForReply): make
|
||||||
|
sure subject is a defined value to avoid "null" strings in the
|
||||||
|
reply message.
|
||||||
|
|
||||||
|
2012-05-28 Francis Lachapelle <flachapelle@inverse.ca>
|
||||||
|
|
||||||
|
* UI/WebServerResources/SchedulerUI.js (validateUploadForm): hide
|
||||||
|
Cancel button when the form is valid and disable the Submit button.
|
||||||
|
|
||||||
|
* UI/WebServerResources/ContactsUI.js (validateUploadForm): idem.
|
||||||
|
|
||||||
2012-05-24 Jean Raby <jraby@inverse.ca>
|
2012-05-24 Jean Raby <jraby@inverse.ca>
|
||||||
|
|
||||||
* debian*/rules: Restart sogod after pkg upgrade (dh_installinit -R)
|
* debian*/rules: Restart sogod after pkg upgrade (dh_installinit -R)
|
||||||
|
|
|
@ -354,7 +354,7 @@ static NGCardsSaxHandler *sax = nil;
|
||||||
|
|
||||||
- (void) setChildrenAsCopy: (NSMutableArray *) someChildren
|
- (void) setChildrenAsCopy: (NSMutableArray *) someChildren
|
||||||
{
|
{
|
||||||
unsigned int count, max;
|
NSUInteger count, max;
|
||||||
|
|
||||||
ASSIGN (children, someChildren);
|
ASSIGN (children, someChildren);
|
||||||
|
|
||||||
|
@ -399,7 +399,7 @@ static NGCardsSaxHandler *sax = nil;
|
||||||
- (NSString *) description
|
- (NSString *) description
|
||||||
{
|
{
|
||||||
NSMutableString *str;
|
NSMutableString *str;
|
||||||
unsigned int count, max;
|
NSUInteger count, max;
|
||||||
|
|
||||||
str = [NSMutableString stringWithCapacity:64];
|
str = [NSMutableString stringWithCapacity:64];
|
||||||
[str appendFormat:@"<%p[%@]:%@",
|
[str appendFormat:@"<%p[%@]:%@",
|
||||||
|
@ -421,7 +421,7 @@ static NGCardsSaxHandler *sax = nil;
|
||||||
- (void) replaceThisElement: (CardElement *) oldElement
|
- (void) replaceThisElement: (CardElement *) oldElement
|
||||||
withThisOne: (CardElement *) newElement
|
withThisOne: (CardElement *) newElement
|
||||||
{
|
{
|
||||||
unsigned int index;
|
NSUInteger index;
|
||||||
|
|
||||||
index = [children indexOfObject: oldElement];
|
index = [children indexOfObject: oldElement];
|
||||||
if (index != NSNotFound)
|
if (index != NSNotFound)
|
||||||
|
|
|
@ -1,3 +1,17 @@
|
||||||
|
2012-05-30 Francis Lachapelle <flachapelle@inverse.ca>
|
||||||
|
|
||||||
|
* iCalRepeatableEntityObject.m (-exceptionDatesWithTimeZone:)
|
||||||
|
(-rules:withTimeZone:): exception dates and exception rules must
|
||||||
|
also be adjusted for floating all-day repeating events.
|
||||||
|
|
||||||
|
2012-05-29 Francis Lachapelle <flachapelle@inverse.ca>
|
||||||
|
|
||||||
|
* iCalRecurrenceCalculator.m
|
||||||
|
(_removeExceptionDatesFromRanges:withDates:withinRange:startingWithDate:):
|
||||||
|
when removing exception dates, avoid removing dates matching the
|
||||||
|
end date of the occurrence. This fixes an issue with all-day
|
||||||
|
daily events.
|
||||||
|
|
||||||
2012-04-23 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
2012-04-23 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
||||||
|
|
||||||
* iCalMonthlyRecurrenceCalculator.m (NGMonthDaySet_clear): make
|
* iCalMonthlyRecurrenceCalculator.m (NGMonthDaySet_clear): make
|
||||||
|
|
|
@ -189,6 +189,7 @@ static Class yearlyCalcClass = Nil;
|
||||||
NSCalendarDate *currentDate;
|
NSCalendarDate *currentDate;
|
||||||
NGCalendarDateRange *currentRange;
|
NGCalendarDateRange *currentRange;
|
||||||
unsigned int count, maxRanges;
|
unsigned int count, maxRanges;
|
||||||
|
NSComparisonResult compare;
|
||||||
|
|
||||||
dates = [[self _dates: exdates withinRange: limits] objectEnumerator];
|
dates = [[self _dates: exdates withinRange: limits] objectEnumerator];
|
||||||
while ((currentDate = [dates nextObject]))
|
while ((currentDate = [dates nextObject]))
|
||||||
|
@ -197,8 +198,12 @@ static Class yearlyCalcClass = Nil;
|
||||||
for (count = maxRanges; count > 0; count--)
|
for (count = maxRanges; count > 0; count--)
|
||||||
{
|
{
|
||||||
currentRange = [ranges objectAtIndex: count - 1];
|
currentRange = [ranges objectAtIndex: count - 1];
|
||||||
if ([currentRange containsDate: currentDate])
|
compare = [[currentRange startDate] compare: currentDate];
|
||||||
[ranges removeObjectAtIndex: count - 1];
|
if ((compare == NSOrderedAscending || compare == NSOrderedSame) &&
|
||||||
|
[[currentRange endDate] compare: currentDate] == NSOrderedDescending)
|
||||||
|
{
|
||||||
|
[ranges removeObjectAtIndex: count - 1];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,21 +42,21 @@
|
||||||
- (void)setRecurrenceRules:(NSArray *)_rrule;
|
- (void)setRecurrenceRules:(NSArray *)_rrule;
|
||||||
- (BOOL)hasRecurrenceRules;
|
- (BOOL)hasRecurrenceRules;
|
||||||
- (NSArray *)recurrenceRules;
|
- (NSArray *)recurrenceRules;
|
||||||
- (NSArray *)recurrenceRulesWithTimeZone: (iCalTimeZone *) timezone;
|
- (NSArray *)recurrenceRulesWithTimeZone: (id) timezone;
|
||||||
|
|
||||||
- (void)removeAllExceptionRules;
|
- (void)removeAllExceptionRules;
|
||||||
- (void)addToExceptionRules:(id)_rrule;
|
- (void)addToExceptionRules:(id)_rrule;
|
||||||
- (BOOL)hasExceptionRules;
|
- (BOOL)hasExceptionRules;
|
||||||
- (NSArray *)exceptionRules;
|
- (NSArray *)exceptionRules;
|
||||||
- (NSArray *)exceptionRulesWithTimeZone: (iCalTimeZone *) timezone;
|
- (NSArray *)exceptionRulesWithTimeZone: (id) timezone;
|
||||||
|
|
||||||
- (void)removeAllExceptionDates;
|
- (void)removeAllExceptionDates;
|
||||||
- (void)addToExceptionDates:(NSCalendarDate *)_date;
|
- (void)addToExceptionDates:(NSCalendarDate *)_date;
|
||||||
- (BOOL)hasExceptionDates;
|
- (BOOL)hasExceptionDates;
|
||||||
- (NSArray *)exceptionDates;
|
- (NSArray *)exceptionDates;
|
||||||
- (NSArray *)exceptionDatesWithTimeZone: (iCalTimeZone*) theTimeZone;
|
- (NSArray *)exceptionDatesWithTimeZone: (id) theTimeZone;
|
||||||
|
|
||||||
- (NSArray *) rules: (NSArray *) theRules withTimeZone: (iCalTimeZone *) theTimeZone;
|
- (NSArray *) rules: (NSArray *) theRules withTimeZone: (id) theTimeZone;
|
||||||
|
|
||||||
- (BOOL)isRecurrent;
|
- (BOOL)isRecurrent;
|
||||||
- (BOOL)isWithinCalendarDateRange:(NGCalendarDateRange *)_range
|
- (BOOL)isWithinCalendarDateRange:(NGCalendarDateRange *)_range
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/*
|
/*
|
||||||
Copyright (C) 2004-2005 SKYRIX Software AG
|
Copyright (C) 2004-2005 SKYRIX Software AG
|
||||||
Copyright (C) 2011 Inverse inc.
|
Copyright (C) 2012 Inverse inc.
|
||||||
|
|
||||||
This file is part of SOPE.
|
This file is part of SOPE.
|
||||||
|
|
||||||
|
@ -24,10 +24,12 @@
|
||||||
#import <Foundation/NSCalendarDate.h>
|
#import <Foundation/NSCalendarDate.h>
|
||||||
#import <Foundation/NSEnumerator.h>
|
#import <Foundation/NSEnumerator.h>
|
||||||
#import <Foundation/NSString.h>
|
#import <Foundation/NSString.h>
|
||||||
|
#import <Foundation/NSTimeZone.h>
|
||||||
|
|
||||||
#import <NGExtensions/NGCalendarDateRange.h>
|
#import <NGExtensions/NGCalendarDateRange.h>
|
||||||
|
|
||||||
#import "NSCalendarDate+NGCards.h"
|
#import "NSCalendarDate+NGCards.h"
|
||||||
|
#import "NSString+NGCards.h"
|
||||||
#import "iCalDateTime.h"
|
#import "iCalDateTime.h"
|
||||||
#import "iCalEvent.h"
|
#import "iCalEvent.h"
|
||||||
#import "iCalTimeZone.h"
|
#import "iCalTimeZone.h"
|
||||||
|
@ -79,7 +81,7 @@
|
||||||
return [self childrenWithTag: @"rrule"];
|
return [self childrenWithTag: @"rrule"];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSArray *) recurrenceRulesWithTimeZone: (iCalTimeZone *) timezone
|
- (NSArray *) recurrenceRulesWithTimeZone: (id) timezone
|
||||||
{
|
{
|
||||||
NSArray *rules;
|
NSArray *rules;
|
||||||
|
|
||||||
|
@ -113,7 +115,7 @@
|
||||||
return [self childrenWithTag: @"exrule"];
|
return [self childrenWithTag: @"exrule"];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSArray *) exceptionRulesWithTimeZone: (iCalTimeZone *) timezone
|
- (NSArray *) exceptionRulesWithTimeZone: (id) timezone
|
||||||
{
|
{
|
||||||
NSArray *rules;
|
NSArray *rules;
|
||||||
|
|
||||||
|
@ -131,12 +133,13 @@
|
||||||
* @see exceptionRulesWithTimeZone:
|
* @see exceptionRulesWithTimeZone:
|
||||||
* @return a new array of iCalRecurrenceRule instances, adjusted for the timezone.
|
* @return a new array of iCalRecurrenceRule instances, adjusted for the timezone.
|
||||||
*/
|
*/
|
||||||
- (NSArray *) rules: (NSArray *) theRules withTimeZone: (iCalTimeZone *) theTimeZone
|
- (NSArray *) rules: (NSArray *) theRules withTimeZone: (id) theTimeZone
|
||||||
{
|
{
|
||||||
NSArray *rules;
|
NSArray *rules;
|
||||||
NSCalendarDate *untilDate;
|
NSCalendarDate *untilDate;
|
||||||
NSMutableArray *fixedRules;
|
NSMutableArray *fixedRules;
|
||||||
iCalRecurrenceRule *currentRule;
|
iCalRecurrenceRule *currentRule;
|
||||||
|
int offset;
|
||||||
unsigned int max, count;
|
unsigned int max, count;
|
||||||
|
|
||||||
rules = theRules;
|
rules = theRules;
|
||||||
|
@ -152,7 +155,14 @@
|
||||||
untilDate = [currentRule untilDate];
|
untilDate = [currentRule untilDate];
|
||||||
if (untilDate)
|
if (untilDate)
|
||||||
{
|
{
|
||||||
untilDate = [theTimeZone computedDateForDate: untilDate];
|
if ([theTimeZone isKindOfClass: [iCalTimeZone class]])
|
||||||
|
untilDate = [(iCalTimeZone *) theTimeZone computedDateForDate: untilDate];
|
||||||
|
else
|
||||||
|
{
|
||||||
|
offset = [(NSTimeZone *) theTimeZone secondsFromGMTForDate: untilDate];
|
||||||
|
untilDate = (NSCalendarDate *) [untilDate dateByAddingYears:0 months:0 days:0 hours:0 minutes:0
|
||||||
|
seconds:-offset];
|
||||||
|
}
|
||||||
[currentRule setUntilDate: untilDate];
|
[currentRule setUntilDate: untilDate];
|
||||||
}
|
}
|
||||||
[fixedRules addObject: currentRule];
|
[fixedRules addObject: currentRule];
|
||||||
|
@ -232,12 +242,13 @@
|
||||||
* @see [iCalTimeZone computedDatesForStrings:]
|
* @see [iCalTimeZone computedDatesForStrings:]
|
||||||
* @return the exception dates, adjusted to the timezone.
|
* @return the exception dates, adjusted to the timezone.
|
||||||
*/
|
*/
|
||||||
- (NSArray *) exceptionDatesWithTimeZone: (iCalTimeZone *) theTimeZone
|
- (NSArray *) exceptionDatesWithTimeZone: (id) theTimeZone
|
||||||
{
|
{
|
||||||
NSArray *dates, *exDates;
|
NSArray *dates, *exDates;
|
||||||
NSEnumerator *dateList;
|
NSEnumerator *dateList;
|
||||||
NSCalendarDate *exDate;
|
NSCalendarDate *exDate;
|
||||||
NSString *dateString;
|
NSString *dateString;
|
||||||
|
int offset;
|
||||||
unsigned i;
|
unsigned i;
|
||||||
|
|
||||||
if (theTimeZone)
|
if (theTimeZone)
|
||||||
|
@ -251,9 +262,19 @@
|
||||||
for (i = 0; i < [exDates count]; i++)
|
for (i = 0; i < [exDates count]; i++)
|
||||||
{
|
{
|
||||||
dateString = [exDates objectAtIndex: i];
|
dateString = [exDates objectAtIndex: i];
|
||||||
exDate = [theTimeZone computedDateForString: dateString];
|
if ([theTimeZone isKindOfClass: [iCalTimeZone class]])
|
||||||
|
{
|
||||||
|
exDate = [(iCalTimeZone *) theTimeZone computedDateForString: dateString];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
exDate = [dateString asCalendarDate];
|
||||||
|
offset = [(NSTimeZone *) theTimeZone secondsFromGMTForDate: exDate];
|
||||||
|
exDate = (NSCalendarDate *) [exDate dateByAddingYears:0 months:0 days:0 hours:0 minutes:0
|
||||||
|
seconds:-offset];
|
||||||
|
}
|
||||||
[(NSMutableArray *) dates addObject: exDate];
|
[(NSMutableArray *) dates addObject: exDate];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -125,9 +125,7 @@
|
||||||
NSArray *ranges;
|
NSArray *ranges;
|
||||||
NGCalendarDateRange *checkRange, *firstRange;
|
NGCalendarDateRange *checkRange, *firstRange;
|
||||||
NSCalendarDate *startDate, *endDate;
|
NSCalendarDate *startDate, *endDate;
|
||||||
NSTimeZone *timeZone;
|
id firstStartDate, firstEndDate, timeZone;
|
||||||
id firstStartDate, firstEndDate;
|
|
||||||
iCalTimeZone *eventTimeZone;
|
|
||||||
BOOL doesOccur;
|
BOOL doesOccur;
|
||||||
int offset;
|
int offset;
|
||||||
|
|
||||||
|
@ -139,9 +137,11 @@
|
||||||
|
|
||||||
// Set the range to check with respect to the event timezone (extracted from the start date)
|
// Set the range to check with respect to the event timezone (extracted from the start date)
|
||||||
firstStartDate = (iCalDateTime *)[self uniqueChildWithTag: @"dtstart"];
|
firstStartDate = (iCalDateTime *)[self uniqueChildWithTag: @"dtstart"];
|
||||||
eventTimeZone = [(iCalDateTime *)firstStartDate timeZone];
|
timeZone = [(iCalDateTime *)firstStartDate timeZone];
|
||||||
if (eventTimeZone)
|
if (timeZone)
|
||||||
startDate = [eventTimeZone computedDateForDate: theOccurenceDate];
|
{
|
||||||
|
startDate = [(iCalTimeZone *)timeZone computedDateForDate: theOccurenceDate];
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
startDate = theOccurenceDate;
|
startDate = theOccurenceDate;
|
||||||
|
@ -150,13 +150,14 @@
|
||||||
// The event lasts all-day and has no timezone (floating); we convert the range of the first event
|
// The event lasts all-day and has no timezone (floating); we convert the range of the first event
|
||||||
// to the occurence's timezone.
|
// to the occurence's timezone.
|
||||||
timeZone = [theOccurenceDate timeZone];
|
timeZone = [theOccurenceDate timeZone];
|
||||||
offset = [timeZone secondsFromGMTForDate: [firstRange startDate]];
|
offset = [(NSTimeZone *)timeZone secondsFromGMTForDate: [firstRange startDate]];
|
||||||
firstStartDate = (NSCalendarDate *)[[firstRange startDate] dateByAddingYears:0 months:0 days:0 hours:0 minutes:0
|
firstStartDate = (NSCalendarDate *)[[firstRange startDate] dateByAddingYears:0 months:0 days:0 hours:0 minutes:0
|
||||||
seconds:-offset];
|
seconds:-offset];
|
||||||
firstEndDate = (NSCalendarDate *)[[firstRange endDate] dateByAddingYears:0 months:0 days:0 hours:0 minutes:0
|
firstEndDate = (NSCalendarDate *)[[firstRange endDate] dateByAddingYears:0 months:0 days:0 hours:0 minutes:0
|
||||||
seconds:-offset];
|
seconds:-offset];
|
||||||
[(NSCalendarDate *)firstStartDate setTimeZone: timeZone];
|
[(NSCalendarDate *)firstStartDate setTimeZone: timeZone];
|
||||||
[(NSCalendarDate *)firstEndDate setTimeZone: timeZone];
|
[(NSCalendarDate *)firstEndDate setTimeZone: timeZone];
|
||||||
|
|
||||||
firstRange = [NGCalendarDateRange calendarDateRangeWithStartDate: firstStartDate
|
firstRange = [NGCalendarDateRange calendarDateRangeWithStartDate: firstStartDate
|
||||||
endDate: firstEndDate];
|
endDate: firstEndDate];
|
||||||
}
|
}
|
||||||
|
@ -168,9 +169,9 @@
|
||||||
// Calculate the occurrences for the given date
|
// Calculate the occurrences for the given date
|
||||||
ranges = [iCalRecurrenceCalculator recurrenceRangesWithinCalendarDateRange: checkRange
|
ranges = [iCalRecurrenceCalculator recurrenceRangesWithinCalendarDateRange: checkRange
|
||||||
firstInstanceCalendarDateRange: firstRange
|
firstInstanceCalendarDateRange: firstRange
|
||||||
recurrenceRules: [self recurrenceRulesWithTimeZone: eventTimeZone]
|
recurrenceRules: [self recurrenceRulesWithTimeZone: timeZone]
|
||||||
exceptionRules: [self exceptionRulesWithTimeZone: eventTimeZone]
|
exceptionRules: [self exceptionRulesWithTimeZone: timeZone]
|
||||||
exceptionDates: [self exceptionDatesWithTimeZone: eventTimeZone]];
|
exceptionDates: [self exceptionDatesWithTimeZone: timeZone]];
|
||||||
doesOccur = [ranges dateRangeArrayContainsDate: startDate];
|
doesOccur = [ranges dateRangeArrayContainsDate: startDate];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -53,12 +53,14 @@
|
||||||
nil
|
nil
|
||||||
};
|
};
|
||||||
BOOL hasPrefix;
|
BOOL hasPrefix;
|
||||||
unsigned int i;
|
NSUInteger i;
|
||||||
NSString *subject, *newSubject;
|
NSString *subject, *newSubject;
|
||||||
|
|
||||||
hasPrefix = NO;
|
hasPrefix = NO;
|
||||||
|
|
||||||
subject = [self decodedSubject];
|
subject = [self decodedSubject];
|
||||||
|
if (![subject length]) subject = @"";
|
||||||
|
|
||||||
i = 0;
|
i = 0;
|
||||||
while (!hasPrefix && replyPrefixes[i])
|
while (!hasPrefix && replyPrefixes[i])
|
||||||
if ([subject hasPrefix: replyPrefixes[i]])
|
if ([subject hasPrefix: replyPrefixes[i]])
|
||||||
|
@ -99,7 +101,7 @@
|
||||||
NSDictionary *parts;
|
NSDictionary *parts;
|
||||||
NSString *rawPart, *content, *contentKey;
|
NSString *rawPart, *content, *contentKey;
|
||||||
SOGoUserDefaults *ud;
|
SOGoUserDefaults *ud;
|
||||||
int index;
|
NSUInteger index;
|
||||||
BOOL htmlComposition, htmlContent;
|
BOOL htmlComposition, htmlContent;
|
||||||
|
|
||||||
content = @"";
|
content = @"";
|
||||||
|
@ -189,7 +191,7 @@
|
||||||
static NSString *sescape[] = {
|
static NSString *sescape[] = {
|
||||||
@"/", @"..", @"~", @"\"", @"'", @" ", @".", nil
|
@"/", @"..", @"~", @"\"", @"'", @" ", @".", nil
|
||||||
};
|
};
|
||||||
unsigned int count, length;
|
NSUInteger count, length;
|
||||||
|
|
||||||
subject = [self decodedSubject];
|
subject = [self decodedSubject];
|
||||||
length = [subject length];
|
length = [subject length];
|
||||||
|
@ -298,7 +300,7 @@
|
||||||
NSString *newPath;
|
NSString *newPath;
|
||||||
NSArray *subparts;
|
NSArray *subparts;
|
||||||
NSString *type;
|
NSString *type;
|
||||||
unsigned int i;
|
NSUInteger i;
|
||||||
|
|
||||||
type = [[part objectForKey: @"type"] lowercaseString];
|
type = [[part objectForKey: @"type"] lowercaseString];
|
||||||
if ([type isEqualToString: @"multipart"])
|
if ([type isEqualToString: @"multipart"])
|
||||||
|
|
|
@ -471,7 +471,8 @@ static int cssEscapingCount;
|
||||||
|
|
||||||
- (int) timeValue
|
- (int) timeValue
|
||||||
{
|
{
|
||||||
int i, time;
|
int time;
|
||||||
|
NSInteger i;
|
||||||
|
|
||||||
if ([self length] > 0)
|
if ([self length] > 0)
|
||||||
{
|
{
|
||||||
|
|
|
@ -198,6 +198,7 @@
|
||||||
"Import Cards" = "Import Cards";
|
"Import Cards" = "Import Cards";
|
||||||
"Select a vCard or LDIF file." = "Select a vCard or LDIF file.";
|
"Select a vCard or LDIF file." = "Select a vCard or LDIF file.";
|
||||||
"Upload" = "Upload";
|
"Upload" = "Upload";
|
||||||
|
"Uploading" = "Uploading";
|
||||||
"Done" = "Done";
|
"Done" = "Done";
|
||||||
"An error occured while importing contacts." = "An error occured while importing contacts.";
|
"An error occured while importing contacts." = "An error occured while importing contacts.";
|
||||||
"No card was imported." = "No card was imported.";
|
"No card was imported." = "No card was imported.";
|
||||||
|
|
|
@ -43,7 +43,7 @@
|
||||||
@interface UIxMailPartAlternativeViewer : UIxMailPartViewer
|
@interface UIxMailPartAlternativeViewer : UIxMailPartViewer
|
||||||
{
|
{
|
||||||
id childInfo;
|
id childInfo;
|
||||||
unsigned int childIndex;
|
NSUInteger childIndex;
|
||||||
}
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
@ -70,7 +70,7 @@
|
||||||
- (NSArray *) childPartTypes
|
- (NSArray *) childPartTypes
|
||||||
{
|
{
|
||||||
NSMutableArray *types;
|
NSMutableArray *types;
|
||||||
unsigned i, count;
|
NSUInteger i, count;
|
||||||
NSArray *childParts;
|
NSArray *childParts;
|
||||||
|
|
||||||
childParts = [[self bodyInfo] valueForKey:@"parts"];
|
childParts = [[self bodyInfo] valueForKey:@"parts"];
|
||||||
|
@ -89,10 +89,10 @@
|
||||||
return types;
|
return types;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (unsigned int) _preferredTypesPart: (NSArray *) types
|
- (NSUInteger) _preferredTypesPart: (NSArray *) types
|
||||||
{
|
{
|
||||||
unsigned int count, max;
|
NSUInteger count, max;
|
||||||
unsigned int part;
|
NSUInteger part;
|
||||||
const NSString *priorities[] = { @"multipart/related", @"multipart/mixed",
|
const NSString *priorities[] = { @"multipart/related", @"multipart/mixed",
|
||||||
@"text/calendar", @"text/html",
|
@"text/calendar", @"text/html",
|
||||||
@"text/plain" };
|
@"text/plain" };
|
||||||
|
@ -113,7 +113,7 @@
|
||||||
- (int) _selectPartIndexFromTypes: (NSArray *) _types
|
- (int) _selectPartIndexFromTypes: (NSArray *) _types
|
||||||
{
|
{
|
||||||
/* returns the index of the selected part or NSNotFound */
|
/* returns the index of the selected part or NSNotFound */
|
||||||
unsigned count, max, part;
|
NSUInteger count, max, part;
|
||||||
|
|
||||||
part = [self _preferredTypesPart: _types];
|
part = [self _preferredTypesPart: _types];
|
||||||
if (part == NSNotFound)
|
if (part == NSNotFound)
|
||||||
|
@ -136,7 +136,7 @@
|
||||||
|
|
||||||
- (void) selectChildInfo
|
- (void) selectChildInfo
|
||||||
{
|
{
|
||||||
unsigned idx;
|
NSUInteger idx;
|
||||||
|
|
||||||
[childInfo release]; childInfo = nil;
|
[childInfo release]; childInfo = nil;
|
||||||
childIndex = 0;
|
childIndex = 0;
|
||||||
|
@ -164,7 +164,7 @@
|
||||||
return childInfo;
|
return childInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (unsigned int) childIndex
|
- (NSUInteger) childIndex
|
||||||
{
|
{
|
||||||
if (!childIndex)
|
if (!childIndex)
|
||||||
[self selectChildInfo];
|
[self selectChildInfo];
|
||||||
|
@ -176,7 +176,7 @@
|
||||||
{
|
{
|
||||||
char buf[8];
|
char buf[8];
|
||||||
|
|
||||||
sprintf (buf, "%d", [self childIndex] + 1);
|
sprintf (buf, "%"PRIuPTR"", [self childIndex] + 1);
|
||||||
|
|
||||||
return [NSString stringWithCString:buf];
|
return [NSString stringWithCString:buf];
|
||||||
}
|
}
|
||||||
|
|
|
@ -165,7 +165,7 @@
|
||||||
subject = [baseSubject decodedHeader];
|
subject = [baseSubject decodedHeader];
|
||||||
|
|
||||||
if (![subject length])
|
if (![subject length])
|
||||||
subject = [self labelForKey: @"Untitled"];
|
subject = @"";
|
||||||
|
|
||||||
return subject;
|
return subject;
|
||||||
}
|
}
|
||||||
|
|
|
@ -283,9 +283,9 @@
|
||||||
= "The messages could not be moved to the trash folder. Would you like to delete them immediately?";
|
= "The messages could not be moved to the trash folder. Would you like to delete them immediately?";
|
||||||
|
|
||||||
/* Message editing */
|
/* Message editing */
|
||||||
"error_validationfailed" = "Validation failed";
|
"error_missingsubject" = "The message has no subject. Are you sure you want to send it?";
|
||||||
"error_missingsubject" = "Subject is missing";
|
"error_missingrecipients" = "Please specify at least one recipient.";
|
||||||
"error_missingrecipients" = "No recipients specified";
|
"Send Anyway" = "Send Anyway";
|
||||||
|
|
||||||
/* Message sending */
|
/* Message sending */
|
||||||
"cannot send message: (smtp) all recipients discarded" = "Cannot send message: all recipients are invalid.";
|
"cannot send message: (smtp) all recipients discarded" = "Cannot send message: all recipients are invalid.";
|
||||||
|
|
|
@ -394,7 +394,7 @@ static NSArray *infoKeys = nil;
|
||||||
{
|
{
|
||||||
if (![_info isNotNull]) return;
|
if (![_info isNotNull]) return;
|
||||||
[self debugWithFormat:@"loading info ..."];
|
[self debugWithFormat:@"loading info ..."];
|
||||||
[self takeValuesFromDictionary:_info];
|
[self setValuesForKeysWithDictionary:_info];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSDictionary *) storeInfo
|
- (NSDictionary *) storeInfo
|
||||||
|
@ -653,10 +653,7 @@ static NSArray *infoKeys = nil;
|
||||||
|
|
||||||
if (![self hasOneOrMoreRecipients])
|
if (![self hasOneOrMoreRecipients])
|
||||||
error = [NSException exceptionWithHTTPStatus: 400 /* Bad Request */
|
error = [NSException exceptionWithHTTPStatus: 400 /* Bad Request */
|
||||||
reason: @"Please select a recipient!"];
|
reason: [self labelForKey: @"error_missingrecipients"]];
|
||||||
else if ([[self subject] length] == 0)
|
|
||||||
error = [NSException exceptionWithHTTPStatus: 400 /* Bad Request */
|
|
||||||
reason: @"Please set a subject!"];
|
|
||||||
else
|
else
|
||||||
error = nil;
|
error = nil;
|
||||||
|
|
||||||
|
|
|
@ -192,7 +192,7 @@
|
||||||
baseSubject = [[message valueForKey: @"envelope"] subject];
|
baseSubject = [[message valueForKey: @"envelope"] subject];
|
||||||
subject = [baseSubject decodedHeader];
|
subject = [baseSubject decodedHeader];
|
||||||
if (![subject length])
|
if (![subject length])
|
||||||
subject = [self labelForKey: @"Untitled"];
|
subject = @"";
|
||||||
|
|
||||||
return [subject stringByEscapingHTMLString];
|
return [subject stringByEscapingHTMLString];
|
||||||
}
|
}
|
||||||
|
|
|
@ -125,8 +125,8 @@
|
||||||
// TODO: this is ugly, create reusable link facility in SOPE
|
// TODO: this is ugly, create reusable link facility in SOPE
|
||||||
// TODO: remove 'search' and 'filterpopup', preserve sorting
|
// TODO: remove 'search' and 'filterpopup', preserve sorting
|
||||||
NSMutableString *ms;
|
NSMutableString *ms;
|
||||||
NSArray *qp;
|
NSArray *qp;
|
||||||
unsigned i, count;
|
NSUInteger i, count;
|
||||||
|
|
||||||
qp = [[u substringFromIndex:(r.location + r.length)]
|
qp = [[u substringFromIndex:(r.location + r.length)]
|
||||||
componentsSeparatedByString:@"&"];
|
componentsSeparatedByString:@"&"];
|
||||||
|
@ -193,8 +193,8 @@
|
||||||
SOGoMailAccounts *co;
|
SOGoMailAccounts *co;
|
||||||
SOGoContactFolders *folders;
|
SOGoContactFolders *folders;
|
||||||
SOGoParentFolder *folder;
|
SOGoParentFolder *folder;
|
||||||
WORequest *request;
|
WORequest *request;
|
||||||
int i, count;
|
NSUInteger i, count;
|
||||||
|
|
||||||
parameters = nil;
|
parameters = nil;
|
||||||
co = [self clientObject];
|
co = [self clientObject];
|
||||||
|
@ -549,7 +549,7 @@
|
||||||
NSArray *available;
|
NSArray *available;
|
||||||
NSDictionary *metaData;
|
NSDictionary *metaData;
|
||||||
SOGoUserDefaults *ud;
|
SOGoUserDefaults *ud;
|
||||||
unsigned int i;
|
NSUInteger i;
|
||||||
|
|
||||||
if (!columnsOrder)
|
if (!columnsOrder)
|
||||||
{
|
{
|
||||||
|
@ -636,8 +636,8 @@
|
||||||
NSMutableArray *folders;
|
NSMutableArray *folders;
|
||||||
NSMutableString *path;
|
NSMutableString *path;
|
||||||
SOGoUserDefaults *ud;
|
SOGoUserDefaults *ud;
|
||||||
NSString *s;
|
NSString *s;
|
||||||
int i, j, k;
|
NSUInteger i, j, k;
|
||||||
|
|
||||||
ud = [[context activeUser] userDefaults];
|
ud = [[context activeUser] userDefaults];
|
||||||
folders = [NSMutableArray array];
|
folders = [NSMutableArray array];
|
||||||
|
|
|
@ -96,8 +96,6 @@ static NSString *mailETag = nil;
|
||||||
NSString *subject;
|
NSString *subject;
|
||||||
|
|
||||||
subject = [[self clientObject] decodedSubject];
|
subject = [[self clientObject] decodedSubject];
|
||||||
if (![subject length])
|
|
||||||
subject = [self labelForKey: @"Untitled"];
|
|
||||||
|
|
||||||
return subject;
|
return subject;
|
||||||
}
|
}
|
||||||
|
|
|
@ -110,6 +110,7 @@
|
||||||
"Import Events" = "Import Events";
|
"Import Events" = "Import Events";
|
||||||
"Select an iCalendar file (.ics)." = "Select an iCalendar file (.ics).";
|
"Select an iCalendar file (.ics)." = "Select an iCalendar file (.ics).";
|
||||||
"Upload" = "Upload";
|
"Upload" = "Upload";
|
||||||
|
"Uploading" = "Uploading";
|
||||||
"Publish Calendar..." = "Publish Calendar...";
|
"Publish Calendar..." = "Publish Calendar...";
|
||||||
"Reload Remote Calendars" = "Reload Remote Calendars";
|
"Reload Remote Calendars" = "Reload Remote Calendars";
|
||||||
"Properties" = "Properties";
|
"Properties" = "Properties";
|
||||||
|
|
|
@ -118,7 +118,7 @@
|
||||||
- (NSArray *) filterAppointments:(NSArray *) _apts
|
- (NSArray *) filterAppointments:(NSArray *) _apts
|
||||||
{
|
{
|
||||||
NSMutableArray *filtered;
|
NSMutableArray *filtered;
|
||||||
unsigned i, count, p, pCount;
|
NSUInteger i, count, p, pCount;
|
||||||
NSString *email, *partmailsString, *state, *pEmail;
|
NSString *email, *partmailsString, *state, *pEmail;
|
||||||
NSDictionary *info, *primaryIdentity;
|
NSDictionary *info, *primaryIdentity;
|
||||||
NSArray *partmails, *partstates;
|
NSArray *partmails, *partstates;
|
||||||
|
@ -370,7 +370,7 @@
|
||||||
{
|
{
|
||||||
NSArray *apts;
|
NSArray *apts;
|
||||||
NSMutableArray *filtered;
|
NSMutableArray *filtered;
|
||||||
unsigned i, count;
|
NSUInteger i, count;
|
||||||
|
|
||||||
if (allDayApts)
|
if (allDayApts)
|
||||||
return allDayApts;
|
return allDayApts;
|
||||||
|
@ -532,7 +532,8 @@
|
||||||
NSString *uidsString, *loc, *prevMethod, *userFolderID;
|
NSString *uidsString, *loc, *prevMethod, *userFolderID;
|
||||||
id <WOActionResults> r;
|
id <WOActionResults> r;
|
||||||
BOOL useGroups;
|
BOOL useGroups;
|
||||||
unsigned index;
|
NSUInteger index;
|
||||||
|
|
||||||
|
|
||||||
uidsString = [self queryParameterForKey: @"userUIDString"];
|
uidsString = [self queryParameterForKey: @"userUIDString"];
|
||||||
uidsString = [uidsString stringByTrimmingSpaces];
|
uidsString = [uidsString stringByTrimmingSpaces];
|
||||||
|
|
|
@ -525,7 +525,7 @@ iRANGE(2);
|
||||||
iCalTrigger *aTrigger;
|
iCalTrigger *aTrigger;
|
||||||
NSString *duration, *quantity;
|
NSString *duration, *quantity;
|
||||||
unichar c;
|
unichar c;
|
||||||
unsigned int i;
|
NSUInteger i;
|
||||||
|
|
||||||
if ([component hasAlarms])
|
if ([component hasAlarms])
|
||||||
{
|
{
|
||||||
|
@ -1289,7 +1289,7 @@ iRANGE(2);
|
||||||
NSString *currentOwner;
|
NSString *currentOwner;
|
||||||
SOGoAppointmentFolder *currentCalendar;
|
SOGoAppointmentFolder *currentCalendar;
|
||||||
SOGoUser *currentUser;
|
SOGoUser *currentUser;
|
||||||
unsigned i;
|
NSUInteger i;
|
||||||
|
|
||||||
calendars = [self calendarList];
|
calendars = [self calendarList];
|
||||||
owners = [NSMutableArray arrayWithCapacity: [calendars count]];
|
owners = [NSMutableArray arrayWithCapacity: [calendars count]];
|
||||||
|
@ -1562,7 +1562,7 @@ RANGE(2);
|
||||||
{
|
{
|
||||||
NSString *cycleRep;
|
NSString *cycleRep;
|
||||||
NSArray *cycles;
|
NSArray *cycles;
|
||||||
unsigned i, count;
|
NSUInteger i, count;
|
||||||
|
|
||||||
if (!_rrule)
|
if (!_rrule)
|
||||||
return [[self cycles] objectAtIndex:0];
|
return [[self cycles] objectAtIndex:0];
|
||||||
|
@ -1721,7 +1721,7 @@ RANGE(2);
|
||||||
// s = [self queryParameterForKey:_qp];
|
// s = [self queryParameterForKey:_qp];
|
||||||
// if(s && [s length] > 0) {
|
// if(s && [s length] > 0) {
|
||||||
// NSArray *es;
|
// NSArray *es;
|
||||||
// unsigned i, count;
|
// NSUInteger i, count;
|
||||||
|
|
||||||
// es = [s componentsSeparatedByString: @","];
|
// es = [s componentsSeparatedByString: @","];
|
||||||
// count = [es count];
|
// count = [es count];
|
||||||
|
@ -1766,7 +1766,7 @@ RANGE(2);
|
||||||
- (void) _handleAttendeesEdition
|
- (void) _handleAttendeesEdition
|
||||||
{
|
{
|
||||||
NSMutableArray *newAttendees;
|
NSMutableArray *newAttendees;
|
||||||
unsigned int count, max;
|
NSUInteger count, max;
|
||||||
NSString *currentEmail;
|
NSString *currentEmail;
|
||||||
iCalPerson *currentAttendee;
|
iCalPerson *currentAttendee;
|
||||||
NSString *json, *role, *partstat;
|
NSString *json, *role, *partstat;
|
||||||
|
@ -2189,7 +2189,7 @@ RANGE(2);
|
||||||
iCalTrigger *aTrigger;
|
iCalTrigger *aTrigger;
|
||||||
iCalAlarm *anAlarm;
|
iCalAlarm *anAlarm;
|
||||||
NSString *aValue;
|
NSString *aValue;
|
||||||
unsigned int index;
|
NSUInteger index;
|
||||||
|
|
||||||
anAlarm = [iCalAlarm new];
|
anAlarm = [iCalAlarm new];
|
||||||
|
|
||||||
|
|
|
@ -12,25 +12,6 @@ var Contact = {
|
||||||
deleteContactsRequestCount: null
|
deleteContactsRequestCount: null
|
||||||
};
|
};
|
||||||
|
|
||||||
function validateEditorInput(sender) {
|
|
||||||
var errortext = "";
|
|
||||||
var field;
|
|
||||||
|
|
||||||
field = document.pageform.subject;
|
|
||||||
if (field.value == "")
|
|
||||||
errortext = errortext + labels.error_missingsubject + "\n";
|
|
||||||
|
|
||||||
if (!hasRecipients())
|
|
||||||
errortext = errortext + labels.error_missingrecipients + "\n";
|
|
||||||
|
|
||||||
if (errortext.length > 0) {
|
|
||||||
alert(labels.error_validationfailed + ":\n"
|
|
||||||
+ errortext);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
function openContactsFolder(contactsFolder, reload, idx) {
|
function openContactsFolder(contactsFolder, reload, idx) {
|
||||||
if ((contactsFolder && contactsFolder != Contact.currentAddressBook)
|
if ((contactsFolder && contactsFolder != Contact.currentAddressBook)
|
||||||
|| reload) {
|
|| reload) {
|
||||||
|
@ -799,13 +780,21 @@ function hideImportResults () {
|
||||||
}
|
}
|
||||||
function validateUploadForm () {
|
function validateUploadForm () {
|
||||||
rc = false;
|
rc = false;
|
||||||
if ($("contactsFile").value.length)
|
if ($("contactsFile").value.length) {
|
||||||
|
var btn = jQuery('#uploadSubmit');
|
||||||
|
jQuery('#uploadCancel').fadeOut('fast');
|
||||||
|
btn.addClass("disabled");
|
||||||
|
btn.children('span').text(_('Uploading'));
|
||||||
rc = true;
|
rc = true;
|
||||||
|
}
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
function uploadCompleted(response) {
|
function uploadCompleted(response) {
|
||||||
data = response.evalJSON(true);
|
data = response.evalJSON(true);
|
||||||
|
jQuery('#uploadCancel').show();
|
||||||
|
var btn = jQuery('#uploadSubmit');
|
||||||
|
btn.removeClass("disabled");
|
||||||
|
btn.children('span').text(_('Upload'));
|
||||||
var div = $("uploadResults");
|
var div = $("uploadResults");
|
||||||
if (data.imported <= 0)
|
if (data.imported <= 0)
|
||||||
$("uploadResultsContent").update(_("An error occured while importing contacts."));
|
$("uploadResultsContent").update(_("An error occured while importing contacts."));
|
||||||
|
|
|
@ -2849,13 +2849,21 @@ function hideImportResults(event) {
|
||||||
}
|
}
|
||||||
function validateUploadForm() {
|
function validateUploadForm() {
|
||||||
rc = false;
|
rc = false;
|
||||||
if ($("calendarFile").value.length)
|
if ($("calendarFile").value.length) {
|
||||||
|
var btn = jQuery('#uploadSubmit');
|
||||||
|
jQuery('#uploadCancel').fadeOut('fast');
|
||||||
|
btn.addClass("disabled");
|
||||||
|
btn.children('span').text(_('Uploading'));
|
||||||
rc = true;
|
rc = true;
|
||||||
|
}
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
function uploadCompleted(response) {
|
function uploadCompleted(response) {
|
||||||
data = response.evalJSON(true);
|
data = response.evalJSON(true);
|
||||||
|
jQuery('#uploadCancel').show();
|
||||||
|
var btn = jQuery('#uploadSubmit');
|
||||||
|
btn.removeClass("disabled");
|
||||||
|
btn.children('span').text(_('Upload'));
|
||||||
var div = $("uploadResults");
|
var div = $("uploadResults");
|
||||||
if (data.imported < 0)
|
if (data.imported < 0)
|
||||||
$("uploadResultsContent").update(_("An error occurred while importing calendar."));
|
$("uploadResultsContent").update(_("An error occurred while importing calendar."));
|
||||||
|
|
|
@ -237,7 +237,7 @@ TABLE#contactsList TD#mailHeader
|
||||||
|
|
||||||
DIV.contactSelection
|
DIV.contactSelection
|
||||||
{
|
{
|
||||||
z-index: 10;
|
z-index: 1;
|
||||||
background: inherit;
|
background: inherit;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
bottom: 0em;
|
bottom: 0em;
|
||||||
|
|
|
@ -107,51 +107,45 @@ function insertContact(inputNode, contactName, contactEmail) {
|
||||||
|
|
||||||
/* mail editor */
|
/* mail editor */
|
||||||
|
|
||||||
function validateEditorInput() {
|
function onValidate(onSuccess) {
|
||||||
var errortext = "";
|
if (document.pageform.action != "send") {
|
||||||
var field;
|
|
||||||
|
|
||||||
field = document.pageform.subject;
|
if (!hasRecipients()) {
|
||||||
if (field.value == "")
|
showAlertDialog(_("error_missingrecipients"));
|
||||||
errortext = errortext + _("error_missingsubject") + "\n";
|
}
|
||||||
|
else if (document.pageform.subject.value == "") {
|
||||||
if (!hasRecipients())
|
showConfirmDialog(_("Warning"), _("error_missingsubject"), onValidateDone.bind(this, onSuccess), null, _("Send anyway"), _("Cancel"));
|
||||||
errortext = errortext + _("error_missingrecipients") + "\n";
|
}
|
||||||
|
else {
|
||||||
if (errortext.length > 0) {
|
onValidateDone(onSuccess);
|
||||||
alert(_("error_validationfailed") + ":\n" + errortext);
|
}
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function onValidate(event) {
|
function onValidateDone(onSuccess) {
|
||||||
var rc = false;
|
var input = currentAttachmentInput();
|
||||||
|
if (input)
|
||||||
|
input.parentNode.removeChild(input);
|
||||||
|
|
||||||
if (document.pageform.action != "send"
|
var toolbar = document.getElementById("toolbar");
|
||||||
&& validateEditorInput()) {
|
if (!document.busyAnim)
|
||||||
var input = currentAttachmentInput();
|
document.busyAnim = startAnimation(toolbar);
|
||||||
if (input)
|
|
||||||
input.parentNode.removeChild(input);
|
|
||||||
|
|
||||||
var toolbar = document.getElementById("toolbar");
|
var lastRow = $("lastRow");
|
||||||
if (!document.busyAnim)
|
lastRow.down("select").name = "popup_last";
|
||||||
document.busyAnim = startAnimation(toolbar);
|
|
||||||
|
|
||||||
var lastRow = $("lastRow");
|
window.shouldPreserve = true;
|
||||||
lastRow.down("select").name = "popup_last";
|
|
||||||
|
|
||||||
window.shouldPreserve = true;
|
document.pageform.action = "send";
|
||||||
|
|
||||||
document.pageform.action = "send";
|
AIM.submit($(document.pageform), {'onComplete' : onPostComplete});
|
||||||
|
|
||||||
AIM.submit($(document.pageform), {'onComplete' : onPostComplete});
|
if (typeof onSuccess == 'function')
|
||||||
|
onSuccess();
|
||||||
|
|
||||||
rc = true;
|
disposeDialog();
|
||||||
}
|
|
||||||
|
|
||||||
return rc;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
function onPostComplete(response) {
|
function onPostComplete(response) {
|
||||||
|
@ -184,9 +178,9 @@ function onPostComplete(response) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function clickedEditorSend() {
|
function clickedEditorSend() {
|
||||||
if (onValidate()) {
|
onValidate(function() {
|
||||||
document.pageform.submit();
|
document.pageform.submit();
|
||||||
}
|
});
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue