Handle hostnames with upper-case letters
[webmin.git] / Webmin / PlainText.pm
1 package Webmin::PlainText;
2 use WebminCore;
3
4 =head2 new Webmin::PlainText(text, columns)
5 Displays a block of plain fixed-width text, within a page or form.
6 =cut
7 sub new
8 {
9 if (defined(&Webmin::Theme::PlainText::new) &&
10     caller() !~ /Webmin::Theme::PlainText/) {
11         return new Webmin::Theme::PlainText(@_[1..$#_]);
12         }
13 my ($self, $text, $columns) = @_;
14 $self = { 'columns' => 80 };
15 bless($self);
16 $self->set_text($text);
17 $self->set_columns($columns) if (defined($columns));
18 return $self;
19 }
20
21 =head2 html()
22 =cut
23 sub html
24 {
25 my ($self) = @_;
26 my $rv;
27 $rv .= "<table border><tr $cb><td><pre>";
28 foreach my $l (&wrap_lines($self->get_text(), $self->get_columns())) {
29         if (length($l) < $self->get_columns()) {
30                 $l .= (" " x $self->get_columns() - length($l));
31                 }
32         $rv .= &html_escape($l)."\n";
33         }
34 if (!$self->get_text()) {
35         print (" " x $self->get_columns()),"\n";
36         }
37 $rv .= "</pre></td></tr></table>\n";
38 return $rv;
39 }
40
41 sub set_text
42 {
43 my ($self, $text) = @_;
44 $self->{'text'} = $text;
45 }
46
47 sub get_text
48 {
49 my ($self) = @_;
50 return $self->{'text'};
51 }
52
53 sub set_columns
54 {
55 my ($self, $columns) = @_;
56 $self->{'columns'} = $columns;
57 }
58
59 sub get_columns
60 {
61 my ($self) = @_;
62 return $self->{'columns'};
63 }
64
65 # wrap_lines(text, width)
66 # Given a multi-line string, return an array of lines wrapped to
67 # the given width
68 sub wrap_lines
69 {
70 local @rv;
71 local $w = $_[1];
72 foreach $rest (split(/\n/, $_[0])) {
73         if ($rest =~ /\S/) {
74                 while($rest =~ /^(.{1,$w}\S*)\s*([\0-\377]*)$/) {
75                         push(@rv, $1);
76                         $rest = $2;
77                         }
78                 }
79         else {
80                 # Empty line .. keep as it is
81                 push(@rv, $rest);
82                 }
83         }
84 return @rv;
85 }
86
87 =head2 set_page(Webmin::Page)
88 Called when this form is added to a page
89 =cut
90 sub set_page
91 {
92 my ($self, $page) = @_;
93 $self->{'page'} = $page;
94 }
95
96 1;
97