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