App-Widget
view release on metacpan or search on metacpan
lib/App/Widget.pm view on Meta::CPAN
# handled when the form is posted back to the web server.
# i.e.
sub user_event_name {
&App::sub_entry if ($App::trace);
my ($self, $event, @args) = @_;
my ($name, $args);
$name = $self->{name};
$args = "";
$args = "(" . join(",",@args) . ")" if ($#args > -1);
my $result = "app.event.{${name}}.${event}${args}";
&App::sub_exit($result) if ($App::trace);
return($result);
}
#############################################################################
# callback_event_tag()
#############################################################################
=head2 callback_event_tag()
* Signature: $text = $widget->callback_event_tag($event,@args);
* Param: void
* Return: $text text
* Throws: App::Exception::Widget
* Since: 0.01
Sample Usage:
$html .= $self->callback_event_tag("open","folder","1.1");
=cut
# Creates an <input type=hidden> tag that will cause an event to be
# automatically handled when the form is posted back to the web server.
sub callback_event_tag {
&App::sub_entry if ($App::trace);
my ($self, $event, @args) = @_;
my ($name, $args);
$name = $self->{name};
$args = "";
$args = "(" . join(",",@args) . ")" if ($#args > -1);
my $result = "<input type=hidden name='app.event' value='${name}.${event}${args}'/>";
&App::sub_exit($result) if ($App::trace);
return($result);
}
# unescape URL-encoded data
sub url_unescape {
my $self = shift;
my($todecode) = @_;
$todecode =~ tr/+/ /; # pluses become spaces
$todecode =~ s/%([0-9a-fA-F]{2})/pack("c",hex($1))/ge;
return $todecode;
}
# URL-encode data
sub url_escape {
my $self = shift;
my ($toencode,$charset) = @_;
if ($charset) {
$toencode=~s/($charset)/uc sprintf("%%%02x",ord($1))/eg;
}
else {
$toencode=~s/([^a-zA-Z0-9_\-. ])/uc sprintf("%%%02x",ord($1))/eg;
$toencode =~ tr/ /+/; # spaces become pluses
}
return $toencode;
}
# HTML-escape data
sub html_escape {
&App::sub_entry if ($App::trace);
my ($self, $text) = @_;
if (!defined $text) {
$text = "";
}
elsif ($text) {
$text =~ s{&}{&}gso;
$text =~ s{<}{<}gso;
$text =~ s{>}{>}gso;
$text =~ s{\"}{"}gso;
$text =~ s{\'}{'}gso; # support for single quote
}
&App::sub_exit($text) if ($App::trace);
return $text;
}
sub html_attribs {
my ($self) = @_;
my $html_attribs = "";
if ($self->{attrib}) {
my $attrib_value = $self->{attrib};
foreach my $attrib (keys %$attrib_value) {
$html_attribs .= " $attrib=\"$attrib_value->{$attrib}\"";
}
}
return($html_attribs);
}
sub get_theme_value {
&App::sub_entry if ($App::trace);
my ($self, $var, $default) = @_;
my $theme_values = $self->{theme_values};
if (!defined $theme_values) {
my $context = $self->{context};
my $theme = $self->{theme};
if (!$theme) {
$theme = $context->get_user_option("theme") || "default";
$self->{theme} = $theme if ($theme);
}
my $theme_domain = $context->value_domain("theme.$theme",
class => "App::ValueDomain::Repository",
repository => "default",
table => "value_domain",
params => { name => "theme.$theme" },
valuecolumn => "value",
labelcolumn => "label");
$theme_values = $theme_domain->labels();
$self->{theme_values} = $theme_values;
( run in 1.746 second using v1.01-cache-2.11-cpan-39bf76dae61 )