Author: spadkins
Date: Tue May 16 09:42:57 2006
New Revision: 6301
Modified:
p5ee/trunk/App-Widget/lib/App/Widget/ImageBarSelector.pm
p5ee/trunk/App-Widget/lib/App/Widget/TabbedSelector.pm
Log:
added multi-level, auth, outer table
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 Tue May 16
09:42:57 2006
@@ -28,7 +28,7 @@
=head1 DESCRIPTION
-This class implements a widget selector which is implemented as a
+This class implements a widget selector which is implemented as a
set of images side-by-side in an image-bar with a padding image
filling out the full width.
@@ -53,6 +53,13 @@
return($success);
}
+sub open_exclusively {
+ my ($self, $opennodenumber) = @_;
+ #$self->{debug} .= "open_exclusively($opennodenumber)<br>";
+ $self->SUPER::open_exclusively($opennodenumber);
+ $self->select_first_open_leaf($opennodenumber);
+}
+
######################################################################
# OUTPUT METHODS
######################################################################
@@ -60,13 +67,17 @@
sub html {
my $self = shift;
- my $context = $self->{context};
- my $name = $self->{name};
- my $node = $self->{node};
- my $pad = $self->{pad};
- my $theme = $context->so_get("theme") || $context->{options}{theme} ||
"app";
+ my $context = $self->{context};
+ my $name = $self->{name};
+ my $node = $self->{node};
+ my $pad = $self->{pad};
+ my $align = $self->{align};
+ my $valign = $self->{valign};
+ my $bar_height = $self->{height};
+ my $bar_width = $self->{width};
+ my $bar_background = $self->{background};
+ my $theme = $context->so_get("theme") || $context->{options}{theme}
|| "app";
- my ($width, $height);
my $html = "";
my ($nodebase, $nodeidx, $nodenumber, $nodelabel, $parentnodenumber,
$nodelevel, $opennodenumber);
@@ -85,42 +96,56 @@
$nodelevel = 1;
$nodebase = "1.";
}
- my (@args, $table_dims);
+ my $table_opts = ($bar_width) ? " width=\"$bar_width\"" : "
width=\"100%\"";
+ my $td_opts = "";
+ $td_opts .= " align=\"$align\"" if ($align);
+ $td_opts .= " valign=\"$valign\"" if ($valign);
+ $td_opts .= " height=\"$bar_height\"" if ($bar_height);
+ $td_opts .= " width=\"$bar_width\"" if ($bar_width);
+ if ($bar_background) {
+ $td_opts .= "
background=\"$html_url_dir/theme/$theme/$bar_background\"";
+ }
+ my $auth = $context->authorization();
+ my (@args, $auth_name);
for (; $nodelevel <= $#nodeidx; $nodelevel++) {
- $table_dims = " width=\"100%\"";
- $table_dims = " width=\"$self->{width}\"" if ($self->{width});
- $html .= "<table border=\"0\" cellpadding=\"0\"
cellspacing=\"0\"${table_dims}>\n";
+ $html .= "\n<!-- ImageBarSelector (BEGIN) -->\n";
+ $html .= "<table border=\"0\" cellpadding=\"0\"
cellspacing=\"0\"${table_opts}><tr><td${td_opts}>\n";
+ $html .= "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n";
$html .= " <tr>";
$nodeidx = 1;
$nodenumber = "$nodebase$nodeidx"; # create its node number
while (defined $node->{$nodenumber}) {
- @args = ();
- push(@args, height => $node->{$nodenumber}{height}) if
($node->{$nodenumber}{height});
- push(@args, width => $node->{$nodenumber}{width}) if
($node->{$nodenumber}{width});
- push(@args, label => $node->{$nodenumber}{label}) if
($node->{$nodenumber}{label});
- push(@args, image => $node->{$nodenumber}{image}) if
($node->{$nodenumber}{image});
-
- $w = $context->widget("$name-button$nodenumber",
- class => "App::Widget::ImageButton",
- volatile => 1,
- event_target => $name,
- event => "open_exclusively",
- args => $nodenumber,
- @args
- );
- if ($node->{$nodenumber}{open}) {
- $w->set("selected", 1);
- $w->set("image", "$html_url_dir/theme/$theme/" .
$node->{$nodenumber}{selected_image});
+ $auth_name = $node->{$nodenumber}{auth_name};
+ if (!$auth_name ||
$auth->is_authorized("/App/SessionObject/$name/$auth_name")) {
+ @args = ();
+ push(@args, height => $node->{$nodenumber}{height}) if
($node->{$nodenumber}{height});
+ push(@args, width => $node->{$nodenumber}{width}) if
($node->{$nodenumber}{width});
+ push(@args, label => $node->{$nodenumber}{label}) if
($node->{$nodenumber}{label});
+ push(@args, image => $node->{$nodenumber}{image}) if
($node->{$nodenumber}{image});
+
+ $w = $context->widget("$name-button$nodenumber",
+ class => "App::Widget::ImageButton",
+ volatile => 1,
+ event_target => $name,
+ event => "open_exclusively",
+ args => $nodenumber,
+ @args
+ );
+ if ($node->{$nodenumber}{open}) {
+ $w->set("selected", 1);
+ $w->set("image", "$html_url_dir/theme/$theme/" .
$node->{$nodenumber}{selected_image});
+ }
+ else {
+ $w->set("selected", 0);
+ $w->set("image", "$html_url_dir/theme/$theme/" .
$node->{$nodenumber}{image});
+ }
+ $html .= "<td>";
+ $html .= $w->html();
+ $html .= "</td>\n";
+ $html .= "<td> </td>\n";
}
- else {
- $w->set("selected", 0);
- $w->set("image", "$html_url_dir/theme/$theme/" .
$node->{$nodenumber}{image});
- }
- $html .= "<td width=\"1%\">";
- $html .= $w->html();
- $html .= "</td>\n";
$nodeidx++;
$nodenumber = "$nodebase$nodeidx"; # create its node number
@@ -144,11 +169,11 @@
my $bgimage = "$html_url_dir/theme/$theme/" . $pad->{image};
$html .= "<td${td_dims} background=\"$bgimage\"><img
src=\"$bgimage\" border=\"0\"${image_dims}></td>\n";
}
- else {
- $html .= "<td width=\"99%\"> </td>\n";
- }
+
$html .= " </tr>\n";
$html .= "</table>\n";
+ $html .= "</td></tr></table>\n";
+ $html .= "<!-- ImageBarSelector (END) -->\n";
}
$html;
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 Tue May 16
09:42:57 2006
@@ -101,6 +101,8 @@
$nodelevel = 1;
$nodebase = "1.";
}
+ my $auth = $context->authorization();
+ my ($auth_name);
for (; $nodelevel <= $#nodeidx; $nodelevel++) {
$html .= '<table border="0" cellpadding="0" cellspacing="0"
width="100%">' . "\n";
$html .= " <tr><td rowspan=\"3\" width=\"1%\" height=\"19\" nowrap>";
@@ -109,32 +111,35 @@
$nodenumber = "$nodebase$nodeidx"; # create its node number
while (defined $node->{$nodenumber}) {
- $label = $node->{$nodenumber}{label};
- $label = $node->{$nodenumber}{value} if (!defined $label);
- $label = "" if (!defined $label);
-
- $w = $context->widget("$name-button$nodenumber",
- class => "App::Widget::ImageButton",
- image_script => "app-button",
- volatile => 1,
- height => "19",
- width => "127",
- bevel => "2",
- label => $label,
- event_target => $name,
- event => "open_exclusively",
- args => $nodenumber,
- type => "tab",
- );
- #$w->set("selected", $node->{$nodenumber}{open} ? 1 : 0);
- if ($node->{$nodenumber}{open}) {
- $w->set("selected", 1);
+ $auth_name = $node->{$nodenumber}{auth_name};
+ if (!$auth_name ||
$auth->is_authorized("/App/SessionObject/$name/$auth_name")) {
+ $label = $node->{$nodenumber}{label};
+ $label = $node->{$nodenumber}{value} if (!defined $label);
+ $label = "" if (!defined $label);
+
+ $w = $context->widget("$name-button$nodenumber",
+ class => "App::Widget::ImageButton",
+ image_script => "app-button",
+ volatile => 1,
+ height => "19",
+ width => "127",
+ bevel => "2",
+ label => $label,
+ event_target => $name,
+ event => "open_exclusively",
+ args => $nodenumber,
+ type => "tab",
+ );
+ #$w->set("selected", $node->{$nodenumber}{open} ? 1 : 0);
+ if ($node->{$nodenumber}{open}) {
+ $w->set("selected", 1);
+ }
+ else {
+ $w->set("selected", 0);
+ }
+ $html .= $w->html();
+ $html .= "<!--\n -->";
}
- else {
- $w->set("selected", 0);
- }
- $html .= $w->html();
- $html .= "<!--\n -->";
$nodeidx++;
$nodenumber = "$nodebase$nodeidx"; # create its node number