Modified template to include the original content from the content div
Modified template to include the original content from the content div

file:a/README.rst -> file:b/README.rst
--- a/README.rst
+++ b/README.rst
@@ -12,6 +12,8 @@
 * A custom Pylons controller for overriding some core CKAN behaviour
 
 * A custom Package edit form
+
+* A custom Group edit form
 
 * A plugin that allows for custom forms to be used for datasets based on 
   their "type".

--- a/ckanext/example/forms.py
+++ b/ckanext/example/forms.py
@@ -7,6 +7,7 @@
 from ckan.logic import NotFound, NotAuthorized, ValidationError
 from ckan.logic import tuplize_dict, clean_dict, parse_params
 import ckan.logic.schema as default_schema
+from ckan.logic.schema import group_form_schema
 from ckan.logic.schema import package_form_schema
 import ckan.logic.validators as val
 from ckan.lib.base import BaseController, render, c, model, abort, request
@@ -29,15 +30,17 @@
 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 
+    """This plugin demonstrates how a class packaged as a CKAN
+    extension might extend CKAN behaviour by providing custom forms
+    based on the type of a Group.
+
+    In this case, we implement two 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 
@@ -63,8 +66,6 @@
         Returns a string representing the location of the template to be
         rendered.  e.g. "forms/group_form.html".
         """        
-        from pdb import set_trace; set_trace()
-        
         return 'forms/group_form.html'
 
     def group_types(self):
@@ -78,7 +79,7 @@
         attempts to register more than one plugin instance to a given group
         type will raise an exception at startup.
         """
-        return ["example"]
+        return ["testgroup"]
 
     def is_fallback(self):
         """
@@ -90,7 +91,31 @@
         """
         return False                
                 
-                
+    def form_to_db_schema(self):
+        """
+        Returns the schema for mapping group data from a form to a format
+        suitable for the database.
+        """
+        return group_form_schema()
+
+    def db_to_form_schema(self):
+        """
+        Returns the schema for mapping group data from the database into a
+        format suitable for the form (optional)
+        """
+        return {}
+        
+    def check_data_dict(self, data_dict):
+        """
+        Check if the return data is correct.
+
+        raise a DataError if not.
+        """
+
+    def setup_template_variables(self, context, data_dict):
+        """
+        Add variables to c just prior to the template being rendered.
+        """                
                 
 
 class ExampleDatasetForm(SingletonPlugin):
@@ -150,7 +175,7 @@
         attempts to register more than one plugin instance to a given package
         type will raise an exception at startup.
         """
-        return ["example"]
+        return ["example_dataset_form"]
 
     def setup_template_variables(self, context, data_dict=None):
         """
@@ -176,7 +201,6 @@
         schema = {
             'title': [not_empty, unicode],
             'name': [not_empty, unicode, val.name_validator, val.package_name_validator],
-            'notes': [not_empty, unicode],
 
             'date_released': [date_to_db, convert_to_extras],
             'date_updated': [date_to_db, convert_to_extras],

--- a/ckanext/example/plugin.py
+++ b/ckanext/example/plugin.py
@@ -21,9 +21,11 @@
         found in the ``ini``-file.  Here we use it to specify the site
         title, and to tell CKAN to look in this package for templates
         and resources that customise the core look and feel.
+        
       - ``IGenshiStreamFilter`` allows us to filter and transform the
         HTML stream just before it is rendered.  In this case we use
         it to rename "frob" to "foobar"
+        
       - ``IRoutes`` allows us to add new URLs, or override existing
         URLs.  In this example we use it to override the default
         ``/register`` behaviour with a custom controller

--- a/ckanext/example/theme/templates/forms/dataset_form.html
+++ b/ckanext/example/theme/templates/forms/dataset_form.html
@@ -12,7 +12,7 @@
 </ul>
 </div>
 
-<fieldset>
+<fieldset id='section-basic-information'>
   <legend>Basic information</legend>
   <dl>
     <dt><label class="field_req" for="title">Title *</label></dt>
@@ -37,7 +37,7 @@
   </dl>
 </fieldset>
 
-<fieldset>
+<fieldset id='section-further-information'>
   <legend>Details</legend>
   <dl>
     <dt><label class="field_opt" for="date_released">Date released</label></dt>
@@ -95,7 +95,7 @@
     <dd class="field_error" py:if="errors.get('taxonomy_url', '')">${errors.get('taxonomy_url', '')}</dd>
   </dl>
   </fieldset>
-<fieldset>
+<fieldset id='section-resources'>
   <legend>Resources</legend>
   <table class="flexitable">
     <thead>
@@ -125,7 +125,7 @@
   <div class="field_error" py:if="errors.get('resources', '')">Package resource(s) incomplete.</div>
 </fieldset>
 
-<fieldset>
+<fieldset id='section-more-details'>
   <legend>More details</legend>
   <dl>
     <dt><label class="field_req" for="published_by">Published by *</label></dt>

--- a/ckanext/example/theme/templates/home/index.html
+++ b/ckanext/example/theme/templates/home/index.html
@@ -22,6 +22,7 @@
    <p id="examplething">
      Here is the frob
    </p>
+	${select("*")}
   </div>
 
   <xi:include href="layout.html" />

--- a/ckanext/example/theme/templates/layout.html
+++ b/ckanext/example/theme/templates/layout.html
@@ -9,9 +9,10 @@
 <!-- ! a custom primary nav -->
   <py:match path="//div[@class='menu']">
     <div class="menu">
-        ${h.nav_link(c, _('Home'), controller='home', action='index', id=None)}
-        ${h.nav_link(c, _('Data'), controller='package', action='index', id=None)}
-        ${h.nav_link(c, _('New dataset'), controller='package', action='new', id=None)}
+        ${h.nav_link(c, _('Home'), controller='home', action='index')}
+        ${h.nav_link(c, _('Data'), controller='package', action='index')}
+        ${h.nav_link(c, _('New dataset'), controller='package', action='new')}
+        ${h.nav_link(c, _('New group'), controller='group', action='new')}
     </div>
   </py:match>