CGI-WML
view release on metacpan or search on metacpan
'prev' => '50', # 0x32
'onevent' => '51', # 0x33
'optgroup' => '52', # 0x34
'option' => '53', # 0x35
'refresh' => '54', # 0x36
'select' => '55', # 0x37
'small' => '56', # 0x38
'strong' => '57', # 0x39
'UNUSED' => '58', # 0x3A
'template' => '59', # 0x3B
'timer' => '60', # 0x3C
'u' => '61', # 0x3D
'setvar' => '62', # 0x3E
'wml' => '63', # 0x3F
);
%WBML_ATTRS = ( # dec # hex
'accept-charset' => '05', # 0x05
'align="bottom"' => '06', # 0x06
'align="center"' => '07', # 0x07
'align="left"' => '08', # 0x08
'mode="nowrap"' => '29', # 0x1D
'mode="wrap"' => '30', # 0x1E
'multiple="false"' => '31', # 0x1F
'multiple="true"' => '32', # 0x20
'name' => '33', # 0x21
'newcontext="false"' => '34', # 0x22
'newcontext="true"' => '35', # 0x23
'onpick' => '36', # 0x24
'onenterbackward' => '37', # 0x25
'onenterforward' => '38', # 0x26
'ontimer' => '39', # 0x27
'optional="false"' => '40', # 0x28
'optional="true"' => '41', # 0x29
'path' => '42', # 0x2A
'NULL,' => '43', # 0x2B
'NULL,' => '44', # 0x2C
'NULL,' => '45', # 0x2D
'scheme' => '46', # 0x2E
'sendreferer="false"' => '47', # 0x2F
'sendreferer="true"' => '48', # 0x30
'size' => '49', # 0x31
'tabindex' => '53', # 0x35
'title' => '54', # 0x36
'type' => '55', # 0x37
'type="accept"' => '56', # 0x38
'type="delete"' => '57', # 0x39
'type="help"' => '58', # 0x3A
'type="password"' => '59', # 0x3B
'type="onpick"' => '60', # 0x3C
'type="onenterbackward"' => '61', # 0x3D
'type="onenterforward"' => '62', # 0x3E
'type="ontimer"' => '63', # 0x3F
'NULL,' => '64', # 0x40
'NULL,' => '65', # 0x41
'NULL,' => '66', # 0x42
'NULL,' => '67', # 0x43
'NULL,' => '68', # 0x44
'NULL,' => '69', # 0x45
'type="prev"' => '70', # 0x46
'type="reset"' => '71', # 0x47
'type="text"' => '72', # 0x48
'type="vnd."' => '73', # 0x49
'http://' => '142', # 0x8E
'http://www.' => '143', # 0x8F
'https://' => '144', # 0x90
'https://www.' => '145', # 0x91
'NULL' => '146', # 0x92
'middle' => '147', # 0x93
'nowrap' => '148', # 0x94
'onpick' => '149', # 0x95
'onenterbackward' => '150', # 0x96
'onenterforward' => '151', # 0x97
'ontimer' => '152', # 0x98
'options' => '153', # 0x99
'password' => '154', # 0x9A
'reset' => '155', # 0x9B
'NULL' => '156', # 0x9C
'text' => '157', # 0x9D
'top' => '158', # 0x9E
'unknown' => '159', # 0x9F
'wrap' => '160', # 0xA0
'www.' => '161'); # 0xA1
%WBML_NO_CLOSE_TAGS = (
'br' => '1',
'go' => '1',
'input' => '1',
'noop' => '1',
'prev' => '1',
'img' => '1',
'meta' => '1',
'timer' => '1',
'setvar' => '1');
# HTML->WML conversion constants
# Ignore these HTML and iMode tags completely.
my %IGNORE_TAG = map {$_ => 1} qw(abbr acronym address applet area basefont
bdo body cite col colgroup del dfn dir div
dl dt fieldsset font frame frameset head
html iframe legend link noframes noscript
object param script span style textarea
tfoot thead var);
}
return join(" ",@result);
}
### Method: card
# make a complete WML card
####
sub card {
my ($self,@p) = &CGI::self_or_default(@_);
my ($id,$title,$content,$ontimer,$timer,$onenterforward,$onenterbackward,
$newcontext,$ordered,$class,$lang) =
rearrange([ID,TITLE,CONTENT,ONTIMER,TIMER,ONENTERFORWARD,ONENTERBACKWARD,NEWCONTEXT,ORDERED,CLASS,LANG],@p);
my @ret;
push(@ret,qq(\n<card id="$id"));
push(@ret,qq(title="$title")) if (defined $title);
push(@ret,qq(newcontext="$newcontext")) if (defined $newcontext);
push(@ret,qq(ontimer="$ontimer")) if (defined $ontimer);
push(@ret,qq(onenterforward="$onenterforward"))if(defined $onenterforward);
push(@ret,qq(onenterbackward="$onenterbackward"))if(defined $onenterbackward);
push(@ret,qq(xml:lang="$lang")) if (defined $lang);
push(@ret,qq(ordered="$ordered")) if (defined $ordered);
push(@ret,qq(class="$class")) if (defined $class);
push(@ret,qq(>));
push(@ret,qq($timer)) if (defined $timer);
push(@ret,qq( $content </card>)) if (defined $content);
return join (" ",@ret);
}
### Method: dialtag
# make a 'call this number' tag
####
sub dialtag {
my ($self,@p) = @_;
my $ret = qq(<do type="accept" label="Back"><prev/></do>);
$ret =~ s/Back/$label/ if (defined $label);
return $ret;
}
sub back {
&prev;
}
### Method: timer
# Make a WML timer element
####
sub timer {
my ($self,@p) = @_;
my ($name,$value) = rearrange([NAME,VALUE],@p);
return qq(<timer name="$name" value="$value"/>);
}
#### Method: end_wml
# End an WML document.
# Trivial method for completeness. Just returns "</wml>"
####
sub end_wml {
return "</wml>\n";
}
=back
=head2 CREATING WML CARDS
=over 2
=item B<card()>
Cards are created whole, by passing paramaters to the card() method, as
well as the card attributes, a timer may be added to the start of the
card.
$query->card(-id=>"card_id",
-title=>"First Card",
-ontimer=>"#next_card",
-timer=>$query->C<timer>(-name=>"timer1",-value=>"30"),
-newcontext=>"true",
-onenterforward=>"#somecard",
-onenterbackward=>"#othercard",
-content=>"<p>Hello WAP world</p>");
The 'ID' and 'Content' elements are manditory, and have no defaults.
At least one paragraph tag is also required. If you get everything
else correct and nothing is diplayed, that may be the reason. All
other parameters are optional.
An other way of making the above card would be this:
$content = $query->p("Hello WAP world");
$query->card(-id=>"card_id",
-title=>"First Card",
-ontimer=>"#next_card",
-timer=>$query->C<timer>(-name=>"timer1",-value=>"30"),
-newcontext=>"true",
-onenterforward=>"#somecard",
-onenterbackward=>"#othercard",
-content=>$content);
=head2 TEMPLATES
The template() method creates a template for placing at the start
of a card. If you just need to add a B<back> link, use the prev()
method.
$query->template(-content=>$query->prev(-label=>"Go Back"));
=head2 TIMERS
A card timer is used with the card() method to trigger an action, the
function takes two arguments, the name of the timer and it's value in
milliseconds.
$query->timer(-name=>"mytimer",
-value=>"30");
=head2 GO BLOCKS
A E<lt>go block is created either as a single line
$query-E<gt>go(-method=>"get",
-href=E<gt>"http://www.example.com/");
C<
E<lt>go href="http://www.example.com/" method="get"/E<gt>
-type=>"text",
-size=>4,
-title=>"Enter PIN",
-format=>"4N",
-maxlength=>4,
-emptyok=>"false");
=head2 ONEVENT
An B<onevent> element may contain one of 'go','prev','noop' or 'refresh'
and be of type 'onenterforward', 'onenterbackward' or 'ontimer'.
$query->onevent(-type=>"onenterforward",
-content=>qq(<refresh>
<setvar name="x" value="1"/>
</refresh>));
=head2 IMG
An image can be created with the following attributes:
( run in 0.819 second using v1.01-cache-2.11-cpan-49f99fa48dc )