paulb@491 | 1 | #!/usr/bin/env python |
paulb@491 | 2 | |
paulb@491 | 3 | "An example of recursive templates." |
paulb@491 | 4 | |
paulb@491 | 5 | import WebStack.Generic |
paulb@662 | 6 | from XSLForms.Resources.WebResources import \ |
paulb@662 | 7 | XSLFormsResource, input, output, resources, prepare_resources as xslforms_prepare_resources |
paulb@491 | 8 | |
paulb@560 | 9 | # Site map imports. |
paulb@560 | 10 | |
paulb@560 | 11 | from WebStack.Resources.Selectors import EncodingSelector |
paulb@560 | 12 | |
paulb@560 | 13 | # Configuration settings. |
paulb@560 | 14 | |
paulb@560 | 15 | encoding = "utf-8" |
paulb@560 | 16 | |
paulb@491 | 17 | # Resource classes. |
paulb@491 | 18 | |
paulb@662 | 19 | class RecursiveResource(XSLFormsResource): |
paulb@491 | 20 | |
paulb@491 | 21 | "A resource providing a recursive hierarchy of editable fields." |
paulb@491 | 22 | |
paulb@662 | 23 | resource_dir = resources(__file__) |
paulb@491 | 24 | template_resources = { |
paulb@662 | 25 | "recursive" : output("recursive_template.xhtml") |
paulb@491 | 26 | } |
paulb@491 | 27 | init_resources = { |
paulb@662 | 28 | "recursive" : input("recursive_template.xhtml") |
paulb@491 | 29 | } |
paulb@491 | 30 | |
paulb@662 | 31 | def select_activity(self, trans, form): |
paulb@662 | 32 | form.set_activity("recursive") |
paulb@491 | 33 | |
paulb@662 | 34 | def respond_to_input(self, trans, form): |
paulb@491 | 35 | |
paulb@491 | 36 | # Add and remove elements according to the selectors found. |
paulb@491 | 37 | |
paulb@491 | 38 | selectors = form.get_selectors() |
paulb@662 | 39 | self.remove_elements(selectors.get("remove")) |
paulb@662 | 40 | self.add_elements(selectors.get("add-list"), "list") |
paulb@662 | 41 | self.add_elements(selectors.get("add-item"), "item") |
paulb@491 | 42 | |
paulb@491 | 43 | # Site map initialisation. |
paulb@491 | 44 | |
paulb@491 | 45 | def get_site(): |
paulb@491 | 46 | |
paulb@491 | 47 | "Return a simple Web site resource." |
paulb@491 | 48 | |
paulb@491 | 49 | # Get the main resource and the directory used by the application. |
paulb@491 | 50 | |
paulb@560 | 51 | resource = RecursiveResource() |
paulb@560 | 52 | return EncodingSelector(resource, encoding) |
paulb@491 | 53 | |
paulb@514 | 54 | # Resource preparation ahead of time - useful for making installations. |
paulb@514 | 55 | |
paulb@514 | 56 | def prepare_resources(): |
paulb@514 | 57 | for cls in [RecursiveResource]: |
paulb@514 | 58 | XSLForms.Resources.WebResources.prepare_resources(cls) |
paulb@514 | 59 | |
paulb@491 | 60 | # vim: tabstop=4 expandtab shiftwidth=4 |