You are viewing a plain text version of this content. The canonical link for it is here.
Posted to site-cvs@tcl.apache.org by mx...@apache.org on 2016/10/20 08:11:16 UTC
svn commit: r1765762 - in /tcl/rivet/trunk: ChangeLog
rivet/packages/formbroker/formbroker.tcl
Author: mxmanghi
Date: Thu Oct 20 08:11:15 2016
New Revision: 1765762
URL: http://svn.apache.org/viewvc?rev=1765762&view=rev
Log:
* rivet/packages/formbroker/formbroker.tcl: new method
'response' returns an array with the last processed response
or an array with the defaults value
Modified:
tcl/rivet/trunk/ChangeLog
tcl/rivet/trunk/rivet/packages/formbroker/formbroker.tcl
Modified: tcl/rivet/trunk/ChangeLog
URL: http://svn.apache.org/viewvc/tcl/rivet/trunk/ChangeLog?rev=1765762&r1=1765761&r2=1765762&view=diff
==============================================================================
--- tcl/rivet/trunk/ChangeLog (original)
+++ tcl/rivet/trunk/ChangeLog Thu Oct 20 08:11:15 2016
@@ -1,3 +1,8 @@
+2016-10-20 Massimo Manghi <mx...@apache.org>
+ * rivet/packages/formbroker/formbroker.tcl: new method
+ 'response' returns an array with the last processed response
+ or an array with the defaults value
+
2016-10-18 Massimo Manghi <mx...@apache.org>
* rivet/packages/formbroker/formbroker.tcl: add response copy
and default value management
Modified: tcl/rivet/trunk/rivet/packages/formbroker/formbroker.tcl
URL: http://svn.apache.org/viewvc/tcl/rivet/trunk/rivet/packages/formbroker/formbroker.tcl?rev=1765762&r1=1765761&r2=1765762&view=diff
==============================================================================
--- tcl/rivet/trunk/rivet/packages/formbroker/formbroker.tcl (original)
+++ tcl/rivet/trunk/rivet/packages/formbroker/formbroker.tcl Thu Oct 20 08:11:15 2016
@@ -411,12 +411,12 @@ namespace eval FormBroker {
# value in the variable descriptor and
# the response array as well
- if {$default_set} {
- set response($var) $default
- set var $default
+ if {[info exists default]} {
+ set response($var) $default
+ set var $default
} else {
- set field_validation MISSING_VAR
- set missing_vars 1
+ set field_validation MISSING_VAR
+ set missing_vars 1
}
}
@@ -431,7 +431,6 @@ namespace eval FormBroker {
}
-
# -- validate
#
#
@@ -496,31 +495,32 @@ namespace eval FormBroker {
dict set variable_d var $response($var)
if {[validate_variable_representation variable_d] == 0} {
+
dict set form_list $form_name form_validation FB_VALIDATION_ERROR
set form_valid false
- continue
- }
- # in case it was constrained we write the value back
- # into the response array
-
- if {[dict get $variable_d constrain]} {
- set response_a($var) [dict get $variable_d var]
} else {
- set response_a($var) $response($var)
- }
- if {[dict get $variable_d force_quote] || $force_quote_vars} {
- set response_a($var) [$string_quote [dict get $variable_d var]]
- }
+ # in case it was constrained we write the value back
+ # into the response array
+
+ if {[dict get $variable_d constrain]} {
+ set response_a($var) [dict get $variable_d var]
+ } else {
+ set response_a($var) $response($var)
+ }
+
+ if {[dict get $variable_d force_quote] || $force_quote_vars} {
+ set response_a($var) [$string_quote [dict get $variable_d var]]
+
+ }
+ }
dict set form_definitions $form_name $var $variable_d
#puts "validated $var -> $variable_d"
}
- #parray response_a
-
# if 'validate' has been called with a filtered_response array
# we clean it up and proceed copying the variable values into it
@@ -533,6 +533,30 @@ namespace eval FormBroker {
return $form_valid
}
+ # -- response
+ #
+ #
+
+ proc response {form_name {resp_a response}} {
+ upvar $resp_a response
+ variable form_definitions
+
+ dict for {var_name var_d} [dict get $form_definitions $form_name] {
+
+ dict with var_d {
+
+ if {[info exists var]} {
+ set response($var_name) $var
+ } elseif {[info exists default]} {
+ set response($var_name) $default
+ }
+
+ }
+
+ }
+ }
+
+
# -- destroy
#
# this method is designed to be called
@@ -582,7 +606,8 @@ namespace eval FormBroker {
foreach cmd { validate failing \
form_definition \
result validate_var \
- destroy validation_error} {
+ destroy validation_error \
+ response } {
lappend cmdmap $cmd [list [namespace parent] $cmd [namespace tail [namespace current]]]
}
@@ -644,8 +669,6 @@ namespace eval FormBroker {
constrain 0 \
validator [namespace current]::validate_string \
force_quote 0 \
- default_set 0 \
- default "" \
field_validation FB_OK]
dict with form_definitions $form_name $field_name {
@@ -653,20 +676,16 @@ namespace eval FormBroker {
switch $field_type {
integer {
set validator [namespace current]::validate_integer
- set default ""
}
unsigned {
set validator [namespace current]::validate_unsigned
- set default ""
}
email {
set validator [namespace current]::validate_email
- set default ""
}
string -
default {
set validator [namespace current]::validate_string
- set default ""
}
}
@@ -687,7 +706,12 @@ namespace eval FormBroker {
}
default {
set e [::lassign $e default]
- set default_set 1
+
+ # we must not assume the variable 'default'
+ # exists in the dictionary because we
+ # set it only in this code branch
+
+ dict set form_definitions $form_name $field_name default $default
}
constrain {
set constrain 1
@@ -699,19 +723,18 @@ namespace eval FormBroker {
set force_quote 1
}
}
-
}
- }
- # let's check for possible inconsitency between
- # data type and default value. For this purpose
- # we create a copy of the variable representation
- # dictionary and then we call the validator
-
- set variable_d [dict get $form_definitions $form_name $field_name]
- dict set variable_d var $default
- if {[$validator variable_d] != "FB_OK"} {
- dict set form_definitions $form_name $field_name default ""
+ # let's check for possible inconsitencies between
+ # data type and default value. For this purpose
+ # we create a copy of the variable dictionary
+ # representation then we call the validator on it
+
+ set variable_d [dict get $form_definitions $form_name $field_name]
+ dict set variable_d var $default
+ if {[$validator variable_d] != "FB_OK"} {
+ dict unset form_definitions $form_name $field_name default
+ }
}
}
return [namespace current]::$form_name
---------------------------------------------------------------------
To unsubscribe, e-mail: site-cvs-unsubscribe@tcl.apache.org
For additional commands, e-mail: site-cvs-help@tcl.apache.org