Changes - CGI::Widget::DBI::Search change logfile
all changes without author attribution are by Adi Fairbank
Improve and add documentation, including undocumented -form_extra_vars option
Minor API refactoring: - remove support for string version of -href_extra_vars and add new option -href_extra_vars_qs for the (query) string version of them - move extra_vars_for_uri() and extra_vars_for_form() methods from AbstractDisplay class into core Search class, so it can be more easily called by external classes - refactor display code in Display::Table class to give finer-grained overriding control; new methods: display_row(), display_field()
Add PREREQ_PM for DBD::mysql in Makefile.PL, so hopefully cpantesters will stop complaining
Prevent SQL error when sortby param passed with a column not currently in select results
Add append_where_clause() and append_bind_params() methods to make the addition of new expressions to the where clause cleaner
Fix bug and add test for missing support for -form_extra_vars in Table display
Change method syntax for logging methods: Base->log_error() and Base->warn()
Add CSS skinning options: -css_grid_class, -css_grid_cell_class, -css_table_class, -css_table_row_class, -css_table_cell_class, -css_table_header_class, -css_table_unsortable_header_class
Add -column_align option for specifying html column alignment in table display mode
Add new optional feature (for performance when querying several tables using a join) which allow a two-step search: - first, perform search and store results in a temporary table, based on columns listed in -sql_search_columns - second, join the temporary table (which only contains -max_results_per_page rows) to the rest of the join tables listed in -sql_join_for_dataset to retrieve the data necessary to display the full dataset to the user
New method sql_column_with_tbl_alias_for_alias() which will find the column name along with (appended to) SQL table alias, given its column alias or column name.
Improve performance of retrieval of search results from database when no -fetchrow_closure not specified (I think), by simply calling DBI::fetchrow_hashref() instead of custom method; remove no longer used method default_fetchrow_closure(), since it worked exactly like DBI's fetchrow_hashref().
Add new -dry_run option to just generate the SQL that would be executed, but not actually execute it.
New config option -form_extra_vars which behaves exactly like -href_extra_vars, but creates hidden form fields instead of appending to links, and only in grid display mode, for use in http POST requests
UI-only changes: - remove -display_table_padding option, since it can be implemented better using CSS - add class attributes to all relevant table and td html elements in search result set for both grid and table display modes
Fix bug in AbstractDisplay when generating sort_reverse query string value which caused search results to alternate sort direction every page; also fix a bug in the display of the sort direction arrow in Display::Table
Add new -sortable_columns configuration option to specify only those columns which user will be allowed to sort by
Optimize getting total query size when using -show_total_numresults with MySQL FOUND_ROWS() function
API change: -where_clause no longer should contain 'WHERE', but a backwards compatible change has been added so it is still supported if it does
Add paging links to grid display in -browse_mode
Fix obscure bug in Search->get_num_results() method which showed incorrect total number of search results in special cases such as when -opt_precols_sql equals 'DISTINCT', a common use of that
UI improvements to default grid display layout: add 1px border around cells, and prefix each record value with its header column and a colon (:)
Better error logging: show SQL attempted if statement failed to execute
URI escape key/values in -href_extra_vars option when passed as hashref
Add -browse_mode option for use by CGI::Widget::DBI::Browse, to hide sorting and paging features during tree navigation
In Grid display class: add popup menu on upper right to allow re-sorting the dataset; and add page navigation links to top and bottom
Changes to base class constructor to allow passing an object of package CGI::Widget::DBI::.* to be re-blessed as a Search widget (used by Browse)
Minor fixes to support use with Apache::DBI
Refactor unit testing classes for simplicity, and to support subclassing by upcoming DBI Browse widget
Update license to Affero General Public License v3
API change: -columndata_closures is now only expected to return a table cell contents, not the table cell itself (html <td/> element)
New abstract base class for display classes CGI::Widget::DBI::Search::AbstractDisplay
Add new display class CGI::Widget::DBI::Search::Display::Grid, plus unit tests
Refactor several methods in CGI::Widget::DBI::Search::Display::Table for simplicity and to develop a better display API
Get rid of several warnings emitted by CGI::Widget::DBI::Search::Display::Table
Add unit tests for CGI::Widget::DBI::Search::Display::Table
Add prerequisite perl modules CGI and DBI in Makefile.PL, to make cpan testers happier
Abstract all display code into separate class CGI::Widget::DBI::Search::Display::Table
Add prerequisite perl module Test::Unit in Makefile.PL, to make cpan testers happy
Add a few basic unit tests, written in Test::Unit
Add default list of ORDER BY columns with -default_orderby_columns setting
Add navigation links to nearby pages in search set, customizable with -page_range_nav_limit setting
Refactoring to clean up and reduce amount of code: new method make_nav_uri remove bloated, obsolete method generate_nav_links
Improvements to documentation
Made the default -fetchrow_closure an explicit method default_fetchrow_closure() so it can be used by subclasses.
Config option -href_extra_vars now supports HASHREF syntax.
Better documentation: eg. defaults for config options.
Refactored some code into smaller methods for better readability/maintainability.
Support reverse sorting if user clicks on current sortby column.
Bugfix: show Prev/Next links even if -show_total_numresults config option not set
initial public release
To install CGI::Widget::DBI::Search, copy and paste the appropriate command in to your terminal.
cpanm
cpanm CGI::Widget::DBI::Search
CPAN shell
perl -MCPAN -e shell install CGI::Widget::DBI::Search
For more information on module installation, please visit the detailed CPAN module installation guide.