]> err.no Git - scalable-opengroupware.org/commitdiff
git-svn-id: http://svn.opengroupware.org/SOGo/inverse/trunk@1355 d1b88da0-ebda-0310...
authorwolfgang <wolfgang@d1b88da0-ebda-0310-925b-ed51d893ca5b>
Tue, 5 Feb 2008 15:13:02 +0000 (15:13 +0000)
committerwolfgang <wolfgang@d1b88da0-ebda-0310-925b-ed51d893ca5b>
Tue, 5 Feb 2008 15:13:02 +0000 (15:13 +0000)
18 files changed:
SOPE/sope-patchset-r1597.diff [moved from SOPE/sope-patchset-r1593.diff with 97% similarity]
SoObjects/SOGo/SOGoUserFolder.m
UI/Contacts/UIxContactFoldersView.h
UI/Contacts/UIxContactFoldersView.m
UI/Contacts/product.plist
UI/MailPartViewers/French.lproj/Localizable.strings
UI/MailerUI/UIxMailMainFrame.h
UI/MailerUI/UIxMailMainFrame.m
UI/MailerUI/product.plist
UI/MainUI/product.plist
UI/Scheduler/UIxCalMainView.h
UI/Scheduler/UIxCalMainView.m
UI/Scheduler/product.plist
UI/WebServerResources/ContactsUI.js
UI/WebServerResources/MailerUI.js
UI/WebServerResources/SOGoDragHandles.js
UI/WebServerResources/SchedulerUI.js
UI/WebServerResources/UIxMailEditor.js

similarity index 97%
rename from SOPE/sope-patchset-r1593.diff
rename to SOPE/sope-patchset-r1597.diff
index 2fb75ed9ee59ae3bf0d8a532a2273801232a336a..da00279068b9f21854d017758db02130cb3824c0 100644 (file)
@@ -1,136 +1,6 @@
-Index: sope-gdl1/PostgreSQL/PostgreSQL72Channel.m
-===================================================================
---- sope-gdl1/PostgreSQL/PostgreSQL72Channel.m (révision 1593)
-+++ sope-gdl1/PostgreSQL/PostgreSQL72Channel.m (copie de travail)
-@@ -713,6 +713,39 @@
-   return ms;
- }
-+/* GCSEOAdaptorChannel protocol */
-+static NSString *sqlFolderFormat = (@"CREATE TABLE %@ (\n"    \
-+                                  @"  c_name VARCHAR (256) NOT NULL,\n"
-+                                  @"  c_content VARCHAR (100000) NOT NULL,\n"
-+                                  @"  c_creationdate INT4 NOT NULL,\n"
-+                                  @"  c_lastmodified INT4 NOT NULL,\n"
-+                                  @"  c_version INT4 NOT NULL,\n"
-+                                  @"  c_deleted INT4 NULL\n"
-+                                  @")");
-+static NSString *sqlFolderACLFormat = (@"CREATE TABLE %@ (\n" \
-+                                     @"  c_uid VARCHAR (256) NOT NULL,\n"
-+                                     @"  c_object VARCHAR (256) NOT NULL,\n"
-+                                     @"  c_role VARCHAR (80) NOT NULL\n"
-+                                     @")");
-+
-+- (NSException *) createGCSFolderTableWithName: (NSString *) tableName
-+{
-+  NSString *sql;
-+
-+  sql = [NSString stringWithFormat: sqlFolderFormat, tableName];
-+
-+  return [self evaluateExpressionX: sql];
-+}
-+
-+- (NSException *) createGCSFolderACLTableWithName: (NSString *) tableName
-+{
-+  NSString *sql;
-+
-+  sql = [NSString stringWithFormat: sqlFolderACLFormat, tableName];
-+
-+  return [self evaluateExpressionX: sql];
-+}
-+
- @end /* PostgreSQL72Channel */
- @implementation PostgreSQL72Channel(PrimaryKeyGeneration)
-Index: sope-gdl1/Oracle8/OracleAdaptorChannel.m
-===================================================================
---- sope-gdl1/Oracle8/OracleAdaptorChannel.m   (révision 1593)
-+++ sope-gdl1/Oracle8/OracleAdaptorChannel.m   (copie de travail)
-@@ -30,6 +30,7 @@
- #import <NGExtensions/NSObject+Logs.h>
-+static BOOL debugOn = NO;
- //
- //
- //
-@@ -41,10 +42,19 @@
- @implementation OracleAdaptorChannel (Private)
---  (void) _cleanup
-++ (void) initialize
- {
-+  NSUserDefaults *ud;
-+
-+  ud = [NSUserDefaults standardUserDefaults];
-+  debugOn = [ud boolForKey: @"OracleAdaptorDebug"];
-+}
-+
-+- (void) _cleanup
-+{
-   column_info *info;
-   int c;
-+  sword result;
-   [_resultSetProperties removeAllObjects];
-@@ -58,11 +68,29 @@
-       // so we just free the value instead.
-       if (info->value)
-       {
--        if (OCIDescriptorFree((dvoid *)info->value, (ub4)OCI_DTYPE_LOB) != OCI_SUCCESS)
-+        if (info->type == SQLT_CLOB
-+            || info->type == SQLT_BLOB
-+            || info->type == SQLT_BFILEE
-+            || info->type == SQLT_CFILEE)
-+          {
-+            result = OCIDescriptorFree((dvoid *)info->value, (ub4) OCI_DTYPE_LOB);
-+            if (result != OCI_SUCCESS)
-+              {
-+                NSLog (@"value was not a LOB descriptor");
-+                abort();
-+              }
-+          }
-+        else
-           free(info->value);
-         info->value = NULL;
-       }
--       free(info);
-+      else
-+      {
-+        NSLog (@"trying to free an already freed value!");
-+        abort();
-+      }
-+      free(info);
-+
-       [_row_buffer removeObjectAtIndex: c];
-     }
-@@ -231,6 +259,9 @@
-   [self _cleanup];
-+  if (debugOn)
-+    [self logWithFormat: @"expression: %@", theExpression];
-+
-   if (!theExpression || ![theExpression length])
-     {
-       [NSException raise: @"OracleInvalidExpressionException"
-@@ -302,7 +333,9 @@
-       // We read the maximum width of a column
-       info->max_width = 0;
-       status = OCIAttrGet((dvoid*)param, (ub4)OCI_DTYPE_PARAM, (dvoid*)&(info->max_width), (ub4 *)0, (ub4)OCI_ATTR_DATA_SIZE, (OCIError *)_oci_err);
--      
-+
-+      if (debugOn)
-+      NSLog(@"name: %s, type: %d", cname, info->type);
-       attribute = [EOAttribute attributeWithOracleType: info->type  name: cname  length: clen  width: info->max_width];
-       [_resultSetProperties addObject: attribute];
 Index: sope-mime/NGImap4/NGImap4Connection.m
 ===================================================================
---- sope-mime/NGImap4/NGImap4Connection.m      (révision 1593)
+--- sope-mime/NGImap4/NGImap4Connection.m      (révision 1597)
 +++ sope-mime/NGImap4/NGImap4Connection.m      (copie de travail)
 @@ -381,7 +381,7 @@
    
@@ -143,7 +13,7 @@ Index: sope-mime/NGImap4/NGImap4Connection.m
      [self errorWithFormat:@"Could not list mailbox hierarchy!"];
 Index: sope-mime/NGImap4/NGImap4ResponseNormalizer.m
 ===================================================================
---- sope-mime/NGImap4/NGImap4ResponseNormalizer.m      (révision 1593)
+--- sope-mime/NGImap4/NGImap4ResponseNormalizer.m      (révision 1597)
 +++ sope-mime/NGImap4/NGImap4ResponseNormalizer.m      (copie de travail)
 @@ -648,14 +648,13 @@
    enumerator = [_flags objectEnumerator];
@@ -169,7 +39,7 @@ Index: sope-mime/NGImap4/NGImap4ResponseNormalizer.m
    if (objs) free(objs);
 Index: sope-mime/NGImap4/NGImap4ResponseParser.m
 ===================================================================
---- sope-mime/NGImap4/NGImap4ResponseParser.m  (révision 1593)
+--- sope-mime/NGImap4/NGImap4ResponseParser.m  (révision 1597)
 +++ sope-mime/NGImap4/NGImap4ResponseParser.m  (copie de travail)
 @@ -84,6 +84,8 @@
  static NSDictionary *_parseMultipartBody(NGImap4ResponseParser *self,
@@ -380,7 +250,7 @@ Index: sope-mime/NGImap4/NGImap4ResponseParser.m
  {
 Index: sope-mime/NGMail/NGSmtpClient.m
 ===================================================================
---- sope-mime/NGMail/NGSmtpClient.m    (révision 1593)
+--- sope-mime/NGMail/NGSmtpClient.m    (révision 1597)
 +++ sope-mime/NGMail/NGSmtpClient.m    (copie de travail)
 @@ -24,6 +24,82 @@
  #include "NGSmtpReplyCodes.h"
@@ -536,7 +406,7 @@ Index: sope-mime/NGMail/NGSmtpClient.m
      reply = [self receiveReply];
 Index: sope-mime/NGMail/NGMimeMessageGenerator.m
 ===================================================================
---- sope-mime/NGMail/NGMimeMessageGenerator.m  (révision 1593)
+--- sope-mime/NGMail/NGMimeMessageGenerator.m  (révision 1597)
 +++ sope-mime/NGMail/NGMimeMessageGenerator.m  (copie de travail)
 @@ -86,37 +86,40 @@
    char         *des    = NULL;
@@ -602,7 +472,7 @@ Index: sope-mime/NGMail/NGMimeMessageGenerator.m
      unsigned    isoEndLen = 2;
 Index: sope-mime/NGMime/NGMimeRFC822DateHeaderFieldParser.m
 ===================================================================
---- sope-mime/NGMime/NGMimeRFC822DateHeaderFieldParser.m       (révision 1593)
+--- sope-mime/NGMime/NGMimeRFC822DateHeaderFieldParser.m       (révision 1597)
 +++ sope-mime/NGMime/NGMimeRFC822DateHeaderFieldParser.m       (copie de travail)
 @@ -19,88 +19,45 @@
    02111-1307, USA.
@@ -997,7 +867,7 @@ Index: sope-mime/NGMime/NGMimeRFC822DateHeaderFieldParser.m
  #if 0  
 Index: sope-mime/NGMime/NGMimeHeaderFieldGeneratorSet.m
 ===================================================================
---- sope-mime/NGMime/NGMimeHeaderFieldGeneratorSet.m   (révision 1593)
+--- sope-mime/NGMime/NGMimeHeaderFieldGeneratorSet.m   (révision 1597)
 +++ sope-mime/NGMime/NGMimeHeaderFieldGeneratorSet.m   (copie de travail)
 @@ -77,6 +77,7 @@
      [rfc822Set setGenerator:gen forField:@"bcc"];
@@ -1009,7 +879,7 @@ Index: sope-mime/NGMime/NGMimeHeaderFieldGeneratorSet.m
    
 Index: sope-mime/NGMime/NGMimeBodyPart.m
 ===================================================================
---- sope-mime/NGMime/NGMimeBodyPart.m  (révision 1593)
+--- sope-mime/NGMime/NGMimeBodyPart.m  (révision 1597)
 +++ sope-mime/NGMime/NGMimeBodyPart.m  (copie de travail)
 @@ -31,18 +31,6 @@
    return 2;
@@ -1047,7 +917,7 @@ Index: sope-mime/NGMime/NGMimeBodyPart.m
  - (NSString *)contentId {
 Index: sope-mime/NGMime/GNUmakefile.preamble
 ===================================================================
---- sope-mime/NGMime/GNUmakefile.preamble      (révision 1593)
+--- sope-mime/NGMime/GNUmakefile.preamble      (révision 1597)
 +++ sope-mime/NGMime/GNUmakefile.preamble      (copie de travail)
 @@ -5,6 +5,11 @@
        -DLIBRARY_MINOR_VERSION=${MINOR_VERSION} \
@@ -1063,7 +933,7 @@ Index: sope-mime/NGMime/GNUmakefile.preamble
        -I../../sope-core/NGStreams/    \
 Index: sope-mime/NGMime/NGMimeBodyParser.m
 ===================================================================
---- sope-mime/NGMime/NGMimeBodyParser.m        (révision 1593)
+--- sope-mime/NGMime/NGMimeBodyParser.m        (révision 1597)
 +++ sope-mime/NGMime/NGMimeBodyParser.m        (copie de travail)
 @@ -67,7 +67,10 @@
    if (_data == nil) return nil;
@@ -1079,7 +949,7 @@ Index: sope-mime/NGMime/NGMimeBodyParser.m
    
 Index: sope-mime/NGMime/NGMimePartParser.h
 ===================================================================
---- sope-mime/NGMime/NGMimePartParser.h        (révision 1593)
+--- sope-mime/NGMime/NGMimePartParser.h        (révision 1597)
 +++ sope-mime/NGMime/NGMimePartParser.h        (copie de travail)
 @@ -117,6 +117,7 @@
      BOOL parserParseRawBodyDataOfPart:1;
@@ -1101,7 +971,7 @@ Index: sope-mime/NGMime/NGMimePartParser.h
  @interface NSObject(NGMimePartParser)
 Index: sope-mime/NGMime/NGMimePartParser.m
 ===================================================================
---- sope-mime/NGMime/NGMimePartParser.m        (révision 1593)
+--- sope-mime/NGMime/NGMimePartParser.m        (révision 1597)
 +++ sope-mime/NGMime/NGMimePartParser.m        (copie de travail)
 @@ -227,7 +227,7 @@
  }
@@ -1126,7 +996,7 @@ Index: sope-mime/NGMime/NGMimePartParser.m
      : [NGMimeType mimeType:[ctype stringValue]];
 Index: sope-mime/NGMime/NGMimeAddressHeaderFieldGenerator.m
 ===================================================================
---- sope-mime/NGMime/NGMimeAddressHeaderFieldGenerator.m       (révision 1593)
+--- sope-mime/NGMime/NGMimeAddressHeaderFieldGenerator.m       (révision 1597)
 +++ sope-mime/NGMime/NGMimeAddressHeaderFieldGenerator.m       (copie de travail)
 @@ -130,8 +130,13 @@
      
@@ -1157,7 +1027,7 @@ Index: sope-mime/NGMime/NGMimeAddressHeaderFieldGenerator.m
          bufLen  = [data length];
 Index: sope-mime/NGMime/NGMimeContentDispositionHeaderFieldGenerator.m
 ===================================================================
---- sope-mime/NGMime/NGMimeContentDispositionHeaderFieldGenerator.m    (révision 1593)
+--- sope-mime/NGMime/NGMimeContentDispositionHeaderFieldGenerator.m    (révision 1597)
 +++ sope-mime/NGMime/NGMimeContentDispositionHeaderFieldGenerator.m    (copie de travail)
 @@ -49,80 +49,70 @@
    
@@ -1291,9 +1161,139 @@ Index: sope-mime/NGMime/NGMimeContentDispositionHeaderFieldGenerator.m
    }
    return data;
  }
+Index: sope-gdl1/PostgreSQL/PostgreSQL72Channel.m
+===================================================================
+--- sope-gdl1/PostgreSQL/PostgreSQL72Channel.m (révision 1597)
++++ sope-gdl1/PostgreSQL/PostgreSQL72Channel.m (copie de travail)
+@@ -713,6 +713,39 @@
+   return ms;
+ }
++/* GCSEOAdaptorChannel protocol */
++static NSString *sqlFolderFormat = (@"CREATE TABLE %@ (\n"    \
++                                  @"  c_name VARCHAR (256) NOT NULL,\n"
++                                  @"  c_content VARCHAR (100000) NOT NULL,\n"
++                                  @"  c_creationdate INT4 NOT NULL,\n"
++                                  @"  c_lastmodified INT4 NOT NULL,\n"
++                                  @"  c_version INT4 NOT NULL,\n"
++                                  @"  c_deleted INT4 NULL\n"
++                                  @")");
++static NSString *sqlFolderACLFormat = (@"CREATE TABLE %@ (\n" \
++                                     @"  c_uid VARCHAR (256) NOT NULL,\n"
++                                     @"  c_object VARCHAR (256) NOT NULL,\n"
++                                     @"  c_role VARCHAR (80) NOT NULL\n"
++                                     @")");
++
++- (NSException *) createGCSFolderTableWithName: (NSString *) tableName
++{
++  NSString *sql;
++
++  sql = [NSString stringWithFormat: sqlFolderFormat, tableName];
++
++  return [self evaluateExpressionX: sql];
++}
++
++- (NSException *) createGCSFolderACLTableWithName: (NSString *) tableName
++{
++  NSString *sql;
++
++  sql = [NSString stringWithFormat: sqlFolderACLFormat, tableName];
++
++  return [self evaluateExpressionX: sql];
++}
++
+ @end /* PostgreSQL72Channel */
+ @implementation PostgreSQL72Channel(PrimaryKeyGeneration)
+Index: sope-gdl1/Oracle8/OracleAdaptorChannel.m
+===================================================================
+--- sope-gdl1/Oracle8/OracleAdaptorChannel.m   (révision 1597)
++++ sope-gdl1/Oracle8/OracleAdaptorChannel.m   (copie de travail)
+@@ -30,6 +30,7 @@
+ #import <NGExtensions/NSObject+Logs.h>
++static BOOL debugOn = NO;
+ //
+ //
+ //
+@@ -41,10 +42,19 @@
+ @implementation OracleAdaptorChannel (Private)
+--  (void) _cleanup
+++ (void) initialize
+ {
++  NSUserDefaults *ud;
++
++  ud = [NSUserDefaults standardUserDefaults];
++  debugOn = [ud boolForKey: @"OracleAdaptorDebug"];
++}
++
++- (void) _cleanup
++{
+   column_info *info;
+   int c;
++  sword result;
+   [_resultSetProperties removeAllObjects];
+@@ -58,11 +68,29 @@
+       // so we just free the value instead.
+       if (info->value)
+       {
+-        if (OCIDescriptorFree((dvoid *)info->value, (ub4)OCI_DTYPE_LOB) != OCI_SUCCESS)
++        if (info->type == SQLT_CLOB
++            || info->type == SQLT_BLOB
++            || info->type == SQLT_BFILEE
++            || info->type == SQLT_CFILEE)
++          {
++            result = OCIDescriptorFree((dvoid *)info->value, (ub4) OCI_DTYPE_LOB);
++            if (result != OCI_SUCCESS)
++              {
++                NSLog (@"value was not a LOB descriptor");
++                abort();
++              }
++          }
++        else
+           free(info->value);
+         info->value = NULL;
+       }
+-       free(info);
++      else
++      {
++        NSLog (@"trying to free an already freed value!");
++        abort();
++      }
++      free(info);
++
+       [_row_buffer removeObjectAtIndex: c];
+     }
+@@ -231,6 +259,9 @@
+   [self _cleanup];
++  if (debugOn)
++    [self logWithFormat: @"expression: %@", theExpression];
++
+   if (!theExpression || ![theExpression length])
+     {
+       [NSException raise: @"OracleInvalidExpressionException"
+@@ -302,7 +333,9 @@
+       // We read the maximum width of a column
+       info->max_width = 0;
+       status = OCIAttrGet((dvoid*)param, (ub4)OCI_DTYPE_PARAM, (dvoid*)&(info->max_width), (ub4 *)0, (ub4)OCI_ATTR_DATA_SIZE, (OCIError *)_oci_err);
+-      
++
++      if (debugOn)
++      NSLog(@"name: %s, type: %d", cname, info->type);
+       attribute = [EOAttribute attributeWithOracleType: info->type  name: cname  length: clen  width: info->max_width];
+       [_resultSetProperties addObject: attribute];
 Index: sope-core/NGExtensions/FdExt.subproj/NSString+Encoding.m
 ===================================================================
---- sope-core/NGExtensions/FdExt.subproj/NSString+Encoding.m   (révision 1593)
+--- sope-core/NGExtensions/FdExt.subproj/NSString+Encoding.m   (révision 1597)
 +++ sope-core/NGExtensions/FdExt.subproj/NSString+Encoding.m   (copie de travail)
 @@ -140,8 +140,12 @@
  
@@ -1336,7 +1336,7 @@ Index: sope-core/NGExtensions/FdExt.subproj/NSString+Encoding.m
  static char *iconv_wrapper(id self, char *_src, unsigned _srcLen,
 Index: sope-xml/libxmlSAXDriver/libxmlHTMLSAXDriver.h
 ===================================================================
---- sope-xml/libxmlSAXDriver/libxmlHTMLSAXDriver.h     (révision 1593)
+--- sope-xml/libxmlSAXDriver/libxmlHTMLSAXDriver.h     (révision 1597)
 +++ sope-xml/libxmlSAXDriver/libxmlHTMLSAXDriver.h     (copie de travail)
 @@ -19,6 +19,8 @@
    02111-1307, USA.
@@ -1358,7 +1358,7 @@ Index: sope-xml/libxmlSAXDriver/libxmlHTMLSAXDriver.h
    id<NSObject,SaxEntityResolver> entityResolver;
 Index: sope-xml/libxmlSAXDriver/libxmlHTMLSAXDriver.m
 ===================================================================
---- sope-xml/libxmlSAXDriver/libxmlHTMLSAXDriver.m     (révision 1593)
+--- sope-xml/libxmlSAXDriver/libxmlHTMLSAXDriver.m     (révision 1597)
 +++ sope-xml/libxmlSAXDriver/libxmlHTMLSAXDriver.m     (copie de travail)
 @@ -30,6 +30,12 @@
  #include <libxml/HTMLparser.h>
@@ -1418,7 +1418,7 @@ Index: sope-xml/libxmlSAXDriver/libxmlHTMLSAXDriver.m
  - (void)tearDownParser {
 Index: sope-appserver/mod_ngobjweb/config.c
 ===================================================================
---- sope-appserver/mod_ngobjweb/config.c       (révision 1593)
+--- sope-appserver/mod_ngobjweb/config.c       (révision 1597)
 +++ sope-appserver/mod_ngobjweb/config.c       (copie de travail)
 @@ -21,7 +21,7 @@
  
@@ -1431,7 +1431,7 @@ Index: sope-appserver/mod_ngobjweb/config.c
    if (buf == NULL)
 Index: sope-appserver/mod_ngobjweb/NGBufferedDescriptor.c
 ===================================================================
---- sope-appserver/mod_ngobjweb/NGBufferedDescriptor.c (révision 1593)
+--- sope-appserver/mod_ngobjweb/NGBufferedDescriptor.c (révision 1597)
 +++ sope-appserver/mod_ngobjweb/NGBufferedDescriptor.c (copie de travail)
 @@ -23,6 +23,7 @@
  #include <unistd.h>
@@ -1443,7 +1443,7 @@ Index: sope-appserver/mod_ngobjweb/NGBufferedDescriptor.c
  // returns the number of bytes which where read from the buffer
 Index: sope-appserver/mod_ngobjweb/GNUmakefile
 ===================================================================
---- sope-appserver/mod_ngobjweb/GNUmakefile    (révision 1593)
+--- sope-appserver/mod_ngobjweb/GNUmakefile    (révision 1597)
 +++ sope-appserver/mod_ngobjweb/GNUmakefile    (copie de travail)
 @@ -81,7 +81,7 @@
  
@@ -1456,7 +1456,7 @@ Index: sope-appserver/mod_ngobjweb/GNUmakefile
  
 Index: sope-appserver/mod_ngobjweb/handler.c
 ===================================================================
---- sope-appserver/mod_ngobjweb/handler.c      (révision 1593)
+--- sope-appserver/mod_ngobjweb/handler.c      (révision 1597)
 +++ sope-appserver/mod_ngobjweb/handler.c      (copie de travail)
 @@ -267,7 +267,7 @@
    const char           *uri;
@@ -1584,7 +1584,7 @@ Index: sope-appserver/mod_ngobjweb/handler.c
  static void test(void) {
 Index: sope-appserver/NGObjWeb/GNUmakefile.postamble
 ===================================================================
---- sope-appserver/NGObjWeb/GNUmakefile.postamble      (révision 1593)
+--- sope-appserver/NGObjWeb/GNUmakefile.postamble      (révision 1597)
 +++ sope-appserver/NGObjWeb/GNUmakefile.postamble      (copie de travail)
 @@ -23,14 +23,20 @@
  
@@ -1613,7 +1613,7 @@ Index: sope-appserver/NGObjWeb/GNUmakefile.postamble
 -endif
 Index: sope-appserver/NGObjWeb/WOContext.m
 ===================================================================
---- sope-appserver/NGObjWeb/WOContext.m        (révision 1593)
+--- sope-appserver/NGObjWeb/WOContext.m        (révision 1597)
 +++ sope-appserver/NGObjWeb/WOContext.m        (copie de travail)
 @@ -64,11 +64,13 @@
  static BOOL     testNSURLs           = NO;
@@ -1653,7 +1653,7 @@ Index: sope-appserver/NGObjWeb/WOContext.m
        serverURL = [@"http://" stringByAppendingString:host];
 Index: sope-appserver/NGObjWeb/DAVPropMap.plist
 ===================================================================
---- sope-appserver/NGObjWeb/DAVPropMap.plist   (révision 1593)
+--- sope-appserver/NGObjWeb/DAVPropMap.plist   (révision 1597)
 +++ sope-appserver/NGObjWeb/DAVPropMap.plist   (copie de travail)
 @@ -123,11 +123,14 @@
  
@@ -1674,7 +1674,7 @@ Index: sope-appserver/NGObjWeb/DAVPropMap.plist
  }
 Index: sope-appserver/NGObjWeb/WebDAV/SaxDAVHandler.m
 ===================================================================
---- sope-appserver/NGObjWeb/WebDAV/SaxDAVHandler.m     (révision 1593)
+--- sope-appserver/NGObjWeb/WebDAV/SaxDAVHandler.m     (révision 1597)
 +++ sope-appserver/NGObjWeb/WebDAV/SaxDAVHandler.m     (copie de travail)
 @@ -655,6 +655,7 @@
        if (self->responses == nil)
@@ -1686,7 +1686,7 @@ Index: sope-appserver/NGObjWeb/WebDAV/SaxDAVHandler.m
    case 'n':
 Index: sope-appserver/NGObjWeb/DynamicElements/WOHyperlinkInfo.m
 ===================================================================
---- sope-appserver/NGObjWeb/DynamicElements/WOHyperlinkInfo.m  (révision 1593)
+--- sope-appserver/NGObjWeb/DynamicElements/WOHyperlinkInfo.m  (révision 1597)
 +++ sope-appserver/NGObjWeb/DynamicElements/WOHyperlinkInfo.m  (copie de travail)
 @@ -216,6 +216,12 @@
        assocCount++;
@@ -1703,9 +1703,9 @@ Index: sope-appserver/NGObjWeb/DynamicElements/WOHyperlinkInfo.m
    
 Index: sope-appserver/NGObjWeb/DynamicElements/_WOComplexHyperlink.m
 ===================================================================
---- sope-appserver/NGObjWeb/DynamicElements/_WOComplexHyperlink.m      (révision 1593)
+--- sope-appserver/NGObjWeb/DynamicElements/_WOComplexHyperlink.m      (révision 1597)
 +++ sope-appserver/NGObjWeb/DynamicElements/_WOComplexHyperlink.m      (copie de travail)
-@@ -40,6 +40,7 @@
+@@ -41,6 +41,7 @@
    WOAssociation *string;
    WOAssociation *target;
    WOAssociation *disabled;
@@ -1713,7 +1713,7 @@ Index: sope-appserver/NGObjWeb/DynamicElements/_WOComplexHyperlink.m
    WOElement     *template;
    
    /* new in WO4: */
-@@ -359,6 +360,7 @@
+@@ -360,6 +361,7 @@
  {
    if ((self = [super initWithName:_name hyperlinkInfo:_info template:_t])) {
      self->href = _info->href;
@@ -1721,19 +1721,25 @@ Index: sope-appserver/NGObjWeb/DynamicElements/_WOComplexHyperlink.m
    }
    return self;
  }
-@@ -374,6 +376,9 @@
+@@ -375,11 +377,14 @@
    // TODO: we need a binding to disable rewriting!
    NSRange  r;
-   
 +  if ([[self->isAbsolute valueInContext:_ctx] boolValue] == YES)
 +    return NO;
 +
+   r.length = [_s length];
+   
+   /* do not rewrite pure fragment URLs */
+   if (r.length > 0 && [_s characterAtIndex:0] == '#')
+-    return false;
++    return NO;
+   
+   /* rewrite all URLs w/o a protocol */
    r = [_s rangeOfString:@":"];
-   if (r.length == 0) 
-     return YES;
 Index: sope-appserver/NGObjWeb/DynamicElements/WOHyperlinkInfo.h
 ===================================================================
---- sope-appserver/NGObjWeb/DynamicElements/WOHyperlinkInfo.h  (révision 1593)
+--- sope-appserver/NGObjWeb/DynamicElements/WOHyperlinkInfo.h  (révision 1597)
 +++ sope-appserver/NGObjWeb/DynamicElements/WOHyperlinkInfo.h  (copie de travail)
 @@ -41,7 +41,8 @@
    WOAssociation *pageName;
@@ -1747,7 +1753,7 @@ Index: sope-appserver/NGObjWeb/DynamicElements/WOHyperlinkInfo.h
    /* 'ivar' associations */
 Index: sope-appserver/NGObjWeb/SoObjects/SoObject.m
 ===================================================================
---- sope-appserver/NGObjWeb/SoObjects/SoObject.m       (révision 1593)
+--- sope-appserver/NGObjWeb/SoObjects/SoObject.m       (révision 1597)
 +++ sope-appserver/NGObjWeb/SoObjects/SoObject.m       (copie de travail)
 @@ -39,22 +39,34 @@
  static int debugLookup  = -1;
@@ -1898,7 +1904,7 @@ Index: sope-appserver/NGObjWeb/SoObjects/SoObject.m
    
 Index: sope-appserver/NGObjWeb/WOHttpAdaptor/WOHttpTransaction.m
 ===================================================================
---- sope-appserver/NGObjWeb/WOHttpAdaptor/WOHttpTransaction.m  (révision 1593)
+--- sope-appserver/NGObjWeb/WOHttpAdaptor/WOHttpTransaction.m  (révision 1597)
 +++ sope-appserver/NGObjWeb/WOHttpAdaptor/WOHttpTransaction.m  (copie de travail)
 @@ -31,6 +31,7 @@
  #include <NGObjWeb/WOCookie.h>
index b034c311fdfd2938f1e2578b053b1a8914197fae..d8a475dbb03176aaf12a59a89b452ec2b9eff7de 100644 (file)
 
 @implementation SOGoUserFolder
 
-+ (void) initialize
-{
-  SoClassSecurityInfo *sInfo;
-  NSArray *basicRoles;
+// + (void) initialize
+// {
+//   SoClassSecurityInfo *sInfo;
+//   NSArray *basicRoles;
 
-  sInfo = [self soClassSecurityInfo];
-  [sInfo declareObjectProtected: SoPerm_View];
+//   sInfo = [self soClassSecurityInfo];
+//   [sInfo declareObjectProtected: SoPerm_View];
 
-  basicRoles = [NSArray arrayWithObject: SoRole_Authenticated];
+//   basicRoles = [NSArray arrayWithObject: SoRole_Authenticated];
 
-  /* require Authenticated role for View and WebDAV */
-  [sInfo declareRoles: basicRoles asDefaultForPermission: SoPerm_View];
-  [sInfo declareRoles: basicRoles asDefaultForPermission: SoPerm_WebDAVAccess];
-}
+//   /* require Authenticated role for View and WebDAV */
+//   [sInfo declareRoles: basicRoles asDefaultForPermission: SoPerm_View];
+//   [sInfo declareRoles: basicRoles asDefaultForPermission: SoPerm_WebDAVAccess];
+// }
 
 /* accessors */
 
index 686982197e262d551b41f5818b30375f944878cf..51f58b9d698d3fc187f0e581e415ea4754854896 100644 (file)
 #import <SOGoUI/UIxComponent.h>
 
 @interface UIxContactFoldersView : UIxComponent
+{
+  NSUserDefaults *ud;
+  NSMutableDictionary *moduleSettings;
+}
+
+- (WOResponse *) getDragHandlesStateAction;
+- (WOResponse *) saveDragHandleStateAction;
 
 @end
 
index c662072a001f551dc2abeffe405e733a809d19ef..964d3506bb3d22264fb457afb1654444bf039b2a 100644 (file)
@@ -21,6 +21,7 @@
  */
 
 #import <Foundation/NSString.h>
+#import <Foundation/NSUserDefaults.h>
 
 #import <NGObjWeb/NSException+HTTP.h>
 #import <NGObjWeb/SoObject.h>
 
 @implementation UIxContactFoldersView
 
+- (void) _setupContext
+{
+  SOGoUser *activeUser;
+  NSString *module;
+  SOGoContactFolders *clientObject;
+
+  activeUser = [context activeUser];
+  clientObject = [self clientObject];
+
+  module = [clientObject nameInContainer];
+
+  ud = [activeUser userSettings];
+  moduleSettings = [ud objectForKey: module];
+  if (!moduleSettings)
+    {
+      moduleSettings = [NSMutableDictionary new];
+      [moduleSettings autorelease];
+    }
+  [ud setObject: moduleSettings forKey: module];
+}
+
 - (id) _selectActionForApplication: (NSString *) actionName
 {
   SOGoContactFolders *folders;
 //           ? contactFolder : nil);
 // }
 
+- (WOResponse *) getDragHandlesStateAction
+{
+  NSArray *dragHandles;
+  NSString *vertical, *horizontal;
+
+  [self _setupContext];
+
+  vertical = [moduleSettings objectForKey: @"DragHandleVertical"];
+  horizontal = [moduleSettings objectForKey: @"DragHandleHorizontal"];
+  dragHandles = [[NSArray alloc] initWithObjects: 
+                                  vertical ? vertical : @"",
+                                horizontal ? horizontal : @"",
+                                nil];
+
+  return [self responseWithStatus: 200 
+              andString: [dragHandles jsonRepresentation]];
+}
+
+- (WOResponse *) saveDragHandleStateAction
+{
+  WORequest *request;
+  NSString *dragHandle;
+  
+  [self _setupContext];
+  request = [context request];
+  if ((dragHandle = [request formValueForKey: @"vertical"]) != nil)
+    [moduleSettings setObject: dragHandle
+                   forKey: @"DragHandleVertical"];
+  else if ((dragHandle = [request formValueForKey: @"horizontal"]) != nil)
+    [moduleSettings setObject: dragHandle
+                   forKey: @"DragHandleHorizontal"];
+  else
+    return [self responseWithStatus: 400];
+  
+  [ud synchronize];
+
+  return [self responseWithStatus: 204];
+}
+
 @end
index 7cb5f6fcb63c8cdf0448975b9e7ec9da013ea061..4a0285aeeae911e8f559af0b201ed39c0552f384 100644 (file)
               protectedBy = "View";
               pageName    = "UIxContactsUserFolders"; 
           };
+           dragHandlesState = {
+              protectedBy = "<public>";
+              pageName    = "UIxContactFoldersView";
+              actionName  = "getDragHandlesState";
+           };
+          saveDragHandleState = {
+             protectedBy = "View";
+             pageName    = "UIxContactFoldersView";
+             actionName  = "saveDragHandleState";
+          };
         };
      };
 
index e126835230883b2b93bfc55340c7d2b47824c521..8574aca11a33339a0fd278d8f4a2a1cb2363ca89 100644 (file)
@@ -10,7 +10,7 @@ you_are_an_attendee = "vous êtes invité";
 add_info_text = "iMIP 'ADD' requests are not yet supported by SOGo.";
 publish_info_text = "L'expéditeur vous informe de l'événement attaché.";
 cancel_info_text = "Votre invitation ou l'événement au complet a été annulé.";
-request_info_no_attendee = "propose une réunion entre les invités. Ce message tint seulement lieu d'avis, vous n'êtes pas indiqué comme invité.";
+request_info_no_attendee = "propose une réunion entre les invités. Ce message tient seulement lieu d'avis, vous n'êtes pas indiqué comme invité.";
 Appointment = "Événement";
 
 Organizer = "Organisateur";
index 2147d5f187c27b40179fb74c5fdc5bd5869601e2..a4f3dcc6bdb10670c0e60ab2305d9ba5e14a724c 100644 (file)
@@ -34,7 +34,7 @@
 - (WOResponse *) getDragHandlesStateAction;
 - (WOResponse *) getFoldersStateAction;
 
-- (WOResponse *) saveDragHandlesStateAction;
+- (WOResponse *) saveDragHandleStateAction;
 - (WOResponse *) saveFoldersStateAction;
 
 @end
index 83f24614e319b42fb1ff7b03a0854fefc427b5f5..40126f46d75e85c82fe1f2cbd3a7551910d7f92e 100644 (file)
 
 - (WOResponse *) getDragHandlesStateAction
 {
-  NSString *dragHandles;
+  NSArray *dragHandles;
+  NSString *vertical, *horizontal;
 
   [self _setupContext];
-  dragHandles = [moduleSettings objectForKey: @"DragHandles"];
 
-  return [self responseWithStatus: 200 andString: dragHandles];
+  vertical = [moduleSettings objectForKey: @"DragHandleVertical"];
+  horizontal = [moduleSettings objectForKey: @"DragHandleHorizontal"];
+  dragHandles = [[NSArray alloc] initWithObjects: 
+                                  vertical ? vertical : @"",
+                                horizontal ? horizontal : @"",
+                                nil];
+
+  return [self responseWithStatus: 200 
+              andString: [dragHandles jsonRepresentation]];
 }
 
 - (WOResponse *) getFoldersStateAction
   return [self responseWithStatus: 200 andString: expandedFolders];
 }
 
-- (WOResponse *) saveDragHandlesStateAction
+- (WOResponse *) saveDragHandleStateAction
 {
   WORequest *request;
-  NSString *dragHandles;
+  NSString *dragHandle;
   
   [self _setupContext];
   request = [context request];
-  dragHandles = [request formValueForKey: @"dragHandles"];
-  
-  [moduleSettings setObject: dragHandles
-                 forKey: @"DragHandles"];
 
+  if ((dragHandle = [request formValueForKey: @"vertical"]) != nil)
+    [moduleSettings setObject: dragHandle
+                   forKey: @"DragHandleVertical"];
+  else if ((dragHandle = [request formValueForKey: @"horizontal"]) != nil)
+    [moduleSettings setObject: dragHandle
+                   forKey: @"DragHandleHorizontal"];
+  else
+    return [self responseWithStatus: 400];
+  
   [ud synchronize];
-
+  
   return [self responseWithStatus: 204];
 }
 
index e15dd206a484098cb64235be8d5392f8c644274f..4b10ad44d38ec9e6a31cb115274a1ecfd73bf75b 100644 (file)
          pageName    = "UIxMailMainFrame";
          actionName  = "getFoldersState";
        };
-       saveDragHandlesState = {
+       saveDragHandleState = {
          protectedBy = "View";
          pageName    = "UIxMailMainFrame";
-         actionName  = "saveDragHandlesState";
+         actionName  = "saveDragHandleState";
        };
        saveFoldersState = {
          protectedBy = "View";
index af40eccd767e1df2bbede00dd5227dcbc8c662e9..952e54742d14a844a76b83ceb395f8619f79e2e1 100644 (file)
@@ -75,6 +75,7 @@
       defaultRoles = {
        "Access Contents Information" = ( "Authenticated" );
         "WebDAV Access" = ( "Authenticated" );
+       "View" = ( "Authenticated" );
       };
     };
     SOGoGCSFolder = {
index b1e13a08d32f68737e5aceb3144a3d16c0bc790c..3ebb2fe04104530baa7026e4073cef0fa375067f 100644 (file)
@@ -33,6 +33,8 @@
 {
   NSString *monthMenuItem;
   NSNumber *yearMenuItem;
+  NSUserDefaults *ud;
+  NSMutableDictionary *moduleSettings;
 }
 
 - (NSArray *) monthMenuItems;
@@ -45,6 +47,9 @@
 - (void) setYearMenuItem: (NSNumber *) aYearMenuItem;
 - (NSNumber *) yearMenuItem;
 
+- (WOResponse *) getDragHandlesStateAction;
+- (WOResponse *) saveDragHandleStateAction;
+
 @end
 
 #endif /* UIXCALMAINVIEW_H */
index fdbdd81f73855fc1d7b7bb2e3d792c49499b90a8..0739df961680dd26ab50188d4d502226922468b0 100644 (file)
 #import <Foundation/NSValue.h>
 
 #import <NGObjWeb/SoSecurityManager.h>
+#import <NGObjWeb/WORequest.h>
 #import <NGObjWeb/WOResponse.h>
 
 #import <SOGo/SOGoPermissions.h>
 #import <SOGo/SOGoUser.h>
 
+#import <SoObjects/SOGo/NSArray+Utilities.h>
+
 #import "UIxCalMainView.h"
 
 #import <Appointments/SOGoAppointmentFolder.h>
@@ -42,6 +45,27 @@ static NSMutableArray *yearMenuItems = nil;
 
 @implementation UIxCalMainView
 
+- (void) _setupContext
+{
+  SOGoUser *activeUser;
+  NSString *module;
+  SOGoAppointmentFolders *clientObject;
+
+  activeUser = [context activeUser];
+  clientObject = [self clientObject];
+
+  module = [clientObject nameInContainer];
+
+  ud = [activeUser userSettings];
+  moduleSettings = [ud objectForKey: module];
+  if (!moduleSettings)
+    {
+      moduleSettings = [NSMutableDictionary new];
+      [moduleSettings autorelease];
+    }
+  [ud setObject: moduleSettings forKey: module];
+}
+
 - (NSArray *) monthMenuItems
 {
   unsigned int count;
@@ -100,4 +124,44 @@ static NSMutableArray *yearMenuItems = nil;
   return yearMenuItem;
 }
 
+- (WOResponse *) getDragHandlesStateAction
+{
+  NSArray *dragHandles;
+  NSString *vertical, *horizontal;
+
+  [self _setupContext];
+
+  vertical = [moduleSettings objectForKey: @"DragHandleVertical"];
+  horizontal = [moduleSettings objectForKey: @"DragHandleHorizontal"];
+  dragHandles = [[NSArray alloc] initWithObjects: 
+                                  vertical != nil ? vertical : @"",
+                                horizontal ? horizontal : @"",
+                                nil];
+
+  return [self responseWithStatus: 200 
+              andString: [dragHandles jsonRepresentation]];
+}
+
+- (WOResponse *) saveDragHandleStateAction
+{
+  WORequest *request;
+  NSString *dragHandle;
+  
+  [self _setupContext];
+  request = [context request];
+
+  if ((dragHandle = [request formValueForKey: @"vertical"]) != nil)
+    [moduleSettings setObject: dragHandle
+                   forKey: @"DragHandleVertical"];
+  else if ((dragHandle = [request formValueForKey: @"horizontal"]) != nil)
+    [moduleSettings setObject: dragHandle
+                   forKey: @"DragHandleHorizontal"];
+  else
+    return [self responseWithStatus: 400];
+
+  [ud synchronize];
+
+  return [self responseWithStatus: 204];
+}
+
 @end
index 5b1c524869b6ab237286296a342c7a0014a50076..18a20e1aafb222f051af7ffc00ddfb8b837a80e0 100644 (file)
              protectedBy = "View";
              pageName    = "UIxCalMainView";
           };
+           dragHandlesState = {
+              protectedBy = "<public>";
+              pageName    = "UIxCalMainView";
+              actionName  = "getDragHandlesState";
+           };
+          saveDragHandleState = {
+             protectedBy = "View";
+             pageName    = "UIxCalMainView";
+             actionName  = "saveDragHandleState";
+          };
           dateselector = {
              protectedBy = "View";
              pageName    = "UIxCalDateSelector"; 
index 03eae4a4414e82ae7ca19895ee6b4d04a0c392ec..87c12eae9a1b4a7e86da2c2fa93a480b6d5c6b3b 100644 (file)
@@ -763,8 +763,29 @@ function folderRenameCallback(http) {
   }
 }
 
-function saveDragHandlesState() {
-  // Call from SOGoDragHandles.js
+function getDragHandlesState() {
+  var urlstr =  ApplicationBaseURL + "dragHandlesState";
+  triggerAjaxRequest(urlstr, getDragHandlesStateCallback);
+}
+
+function getDragHandlesStateCallback(http) {
+  if (http.status == 200) {
+    if (http.responseText.length > 0) {
+      // The response text is a JSON array
+      // of the top and right offsets.
+      var data = http.responseText.evalJSON(true);
+      if (data[0].length > 0) {
+       $("contactsListContent").setStyle({ height: data[0] });
+       $("contactView").setStyle({ top: data[0] });
+       $("rightDragHandle").setStyle({ top: data[0] });
+      }
+      if (data[1].length > 0) {
+       $("contactFoldersList").setStyle({ width: data[1] });
+       $("rightPanel").setStyle({ left: data[1] });
+       $("dragHandle").setStyle({ left: data[1] });
+      }
+    }
+  }
 }
 
 function onMenuSharing(event) {
@@ -836,6 +857,7 @@ function configureSelectionButtons() {
 function initContacts(event) {
    if (!document.body.hasClassName("popup")) {
      configureAbToolbar();
+     getDragHandlesState();
    }
    else
      configureSelectionButtons();
index 83e7a0ff0170fbb262a72183603a7cbe44c67a04..fb055ebc587f8089afeee2c8a1065a8fd3e19c4b 100644 (file)
@@ -1496,15 +1496,18 @@ function getDragHandlesStateCallback(http) {
   if (http.status == 200) {
     if (http.responseText.length > 0) {
       // The response text is a JSON array
-      // of the right and top offsets.
+      // of the top and right offsets.
       var data = http.responseText.evalJSON(true);
-
-      $("leftPanel").setStyle({ width: data[0] });
-      $("rightPanel").setStyle({ left: data[0] });
-      $("verticalDragHandle").setStyle({ left: data[0] });
-      $("mailboxContent").setStyle({ height: data[1] });
-      $("messageContent").setStyle({ top: data[1] });
-      $("rightDragHandle").setStyle({ top: data[1] });
+      if (data[0].length > 0) {
+       $("mailboxContent").setStyle({ height: data[0] });
+       $("messageContent").setStyle({ top: data[0] });
+       $("rightDragHandle").setStyle({ top: data[0] });
+      }
+      if (data[1].length > 0) {
+       $("leftPanel").setStyle({ width: data[1] });
+       $("rightPanel").setStyle({ left: data[1] });
+       $("verticalDragHandle").setStyle({ left: data[1] });
+      }
     }
   }
 }
@@ -1532,26 +1535,6 @@ function getFoldersStateCallback(http) {
   }
 }
 
-function saveDragHandlesState() {
-  // Call from SOGoDragHandles.js
-  var leftBlock = $("leftPanel");
-  var upperBlock = $("mailboxContent");
-
-  if (leftBlock && upperBlock) {
-    var dragHandlesState = new Array(leftBlock.getStyle("width"), 
-                                    upperBlock.getStyle("height"));
-    var urlstr =  ApplicationBaseURL + "saveDragHandlesState" + "?dragHandles=" + dragHandlesState.toJSON();
-    triggerAjaxRequest(urlstr, saveDragHandlesStateCallback);
-  }
-}
-
-function saveDragHandlesStateCallback(http) {
-  if (http.readyState == 4
-      && isHttpStatus204(http.status)) {
-    log ("drag handles state saved");
-  }
-}
-
 function saveFoldersState() {
   if (mailAccounts.length > 0) {
     var foldersState = mailboxTree.getFoldersState();
index b81b281dc2a2e7bee72c15d1d7664e30c736d569..54ac371b24f6ac0ba4a83c1fa3ff5a27fc6e9f0f 100644 (file)
@@ -70,7 +70,9 @@ var SOGoDragHandlesInterface = {
        this.rightBlock.setStyle({ left: (this.origRight + deltaX) + 'px' });
        this.leftBlock.setStyle({ width: (this.origLeft + deltaX) + 'px' });
       }
-    } else if (this.dhType == 'vertical') {
+      this.saveDragHandleState(this.dhType, this.leftBlock.getStyle("width"));
+    }
+    else if (this.dhType == 'vertical') {
       var pointerY = Event.pointerY(event);
       if (pointerY <= this.topMargin) {
        this.lowerBlock.setStyle({ top: (this.topMargin - delta) + 'px' });
@@ -81,6 +83,7 @@ var SOGoDragHandlesInterface = {
        this.lowerBlock.setStyle({ top: (this.origLower + deltaY - delta) + 'px' });
        this.upperBlock.setStyle({ height: (this.origUpper + deltaY - delta) + 'px' });
       }
+      this.saveDragHandleState(this.dhType, this.upperBlock.getStyle("height"));
     }
     Event.stopObserving(document.body, "mouseup", this.stopHandleDraggingBound, true);
     Event.stopObserving(document.body, "mousemove", this.moveBound, true);
@@ -88,8 +91,6 @@ var SOGoDragHandlesInterface = {
     document.body.setAttribute('style', '');
     
     Event.stop(event);
-
-    saveDragHandlesState();
   },
   move: function (event) {
     if (!this.dhType)
@@ -135,6 +136,19 @@ var SOGoDragHandlesInterface = {
         this.lowerBlock.setStyle({ top: (uTop + topdelta) + 'px' });
       }
     }
+  },
+  saveDragHandleState: function (type, position) {
+    var urlstr =  ApplicationBaseURL + "saveDragHandleState"
+    + "?" + type + "=" + position;
+    triggerAjaxRequest(urlstr, this.saveDragHandleStateCallback);
+  },
+    
+  saveDragHandleStateCallback: function (http) {
+    if (isHttpStatus204(http.status)) {
+      log ("drag handle state saved");
+    }
+    else if (http.readyState == 4) {
+      log ("can't save handle state");
+    }
   }
-
 };
index 510d0cb616ea231b99f65af1af2cccd437b03208..d9ab34890fadaf8e1984d8ce1a845c85eece65dd 100644 (file)
@@ -1722,8 +1722,29 @@ function deletePersonalCalendarCallback(http) {
     log ("ajax problem 5: " + http.status);
 }
 
-function saveDragHandlesState() {
-  // Call from SOGoDragHandles.js
+function getDragHandlesState() {
+  var urlstr =  ApplicationBaseURL + "dragHandlesState";
+  triggerAjaxRequest(urlstr, getDragHandlesStateCallback);
+}
+
+function getDragHandlesStateCallback(http) {
+  if (http.status == 200) {
+    if (http.responseText.length > 0) {
+      // The response text is a JSON array
+      // of the top and right offsets.
+      var data = http.responseText.evalJSON(true);
+      if (data[0].length > 0) {
+       $("eventsListView").setStyle({ height: data[0] });
+       $("calendarView").setStyle({ top: data[0] });
+       $("rightDragHandle").setStyle({ top: data[0] });
+      }
+      if (data[1].length > 0) {
+       $("leftPanel").setStyle({ width: data[1] });
+       $("rightPanel").setStyle({ left: data[1] });
+       $("verticalDragHandle").setStyle({ left: data[1] });
+      }
+    }
+  }
 }
 
 function configureLists() {
@@ -1765,6 +1786,7 @@ function initCalendars() {
   sorting["ascending"] = true;
   
   if (!document.body.hasClassName("popup")) {
+    getDragHandlesState();
     initDateSelectorEvents();
     initCalendarSelector();
     configureSearchField();
index fbcf30a1c9222b6e15a232a1aa6eecd8ca083c16..53d1fd813f204e90d8870c321aff2bfa22d3dd97 100644 (file)
@@ -278,9 +278,10 @@ function onTextContextMenu(event) {
 }
 
 function onTextMouseDown(event) {
-  log("coucou 1");
-  event.returnValue = false;
-  event.cancelBubble = false;
+  if (event.button == 0) {
+    event.returnValue = false;
+    event.cancelBubble = false;
+  }
 }
 
 function initMailEditor() {
@@ -307,8 +308,8 @@ function initMailEditor() {
   textarea.scrollTop = textarea.scrollHeight;
   textarea.observe("focus", onTextFirstFocus);
   textarea.observe("focus", onTextFocus);
-  textarea.observe("contextmenu", onTextContextMenu);
-  textarea.observe("mousedown", onTextMouseDown);
+//   textarea.observe("contextmenu", onTextContextMenu);
+  textarea.observe("mousedown", onTextMouseDown, true);
 
   onWindowResize(null);
   Event.observe(window, "resize", onWindowResize);