]> err.no Git - sope/commitdiff
added support for fragmentIdentifier
authorhelge <helge@e4a50df8-12e2-0310-a44c-efbce7f8a7e3>
Sun, 10 Sep 2006 10:51:01 +0000 (10:51 +0000)
committerhelge <helge@e4a50df8-12e2-0310-a44c-efbce7f8a7e3>
Sun, 10 Sep 2006 10:51:01 +0000 (10:51 +0000)
git-svn-id: http://svn.opengroupware.org/SOPE/trunk@1359 e4a50df8-12e2-0310-a44c-efbce7f8a7e3

sope-appserver/NGObjWeb/ChangeLog
sope-appserver/NGObjWeb/DynamicElements/WOForm.h
sope-appserver/NGObjWeb/DynamicElements/WOForm.m
sope-appserver/NGObjWeb/Version

index 618a8e95b18b4f1413f01b87980c179a206e25c6..55f2510e7351ef3152911b52da9727cbe3b8f5e8 100644 (file)
@@ -1,3 +1,8 @@
+2006-09-10  Helge Hess  <helge.hess@opengroupware.org>
+
+       * DynamicElements/WOForm.m: added 'fragmentIdentifier' binding to
+         generate actions which contains a named link (#tasks) (v4.5.248)
+
 2006-09-05  Helge Hess  <helge.hess@opengroupware.org>
 
        * DynamicElements/WOCheckBoxList.m: fixed a typo (v4.5.247)
index 3822b675a17ddc7d8b86b47f047533e1f5757bb5..dc692f4a813944473a007f22cac2396ff50f3987 100644 (file)
@@ -1,5 +1,6 @@
 /*
-  Copyright (C) 2000-2005 SKYRIX Software AG
+  Copyright (C) 2000-2006 SKYRIX Software AG
+  Copyright (C) 2006      Helge Hess
 
   This file is part of SOPE.
 
   WOAssociation *pageName;
   WOElement     *template;
 
-  // new in WO4:
+  /* new in WO4: */
   WOAssociation *queryDictionary;
   NSDictionary  *queryParameters;  /* associations beginning with '?' */
   WOAssociation *actionClass;
   WOAssociation *directActionName;
   BOOL          sidInUrl;          /* include session-id in wa URL ? */
   
-  // skyrix
+  /* SOPE specific */
   WOAssociation *method;
+  WOAssociation *fragmentIdentifier;
 }
 
 @end
index c792924b3fb264a7bc810eecadd9bb9bd7ed9371..32f7fbfc69a6f003e7e4ba37de1bf0fcdabb09f4 100644 (file)
@@ -1,5 +1,6 @@
 /*
-  Copyright (C) 2000-2005 SKYRIX Software AG
+  Copyright (C) 2000-2006 SKYRIX Software AG
+  Copyright (C) 2006      Helge Hess
 
   This file is part of SOPE.
 
@@ -31,7 +32,7 @@
 static int debugTakeValues = -1;
 
 + (int)version {
-  return 4;
+  return 5;
 }
 
 - (id)initWithName:(NSString *)_name
@@ -51,15 +52,16 @@ static int debugTakeValues = -1;
 
     self->containsForm = YES;
     
-    sidInUrlAssoc          = OWGetProperty(_config, @"?wosid");
-    self->action           = OWGetProperty(_config, @"action");
-    self->href             = OWGetProperty(_config, @"href");
-    self->pageName         = OWGetProperty(_config, @"pageName");
-    self->queryDictionary  = OWGetProperty(_config, @"queryDictionary");
-    self->queryParameters  = OWExtractQueryParameters(_config);
-    self->actionClass      = OWGetProperty(_config, @"actionClass");
-    self->directActionName = OWGetProperty(_config, @"directActionName");
-    self->method           = OWGetProperty(_config, @"method");
+    sidInUrlAssoc            = OWGetProperty(_config, @"?wosid");
+    self->action             = OWGetProperty(_config, @"action");
+    self->href               = OWGetProperty(_config, @"href");
+    self->pageName           = OWGetProperty(_config, @"pageName");
+    self->queryDictionary    = OWGetProperty(_config, @"queryDictionary");
+    self->queryParameters    = OWExtractQueryParameters(_config);
+    self->actionClass        = OWGetProperty(_config, @"actionClass");
+    self->directActionName   = OWGetProperty(_config, @"directActionName");
+    self->method             = OWGetProperty(_config, @"method");
+    self->fragmentIdentifier = OWGetProperty(_config, @"fragmentIdentifier");
     
     self->sidInUrl = (sidInUrlAssoc != nil)
       ? [sidInUrlAssoc boolValueInComponent:nil]
@@ -76,16 +78,17 @@ static int debugTakeValues = -1;
 }
 
 - (void)dealloc {
-  [self->method           release];
-  [self->template         release];
-  [self->actionClass      release];
-  [self->directActionName release];
-  [self->queryDictionary  release];
-  [self->queryParameters  release];
-  [self->action           release];
-  [self->pageName         release];
-  [self->href             release];
-  [super dealloc];
+  [self->fragmentIdentifier release];
+  [self->method             release];
+  [self->template           release];
+  [self->actionClass        release];
+  [self->directActionName   release];
+  [self->queryDictionary    release];
+  [self->queryParameters    release];
+  [self->action             release];
+  [self->pageName           release];
+  [self->href               release];
+  [super dealloc];  
 }
 
 /* handle active form elements */
@@ -348,10 +351,16 @@ static int debugTakeValues = -1;
     return;
   }
   
-  [_ctx setInForm:YES];
-  sComponent  = [_ctx component];
+  sComponent = [_ctx component];
+
+  if ([_ctx isInForm])
+    [self warnWithFormat:@"detected nested WOForm, component: %@", sComponent];
+  else
+    [_ctx setInForm:YES];
 
   WOResponse_AddCString(_response, "<form action=\"");
+
+  /* add URL to response and return the query string */
   
   if (self->href != nil)
     queryString = [self _addHrefToResponse:_response inContext:_ctx];
@@ -359,12 +368,22 @@ static int debugTakeValues = -1;
     [self _addDirectActionToResponse:_response inContext:_ctx];
   else
     queryString = [self _addActionToResponse:_response inContext:_ctx];
+
+  if (self->fragmentIdentifier != nil) {
+    NSString *f = [self->fragmentIdentifier stringValueInComponent:sComponent];
+    if ([f isNotEmpty]) {
+      [_response appendContentCharacter:'#'];
+      WOResponse_AddString(_response, f);
+    }
+  }
+
+  /* append the query string */
   
-  if (queryString) {
+  if (queryString != nil) {
     [_response appendContentCharacter:'?'];
     WOResponse_AddString(_response, queryString);
   }
-  if (self->method) {
+  if (self->method != nil) {
     WOResponse_AddCString(_response, "\" method=\"");
     WOResponse_AddString(_response, 
                         [self->method stringValueInComponent:sComponent]);
@@ -375,15 +394,19 @@ static int debugTakeValues = -1;
       
   [self appendExtraAttributesToResponse:_response inContext:_ctx];
   
-  if (self->otherTagString) {
+  if (self->otherTagString != nil) {
     WOResponse_AddChar(_response, ' ');
     WOResponse_AddString(_response,
                          [self->otherTagString stringValueInComponent:
                            sComponent]);
   }
   WOResponse_AddChar(_response, '>');
+
+  /* render form content */
     
   [self->template appendToResponse:_response inContext:_ctx];
+
+  /* close form */
   
   WOResponse_AddCString(_response, "</form>");
   [_ctx setInForm:NO];
index e07cb53712b24afde14014ec464f874ac9662ff8..7e1713ab4b6af52c1292829c9d4b6e9b4ecb746a 100644 (file)
@@ -1,6 +1,6 @@
 # version file
 
-SUBMINOR_VERSION:=247
+SUBMINOR_VERSION:=248
 
 # v4.5.234 requires libDOM          v4.5.21
 # v4.5.214 requires libNGExtensions v4.5.179