mirror of
https://github.com/gnustep/libs-gsweb.git
synced 2025-05-31 17:20:57 +00:00
* GSWeb/GSWCheckBoxList.m
fix appendToResponse:inContext: respect GNUstep coding standard (curly brackets placement, etc.) use GSWAssignAndRemoveAssociation() in initWithName:associations:template: * GSWeb/GSWElement.[hm] add GSWAssignAndRemoveAssociation() to make controls code simplier git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gsweb/trunk@37850 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
6194720fed
commit
af78e8fe37
4 changed files with 237 additions and 216 deletions
|
@ -1,4 +1,11 @@
|
||||||
2014-04-29 Manuel Guesdon <mguesdon@orange-concept.com>
|
2014-05-06 Manuel Guesdon <mguesdon@orange-concept.com>
|
||||||
|
* GSWeb/GSWCheckBoxList.m
|
||||||
|
fix appendToResponse:inContext:
|
||||||
|
respect GNUstep coding standard (curly brackets placement, etc.)
|
||||||
|
use GSWAssignAndRemoveAssociation() in initWithName:associations:template:
|
||||||
|
* GSWeb/GSWElement.[hm]
|
||||||
|
add GSWAssignAndRemoveAssociation() to make controls code simplier
|
||||||
|
w2014-04-29 Manuel Guesdon <mguesdon@orange-concept.com>
|
||||||
* GSWeb/GSWApplication.m:
|
* GSWeb/GSWApplication.m:
|
||||||
fix -baseURL
|
fix -baseURL
|
||||||
* GSWeb/GSWResourceManager.m:
|
* GSWeb/GSWResourceManager.m:
|
||||||
|
|
|
@ -53,9 +53,6 @@ Bindings
|
||||||
selections Array of selected objects (used to pre-check checkboxes and modified to reflect user choices)
|
selections Array of selected objects (used to pre-check checkboxes and modified to reflect user choices)
|
||||||
It contains objects from list, not value binding evaluated ones !
|
It contains objects from list, not value binding evaluated ones !
|
||||||
|
|
||||||
selectionValues Array of selected values (used to pre-check checkboxes and modified to reflect user choices)
|
|
||||||
It contains evaluated values binding !
|
|
||||||
|
|
||||||
name Name of the element in the form (should be unique). If not specified, GSWeb assign one.
|
name Name of the element in the form (should be unique). If not specified, GSWeb assign one.
|
||||||
|
|
||||||
disabled If evaluated to yes, the check box appear inactivated.
|
disabled If evaluated to yes, the check box appear inactivated.
|
||||||
|
@ -88,69 +85,41 @@ static Class standardClass = Nil;
|
||||||
associations:(NSDictionary*)associations
|
associations:(NSDictionary*)associations
|
||||||
template:(GSWElement*)template
|
template:(GSWElement*)template
|
||||||
{
|
{
|
||||||
self = [super initWithName:aName associations:associations template: template];
|
if ((self = [super initWithName:aName associations:associations template: template]))
|
||||||
if (!self) {
|
{
|
||||||
return nil;
|
_loggedSlow = NO;
|
||||||
}
|
|
||||||
|
|
||||||
_loggedSlow = NO;
|
GSWAssignAndRemoveAssociation(&_list,_associations,list__Key);
|
||||||
|
GSWAssignAndRemoveAssociation(&_item,_associations,item__Key);
|
||||||
|
GSWAssignAndRemoveAssociation(&_index,_associations,index__Key);
|
||||||
|
GSWAssignAndRemoveAssociation(&_selections,_associations,selections__Key);
|
||||||
|
GSWAssignAndRemoveAssociation(&_prefix,_associations,prefix__Key);
|
||||||
|
GSWAssignAndRemoveAssociation(&_prefix,_associations,prefix__Key);
|
||||||
|
GSWAssignAndRemoveAssociation(&_suffix,_associations,suffix__Key);
|
||||||
|
GSWAssignAndRemoveAssociation(&_escapeHTML,_associations,escapeHTML__Key);
|
||||||
|
|
||||||
ASSIGN(_list, [_associations objectForKey: list__Key]);
|
if (GSWAssignAndRemoveAssociation(&_displayString,_associations,displayString__Key)==nil)
|
||||||
if (_list != nil) {
|
{
|
||||||
[_associations removeObjectForKey: list__Key];
|
GSWAssignAndRemoveAssociation(&_displayString,_associations,value__Key);
|
||||||
}
|
_defaultEscapeHTML = NO;
|
||||||
ASSIGN(_item, [_associations objectForKey: item__Key]);
|
}
|
||||||
if (_item != nil) {
|
else
|
||||||
[_associations removeObjectForKey: item__Key];
|
_defaultEscapeHTML = YES;
|
||||||
}
|
|
||||||
ASSIGN(_index, [_associations objectForKey: index__Key]);
|
|
||||||
if (_index != nil) {
|
|
||||||
[_associations removeObjectForKey: index__Key];
|
|
||||||
}
|
|
||||||
ASSIGN(_selections, [_associations objectForKey: selections__Key]);
|
|
||||||
if (_selections != nil) {
|
|
||||||
[_associations removeObjectForKey: selections__Key];
|
|
||||||
}
|
|
||||||
ASSIGN(_prefix, [_associations objectForKey: prefix__Key]);
|
|
||||||
if (_prefix != nil) {
|
|
||||||
[_associations removeObjectForKey: prefix__Key];
|
|
||||||
}
|
|
||||||
ASSIGN(_suffix, [_associations objectForKey: suffix__Key]);
|
|
||||||
if (_suffix != nil) {
|
|
||||||
[_associations removeObjectForKey: suffix__Key];
|
|
||||||
}
|
|
||||||
ASSIGN(_displayString, [_associations objectForKey: displayString__Key]);
|
|
||||||
if (_displayString != nil) {
|
|
||||||
[_associations removeObjectForKey: displayString__Key];
|
|
||||||
}
|
|
||||||
ASSIGN(_escapeHTML, [_associations objectForKey: escapeHTML__Key]);
|
|
||||||
if (_escapeHTML != nil) {
|
|
||||||
[_associations removeObjectForKey: escapeHTML__Key];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_displayString == nil) {
|
if (_list == nil
|
||||||
ASSIGN(_displayString, [_associations objectForKey: value__Key]);
|
|| ((_value != nil || _displayString != nil)
|
||||||
if (_displayString != nil) {
|
&& (_item == nil || ![_item isValueSettable]))
|
||||||
[_associations removeObjectForKey: value__Key];
|
|| (_selections != nil && ![_selections isValueSettable]))
|
||||||
|
{
|
||||||
|
[NSException raise:NSInvalidArgumentException
|
||||||
|
format:@"%s: 'list' must be present. 'item' must not be a constant if 'displayString' or 'value' is present. 'selection' must not be a constant if present.",
|
||||||
|
__PRETTY_FUNCTION__];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
_defaultEscapeHTML = NO;
|
|
||||||
} else {
|
|
||||||
_defaultEscapeHTML = YES;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if ((_list == nil) || ((_value != nil || _displayString != nil) && ((_item == nil) || (![_item isValueSettable]))) ||
|
|
||||||
((_selections != nil) && (![_selections isValueSettable]))) {
|
|
||||||
|
|
||||||
[NSException raise:NSInvalidArgumentException
|
|
||||||
format:@"%s: 'list' must be present. 'item' must not be a constant if 'displayString' or 'value' is present. 'selection' must not be a constant if present.",
|
|
||||||
__PRETTY_FUNCTION__];
|
|
||||||
}
|
|
||||||
|
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
-(void)dealloc
|
-(void)dealloc
|
||||||
{
|
{
|
||||||
DESTROY(_list);
|
DESTROY(_list);
|
||||||
|
@ -183,52 +152,60 @@ static Class standardClass = Nil;
|
||||||
inContext:(GSWContext*)context
|
inContext:(GSWContext*)context
|
||||||
{
|
{
|
||||||
GSWComponent * component = GSWContext_component(context);
|
GSWComponent * component = GSWContext_component(context);
|
||||||
if ((_selections != nil) && (![self disabledInComponent:component]) && ([context _wasFormSubmitted])) {
|
if (_selections != nil
|
||||||
NSString * ctxName = [self nameInContext:context];
|
&& ![self disabledInComponent:component]
|
||||||
NSArray * formValues = [request formValuesForKey: ctxName];
|
&& [context _wasFormSubmitted])
|
||||||
NSMutableArray * mutArray = nil;
|
{
|
||||||
int count = 0;
|
NSArray* selections = nil;
|
||||||
int count2 = 0;
|
NSString * ctxName = [self nameInContext:context];
|
||||||
int i = 0;
|
NSArray * formValues = [request formValuesForKey: ctxName];
|
||||||
|
int formValuesCount = [formValues count];
|
||||||
if ((formValues != nil) && (count = [formValues count])) {
|
|
||||||
mutArray = [NSMutableArray arrayWithCapacity:count];
|
|
||||||
} else {
|
|
||||||
mutArray = [NSMutableArray arrayWithCapacity:5];
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((formValues != nil) && (count > 0)) {
|
if (formValuesCount==0)
|
||||||
|
selections = [NSArray array];
|
||||||
|
else
|
||||||
|
{
|
||||||
|
NSArray* listValue = [_list valueInComponent:component];
|
||||||
|
int listCount = 0;
|
||||||
|
int i=0;
|
||||||
|
|
||||||
id listValue = [_list valueInComponent:component];
|
if ([listValue isKindOfClass:[NSArray class]] == NO)
|
||||||
|
{
|
||||||
|
[NSException raise:NSInvalidArgumentException
|
||||||
|
format:@"%s: Evaluating 'list' binding returned a '%@' class and not a NSArray.",
|
||||||
|
__PRETTY_FUNCTION__, [listValue class]];
|
||||||
|
}
|
||||||
|
|
||||||
if ([listValue isKindOfClass:[NSArray class]] == NO) {
|
listCount = [listValue count];
|
||||||
[NSException raise:NSInvalidArgumentException
|
|
||||||
format:@"%s: Evaluating 'list' binding returned a '%@' class and not a NSArray.",
|
|
||||||
__PRETTY_FUNCTION__, [listValue class]];
|
|
||||||
}
|
|
||||||
|
|
||||||
count2 = [listValue count];
|
|
||||||
|
|
||||||
for (i = 0; i < count2; i++) {
|
selections = [NSMutableArray arrayWithCapacity:formValuesCount];
|
||||||
id obj1 = [(NSArray*) listValue objectAtIndex:i];
|
|
||||||
id obj2 = nil;
|
|
||||||
|
|
||||||
[_item setValue:obj1 inComponent: component];
|
for (i = 0; i < listCount; i++)
|
||||||
|
{
|
||||||
obj2= [_value valueInComponent:component];
|
id item = [listValue objectAtIndex:i];
|
||||||
if (obj2 != nil) {
|
id value = nil;
|
||||||
if ([formValues containsObject:obj2]) {
|
|
||||||
[mutArray addObject:obj1];
|
[_item setValue: item
|
||||||
}
|
inComponent: component];
|
||||||
} else {
|
|
||||||
NSLog(@"%s 'value' evaluated to nil in component %@.\nUnable to select item %@",
|
value = [_value valueInComponent:component];
|
||||||
__PRETTY_FUNCTION__, self, obj1);
|
if (value != nil)
|
||||||
}
|
{
|
||||||
}
|
if ([formValues containsObject:NSStringWithObject(value)])
|
||||||
|
[(NSMutableArray*)selections addObject:item];
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
NSLog(@"%s 'value' evaluated to nil in component %@.\nUnable to select item %@",
|
||||||
|
__PRETTY_FUNCTION__, self, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[_selections setValue: selections
|
||||||
|
inComponent: component];
|
||||||
}
|
}
|
||||||
[_selections setValue:mutArray inComponent: component];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
-(void)_fastTakeValuesFromRequest:(GSWRequest*)request
|
-(void)_fastTakeValuesFromRequest:(GSWRequest*)request
|
||||||
|
@ -236,136 +213,156 @@ static Class standardClass = Nil;
|
||||||
{
|
{
|
||||||
GSWComponent * component = GSWContext_component(context);
|
GSWComponent * component = GSWContext_component(context);
|
||||||
|
|
||||||
if ((_selections != nil) && (![self disabledInComponent:component]) && ([context _wasFormSubmitted])) {
|
if (_selections != nil
|
||||||
|
&& ![self disabledInComponent:component]
|
||||||
|
&& [context _wasFormSubmitted])
|
||||||
|
{
|
||||||
|
NSArray* selections = nil;
|
||||||
|
NSString * ctxName = [self nameInContext:context];
|
||||||
|
NSArray * formValues = [request formValuesForKey: ctxName];
|
||||||
|
int formValuesCount = [formValues count];
|
||||||
|
if (formValuesCount==0)
|
||||||
|
{
|
||||||
|
selections = [NSArray array];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
NSArray* listValue = [_list valueInComponent:component];
|
||||||
|
int listCount = 0;
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
NSString * ctxName = [self nameInContext:context];
|
if ([listValue isKindOfClass:[NSArray class]] == NO)
|
||||||
NSArray * formValues = [request formValuesForKey: ctxName];
|
{
|
||||||
int count = 0;
|
[NSException raise:NSInvalidArgumentException
|
||||||
int i = 0;
|
format:@"%s: Evaluating 'list' binding returned a '%@' class and not a NSArray.",
|
||||||
NSMutableArray * mutablearray;
|
__PRETTY_FUNCTION__, [listValue class]];
|
||||||
|
}
|
||||||
count = (formValues == nil) ? 0 : [formValues count];
|
|
||||||
mutablearray = [NSMutableArray arrayWithCapacity:count];
|
|
||||||
|
|
||||||
|
|
||||||
if (count > 0) {
|
|
||||||
id listValue = [_list valueInComponent:component];
|
|
||||||
|
|
||||||
if ([listValue isKindOfClass:[NSArray class]] == NO) {
|
listCount = [listValue count];
|
||||||
[NSException raise:NSInvalidArgumentException
|
|
||||||
format:@"%s: Evaluating 'list' binding returned a '%@' class and not a NSArray.",
|
|
||||||
__PRETTY_FUNCTION__, [listValue class]];
|
|
||||||
}
|
|
||||||
|
|
||||||
for (i = 0; i < count; i++) {
|
for (i = 0; i < listCount; i++)
|
||||||
int j = [NSStringWithObject([formValues objectAtIndex:i]) intValue];
|
{
|
||||||
[mutablearray addObject:[listValue objectAtIndex:j]];
|
int itemIndex = [NSStringWithObject([formValues objectAtIndex:i]) intValue];
|
||||||
}
|
[(NSMutableArray*)selections addObject:[listValue objectAtIndex:itemIndex]];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
[_selections setValue: selections
|
||||||
|
inComponent: component];
|
||||||
}
|
}
|
||||||
[_selections setValue:mutablearray inComponent: component];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
-(void)appendToResponse:(GSWResponse*)response
|
-(void)appendToResponse:(GSWResponse*)response
|
||||||
inContext:(GSWContext*)context
|
inContext:(GSWContext*)context
|
||||||
{
|
{
|
||||||
int count = 0;
|
|
||||||
int j = 0;
|
|
||||||
GSWComponent * component = GSWContext_component(context);
|
GSWComponent * component = GSWContext_component(context);
|
||||||
BOOL doEscape;
|
|
||||||
NSString * ctxName = [self nameInContext:context];
|
|
||||||
id listValue = [_list valueInComponent:component];
|
id listValue = [_list valueInComponent:component];
|
||||||
id selectionsValue = nil;
|
int listCount = 0;
|
||||||
|
|
||||||
doEscape = (_escapeHTML == nil) ? _defaultEscapeHTML : [_escapeHTML boolValueInComponent:component];
|
if ([listValue isKindOfClass:[NSArray class]] == NO)
|
||||||
|
{
|
||||||
if ([listValue isKindOfClass:[NSArray class]] == NO) {
|
[NSException raise:NSInvalidArgumentException
|
||||||
[NSException raise:NSInvalidArgumentException
|
format:@"%s: Evaluating 'list' binding returned a '%@' class and not a NSArray.",
|
||||||
format:@"%s: Evaluating 'list' binding returned a '%@' class and not a NSArray.",
|
__PRETTY_FUNCTION__, [listValue class]];
|
||||||
__PRETTY_FUNCTION__, [listValue class]];
|
|
||||||
}
|
|
||||||
|
|
||||||
selectionsValue = _selections == nil ? nil : [_selections valueInComponent:component];
|
|
||||||
|
|
||||||
if (selectionsValue != nil) {
|
|
||||||
count = [selectionsValue count];
|
|
||||||
}
|
|
||||||
|
|
||||||
for (j = 0; j < count; j++) {
|
|
||||||
NSString * prefixStr = nil;
|
|
||||||
NSString * suffixStr = nil;
|
|
||||||
NSString * dispStr = nil;
|
|
||||||
id obj2 = nil;
|
|
||||||
id displayValue = nil;
|
|
||||||
id valueValue = nil;
|
|
||||||
|
|
||||||
if ((_prefix != nil)) {
|
|
||||||
prefixStr = NSStringWithObject([_prefix valueInComponent:component]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((_suffix != nil)) {
|
listCount=[listValue count];
|
||||||
suffixStr = NSStringWithObject([_suffix valueInComponent:component]);
|
if (listCount>0)
|
||||||
}
|
{
|
||||||
|
NSString* ctxName = [self nameInContext:context];
|
||||||
|
int i = 0;
|
||||||
|
BOOL doEscape = NO;
|
||||||
|
id selections = nil;
|
||||||
|
|
||||||
|
if (_escapeHTML==nil)
|
||||||
|
doEscape=_defaultEscapeHTML;
|
||||||
|
else
|
||||||
|
doEscape=[_escapeHTML boolValueInComponent:component];
|
||||||
|
|
||||||
|
if (_selections!=nil)
|
||||||
|
selections = [_selections valueInComponent:component];
|
||||||
|
|
||||||
|
for (i = 0; i < listCount; i++)
|
||||||
|
{
|
||||||
|
NSString * prefixStr = nil;
|
||||||
|
NSString * suffixStr = nil;
|
||||||
|
NSString * displayString = nil;
|
||||||
|
id item = nil;
|
||||||
|
id value = nil;
|
||||||
|
|
||||||
|
if (_prefix != nil)
|
||||||
|
prefixStr = NSStringWithObject([_prefix valueInComponent:component]);
|
||||||
|
|
||||||
|
if (_suffix != nil)
|
||||||
|
suffixStr = NSStringWithObject([_suffix valueInComponent:component]);
|
||||||
|
|
||||||
|
if (_index != nil)
|
||||||
|
{
|
||||||
|
[_index setValue:GSWIntToNSString(i)
|
||||||
|
inComponent:component];
|
||||||
|
}
|
||||||
|
|
||||||
|
item = [listValue objectAtIndex:i];
|
||||||
|
|
||||||
|
if (_item != nil
|
||||||
|
&& _displayString != nil)
|
||||||
|
{
|
||||||
|
id displayValue=nil;
|
||||||
|
[_item setValue:item
|
||||||
|
inComponent:component];
|
||||||
|
|
||||||
|
displayValue= [_displayString valueInComponent:component];
|
||||||
|
|
||||||
|
if (displayValue == nil)
|
||||||
|
{
|
||||||
|
displayString = NSStringWithObject(displayValue);
|
||||||
|
NSLog(@"%s: 'displayString' evaluated to nil in component %@. Using %@",
|
||||||
|
__PRETTY_FUNCTION__, component, displayString);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
displayString = NSStringWithObject(displayValue);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
displayString = NSStringWithObject(item);
|
||||||
|
|
||||||
if (_index != nil) {
|
GSWResponse_appendContentAsciiString(response, @"<input name=\"");
|
||||||
[_index setValue:GSWIntToNSString(j)
|
GSWResponse_appendContentString(response,ctxName);
|
||||||
inComponent:component];
|
GSWResponse_appendContentAsciiString(response,@"\" type=checkbox value=\"");
|
||||||
}
|
|
||||||
|
|
||||||
obj2 = [listValue objectAtIndex:j];
|
if (_value != nil)
|
||||||
|
{
|
||||||
|
value = [_value valueInComponent:component];
|
||||||
|
if (value != nil)
|
||||||
|
{
|
||||||
|
GSWResponse_appendContentHTMLConvertString(response, NSStringWithObject(value));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
NSLog(@"%s: 'value' evaluated to nil in component %@. Using to index.",
|
||||||
|
__PRETTY_FUNCTION__, self);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (value == nil)
|
||||||
|
GSWResponse_appendContentAsciiString(response,GSWIntToNSString(i));
|
||||||
|
|
||||||
if ((_item != nil) && (_displayString != nil)) {
|
if ([selections containsObject:item])
|
||||||
[_item setValue:obj2
|
GSWResponse_appendContentAsciiString(response,@"\" checked>");
|
||||||
inComponent:component];
|
else
|
||||||
|
GSWResponse_appendContentAsciiString(response,@"\">");
|
||||||
|
|
||||||
displayValue = [_displayString valueInComponent:component];
|
if (prefixStr != nil)
|
||||||
|
GSWResponse_appendContentString(response,prefixStr);
|
||||||
|
|
||||||
if (displayValue == nil) {
|
if (doEscape)
|
||||||
dispStr = NSStringWithObject(obj2);
|
GSWResponse_appendContentHTMLConvertString(response,displayString);
|
||||||
NSLog(@"%s: 'displayString' evaluated to nil in component %@. Using %@",
|
else
|
||||||
__PRETTY_FUNCTION__, component, dispStr);
|
GSWResponse_appendContentString(response,displayString);
|
||||||
} else {
|
|
||||||
dispStr = NSStringWithObject(displayValue);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
dispStr = NSStringWithObject(obj2);
|
|
||||||
}
|
|
||||||
GSWResponse_appendContentAsciiString(response, @"<input name=\"");
|
|
||||||
GSWResponse_appendContentString(response,ctxName);
|
|
||||||
GSWResponse_appendContentAsciiString(response,@"\" type=checkbox value=\"");
|
|
||||||
|
|
||||||
if (_value != nil)
|
if (suffixStr != nil)
|
||||||
{
|
GSWResponse_appendContentString(response,suffixStr);
|
||||||
valueValue = [_value valueInComponent:component];
|
} // for
|
||||||
if (valueValue != nil) {
|
|
||||||
GSWResponse_appendContentHTMLConvertString(response, NSStringWithObject(valueValue));
|
|
||||||
} else {
|
|
||||||
NSLog(@"%s: 'value' evaluated to nil in component %@. Using to index.",
|
|
||||||
__PRETTY_FUNCTION__, self);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (valueValue == nil) {
|
|
||||||
GSWResponse_appendContentAsciiString(response,GSWIntToNSString(j));
|
|
||||||
}
|
|
||||||
if ([selectionsValue containsObject:obj2]) {
|
|
||||||
GSWResponse_appendContentAsciiString(response,@"\" checked>");
|
|
||||||
} else {
|
|
||||||
GSWResponse_appendContentAsciiString(response,@"\">");
|
|
||||||
}
|
|
||||||
if (prefixStr != nil) {
|
|
||||||
GSWResponse_appendContentString(response,prefixStr);
|
|
||||||
}
|
|
||||||
if (doEscape)
|
|
||||||
{
|
|
||||||
GSWResponse_appendContentHTMLConvertString(response,dispStr);
|
|
||||||
} else {
|
|
||||||
GSWResponse_appendContentString(response,dispStr);
|
|
||||||
}
|
|
||||||
if (suffixStr != nil) {
|
|
||||||
GSWResponse_appendContentString(response,suffixStr);
|
|
||||||
}
|
|
||||||
} // for
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
-(BOOL)appendStringAtRight:(id)_unkwnon
|
-(BOOL)appendStringAtRight:(id)_unkwnon
|
||||||
|
@ -388,16 +385,18 @@ static Class standardClass = Nil;
|
||||||
-(void)takeValuesFromRequest:(GSWRequest*)request
|
-(void)takeValuesFromRequest:(GSWRequest*)request
|
||||||
inContext:(GSWContext*)context
|
inContext:(GSWContext*)context
|
||||||
{
|
{
|
||||||
if (_value != nil) {
|
if (_value != nil)
|
||||||
if (!_loggedSlow) {
|
{
|
||||||
NSLog(@"%s Warning: Avoid using the 'value' binding as it is much slower than omitting it, and it is just cosmetic.",
|
if (!_loggedSlow)
|
||||||
__PRETTY_FUNCTION__);
|
{
|
||||||
_loggedSlow = YES;
|
NSLog(@"%s Warning: Avoid using the 'value' binding as it is much slower than omitting it, and it is just cosmetic.",
|
||||||
|
__PRETTY_FUNCTION__);
|
||||||
|
_loggedSlow = YES;
|
||||||
|
}
|
||||||
|
[self _slowTakeValuesFromRequest:request inContext:context];
|
||||||
}
|
}
|
||||||
[self _slowTakeValuesFromRequest:request inContext:context];
|
else
|
||||||
} else {
|
|
||||||
[self _fastTakeValuesFromRequest:request inContext:context];
|
[self _fastTakeValuesFromRequest:request inContext:context];
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
|
@ -44,6 +44,11 @@ GSWEB_EXPORT BYTE ElementsMap_attributeElement;
|
||||||
|
|
||||||
@class GSWContext;
|
@class GSWContext;
|
||||||
@class GSWRequest;
|
@class GSWRequest;
|
||||||
|
@class GSWAssociation;
|
||||||
|
|
||||||
|
GSWEB_EXPORT GSWAssociation* GSWAssignAndRemoveAssociation(GSWAssociation** associationPtr,
|
||||||
|
NSMutableDictionary* associations,
|
||||||
|
NSString* associationName);
|
||||||
|
|
||||||
#ifndef NDEBBUG
|
#ifndef NDEBBUG
|
||||||
#define GSWELEMENT_HAS_DECLARATION_NAME
|
#define GSWELEMENT_HAS_DECLARATION_NAME
|
||||||
|
|
|
@ -45,6 +45,16 @@ BYTE ElementsMap_gswebElement = (BYTE)0x57; // 'W'
|
||||||
BYTE ElementsMap_dynamicElement = (BYTE)0x43; // 'C'
|
BYTE ElementsMap_dynamicElement = (BYTE)0x43; // 'C'
|
||||||
BYTE ElementsMap_attributeElement = (BYTE)0x41; // 'A'
|
BYTE ElementsMap_attributeElement = (BYTE)0x41; // 'A'
|
||||||
|
|
||||||
|
GSWAssociation* GSWAssignAndRemoveAssociation(GSWAssociation** associationPtr,
|
||||||
|
NSMutableDictionary* associations,
|
||||||
|
NSString* associationName)
|
||||||
|
{
|
||||||
|
ASSIGN(*associationPtr,([associations objectForKey:associationName]));
|
||||||
|
if (*associationPtr)
|
||||||
|
[associations removeObjectForKey:associationName];
|
||||||
|
return *associationPtr;
|
||||||
|
}
|
||||||
|
|
||||||
//====================================================================
|
//====================================================================
|
||||||
@implementation GSWElement
|
@implementation GSWElement
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue