mirror of
https://github.com/inverse-inc/sogo.git
synced 2026-10-05 20:10:33 +00:00
Merge branch 'upstream-master' into merge-from-upstream
Conflicts: SoObjects/SOGo/LDAPSource.m SoObjects/SOGo/SOGoUserManager.m
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
"Inviting the following persons is prohibited:" = "Ondorengo pertsonak gonbidatzea debekatuta dago:";
|
||||
"Personal Calendar" = "Egutegi pertsonala";
|
||||
vevent_class0 = "(Ekitaldi publikoa)";
|
||||
vevent_class1 = "(Ekitaldi pribatua)";
|
||||
vevent_class2 = "(Isilpeko ekitaldia)";
|
||||
|
||||
vtodo_class0 = "(Zeregin publikoa)";
|
||||
vtodo_class1 = "(Zeregin pribatua)";
|
||||
vtodo_class2 = "(Isilpeko egitekoa)";
|
||||
|
||||
/* Receipts */
|
||||
"The event \"%{Summary}\" was created" = "\"%{Summary}\" ekitaldia sortu da";
|
||||
"The event \"%{Summary}\" was deleted" = "\"%{Summary}\" ekitaldia ezabatu da";
|
||||
"The event \"%{Summary}\" was updated" = "\"%{Summary}\" ekitaldia eguneratu da";
|
||||
"The following attendees(s) were notified:" = "Ondorengo partaidea(k) jakinarazi d(ir)a:";
|
||||
"The following attendees(s) were added:" = "Ondorengo partaidea(k) gehitu d(ir)a:";
|
||||
"The following attendees(s) were removed:" = "Ondorengo partaidea(k) ezabatu d(ir)a:";
|
||||
|
||||
/* IMIP messages */
|
||||
"calendar_label" = "Egutegia";
|
||||
"startDate_label" = "Hasi:";
|
||||
"endDate_label" = "Amaitu:";
|
||||
"due_label" = "Epemuga:";
|
||||
"location_label" = "Kokapena:";
|
||||
"summary_label" = "Laburpena:";
|
||||
"comment_label" = "Iruzkina:";
|
||||
|
||||
/* Invitation */
|
||||
"Event Invitation: \"%{Summary}\"" = "Ekitaldirako gonbidapena: \"%{Summary}\"";
|
||||
"(sent by %{SentBy}) " = "(%{SentBy}-k bidalia) ";
|
||||
"%{Organizer} %{SentByText}has invited you to %{Summary}.\n\nStart: %{StartDate}\nEnd: %{EndDate}\nDescription: %{Description}" = "%{Organizer} %{SentByText}-k gonbidatu zaitu %{Summary}.-ra\n\nHasiera: %{StartDate}\nAmaiera: %{EndDate}\nDeskribapena: %{Description}";
|
||||
"%{Organizer} %{SentByText}has invited you to %{Summary}.\n\nStart: %{StartDate} at %{StartTime}\nEnd: %{EndDate} at %{EndTime}\nDescription: %{Description}" = "%{Organizer} %{SentByText}-k gonbidatu zaitu %{Summary}-ra \n\nHasiera: %{StartDate}-an, %{StartTime}-tan\nEnd: %{EndDate}-an, %{EndTime}-tan\nDeskribapena: %{Description}";
|
||||
|
||||
/* Deletion */
|
||||
"Event Cancelled: \"%{Summary}\"" = "Ekitaldia bertan behera utzi da: \"%{Summary}\"";
|
||||
"%{Organizer} %{SentByText}has cancelled this event: %{Summary}.\n\nStart: %{StartDate}\nEnd: %{EndDate}\nDescription: %{Description}"
|
||||
= "%{Organizer} %{SentByText} ekitaldi hau bertan behera utzi du: %{Summary}.\n\nHasiera: %{StartDate}\nAmaiera: %{EndDate}\nDEskribapena: %{Description}";
|
||||
"%{Organizer} %{SentByText}has cancelled this event: %{Summary}.\n\nStart: %{StartDate} at %{StartTime}\nEnd: %{EndDate} at %{EndTime}\nDescription: %{Description}"
|
||||
= "%{Organizer} %{SentByText}-k honako ekitaldia bertan behera utzi du: %{Summary}.\n\nHasiera: %{StartDate}-an, %{StartTime}-tan\nAmaiera: %{EndDate}-an %{EndTime}-tan\nDeskribapena: %{Description}";
|
||||
|
||||
/* Update */
|
||||
"The appointment \"%{Summary}\" for the %{OldStartDate} has changed"
|
||||
= "%{OldStartDate} eguneko \"%{Summary}\" hitzordua aldatu da";
|
||||
"The appointment \"%{Summary}\" for the %{OldStartDate} at %{OldStartTime} has changed"
|
||||
= "%{OldStartDate} eguneko eta %{OldStartTime} orduko \"%{Summary}\" hitzordua aldatu da";
|
||||
"The following parameters have changed in the \"%{Summary}\" meeting:"
|
||||
= " \"%{Summary}\" bilerako ondorengo parametroak aldatu dira:";
|
||||
"Please accept or decline those changes."
|
||||
= "Mesedez, onartu edo ezetsi ondorengo aldaketak.";
|
||||
|
||||
/* Reply */
|
||||
"Accepted invitation: \"%{Summary}\"" = "Gonbidapena onartua: \"%{Summary}\"";
|
||||
"Declined invitation: \"%{Summary}\"" = "Ezetzitako gonbidapena: \"%{Summary}\"";
|
||||
"Delegated invitation: \"%{Summary}\"" = "Delegatutako gonbidapena: \"%{Summary}\"";
|
||||
"Not yet decided on invitation: \"%{Summary}\"" = "\"%{Summary}\" gonbidapenari buruz erabaki gabe";
|
||||
"%{Attendee} %{SentByText}has accepted your event invitation."
|
||||
= "%{Attendee} %{SentByText} -k zure gonbidapena onartu du.";
|
||||
"%{Attendee} %{SentByText}has declined your event invitation."
|
||||
= "%{Attendee} %{SentByText}-k zure gonbidapenari uko egin dio.";
|
||||
"%{Attendee} %{SentByText}has delegated the invitation to %{Delegate}."
|
||||
= "%{Attendee} %{SentByText}-k zure gonbidapena %{Delegate}-ri delegatu dio.";
|
||||
"%{Attendee} %{SentByText}has not yet decided upon your event invitation."
|
||||
= "%{Attendee} %{SentByText}-k ez du oraindik zure gonbidapenari buruz erabakirik hartu.";
|
||||
|
||||
/* Resources */
|
||||
"Cannot access resource: \"%{Cn} %{SystemEmail}\"" = "Ezin da honako baliabidea atzitu: \"%{Cn} %{SystemEmail}\"";
|
||||
"Maximum number of simultaneous bookings (%{NumberOfSimultaneousBookings}) reached for resource \"%{Cn} %{SystemEmail}\". The conflicting event is \"%{EventTitle}\", and starts on %{StartDate}." = "\"%{Cn} %{SystemEmail}\" baliabidearentzako gehienezko erreserba kopurura (%{NumberOfSimultaneousBookings}) iritsi gara. Gatazka sortu duen ekitaldia \"%{EventTitle}\" da, eta %{StartDate}-n hasten da.";
|
||||
@@ -56,7 +56,7 @@ vtodo_class2 = "(Tarefa Confidencial)";
|
||||
"%{Attendee} %{SentByText}has accepted your event invitation."
|
||||
= "%{Attendee} %{SentByText}foi aceitado seu convite ao evento.";
|
||||
"%{Attendee} %{SentByText}has declined your event invitation."
|
||||
= "%{Attendee} %{SentByText}foi declinado seu convite ao evento.";
|
||||
= "%{Attendee} %{SentByText}recusou seu convite para o evento.";
|
||||
"%{Attendee} %{SentByText}has delegated the invitation to %{Delegate}."
|
||||
= "%{Attendee} %{SentByText} delegou o convite para %{Delegate}.";
|
||||
"%{Attendee} %{SentByText}has not yet decided upon your event invitation."
|
||||
|
||||
@@ -54,7 +54,7 @@ Appointments_RESOURCE_FILES += \
|
||||
MSExchangeFreeBusySOAPResponseMap.plist \
|
||||
MSExchangeFreeBusySOAPRequest.wo
|
||||
|
||||
Appointments_LANGUAGES = Arabic BrazilianPortuguese Catalan Czech Danish Dutch English Finnish French German Hungarian Icelandic Italian NorwegianBokmal NorwegianNynorsk Polish Russian Slovak SpanishSpain SpanishArgentina Swedish Ukrainian Welsh
|
||||
Appointments_LANGUAGES = Arabic Basque BrazilianPortuguese Catalan Czech Danish Dutch English Finnish French German Hungarian Icelandic Italian NorwegianBokmal NorwegianNynorsk Polish Russian Slovak SpanishSpain SpanishArgentina Swedish Ukrainian Welsh
|
||||
|
||||
Appointments_LOCALIZED_RESOURCE_FILES = Localizable.strings
|
||||
|
||||
|
||||
@@ -70,11 +70,27 @@
|
||||
to: (NSCalendarDate *) newEndDate
|
||||
{
|
||||
ASSIGN(address, newAddress);
|
||||
ASSIGN(startDate, newStartDate);
|
||||
ASSIGN(endDate, newEndDate);
|
||||
|
||||
startDate = [NSCalendarDate dateWithYear: [newStartDate yearOfCommonEra]
|
||||
month: [newStartDate monthOfYear]
|
||||
day: [newStartDate dayOfMonth]
|
||||
hour: [newStartDate hourOfDay]
|
||||
minute: [newStartDate minuteOfHour]
|
||||
second: [newStartDate secondOfMinute]
|
||||
timeZone: [newStartDate timeZone]];
|
||||
endDate = [NSCalendarDate dateWithYear: [newEndDate yearOfCommonEra]
|
||||
month: [newEndDate monthOfYear]
|
||||
day: [newEndDate dayOfMonth]
|
||||
hour: [newEndDate hourOfDay]
|
||||
minute: [newEndDate minuteOfHour]
|
||||
second: [newEndDate secondOfMinute]
|
||||
timeZone: [newEndDate timeZone]];
|
||||
|
||||
[startDate setTimeZone: timeZone];
|
||||
[endDate setTimeZone: timeZone];
|
||||
|
||||
[startDate retain];
|
||||
[endDate retain];
|
||||
}
|
||||
|
||||
- (NSString *) serverVersion
|
||||
|
||||
@@ -502,12 +502,12 @@ static Class iCalEventK = nil;
|
||||
BOOL is_owner;
|
||||
|
||||
userLogin = [[context activeUser] login];
|
||||
is_owner = [userLogin isEqualToString: [self ownerInContext: context]];
|
||||
is_owner = [userLogin isEqualToString: self->owner];
|
||||
|
||||
// Check if the owner (not the active user) has excluded the calendar from her/his free busy data.
|
||||
excludeFromFreeBusy
|
||||
= [self folderPropertyValueInCategory: @"FreeBusyExclusions"
|
||||
forUser: [SOGoUser userWithLogin: userLogin]];
|
||||
forUser: [context activeUser]];
|
||||
|
||||
if ([self isSubscription])
|
||||
{
|
||||
@@ -800,7 +800,7 @@ static Class iCalEventK = nil;
|
||||
|
||||
/**
|
||||
* Set the timezone of the event start and end dates to the user's timezone.
|
||||
* @param theRecord a dictionnary with the attributes of the event.
|
||||
* @param theRecord a dictionary with the attributes of the event.
|
||||
* @return a copy of theRecord with adjusted dates.
|
||||
*/
|
||||
- (NSMutableDictionary *) _fixupRecord: (NSDictionary *) theRecord
|
||||
@@ -2814,7 +2814,7 @@ firstInstanceCalendarDateRange: (NGCalendarDateRange *) fir
|
||||
@"c_category", @"c_classification", @"c_isallday",
|
||||
@"c_isopaque", @"c_participants", @"c_partmails",
|
||||
@"c_partstates", @"c_sequence", @"c_priority",
|
||||
@"c_cycleinfo", @"c_iscycle", @"c_nextalarm", nil];
|
||||
@"c_cycleinfo", @"c_iscycle", @"c_nextalarm", @"c_description", nil];
|
||||
|
||||
return [self fetchFields: infos from: _startDate to: _endDate title: title
|
||||
component: _component
|
||||
|
||||
@@ -421,11 +421,14 @@
|
||||
SOGoUserSettings *us;
|
||||
NSMutableArray *unavailableAttendees;
|
||||
NSEnumerator *enumerator;
|
||||
NSString *currentUID, *ownerUID, *whiteListString;
|
||||
NSString *currentUID, *ownerUID;
|
||||
NSMutableString *reason;
|
||||
NSDictionary *values;
|
||||
NSMutableDictionary *value, *moduleSettings, *whiteList;
|
||||
NSMutableDictionary *value, *moduleSettings;
|
||||
id whiteList;
|
||||
|
||||
int i, count;
|
||||
|
||||
i = count = 0;
|
||||
|
||||
// Build list of the attendees uids without ressources
|
||||
@@ -447,8 +450,11 @@
|
||||
if (![user isResource] && [[moduleSettings objectForKey:@"PreventInvitations"] boolValue])
|
||||
{
|
||||
// Check if the user have a whiteList
|
||||
whiteListString = [moduleSettings objectForKey:@"PreventInvitationsWhitelist"];
|
||||
whiteList = [whiteListString objectFromJSONString];
|
||||
whiteList = [moduleSettings objectForKey:@"PreventInvitationsWhitelist"];
|
||||
|
||||
// For backward <= 2.2.17 compatibility
|
||||
if ([whiteList isKindOfClass: [NSString class]])
|
||||
whiteList = [whiteList objectFromJSONString];
|
||||
|
||||
// If the filter have a hit, do not add the currentUID to the unavailableAttendees array
|
||||
if (![whiteList objectForKey:ownerUID])
|
||||
|
||||
@@ -248,6 +248,12 @@
|
||||
else
|
||||
[row setObject: [NSNull null] forKey: @"c_category"];
|
||||
|
||||
/* handle description */
|
||||
if ([self comment])
|
||||
[row setObject: [self comment] forKey: @"c_description"];
|
||||
else
|
||||
[row setObject: [NSNull null] forKey: @"c_description"];
|
||||
|
||||
return row;
|
||||
}
|
||||
|
||||
|
||||
@@ -177,6 +177,12 @@
|
||||
[row setObject: [categories componentsJoinedByString: @","]
|
||||
forKey: @"c_category"];
|
||||
|
||||
/* handle description */
|
||||
if ([self comment])
|
||||
[row setObject: [self comment] forKey: @"c_description"];
|
||||
else
|
||||
[row setObject: [NSNull null] forKey: @"c_description"];
|
||||
|
||||
return row;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user