$lxdebug->leave_sub();
} #end generate_report
-sub ajax_autocomplete {
- $main::lxdebug->enter_sub();
-
- my $form = $main::form;
- my %myconfig = %main::myconfig;
-
- $form->{column} = 'description' unless $form->{column} =~ /^partnumber|description$/;
- $form->{$form->{column}} = $form->{q} || '';
- $form->{limit} = ($form->{limit} * 1) || 10;
- $form->{searchitems} ||= '';
-
- my @results = IC->all_parts(\%myconfig, $form);
-
- print $form->ajax_response_header(),
- $form->parse_html_template('ic/ajax_autocomplete');
-
- $main::lxdebug->leave_sub();
-}
-
sub back_to_record {
_check_io_auth();
+++ /dev/null
-[%#-
- Autocompletion
-
- This template enables auto completion for input fields.
- Calling Syntax is:
-
- INCLUDE 'generic/autocomplete', [
- { SPEC_1 },
- { SPEC_2 },
- ...
- ]
-
- where SPEC is a hash containing the following keys:
-
- script : the script that is called for autocompletion, defaults to the invoking script
- action : action in the ajax script, defaults to 'ajax_autocomplete'
- selector : a jquery selector, specifying the input fields
- column : specifies the column that is represented by the bound field. typically description or name.
- params : additional params that should be included in the request, like customer/vendor information. expects a hash.
-
- TODO FIELDS:
- - addition fields like type, vc etc.
- - additional dependencies, see jquery.autocomplete documentation
- - hook function on select, again see jquery documentation
- - limit: maximum number of results shown.
-
- a simple SPEC would look like this:
-
- { selector => '#description', column => 'description' }
- # field with id="description" should be autocompleted with descriptions
-
- { script => 'ic.pl', selector => '[name^="partnumber_"]', column => 'partnumber' }
- # let ic.pl autocomplete by partnumbers, bind this to all fields where the name begins with "partnumber_"
-
-
-
- The Backend Side
-
- The called function will recieve the queried string as hashkey "q" in form, as well as every other param specified here.
- It should generate a generic ajax header (see form), followed by newline separated list of possible completion values.
-
-%]
-<script type='text/javascript'>
-[%- FOREACH token = AUTOCOMPLETES %]
-[%- DEFAULT token.script = script %]
-[%- DEFAULT token.action = 'ajax_autocomplete' %]
-[%- DEFAULT token.INPUT_ENCODING = 'utf8' %]
-[%- FOREACH key = token.params.keys %]
-[%- token.additional_url = token.additional_url _ '&' _ key _ '=' _ token.params.$key %]
-[%- END %]
-[%- token.url = token.script
- _ '?action=' _ token.action
- _ '&INPUT_ENCODING=' _ token.INPUT_ENCODING %]
-[%- SET token.url = token.url _ '&column=' _ token.column IF token.column %]
-[%- SET token.url = token.url _ token.additional_url IF token.additional_url %]
-$(document).ready( $('[% token.selector %]').autocomplete('[% token.url %]'));
-[%- END %]
-</script>