propagate from branch 'ca.inverse.sogo.1_3_17' (head a4ef73c2ad79c8da8d8e0c93767ab06e14bc846b)
to branch 'ca.inverse.sogo' (head 25245057b6fcee6d3af9a15a930deba187d79422) Monotone-Parent: 25245057b6fcee6d3af9a15a930deba187d79422 Monotone-Parent: a4ef73c2ad79c8da8d8e0c93767ab06e14bc846b Monotone-Revision: 7634b9d503d61b6240548e75e7f872081debc6b4 Monotone-Author: jraby@inverse.ca Monotone-Date: 2012-06-27T16:06:45 Monotone-Branch: ca.inverse.sogomaint-2.0.2
commit
e587ae08cf
|
@ -1,3 +1,9 @@
|
||||||
|
2012-06-27 Jean Raby <jraby@inverse.ca>
|
||||||
|
|
||||||
|
* SoObjects/Appointments/SOGoAppointmentObject.m
|
||||||
|
(PUTAction:): detect conflicting event UID and
|
||||||
|
deny the request accordingly.
|
||||||
|
|
||||||
2012-06-21 Ludovic Marcotte <lmarcotte@inverse.ca>
|
2012-06-21 Ludovic Marcotte <lmarcotte@inverse.ca>
|
||||||
|
|
||||||
* Added the SOGoSearchMinimumWordLength domain
|
* Added the SOGoSearchMinimumWordLength domain
|
||||||
|
|
12
NEWS
12
NEWS
|
@ -1,3 +1,14 @@
|
||||||
|
1.3.17 (2012-MM-DD)
|
||||||
|
-------------------
|
||||||
|
New Features
|
||||||
|
-
|
||||||
|
|
||||||
|
Enhancements
|
||||||
|
- updated Czech translation
|
||||||
|
|
||||||
|
Bug Fixes
|
||||||
|
-
|
||||||
|
|
||||||
1.3.16 (2012-06-07)
|
1.3.16 (2012-06-07)
|
||||||
-------------------
|
-------------------
|
||||||
Enhancements
|
Enhancements
|
||||||
|
@ -8,6 +19,7 @@ Enhancements
|
||||||
- it's no longer possible to click the "Upload" button multiple times
|
- it's no longer possible to click the "Upload" button multiple times
|
||||||
- allow delivery of mail with no subject, but alert the user
|
- allow delivery of mail with no subject, but alert the user
|
||||||
- updated Dutch, German, French translations
|
- updated Dutch, German, French translations
|
||||||
|
|
||||||
Bug Fixes
|
Bug Fixes
|
||||||
- fixed compilation under GNU/kFreeBSD
|
- fixed compilation under GNU/kFreeBSD
|
||||||
- fixed compilation for arm architecture
|
- fixed compilation for arm architecture
|
||||||
|
|
|
@ -67,4 +67,4 @@ vtodo_class2 = "(Skrytý úkol)";
|
||||||
= "%{Attendee} %{SentByText}dosud o Vaší pozvánce k události nerozhodl/a.";
|
= "%{Attendee} %{SentByText}dosud o Vaší pozvánce k události nerozhodl/a.";
|
||||||
|
|
||||||
/* Resources */
|
/* Resources */
|
||||||
"Maximum number of simultaneous bookings (%{NumberOfSimultaneousBookings}) reached for resource \"%{Cn} %{SystemEmail}\"." = "Maximální počet současných rezervací (%{NumberOfSimultaneousBookings}) byl dosažen pro zdroj \"%{Cn} %{SystemEmail}\".";
|
"Maximum number of simultaneous bookings (%{NumberOfSimultaneousBookings}) reached for resource \"%{Cn} %{SystemEmail}\". The conflicting event is \"%{EventTitle}\", and starts on %{StartDate}." = "Byl dosažen maximální počet současných rezervací\n(%{NumberOfSimultaneousBookings}) pro zdroj \"%{Cn} %{SystemEmail}\". Konfliktní událost je \"%{EventTitle}\" a začíná %{StartDate}.";
|
|
@ -1756,15 +1756,25 @@ inRecurrenceExceptionsForEvent: (iCalEvent *) theEvent
|
||||||
{
|
{
|
||||||
iCalCalendar *calendar;
|
iCalCalendar *calendar;
|
||||||
SOGoUser *ownerUser;
|
SOGoUser *ownerUser;
|
||||||
iCalEvent *event;
|
iCalEvent *event, *conflictingEvent;
|
||||||
|
|
||||||
|
NSString *eventUID;
|
||||||
BOOL scheduling;
|
BOOL scheduling;
|
||||||
|
|
||||||
calendar = [iCalCalendar parseSingleFromSource: [rq contentAsString]];
|
calendar = [iCalCalendar parseSingleFromSource: [rq contentAsString]];
|
||||||
|
|
||||||
event = [[calendar events] objectAtIndex: 0];
|
event = [[calendar events] objectAtIndex: 0];
|
||||||
|
eventUID = [event uid];
|
||||||
ownerUser = [SOGoUser userWithLogin: owner];
|
ownerUser = [SOGoUser userWithLogin: owner];
|
||||||
scheduling = [self _shouldScheduleEvent: [event organizer]];
|
scheduling = [self _shouldScheduleEvent: [event organizer]];
|
||||||
|
|
||||||
|
// make sure eventUID doesn't conflict with an existing event - see bug #1853
|
||||||
|
// TODO: send out a no-uid-conflict (DAV:href) xml element (rfc4791 section 5.3.2.1)
|
||||||
|
if (conflictingEvent = [container resourceNameForEventUID: eventUID])
|
||||||
|
{
|
||||||
|
NSString *reason = [NSString stringWithFormat: @"Event UID already in use. (%s)", eventUID];
|
||||||
|
return [NSException exceptionWithHTTPStatus:403 reason: reason];
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// New event and we're the organizer -- send invitation to all attendees
|
// New event and we're the organizer -- send invitation to all attendees
|
||||||
|
|
|
@ -4,6 +4,9 @@
|
||||||
# attendee1_delegate_username and superuser.
|
# attendee1_delegate_username and superuser.
|
||||||
# when writing new tests, avoid using superuser when not absolutely needed
|
# when writing new tests, avoid using superuser when not absolutely needed
|
||||||
|
|
||||||
|
# TODO
|
||||||
|
# - Individual tests should set the ACLs themselves on Resources tests
|
||||||
|
|
||||||
from config import hostname, port, username, password, \
|
from config import hostname, port, username, password, \
|
||||||
superuser, superuser_password, \
|
superuser, superuser_password, \
|
||||||
attendee1, attendee1_username, \
|
attendee1, attendee1_username, \
|
||||||
|
@ -791,6 +794,31 @@ class CalDAVSchedulingTest(unittest.TestCase):
|
||||||
for attendee in org_ev.vevent.attendee_list:
|
for attendee in org_ev.vevent.attendee_list:
|
||||||
self.assertNotEqual(self.user_email, attendee.value)
|
self.assertNotEqual(self.user_email, attendee.value)
|
||||||
|
|
||||||
|
def testEventsWithSameUID(self):
|
||||||
|
""" PUT 2 events with the same UID - bug #1853 """
|
||||||
|
|
||||||
|
ics_name = "test-same-uid.ics"
|
||||||
|
self.ics_list += [ics_name]
|
||||||
|
|
||||||
|
self._deleteEvent(self.client,
|
||||||
|
"%s%s" % (self.user_calendar, ics_name), None)
|
||||||
|
|
||||||
|
conflict_ics_name = "test-same-uid-conflict.ics"
|
||||||
|
self.ics_list += [ics_name]
|
||||||
|
|
||||||
|
self._deleteEvent(self.client,
|
||||||
|
"%s%s" % (self.user_calendar, conflict_ics_name), None)
|
||||||
|
|
||||||
|
# 1. create simple event
|
||||||
|
summary="same uid"
|
||||||
|
uid=summary
|
||||||
|
event = self._newEvent(summary, uid)
|
||||||
|
|
||||||
|
self._putEvent(self.client, "%s%s" % (self.user_calendar, ics_name), event)
|
||||||
|
|
||||||
|
# PUT the same event with a new filename - should trigger a 403
|
||||||
|
self._putEvent(self.client, "%s%s" % (self.user_calendar, conflict_ics_name), event, exp_status=403)
|
||||||
|
|
||||||
def testInvitationDelegation(self):
|
def testInvitationDelegation(self):
|
||||||
""" invitation delegation """
|
""" invitation delegation """
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
"Reply" = "Odpovědět";
|
"Reply" = "Odpovědět";
|
||||||
"Reply All" = "Odp. všem";
|
"Reply All" = "Odp. všem";
|
||||||
"Print" = "Tisk";
|
"Print" = "Tisk";
|
||||||
"Stop" = "Stop";
|
"Stop" = "Zastavit";
|
||||||
"Write" = "Napsat";
|
"Write" = "Napsat";
|
||||||
|
|
||||||
"Send" = "Odeslat";
|
"Send" = "Odeslat";
|
||||||
|
@ -19,6 +19,7 @@
|
||||||
"Attach" = "Přiložit";
|
"Attach" = "Přiložit";
|
||||||
"Save" = "Uložit";
|
"Save" = "Uložit";
|
||||||
"Options" = "Možnosti";
|
"Options" = "Možnosti";
|
||||||
|
"Close" = "Zavřít";
|
||||||
"Size" = "Velikost";
|
"Size" = "Velikost";
|
||||||
|
|
||||||
/* Tooltips */
|
/* Tooltips */
|
||||||
|
@ -63,8 +64,10 @@
|
||||||
"Shared Account: " = "Sdílený účet: ";
|
"Shared Account: " = "Sdílený účet: ";
|
||||||
|
|
||||||
/* acls */
|
/* acls */
|
||||||
"Default Roles" = "Výchozí oprávnění";
|
"Access rights to" = "Přístupová práva k";
|
||||||
"User rights for:" = "Uživatelská práva pro:";
|
"For user" = "Pro uživatele";
|
||||||
|
|
||||||
|
"Any Authenticated User" = "Všichni ověření uživatelé";
|
||||||
|
|
||||||
"List and see this folder" = "Prohlížet tuto složku";
|
"List and see this folder" = "Prohlížet tuto složku";
|
||||||
"Read mails from this folder" = "Číst maily v této složce";
|
"Read mails from this folder" = "Číst maily v této složce";
|
||||||
|
@ -104,15 +107,13 @@
|
||||||
"cc" = "Kopie";
|
"cc" = "Kopie";
|
||||||
"bcc" = "Skrytá kopie";
|
"bcc" = "Skrytá kopie";
|
||||||
|
|
||||||
"Addressbook" = "Adresář";
|
|
||||||
|
|
||||||
"Edit Draft..." = "Upravit koncept...";
|
"Edit Draft..." = "Upravit koncept...";
|
||||||
"Load Images" = "Nahrát obrázky";
|
"Load Images" = "Nahrát obrázky";
|
||||||
|
|
||||||
"Return Receipt" = "Return Receipt";
|
"Return Receipt" = "Potvrzení o přečtení";
|
||||||
"The sender of this message has asked to be notified when you read this message. Do you with to notify the sender?" = "The sender of this message has asked to be notified when you read this message. Do you with to notify the sender?";
|
"The sender of this message has asked to be notified when you read this message. Do you with to notify the sender?" = "Odesílatel této zprávy si přeje být informován o tom, že jste si tuto zprávu přečetli. Chcete odesílateli poslat potvrzení?";
|
||||||
"Return Receipt (displayed) - %@"= "Return Receipt (displayed) - %@";
|
"Return Receipt (displayed) - %@"= "Potvrzení o přečtení (zobrazeno) - %@";
|
||||||
"This is a Return Receipt for the mail that you sent to %@.\n\nNote: This Return Receipt only acknowledges that the message was displayed on the recipient's computer. There is no guarantee that the recipient has read or understood the message contents." = "This is a Return Receipt for the mail that you sent to %@.\n\nNote: This Return Receipt only acknowledges that the message was displayed on the recipient's computer. There is no guarantee that the recipient has read or understood the message contents.";
|
"This is a Return Receipt for the mail that you sent to %@.\n\nNote: This Return Receipt only acknowledges that the message was displayed on the recipient's computer. There is no guarantee that the recipient has read or understood the message contents." = "Toto je potvrzení o přečtení ke zprávě, kterou jste poslali pro %@.\n\nPoznámka: Potvrzení o přijetí znamená pouze to, že se zpráva zobrazila na počítači adresáta. Není ale zaručeno, že adresát zprávu četl a porozuměl jejímu obsahu.";
|
||||||
|
|
||||||
"Priority" = "Priorita";
|
"Priority" = "Priorita";
|
||||||
"highest" = "Nejvyšší";
|
"highest" = "Nejvyšší";
|
||||||
|
@ -123,6 +124,9 @@
|
||||||
|
|
||||||
"This mail is being sent from an unsecure network!" = "Tento mail je odesílán z nezabezpečené sítě!";
|
"This mail is being sent from an unsecure network!" = "Tento mail je odesílán z nezabezpečené sítě!";
|
||||||
|
|
||||||
|
"Address Book:" = "Adresář:";
|
||||||
|
"Search For:" = "Hledat:";
|
||||||
|
|
||||||
/* Popup "show" */
|
/* Popup "show" */
|
||||||
|
|
||||||
"all" = "všechny";
|
"all" = "všechny";
|
||||||
|
@ -141,8 +145,7 @@
|
||||||
"Date" = "Datum";
|
"Date" = "Datum";
|
||||||
"View" = "Zobrazit";
|
"View" = "Zobrazit";
|
||||||
"All" = "Všechny";
|
"All" = "Všechny";
|
||||||
"Unread" = "Nepřečtené";
|
"No message" = "Žádná zpráva";
|
||||||
"No message" = "No message";
|
|
||||||
"messages" = "zprávy";
|
"messages" = "zprávy";
|
||||||
|
|
||||||
"first" = "Nejnovější";
|
"first" = "Nejnovější";
|
||||||
|
@ -196,8 +199,8 @@
|
||||||
"Delete Folder" = "Smazat složku";
|
"Delete Folder" = "Smazat složku";
|
||||||
"Use This Folder For" = "Použít tuto složku pro";
|
"Use This Folder For" = "Použít tuto složku pro";
|
||||||
"Get Messages for Account" = "Stáhnout zprávy pro účet";
|
"Get Messages for Account" = "Stáhnout zprávy pro účet";
|
||||||
"Properties..." = "Properties...";
|
"Properties..." = "Vlastnosti...";
|
||||||
"Delegation..." = "Delegation...";
|
"Delegation..." = "Delegování...";
|
||||||
|
|
||||||
/* Use This Folder menu */
|
/* Use This Folder menu */
|
||||||
"Sent Messages" = "Odeslané zprávy";
|
"Sent Messages" = "Odeslané zprávy";
|
||||||
|
@ -208,7 +211,6 @@
|
||||||
"Open Message In New Window" = "Otevřít zprávu v novém okně";
|
"Open Message In New Window" = "Otevřít zprávu v novém okně";
|
||||||
"Reply to Sender Only" = "Odpovědět pouze odesílateli";
|
"Reply to Sender Only" = "Odpovědět pouze odesílateli";
|
||||||
"Reply to All" = "Odpovědět všem";
|
"Reply to All" = "Odpovědět všem";
|
||||||
"Forward" = "Přeposlat";
|
|
||||||
"Edit As New..." = "Upravit jako novou...";
|
"Edit As New..." = "Upravit jako novou...";
|
||||||
"Move To" = "Přesunout do";
|
"Move To" = "Přesunout do";
|
||||||
"Copy To" = "Kopírovat do";
|
"Copy To" = "Kopírovat do";
|
||||||
|
@ -255,11 +257,11 @@
|
||||||
"Please select a message." = "Vyberte zprávu prosím.";
|
"Please select a message." = "Vyberte zprávu prosím.";
|
||||||
"Please select a message to print." = "Zvolte prosím zprávu, kterou chcete tisknout.";
|
"Please select a message to print." = "Zvolte prosím zprávu, kterou chcete tisknout.";
|
||||||
"Please select only one message to print." = "Zvolte pouze jednu zprávu, kterou chcete tisknout.";
|
"Please select only one message to print." = "Zvolte pouze jednu zprávu, kterou chcete tisknout.";
|
||||||
"The message you have selected doesn't exist anymore." = "The message you have selected doesn't exist anymore.";
|
"The message you have selected doesn't exist anymore." = "Zpráva, kterou jste zvolili, již neexistuje.";
|
||||||
|
|
||||||
|
|
||||||
"The folder with name \"%{0}\" could not be created."
|
"The folder with name \"%{0}\" could not be created."
|
||||||
= "Složka s názvem \"%{0}\" nemohla být vytvořen.";
|
= "Složka s názvem \"%{0}\" nemohla být vytvořena.";
|
||||||
"This folder could not be renamed to \"%{0}\"."
|
"This folder could not be renamed to \"%{0}\"."
|
||||||
= "Tato složka nemohla být přejmenována na \"%{0}\".";
|
= "Tato složka nemohla být přejmenována na \"%{0}\".";
|
||||||
"The folder could not be deleted."
|
"The folder could not be deleted."
|
||||||
|
@ -272,20 +274,20 @@
|
||||||
"You need to choose a non-virtual folder!" = "Musíte zvolit ne-virtuální složku!";
|
"You need to choose a non-virtual folder!" = "Musíte zvolit ne-virtuální složku!";
|
||||||
|
|
||||||
"Moving a message into its own folder is impossible!"
|
"Moving a message into its own folder is impossible!"
|
||||||
= "Je nemožné přesunout zprávu do své vlastní složky!";
|
= "Zprávu nelze přesunout do své vlastní složky!";
|
||||||
"Copying a message into its own folder is impossible!"
|
"Copying a message into its own folder is impossible!"
|
||||||
= "Je nemožné zkopírovat zprávu do své vlastní složky!";
|
= "Zprávu nelze zkopírovat do své vlastní složky!";
|
||||||
|
|
||||||
/* Message operations */
|
/* Message operations */
|
||||||
"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?"
|
||||||
= "The messages could not be moved to the trash folder. Would you like to delete them immediately?";
|
= "Zprávy nemohou být přesunuty do koše. Chcete je smazat trvale?";
|
||||||
|
|
||||||
/* Message editing */
|
/* Message editing */
|
||||||
"error_validationfailed" = "Potvrzení selhalo";
|
|
||||||
"error_missingsubject" = "Chybí předmět";
|
"error_missingsubject" = "Chybí předmět";
|
||||||
"error_missingrecipients" = "Příjemci nebyli specifikováni";
|
"error_missingrecipients" = "Příjemci nebyli specifikováni";
|
||||||
|
"Send Anyway" = "Odeslat";
|
||||||
|
|
||||||
/* 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" = "Zprávu nelze odeslat: adresy všech příjemců jsou neplatné.";
|
||||||
"cannot send message (smtp) - recipients discarded:" = "Cannot send message. The following addresses are invalid:";
|
"cannot send message (smtp) - recipients discarded:" = "Zprávu nelze odeslat: následující adresy jsou neplatné:";
|
||||||
"cannot send message: (smtp) error when connecting" = "Cannot send message: error when connecting to the SMTP server.";
|
"cannot send message: (smtp) error when connecting" = "Zprávu nelze odeslat: při spojení se SMTP serverem došlo k chybě.";
|
||||||
|
|
Loading…
Reference in New Issue