Merge to 2.2.2

This commit is contained in:
Francis Lachapelle
2014-03-21 15:33:55 -04:00
127 changed files with 1581 additions and 836 deletions
+26
View File
@@ -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
+1
View File
@@ -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;
+18 -1
View File
@@ -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;
}
//
//
//
+19 -9
View File
@@ -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];
+60 -10
View File
@@ -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);
+151 -9
View File
@@ -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
+419
View File
@@ -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.
+28 -3
View File
@@ -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
+1 -1
View File
@@ -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);
}
+36 -40
View File
@@ -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";
+1 -1
View File
@@ -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
View File
@@ -1,5 +1,6 @@
{
WOWorkersCount = 1;
WOListenQueueSize = 5;
SxVMemLimit = 384;
WOLogFile = "/var/log/sogo/sogo.log";
WOPidFile = "/var/run/sogo/sogo.pid";
+1 -1
View File
@@ -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 */
+14 -12
View File
@@ -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 */
+1
View File
@@ -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>
+3 -1
View File
@@ -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 */
+1 -1
View File
@@ -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 lespoir quil 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é à 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";
+1 -1
View File
@@ -568,7 +568,7 @@ static NSArray *reminderValues = nil;
- (NSString *) reminder
{
NSString *value;
int index;
NSUInteger index;
value = [userDefaults calendarDefaultReminder];
if (value != nil)
+13 -15
View File
@@ -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);
}
}
+3 -5
View File
@@ -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
+1 -1
View File
@@ -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)
+1
View File
@@ -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];
+1 -1
View File
@@ -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:
+55 -44
View File
@@ -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
}
};
File diff suppressed because it is too large Load Diff
+20 -3
View File
@@ -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