]> err.no Git - sope/commitdiff
improved WebDAV support for toManyRelationshipKeys
authorhelge <helge@e4a50df8-12e2-0310-a44c-efbce7f8a7e3>
Thu, 7 Oct 2004 21:50:51 +0000 (21:50 +0000)
committerhelge <helge@e4a50df8-12e2-0310-a44c-efbce7f8a7e3>
Thu, 7 Oct 2004 21:50:51 +0000 (21:50 +0000)
git-svn-id: http://svn.opengroupware.org/SOPE/trunk@229 e4a50df8-12e2-0310-a44c-efbce7f8a7e3

sope-appserver/NGObjWeb/Associations/WOLabelAssociation.m
sope-appserver/NGObjWeb/Associations/WOResourceURLAssociation.h
sope-appserver/NGObjWeb/ChangeLog
sope-appserver/NGObjWeb/DynamicElements/WOText.m
sope-appserver/NGObjWeb/SoObjects/SoLookupAssociation.h
sope-appserver/NGObjWeb/SoObjects/SoLookupAssociation.m
sope-appserver/NGObjWeb/Version
sope-appserver/NGObjWeb/WebDAV/SoObject+SoDAV.m
sope-appserver/NGObjWeb/WebDAV/SoObject+SoDAVQuery.m
sope-appserver/NGObjWeb/WebDAV/SoObjectDataSource.m

index 9ff2b12d6f2e3f9a831cc42a76fa348d9490bc69..7b0d282c3851c4ade36325aa07dc180b4178658b 100644 (file)
@@ -18,7 +18,6 @@
   Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
   02111-1307, USA.
 */
-// $Id$
 
 #include "WOLabelAssociation.h"
 #include <NGObjWeb/WOApplication.h>
index 2794ec0daf590186f2390fdc0c891aa368fc17b2..9c1a7502c2cffddf1d529b19a5ef807febb4a818 100644 (file)
@@ -1,7 +1,7 @@
 /*
-  Copyright (C) 2000-2003 SKYRIX Software AG
+  Copyright (C) 2000-2004 SKYRIX Software AG
 
-  This file is part of OGo
+  This file is part of OpenGroupware.org.
 
   OGo is free software; you can redistribute it and/or modify it under
   the terms of the GNU Lesser General Public License as published by the
   Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
   02111-1307, USA.
 */
-// $Id$
 
 #ifndef __NGObjWeb_WOResourceURLAssociation_H__
 #define __NGObjWeb_WOResourceURLAssociation_H__
 
 #include <NGObjWeb/WOAssociation.h>
 
+/*
+  WOResourceURLAssociation
+  
+  Lookup an association value as a resource URL. Eg for a binding:
+    <img rsrc:src="image.gif" />
+  
+  "image.gif" will be looked up using WOResourceManager and the URL for the
+  image will be returned.
+  
+  Note: you cannot trigger that association in a .wo wrapper template.
+*/
+
 @class NSString;
 
 @interface WOResourceURLAssociation : WOAssociation < NSCopying >
index ceecba9049d12b903384c2e17e6646718bcf4f1f..e4e2cd6fec2870216ca5a8a0f895c9a3376b6c70 100644 (file)
@@ -1,3 +1,13 @@
+2004-10-07  Helge Hess  <helge.hess@opengroupware.org>
+
+       * v4.3.54
+
+       * WebDAV/SoObject+SoDAV.m: -isCollection now also checks whether
+         objects are contained in the toManyRelationshipKeys collection
+
+       * WebDAV/SoObject+SoDAVQuery.m: -davChildKeys now returns the values of
+         both, -toOneRelationshipKeys and -toManyRelationshipKeys
+
 2004-10-07  Helge Hess  <helge.hess@skyrix.com>
 
        * WebDAV/SoObjectWebDAVDispatcher.m: added more debug output (v4.3.53)
index ba34595e363abb258471fbdd2d53ad76b2dc7540..d90342b869f7c4c662f8998f35467838de95391e 100644 (file)
@@ -1,7 +1,7 @@
 /*
-  Copyright (C) 2000-2003 SKYRIX Software AG
+  Copyright (C) 2000-2004 SKYRIX Software AG
 
-  This file is part of OGo
+  This file is part of OpenGroupware.org.
 
   OGo is free software; you can redistribute it and/or modify it under
   the terms of the GNU Lesser General Public License as published by the
@@ -18,7 +18,6 @@
   Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
   02111-1307, USA.
 */
-// $Id$
 
 #include "WOInput.h"
 #include "common.h"
index 21cfc3a674ffefa24bbedfbbd18b2c4abb6377ed..f6ca2db1fc9689f0ed15704c59ffe7918b061d59 100644 (file)
@@ -1,7 +1,7 @@
 /*
-  Copyright (C) 2000-2003 SKYRIX Software AG
+  Copyright (C) 2000-2004 SKYRIX Software AG
 
-  This file is part of OGo
+  This file is part of OpenGroupware.org.
 
   OGo is free software; you can redistribute it and/or modify it under
   the terms of the GNU Lesser General Public License as published by the
@@ -18,7 +18,6 @@
   Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
   02111-1307, USA.
 */
-// $Id$
 
 #ifndef __SoObjects_SoLookupAssociation_H__
 #define __SoObjects_SoLookupAssociation_H__
   SoLookupAssociation
 
   This association is experimental, behaviour isn't fixed yet.
+  TODO: this should probably traverse relative to the clientObject, not to
+        the component?!
+        Or we might want to support keypath _and_ lookup path, like:
+           "component.context.clientObject:+/abc/toolbar/"
+  
+  Currently it traverses the path being passed in relative to the component:
+    [_component traversePathArray:self->traversalPath 
+               acquire:self->acquire];
+
+  If you prefix the path with a "+" acquisition will be turned on, eg:
+    <var:string lookup:value="+toolbar/label" />
 
   Namespace: http://www.skyrix.com/od/so-lookup
 */
index dd021982ff6b729300f8bffcf896d5277326f7e7..ffeb52bc807f690ec2fd98bd5b0374043dab7a5a 100644 (file)
@@ -1,7 +1,7 @@
 /*
-  Copyright (C) 2000-2003 SKYRIX Software AG
+  Copyright (C) 2000-2004 SKYRIX Software AG
 
-  This file is part of OGo
+  This file is part of OpenGroupware.org.
 
   OGo is free software; you can redistribute it and/or modify it under
   the terms of the GNU Lesser General Public License as published by the
@@ -18,7 +18,6 @@
   Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
   02111-1307, USA.
 */
-// $Id$
 
 #include "SoLookupAssociation.h"
 #include "SoObject.h"
index 531230f61c839057352fe8c729f270305cd9948a..f96f5d3038c9ace6b08aaa945362cae3ebc645e8 100644 (file)
@@ -1,6 +1,6 @@
 # version file
 
-SUBMINOR_VERSION:=53
+SUBMINOR_VERSION:=54
 
 # v4.3.42  requires libNGExtensions v4.3.116
 # v4.3.40  requires libNGExtensions v4.3.115
index 751c96bb8fa3c5d951c353d1accb311ac4a56fad..2219fe65cc5e45e99d86d143fc5fff96efd46a08 100644 (file)
 
 - (BOOL)davIsCollection {
   id v;
+  
   if ([self respondsToSelector:@selector(isCollection)])
     return [self isCollection];
-  if ((v = [self valueForKey:@"NSFileType"])) {
+  if ([(v = [self valueForKey:@"NSFileType"]) isNotNull]) {
     if ([v isEqualToString:NSFileTypeDirectory])
       return YES;
     else
       return NO;
   }
-  return [[self toOneRelationshipKeys] count] > 0 ? YES : NO;
+  if ([[self toManyRelationshipKeys] count] > 0)
+    return YES;
+  if ([[self toOneRelationshipKeys] count] > 0)
+    return YES;
+  return NO;
 }
 
 - (BOOL)davIsFolder {
index 706a411464b63b82bff672413c3139d2db24b98e..87275dc7faef4d551a8e94a91c71994a2956a11b 100644 (file)
@@ -40,11 +40,27 @@ static int debugBulk = NO; // TODO: set to -1 and use defaults
     Could return toOneRelationshipKeys+toManyRelationshipKeys ? 
   */
   NSClassDescription *cd;
+  NSArray *t1, *tn;
   
-  if ((cd = [self soClassDescription]))
-    return [[cd toOneRelationshipKeys] objectEnumerator];
+  /* 
+     Note: this is done explicitly because the WebDAV class description
+           can be different to the 'EOF' class description.
+  */
+  if ((cd = [self soClassDescription]) != nil) {
+    t1 = [cd toOneRelationshipKeys];
+    tn = [cd toManyRelationshipKeys];
+  }
+  else {
+    t1 = [self toOneRelationshipKeys];
+    tn = [self toManyRelationshipKeys];
+  }
+  
+  if ([tn count] == 0)
+    return [t1 objectEnumerator];
+  if ([t1 count] == 0)
+    return [tn objectEnumerator];
   
-  return [[self toOneRelationshipKeys] objectEnumerator];
+  return [[t1 arrayByAddingObjectsFromArray:tn] objectEnumerator];
 }
 
 - (EODataSource *)contentDataSourceInContext:(id)_ctx {
index abe6a501fef57a3099c9c95b06d31cb3df7a872b..6469f89c4bd224311586df61029f2cc9a00f984e 100644 (file)
@@ -1,7 +1,7 @@
 /*
-  Copyright (C) 2000-2003 SKYRIX Software AG
+  Copyright (C) 2002-2004 SKYRIX Software AG
 
-  This file is part of OGo
+  This file is part of OpenGroupware.org.
 
   OGo is free software; you can redistribute it and/or modify it under
   the terms of the GNU Lesser General Public License as published by the
@@ -18,7 +18,6 @@
   Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
   02111-1307, USA.
 */
-// $Id$
 
 #include "SoObjectDataSource.h"
 #include "SoObjectResultEntry.h"
@@ -35,7 +34,7 @@ static BOOL debugOn = NO;
 
 + (void)initialize {
   debugOn = [[NSUserDefaults standardUserDefaults]
-             boolForKey:@"SoObjectDataSourceDebugEnabled"];
+                            boolForKey:@"SoObjectDataSourceDebugEnabled"];
 }
 
 - (id)initWithObject:(id)_object inContext:(id)_ctx {
@@ -59,6 +58,7 @@ static BOOL debugOn = NO;
 
 - (void)setFetchSpecification:(EOFetchSpecification *)_fetchSpec {
   if ([_fetchSpec isEqual:self->fspec]) return;
+  
   ASSIGN(self->fspec, _fetchSpec);
   [self postDataSourceChangedNotification];
 }