Author: spadkins
Date: Mon Jan 22 11:41:33 2007
New Revision: 8676
Modified:
p5ee/trunk/App-Widget-JSApp/lib/App/Widget/JSApp.pm
Log:
add support for {jsapp_hidden}, necessary for stateVariable support in js-app.
(needed to maintain state for Trees)
Modified: p5ee/trunk/App-Widget-JSApp/lib/App/Widget/JSApp.pm
==============================================================================
--- p5ee/trunk/App-Widget-JSApp/lib/App/Widget/JSApp.pm (original)
+++ p5ee/trunk/App-Widget-JSApp/lib/App/Widget/JSApp.pm Mon Jan 22 11:41:33 2007
@@ -41,7 +41,7 @@
$self->init_jsapp();
- my %jsapp_special = ( attrib => 1, include_value_domain => 1, value_domain
=> 1, domain => 1, conf => 1, values_labels => 1 );
+ my %jsapp_special = ( attrib => 1, hidden => 1, include_value_domain => 1,
value_domain => 1, domain => 1, conf => 1, values_labels => 1 );
my (@attrib);
foreach my $key (keys %$self) {
if ($key =~ /^jsapp_(.+)/) {
@@ -176,6 +176,24 @@
context.widget("$name"$js_conf).write();
</script>
EOF
+ if ($self->{jsapp_hidden}) {
+ my ($vars, @vars);
+ $vars = $self->{jsapp_hidden};
+ if (ref($vars) eq "ARRAY") {
+ @vars = @$vars;
+ }
+ elsif ($vars =~ /,/) {
+ @vars = split(/,/, $vars);
+ }
+ else {
+ @vars = ($vars);
+ }
+ foreach my $var (@vars) {
+ $value =
$self->escape_html_attribute_value($context->so_get($var));
+ my $hidden_input = "<input type=\"hidden\" name=\"${var}\"
value=\"$value\" />\n";
+ $html = $hidden_input . $html;
+ }
+ }
&App::sub_exit($html) if ($App::trace);
return($html);
@@ -189,6 +207,22 @@
return($value);
}
+sub escape_html_attribute_value {
+ my ($self, $value) = @_;
+ if (!defined $value) {
+ $value = "";
+ }
+ # I'm not exactly sure that this is the right way to escape special
characters
+ # *within* an HTML attribute value.
+ elsif ($value =~ /[\&<>"]/) {
+ $value =~ s/\&/\&/g;
+ $value =~ s/</\</g;
+ $value =~ s/>/\>/g;
+ $value =~ s/"/\"/g;
+ }
+ return($value);
+}
+
sub init_jsapp {
&App::sub_entry if ($App::trace);
my ($self) = @_;