]> err.no Git - scalable-opengroupware.org/commitdiff
fixed maillist refresh on delete/mark read
authorhelge <helge@d1b88da0-ebda-0310-925b-ed51d893ca5b>
Mon, 7 Feb 2005 15:39:46 +0000 (15:39 +0000)
committerhelge <helge@d1b88da0-ebda-0310-925b-ed51d893ca5b>
Mon, 7 Feb 2005 15:39:46 +0000 (15:39 +0000)
git-svn-id: http://svn.opengroupware.org/SOGo/trunk@527 d1b88da0-ebda-0310-925b-ed51d893ca5b

SOGo/UI/Mailer/ChangeLog
SOGo/UI/Mailer/UIxMailView.m
SOGo/UI/Mailer/UIxMailView.wox
SOGo/UI/Mailer/UIxMailWindowCloser.m
SOGo/UI/Mailer/UIxMailWindowCloser.wox
SOGo/UI/Mailer/Version
SOGo/UI/Mailer/mailer.js
SOGo/UI/SOGoUI/UIxComponent.m

index 795bc8a381c45647ed854e76779387cf8db7f4f3..c8418d55c70e0f95ae8c04ad330ceb1677a1340d 100644 (file)
@@ -1,5 +1,19 @@
 2005-02-07  Helge Hess  <helge.hess@opengroupware.org>
 
+       * v0.9.92
+       
+       * UIxMailView.m: properly refresh mail list after a mail got deleted
+
+       * UIxMailWindowCloser.m: added ability to refresh the opener window
+         prior closing the panel
+
+       * UIxMailView.wox: triggers opener callback to mark a mail as read
+       
+       * mailer.js: added refreshOpener() function which refreshes the
+         panel that opened the current window, added triggerOpenerCallback()
+         function which triggers a URL given in the "openerurl" query
+         parameter on the opener window
+
        * UIxMailEditor.m: disabled Internet warning in the mail editor per
          default, can be enabled using the 'SOGoShowInternetMarker' default,
          made Internet header detection qualifier configurable, see README
index 45198e224522c669f11933a59fce7c7b67a4633f..d7ffaedd3605932c8089f8fb4d903cb912c0cc1b 100644 (file)
   
   if (![self isInlineViewer]) {
     // if everything is ok, close the window (send a JS closing the Window)
-    return [self pageWithName:@"UIxMailWindowCloser"];
+    id page;
+    
+    page = [self pageWithName:@"UIxMailWindowCloser"];
+    [page takeValue:@"YES" forKey:@"refreshOpener"];
+    return page;
   }
   else {
     id url;
index bcd92b1d93738b94dbb877e682e4469172ba9951..eb2cae6333565332aa5ed014d6e839b9a4ed3203 100644 (file)
@@ -74,8 +74,5 @@
                    bodyInfo="clientObject.bodyStructure" />
   </div>
 
-<!--
-  <pre><var:string value="message" /></pre><br />
-  <pre><var:string value="message.body" /></pre><br />
--->
+  <script language="JavaScript">triggerOpenerCallback();</script>
 </var:component>
index 98c936c89f7ab53a1ceab1e740dc3c707cd72748..cb80f477ab669884f62c4fb20f699f4a37903011 100644 (file)
@@ -23,6 +23,7 @@
 
 @interface UIxMailWindowCloser : WOComponent
 {
+  BOOL refreshOpener;
 }
 
 @end
 
 @implementation UIxMailWindowCloser
 
+- (void)setRefreshOpener:(BOOL)_flag {
+  self->refreshOpener = _flag;
+}
+- (BOOL)refreshOpener {
+  return self->refreshOpener;
+}
+
+- (NSString *)refreshOpenerScript {
+  return
+    @"if (window.opener && !window.opener.closed) {\n"
+    @"  window.opener.location.reload();\n"
+    @"}\n";
+}
+
 @end /* UIxMailWindowCloser */
index e21397c76e626a67ffd569a6d930083aaaa6e1d5..77498df8c52f12d993a94899bd5287036e55228f 100644 (file)
@@ -7,13 +7,20 @@
       xmlns:label="OGo:label"
 >
   <head>
-    <title><var:string label:value="OpenGroupware.org"/></title>
+    <title><var:string label:value="Closing Window ..."/></title>
     <meta name="description" content="SOGo Web Interface"/>
-    <meta name="author" content="SKYRIX Software AG"/>
-    <meta name="robots" content="stop"/>
+    <meta name="author"      content="SKYRIX Software AG"/>
+    <meta name="robots"      content="stop"/>
     <link href="mailto:info@skyrix.com" rev="made"/>
   </head>
 
-  <body onload="window.close()">
+  <body>
+    <var:if condition="refreshOpener">
+      <script language="JavaScript"
+        ><var:string value="refreshOpenerScript" 
+                     const:escapeHTML="0" /></script>
+    </var:if>
+
+    <script language="JavaScript">window.close();</script>
   </body>
-</html>
\ No newline at end of file
+</html>
index df435c35d8c80bd61400b58732c86e35f05ab761..e7ef8c160ce2dba24a24884c705003daa493f886 100644 (file)
@@ -1,6 +1,6 @@
 # version file
 
-SUBMINOR_VERSION:=91
+SUBMINOR_VERSION:=92
 
 # v0.9.91 requires SoObjects/Mailer v0.9.68
 # v0.9.89 requires SoObjects/Mailer v0.9.67
index 2927ffc2481558b7d9fcd2801544d2b5c29ff5a0..b8ddaced094ad3cfe0956b7c35df8f3e8e675299 100644 (file)
@@ -8,9 +8,10 @@
 */
 
 function clickedUid(sender, msguid) {
-  var urlstr;
+  var urlstr, cburl;
   
-  urlstr = msguid + "/view?markread=1";
+  cburl  = "markMessageRead?uid=" + msguid;
+  urlstr = msguid + "/view?openerurl=" + encodeURIComponent(cburl);
   window.open(urlstr, "SOGo_msg_" + msguid,
              "width=640,height=480,resizable=1,scrollbars=1,toolbar=0," +
              "location=0,directories=0,status=0,menubar=0,copyhistory=0")
@@ -43,7 +44,6 @@ function clickedCompose(sender) {
   return false; /* stop following the link */
 }
 
-
 /* mail editor */
 
 function validateEditorInput(sender) {
@@ -141,3 +141,46 @@ function clickedNewFilter(sender) {
              "location=0,directories=0,status=0,menubar=0,copyhistory=0");
   return false; /* stop following the link */
 }
+
+/* generic stuff */
+
+function refreshOpener() {
+  if (window.opener && !window.opener.closed) {
+    window.opener.location.reload();
+  }
+}
+
+function getQueryParaArray(s) {
+  if (s.charAt(0) == "?") s = s.substr(1, s.length - 1);
+  return s.split("&");
+}
+function getQueryParaValue(s, name) {
+  var t;
+  
+  t = getQueryParaArray(s);
+  for (var i = 0; i < t.length; i++) {
+    var s = t[i];
+    
+    if (s.indexOf(name) != 0)
+      continue;
+    
+    s = s.substr(name.length, s.length - name.length);
+    return decodeURIComponent(s);
+  }
+  return None;
+}
+
+function triggerOpenerCallback() {
+  /* this code has some issue if the folder has no proper trailing slash! */
+  if (window.opener && !window.opener.closed) {
+    var t, cburl;
+    
+    t = getQueryParaValue(window.location.search, "openerurl=");
+    cburl = window.opener.window.location.href;
+    if (cburl[cburl.length - 1] != "/") {
+      cburl = cburl.substr(0, cburl.lastIndexOf("/") + 1);
+    }
+    cburl = cburl + t;
+    window.opener.window.location.href = cburl;
+  }
+}
index 30c049f948c6eafdc5e03ed9b34068f742075059..42c3f4a4d7af78265ad03a0eec85857a3894285c 100644 (file)
@@ -316,7 +316,7 @@ static BOOL uixDebugEnabled = NO;
   NSString *s;
   NSRange  r;
 
-#warning !! USE USER MANAGER INSTEAD!
+#warning TODO: USE USER MANAGER INSTEAD!
 
   s = [[self user] login];
   if ([s length] < 10)
@@ -341,10 +341,9 @@ static BOOL uixDebugEnabled = NO;
   NSString          *lKey, *lTable, *lVal;
   NSRange r;
 
-  if ([_str length] == 0) {
+  if ([_str length] == 0)
     return nil;
-  }
-    
+  
   /* lookup languages */
     
   ctx = [self context];
@@ -372,19 +371,20 @@ static BOOL uixDebugEnabled = NO;
   }
   lVal = lKey;
 
-  if([lKey hasPrefix:@"$"]) {
+  if ([lKey hasPrefix:@"$"])
     lKey = [self valueForKeyPath:[lKey substringFromIndex:1]];
-  }
-  if([lTable hasPrefix:@"$"]) {
+  
+  if ([lTable hasPrefix:@"$"])
     lTable = [self valueForKeyPath:[lTable substringFromIndex:1]];
-  }
+  
 #if 0
-  if([lVal hasPrefix:@"$"]) {
+  if ([lVal hasPrefix:@"$"])
     lVal = [self valueForKeyPath:[lVal substringFromIndex:1]];
-  }
+  
 #endif
+  
   /* lookup string */
-    
+  
   label = [rm stringForKey:lKey inTableNamed:lTable withDefaultValue:lVal
              languages:languages];
   return label;