Author: spadkins
Date: Tue Jan 9 16:14:39 2007
New Revision: 8534
Modified:
p5ee/trunk/App-Widget-JSApp/lib/App/Widget/JSApp.pm
p5ee/trunk/App-Widget-JSApp/lib/App/Widget/JSApp/DualSelectWidget.pm
Log:
added ability to include whole value_domains in the HTML <HEAD>
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 Tue Jan 9 16:14:39 2007
@@ -41,7 +41,7 @@
$self->init_jsapp();
- my %jsapp_special = ( attrib => 1, domain => 1, conf => 1, values_labels
=> 1 );
+ my %jsapp_special = ( attrib => 1, include_value_domain => 1, domain => 1,
conf => 1, values_labels => 1 );
my (@attrib);
foreach my $key (keys %$self) {
if ($key =~ /^jsapp_(.+)/) {
@@ -80,6 +80,12 @@
}
}
+ if (defined $self->{jsapp_include_value_domain}) {
+ foreach my $value_domain_name (@{$self->{jsapp_include_value_domain}})
{
+ $self->include_value_domain($value_domain_name);
+ }
+ }
+
if (defined $self->{jsapp_domain}) {
my ($value_domain, $values, $labels, $domain_alias);
my ($values_text, $labels_text, $i);
@@ -184,7 +190,7 @@
my $response = $context->response();
my $html_url_dir = $context->get_option("html_url_dir");
my $js = "$html_url_dir/js-app/init.js";
- if (!$response->is_included($js)) {
+ if (!$response->is_included("javascript", $js)) {
my $js_conf = $self->javascript_conf();
$response->include("javascript", $js_conf);
$response->include("javascript", $js);
@@ -193,6 +199,54 @@
&App::sub_exit() if ($App::trace);
}
+sub include_value_domain {
+ &App::sub_entry if ($App::trace);
+ my ($self, $value_domain_name) = @_;
+ my $context = $self->{context};
+ my $response = $context->response();
+ my $javascript_key = "ValueDomain($value_domain_name)";
+ if (!$response->is_included("javascript", $javascript_key)) {
+ my $value_domain = $context->value_domain($value_domain_name);
+ my ($values, $labels) = $value_domain->values_labels();
+ my $values_text = "";
+ my $labels_text = "";
+ my ($i);
+ if ($#$values > -1) {
+ $values_text = ",\n \"values\" : [";
+ for ($i = 0; $i <= $#$values; $i++) {
+ $values_text .= "," if ($i > 0);
+ $values_text .= "\n " if ($i % 10 == 0);
+ $values_text .= " \"$values->[$i]\"";
+ }
+ $values_text .= "\n ]";
+
+ if ($labels && %$labels) {
+ $labels_text = ",\n \"labels\" : {";
+ for ($i = 0; $i <= $#$values; $i++) {
+ next if (! defined $labels->{$values->[$i]});
+ $labels_text .= "," if ($i > 0);
+ $labels_text .= "\n " if ($i % 10 == 0);
+ $labels_text .= " \"$values->[$i]\" :
\"$labels->{$values->[$i]}\"";
+ }
+ $labels_text .= "\n }";
+ }
+ }
+ else {
+ $values_text = ",\n \"values\" : [ ]";
+ $labels_text = ",\n \"labels\" : { }";
+ }
+ my $js = <<EOF;
+<script type="text/javascript" language="JavaScript">
+context.valueDomain("$value_domain_name", {
+ serviceClass : "ValueDomain"$values_text$labels_text
+});
+</script>
+EOF
+ $response->include("javascript", $js, $javascript_key);
+ }
+ &App::sub_exit() if ($App::trace);
+}
+
sub javascript_conf {
&App::sub_entry if ($App::trace);
my ($self) = @_;
Modified: p5ee/trunk/App-Widget-JSApp/lib/App/Widget/JSApp/DualSelectWidget.pm
==============================================================================
--- p5ee/trunk/App-Widget-JSApp/lib/App/Widget/JSApp/DualSelectWidget.pm
(original)
+++ p5ee/trunk/App-Widget-JSApp/lib/App/Widget/JSApp/DualSelectWidget.pm
Tue Jan 9 16:14:39 2007
@@ -34,33 +34,46 @@
$extra_attribs .= ",\n \"size\" : $self->{size}" if ($self->{size});
$extra_attribs .= ",\n \"maxselected\" : $self->{maxselected}" if
($self->{maxselected});
- my ($values, $labels) = $self->values_labels();
- my ($values_text, $i);
+ if (defined $self->{jsapp_include_value_domain}) {
+ foreach my $value_domain_name (@{$self->{jsapp_include_value_domain}})
{
+ $self->include_value_domain($value_domain_name);
+ }
+ }
+ my $values_text = "";
my $labels_text = "";
- if ($#$values > -1) {
- $values_text = ",\n \"values\" : [";
- for ($i = 0; $i <= $#$values; $i++) {
- $values_text .= "," if ($i > 0);
- $values_text .= "\n " if ($i % 10 == 0);
- $values_text .= " \"$values->[$i]\"";
- }
- $values_text .= "\n ]";
+ if ($self->{domain}) {
+ $self->include_value_domain($self->{domain});
+ $extra_attribs .= ",\n \"domain\" : \"$self->{domain}\"";
+ }
+ else {
+ my ($values, $labels) = $self->values_labels();
+ my ($i);
- if ($labels && %$labels) {
- $labels_text = ",\n \"labels\" : {";
+ if ($#$values > -1) {
+ $values_text = ",\n \"values\" : [";
for ($i = 0; $i <= $#$values; $i++) {
- next if (! defined $labels->{$values->[$i]});
- $labels_text .= "," if ($i > 0);
- $labels_text .= "\n " if ($i % 10 == 0);
- $labels_text .= " \"$values->[$i]\" :
\"$labels->{$values->[$i]}\"";
+ $values_text .= "," if ($i > 0);
+ $values_text .= "\n " if ($i % 10 == 0);
+ $values_text .= " \"$values->[$i]\"";
+ }
+ $values_text .= "\n ]";
+
+ if ($labels && %$labels) {
+ $labels_text = ",\n \"labels\" : {";
+ for ($i = 0; $i <= $#$values; $i++) {
+ next if (! defined $labels->{$values->[$i]});
+ $labels_text .= "," if ($i > 0);
+ $labels_text .= "\n " if ($i % 10 == 0);
+ $labels_text .= " \"$values->[$i]\" :
\"$labels->{$values->[$i]}\"";
+ }
+ $labels_text .= "\n }";
}
- $labels_text .= "\n }";
}
- }
- else {
- $values_text = ",\n values : [ ]";
+ else {
+ $values_text = ",\n values : [ ]";
+ }
}
my $context = $self->{context};
my $value = $context->so_get($name);