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);

Reply via email to