tabbed-display —
Attribute | Pos. | Req. | Default | Description |
---|---|---|---|---|
titles | ||||
contents | ||||
interpolate | 1 | interpolate input? | ||
reparse | 0 | interpolate output? | ||
hide | 0 | Hide the tag return value? |
Interchange 5.9.0:
Source: code/UI_Tag/tabbed_display.coretag
Lines: 211
# Copyright 2002-2007 Interchange Development Group and others # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. See the LICENSE file for details. # # $Id: tabbed_display.coretag,v 1.6 2007-03-30 23:40:54 pajamian Exp $ UserTag tabbed-display PosNumber 0 UserTag tabbed-display addAttr UserTag tabbed-display hasEndTag UserTag tabbed-display Interpolate UserTag tabbed-display NoReparse UserTag tabbed-display Version $Revision: 1.6 $ UserTag tabbed-display Documentation <<EOD =head1 NAME tabbed-display -- DHTML tabbed display =head1 SYNOPSIS [tabbed-display OPTIONS] [tabbed-panel The title of one] The contents of one [/tabbed-panel] [tabbed-panel The contents of two] The contents of two [/tabbed-panel] [/tabbed-display] =head1 DESCRIPTION The [tabbed-display] ITL tag breaks text into a tabbed DHTML display. There are many options which can change the size of the display, colors, and styles. NOTE: All sizes are in pixels to allow size calculation. =head2 OPTIONS =over 4 =item tab_bgcolor_template Default #xxxxxx. A template where each "x" will be broken into descending-brightness colors. The default value will cause the selected tab to have a color of #eeeeee, the first unselected tab will have #dddddd, the next #cccccc, etc. To create a yellow series, use #ffffxx. =item tab_height Sets the height of the title tab. Default 30. =item tab_width Sets the width of the title tab. Default is 100. =item panel_height Sets the height of the panel display. Default 600. =item panel_width Sets the width of the panel display. Default is 800. =item panel_id To account for multiple tabbed displays in a page, the second one should have a unique ID assigned to it. Default is "mvpan". =item tab_horiz_offset The amount that the tab will be offset from tabs in multi-row displays to allow view of all tabs. Default 10. =item tab_vert_offset The amount that the tab will be offset from tabs in multi-row displays to allow view of all tabs. Default 8. =item tab_style The style items which will be set for the title tab portion. Default: text-align:center; font-family: sans-serif; line-height:150%; border:2px; border-color:#999999; border-style:outset; border-bottom-style:none; =item panel_style The style items which will be set for the panel portion. Default: font-family: sans-serif; font-size: smaller; border: 2px; border-color:#999999; border-style:outset; =item panel_prepend A string which will be prepended to every panel content. A typical value might be "<table>", which allows table rows to be sent as content. This is the value used in Interchange's table editor. =item panel_append A string which will be appended to every panel content. A typical value might be "</table>", which allows table rows to be sent as content. This is the value used in Interchange's table editor. =item contents If you have an array set with the value of each panel's content, you can send it as an array reference in the contents option. This option will also accept a null-separated string as might be found in a form input. If there are contents in an array, the body text of the tag is ignored. =item titles If you have an array set with the value of each tab's title, you can send it as an array reference in the C<titles> option. This option will also accept a null-separated string as might be found in a form input. If the title for a panel is set in the array, the title found in the body text of the tag is ignored. =back =head2 Use in embedded Perl The tabbed_display tag can be used in embedded Perl as well. my @titles = ( 'Title 1', 'Title 2' ); my @contents = ( 'Content of panel 1: foo', 'Content of 2' ); return $Tag->tabbed_display({ titles => \@titles, contents => \@contents, panel_width => 600, panel_height => 400, tab_bgcolor_template => '#ffffxx', }); =cut EOD UserTag tabbed-display Routine <<EOR sub { my $opt = shift; my $body = shift; #::logDebug("opt is $opt, body is $body"); my $tit; my $cont; if($opt->{titles}) { if(ref($opt->{titles}) eq 'ARRAY') { $tit = delete $opt->{titles}; } elsif($opt->{titles} =~ /\0/) { $tit = [ split /\0/, delete $opt->{titles} ]; } elsif($opt->{titles} =~ /\n/) { $tit = [ split /\n/, delete $opt->{titles} ]; } else { $tit = [ map { $::Scratch->{$_} } split /[\s,]+/, delete $opt->{titles}]; } } if($opt->{contents}) { if(ref($opt->{contents}) eq 'ARRAY') { $cont = delete $opt->{contents}; } elsif($opt->{contents} =~ /\0/) { $cont = [ split /\0/, delete $opt->{contents} ]; } } $tit ||= []; if(! $cont) { $cont = []; while($body =~ s{ \[tabbed[-_]panel (.*?) \] (.*?) \[/tabbed[-_]panel\]} {}xis ) { push @$cont, $2; my $t = $1; if($t and $t =~ /\S/) { $tit->[$#$cont] ||= $t; } } } return Vend::Table::Editor::tabbed_display($tit, $cont, $opt); } EOR