view release on metacpan or search on metacpan
lib/App/Widget.pm view on Meta::CPAN
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;
lib/App/Widget.pm view on Meta::CPAN
$value = $theme_values->{"$class.$var"} if (!defined $value);
$value = $theme_values->{$var} if (!defined $value);
$value = $default if (!defined $value && defined $default);
&App::sub_exit($value) if ($App::trace);
return($value);
}
sub html {
my ($self) = @_;
return $self->html_escape($self->{name});
}
# get the URL of the host
sub host_url {
my ($url, $protocol, $server, $port, $port_str);
$protocol = "http"; # assume it's vanilla HTTP
$protocol = "https" if (defined $ENV{HTTPS}); # this is how Apache does it
$server = $ENV{SERVER_NAME};
lib/App/Widget/Button.pm view on Meta::CPAN
# my $self = shift;
#}
######################################################################
# OUTPUT METHODS
######################################################################
sub html {
my $self = shift;
my $name = $self->{name};
my $label = $self->html_escape($self->{label});
my $html_attribs = $self->html_attribs();
return "<input type=\"submit\" name=\"app.event.${name}.click\" value=\"$label\"$html_attribs/>";
}
1;
lib/App/Widget/DataTable.pm view on Meta::CPAN
}
my ($format, $scale_factor);
for ($row = 0; $row <= $#$data; $row++) {
$numrow = $startrow + $row;
$html .= "<tr>\n";
$key = "";
if (defined $keys && defined $keys->[$row]) {
$key = join(",", @{$keys->[$row]}); # need to HTML-escape these!
}
$html .= " <td bgcolor=\"$heading_bgcolor\" align=\"right\">$elem_begin$numrow$elem_end</td>\n" if ($numbered);
if ($row_selectable) {
$html .= " <td bgcolor=\"#ffaaaa\" valign=\"middle\" align=\"center\">\n";
$html .= $context->widget("$name\{row_selected}{$key}",
class => "App::Widget::Checkbox",
)->html();
$html .= " </td>\n";
lib/App/Widget/DataTable.pm view on Meta::CPAN
maxlength => 99,
background_color => "#ffaaaa",
border_style => "solid",
border_width => "1px",
padding => 0,
@edit_style,
)->html();
$html .= "$elem_end</td>\n";
}
else {
$elem = $self->html_escape($elem);
if (!defined $elem || $elem eq "") {
$elem = " ";
}
else {
$elem = $elem * $scale_factor if ($scale_factor);
$elem = sprintf($format, $elem) if ($format);
if ($align) {
$td_col_attrib = " align=\"$align\"";
}
elsif ($elem =~ /^[-0-9.,%]+$/) {
lib/App/Widget/DataTable2.pm view on Meta::CPAN
}
}
}
my ($format, $scale_factor, $edit_widget_args, $edit_widget);
for ($row = 0; $row <= $#$data; $row++) {
$numrow = $startrow + $row;
$key = "";
if (defined $keys && defined $keys->[$row]) {
$key = join(",", @{$keys->[$row]}); # need to HTML-escape these!
}
$html .= $self->{row_selected}{$key} ? "<tr class=\"App-DataTable-tr_selected\">" : "<tr>\n";
$html .= " <td bgcolor=\"$heading_bgcolor\" align=\"right\">$elem_begin$numrow$elem_end</td>\n" if ($numbered);
if ($row_selectable) {
$html .= " <td bgcolor=\"#ffaaaa\" valign=\"middle\" align=\"center\" class=\"App-DataTable-td_select\">\n";
$html .= $context->widget("$name\{row_selected}{$key}",
class => "App::Widget::Checkbox",
lib/App/Widget/DataTable2.pm view on Meta::CPAN
my $data = $view_widget->html();
if ($data ne "") {
$elem = "<span style=\"white-space: nowrap\">".$data."</span>";
}
}
else {
$elem = $view_widget->html();
}
}
else {
$elem = $self->html_escape($elem);
if (!defined $elem || $elem eq "") {
$elem = " ";
}
else {
$elem = $elem * $scale_factor if ($scale_factor);
$elem = sprintf($format, $elem) if ($format);
if ($align) {
$td_col_attrib = " align=\"$align\"";
}
elsif ($elem =~ /^[-0-9.,%]+$/) {
lib/App/Widget/Element.pm view on Meta::CPAN
# options: _default, value
sub html {
my $self = shift;
my ($context, $tag, $name, $value, $html_value, $contents);
$context = $self->{context};
$name = $self->{name};
$value = $self->get_value("");
$html_value = $self->html_escape($value);
$tag = $self->get("tag");
$contents = $self->get("contents");
if (!defined $tag || $tag eq "") {
return $contents if (defined $contents);
return "[$name widget tag not defined]. <input type=\"hidden\" name=\"$name\" value=\"$html_value\"/>";
}
my (@keys, $key, @html, $config);
push(@html, $tag);
push(@html, "name=\"$name\"") if ($name ne "");
push(@html, "value=\"$html_value\"") if (defined $value);
$config = $self->config();
@keys = (keys %$config);
foreach $key (@keys) {
next if ($key eq "tag" || $key eq "name" || $key eq "default" || $key eq "contents" || $key =~ /^widget/);
$value = $self->get($key);
$html_value = $self->html_escape($value);
push(@html, $key . "=\"$html_value\"") if (defined $value);
}
if (!defined $contents || $contents eq "") {
return "<" . join(" ",@html) . "/>";
}
else {
return "<" . join(" ",@html) . ">$contents</$tag>";
}
}
lib/App/Widget/Hidden.pm view on Meta::CPAN
This class is a <input type=hidden> HTML element.
=cut
sub html {
my $self = shift;
my ($name, $value, $html_value, $html);
$name = $self->{name};
$value = $self->get_value();
$html_value = $self->html_escape($value);
$html = "<input type=\"hidden\" name=\"${name}\" value=\"$html_value\" />";
$html;
}
1;
lib/App/Widget/ImageButton.pm view on Meta::CPAN
sub html {
my $self = shift;
my ($name);
my ($url, $image, $image_script, $script_url_dir, $html_url_dir);
my ($height, $width, $bevel, $event, $args, $tabindex, $bgcolor);
my ($label, $url_label, $html_label, $event_target, $type, $selected);
$name = $self->{name};
$label = $self->label();
$url_label = $self->url_escape($label);
$html_label = $self->html_escape($label);
$tabindex = $self->get("tabindex");
$tabindex = ($tabindex) ? " tabindex=\"$tabindex\"" : "";
$event_target = $self->get("event_target",$name);
$event = $self->get("event","click");
$args = $self->get("args");
$args = (defined $args && $args ne "") ? "($args)" : "";
$type = $self->{type};
$type = "button" if (!$type);
$selected = $self->{selected} ? "&selected=1" : "&selected=0";
lib/App/Widget/Password.pm view on Meta::CPAN
######################################################################
# OUTPUT METHODS
######################################################################
sub unstyled_html {
my $self = shift;
my ($name, $value, $html_value, $html, $var, $size, $maxlength, $tabindex);
$name = $self->{name};
$value = $self->fget_value();
$html_value = $self->html_escape($value);
$size = $self->get("size");
$maxlength = $self->get("maxlength");
$tabindex = $self->get("tabindex");
$html = "<input type=\"password\" name=\"${name}\" value=\"$html_value\"";
$html .= " size=\"$size\"" if ($size);
$html .= " maxlength=\"$maxlength\"" if ($maxlength);
$html .= " tabindex=\"$tabindex\"" if ($tabindex);
$html .= "/>";
$html;
}
lib/App/Widget/RadioButtonSet.pm view on Meta::CPAN
($values, $labels) = $self->values_labels();
$html_attribs = $self->html_attribs();
$tabindex = (defined $tabindex && $tabindex ne "") ? " tabindex=\"$tabindex\"" : "";
@html = ();
$curr_value = $self->get_value();
for ($v = 0; $v <= $#$values; $v++) {
$value = $values->[$v];
$label = $self->html_escape($labels->{$value});
push(@html," <input type=\"radio\" name=\"$name\" value=\"$value\"$tabindex".
(($html_attribs) ? " $html_attribs" : "") .
(($value eq $curr_value) ? " checked />" : " />") .
$label .
"<br>");
}
return join("",@html);
}
1;
lib/App/Widget/Select.pm view on Meta::CPAN
my ($value, $v, %value_exists, $value_exists, @html);
@currvalues = $self->get_values();
foreach $value (@currvalues) {
if (defined $value) {
$value_exists{$value} = 1;
$value_exists = 1;
}
}
for ($v = 0; $v <= $#$values; $v++) {
$value = $values->[$v];
my $convert_value = $self->html_escape($value);
push(@html," <option value='$convert_value'" .
($value_exists{$value} ? " selected>" : ">") .
((defined $labels->{$value}) ? $self->html_escape($labels->{$value}) : $convert_value) .
"</option>\n");
}
my $html_attribs = $self->html_attribs();
return "<select name='$tagname'${size}${multiple}${tabindex}${onchange}$html_attribs>\n" . join("",@html) . "</select>";
}
1;
lib/App/Widget/TextArea.pm view on Meta::CPAN
######################################################################
# OUTPUT METHODS
######################################################################
sub unstyled_html {
my $self = shift;
my ($html);
my $name = $self->{name};
my $value = $self->get_value();
my $html_value = $self->html_escape($value);
my $rows = $self->{rows} || 40;
my $cols = $self->{cols} || 10;
my $wrap_html = "";
my $wrap = $self->{wrap};
my $readonly = $self->get("readonly");
my $readonly_html = "";
my $enable_warn = $self->get("enable_warning");
my $enable_warning_widget = $self->get("enable_warning_widget");
if (defined $wrap) {
lib/App/Widget/TextField.pm view on Meta::CPAN
######################################################################
# OUTPUT METHODS
######################################################################
sub unstyled_html {
my $self = shift;
my ($name, $value, $html_value, $html, $var, $size, $maxlength, $tabindex, $readonly, $html_attribs, $enable_warn, $enable_warning_widget);
$name = $self->{name};
$value = $self->fget_value();
$html_value = $self->html_escape($value);
$size = $self->get("size");
$maxlength = $self->get("maxlength");
$tabindex = $self->get("tabindex");
$readonly = $self->get("readonly");
$html_attribs = $self->html_attribs();
$enable_warn = $self->get("enable_warning");
$enable_warning_widget = $self->get("enable_warning_widget");
$html = "<input type=\"text\" name=\"${name}\" value=\"$html_value\"";
$html .= " size=\"$size\"" if ($size);
$html .= " maxlength=\"$maxlength\"" if ($maxlength);