Feature Branch: Autocompletion.
[kivitendo-erp.git] / templates / webpages / generic / autocomplete.html
diff --git a/templates/webpages/generic/autocomplete.html b/templates/webpages/generic/autocomplete.html
new file mode 100644 (file)
index 0000000..6b9681f
--- /dev/null
@@ -0,0 +1,52 @@
+[%#-
+     Autocompletion
+
+  This template enables auto completion for input fields.
+  Calling Syntax is:
+
+    INCLUDE 'generic/autocomlete', [
+      { 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 field
+   column   : specifies the column that is represented by the bound field. typically description or name.
+
+  TODO FIELDS:
+   - addition fields like type, vc etc.
+   - additional dependencies, see jquery.autocomplete documentation
+   - hook function on select, again see jquery documentation
+
+  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'              %]
+[%- token.url = token.script
+              _ '?action=' _ token.action
+              _ '&INPUT_ENCODING=' _ token.INPUT_ENCODING %]
+[%- SET token.url = token.url _ '&column=' _ token.column IF token.column %]
+$(document).ready( $('[% token.selector %]').autocomplete('[% token.url %]'));
+[%- END %]
+</script>