list.mc - List of something as HTML table
This Mason component replaces absoleted ePortal::HTML::List package.
It is used to create HTML tables for iterable objects and arrays.
<&| /list.mc, id=>'list1', obj => $object OR list => [@array] &> <&| /list.mc:row, parameters &> # this method is optional <& /list.mc:column, parameters &> <& /list.mc:column_image, src => ... &> </&> # end of row <&| /list.mc:extra_row &> ... </&> # These method going after all "column" methods <&| /list.mc:before_title &> ... </&> <&| /list.mc:after_title &> ... </&> <&| /list.mc:before_footer &> ... </&> <&| /list.mc:after_footer &> ... </&> <& /list.mc:row_span &> </&> # end of list
The typical list consists of the following:
<table> <form> <before_title row> <title row> <after_title row> <one or more rows> <extra_row for each row> <before_footer row> <footer row> <action_bar row> <after_footer row> </form> </table>
The content of <&| list.mc &> is responsible for HTML generation of each row.
The very first call to content is when row_number==0. This call is used to count all columns, create soring groups and discover column titles. ThePersistent object is not restored at this moment and $_ is undefined for array lists.
Use local variable $_ as iterator for array. $_ is the object for ThePersistent lists.
$_
All -xxx like parameters are passed directly to CGI::start_table. Others are
id
The ID of the list. Used for submit forms and when more then 1 list exists on page.
submit
Make HTML form inside the list.
no_title
Do not produce title row
no_footer
==1
Do not produce footer row any case
==2
Show footer row if there is more than one page to display
order_by
ID of column to order by this column by default or "!ID" string to order by descending.
Generic method to make a row. Call once per list content. Use extra_row method if you need more than one row per iteration.
This is optionsl method. list.mc call it implicitly at least once if you don't.
<&| /list.mc:row &> <& /list.mc:column &> ... </&> <&| /list.mc:extra_row &> this is additional row </&>
-xxx
All parameters starting with '-' are passed to CGI::Tr() function.
Produce "extra" row in the same style as main row. Used for description and memos
start_column
By default extra_row is a td with all columns colspan. start_column specifies starting column to make colspan
tr
Parameters hash to pass to CGI::Tr() function
td
Parameters hash to pass to CGI::td() function
All parameters starting with '-' treated as parameters for td
content
The content of extra row. You may use <&|> call instead of it.
Make a space between rows.
<&| list.mc:row &> ... </&> <& list.mc:row_span &>
height
Height of free space in pixels
Action bar below footer consists of two cells. Left is your content and right is popup_menu with submit button. The name of popup_menu is list_action. You may get it with list_action method or as $ARGS{list_action}.
Array of ID of selected checkboxes available with checkboxes method.
The content of left cell. You may use <&|> call instead of it.
Parameters hash for left CGI::td() function
popup_menu
Parameters hash for popup_menu
button
Optional parameters hash for submit button. Defaults are enough.
label
A label for popup_menu. Default is "Selected items:"
Returns array ID of checked checkboxes or empty array.
Returns a value of list_action popup_menu or undef if form was not submitted. The fact of submit is request method eq 'POST'.
Generic method to make a column. Call it as many times as many columns you have. Place the calls inside row method.
row
ID of the column. Also act as field name for Persistent objects
title
Column title
a
Hashref of arguments for CGI::a().
url
More short way to say a => {-href => ...}
self_url
Hashref of parameters to cunstruct self referencing URL. These parameters will be replaced with given values.
A special parameter '#' => ... will be added as URL anchor
All parameters like -xxx are passed to CGI::td() function.
Order By clause of SQL query when sort is on by this column. id column parameter is required if you use order_by of order_by_desc feature.
order_by_desc
Descending sorting for this column. By default is "order_by DESC".
A column with image.
src
Path to image. Default is /images/icons/msg.gif
/images/icons/msg.gif
Produce delete button.
Optional URL for delete action.
objid
Optional object id for delete.htm. Default is ID of current object.
objtype
Reference type of object to delete. Default is ref of current object.
Produce "edit object" button.
URL for edit action.
Optional object id of object to edit. Default is ID of current object.
Produce checkbox column
value
The value of checkbox. Default is array element or object ID
name
Name of checkbox field. Default is list_chboxLISTID
list_chboxLISTID
Row number counter
Returns HASH of arguments that represent current state of the list. Put these parameters to other forms on the page to save list apperance untouched.
ID of list
Return self referencing URL without checkboxes selected.
Put list state as hidden fields into your form
This method used to insert a text before|after title|footer row. Place it AFTER all column methods. The content of method method is placed into one wide TD cell. Arguments are:
column
<&| /list.mc:before_title &> this text goes before title row </&>
What to show when no data available in recordset?
The content of warning
These arguments are significant for list.mc when exists in request. See state method for convenient way to get hash of all of them.
rowsLISTID
Rows per page for LISTID list.
pageLISTID
Page number to display for LISTID list.
order_byLISTID
Sort order internal variable. This is id of column to sort ascending or !id to sort descending.
Sergey Rusakov, <rusakov_sa@users.sourceforge.net>
To install ePortal, copy and paste the appropriate command in to your terminal.
cpanm
cpanm ePortal
CPAN shell
perl -MCPAN -e shell install ePortal
For more information on module installation, please visit the detailed CPAN module installation guide.