mirror of
https://github.com/inverse-inc/sogo.git
synced 2026-06-27 12:54:17 +00:00
Merge to 2.2.2
This commit is contained in:
+26
@@ -235,6 +235,32 @@ trans.sk = SoObjects/Contacts/Slovak.lproj/Localizable.strings
|
||||
trans.sv = SoObjects/Contacts/Swedish.lproj/Localizable.strings
|
||||
trans.uk = SoObjects/Contacts/Ukrainian.lproj/Localizable.strings
|
||||
|
||||
[sogo.soobjects-mailer]
|
||||
source_file = SoObjects/Mailer/English.lproj/Localizable.strings
|
||||
source_lang = en
|
||||
trans.ar = SoObjects/Mailer/Arabic.lproj/Localizable.strings
|
||||
trans.ca = SoObjects/Mailer/Catalan.lproj/Localizable.strings
|
||||
trans.cs = SoObjects/Mailer/Czech.lproj/Localizable.strings
|
||||
trans.cy = SoObjects/Mailer/Welsh.lproj/Localizable.strings
|
||||
trans.da_DK = SoObjects/Mailer/Danish.lproj/Localizable.strings
|
||||
trans.de = SoObjects/Mailer/German.lproj/Localizable.strings
|
||||
trans.es_AR = SoObjects/Mailer/SpanishArgentina.lproj/Localizable.strings
|
||||
trans.es_ES = SoObjects/Mailer/SpanishSpain.lproj/Localizable.strings
|
||||
trans.fi = SoObjects/Mailer/Finnish.lproj/Localizable.strings
|
||||
trans.fr = SoObjects/Mailer/French.lproj/Localizable.strings
|
||||
trans.hu = SoObjects/Mailer/Hungarian.lproj/Localizable.strings
|
||||
trans.is = SoObjects/Mailer/Icelandic.lproj/Localizable.strings
|
||||
trans.it = SoObjects/Mailer/Italian.lproj/Localizable.strings
|
||||
trans.nb_NO = SoObjects/Mailer/NorwegianBokmal.lproj/Localizable.strings
|
||||
trans.nl = SoObjects/Mailer/Dutch.lproj/Localizable.strings
|
||||
trans.nn_NO = SoObjects/Mailer/NorwegianNynorsk.lproj/Localizable.strings
|
||||
trans.pl = SoObjects/Mailer/Polish.lproj/Localizable.strings
|
||||
trans.pt_BR = SoObjects/Mailer/BrazilianPortuguese.lproj/Localizable.strings
|
||||
trans.ru = SoObjects/Mailer/Russian.lproj/Localizable.strings
|
||||
trans.sk = SoObjects/Mailer/Slovak.lproj/Localizable.strings
|
||||
trans.sv = SoObjects/Mailer/Swedish.lproj/Localizable.strings
|
||||
trans.uk = SoObjects/Mailer/Ukrainian.lproj/Localizable.strings
|
||||
|
||||
[sogo.ui-mailpartviewers]
|
||||
source_file = UI/MailPartViewers/English.lproj/Localizable.strings
|
||||
source_lang = en
|
||||
|
||||
@@ -46,6 +46,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
- (NSString *) realCollectionIdWithFolderType: (SOGoMicrosoftActiveSyncFolderType *) folderType;
|
||||
- (NSCalendarDate *) calendarDate;
|
||||
- (NSString *) deviceId;
|
||||
- (NSString *) deviceType;
|
||||
- (NSString *) command;
|
||||
- (NSData *) convertHexStringToBytes;
|
||||
|
||||
|
||||
@@ -139,7 +139,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
NSString *s;
|
||||
int i;
|
||||
|
||||
components = [[[self componentsSeparatedByString: @"/"] lastObject] componentsSeparatedByString: @"&"];
|
||||
components = [[[self componentsSeparatedByString: @"?"] lastObject] componentsSeparatedByString: @"&"];
|
||||
|
||||
for (i = 0; i < [components count]; i++)
|
||||
{
|
||||
@@ -169,6 +169,23 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
return s;
|
||||
}
|
||||
|
||||
//
|
||||
// This method extracts the "DeviceType" from a URI:
|
||||
//
|
||||
// /SOGo/Microsoft-Server-ActiveSync?Cmd=FolderSync&User=sogo10&DeviceId=SEC17CD1A3E9E3F2&DeviceType=SAMSUNGSGHI317M
|
||||
//
|
||||
- (NSString *) deviceType
|
||||
{
|
||||
NSString *s;
|
||||
|
||||
s = [self _valueForParameter: @"DEVICETYPE="];
|
||||
|
||||
if (!s)
|
||||
s = @"Unknown";
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
//
|
||||
//
|
||||
//
|
||||
|
||||
@@ -58,18 +58,13 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
#import <NGImap4/NSString+Imap4.h>
|
||||
|
||||
#import <NGMime/NGMimeBodyPart.h>
|
||||
#import <NGMime/NGMimeMultipartBody.h>
|
||||
#import <NGMail/NGMimeMessageParser.h>
|
||||
#import <NGMail/NGMimeMessage.h>
|
||||
#import <NGMail/NGMimeMessageGenerator.h>
|
||||
|
||||
#import <DOM/DOMElement.h>
|
||||
#import <DOM/DOMProtocols.h>
|
||||
|
||||
#import <EOControl/EOQualifier.h>
|
||||
|
||||
#import <SOGo/NSArray+DAV.h>
|
||||
#import <SOGo/SOGoCache.h>
|
||||
#import <SOGo/NSDictionary+DAV.h>
|
||||
#import <SOGo/SOGoDAVAuthenticator.h>
|
||||
#import <SOGo/SOGoDomainDefaults.h>
|
||||
@@ -392,7 +387,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
inContext: context
|
||||
acquire: NO];
|
||||
|
||||
[sogoObject delete];
|
||||
if (![sogoObject isKindOfClass: [NSException class]])
|
||||
[sogoObject delete];
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -572,8 +568,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
default:
|
||||
{
|
||||
NSMutableArray *addedOrChangedMessages;
|
||||
NSString *uid, *command, *key;
|
||||
SOGoMailObject *mailObject;
|
||||
NSString *uid, *command;
|
||||
NSDictionary *aMessage;
|
||||
NSArray *allMessages;
|
||||
int deleted_count;
|
||||
@@ -623,13 +619,27 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
uid = [[[aMessage allKeys] lastObject] stringValue];
|
||||
command = [[aMessage allValues] lastObject];
|
||||
|
||||
// We check for Outlook stupidity to avoid creating duplicates - see the comment
|
||||
// in SOGoActiveSyncDispatcher.m: -processMoveItems:inResponse: for more details.
|
||||
key = [NSString stringWithFormat: @"%@+%@+%@+%@",
|
||||
[[context activeUser] login],
|
||||
[context objectForKey: @"DeviceType"],
|
||||
[theCollection displayName],
|
||||
uid];
|
||||
|
||||
if ([[SOGoCache sharedCache] valueForKey: key])
|
||||
{
|
||||
[[SOGoCache sharedCache] removeValueForKey: key];
|
||||
command = @"changed";
|
||||
}
|
||||
|
||||
if ([command isEqualToString: @"added"])
|
||||
[s appendString: @"<Add xmlns=\"AirSync:\">"];
|
||||
else
|
||||
[s appendString: @"<Change xmlns=\"AirSync:\">"];
|
||||
|
||||
mailObject = [theCollection lookupName: uid
|
||||
inContext: context
|
||||
inContext: context
|
||||
acquire: 0];
|
||||
|
||||
[s appendFormat: @"<ServerId xmlns=\"AirSync:\">%@</ServerId>", uid];
|
||||
|
||||
@@ -76,6 +76,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
#import <SOGo/NSArray+DAV.h>
|
||||
#import <SOGo/NSDictionary+DAV.h>
|
||||
#import <SOGo/SOGoCache.h>
|
||||
#import <SOGo/SOGoDAVAuthenticator.h>
|
||||
#import <SOGo/SOGoDomainDefaults.h>
|
||||
#import <SOGo/SOGoMailer.h>
|
||||
@@ -880,10 +881,6 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
NSDictionary *response;
|
||||
NSString *v;
|
||||
|
||||
// userFolder = [[context activeUser] homeFolderInContext: context];
|
||||
// accountsFolder = [userFolder lookupName: @"Mail" inContext: context acquire: NO];
|
||||
// currentFolder = [accountsFolder lookupName: @"0" inContext: context acquire: NO];
|
||||
|
||||
currentCollection = [self collectionFromId: srcFolderId type: srcFolderType];
|
||||
|
||||
@@ -925,6 +922,28 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
NSMutableString *s;
|
||||
NSData *d;
|
||||
|
||||
//
|
||||
// If the MoveItems operation is initiated by an Outlook client, we save the "deviceType+dstMessageId" to use it later in order to
|
||||
// modify the Sync command from "add" to "change" (see SOGoActiveSyncDispatcher+Sync.m: -processSyncGetChanges: ...).
|
||||
// This is to avoid Outlook creating dupes when moving messages across folfers.
|
||||
//
|
||||
if ([[context objectForKey: @"DeviceType"] isEqualToString: @"WindowsOutlook15"])
|
||||
{
|
||||
NSString *key;
|
||||
|
||||
// The key must be pretty verbose. We use the <uid>+<DeviceType>+<target folder>+<DstMsgId>
|
||||
key = [NSString stringWithFormat: @"%@+%@+%@+%@",
|
||||
[[context activeUser] login],
|
||||
[context objectForKey: @"DeviceType"],
|
||||
dstFolderId,
|
||||
dstMessageId];
|
||||
|
||||
|
||||
[[SOGoCache sharedCache] setValue: @"MovedItem"
|
||||
forKey: key];
|
||||
}
|
||||
|
||||
|
||||
// Everything is alright, lets return the proper response. "Status == 3" means success.
|
||||
s = [NSMutableString string];
|
||||
|
||||
@@ -1522,19 +1541,50 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
ASSIGN(context, theContext);
|
||||
|
||||
// Get the device ID and "stash" it
|
||||
// Get the device ID, device type and "stash" them
|
||||
deviceId = [[theRequest uri] deviceId];
|
||||
[context setObject: deviceId forKey: @"DeviceId"];
|
||||
[context setObject: [[theRequest uri] deviceType] forKey: @"DeviceType"];
|
||||
|
||||
cmdName = [[theRequest uri] command];
|
||||
|
||||
//
|
||||
// If the MS-ASProtocolVersion header is set to "12.1", the body of the SendMail request is
|
||||
// is a "message/rfc822" payload - otherwise, it's a WBXML blob.
|
||||
//
|
||||
if ([cmdName caseInsensitiveCompare: @"SendMail"] == NSOrderedSame &&
|
||||
[[theRequest headerForKey: @"content-type"] caseInsensitiveCompare: @"message/rfc822"] == NSOrderedSame)
|
||||
{
|
||||
NSString *s, *xml;
|
||||
|
||||
if ([[theRequest contentAsString] rangeOfString: @"Date: "
|
||||
options: NSCaseInsensitiveSearch].location == NSNotFound)
|
||||
{
|
||||
NSString *value;
|
||||
|
||||
value = [[NSDate date] descriptionWithCalendarFormat: @"%a, %d %b %Y %H:%M:%S %z" timeZone: [NSTimeZone timeZoneWithName: @"GMT"] locale: nil];
|
||||
s = [NSString stringWithFormat: @"Date: %@\n%@", value, [theRequest contentAsString]];
|
||||
}
|
||||
else
|
||||
{
|
||||
s = [theRequest contentAsString];
|
||||
}
|
||||
|
||||
xml = [NSString stringWithFormat: @"<?xml version=\"1.0\"?><!DOCTYPE ActiveSync PUBLIC \"-//MICROSOFT//DTD ActiveSync//EN\" \"http://www.microsoft.com/\"><SendMail xmlns=\"ComposeMail:\"><SaveInSentItems/><MIME>%@</MIME></SendMail>", [s stringByEncodingBase64]];
|
||||
|
||||
d = [xml dataUsingEncoding: NSASCIIStringEncoding];
|
||||
}
|
||||
else
|
||||
{
|
||||
d = [[theRequest content] wbxml2xml];
|
||||
}
|
||||
|
||||
d = [[theRequest content] wbxml2xml];
|
||||
documentElement = nil;
|
||||
|
||||
if (!d)
|
||||
{
|
||||
// We check if it's a Ping command with no body.
|
||||
// See http://msdn.microsoft.com/en-us/library/ee200913(v=exchg.80).aspx for details
|
||||
cmdName = [[theRequest uri] command];
|
||||
|
||||
// See http://msdn.microsoft.com/en-us/library/ee200913(v=exchg.80).aspx for details
|
||||
if ([cmdName caseInsensitiveCompare: @"Ping"] != NSOrderedSame)
|
||||
return [NSException exceptionWithHTTPStatus: 500];
|
||||
}
|
||||
@@ -1561,7 +1611,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
[theResponse setHeader: @"application/vnd.ms-sync.wbxml" forKey: @"Content-Type"];
|
||||
[theResponse setHeader: @"14.1" forKey: @"MS-Server-ActiveSync"];
|
||||
[theResponse setHeader: @"Sync,SendMail,SmartForward,SmartReply,GetAttachment,GetHierarchy,CreateCollection,DeleteCollection,MoveCollection,FolderSync,FolderCreate,FolderDelete,FolderUpdate,MoveItems,GetItemEstimate,MeetingResponse,Search,Settings,Ping,ItemOperations,Provision,ResolveRecipients,ValidateCert" forKey: @"MS-ASProtocolCommands"];
|
||||
[theResponse setHeader: @"Sync,SendMail,SmartForward,SmartReply,GetAttachment,GetHierarchy,CreateCollection,DeleteCollection,MoveCollection,FolderSync,FolderCreate,FolderDelete,FolderUpdate,MoveItems,GetItemEstimate,MeetingResponse,Search,Settings,Ping,ItemOperations,ResolveRecipients,ValidateCert" forKey: @"MS-ASProtocolCommands"];
|
||||
[theResponse setHeader: @"2.0,2.1,2.5,12.0,12.1,14.0,14.1" forKey: @"MS-ASProtocolVersions"];
|
||||
|
||||
RELEASE(context);
|
||||
|
||||
@@ -42,12 +42,21 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
#import <NGCards/iCalTimeZone.h>
|
||||
|
||||
#import <NGExtensions/NGBase64Coding.h>
|
||||
#import <NGExtensions/NGQuotedPrintableCoding.h>
|
||||
#import <NGExtensions/NSString+misc.h>
|
||||
#import <NGExtensions/NSString+Encoding.h>
|
||||
#import <NGImap4/NGImap4Envelope.h>
|
||||
#import <NGImap4/NGImap4EnvelopeAddress.h>
|
||||
#import <NGObjWeb/WOContext+SoObjects.h>
|
||||
|
||||
#import <NGMime/NGMimeBodyPart.h>
|
||||
#import <NGMime/NGMimeFileData.h>
|
||||
#import <NGMime/NGMimeMultipartBody.h>
|
||||
#import <NGMime/NGMimeType.h>
|
||||
#import <NGMail/NGMimeMessageParser.h>
|
||||
#import <NGMail/NGMimeMessage.h>
|
||||
#import <NGMail/NGMimeMessageGenerator.h>
|
||||
|
||||
#include "iCalTimeZone+ActiveSync.h"
|
||||
#include "NSData+ActiveSync.h"
|
||||
#include "NSDate+ActiveSync.h"
|
||||
@@ -196,7 +205,7 @@ struct GlobalObjectId {
|
||||
//
|
||||
- (NSData *) _preferredBodyDataInMultipartUsingType: (int) theType
|
||||
{
|
||||
NSString *key, *plainKey, *htmlKey, *type, *subtype;
|
||||
NSString *encoding, *key, *plainKey, *htmlKey, *type, *subtype;
|
||||
NSDictionary *textParts, *part;
|
||||
NSEnumerator *e;
|
||||
NSData *d;
|
||||
@@ -219,18 +228,135 @@ struct GlobalObjectId {
|
||||
plainKey = key;
|
||||
}
|
||||
|
||||
key = nil;
|
||||
|
||||
if (theType == 2)
|
||||
{
|
||||
d = [[self fetchPlainTextParts] objectForKey: htmlKey];
|
||||
}
|
||||
key = htmlKey;
|
||||
else if (theType == 1)
|
||||
key = plainKey;
|
||||
|
||||
if (key)
|
||||
{
|
||||
d = [[self fetchPlainTextParts] objectForKey: plainKey];
|
||||
d = [[self fetchPlainTextParts] objectForKey: key];
|
||||
|
||||
encoding = [[self lookupInfoForBodyPart: key] objectForKey: @"encoding"];
|
||||
|
||||
if ([encoding caseInsensitiveCompare: @"base64"] == NSOrderedSame)
|
||||
d = [d dataByDecodingBase64];
|
||||
else if ([encoding caseInsensitiveCompare: @"quoted-printable"] == NSOrderedSame)
|
||||
d = [d dataByDecodingQuotedPrintableTransferEncoding];
|
||||
}
|
||||
|
||||
return d;
|
||||
}
|
||||
|
||||
//
|
||||
//
|
||||
//
|
||||
- (void) _sanitizedMIMEPart: (id) thePart
|
||||
performed: (BOOL *) b
|
||||
{
|
||||
if ([thePart isKindOfClass: [NGMimeMultipartBody class]])
|
||||
{
|
||||
NGMimeBodyPart *part;
|
||||
NSArray *parts;
|
||||
int i;
|
||||
|
||||
parts = [thePart parts];
|
||||
|
||||
for (i = 0; i < [parts count]; i++)
|
||||
{
|
||||
part = [parts objectAtIndex: i];
|
||||
|
||||
[self _sanitizedMIMEPart: part
|
||||
performed: b];
|
||||
}
|
||||
}
|
||||
else if ([thePart isKindOfClass: [NGMimeBodyPart class]])
|
||||
{
|
||||
NGMimeFileData *fdata;
|
||||
id body;
|
||||
|
||||
body = [thePart body];
|
||||
|
||||
if ([body isKindOfClass: [NGMimeMultipartBody class]])
|
||||
{
|
||||
[self _sanitizedMIMEPart: body
|
||||
performed: b];
|
||||
}
|
||||
else if ([body isKindOfClass: [NSData class]] &&
|
||||
[[[thePart contentType] type] isEqualToString: @"text"] &&
|
||||
([[[thePart contentType] subType] isEqualToString: @"plain"] || [[[thePart contentType] subType] isEqualToString: @"html"]))
|
||||
{
|
||||
// We make sure everything is encoded in UTF-8
|
||||
NSString *charset, *s;
|
||||
NGMimeType *mimeType;
|
||||
int encoding;
|
||||
|
||||
charset = [[thePart contentType] valueOfParameter: @"charset"];
|
||||
encoding = [NGMimeType stringEncodingForCharset: charset];
|
||||
|
||||
s = [[NSString alloc] initWithData: body encoding: encoding];
|
||||
AUTORELEASE(s);
|
||||
|
||||
if (s)
|
||||
{
|
||||
body = [s dataUsingEncoding: NSUTF8StringEncoding];
|
||||
}
|
||||
|
||||
mimeType = [NGMimeType mimeType: [[thePart contentType] type]
|
||||
subType: [[thePart contentType] subType]
|
||||
parameters: [NSDictionary dictionaryWithObject: @"utf-8" forKey: @"charset"]];
|
||||
[thePart setHeader: mimeType forKey: @"content-type"];
|
||||
|
||||
fdata = [[NGMimeFileData alloc] initWithBytes: [body bytes]
|
||||
length: [body length]];
|
||||
|
||||
[thePart setBody: fdata];
|
||||
RELEASE(fdata);
|
||||
*b = YES;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
//
|
||||
//
|
||||
- (NSData *) _sanitizedMIMEMessage
|
||||
{
|
||||
NGMimeMessageParser *parser;
|
||||
NGMimeMessage *message;
|
||||
NSData *d;
|
||||
|
||||
BOOL b;
|
||||
|
||||
d = [self content];
|
||||
|
||||
parser = [[NGMimeMessageParser alloc] init];
|
||||
AUTORELEASE(parser);
|
||||
|
||||
message = [parser parsePartFromData: d];
|
||||
b = NO;
|
||||
|
||||
if (message)
|
||||
{
|
||||
[self _sanitizedMIMEPart: [message body]
|
||||
performed: &b];
|
||||
|
||||
if (b)
|
||||
{
|
||||
NGMimeMessageGenerator *generator;
|
||||
|
||||
generator = [[NGMimeMessageGenerator alloc] init];
|
||||
AUTORELEASE(generator);
|
||||
|
||||
d = [generator generateMimeFromPart: message];
|
||||
}
|
||||
}
|
||||
|
||||
return d;
|
||||
}
|
||||
|
||||
//
|
||||
//
|
||||
//
|
||||
@@ -266,6 +392,8 @@ struct GlobalObjectId {
|
||||
|
||||
if ([encoding caseInsensitiveCompare: @"base64"] == NSOrderedSame)
|
||||
d = [d dataByDecodingBase64];
|
||||
else if ([encoding caseInsensitiveCompare: @"quoted-printable"] == NSOrderedSame)
|
||||
d = [d dataByDecodingQuotedPrintableTransferEncoding];
|
||||
|
||||
// Check if we must convert html->plain
|
||||
if (theType == 1 && [subtype isEqualToString: @"html"])
|
||||
@@ -286,7 +414,12 @@ struct GlobalObjectId {
|
||||
}
|
||||
else if (theType == 4)
|
||||
{
|
||||
d = [self content];
|
||||
// We sanitize the content *ONLY* for Outlook clients. Outlook has strange issues
|
||||
// with quoted-printable/base64 encoded text parts. It just doesn't decode them.
|
||||
if ([[context objectForKey: @"DeviceType"] isEqualToString: @"WindowsOutlook15"])
|
||||
d = [self _sanitizedMIMEMessage];
|
||||
else
|
||||
d = [self content];
|
||||
}
|
||||
|
||||
return d;
|
||||
@@ -531,6 +664,7 @@ struct GlobalObjectId {
|
||||
// [s appendFormat: @"<Reply-To xmlns=\"Email:\">%@</Reply-To>", [addressFormatter stringForArray: replyTo]];
|
||||
|
||||
// InternetCPID - 65001 == UTF-8, we use this all the time for now.
|
||||
// - 20127 == US-ASCII
|
||||
[s appendFormat: @"<InternetCPID xmlns=\"Email:\">%@</InternetCPID>", @"65001"];
|
||||
|
||||
// Body - namespace 17
|
||||
@@ -549,6 +683,10 @@ struct GlobalObjectId {
|
||||
// FIXME: This is a hack. We should normally avoid doing this as we might get
|
||||
// broken encodings. We should rather tell that the data was truncated and expect
|
||||
// a ItemOperations call to download the whole base64 encoding multipart.
|
||||
//
|
||||
// See http://social.msdn.microsoft.com/Forums/en-US/b9944e49-9bc9-4ab8-ba33-a9fc08557c5b/mime-raw-data-in-eas-sync-response?forum=os_exchangeprotocols
|
||||
// for an "interesting" discussion around this.
|
||||
//
|
||||
if (!content)
|
||||
content = [[NSString alloc] initWithData: d encoding: NSISOLatin1StringEncoding];
|
||||
|
||||
@@ -561,10 +699,14 @@ struct GlobalObjectId {
|
||||
|
||||
[s appendString: @"<Body xmlns=\"AirSyncBase:\">"];
|
||||
[s appendFormat: @"<Type>%d</Type>", preferredBodyType];
|
||||
[s appendFormat: @"<EstimatedDataSize>%d</EstimatedDataSize>", len];
|
||||
[s appendFormat: @"<Truncated>%d</Truncated>", 0];
|
||||
[s appendFormat: @"<Truncated>%d</Truncated>", truncated];
|
||||
[s appendFormat: @"<Preview></Preview>"];
|
||||
|
||||
if (!truncated)
|
||||
[s appendFormat: @"<Data>%@</Data>", content];
|
||||
{
|
||||
[s appendFormat: @"<Data>%@</Data>", content];
|
||||
[s appendFormat: @"<EstimatedDataSize>%d</EstimatedDataSize>", len];
|
||||
}
|
||||
[s appendString: @"</Body>"];
|
||||
}
|
||||
|
||||
|
||||
@@ -62,7 +62,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
[response setHeader: @"OPTIONS, POST" forKey: @"Allow"];
|
||||
[response setHeader: @"14.1" forKey: @"MS-Server-ActiveSync"];
|
||||
[response setHeader: @"2.0,2.1,2.5,12.0,12.1,14.0,14.1" forKey: @"MS-ASProtocolVersions"];
|
||||
[response setHeader: @"Sync,SendMail,SmartForward,SmartReply,GetAttachment,GetHierarchy,CreateCollection,DeleteCollection,MoveCollection,FolderSync,FolderCreate,FolderDelete,FolderUpdate,MoveItems,GetItemEstimate,MeetingResponse,Search,Settings,Ping,ItemOperations,Provision,ResolveRecipients,ValidateCert" forKey: @"MS-ASProtocolCommands"];
|
||||
[response setHeader: @"Sync,SendMail,SmartForward,SmartReply,GetAttachment,GetHierarchy,CreateCollection,DeleteCollection,MoveCollection,FolderSync,FolderCreate,FolderDelete,FolderUpdate,MoveItems,GetItemEstimate,MeetingResponse,Search,Settings,Ping,ItemOperations,ResolveRecipients,ValidateCert" forKey: @"MS-ASProtocolCommands"];
|
||||
[response setHeader: @"OPTIONS, POST" forKey: @"Public"];
|
||||
}
|
||||
else
|
||||
|
||||
@@ -1,3 +1,422 @@
|
||||
commit 04bdb22b00f5de7a5a399205ec91ba9de881076d
|
||||
Author: Francis Lachapelle <flachapelle@inverse.ca>
|
||||
Date: Fri Mar 21 15:20:45 2014 -0400
|
||||
|
||||
Preparation for release 2.2.2
|
||||
|
||||
M Documentation/SOGo Installation Guide.odt
|
||||
M Documentation/SOGo Mobile Devices Configuration.odt
|
||||
M Documentation/SOGo Mozilla Thunderbird Configuration.odt
|
||||
M Documentation/SOGo Native Microsoft Outlook Configuration.odt
|
||||
M NEWS
|
||||
|
||||
commit 874b1d9eba08519c379b0c38a0b9983070552499
|
||||
Author: Ludovic Marcotte <lmarcotte@inverse.ca>
|
||||
Date: Fri Mar 21 14:08:53 2014 -0400
|
||||
|
||||
Added NEWS entry for previous commit
|
||||
|
||||
M NEWS
|
||||
|
||||
commit b1436884192d4e8e1ee8e04266df0b676c503f61
|
||||
Author: Ludovic Marcotte <lmarcotte@inverse.ca>
|
||||
Date: Fri Mar 21 13:55:59 2014 -0400
|
||||
|
||||
Fix for bug #2669
|
||||
|
||||
M ActiveSync/NSString+ActiveSync.m
|
||||
M ActiveSync/SOGoActiveSyncDispatcher+Sync.m
|
||||
M ActiveSync/SOGoActiveSyncDispatcher.m
|
||||
|
||||
commit 5f3d2d988eb4ee6e198e6d1b220d89ae046850d0
|
||||
Author: Francis Lachapelle <flachapelle@inverse.ca>
|
||||
Date: Fri Mar 21 13:51:36 2014 -0400
|
||||
|
||||
Update translations
|
||||
|
||||
M NEWS
|
||||
M SoObjects/Mailer/Finnish.lproj/Localizable.strings
|
||||
M SoObjects/Mailer/German.lproj/Localizable.strings
|
||||
M SoObjects/Mailer/SpanishSpain.lproj/Localizable.strings
|
||||
M UI/MailerUI/Finnish.lproj/Localizable.strings
|
||||
M UI/MailerUI/German.lproj/Localizable.strings
|
||||
M UI/MailerUI/SpanishSpain.lproj/Localizable.strings
|
||||
|
||||
commit 93f1540c178bc64fbbf60077354ba7b4e649f556
|
||||
Author: Francis Lachapelle <flachapelle@inverse.ca>
|
||||
Date: Fri Mar 21 13:47:40 2014 -0400
|
||||
|
||||
Update jQuery File Upload to version 9.5.7
|
||||
|
||||
M NEWS
|
||||
M UI/WebServerResources/jquery.fileupload.js
|
||||
M UI/WebServerResources/jquery.iframe-transport.js
|
||||
|
||||
commit 877e44c6d24394b71143ec730f035d7effafd194
|
||||
Author: Francis Lachapelle <flachapelle@inverse.ca>
|
||||
Date: Fri Mar 21 13:32:28 2014 -0400
|
||||
|
||||
Update CKEditor to version 4.3.3
|
||||
|
||||
M NEWS
|
||||
M UI/WebServerResources/ckeditor/LICENSE.md
|
||||
M UI/WebServerResources/ckeditor/build-config.js
|
||||
M UI/WebServerResources/ckeditor/ckeditor.js
|
||||
M UI/WebServerResources/ckeditor/contents.css
|
||||
M UI/WebServerResources/ckeditor/lang/ar.js
|
||||
M UI/WebServerResources/ckeditor/lang/ca.js
|
||||
M UI/WebServerResources/ckeditor/lang/cs.js
|
||||
M UI/WebServerResources/ckeditor/lang/cy.js
|
||||
M UI/WebServerResources/ckeditor/lang/da.js
|
||||
M UI/WebServerResources/ckeditor/lang/de.js
|
||||
M UI/WebServerResources/ckeditor/lang/en.js
|
||||
M UI/WebServerResources/ckeditor/lang/es.js
|
||||
M UI/WebServerResources/ckeditor/lang/fi.js
|
||||
M UI/WebServerResources/ckeditor/lang/fr.js
|
||||
M UI/WebServerResources/ckeditor/lang/hu.js
|
||||
M UI/WebServerResources/ckeditor/lang/is.js
|
||||
M UI/WebServerResources/ckeditor/lang/it.js
|
||||
M UI/WebServerResources/ckeditor/lang/nb.js
|
||||
M UI/WebServerResources/ckeditor/lang/nl.js
|
||||
M UI/WebServerResources/ckeditor/lang/no.js
|
||||
M UI/WebServerResources/ckeditor/lang/pl.js
|
||||
M UI/WebServerResources/ckeditor/lang/pt-br.js
|
||||
M UI/WebServerResources/ckeditor/lang/ru.js
|
||||
M UI/WebServerResources/ckeditor/lang/sk.js
|
||||
M UI/WebServerResources/ckeditor/lang/sv.js
|
||||
M UI/WebServerResources/ckeditor/lang/uk.js
|
||||
M UI/WebServerResources/ckeditor/plugins/about/dialogs/about.js
|
||||
M UI/WebServerResources/ckeditor/plugins/clipboard/dialogs/paste.js
|
||||
M UI/WebServerResources/ckeditor/plugins/colordialog/dialogs/colordialog.js
|
||||
M UI/WebServerResources/ckeditor/plugins/dialog/dialogDefinition.js
|
||||
M UI/WebServerResources/ckeditor/plugins/image/dialogs/image.js
|
||||
M UI/WebServerResources/ckeditor/plugins/link/dialogs/anchor.js
|
||||
M UI/WebServerResources/ckeditor/plugins/link/dialogs/link.js
|
||||
M UI/WebServerResources/ckeditor/plugins/scayt/dialogs/options.js
|
||||
M UI/WebServerResources/ckeditor/plugins/table/dialogs/table.js
|
||||
M UI/WebServerResources/ckeditor/plugins/tabletools/dialogs/tableCell.js
|
||||
M UI/WebServerResources/ckeditor/plugins/wsc/dialogs/wsc.js
|
||||
M UI/WebServerResources/ckeditor/skins/moono/dialog.css
|
||||
M UI/WebServerResources/ckeditor/skins/moono/dialog_ie.css
|
||||
M UI/WebServerResources/ckeditor/skins/moono/dialog_ie7.css
|
||||
M UI/WebServerResources/ckeditor/skins/moono/dialog_ie8.css
|
||||
M UI/WebServerResources/ckeditor/skins/moono/dialog_iequirks.css
|
||||
M UI/WebServerResources/ckeditor/skins/moono/dialog_opera.css
|
||||
M UI/WebServerResources/ckeditor/skins/moono/editor.css
|
||||
M UI/WebServerResources/ckeditor/skins/moono/editor_gecko.css
|
||||
M UI/WebServerResources/ckeditor/skins/moono/editor_ie.css
|
||||
M UI/WebServerResources/ckeditor/skins/moono/editor_ie7.css
|
||||
M UI/WebServerResources/ckeditor/skins/moono/editor_ie8.css
|
||||
M UI/WebServerResources/ckeditor/skins/moono/editor_iequirks.css
|
||||
M UI/WebServerResources/ckeditor/skins/moono/readme.md
|
||||
M UI/WebServerResources/ckeditor/styles.js
|
||||
|
||||
commit 4ca3d351e023b7213f178fa108f5e9a8a17e2194
|
||||
Author: Ludovic Marcotte <lmarcotte@inverse.ca>
|
||||
Date: Fri Mar 21 09:05:52 2014 -0400
|
||||
|
||||
Fixed previous commit
|
||||
|
||||
M ActiveSync/SOGoMailObject+ActiveSync.m
|
||||
|
||||
commit 19b67049558d29fe15fe57336d1dd278a672a5a6
|
||||
Author: Ludovic Marcotte <lmarcotte@inverse.ca>
|
||||
Date: Fri Mar 21 09:02:39 2014 -0400
|
||||
|
||||
Only touch text/plain and text/html parts during Outlook sanitization
|
||||
|
||||
M ActiveSync/SOGoMailObject+ActiveSync.m
|
||||
|
||||
commit 64787555ff5f7b6f01db0752e8cdbb8d9e43c00b
|
||||
Author: Francis Lachapelle <flachapelle@inverse.ca>
|
||||
Date: Thu Mar 20 22:14:45 2014 -0400
|
||||
|
||||
Fix classification icon of events
|
||||
|
||||
Fixes #2664
|
||||
|
||||
M NEWS
|
||||
M UI/WebServerResources/SchedulerUI.js
|
||||
|
||||
commit 27ffcf240fa918c29703adeea89f29858574a2db
|
||||
Author: Francis Lachapelle <flachapelle@inverse.ca>
|
||||
Date: Thu Mar 20 15:29:32 2014 -0400
|
||||
|
||||
Fix handling of accents when filtering contacts
|
||||
|
||||
Fixes #2656
|
||||
|
||||
M NEWS
|
||||
M UI/Contacts/UIxContactsListActions.m
|
||||
M UI/WebServerResources/ContactsUI.js
|
||||
|
||||
commit 893d75bd5f66eb08ff3684fc0ad746f00cc05094
|
||||
Author: Francis Lachapelle <flachapelle@inverse.ca>
|
||||
Date: Thu Mar 20 14:18:03 2014 -0400
|
||||
|
||||
Update Transifex configuration
|
||||
|
||||
Added new SoObjects/Mailer resource.
|
||||
|
||||
M .tx/config
|
||||
|
||||
commit b0f26f1dcc5461816f005cf3d387c58ee65fb5e9
|
||||
Author: Ludovic Marcotte <lmarcotte@inverse.ca>
|
||||
Date: Thu Mar 20 09:57:19 2014 -0400
|
||||
|
||||
Updated the doc regarding the isAddressBook parameter in sources.
|
||||
|
||||
M Documentation/SOGo Installation Guide.odt
|
||||
|
||||
commit a196ed210e108f11caf1cab3d24c7acf25e2e75b
|
||||
Author: Ludovic Marcotte <lmarcotte@inverse.ca>
|
||||
Date: Wed Mar 19 17:04:04 2014 -0400
|
||||
|
||||
Removed old values.
|
||||
|
||||
M SoObjects/Mailer/GNUmakefile
|
||||
M UI/MailerUI/Arabic.lproj/Localizable.strings
|
||||
M UI/MailerUI/BrazilianPortuguese.lproj/Localizable.strings
|
||||
M UI/MailerUI/Catalan.lproj/Localizable.strings
|
||||
M UI/MailerUI/Czech.lproj/Localizable.strings
|
||||
M UI/MailerUI/Danish.lproj/Localizable.strings
|
||||
M UI/MailerUI/Dutch.lproj/Localizable.strings
|
||||
M UI/MailerUI/English.lproj/Localizable.strings
|
||||
M UI/MailerUI/Finnish.lproj/Localizable.strings
|
||||
M UI/MailerUI/French.lproj/Localizable.strings
|
||||
M UI/MailerUI/German.lproj/Localizable.strings
|
||||
M UI/MailerUI/Hungarian.lproj/Localizable.strings
|
||||
M UI/MailerUI/Icelandic.lproj/Localizable.strings
|
||||
M UI/MailerUI/Italian.lproj/Localizable.strings
|
||||
M UI/MailerUI/NorwegianBokmal.lproj/Localizable.strings
|
||||
M UI/MailerUI/NorwegianNynorsk.lproj/Localizable.strings
|
||||
M UI/MailerUI/Polish.lproj/Localizable.strings
|
||||
M UI/MailerUI/Russian.lproj/Localizable.strings
|
||||
M UI/MailerUI/Slovak.lproj/Localizable.strings
|
||||
M UI/MailerUI/SpanishArgentina.lproj/Localizable.strings
|
||||
M UI/MailerUI/SpanishSpain.lproj/Localizable.strings
|
||||
M UI/MailerUI/Swedish.lproj/Localizable.strings
|
||||
M UI/MailerUI/Ukrainian.lproj/Localizable.strings
|
||||
M UI/MailerUI/Welsh.lproj/Localizable.strings
|
||||
|
||||
commit 1c28a4b4d21673693c9ebe0fff47f821b2c48820
|
||||
Author: Ludovic Marcotte <lmarcotte@inverse.ca>
|
||||
Date: Wed Mar 19 17:02:10 2014 -0400
|
||||
|
||||
Fixed translations for "OtherUsersFolderName" and "SharedFoldersName" (#2657)
|
||||
|
||||
M NEWS
|
||||
A SoObjects/Mailer/Arabic.lproj/Localizable.strings
|
||||
A SoObjects/Mailer/BrazilianPortuguese.lproj/Localizable.strings
|
||||
A SoObjects/Mailer/Catalan.lproj/Localizable.strings
|
||||
A SoObjects/Mailer/Czech.lproj/Localizable.strings
|
||||
A SoObjects/Mailer/Danish.lproj/Localizable.strings
|
||||
A SoObjects/Mailer/Dutch.lproj/Localizable.strings
|
||||
A SoObjects/Mailer/English.lproj/Localizable.strings
|
||||
A SoObjects/Mailer/Finnish.lproj/Localizable.strings
|
||||
A SoObjects/Mailer/French.lproj/Localizable.strings
|
||||
A SoObjects/Mailer/German.lproj/Localizable.strings
|
||||
A SoObjects/Mailer/Hungarian.lproj/Localizable.strings
|
||||
A SoObjects/Mailer/Icelandic.lproj/Localizable.strings
|
||||
A SoObjects/Mailer/Italian.lproj/Localizable.strings
|
||||
A SoObjects/Mailer/NorwegianBokmal.lproj/Localizable.strings
|
||||
A SoObjects/Mailer/NorwegianNynorsk.lproj/Localizable.strings
|
||||
A SoObjects/Mailer/Polish.lproj/Localizable.strings
|
||||
A SoObjects/Mailer/Russian.lproj/Localizable.strings
|
||||
A SoObjects/Mailer/Slovak.lproj/Localizable.strings
|
||||
A SoObjects/Mailer/SpanishArgentina.lproj/Localizable.strings
|
||||
A SoObjects/Mailer/SpanishSpain.lproj/Localizable.strings
|
||||
A SoObjects/Mailer/Swedish.lproj/Localizable.strings
|
||||
A SoObjects/Mailer/Ukrainian.lproj/Localizable.strings
|
||||
A SoObjects/Mailer/Welsh.lproj/Localizable.strings
|
||||
|
||||
commit fc56493b782009e19fbc5d017bdbdb3b71dba6f6
|
||||
Author: Ludovic Marcotte <lmarcotte@inverse.ca>
|
||||
Date: Wed Mar 19 11:44:36 2014 -0400
|
||||
|
||||
Added sanitization support for Outlook/ActiveSync
|
||||
|
||||
M ActiveSync/SOGoMailObject+ActiveSync.m
|
||||
M NEWS
|
||||
|
||||
commit 3a330109183f7c5c7c6b35c58d23eeb1f1ca50c5
|
||||
Author: Ludovic Marcotte <lmarcotte@inverse.ca>
|
||||
Date: Wed Mar 19 11:33:00 2014 -0400
|
||||
|
||||
Updated NEWS file regarding previous commit
|
||||
|
||||
M NEWS
|
||||
|
||||
commit 83bccda55116bc94e4323aa082cc008c8d3b67c5
|
||||
Author: Ludovic Marcotte <lmarcotte@inverse.ca>
|
||||
Date: Wed Mar 19 11:31:54 2014 -0400
|
||||
|
||||
Avoid creating duplicates in Outlook on MoveItems (#2650)
|
||||
|
||||
M ActiveSync/SOGoActiveSyncDispatcher+Sync.m
|
||||
M ActiveSync/SOGoActiveSyncDispatcher.m
|
||||
|
||||
commit 35d71f61505309078b3199850fd8ba3f5d176c68
|
||||
Author: Ludovic Marcotte <lmarcotte@inverse.ca>
|
||||
Date: Wed Mar 19 11:30:18 2014 -0400
|
||||
|
||||
Added deviceType capabilities to the code
|
||||
|
||||
M ActiveSync/NSString+ActiveSync.h
|
||||
M ActiveSync/NSString+ActiveSync.m
|
||||
|
||||
commit e92a14532578b88c6701a68ed21368c566a445c3
|
||||
Author: Ludovic Marcotte <lmarcotte@inverse.ca>
|
||||
Date: Wed Mar 19 08:27:36 2014 -0400
|
||||
|
||||
Updated NEWS file regarding previous commit
|
||||
|
||||
M NEWS
|
||||
|
||||
commit c3062284e3fe175f464f685b24c766470849ddf2
|
||||
Author: Ludovic Marcotte <lmarcotte@inverse.ca>
|
||||
Date: Tue Mar 18 19:06:41 2014 -0400
|
||||
|
||||
Disabled provisionning for now, as we don't support it.
|
||||
|
||||
M ActiveSync/SOGoActiveSyncDispatcher.m
|
||||
M ActiveSync/SoObjectWebDAVDispatcher+ActiveSync.m
|
||||
|
||||
commit e2f192b7935f8ca316737db39372a3ab49479e83
|
||||
Author: Francis Lachapelle <flachapelle@inverse.ca>
|
||||
Date: Fri Mar 14 15:45:12 2014 -0400
|
||||
|
||||
Fix display of company/department of cards
|
||||
|
||||
Fixes #2662
|
||||
|
||||
M NEWS
|
||||
M SOPE/NGCards/NGCardsSaxHandler.m
|
||||
|
||||
commit b8f239bf34cb7e83fcb267654416a6328f747796
|
||||
Author: Francis Lachapelle <flachapelle@inverse.ca>
|
||||
Date: Fri Mar 14 15:34:43 2014 -0400
|
||||
|
||||
Fix construction of mail folders tree
|
||||
|
||||
M NEWS
|
||||
M UI/WebServerResources/MailerUI.js
|
||||
|
||||
commit e968be8024e835c02f3eca06d385553ca75d5d72
|
||||
Author: Francis Lachapelle <flachapelle@inverse.ca>
|
||||
Date: Fri Mar 14 13:02:27 2014 -0400
|
||||
|
||||
Bump version to 2.2.2
|
||||
|
||||
M Version
|
||||
|
||||
commit 3c3bebeee350755d03648553b980f8d4f775d533
|
||||
Author: Francis Lachapelle <flachapelle@inverse.ca>
|
||||
Date: Fri Mar 14 09:20:27 2014 -0400
|
||||
|
||||
Fix resource conflict check when creating event
|
||||
|
||||
Fixes #2541
|
||||
|
||||
M NEWS
|
||||
M SoObjects/Appointments/SOGoAppointmentObject.m
|
||||
|
||||
commit 26e9defdbde28095ae31cdca2603a855d6b1dbae
|
||||
Author: Francis Lachapelle <flachapelle@inverse.ca>
|
||||
Date: Fri Mar 14 09:17:52 2014 -0400
|
||||
|
||||
Update French translation
|
||||
|
||||
M UI/MainUI/French.lproj/Localizable.strings
|
||||
|
||||
commit 8742f28c29dd524973ca80bb3a5cee095e879a69
|
||||
Author: Francis Lachapelle <flachapelle@inverse.ca>
|
||||
Date: Thu Mar 13 08:44:47 2014 -0400
|
||||
|
||||
Fix decoding of HTML entitities in reminder alert
|
||||
|
||||
Fixes #2659
|
||||
|
||||
M NEWS
|
||||
M UI/WebServerResources/generic.js
|
||||
|
||||
commit bd577fd5131cc361fafbbc522e63450ac2b0ae46
|
||||
Author: Francis Lachapelle <flachapelle@inverse.ca>
|
||||
Date: Thu Mar 13 08:41:42 2014 -0400
|
||||
|
||||
Fix unseen count of folders beginning with a digit
|
||||
|
||||
Fixes #2652
|
||||
|
||||
M NEWS
|
||||
M UI/MailerUI/UIxMailFolderActions.m
|
||||
M UI/MailerUI/UIxMailMainFrame.m
|
||||
|
||||
commit c8550c8a4a8f0c0e5a1bb7c02e3e891506b3ca37
|
||||
Author: Francis Lachapelle <flachapelle@inverse.ca>
|
||||
Date: Wed Mar 12 16:35:22 2014 -0400
|
||||
|
||||
Fix copy/move to folder with numerical prefix
|
||||
|
||||
Fixes #2658
|
||||
|
||||
M NEWS
|
||||
M UI/WebServerResources/MailerUI.js
|
||||
|
||||
commit 1bdf88fb67f89361978e601da6c5ed74b3042f27
|
||||
Author: Ludovic Marcotte <lmarcotte@inverse.ca>
|
||||
Date: Tue Mar 11 13:21:05 2014 -0400
|
||||
|
||||
Don't try to delete an already non-existant object (#2653)
|
||||
|
||||
M ActiveSync/SOGoActiveSyncDispatcher+Sync.m
|
||||
|
||||
commit af68f101152928295156cbfe497271b914f45952
|
||||
Author: Daniel B. <daniel@firewall-services.com>
|
||||
Date: Tue Mar 11 09:23:13 2014 +0100
|
||||
|
||||
Fix #2641
|
||||
|
||||
Disabling the pasteZone support (which only works in Chrome or Opera anyway) fixes the problem of unwanted PNG attachment when you paste the recipient list from Excel
|
||||
|
||||
M UI/WebServerResources/UIxMailEditor.js
|
||||
|
||||
commit cbd22762c35f73a8c2c3a81d7d47169a4f3c5753
|
||||
Author: Francis Lachapelle <flachapelle@inverse.ca>
|
||||
Date: Mon Mar 10 14:47:01 2014 -0400
|
||||
|
||||
Fix possible exception when retrieving reminder
|
||||
|
||||
Fixes #2647
|
||||
Fixes #2648
|
||||
|
||||
M NEWS
|
||||
M UI/PreferencesUI/UIxPreferences.m
|
||||
|
||||
commit 78636f039664e75932bed65210bfd87939fd6e4c
|
||||
Author: Ludovic Marcotte <lmarcotte@inverse.ca>
|
||||
Date: Sun Mar 9 15:58:11 2014 -0400
|
||||
|
||||
Added default value for WOListenQueueSize
|
||||
|
||||
M SoObjects/SOGo/SOGoDefaults.plist
|
||||
|
||||
commit 037c2d3ddff1242b83be7483c9e06fdb145ce822
|
||||
Author: Ludovic Marcotte <lmarcotte@inverse.ca>
|
||||
Date: Sun Mar 9 15:56:38 2014 -0400
|
||||
|
||||
Added documentation for WOListenQueueSize
|
||||
|
||||
M Documentation/SOGo Installation Guide.odt
|
||||
|
||||
commit 41fe9195f2fc253ac59ef07309155f88634d4af2
|
||||
Author: Francis Lachapelle <flachapelle@inverse.ca>
|
||||
Date: Fri Mar 7 14:00:51 2014 -0500
|
||||
|
||||
Update ChangeLog
|
||||
|
||||
M ChangeLog
|
||||
|
||||
commit 23789b48bcdcbac738039d214a92cd0bb5aff9e4
|
||||
Author: Francis Lachapelle <flachapelle@inverse.ca>
|
||||
Date: Fri Mar 7 13:59:51 2014 -0500
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,3 +1,28 @@
|
||||
2.2.2 (2014-03-21)
|
||||
------------------
|
||||
|
||||
Enhancements
|
||||
- updated French, Finnish, German and Spanish (Spain) translations
|
||||
- added sanitization support for Outlook/ActiveSync to circumvent Outlook bugs (#2667)
|
||||
- updated CKEditor to version 4.3.3
|
||||
- updated jQuery File Upload to version 9.5.7
|
||||
|
||||
Bug fixes
|
||||
- fixed possible exception when retrieving the default event reminder value on 64bit architectures (#2647, #2648)
|
||||
- disable file paste support in mail editor (#2641)
|
||||
- fixed copying/moving messages to a mail folder begining with a digit (#2658)
|
||||
- fixed unseen count for folders beginning with a digit and used in Sieve filters (#2652)
|
||||
- fixed decoding of HTML entities in reminder alerts (#2659)
|
||||
- fixed check for resource conflict when creating an event in the resource's calendar (#2541)
|
||||
- fixed construction of mail folders tree
|
||||
- fixed parsing of ORG attribute in cards (#2662)
|
||||
- disabled ActiveSync provisioning for now (#2663)
|
||||
- fixed messages move in Outlook which would create duplicates (#2650)
|
||||
- fixed translations for OtherUsersFolderName and SharedFoldersName folders (#2657)
|
||||
- fixed handling of accentuated characters when filtering contacts (#2656)
|
||||
- fixed classification icon of events (#2651)
|
||||
- fixed ActiveSync's SendMail with client version <= 12.1 (#2669)
|
||||
|
||||
2.2.1 (2014-03-07)
|
||||
------------------
|
||||
|
||||
@@ -13,9 +38,9 @@ Bug fixes
|
||||
- fixed wrong date format leading to Android email syncing issues (#2609)
|
||||
- fixed possible exception when retrieving the default event reminder value (#2624)
|
||||
- fixed encoding of mail folder name when creating a subfolder (#2637)
|
||||
- fixed returned date format for email messages in Active Sync
|
||||
- fixed missing 'name part' in address for email messages in Active Sync
|
||||
- fixed race condition when syncing huge amount of deleted messages over Active Sync
|
||||
- fixed returned date format for email messages in ActiveSync
|
||||
- fixed missing 'name part' in address for email messages in ActiveSync
|
||||
- fixed race condition when syncing huge amount of deleted messages over ActiveSync
|
||||
- fixed encoding of string as CSS identifier when the string starts with a digit
|
||||
- fixed auto-completion popupmenu when UID is a digit
|
||||
|
||||
|
||||
@@ -46,7 +46,7 @@ static NSArray *privilegedTagNames = nil;
|
||||
|
||||
if (!privilegedTagNames)
|
||||
{
|
||||
privilegedTagNames = [NSArray arrayWithObjects: @"ADR", @"N", @"RRULE", nil];
|
||||
privilegedTagNames = [NSArray arrayWithObjects: @"ADR", @"N", @"RRULE", @"ORG", nil];
|
||||
RETAIN(privilegedTagNames);
|
||||
}
|
||||
|
||||
|
||||
@@ -453,11 +453,7 @@
|
||||
currentUser = [context activeUser];
|
||||
if (!activeUserIsOwner && ![currentUser isSuperUser])
|
||||
{
|
||||
ownerUser = [SOGoUser userWithLogin: owner];
|
||||
if ([ownerUser isResource])
|
||||
{
|
||||
[attendees addObject: owner];
|
||||
}
|
||||
[attendees addObject: owner];
|
||||
}
|
||||
|
||||
enumerator = [attendees objectEnumerator];
|
||||
@@ -556,52 +552,52 @@
|
||||
currentAttendee = nil;
|
||||
}
|
||||
|
||||
if (currentAttendee)
|
||||
if ([fbInfo count])
|
||||
{
|
||||
if ([fbInfo count])
|
||||
// If we always force the auto-accept if numberOfSimultaneousBookings == 0 (ie., no limit
|
||||
// is imposed) or if numberOfSimultaneousBookings is greater than the number of
|
||||
// overlapping events
|
||||
if ([user numberOfSimultaneousBookings] == 0 ||
|
||||
[user numberOfSimultaneousBookings] > [fbInfo count])
|
||||
{
|
||||
// If we always force the auto-accept if numberOfSimultaneousBookings == 0 (ie., no limit
|
||||
// is imposed) or if numberOfSimultaneousBookings is greater than the number of
|
||||
// overlapping events
|
||||
if ([user numberOfSimultaneousBookings] == 0 ||
|
||||
[user numberOfSimultaneousBookings] > [fbInfo count])
|
||||
if (currentAttendee)
|
||||
{
|
||||
[[currentAttendee attributes] removeObjectForKey: @"RSVP"];
|
||||
[currentAttendee setParticipationStatus: iCalPersonPartStatAccepted];
|
||||
}
|
||||
else
|
||||
{
|
||||
iCalCalendar *calendar;
|
||||
NSDictionary *values;
|
||||
NSString *reason;
|
||||
iCalEvent *event;
|
||||
|
||||
calendar = [iCalCalendar parseSingleFromSource: [[fbInfo objectAtIndex: 0] objectForKey: @"c_content"]];
|
||||
event = [[calendar events] lastObject];
|
||||
|
||||
values = [NSDictionary dictionaryWithObjectsAndKeys:
|
||||
[NSString stringWithFormat: @"%d", [user numberOfSimultaneousBookings]], @"NumberOfSimultaneousBookings",
|
||||
[user cn], @"Cn",
|
||||
[user systemEmail], @"SystemEmail",
|
||||
([event summary] ? [event summary] : @""), @"EventTitle",
|
||||
[[fbInfo objectAtIndex: 0] objectForKey: @"startDate"], @"StartDate",
|
||||
nil];
|
||||
|
||||
reason = [values keysWithFormat: [self labelForKey: @"Maximum number of simultaneous bookings (%{NumberOfSimultaneousBookings}) reached for resource \"%{Cn} %{SystemEmail}\". The conflicting event is \"%{EventTitle}\", and starts on %{StartDate}."]];
|
||||
|
||||
return [NSException exceptionWithHTTPStatus:403
|
||||
reason: reason];
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// No conflict, we auto-accept. We do this for resources automatically if no
|
||||
// double-booking is observed. If it's not the desired behavior, just don't
|
||||
// set the resource as one!
|
||||
[[currentAttendee attributes] removeObjectForKey: @"RSVP"];
|
||||
[currentAttendee setParticipationStatus: iCalPersonPartStatAccepted];
|
||||
iCalCalendar *calendar;
|
||||
NSDictionary *values;
|
||||
NSString *reason;
|
||||
iCalEvent *event;
|
||||
|
||||
calendar = [iCalCalendar parseSingleFromSource: [[fbInfo objectAtIndex: 0] objectForKey: @"c_content"]];
|
||||
event = [[calendar events] lastObject];
|
||||
|
||||
values = [NSDictionary dictionaryWithObjectsAndKeys:
|
||||
[NSString stringWithFormat: @"%d", [user numberOfSimultaneousBookings]], @"NumberOfSimultaneousBookings",
|
||||
[user cn], @"Cn",
|
||||
[user systemEmail], @"SystemEmail",
|
||||
([event summary] ? [event summary] : @""), @"EventTitle",
|
||||
[[fbInfo objectAtIndex: 0] objectForKey: @"startDate"], @"StartDate",
|
||||
nil];
|
||||
|
||||
reason = [values keysWithFormat: [self labelForKey: @"Maximum number of simultaneous bookings (%{NumberOfSimultaneousBookings}) reached for resource \"%{Cn} %{SystemEmail}\". The conflicting event is \"%{EventTitle}\", and starts on %{StartDate}."]];
|
||||
|
||||
return [NSException exceptionWithHTTPStatus: 403
|
||||
reason: reason];
|
||||
}
|
||||
}
|
||||
else if (currentAttendee)
|
||||
{
|
||||
// No conflict, we auto-accept. We do this for resources automatically if no
|
||||
// double-booking is observed. If it's not the desired behavior, just don't
|
||||
// set the resource as one!
|
||||
[[currentAttendee attributes] removeObjectForKey: @"RSVP"];
|
||||
[currentAttendee setParticipationStatus: iCalPersonPartStatAccepted];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
"SieveFolderName" = "فلاتر";
|
||||
"OtherUsersFolderName" = "مستخدمين أخرين";
|
||||
@@ -0,0 +1,2 @@
|
||||
"SieveFolderName" = "Filtros";
|
||||
"OtherUsersFolderName" = "Outros Usuários";
|
||||
@@ -0,0 +1,2 @@
|
||||
"SieveFolderName" = "Filtres";
|
||||
"OtherUsersFolderName" = "Altres usuaris";
|
||||
@@ -0,0 +1,2 @@
|
||||
"SieveFolderName" = "Filtry";
|
||||
"OtherUsersFolderName" = "Ostatní uživatelé";
|
||||
@@ -0,0 +1,2 @@
|
||||
"SieveFolderName" = "Filtre";
|
||||
"OtherUsersFolderName" = "Andre brugere";
|
||||
@@ -0,0 +1,2 @@
|
||||
"SieveFolderName" = "Berichtregel";
|
||||
"OtherUsersFolderName" = "Andere Gebruikers";
|
||||
@@ -0,0 +1,2 @@
|
||||
"OtherUsersFolderName" = "Other Users";
|
||||
"SharedFoldersName" = "Shared Folders";
|
||||
@@ -0,0 +1,2 @@
|
||||
"OtherUsersFolderName" = "Muut käyttäjät";
|
||||
"SharedFoldersName" = "Jaetut kansiot";
|
||||
@@ -0,0 +1,2 @@
|
||||
"OtherUsersFolderName" = "Autres utilisateurs";
|
||||
"SharedFoldersName" = "Dossiers partagés";
|
||||
@@ -92,7 +92,7 @@ Mailer_RESOURCE_FILES += \
|
||||
SOGoMailWelshReply.wo
|
||||
|
||||
|
||||
Mailer_LANGUAGES = English French
|
||||
Mailer_LANGUAGES = Arabic BrazilianPortuguese Catalan Czech Danish Dutch English Finnish French German Hungarian Icelandic Italian NorwegianBokmal NorwegianNynorsk Polish Russian Slovak SpanishSpain SpanishArgentina Swedish Ukrainian Welsh
|
||||
|
||||
Mailer_LOCALIZED_RESOURCE_FILES = Localizable.strings
|
||||
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
"OtherUsersFolderName" = "Andere Benutzer";
|
||||
"SharedFoldersName" = "Gemeinsame Ordner";
|
||||
@@ -0,0 +1,2 @@
|
||||
"SieveFolderName" = "Szűrők";
|
||||
"OtherUsersFolderName" = "Egyéb felhasználók";
|
||||
@@ -0,0 +1,2 @@
|
||||
"SieveFolderName" = "Síur";
|
||||
"OtherUsersFolderName" = "Aðrir Notendur";
|
||||
@@ -0,0 +1,2 @@
|
||||
"SieveFolderName" = "Filtri";
|
||||
"OtherUsersFolderName" = "Altri Utenti";
|
||||
@@ -0,0 +1,2 @@
|
||||
"SieveFolderName" = "Filter";
|
||||
"OtherUsersFolderName" = "Andre brukere";
|
||||
@@ -0,0 +1,2 @@
|
||||
"SieveFolderName" = "Filter";
|
||||
"OtherUsersFolderName" = "Other Users";
|
||||
@@ -0,0 +1,2 @@
|
||||
"SieveFolderName" = "Filtry";
|
||||
"OtherUsersFolderName" = "Inni użytkownicy";
|
||||
@@ -0,0 +1,2 @@
|
||||
"SieveFolderName" = "Папки";
|
||||
"OtherUsersFolderName" = "Другие пользователи";
|
||||
@@ -0,0 +1,2 @@
|
||||
"SieveFolderName" = "Filtre";
|
||||
"OtherUsersFolderName" = "Ostatní užívatelia";
|
||||
@@ -0,0 +1,2 @@
|
||||
"SieveFolderName" = "Filtros";
|
||||
"OtherUsersFolderName" = "Otros usuarios";
|
||||
@@ -0,0 +1,2 @@
|
||||
"OtherUsersFolderName" = "Otros usuarios";
|
||||
"SharedFoldersName" = "Carpetas compartidas";
|
||||
@@ -0,0 +1,2 @@
|
||||
"SieveFolderName" = "Filter";
|
||||
"OtherUsersFolderName" = "Other Users";
|
||||
@@ -0,0 +1,2 @@
|
||||
"SieveFolderName" = "Теки";
|
||||
"OtherUsersFolderName" = "Інші користувачі";
|
||||
@@ -0,0 +1,2 @@
|
||||
"SieveFolderName" = "Ffilteri";
|
||||
"OtherUsersFolderName" = "Other Users";
|
||||
@@ -1,5 +1,6 @@
|
||||
{
|
||||
WOWorkersCount = 1;
|
||||
WOListenQueueSize = 5;
|
||||
SxVMemLimit = 384;
|
||||
WOLogFile = "/var/log/sogo/sogo.log";
|
||||
WOPidFile = "/var/run/sogo/sogo.pid";
|
||||
|
||||
@@ -146,7 +146,7 @@
|
||||
{
|
||||
currentInfo = [currentContactDictionary objectForKey: key];
|
||||
if ([currentInfo respondsToSelector: @selector (stringByEscapingHTMLString)])
|
||||
[currentContactDictionary setObject: [currentInfo stringByEscapingHTMLString] forKey: key];
|
||||
[currentContactDictionary setObject: currentInfo forKey: key];
|
||||
}
|
||||
[newContactsList addObject: currentContactDictionary];
|
||||
}
|
||||
|
||||
@@ -168,8 +168,6 @@
|
||||
"InboxFolderName" = "البريد الوارد";
|
||||
"DraftsFolderName" = "مسودات";
|
||||
"SieveFolderName" = "فلاتر";
|
||||
"OtherUsersFolderName" = "مستخدمين أخرين";
|
||||
"SharedFoldersName" = "مجلدات مشتركة";
|
||||
"Folders" = "مجلدات"; /* title line */
|
||||
|
||||
/* MailMoveToPopUp */
|
||||
|
||||
@@ -168,8 +168,6 @@
|
||||
"InboxFolderName" = "Entrada";
|
||||
"DraftsFolderName" = "Rascunhos";
|
||||
"SieveFolderName" = "Filtros";
|
||||
"OtherUsersFolderName" = "Outros Usuários";
|
||||
"SharedFoldersName" = "Pastas Compartilhadas";
|
||||
"Folders" = "Pastas"; /* title line */
|
||||
|
||||
/* MailMoveToPopUp */
|
||||
|
||||
@@ -168,8 +168,6 @@
|
||||
"InboxFolderName" = "Safata d'entrada";
|
||||
"DraftsFolderName" = "Esborranys";
|
||||
"SieveFolderName" = "Filtres";
|
||||
"OtherUsersFolderName" = "Altres usuaris";
|
||||
"SharedFoldersName" = "Carpetes compartides";
|
||||
"Folders" = "Carpetes"; /* title line */
|
||||
|
||||
/* MailMoveToPopUp */
|
||||
|
||||
@@ -169,8 +169,6 @@
|
||||
"InboxFolderName" = "Doručená pošta";
|
||||
"DraftsFolderName" = "Koncepty";
|
||||
"SieveFolderName" = "Filtry";
|
||||
"OtherUsersFolderName" = "Ostatní uživatelé";
|
||||
"SharedFoldersName" = "Sdílené složky";
|
||||
"Folders" = "Složky"; /* title line */
|
||||
|
||||
/* MailMoveToPopUp */
|
||||
|
||||
@@ -168,8 +168,6 @@
|
||||
"InboxFolderName" = "Indbakke";
|
||||
"DraftsFolderName" = "Kladder";
|
||||
"SieveFolderName" = "Filtre";
|
||||
"OtherUsersFolderName" = "Andre brugere";
|
||||
"SharedFoldersName" = "Delte mapper";
|
||||
"Folders" = "Mapper"; /* title line */
|
||||
|
||||
/* MailMoveToPopUp */
|
||||
|
||||
@@ -168,8 +168,6 @@
|
||||
"InboxFolderName" = "Postvak IN";
|
||||
"DraftsFolderName" = "Concepten";
|
||||
"SieveFolderName" = "Berichtregel";
|
||||
"OtherUsersFolderName" = "Andere Gebruikers";
|
||||
"SharedFoldersName" = "Gedeelde Mappen";
|
||||
"Folders" = "Mappen"; /* title line */
|
||||
|
||||
/* MailMoveToPopUp */
|
||||
|
||||
@@ -169,8 +169,6 @@
|
||||
"InboxFolderName" = "Inbox";
|
||||
"DraftsFolderName" = "Drafts";
|
||||
"SieveFolderName" = "Filters";
|
||||
"OtherUsersFolderName" = "Other Users";
|
||||
"SharedFoldersName" = "Shared Folders";
|
||||
"Folders" = "Folders"; /* title line */
|
||||
|
||||
/* MailMoveToPopUp */
|
||||
|
||||
@@ -97,11 +97,12 @@
|
||||
"Reply-To" = "Vastausosoite";
|
||||
"Add address" = "Lisää osoite";
|
||||
|
||||
"Attachments:" = "Liitteet:";
|
||||
"Open" = "Avaa.";
|
||||
"Select All" = "Valitse kaikki";
|
||||
"Attach Web Page..." = "Liitä Web-sivu...";
|
||||
"Attach File(s)..." = "Liitä tiedosto(ja)...";
|
||||
"file" = "tiedosto";
|
||||
"files" = "tiedostot";
|
||||
"Save all" = "Tallenna kaikki";
|
||||
|
||||
"to" = "Vastaanottaja";
|
||||
"cc" = "Kopio";
|
||||
@@ -168,8 +169,6 @@
|
||||
"InboxFolderName" = "Saapuneet";
|
||||
"DraftsFolderName" = "Luonnokset";
|
||||
"SieveFolderName" = "Suodattimet";
|
||||
"OtherUsersFolderName" = "Muut käyttäjät";
|
||||
"SharedFoldersName" = "Jaetut kansiot";
|
||||
"Folders" = "Kansiot"; /* title line */
|
||||
|
||||
/* MailMoveToPopUp */
|
||||
@@ -280,6 +279,9 @@
|
||||
"error_missingsubject" = "Viestillä ei ole otsikkoa. Haluatko varrmasti lähettää sen?";
|
||||
"error_missingrecipients" = "Ole hyvä ja syötä ainakin yksi vastaanottaja.";
|
||||
"Send Anyway" = "Lähetä silti";
|
||||
"Error while saving the draft:" = "Virhe luonnoksen tallennuksessa:";
|
||||
"Error while uploading the file \"%{0}\":" = "Virhe tiedoston \"%{0}\" latauksessa: ";
|
||||
"There is an active file upload. Closing the window will interrupt it." = "Tiedoston lataus on käynnissä. Ikkunan sulkeminen pysäyttää latauksen.";
|
||||
|
||||
/* Message sending */
|
||||
"cannot send message: (smtp) all recipients discarded" = "Viestiä ei voi lähettää: kaikki vastaanottajat ovat virheellisiä.";
|
||||
|
||||
@@ -169,8 +169,6 @@
|
||||
"InboxFolderName" = "Courrier entrant";
|
||||
"DraftsFolderName" = "Brouillons";
|
||||
"SieveFolderName" = "Filtres";
|
||||
"OtherUsersFolderName" = "Autres utilisateurs";
|
||||
"SharedFoldersName" = "Dossiers partagés";
|
||||
"Folders" = "Dossiers"; /* title line */
|
||||
|
||||
/* MailMoveToPopUp */
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
"Select a recipient from an Address Book" = "Einen Empfänger aus einem Adressbuch wählen";
|
||||
"Include an attachment" = "Datei-Anhang hinzufügen";
|
||||
"Save this message" = "Diese Nachricht speichern";
|
||||
"Get new messages" = "Neue Nachrichten empfangen";
|
||||
"Get new messages" = "Neue Nachrichten abrufen";
|
||||
"Create a new message" = "Eine neue Nachricht schreiben";
|
||||
"Go to address book" = "Adressbuch öffnen";
|
||||
"Reply to the message" = "Auf gewählte Nachricht(en) antworten";
|
||||
@@ -97,11 +97,12 @@
|
||||
"Reply-To" = "Antwort an";
|
||||
"Add address" = "Adresse hinzufügen";
|
||||
|
||||
"Attachments:" = "Anhänge:";
|
||||
"Open" = "Öffnen";
|
||||
"Select All" = "Alles auswählen";
|
||||
"Attach Web Page..." = "Webseite anhängen...";
|
||||
"Attach File(s)..." = "Datei(en) als Anhang anfügen...";
|
||||
"file" = "Datei";
|
||||
"files" = "Dateien";
|
||||
"Save all" = "Alles speichern";
|
||||
|
||||
"to" = "An";
|
||||
"cc" = "CC";
|
||||
@@ -168,8 +169,6 @@
|
||||
"InboxFolderName" = "Posteingang";
|
||||
"DraftsFolderName" = "Entwürfe";
|
||||
"SieveFolderName" = "Filter";
|
||||
"OtherUsersFolderName" = "Andere Benutzer";
|
||||
"SharedFoldersName" = "Gemeinsame Ordner";
|
||||
"Folders" = "Ordner"; /* title line */
|
||||
|
||||
/* MailMoveToPopUp */
|
||||
@@ -198,7 +197,7 @@
|
||||
"Rename Folder..." = "Umbenennen...";
|
||||
"Delete Folder" = "Löschen";
|
||||
"Use This Folder For" = "Diesen Ordner verwenden für";
|
||||
"Get Messages for Account" = "Neue Nachrichten empfangen";
|
||||
"Get Messages for Account" = "Neue Nachrichten abrufen";
|
||||
"Properties..." = "Eigenschaften...";
|
||||
"Delegation..." = "Delegation...";
|
||||
|
||||
@@ -209,9 +208,9 @@
|
||||
|
||||
/* Message list popup menu */
|
||||
"Open Message In New Window" = "In neuem Fenster öffnen";
|
||||
"Reply to Sender Only" = "Antworten nur an Absender";
|
||||
"Reply to All" = "Antworten an alle";
|
||||
"Edit As New..." = "Als neu bearbeiten";
|
||||
"Reply to Sender Only" = "Nur dem Absender antworten";
|
||||
"Reply to All" = "Allen antworten";
|
||||
"Edit As New..." = "Als neu bearbeiten...";
|
||||
"Move To" = "Verschieben in";
|
||||
"Copy To" = "Kopieren in";
|
||||
"Label" = "Schlagwörter";
|
||||
@@ -274,16 +273,19 @@
|
||||
|
||||
/* Message operations */
|
||||
"The messages could not be moved to the trash folder. Would you like to delete them immediately?"
|
||||
= "Die Nachricht(en) können nicht in den Papierkorb verschoben werden. Wollen Sie diese endgültig löschen?";
|
||||
= "Die Nachricht(en) konnten nicht in den Papierkorb verschoben werden. Wollen Sie diese endgültig löschen?";
|
||||
|
||||
/* Message editing */
|
||||
"error_missingsubject" = "Der Betreff fehlt. Sind Sie sicher, dass Sie dies so senden möchten?";
|
||||
"error_missingrecipients" = "Der Empfänger fehlt";
|
||||
"error_missingrecipients" = "Der Empfänger fehlt.";
|
||||
"Send Anyway" = "Trotzdem versenden";
|
||||
"Error while saving the draft:" = "Fehler beim Speichern des Entwurfes:";
|
||||
"Error while uploading the file \"%{0}\":" = "Fehler beim Hochladen der Datei \"%{0}\":";
|
||||
"There is an active file upload. Closing the window will interrupt it." = "Es wird gerade eine Datei hochgeladen. Das Schließen des Fensters wird dies abbrechen.";
|
||||
|
||||
/* Message sending */
|
||||
"cannot send message: (smtp) all recipients discarded" = "Kann Nachricht nicht versenden: Alle Empfänger sind ungültig.";
|
||||
"cannot send message (smtp) - recipients discarded:" = "Kann Nachricht nicht versenden: Die folgenden Addressen sind ungültig:";
|
||||
"cannot send message (smtp) - recipients discarded:" = "Kann Nachricht nicht versenden: Die folgenden Adressen sind ungültig:";
|
||||
"cannot send message: (smtp) error when connecting" = "Kann Nachricht nicht versenden: Fehler beim Verbinden mit dem SMTP-Server.";
|
||||
|
||||
/* Contacts list in mail editor */
|
||||
|
||||
@@ -169,8 +169,6 @@
|
||||
"InboxFolderName" = "Beérkezett üzenetek";
|
||||
"DraftsFolderName" = "Piszkozatok";
|
||||
"SieveFolderName" = "Szűrők";
|
||||
"OtherUsersFolderName" = "Egyéb felhasználók";
|
||||
"SharedFoldersName" = "Megosztott mappák";
|
||||
"Folders" = "Mappák"; /* title line */
|
||||
|
||||
/* MailMoveToPopUp */
|
||||
|
||||
@@ -165,8 +165,6 @@
|
||||
"InboxFolderName" = "Innhólf";
|
||||
"DraftsFolderName" = "Drög";
|
||||
"SieveFolderName" = "Síur";
|
||||
"OtherUsersFolderName" = "Aðrir Notendur";
|
||||
"SharedFoldersName" = "Samnýttar Möppur";
|
||||
"Folders" = "Möppur"; /* title line */
|
||||
|
||||
/* MailMoveToPopUp */
|
||||
|
||||
@@ -168,8 +168,6 @@
|
||||
"InboxFolderName" = "Posta in arrivo";
|
||||
"DraftsFolderName" = "Bozze";
|
||||
"SieveFolderName" = "Filtri";
|
||||
"OtherUsersFolderName" = "Altri Utenti";
|
||||
"SharedFoldersName" = "Cartelle Condivise";
|
||||
"Folders" = "Cartelle"; /* title line */
|
||||
|
||||
/* MailMoveToPopUp */
|
||||
|
||||
@@ -168,8 +168,6 @@
|
||||
"InboxFolderName" = "Innboks";
|
||||
"DraftsFolderName" = "Kladder";
|
||||
"SieveFolderName" = "Filter";
|
||||
"OtherUsersFolderName" = "Andre brukere";
|
||||
"SharedFoldersName" = "Delte mapper";
|
||||
"Folders" = "Mapper"; /* title line */
|
||||
|
||||
/* MailMoveToPopUp */
|
||||
|
||||
@@ -165,8 +165,6 @@
|
||||
"InboxFolderName" = "Innboks";
|
||||
"DraftsFolderName" = "Kladder";
|
||||
"SieveFolderName" = "Filter";
|
||||
"OtherUsersFolderName" = "Other Users";
|
||||
"SharedFoldersName" = "Shared Folders";
|
||||
"Folders" = "Mapper"; /* title line */
|
||||
|
||||
/* MailMoveToPopUp */
|
||||
|
||||
@@ -169,8 +169,6 @@
|
||||
"InboxFolderName" = "Odebrane";
|
||||
"DraftsFolderName" = "Szkice";
|
||||
"SieveFolderName" = "Filtry";
|
||||
"OtherUsersFolderName" = "Inni użytkownicy";
|
||||
"SharedFoldersName" = "Foldery współdzielone";
|
||||
"Folders" = "Foldery"; /* title line */
|
||||
|
||||
/* MailMoveToPopUp */
|
||||
|
||||
@@ -169,8 +169,6 @@
|
||||
"InboxFolderName" = "Входящие";
|
||||
"DraftsFolderName" = "Черновики";
|
||||
"SieveFolderName" = "Папки";
|
||||
"OtherUsersFolderName" = "Другие пользователи";
|
||||
"SharedFoldersName" = "Общие папки";
|
||||
"Folders" = "Папки"; /* title line */
|
||||
|
||||
/* MailMoveToPopUp */
|
||||
|
||||
@@ -169,8 +169,6 @@
|
||||
"InboxFolderName" = "Prijaté";
|
||||
"DraftsFolderName" = "Koncepty";
|
||||
"SieveFolderName" = "Filtre";
|
||||
"OtherUsersFolderName" = "Ostatní užívatelia";
|
||||
"SharedFoldersName" = "Zdielané adresáre";
|
||||
"Folders" = "Adresáre"; /* title line */
|
||||
|
||||
/* MailMoveToPopUp */
|
||||
|
||||
@@ -168,8 +168,6 @@
|
||||
"InboxFolderName" = "Bandeja de entrada";
|
||||
"DraftsFolderName" = "Borradores";
|
||||
"SieveFolderName" = "Filtros";
|
||||
"OtherUsersFolderName" = "Otros usuarios";
|
||||
"SharedFoldersName" = "Carpetas compartidas";
|
||||
"Folders" = "Carpetas"; /* title line */
|
||||
|
||||
/* MailMoveToPopUp */
|
||||
|
||||
@@ -97,11 +97,12 @@
|
||||
"Reply-To" = "Responder A";
|
||||
"Add address" = "Añadir dirección";
|
||||
|
||||
"Attachments:" = "Adjuntos:";
|
||||
"Open" = "Abrir";
|
||||
"Select All" = "Seleccionar todo";
|
||||
"Attach Web Page..." = "Adjuntar página web...";
|
||||
"Attach File(s)..." = "Adjuntar fichero(s)...";
|
||||
"file" = "fichero";
|
||||
"files" = "ficheros";
|
||||
"Save all" = "Guardar todo";
|
||||
|
||||
"to" = "Para";
|
||||
"cc" = "Cc";
|
||||
@@ -168,8 +169,6 @@
|
||||
"InboxFolderName" = "Bandeja de entrada";
|
||||
"DraftsFolderName" = "Borradores";
|
||||
"SieveFolderName" = "Filtros";
|
||||
"OtherUsersFolderName" = "Otros usuarios";
|
||||
"SharedFoldersName" = "Carpetas compartidas";
|
||||
"Folders" = "Carpetas"; /* title line */
|
||||
|
||||
/* MailMoveToPopUp */
|
||||
@@ -280,6 +279,9 @@
|
||||
"error_missingsubject" = "No ha indicado el asunto";
|
||||
"error_missingrecipients" = "No ha indicado el/los destinatario(s)";
|
||||
"Send Anyway" = "Enviar de toda forma";
|
||||
"Error while saving the draft:" = "Error al guardar el borrador:";
|
||||
"Error while uploading the file \"%{0}\":" = "Error al cargar el fichero \"%{0}\":";
|
||||
"There is an active file upload. Closing the window will interrupt it." = "Un fichero se esta cargando. Cerrar la ventana cancelara la carga.";
|
||||
|
||||
/* Message sending */
|
||||
"cannot send message: (smtp) all recipients discarded" = "No se puede enviar el mensaje: (smtp) todos los destinatarios han sido descartados";
|
||||
|
||||
@@ -165,8 +165,6 @@
|
||||
"InboxFolderName" = "Inkorgen";
|
||||
"DraftsFolderName" = "Utkast";
|
||||
"SieveFolderName" = "Filter";
|
||||
"OtherUsersFolderName" = "Other Users";
|
||||
"SharedFoldersName" = "Shared Folders";
|
||||
"Folders" = "Mappar"; /* title line */
|
||||
|
||||
/* MailMoveToPopUp */
|
||||
|
||||
@@ -41,6 +41,7 @@
|
||||
#import <Mailer/SOGoTrashFolder.h>
|
||||
|
||||
#import <SOGo/NSObject+Utilities.h>
|
||||
#import <SOGo/NSString+Utilities.h>
|
||||
#import <SOGo/SOGoDomainDefaults.h>
|
||||
#import <SOGo/SOGoUser.h>
|
||||
#import <SOGo/SOGoUserDefaults.h>
|
||||
|
||||
@@ -640,6 +640,7 @@
|
||||
NSDictionary *d, *action;
|
||||
NSMutableArray *folders;
|
||||
NSMutableString *path;
|
||||
NSString *component;
|
||||
SOGoUserDefaults *ud;
|
||||
NSString *s;
|
||||
NSUInteger i, j, k;
|
||||
@@ -676,7 +677,8 @@
|
||||
|
||||
for (k = 0; k < [pathComponents count]; k++)
|
||||
{
|
||||
[path appendFormat: @"folder%@", [[pathComponents objectAtIndex: k] asCSSIdentifier]];
|
||||
component = [NSString stringWithFormat: @"folder%@", [pathComponents objectAtIndex: k]];
|
||||
[path appendString: [component asCSSIdentifier]];
|
||||
if (k < [pathComponents count] - 1)
|
||||
[path appendString: @"/"];
|
||||
}
|
||||
|
||||
@@ -168,8 +168,6 @@
|
||||
"InboxFolderName" = "Вхідні";
|
||||
"DraftsFolderName" = "Чернетки";
|
||||
"SieveFolderName" = "Теки";
|
||||
"OtherUsersFolderName" = "Інші користувачі";
|
||||
"SharedFoldersName" = "Спільні теки";
|
||||
"Folders" = "Всі теки"; /* title line */
|
||||
|
||||
/* MailMoveToPopUp */
|
||||
|
||||
@@ -165,8 +165,6 @@
|
||||
"InboxFolderName" = "Newydd";
|
||||
"DraftsFolderName" = "Draffts";
|
||||
"SieveFolderName" = "Ffilteri";
|
||||
"OtherUsersFolderName" = "Other Users";
|
||||
"SharedFoldersName" = "Shared Folders";
|
||||
"Folders" = "Ffolderi"; /* title line */
|
||||
|
||||
/* MailMoveToPopUp */
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
"About" = "À propos";
|
||||
"AboutBox" = "Développé par la compagnie Inverse, SOGo est un collecticiel complet mettant l'emphase sur la simplicité et l'extensibilité.<br/><br/>\nSOGo propose une interface Web moderne basée sur AJAX ainsi qu'un accès par de nombreux clients natifs (comme Mozilla Thunderbird et Lightning et Apple iCal) par l'utilisation de protocoles standards tel que CalDAV et CardDAV.<br/><br/>\nCe programme est un logiciel libre ; vous pouvez le redistribuer et/ou le modifier conformément aux dispositions de la <a href=\"http://gnu.org/licenses/gpl.html\">Licence Publique Générale GNU</a>, telle que publiée par la Free Software Foundation ; version 2 de la licence, ou encore (à votre choix) toute version ultérieure. Ce programme est distribué dans l’espoir qu’il sera utile, mais SANS AUCUNE GARANTIE.<br/><br/>\nPlusieurs <a href=\"http://www.sogo.nu/en/support/community.html\">types de soutien</a> sont offerts.";
|
||||
|
||||
"Your account was locked due to too many failed attempts." = "Votre compte a été bloqué dû à un nombre élevé de tentative d'authentification infructueuse.";
|
||||
"Your account was locked due to too many failed attempts." = "Votre compte a été bloqué suite à un nombre élevé de tentatives d'authentification infructueuses.";
|
||||
"Your account was locked due to an expired password." = "Votre compte a été bloqué car votre mot de passe est expiré.";
|
||||
"Login failed due to unhandled error case: " = "Authentification a échouée pour une raison inconnue: ";
|
||||
"Change your Password" = "Changez votre mot de passe";
|
||||
|
||||
@@ -568,7 +568,7 @@ static NSArray *reminderValues = nil;
|
||||
- (NSString *) reminder
|
||||
{
|
||||
NSString *value;
|
||||
int index;
|
||||
NSUInteger index;
|
||||
|
||||
value = [userDefaults calendarDefaultReminder];
|
||||
if (value != nil)
|
||||
|
||||
@@ -76,14 +76,14 @@ function contactsListCallback(http) {
|
||||
row.setAttribute("categories", contact["c_categories"]);
|
||||
row.setAttribute("contactname", contact["c_cn"]);
|
||||
var cells = row.getElementsByTagName("TD");
|
||||
$(cells[0]).update(contact["c_cn"]);
|
||||
$(cells[0]).update(contact["c_cn"].escapeHTML());
|
||||
cells[0].title = contact["c_cn"];
|
||||
$(cells[1]).update(contact["c_mail"]);
|
||||
$(cells[1]).update(contact["c_mail"].escapeHTML());
|
||||
cells[1].title = contact["c_mail"];
|
||||
if (fullView) {
|
||||
$(cells[2]).update(contact["c_screenname"]);
|
||||
$(cells[3]).update(contact["c_o"]);
|
||||
$(cells[4]).update(contact["c_telephonenumber"]);
|
||||
$(cells[2]).update(contact["c_screenname"].escapeHTML());
|
||||
$(cells[3]).update(contact["c_o"].escapeHTML());
|
||||
$(cells[4]).update(contact["c_telephonenumber"].escapeHTML());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -103,13 +103,13 @@ function contactsListCallback(http) {
|
||||
null,
|
||||
null,
|
||||
row);
|
||||
cell.update(contact["c_cn"]);
|
||||
cell.update(contact["c_cn"].escapeHTML());
|
||||
cell.title = contact["c_cn"];
|
||||
|
||||
cell = document.createElement("td");
|
||||
row.appendChild(cell);
|
||||
if (contact["c_mail"]) {
|
||||
cell.update(contact["c_mail"]);
|
||||
cell.update(contact["c_mail"].escapeHTML());
|
||||
cell.title = contact["c_mail"];
|
||||
}
|
||||
|
||||
@@ -117,17 +117,17 @@ function contactsListCallback(http) {
|
||||
cell = document.createElement("td");
|
||||
row.appendChild(cell);
|
||||
if (contact["c_screenname"])
|
||||
cell.update(contact["c_screenname"]);
|
||||
cell.update(contact["c_screenname"].escapeHTML());
|
||||
|
||||
cell = document.createElement("td");
|
||||
row.appendChild(cell);
|
||||
if (contact["c_o"])
|
||||
cell.update(contact["c_o"]);
|
||||
cell.update(contact["c_o"].escapeHTML());
|
||||
|
||||
cell = document.createElement("td");
|
||||
row.appendChild(cell);
|
||||
if (contact["c_telephonenumber"])
|
||||
cell.update(contact["c_telephonenumber"]);
|
||||
cell.update(contact["c_telephonenumber"].escapeHTML());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -642,15 +642,13 @@ function onConfirmContactSelection(event) {
|
||||
var rows = contactsList.getSelectedRows();
|
||||
for (i = 0; i < rows.length; i++) {
|
||||
var cid = rows[i].getAttribute("id");
|
||||
if (cid.endsWith (".vlf")) {
|
||||
addListToOpener (tag, Contact.currentAddressBook,
|
||||
currentAddressBookName, cid);
|
||||
if (cid.endsWith(".vlf")) {
|
||||
addListToOpener(tag, Contact.currentAddressBook, currentAddressBookName, cid);
|
||||
}
|
||||
else {
|
||||
var cname = '' + rows[i].readAttribute("contactname");
|
||||
var email = '' + rows[i].cells[1].innerHTML;
|
||||
addContact(tag, currentAddressBookName + '/' + cname,
|
||||
cid, cname, email);
|
||||
addContact(tag, currentAddressBookName + '/' + cname, cid, cname, email);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -2857,7 +2857,7 @@ function Mailbox(type, name, unseen, displayName) {
|
||||
else
|
||||
this.displayName = name;
|
||||
// log("name: " + name + "; dn: " + displayName);
|
||||
this.name = name.asCSSIdentifier();
|
||||
this.name = name;
|
||||
this.unseen = unseen;
|
||||
this.parentFolder = null;
|
||||
this.children = new Array();
|
||||
@@ -2878,7 +2878,7 @@ Mailbox.prototype = {
|
||||
|
||||
var currentFolder = this;
|
||||
while (currentFolder.parentFolder) {
|
||||
fullName = "/folder" + currentFolder.name + fullName;
|
||||
fullName = ("/folder" + currentFolder.name).asCSSIdentifier() + fullName;
|
||||
currentFolder = currentFolder.parentFolder;
|
||||
}
|
||||
|
||||
@@ -2887,11 +2887,9 @@ Mailbox.prototype = {
|
||||
findMailboxByName: function(name) {
|
||||
var mailbox = null;
|
||||
|
||||
var searchName = name.asCSSIdentifier();
|
||||
|
||||
var i = 0;
|
||||
while (!mailbox && i < this.children.length)
|
||||
if (this.children[i].name == searchName
|
||||
if (this.children[i].name == name
|
||||
|| this.children[i].displayName == name)
|
||||
mailbox = this.children[i];
|
||||
else
|
||||
|
||||
@@ -1782,8 +1782,8 @@ function newBaseEventDIV(eventRep, event, eventText) {
|
||||
innerDiv.appendChild(textDiv);
|
||||
textDiv.addClassName("text");
|
||||
var iconSpan = createElement("span", null, "icons");
|
||||
textDiv.appendChild(iconSpan);
|
||||
textDiv.update(eventText.replace(/(\\r)?\\n/g, "<BR/>"));
|
||||
textDiv.appendChild(iconSpan);
|
||||
|
||||
// Add alarm and classification icons
|
||||
if (event[9] == 1)
|
||||
|
||||
@@ -417,6 +417,7 @@ function configureAttachments() {
|
||||
// With singleFileUploads option enabled, the 'add' and 'done' (or 'fail') callbacks
|
||||
// are called once for each file in the selection for XHR file uploads
|
||||
singleFileUploads: true,
|
||||
pasteZone: null,
|
||||
dataType: 'json',
|
||||
add: function (e, data) {
|
||||
var file = data.files[0];
|
||||
|
||||
@@ -2,7 +2,7 @@ Software License Agreement
|
||||
==========================
|
||||
|
||||
CKEditor - The text editor for Internet - http://ckeditor.com
|
||||
Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
|
||||
Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.
|
||||
|
||||
Licensed under the terms of any of the following licenses at your
|
||||
choice:
|
||||
|
||||
@@ -1,14 +1,25 @@
|
||||
|
||||
/**
|
||||
* @license Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
|
||||
* For licensing, see LICENSE.html or http://ckeditor.com/license
|
||||
/**
|
||||
* @license Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.
|
||||
* For licensing, see LICENSE.md or http://ckeditor.com/license
|
||||
*/
|
||||
|
||||
/**
|
||||
* This file was added automatically by CKEditor builder.
|
||||
* You may re-use it at any time at http://ckeditor.com/builder to build CKEditor again.
|
||||
*
|
||||
* NOTE:
|
||||
* You may re-use it at any time to build CKEditor again.
|
||||
*
|
||||
* If you would like to build CKEditor online again
|
||||
* (for example to upgrade), visit one the following links:
|
||||
*
|
||||
* (1) http://ckeditor.com/builder
|
||||
* Visit online builder to build CKEditor from scratch.
|
||||
*
|
||||
* (2) http://ckeditor.com/builder/740a5c2b5fb85f37a81edd89153c2c81
|
||||
* Visit online builder to build CKEditor, starting with the same setup as before.
|
||||
*
|
||||
* (3) http://ckeditor.com/builder/download/740a5c2b5fb85f37a81edd89153c2c81
|
||||
* Straight download link to the latest version of CKEditor (Optimized) with the same setup as before.
|
||||
*
|
||||
* NOTE:
|
||||
* This file is not used by CKEditor, you may remove it.
|
||||
* Changing this file will not change your CKEditor configuration.
|
||||
*/
|
||||
@@ -26,66 +37,66 @@ var CKBUILDER_CONFIG = {
|
||||
plugins : {
|
||||
'about' : 1,
|
||||
'basicstyles' : 1,
|
||||
'clipboard' : 1,
|
||||
'toolbar' : 1,
|
||||
'enterkey' : 1,
|
||||
'entities' : 1,
|
||||
'floatingspace' : 1,
|
||||
'wysiwygarea' : 1,
|
||||
'link' : 1,
|
||||
'list' : 1,
|
||||
'pastetext' : 1,
|
||||
'undo' : 1,
|
||||
'dialog' : 1,
|
||||
'dialogui' : 1,
|
||||
'blockquote' : 1,
|
||||
'button' : 1,
|
||||
'fakeobjects' : 1,
|
||||
'panelbutton' : 1,
|
||||
'panel' : 1,
|
||||
'floatpanel' : 1,
|
||||
'clipboard' : 1,
|
||||
'colorbutton' : 1,
|
||||
'listblock' : 1,
|
||||
'richcombo' : 1,
|
||||
'font' : 1,
|
||||
'image' : 1,
|
||||
'menu' : 1,
|
||||
'menubutton' : 1,
|
||||
'scayt' : 1,
|
||||
'format' : 1,
|
||||
'justify' : 1,
|
||||
'wsc' : 1,
|
||||
'colordialog' : 1,
|
||||
'contextmenu' : 1,
|
||||
'blockquote' : 1,
|
||||
'dialog' : 1,
|
||||
'dialogui' : 1,
|
||||
'div' : 1,
|
||||
'enterkey' : 1,
|
||||
'entities' : 1,
|
||||
'fakeobjects' : 1,
|
||||
'floatingspace' : 1,
|
||||
'floatpanel' : 1,
|
||||
'font' : 1,
|
||||
'format' : 1,
|
||||
'image' : 1,
|
||||
'indentlist' : 1,
|
||||
'table' : 1,
|
||||
'tabletools' : 1,
|
||||
'tableresize' : 1,
|
||||
'justify' : 1,
|
||||
'link' : 1,
|
||||
'list' : 1,
|
||||
'listblock' : 1,
|
||||
'menu' : 1,
|
||||
'menubutton' : 1,
|
||||
'panel' : 1,
|
||||
'panelbutton' : 1,
|
||||
'pastetext' : 1,
|
||||
'richcombo' : 1,
|
||||
'scayt' : 1,
|
||||
'tab' : 1,
|
||||
'div' : 1
|
||||
'table' : 1,
|
||||
'tableresize' : 1,
|
||||
'tabletools' : 1,
|
||||
'toolbar' : 1,
|
||||
'undo' : 1,
|
||||
'wsc' : 1,
|
||||
'wysiwygarea' : 1
|
||||
},
|
||||
languages : {
|
||||
'ar' : 1,
|
||||
'ca' : 1,
|
||||
'cs' : 1,
|
||||
'cy' : 1,
|
||||
'da' : 1,
|
||||
'nl' : 1,
|
||||
'de' : 1,
|
||||
'en' : 1,
|
||||
'es' : 1,
|
||||
'fi' : 1,
|
||||
'fr' : 1,
|
||||
'de' : 1,
|
||||
'hu' : 1,
|
||||
'is' : 1,
|
||||
'it' : 1,
|
||||
'no' : 1,
|
||||
'nb' : 1,
|
||||
'nl' : 1,
|
||||
'no' : 1,
|
||||
'pl' : 1,
|
||||
'pt-br' : 1,
|
||||
'ru' : 1,
|
||||
'sk' : 1,
|
||||
'es' : 1,
|
||||
'sv' : 1,
|
||||
'uk' : 1,
|
||||
'cy' : 1
|
||||
'uk' : 1
|
||||
}
|
||||
};
|
||||
+446
-440
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
|
||||
Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.
|
||||
For licensing, see LICENSE.md or http://ckeditor.com/license
|
||||
*/
|
||||
|
||||
@@ -21,7 +21,7 @@ body
|
||||
.cke_editable
|
||||
{
|
||||
font-size: 13px;
|
||||
line-height: 1.6em;
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
blockquote
|
||||
@@ -64,7 +64,7 @@ ol,ul,dl
|
||||
h1,h2,h3,h4,h5,h6
|
||||
{
|
||||
font-weight: normal;
|
||||
line-height: 1.2em;
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
hr
|
||||
@@ -104,3 +104,20 @@ span[lang]
|
||||
{
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
figure
|
||||
{
|
||||
text-align: center;
|
||||
border: solid 1px #ccc;
|
||||
border-radius: 2px;
|
||||
background: rgba(0,0,0,0.05);
|
||||
padding: 10px;
|
||||
margin: 10px 20px;
|
||||
display: block; /* For IE8 */
|
||||
}
|
||||
|
||||
figure figcaption
|
||||
{
|
||||
text-align: center;
|
||||
display: block; /* For IE8 */
|
||||
}
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
|
||||
Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.
|
||||
For licensing, see LICENSE.md or http://ckeditor.com/license
|
||||
*/
|
||||
CKEDITOR.dialog.add("about",function(a){var a=a.lang.about,b=CKEDITOR.plugins.get("about").path+"dialogs/"+(CKEDITOR.env.hidpi?"hidpi/":"")+"logo_ckeditor.png";return{title:CKEDITOR.env.ie?a.dlgTitle:a.title,minWidth:390,minHeight:230,contents:[{id:"tab1",label:"",title:"",expand:!0,padding:0,elements:[{type:"html",html:'<style type="text/css">.cke_about_container{color:#000 !important;padding:10px 10px 0;margin-top:5px}.cke_about_container p{margin: 0 0 10px;}.cke_about_container .cke_about_logo{height:81px;background-color:#fff;background-image:url('+
|
||||
b+");"+(CKEDITOR.env.hidpi?"background-size:163px 58px;":"")+'background-position:center; background-repeat:no-repeat;margin-bottom:10px;}.cke_about_container a{cursor:pointer !important;color:#00B2CE !important;text-decoration:underline !important;}</style><div class="cke_about_container"><div class="cke_about_logo"></div><p>CKEditor '+CKEDITOR.version+" (revision "+CKEDITOR.revision+')<br><a href="http://ckeditor.com/">http://ckeditor.com</a></p><p>'+a.help.replace("$1",'<a href="http://docs.ckeditor.com/user">'+
|
||||
a.userGuide+"</a>")+"</p><p>"+a.moreInfo+'<br><a href="http://ckeditor.com/about/license">http://ckeditor.com/about/license</a></p><p>'+a.copy.replace("$1",'<a href="http://cksource.com/">CKSource</a> - Frederico Knabben')+"</p></div>"}]}],buttons:[CKEDITOR.dialog.cancelButton]}});
|
||||
b+");"+(CKEDITOR.env.hidpi?"background-size:163px 58px;":"")+'background-position:center; background-repeat:no-repeat;margin-bottom:10px;}.cke_about_container a{cursor:pointer !important;color:#00B2CE !important;text-decoration:underline !important;}</style><div class="cke_about_container"><div class="cke_about_logo"></div><p>CKEditor '+CKEDITOR.version+" (revision "+CKEDITOR.revision+')<br><a target="_blank" href="http://ckeditor.com/">http://ckeditor.com</a></p><p>'+a.help.replace("$1",'<a target="_blank" href="http://docs.ckeditor.com/user">'+
|
||||
a.userGuide+"</a>")+"</p><p>"+a.moreInfo+'<br><a target="_blank" href="http://ckeditor.com/about/license">http://ckeditor.com/about/license</a></p><p>'+a.copy.replace("$1",'<a target="_blank" href="http://cksource.com/">CKSource</a> - Frederico Knabben')+"</p></div>"}]}],buttons:[CKEDITOR.dialog.cancelButton]}});
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
|
||||
Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.
|
||||
For licensing, see LICENSE.md or http://ckeditor.com/license
|
||||
*/
|
||||
CKEDITOR.dialog.add("paste",function(c){function h(a){var b=new CKEDITOR.dom.document(a.document),f=b.getBody(),d=b.getById("cke_actscrpt");d&&d.remove();f.setAttribute("contenteditable",!0);if(CKEDITOR.env.ie&&8>CKEDITOR.env.version)b.getWindow().on("blur",function(){b.$.selection.empty()});b.on("keydown",function(a){var a=a.data,b;switch(a.getKeystroke()){case 27:this.hide();b=1;break;case 9:case CKEDITOR.SHIFT+9:this.changeFocus(1),b=1}b&&a.preventDefault()},this);c.fire("ariaWidget",new CKEDITOR.dom.element(a.frameElement));
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user