- COPYRIGHT AND LICENSE
HTML::PopupTreeSelect::Dynamic - dynamic version of HTML::PopupTreeSelect
This module is used just like HTML::PopupTreeSelect, with the addition of 3 new parameters -
include_prototype. Here's a full example:
A complete, and terribly coded, example of how to use this modules is included in the module distribution. Look for the file called
This module provides a dynamic version of HTML::PopupTreeSelect. By dynamic I mean that the tree is sent to the client in chunks as the user clicks around the tree. In HTML::PopupTreeSelect the entire tree is sent to the client when the page is loaded, introducing a long delay for large trees. With HTML::PopupTreeSelect::Dynamic trees of virtually any size can be navigated without noticable delays.
Be aware of the following issues, some or all of which may be fixed in a future version:
As you can see from the SYNOPSIS and INTERFACE sections no provision for dynamically generating the tree data is present. This means that while the client gets data in chunks, the server code still needs to compile the complete tree in memory to pass as the
dataparameter to new(). In general this is considerably less problematic than sending the entire tree to the client, but it would be nice to remove this potential bottleneck as well.
I have personally tested Firefox v1.0.2 on Linux and IE 6 on Windows XP.
Although this module uses Prototype for the AJAX calls, it's still using all the painfully hand-wrought dragging and tree-generation code. It would be nice to move this stuff over to Prototype, although it seems like it would have little practical benefits.
This module has the same interface as HTML::PopupTreeSelect, with a few additions:
This option provides the URL which will be used for callbacks from the widget to get node data. For example:
$select = HTML::PopupTreeSelect::Dynamic->new( dynamic_url => 'http://example.com/tree_select.cgi', ...);
This will cause the widget to make dynamic (AJAX) requests to http://example.com/tree_select.cgi to request node data. The code running behind this URL should call handle_get_node(), shown below.
This option provides additional parameters to be added to the request to
dynamic_url. These should be in URL format. For example, to set "rm" to "get_node":
$select = HTML::PopupTreeSelect::Dynamic->new( dynamic_params => 'rm=get_node', ...);
This options surpress the output of the
Prototype.js that comes from HTML::Prototype. By default it is
It is useful to set this option to
false when you are already using prototype.js in your templates via a
This method must be called when your application recieves a request using
dynamic_params. A CGI.pm object containing the data from this query must be passed as a named parameter:
$output = $select->handle_get_node(query => $query);
The return value is the output to be returned to browser.
I know of no bugs in this module. If you find one, please file a bug report at:
Alternately you can email me directly at
firstname.lastname@example.org. Please include the version of the module and a complete test case that demonstrates the bug.
Copyright (C) 2005 Sam Tregar
This program is free software; you can redistribute it and/or modify it under the same terms as Perl 5 itself.
Sam Tregar <email@example.com>
1 POD Error
The following errors were encountered while parsing the POD:
- Around line 635:
You forgot a '=back' before '=head1'