From: Ross Jones Date: Fri, 09 Dec 2011 14:46:27 +0000 Subject: Implementation of an IGroupForm X-Git-Url: https://maxious.lambdacomplex.org/git/?p=ckanext-datagovau.git&a=commitdiff&h=09731da229f2cb7c491ccd5c5ce8584200689975 --- Implementation of an IGroupForm --- --- a/ckanext/example/forms.py +++ b/ckanext/example/forms.py @@ -28,7 +28,55 @@ log = logging.getLogger(__name__) - +class ExampleGroupForm(SingletonPlugin): + """This plugin demonstrates how a theme packaged as a CKAN + extension might extend CKAN behaviour. + + In this case, we implement twos extension interfaces to provide custom + forms for specific types of group. + + - ``IConfigurer`` allows us to override configuration normally + found in the ``ini``-file. Here we use it to specify where the + form templates can be found. + - ``IGroupForm`` allows us to provide a custom form for a dataset + based on the 'type' that may be set for a group. Where the + 'type' matches one of the values in group_types then this + class will be used. + """ + implements(IGroupForm, inherit=True) + implements(IConfigurer, inherit=True) + + def update_config(self, config): + """ + This IConfigurer implementation causes CKAN to look in the + ```templates``` directory when looking for the group_form() + """ + here = os.path.dirname(__file__) + rootdir = os.path.dirname(os.path.dirname(here)) + template_dir = os.path.join(rootdir, 'ckanext', + 'example', 'theme', 'templates') + config['extra_template_paths'] = ','.join([template_dir, + config.get('extra_template_paths', '')]) + + def group_form(self): + """ + Returns a string representing the location of the template to be + rendered. e.g. "forms/group_form.html". + """ + return 'forms/group_form.html' + + def is_fallback(self): + """ + Returns true iff this provides the fallback behaviour, when no other + plugin instance matches a group's type. + + As this is not the fallback controller we should return False. If + we were wanting to act as the fallback, we'd return True + """ + return False + + + class ExampleDatasetForm(SingletonPlugin): """This plugin demonstrates how a theme packaged as a CKAN --- /dev/null +++ b/ckanext/example/theme/templates/forms/group_form.html @@ -1,1 +1,102 @@ +
+
+

Errors in form

+

The form contains invalid entries:

+
    +
  • ${"%s: %s" % (key, error)}
  • +
+
+ +
+
+
+
+ +
+
+ ${g.site_url+h.url_for(controller='group', action='index')+'/'}  + +

 

+
+ +
${errors.get('name', '')}
+ +
+
+
    +
  • +
  • +
+ + + You can use Markdown formatting here. +
+ + +
+
+ +
+
+
+ +
+

Extras

+
+ + +
+
+ + + Delete +
+
+ + +
+
+ + with value + +
+
+
+
+
+ +
+

Datasets

+
+ +
+
+ +
+
+
+

There are no datasets currently in this group.

+ +

Add datasets

+
+
+
+
+
+ +
+ + + + +
+
+ --- a/setup.py +++ b/setup.py @@ -27,6 +27,7 @@ [ckan.plugins] example=ckanext.example.plugin:ExamplePlugin example_datasetform=ckanext.example.forms:ExampleDatasetForm + example_groupform=ckanext.example.forms:ExampleGroupForm [ckan.forms] example_form = ckanext.example.package_form:get_example_fieldset