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);
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.