Up to [cvs.NetBSD.org] / pkgsrc / www / p5-CGI-FormBuilder
Request diff between arbitrary revisions
Keyword substitution: kv
Default branch: MAIN
Update to 3.20 Upstream changes: 3.20, 2024-09-18 Promoting 3.11 TRIAL release to stable (Mark Hedges (MARKLE)'s super bugfixing release) Supporting regex modifiers in validation regexes (also MARKLE) 3.11, 2024-09-13 (TRIAL RELEASE) Mark Hedges (MARKLE) fixed some RT bugs. RT# 79185 datetime field not working - added messages for 'datetime' and 'datetime_local' RT# 81650 applied user-supplied patch (thanks) to use deterministic field order RT# 83012 spanish message error - saved the message file with utf8 encoding (it was not) RT# 87785 ok whatever fixed the typos RT# 114018 used utf8::decode instead of Encode::decode(...) no diff in tests RT# 155443 use sprintf only if the message has a '%' for sprintfing RT# 155500 js escape single-quotes when validating list of options
*: recursive bump for perl 5.40
*: recursive bump for perl 5.38
Mass-change BUILD_DEPENDS to TOOL_DEPENDS outside mk/. Almost all uses, if not all of them, are wrong, according to the semantics of BUILD_DEPENDS (packages built for target available for use _by_ tools at build-time) and TOOL_DEPEPNDS (packages built for host available for use _as_ tools at build-time). No change to BUILD_DEPENDS as used correctly inside buildlink3. As proposed on tech-pkg: https://mail-index.netbsd.org/tech-pkg/2023/06/03/msg027632.html
*: recursive bump for perl 5.36
*: recursive bump for perl 5.34
*: bump PKGREVISION for perl-5.32.
Bump PKGREVISIONs for perl 5.30.0
Recursive bump for perl5-5.28.0
Recursive revbump from lang/perl5 5.26.0
Updated www/p5-CGI-FormBuilder to 3.10 -------------------------------------- 3.10, 2016-08-17 David Precious (BIGPRESH) taking over maintainership, kind thanks to Nate (NWIGER) for handing over the reins. [ BUG FIXES] - Avoid CGI.pm warning if param() used in list context (GH-5, netangel)
Bump PKGREVISION for perl-5.24.
Remove patches that avoided warning from CGI.pm 4.05 or newer by replacing $self->{params}->param( with @{$self->{params}->param_fetch as broke usage under Catalyst: Can't locate object method "param_fetch" via package "Catalyst::Request"
Recursive PKGREVISION bump for all packages mentioning 'perl', having a PKGNAME of p5-*, or depending such a package, for perl-5.22.0.
Don't fail if there's no PaxHeader to remove.
Update 3.0501 to 3.09 (Changes from 3.06 to 3.09 is not known) --------------------- VERSION 3.06 Maintenance release with a couple new features: support for "charset: utf8" in "Source::File", add_before_option/add_after_option c/o Victor Porton, and support for HTML5 type names c/o Wolfgang Radke.
Avoid unneeded warnings from CGI.pm 4.05 or newer. Bump PKGREVISION.
Bump for perl-5.20.0. Do it for all packages that * mention perl, or * have a directory name starting with p5-*, or * depend on a package starting with p5- like last time, for 5.18, where this didn't lead to complaints. Let me know if you have any this time.
Bump all packages for perl-5.18, that a) refer 'perl' in their Makefile, or b) have a directory name of p5-*, or c) have any dependency on any p5-* package Like last time, where this caused no complaints.
Drop superfluous PKG_DESTDIR_SUPPORT, "user-destdir" is default these days.
Bump all packages that use perl, or depend on a p5-* package, or are called p5-*. I hope that's all of them.
Use ${RM} -f to avoid failure if no files are found to be removed.
Revision bump after updating perl5 to 5.14.1.
Bump the PKGREVISION for all packages which depend directly on perl, to trigger/signal a rebuild for the transition 5.10.1 -> 5.12.1. The list of packages is computed by finding all packages which end up having either of PERL5_USE_PACKLIST, BUILDLINK_API_DEPENDS.perl, or PERL5_PACKLIST defined in their make setup (tested via "make show-vars VARNAMES=..."), minus the packages updated after the perl package update. sno@ was right after all, obache@ kindly asked and he@ led the way. Thanks!
Fixing '.orig' relics being installed after patching (fixes PLIST, bumping Revision)
Bump the PKGREVISION for all packages which depend directly on perl, to trigger/signal a rebuild for the transition 5.8.8 -> 5.10.0. The list of packages is computed by finding all packages which end up having either of PERL5_USE_PACKLIST, BUILDLINK_API_DEPENDS.perl, or PERL5_PACKLIST defined in their make setup (tested via "make show-vars VARNAMES=...").
Updated to version 3.0501. Pkgsrc changes: - Suffix changed from the default (.tar.gz) to .tgz. - Marked the package as supporting installation to DESTDIR. Changes since version 3.0302: ============================= VERSION 3.0501 Bugfix release to repair a memory leak and a few "other" field edge cases. VERSION 3.05 Just a short time after 3.04, several new features evolved very quickly: Fieldset support A new "fieldsets" option to "new()" and a "fieldset" option to the "field()" method can be used to organize your form into sections. Currently works with the built-in "<table>" and new "<div>" renderer only, but template support is in the works. Div rendering In addition to the builtin "<table>" rendering module, a new "Div" rendering template has been included as well. If you select this, you get a table-free form which you can manipulate using stylesheets: $form->new(template => {type => 'div'}); This provides a couple additional benefits, like separate divs for every submit button. Additional classes A couple additional CSS classes were added, wrapping around the fields as a unit for better styling. The "<form>" tag now gets a ".fb_form" style as well. Fixed HTML::Template support A couple bugs were introduced in 3.04 that have been fixed, and more tests added. VERSION 3.04 In addition to the below features, a new Catalyst FormBuilder plugin is available on CPAN, "Catalyst::Plugin::FormBuilder". New $form->prepare() method You can now use "$form->prepare()" to get back an expanded hashref just before "$form->render()" is called. This allows you to use FormBuilder with Catalyst or other frameworks more easily, where the rendering is done elsewhere: my %expansion = $form->prepare; This could be passed directly to, say, Template Toolkit without having to use FormBuilder's Template Toolkit support. New "inflate" option to field() This is used the convert fields on the fly into objects or other values. For example, you could convert a "date" field into a DateTime object. Nice patch from Mark Hedges, check it out. Turkish messages Thanks to Recai Oktas. Added "missing" property for fields This can be queried in templates. To see if a field is missing altogether, you can check "field.missing" or "missing-field" depending on your template engine of choice. Removal of custom "puke" and "belch" FormBuilder now uses "Carp" and @CARP_NOT to handle its errors. As such, you will probably notice some differences in error output. The benefit is that setting "debug" will give you a stack trace on fatal errors. CGI::FormBuilder::Template::Builtin Moved the "render_builtin()" method to the above module, to unify the rendering schemes. New FORMBUILDER_DEBUG environment variable Setting this has the same effect as using the "debug" option. Removal of excess documentation Removed all the stub docs from "Field::*" and "Messages::*" to make CPAN happy.
Update to 3.0302: VERSION 3.0301 This is a bugfix release to repair these main items: - optgroups bugfix for complex arrays - removal of HTML::Entities support due to utf8 issues - new es_ES Messages module with better translations - a patch from Mark Hedges to enable plugin modules for mailresults() The rest of the features remain the same as below. VERSION 3.03 Subclassable Fields Each field is now rendered by its own class, named for the field type. For example, text fields are rendered by "CGI::FormBuilder::Field::text". This allows you to create custom field types and plugging them in by creating your own "CGI::FormBuilder::Field::whatever_you_want" module. Thanks to Peter Eichman for his contributions to this scheme. Messages Localization All messages are now handled in a similar way to field types: They are delegated to "CGI::FormBuilder::Messages::locale" where "locale" is the appropriate string such as "en_US" or "da_DK". A number of localizations are included as part of the standard distribution. There are two ways to use these messages: Either the 'auto' messages mode or by specifying a specific locale: my $form = CGI::FormBuilder->new(messages => 'auto'); # check client my $form = CGI::FormBuilder->new(messages => ':da_DK'); # specified You can create your own messages by copying "_example.pm" and modifying it for your language. When using messages in this way, the HTTP Charset is changed to "utf-8". Select optgroup support By using the "field()" option "optgroups", you can now cause select fields to automatically generate optgroup tags: $form->field(name => 'browser', options => \@opt, optgroups => 1); See the documentation on "optgroups" for more details. Data::FormValidator Support Thanks to another great patch from Peter Eichman, "Data::FormValidator" is supported as a validation option to "new()", just by passing it in as an object. See the documentation on "validate" for more information. Option sorting by LABELNAME or LABELNUM You can now sort options by "LABELNAME" or "LABELNUM", similar to the value-based sorting of "NAME" and "NUM". See the documentation for more details. XHTML Compliance Generated code now validates against <http://validator.w3.org>. This includes stuff like lowercase "get" and "post" methods, lowercase "onchange" and "onsubmit" actions, and so on.
Point MAINTAINER to pkgsrc-users@NetBSD.org in the case where no developer is officially maintaining the package. The rationale for changing this from "tech-pkg" to "pkgsrc-users" is that it implies that any user can try to maintain the package (by submitting patches to the mailing list). Since the folks most likely to care about the package are the folks that want to use it or are already using it, this would leverage the energy of users who aren't developers.
Update www/p5-CGI-FormBuilder to 3.0202 COMPATIBILITY FormBuilder 3.0 should be completely compatible with FormBuilder 2.x, with the singular exception that you can no longer use the shortcut autoload style of getting to fields: $form->field(name => 'category', options => \@opt); $form->category(options => \@opt); # WRONG In order to allow the second form, you must specify the "fieldsubs" option to "new()". VERSION 3.0202 This is a bugfix release that patches the following problems: - missing $form->name accessor - $form->confirm displaying wrong value for radio groups - $form->new(messages => $file) not reading file (tries to bless directly) - added $form->field(delete => 1) option - disabling field comment on static fields - fixing $form->field(disabled => 0) - redone messages joiner on array passing (internals thing) The changed files are: CGI/FormBuilder.pm CGI/FormBuilder/Field.pm CGI/FormBuilder/Messages.pm All other sub-modules shipped are identical to the 3.02 versions; those modules retain the same version and signature. VERSION 3.02 Multi-Page Form Support A new module, "CGI::FormBuilder::Multi", has been added to handle the navigation and state of multi-page forms. A multi-page form is actually composed of several individual forms, tied together with the special CGI param "_page": my $multi = CGI::FormBuilder::Multi->new( # first args are hashrefs per-form \%form1_opts, \%form2_opts, \%form3_opts, # remaining options apply to all forms header => 1, method => 'POST', ); my $form = $multi->form; # current form if ($form->submitted && $form->validate) { # you write this do_data_update($form->fields); # last page? if ($multi->page == $multi->pages) { print $form->confirm; exit; } $multi->page++; # next page counter $form = $multi->form; # fetch next page's form } print $form->render; For more details, see CGI::FormBuilder::Multi. External Source File Inspired by Peter Eichman's "Text::FormBuilder", the new "source" option has been added to "new()" which enables the use of an external config file to initialize FormBuilder. This file takes the format: # sample config file method: POST header: 1 submit: Update, Delete fields: fname: label: First Name size: 50 validate: NAME lname: label: Last Name size: 40 validate: NAME sex: label: Gender options: M=Male, F=Female jsclick: javascript:alert("Change your mind??"); validate: M,F required: ALL messages: form_invalid_text: Please correct the following fields: form_required_text: Please fill in all <b>bold</b> fields. You can even pre-parse this file, and generate a module from it which you can then reuse in multiple scripts using the "write_module()" function. For more details, see CGI::FormBuilder::Source::File. "Other" Fields The new "other" option has been added to "field()". If specified, a text box will be added to the right of the field, and its value will be used if the main field is not filled in. It will be subject to the same required and validation checks as the main field: $form->field(name => 'favorite_color', options => [qw(Red Green Blue)], validate => 'NAME', other => 1); # allow "other" This would create HTML something like this: Favorite Color: []Red []Green []Blue []Other: [____________] The text "Other:" is controlled by the message "form_other_default". Growable Fields Thanks to a patch from Peter Eichman, "field()" now also accepts a "growable" option. This option enables some JavaScript hooks that add an "Additional [label]" button on text and file fields: Data File: [______________] [Additional Data File] When you click on the "Additional Data File" button, another box will be appended, allowing you to add more files. The values are then retrieved in the usual fashion: my @files = $form->field('data_file'); Like "other" fields, all elements are subject to validation checks. The text "Additional %s" is controlled by the message "form_grow_default". Support for "CGI::FastTemplate" Thanks once again to Peter Eichman (busy guy), the module "CGI::FormBuilder::Template::Fast" has been included. This adds the template type "Fast" as an interface to "CGI::FastTemplate": my $form = CGI::FormBuilder->new( template => { type => 'Fast', define => { form => 'form.tmpl', field => 'field.tmpl', } } See CGI::FormBuilder::Template::Fast for more details. Thanks again Peter! Subclassable Templates and tmpl_param() The 2.x "tmpl_param()" method has been reimplemented finally. In addition, the included template modules are now completely subclassable, meaning that you can create an entire template engine with something like this: package My::HTML::Template; use CGI::FormBuilder::Template::HTML; use base 'CGI::FormBuilder::Template::HTML'; # new() is inherited sub render { my $self = shift; my $form = shift; # complete form object # do any special actions here $self->SUPER::render; } For more details, see CGI::FormBuilder::Template. Message Changes All messages were reworded to make them shorter and easier to read. The phrase "You must" was removed from all of them. To see the new messages, cut-and-paste this code: perl -MCGI::FormBuilder::Messages \ -e 'CGI::FormBuilder::Messages->messages' In addition, the "form_submit_default" and "form_reset_default" messages were not even being used, and field labels were not being properly highlighted on error. These problems have been fixed. Autoloaded Fields The 2.x feature of "$form->$fieldname()" has been reimplemented, but using it requires the "fieldsubs" option: my $form = CGI::FormBuilder->new(fields => \@f, fieldsubs => 1); Read the docs for some caveats. Disabled Form Similar to a static form, you can set "disabled => 1" in "new()" or "render()" to display a form with grayed-out input boxes. You can also set this on a per-field basis using "field()". Verbatim HTML Options If you want to include HTML in your field options, set "cleanopts" to 0 in "field()" (for one field) or "new()" (for all fields). Compatibility Methods For compatibility with other modules, FormBuilder now includes "param()", "query_string()", "self_url()", and "script_name()". VERSION 3.01 This was a bugfix release, including the following changes: - fixed major problems with keepextras, including a reversed ismember test - added debug messages to keepextras and changed a few other debugs - added patch from Peter Eichman to fix scalar $field->tag and $field->tag_value - converted most all XHTML generation methods to only returning scalars - fixed the columns option which was totally broken for radio buttons - added a feature to plop in {border => 0} in columns as well - added the 2.x 'override' alias for field() 'force' which was missing - also added a 'defaults' alias for field() 'value' for CGI.pm happiness - more tests since there were way too many bugs In addition there were many documentation updates and changes. VERSION 3.00 Internals The internals have been completely rewritten, nearly from the ground up. All of the major functions have been split into methods, and objects have been created for the form, fields, messages, CGI params, and so on. Several new sub-modules have been created, including: CGI::FormBuilder::Field CGI::FormBuilder::Messages CGI::FormBuilder::Template CGI::FormBuilder::Template::HTML CGI::FormBuilder::Template::Text CGI::FormBuilder::Template::TT2 Many of these modules can be subclassed and overridden if desired. In addition, the template engine has been rewritten to allow "plugging in" of additional template modules, simply by specifying the name of the module to the 'template' option in new(). For more details, see the man pages for the individual modules above. Style Sheets Stylesheets are now generated if the "stylesheet" option is specified to FormBuilder. This can either be 1 to turn it on, or a full path to a style sheet to include. When used, all tags are then output with a "class" attribute, named "styleclass" plus the name of the tag: my $form = CGI::FormBuilder->new( fields => [qw/name email/], styleclass => 'myFB', # default is "fb_" stylesheet => 1, # turn on style ); print $form->render; # HTML will include # <input class="myFBname" id="name" name="name" type="text" /> # <input class="myFBemail" id="email" name="email" type="text" /> Compliant XHTML The output should be fully-compliant XHTML finally. Really. Maybe. Attributes and Field Objects Individual accessors have been added for every attribute that FormBuilder maintains. For example, here's a snippet of code to demonstrate: if ($form->stylesheet) { # loop thru fields, changing class for ($form->fields) { next if /_date$/; # skip fields named "XXX_date" # each field is a stringifiable object with accessors if ($_->options) { # has options $_->class('my_opt_style'); } else { # plain text box $_->class('my_text_style'); } } } This code checks to see if the "stylesheet" property has been set on the main $form. If so, then it loops thru all the fields, skipping those named "XXX_date". Of the remaining fields, those that have options have their "class" attribute changed to "my_opt_style", and those without options have it set to "my_text_style". In addition, you can individually render every part of the form yourself. by calling the appropriate method. For example: print $form->header; # just the header print $form->script; # opening JavaScript print $form->title; # form title print $form->start; # opening <form> tag for ($form->fields) { print $_->label; # each field's human label print $_->tag; # each field's <input> tag } print $form->end; # closing </form> tag For a complete list of accessors, see the documentation for both CGI::FormBuilder and CGI::FormBuilder::Field. Messages Many messages have been reworded, and several new messages were added to make it easier to customize individual text. In addition, you can now specify messages to individual fields: $form->field(name => 'email', message => 'Please enter a valid email address'); For more details, see "CGI::FormBuilder::Messages". HTML::Entities encoding HTML character encoding is now dispatched to "HTML::Entities", if available. This can be downloaded as part of the "HTML::Parser" module set on CPAN. Documentation Documentation has been updated and somewhat reorganized, which was long overdue. AUTHOR Copyright (c) 2000-2005 Nathan Wiger, Sun Microsystems <nate@sun.com>. All Rights Reserved. This module is free software; you may copy this under the terms of the GNU General Public License, or the Artistic License, copies of which should have accompanied your Perl kit.
fix PACKLIST so binary packages are not empty - update to CGI-FormBuilder-2.13nb3
Bump the PKGREVISIONs of all (638) packages that hardcode the locations of Perl files to deal with the perl-5.8.7 update that moved all pkgsrc-installed Perl files into the "vendor" directories.
Turn PERL5_PACKLIST into a relative path instead of an absolute path. These paths are now relative to PERL5_PACKLIST_DIR, which currently defaults to ${PERL5_SITEARCH}. There is no change to the binary packages.
Remove USE_BUILDLINK3 and NO_BUILDLINK; these are no longer used.
since perl is now built with threads on most platforms, the perl archlib module directory has changed (eg. "darwin-2level" vs. "darwin-thread-multi-2level"). binary packages of perl modules need to be distinguishable between being built against threaded perl and unthreaded perl, so bump the PKGREVISION of all perl module packages and introduce BUILDLINK_RECOMMENDED for perl as perl>=5.8.5nb5 so the correct dependencies are registered and the binary packages are distinct. addresses PR pkg/28619 from H. Todd Fujinaka.
Update p5-CGI-FormBuilder from version 2.12 to 2.13. Add DEPENDS on p5-Text-Template. Add commented-out DEPENDS on p5-Template-Toolkit (it pulls in "the world", and the module is optional). Change log: revision 2.13 date: 2004/10/04 18:00:56; author: nwiger; state: Exp; lines: +89 -46 many patches, including a big Text::Template enhancement and <label> addition
Convert to buildlink3.
Initial import of CGI-FormBuilder-2.12 into the NetBSD packages collection. The goal of CGI::FormBuilder (FormBuilder) is to provide an easy way for you to generate and process CGI form-based applications. This module is designed to be smart in that it figures a lot of stuff out for you. As a result, FormBuilder gives you about a 4:1 ratio of the code it generates versus what you have to write. For example, if you have multiple values for a field, it sticks them in a radio, checkbox, or select group, depending on some factors. It will also automatically name fields for you in human-readable labels depending on the field names, and lay everything out in a nicely formatted table. It will even title the form based on the name of the script itself (order_form.cgi becomes "Order Form"). Plus, FormBuilder provides you full-blown validation for your fields, including some useful builtin patterns. It will even generate JavaScript validation routines on the fly! And, of course, it maintains state ("stickiness") across submissions, with hooks provided for you to plugin your own sessionid module such as Apache::Session. And though it's smart, it allows you to customize it as well. For example, if you really want something to be a checkbox, you can make it a checkbox. And, if you really want something to be output a specific way, you can even specify the name of an HTML::Template or Template Toolkit (Template) compatible template which will be automatically filled in, statefully.
Initial revision