Author: spadkins
Date: Thu Sep 21 09:49:54 2006
New Revision: 7850

Modified:
   p5ee/trunk/App-Widget/lib/App/Widget/HierSelector.pm
   p5ee/trunk/App-Widget/lib/App/Widget/IconPaneSelector.pm
   p5ee/trunk/App-Widget/lib/App/Widget/ImageBarSelector.pm
   p5ee/trunk/App-Widget/lib/App/Widget/TabbedSelector.pm
   p5ee/trunk/App-Widget/lib/App/Widget/TreeSelector.pm

Log:
node_list() support for multiple node lists in HierSelector based on what's 
authorized

Modified: p5ee/trunk/App-Widget/lib/App/Widget/HierSelector.pm
==============================================================================
--- p5ee/trunk/App-Widget/lib/App/Widget/HierSelector.pm        (original)
+++ p5ee/trunk/App-Widget/lib/App/Widget/HierSelector.pm        Thu Sep 21 
09:49:54 2006
@@ -69,10 +69,9 @@
 # Usage: $widget->handle_event($wname, $event, @args);
 sub handle_event {
     my ($self, $wname, $event, @args) = @_;
-    my ($node, $nodenumber, $x, $y);
+    my ($nodenumber, $x, $y);
 
-    $node = $self->get("node");
-    $self->set("node", $node);
+    my $node = $self->node_list(1);
 
     if ($event eq "open") {
         ($nodenumber, $x, $y) = @args;
@@ -104,7 +103,7 @@
 
 sub select_first {
     my $self = shift;
-    my $node = $self->get("node");
+    my $node = $self->node_list();
     
     my ($nodebase, $nodeidx, $nodenumber, $nodenumberfound, $nodelevel);
     my (@nextnodebase, @nextnodeidx, @nextnodelevel);
@@ -149,7 +148,7 @@
 
 sub select {
     my ($self, $nodeattrib, $value) = @_;
-    my $node = $self->get("node");
+    my $node = $self->node_list();
     my $success = 0;
     foreach my $nodenumber (keys %$node) {
         if ($node->{$nodenumber}{$nodeattrib} eq $value) {
@@ -174,7 +173,7 @@
 sub open_exclusively {
     my ($self, $opennodenumber) = @_;
     my ($nodebase, $nodeidx, $nodenumber);
-    my $node = $self->get("node");
+    my $node = $self->node_list();
     # set after get to ensure a deep data structure is stored in the session
     $self->set("node", $node);
 
@@ -204,6 +203,36 @@
     }
 }
 
+sub node_list {
+    my ($self, $writeable) = @_;
+    my ($node);
+    my $auth_node = $self->{auth_node};
+    if ($auth_node && ref($auth_node) eq "ARRAY") {
+        my ($auth_key, $auth_name);
+        my $context = $self->{context};
+        my $auth = $context->authorization();
+        for (my $i = 0; $i <= $#$auth_node; $i += 2) {
+            $auth_name = $auth_node->[$i];
+            if ($auth_name =~ m!^/!) {
+                $auth_key = $auth_name;
+            }
+            else {
+                $auth_key = "/App/SessionObject/$self->{name}/$auth_name";
+            }
+            if ($auth->is_authorized($auth_key)) {
+                $node = $auth_node->[$i+1];
+                $self->set("auth_node", $auth_node) if ($writeable);
+                last;
+            }
+        }
+    }
+    if (!$node) {
+        $node = $self->{node};
+        $self->set("node", $node) if ($writeable);
+    }
+    return($node);
+}
+
 # i.e. $self->select_first_open_leaf("2.2");
 # this should scan 2.2.1 through 2.2.n for the first open
 # this should "open" 2.2 and close 2.1,2.3,2.4,...
@@ -212,7 +241,7 @@
 sub select_first_open_leaf {
     my ($self, $selected_nodenumber) = @_;
 
-    my $node = $self->{node};
+    my $node = $self->node_list();
     my $nodebase = $selected_nodenumber;
     my $nodeidx = 1;
     my ($nodenumber);
@@ -248,13 +277,13 @@
 
 sub get_selected {
     my ($self, $nodeattrib) = @_;
-    my ($node, $nodenumber);
+    my ($nodenumber);
 
     $nodenumber = $self->get("selected");
     return undef if (!defined $nodenumber);
     return $nodenumber if (!defined $nodeattrib);
 
-    $node = $self->get("node");
+    my $node = $self->node_list();
     return $node->{$nodenumber}{$nodeattrib};
 }
 
@@ -264,9 +293,9 @@
 
 sub html {
     my $self = shift;
-    my ($node, $html, $label);
+    my ($html, $label);
 
-    $node    = $self->get("node");
+    my $node = $self->node_list();
 
     my ($nodebase, $nodeidx, $nodenumber, $nodelevel);
     my (@nextnodebase, @nextnodeidx, @nextnodelevel);

Modified: p5ee/trunk/App-Widget/lib/App/Widget/IconPaneSelector.pm
==============================================================================
--- p5ee/trunk/App-Widget/lib/App/Widget/IconPaneSelector.pm    (original)
+++ p5ee/trunk/App-Widget/lib/App/Widget/IconPaneSelector.pm    Thu Sep 21 
09:49:54 2006
@@ -51,10 +51,10 @@
 
 sub html {
     my $self = shift;
-    my ($context, $name, $node, $html, $label, $icon);
-    $context      = $self->{context};
-    $name    = $self->{name};
-    $node    = $self->get("node");
+    my ($html, $label, $icon);
+    my $context = $self->{context};
+    my $name    = $self->{name};
+    my $node    = $self->node_list();
 
     my ($bgcolor, $fontface, $fontsize, $fontcolor, $fontbegin, $fontend);
 

Modified: p5ee/trunk/App-Widget/lib/App/Widget/ImageBarSelector.pm
==============================================================================
--- p5ee/trunk/App-Widget/lib/App/Widget/ImageBarSelector.pm    (original)
+++ p5ee/trunk/App-Widget/lib/App/Widget/ImageBarSelector.pm    Thu Sep 21 
09:49:54 2006
@@ -69,7 +69,7 @@
 
     my $context    = $self->{context};
     my $name       = $self->{name};
-    my $node       = $self->{node};
+    my $node       = $self->node_list();
     my $pad        = $self->{pad};
     my $align      = $self->{align};
     my $valign     = $self->{valign};

Modified: p5ee/trunk/App-Widget/lib/App/Widget/TabbedSelector.pm
==============================================================================
--- p5ee/trunk/App-Widget/lib/App/Widget/TabbedSelector.pm      (original)
+++ p5ee/trunk/App-Widget/lib/App/Widget/TabbedSelector.pm      Thu Sep 21 
09:49:54 2006
@@ -65,10 +65,10 @@
 
 sub html {
     my $self = shift;
-    my ($context, $name, $node, $html, $label, $icon);
-    $context = $self->{context};
-    $name    = $self->{name};
-    $node    = $self->get("node");
+    my ($html, $label, $icon);
+    my $context = $self->{context};
+    my $name    = $self->{name};
+    my $node    = $self->node_list();
 
     my ($bgcolor, $width, $fontface, $fontsize, $fontcolor, $fontbegin, 
$fontend);
     my ($html_url_dir, $xgif);

Modified: p5ee/trunk/App-Widget/lib/App/Widget/TreeSelector.pm
==============================================================================
--- p5ee/trunk/App-Widget/lib/App/Widget/TreeSelector.pm        (original)
+++ p5ee/trunk/App-Widget/lib/App/Widget/TreeSelector.pm        Thu Sep 21 
09:49:54 2006
@@ -49,10 +49,9 @@
 
 sub html {
     my $self = shift;
-    my ($context, $name, $node);
-    $context      = $self->{context};
-    $name    = $self->{name};
-    $node    = $self->get("node");
+    my $context = $self->{context};
+    my $name    = $self->{name};
+    my $node    = $self->node_list();
 
     my ($nodebase, $nodeidx, $nodenumber, $nodelevel, $maxnodelevel);
     my (@nextnodebase, @nextnodeidx, @nextnodelevel, @shownnodenumber, 
@shownnodelevel);

Reply via email to