]> err.no Git - sope/commitdiff
added some support to generate empty attributes (like selected or checked)
authorhelge <helge@e4a50df8-12e2-0310-a44c-efbce7f8a7e3>
Wed, 30 Mar 2005 23:04:32 +0000 (23:04 +0000)
committerhelge <helge@e4a50df8-12e2-0310-a44c-efbce7f8a7e3>
Wed, 30 Mar 2005 23:04:32 +0000 (23:04 +0000)
git-svn-id: http://svn.opengroupware.org/SOPE/trunk@709 e4a50df8-12e2-0310-a44c-efbce7f8a7e3

sope-appserver/NGObjWeb/ChangeLog
sope-appserver/NGObjWeb/DynamicElements/WOBrowser.m
sope-appserver/NGObjWeb/DynamicElements/WOCheckBox.m
sope-appserver/NGObjWeb/DynamicElements/WOCheckBoxList.m
sope-appserver/NGObjWeb/DynamicElements/WOPopUpButton.m
sope-appserver/NGObjWeb/DynamicElements/WORadioButton.m
sope-appserver/NGObjWeb/DynamicElements/WORadioButtonList.m
sope-appserver/NGObjWeb/NGObjWeb/WOContext.h
sope-appserver/NGObjWeb/Version
sope-appserver/NGObjWeb/WOContext.m

index 8bf2e857f63f6fa33088b2cd0ce2ee397f356e3e..96ce32c2c7a7ca4e02c39dd2284828d59fcdc36f 100644 (file)
@@ -1,4 +1,20 @@
-2005-03-31  Stephane Corthesy  <stephane@sente.ch>
+2005-03-31  Helge Hess  <helge.hess@opengroupware.org>
+
+       * v4.5.147
+
+       * DynamicElements/WOCheckBox.m, DynamicElements/WOCheckBoxList.m,
+         DynamicElements/WORadioButton.m, DynamicElements/WORadioButtonList.m:
+         added support for empty 'disabled' and 'checked' attributes, removed
+         '\n' after generated tag
+
+       * DynamicElements/WOBrowser.m, DynamicElements/WOPopUpButton.m: added
+         support for empty "selected" attribute
+
+       * WOContext.m: added new flag/accessor 'generateEmptyAttributes' to
+         put elements into a mode where they do not render XHTML style
+         attributes (just 'selected' instead of 'selected="selected"')
+
+2005-03-30  Stephane Corthesy  <stephane@sente.ch>
 
        * DynamicElements/WOPopUpButton.m, DynamicElements/WOPopUpButton.api: 
          added new binding 'itemGroup' which allows generation of the
index fdd07c9c1bed17f3ae92175c68b62b5f1d8acf90..0900cb8ca1d13c7c2fd51e9666bd74814dc5132c 100644 (file)
     
     WOResponse_AddCString(_response, "<option value=\"");
     WOResponse_AddString(_response, v);
-    WOResponse_AddString(_response,
-                         isSelected ? @"\" selected=\"selected\">" : @"\">");
+    if (isSelected) {
+      WOResponse_AddString(_response, _ctx->wcFlags.allowEmptyAttributes 
+                          ? @"\" selected>" : @"\" selected=\"selected\">");
+    }
+    else {
+      WOResponse_AddString(_response, @"\">");
+    }
     WOResponse_AddHtmlString(_response, displayV);
     WOResponse_AddCString(_response, "</option>");
   }
index 8a6bbfc99b34f7a769c16e8ebd20a7015ad859a5..fb265f2b16102d85641b2b0d0ebca4baaaa74083 100644 (file)
   [super dealloc];
 }
 
-// ******************** OWResponder ********************
+/* handling requests */
 
-- (void)takeValuesFromRequest:(WORequest *)_request
-  inContext:(WOContext *)_ctx
-{
+- (void)takeValuesFromRequest:(WORequest *)_rq inContext:(WOContext *)_ctx {
   /*
     Checkboxes are special in their form-value handling. If the form is
     submitted and the checkbox is checked, a 'YES' value is transferred in the
     request. If the checkbox is not-checked, no value is transferred at all !
   */
-  if (![self->disabled boolValueInComponent:[_ctx component]]) {
-    id formValue;
+  id formValue;
+  
+  if ([self->disabled boolValueInComponent:[_ctx component]])
+    return;
 
-    formValue = [_request formValueForKey:OWFormElementName(self, _ctx)];
+  formValue = [_rq formValueForKey:OWFormElementName(self, _ctx)];
     
-    if ([self->checked isValueSettable]) {
+  if ([self->checked isValueSettable]) {
       [self->checked setBoolValue:formValue ? YES : NO
                      inComponent:[_ctx component]];
-    }
-
-    if ([self->value isValueSettable] && (formValue != nil))
-      [self->value setStringValue:formValue inComponent:[_ctx component]];
   }
+  
+  if ([self->value isValueSettable] && (formValue != nil))
+    [self->value setStringValue:formValue inComponent:[_ctx component]];
 }
 
 - (void)appendToResponse:(WOResponse *)_response inContext:(WOContext *)_ctx {
   [_response appendContentHTMLAttributeValue:([v length] > 0) ? v : @"1"];
   WOResponse_AddCString(_response, "\"");
   
-  if ([self->disabled boolValueInComponent:[_ctx component]])
-    WOResponse_AddCString(_response, " disabled=\"disabled\"");
+  if ([self->disabled boolValueInComponent:[_ctx component]]) {
+    WOResponse_AddCString(_response, _ctx->wcFlags.allowEmptyAttributes
+                         ? " disabled" : " disabled=\"disabled\"");
+  }
+  
+  if (isChecked) {
+    WOResponse_AddCString(_response, _ctx->wcFlags.allowEmptyAttributes 
+                         ? " checked" : " checked=\"checked\"");
+  }
   
-  if (isChecked)
-    WOResponse_AddCString(_response, " checked=\"checked\"");
-      
   [self appendExtraAttributesToResponse:_response inContext:_ctx];
   
   if (self->otherTagString) {
   }
   
   if (_ctx->wcFlags.xmlStyleEmptyElements) {
-    WOResponse_AddCString(_response, " />\n");
+    WOResponse_AddCString(_response, " />");
   }
   else {
-    WOResponse_AddCString(_response, ">\n");
+    WOResponse_AddCString(_response, ">");
   }
 }
 
index 9e2290fdae227f28da978df5abc474d5ee6c6bcb..a22794fa1a9b62e9c66cde3a228f1dff0cd50a77 100644 (file)
       WOResponse_AddCString(_response, "\" value=\"");
       WOResponse_AddInt(_response, cnt);
       WOResponse_AddCString(_response, "\"");
-  
-      if ([selArray containsObject:object])
-       WOResponse_AddCString(_response, " checked=\"checked\"");
       
-      if ([self->disabled boolValueInComponent:sComponent])
-       WOResponse_AddCString(_response, " disabled=\"disabled\"");
+      if ([self->disabled boolValueInComponent:sComponent]) {
+       WOResponse_AddCString(_response, _ctx->wcFlags.allowEmptyAttributes
+                             ? " disabled" : " disabled=\"disabled\"");
+      }
+      
+      if ([selArray containsObject:object]) {
+       WOResponse_AddCString(_response, _ctx->wcFlags.allowEmptyAttributes 
+                             ? " checked" : " checked=\"checked\"");
+      }
       
       [self appendExtraAttributesToResponse:_response inContext:_ctx];
           
index 072874684794e1e2a5eafaac1f2886175f16dead..73993c07cf6e9d242e8e663b3fc16dbaad370da4 100644 (file)
@@ -394,9 +394,16 @@ static NSNumber *yesNum = nil;
     }
     WOResponse_AddCString(_response, "<option value=\"");
     WOResponse_AddHtmlString(_response, v); // WO escapes it, always
-    WOResponse_AddCString(_response, 
-                         isSelected ? 
-                         "\" selected=\"selected\">" : "\">");
+    
+    if (isSelected) {
+      WOResponse_AddString(_response,
+                          _ctx->wcFlags.allowEmptyAttributes 
+                          ? @"\" selected>" : @"\" selected=\"selected\">");
+    }
+    else {
+      WOResponse_AddString(_response, @"\">");
+    }
+    
     if (escapesHTML){
       WOResponse_AddHtmlString(_response, displayV);
     }
index 4451bf365d2339ef3451513805c3bfe86fd74d3e..3b2f3a1651f717de91ab23071786668aee9370c5 100644 (file)
   WOResponse_AddCString(_response, "\"");
   
   if (self->checked != nil) {
-    if ([self->checked boolValueInComponent:sComponent])
-      WOResponse_AddCString(_response, " checked=\"checked\"");
+    if ([self->checked boolValueInComponent:sComponent]) {
+      WOResponse_AddCString(_response, _ctx->wcFlags.allowEmptyAttributes 
+                           ? " checked" : " checked=\"checked\"");
+    }
   }
   else {
     id v, sel;
     
     v   = [self->value     valueInComponent:sComponent];
     sel = [self->selection valueInComponent:sComponent];
-    if ((v == sel) || [v isEqual:sel])
-      WOResponse_AddCString(_response, " checked=\"checked\"");
+    if ((v == sel) || [v isEqual:sel]) {
+      WOResponse_AddCString(_response, _ctx->wcFlags.allowEmptyAttributes 
+                           ? " checked" : " checked=\"checked\"");
+    }
   }
   
-  if ([self->disabled boolValueInComponent:sComponent])
-    WOResponse_AddCString(_response, " disabled=\"disabled\"");
+  if ([self->disabled boolValueInComponent:sComponent]) {
+    WOResponse_AddCString(_response, _ctx->wcFlags.allowEmptyAttributes
+                         ? " disabled" : " disabled=\"disabled\"");
+  }
   
   [self appendExtraAttributesToResponse:_response inContext:_ctx];
   if (self->otherTagString != nil) {
index 254f53053360dd084d39aee5760c1e5c6d84f4c6..5ad8d25046f25c0fbc6890729b453b403adff52d 100644 (file)
@@ -72,9 +72,7 @@
 
 /* processing requests */
 
-- (void)takeValuesFromRequest:(WORequest *)_request
-  inContext:(WOContext *)_ctx
-{
+- (void)takeValuesFromRequest:(WORequest *)_rq inContext:(WOContext *)_ctx {
   WOComponent *sComponent = [_ctx component];
   unsigned idx;
   NSArray  *array;
@@ -83,7 +81,7 @@
   if ([self->disabled boolValueInComponent:sComponent])
     return;
   
-  formValue = [_request formValueForKey:OWFormElementName(self, _ctx)];
+  formValue = [_rq formValueForKey:OWFormElementName(self, _ctx)];
   if (formValue == nil)
     return;
   
       WOResponse_AddInt(_response, cnt);
       WOResponse_AddCString(_response, "\"");
       
-      if (sel == object || [sel isEqual:object])
-       WOResponse_AddCString(_response, " checked=\"checked\"");
+      if (sel == object || [sel isEqual:object]) {
+       WOResponse_AddCString(_response, _ctx->wcFlags.allowEmptyAttributes 
+                             ? " checked" : " checked=\"checked\"");
+      }
       
-      if ([self->disabled boolValueInComponent:sComponent])
-       WOResponse_AddCString(_response, " disabled=\"disabled\"");
+      if ([self->disabled boolValueInComponent:sComponent]) {
+       WOResponse_AddCString(_response, _ctx->wcFlags.allowEmptyAttributes
+                             ? " disabled" : " disabled=\"disabled\"");
+      }
       
       [self appendExtraAttributesToResponse:_response inContext:_ctx];
       if (self->otherTagString != nil) {
index e60bf4e96cae9056b417cd68efe37a755be629e9..8d64a544510dbef92397391c0d35e2f37818f583 100644 (file)
@@ -77,7 +77,8 @@
     int savePageRequired:1; /* tracking component actions */
     int inForm:1;
     int xmlStyleEmptyElements:1;
-    int reserved:29;
+    int allowEmptyAttributes:1;
+    int reserved:28;
   } wcFlags;
   
 @protected
 
 - (void)setGenerateXMLStyleEmptyElements:(BOOL)_flag;
 - (BOOL)generateXMLStyleEmptyElements;
+- (void)setGenerateEmptyAttributes:(BOOL)_flag;
+- (BOOL)generateEmptyAttributes;
 
 /* variables */
 
index 361f213bf92cd542b010c35808cc36d6843a24b3..1c129d5d40858dc5cee35479626d1ea4e380cb0d 100644 (file)
@@ -1,6 +1,6 @@
 # version file
 
-SUBMINOR_VERSION:=146
+SUBMINOR_VERSION:=147
 
 # v4.5.122 requires libNGExtensions v4.5.153
 # v4.5.91  requires libNGExtensions v4.5.134
index a0d76600684da9e4b42dfdb85fb18a18895c2411..aacc05997851cdf621ae8c4bef5e96faaa34f1a8 100644 (file)
@@ -106,6 +106,7 @@ static NSString *WOApplicationSuffix = nil;
     
     /* per default close tags in XML style */
     self->wcFlags.xmlStyleEmptyElements = 1;
+    self->wcFlags.allowEmptyAttributes  = 0;
     
     self->elementID = [[WOElementID alloc] init];
     self->awakeComponents = [[NSMutableSet alloc] initWithCapacity:64];
@@ -716,6 +717,13 @@ void WOContext_leaveComponent(WOContext *self, WOComponent *_component) {
   return self->wcFlags.xmlStyleEmptyElements ? YES : NO;
 }
 
+- (void)setGenerateEmptyAttributes:(BOOL)_flag {
+  self->wcFlags.allowEmptyAttributes = _flag ? 1 : 0;
+}
+- (BOOL)generateEmptyAttributes {
+  return self->wcFlags.allowEmptyAttributes ? YES : NO;
+}
+
 - (NSString *)queryStringFromDictionary:(NSDictionary *)_queryDict {
   NSEnumerator    *keys;
   NSString        *key;