Index: /main/waeup.ikoba/trunk/src/waeup/ikoba/customers/browser.py
===================================================================
--- /main/waeup.ikoba/trunk/src/waeup/ikoba/customers/browser.py	(revision 12213)
+++ /main/waeup.ikoba/trunk/src/waeup/ikoba/customers/browser.py	(revision 12214)
@@ -769,4 +769,9 @@
             mapping = {'a':self.context.__parent__.display_fullname})
 
+    @action(_('Add document'), validator=NullValidator, style='primary')
+    def addDocument(self, **data):
+        self.redirect(self.url(self.context, 'adddoc'))
+        return
+
     @jsaction(_('Remove selected documents'))
     def delDocument(self, **data):
@@ -803,5 +808,4 @@
     grok.template('documentaddform')
     grok.require('waeup.editCustomerDocuments')
-    form_fields = grok.AutoFields(ICustomerDocument)
     label = _('Add document')
     pnav = 4
@@ -812,5 +816,5 @@
         return sorted(doctypes.items())
 
-    @action(_('Create document'), style='primary')
+    @action(_('Add document'), style='primary')
     def createDocument(self, **data):
         form = self.request.form
@@ -820,8 +824,8 @@
         # classes depending on the doctype parameter given in form.
         document = createObject('waeup.%s' % doctype)
+        self.applyData(document, **data)
         self.context.addDocument(document)
         doctype = getUtility(ICustomersUtils).SELECTABLE_DOCTYPES_DICT[doctype]
-        self.flash(_('${a} created.',
-            mapping = {'a': doctype}))
+        self.flash(_('${a} added.', mapping = {'a': doctype}))
         self.context.writeLogMessage(
             self,'added: %s %s' % (doctype, document.document_id))
@@ -841,6 +845,9 @@
     grok.require('waeup.viewCustomer')
     grok.template('documentpage')
-    form_fields = grok.AutoFields(ICustomerDocument)
-    pnav = 4
+    pnav = 4
+
+    @property
+    def form_fields(self):
+        return grok.AutoFields(self.context.form_fields_interface)
 
     @property
@@ -856,7 +863,10 @@
     grok.require('waeup.manageCustomer')
     grok.template('documenteditpage')
-    form_fields = grok.AutoFields(ICustomerDocument)
     pnav = 4
     deletion_warning = _('Are you sure?')
+
+    @property
+    def form_fields(self):
+        return grok.AutoFields(self.context.form_fields_interface)
 
     def update(self):
@@ -1102,4 +1112,9 @@
             mapping = {'a':self.context.__parent__.display_fullname})
 
+    @action(_('Add contract'), validator=NullValidator, style='primary')
+    def addContract(self, **data):
+        self.redirect(self.url(self.context, 'addcontract'))
+        return
+
     @jsaction(_('Remove selected contracts'))
     def delContract(self, **data):
@@ -1133,8 +1148,7 @@
     """
     grok.context(IContractsContainer)
-    grok.name('addapp')
+    grok.name('addcontract')
     grok.template('contractaddform')
     grok.require('waeup.editContracts')
-    form_fields = grok.AutoFields(IContract)
     label = _('Add contract')
     pnav = 4
@@ -1145,5 +1159,5 @@
         return sorted(contypes.items())
 
-    @action(_('Create contract'), style='primary')
+    @action(_('Add contract'), style='primary')
     def createContract(self, **data):
         form = self.request.form
@@ -1155,6 +1169,5 @@
         self.context.addContract(contract)
         contype = getUtility(ICustomersUtils).SELECTABLE_CONTYPES_DICT[contype]
-        self.flash(_('${a} created.',
-            mapping = {'a': contype}))
+        self.flash(_('${a} added.', mapping = {'a': contype}))
         self.context.writeLogMessage(
             self,'added: %s %s' % (contype, contract.contract_id))
Index: /main/waeup.ikoba/trunk/src/waeup/ikoba/customers/documents.py
===================================================================
--- /main/waeup.ikoba/trunk/src/waeup/ikoba/customers/documents.py	(revision 12213)
+++ /main/waeup.ikoba/trunk/src/waeup/ikoba/customers/documents.py	(revision 12214)
@@ -86,5 +86,5 @@
         try:
             TRANSLATED_STATES = getUtility(
-                IDocumentsUtils).TRANSLATED_DOCUMENT_STATES
+                ICustomersUtils).TRANSLATED_DOCUMENT_STATES
             return TRANSLATED_STATES[self.state]
         except KeyError:
@@ -187,4 +187,6 @@
     filenames = ('sample',)
 
+    form_fields_interface = ICustomerDocument
+
 CustomerSampleDocument = attrs_to_fields(CustomerSampleDocument)
 
@@ -201,4 +203,6 @@
     # tuple should contain only a single filename string.
     filenames = ('sample.pdf',)
+
+    form_fields_interface = ICustomerPDFDocument
 
 CustomerPDFDocument = attrs_to_fields(CustomerPDFDocument)
Index: /main/waeup.ikoba/trunk/src/waeup/ikoba/customers/interfaces.py
===================================================================
--- /main/waeup.ikoba/trunk/src/waeup/ikoba/customers/interfaces.py	(revision 12213)
+++ /main/waeup.ikoba/trunk/src/waeup/ikoba/customers/interfaces.py	(revision 12214)
@@ -242,5 +242,4 @@
     is_editable_by_customer = Attribute('Document editable by customer')
     is_editable_by_manager = Attribute('Document editable by manager')
-    translated_class_name = Attribute('Translatable class name')
 
 
Index: /main/waeup.ikoba/trunk/src/waeup/ikoba/customers/tests/test_browser.py
===================================================================
--- /main/waeup.ikoba/trunk/src/waeup/ikoba/customers/tests/test_browser.py	(revision 12213)
+++ /main/waeup.ikoba/trunk/src/waeup/ikoba/customers/tests/test_browser.py	(revision 12214)
@@ -471,5 +471,4 @@
     def test_login_as_customer(self):
         # CustomerImpersonators can login as customer
-        # Create clearance officer
         self.app['users'].addUser('mrofficer', 'mrofficersecret')
         self.app['users']['mrofficer'].email = 'mrofficer@foo.ng'
@@ -827,8 +826,8 @@
         self.browser.open(self.customer_path)
         self.browser.getLink("Documents", index=1).click()
-        self.browser.getLink("Add document").click()
+        self.browser.getControl("Add document").click()
         self.browser.getControl(name="doctype").value = ['CustomerPDFDocument']
-        self.browser.getControl("Create document").click()
-        self.assertTrue('PDF Document created.' in self.browser.contents)
+        self.browser.getControl("Add document").click()
+        self.assertTrue('PDF Document added.' in self.browser.contents)
         document = self.customer['documents']['d102']
 
@@ -898,8 +897,8 @@
             '...You logged in...', self.browser.contents)
         self.browser.getLink("Documents").click()
-        self.browser.getLink("Add document").click()
+        self.browser.getControl("Add document").click()
         self.browser.getControl(name="doctype").value = ['CustomerSampleDocument']
-        self.browser.getControl("Create document").click()
-        self.assertTrue('Sample Document created.' in self.browser.contents)
+        self.browser.getControl("Add document").click()
+        self.assertTrue('Sample Document added.' in self.browser.contents)
         document = self.customer['documents']['d102']
 
@@ -1036,7 +1035,7 @@
         self.browser.addHeader('Authorization', 'Basic mgr:mgrpw')
         self.browser.open(self.customer_path + '/documents')
-        self.browser.getLink("Add document").click()
+        self.browser.getControl("Add document").click()
         self.browser.getControl(name="doctype").value = ['CustomerPDFDocument']
-        self.browser.getControl("Create document").click()
+        self.browser.getControl("Add document").click()
         self.browser.open(self.documents_path + '/d102/manage')
         # Create a pseudo image file and select it to be uploaded
@@ -1137,8 +1136,8 @@
         self.browser.open(self.customer_path)
         self.browser.getLink("Contracts").click()
-        self.browser.getLink("Add contract").click()
+        self.browser.getControl("Add contract").click()
         self.browser.getControl(name="contype").value = ['SampleContract']
-        self.browser.getControl("Create contract").click()
-        self.assertTrue('Sample Contract created.' in self.browser.contents)
+        self.browser.getControl("Add contract").click()
+        self.assertTrue('Sample Contract added.' in self.browser.contents)
         contract = self.customer['contracts']['c102']
 
@@ -1200,8 +1199,8 @@
             '...You logged in...', self.browser.contents)
         self.browser.getLink("Contracts").click()
-        self.browser.getLink("Add contract").click()
+        self.browser.getControl("Add contract").click()
         self.browser.getControl(name="contype").value = ['SampleContract']
-        self.browser.getControl("Create contract").click()
-        self.assertTrue('Sample Contract created.' in self.browser.contents)
+        self.browser.getControl("Add contract").click()
+        self.assertTrue('Sample Contract added.' in self.browser.contents)
         contract = self.customer['contracts']['c102']
         # Contract can be edited ...
Index: /main/waeup.ikoba/trunk/src/waeup/ikoba/customers/utils.py
===================================================================
--- /main/waeup.ikoba/trunk/src/waeup/ikoba/customers/utils.py	(revision 12213)
+++ /main/waeup.ikoba/trunk/src/waeup/ikoba/customers/utils.py	(revision 12214)
@@ -306,9 +306,16 @@
         }
 
-
     TRANSLATED_CONTRACT_STATES = {
         CREATED: _('created'),
         SUBMITTED: _('submitted for approval'),
         APPROVED: _('approved'),
+        REJECTED: _('rejected'),
+        EXPIRED:_('expired')
+        }
+
+    TRANSLATED_DOCUMENT_STATES = {
+        CREATED: _('created'),
+        SUBMITTED: _('submitted for verification'),
+        VERIFIED: _('verified'),
         REJECTED: _('rejected'),
         EXPIRED:_('expired')
Index: /main/waeup.ikoba/trunk/src/waeup/ikoba/customers/viewlets.py
===================================================================
--- /main/waeup.ikoba/trunk/src/waeup/ikoba/customers/viewlets.py	(revision 12213)
+++ /main/waeup.ikoba/trunk/src/waeup/ikoba/customers/viewlets.py	(revision 12214)
@@ -300,13 +300,4 @@
 # Viewlets for customer documents
 
-class AddDocumentActionButton(AddActionButton):
-    grok.order(1)
-    grok.context(ICustomerDocumentsContainer)
-    grok.view(DocumentsManageFormPage)
-    grok.require('waeup.editCustomerDocuments')
-    text = _('Add document')
-    target = 'adddoc'
-
-
 class PDFDocumentOverviewActionButton(ManageActionButton):
     grok.order(2)
@@ -378,14 +369,6 @@
     target = 'document_slip.pdf'
 
+
 # Viewlets for customer contracts
-
-class AddContractActionButton(AddActionButton):
-    grok.order(1)
-    grok.context(IContractsContainer)
-    grok.view(ContractsManageFormPage)
-    grok.require('waeup.editContracts')
-    text = _('Add contract')
-    target = 'addapp'
-
 
 class PDFContractOverviewActionButton(ManageActionButton):
Index: /main/waeup.ikoba/trunk/src/waeup/ikoba/documents/browser.py
===================================================================
--- /main/waeup.ikoba/trunk/src/waeup/ikoba/documents/browser.py	(revision 12213)
+++ /main/waeup.ikoba/trunk/src/waeup/ikoba/documents/browser.py	(revision 12214)
@@ -46,5 +46,5 @@
 
 from waeup.ikoba.documents.interfaces import (
-    IDocumentsContainer, IDocument)
+    IDocumentsContainer, IPublicDocument, IDocumentsUtils)
 
 grok.context(IIkobaObject) # Make IKofaObject the default context
@@ -62,5 +62,5 @@
     """A breadcrumb for the customer container.
     """
-    grok.context(IDocument)
+    grok.context(IPublicDocument)
 
     def title(self):
@@ -90,24 +90,17 @@
     label = _('Manage document section')
 
-    taboneactions = [_('Save'),_('Cancel')]
-    tabtwoactions = [_('Add document'), _('Remove selected'),_('Cancel')]
+    @action(_('Add document'), validator=NullValidator, style='primary')
+    def addSubunit(self, **data):
+        self.redirect(self.url(self.context, 'adddoc'))
+        return
 
-    @jsaction(_('Remove selected'))
+    @jsaction(_('Remove selected documents'))
     def delDocuments(self, **data):
         delSubobjects(self, redirect='manage', tab='2')
         return
 
-    @action(_('Save'), style='primary')
-    def save(self, **data):
-        return msave(self, **data)
-
     @action(_('Cancel'), validator=NullValidator)
     def cancel(self, **data):
         self.redirect(self.url(self.context))
-        return
-
-    @action(_('Add document'), validator=NullValidator)
-    def addSubunit(self, **data):
-        self.redirect(self.url(self.context, 'adddocument'))
         return
 
@@ -118,26 +111,34 @@
     grok.context(IDocumentsContainer)
     grok.require('waeup.manageDocuments')
-    grok.name('adddocument')
-    form_fields = grok.AutoFields(IDocument).omit('document_id')
+    grok.name('adddoc')
+    grok.template('documentaddform')
     label = _('Add document')
     pnav = 2
 
+    @property
+    def selectable_doctypes(self):
+        doctypes = getUtility(IDocumentsUtils).SELECTABLE_DOCTYPES_DICT
+        return sorted(doctypes.items())
+
     @action(_('Create document'), style='primary')
-    def addDocument(self, **data):
-        document = createObject(u'waeup.PublicDocument')
+    def createDocument(self, **data):
+        form = self.request.form
+        doctype = form.get('doctype', None)
+        # Here we can create various instances of PublicDocument derived
+        # classes depending on the doctype parameter given in form.
+        document = createObject('waeup.%s' % doctype)
         self.applyData(document, **data)
-        try:
-            self.context.addDocument(document)
-        except KeyError:
-            self.flash(_('The Id chosen already exists.'),
-                       type='danger')
-            return
-        self.flash(
-            _("Document ${a} added.", mapping = {'a':document.document_id}))
+        self.context.addDocument(document)
+        doctype = getUtility(IDocumentsUtils).SELECTABLE_DOCTYPES_DICT[doctype]
+        self.flash(_('${a} added.', mapping = {'a': doctype}))
         ob_class = self.__implemented__.__name__.replace('waeup.ikoba.','')
         self.context.__parent__.logger.info(
-            '%s - added: %s' % (ob_class, document.document_id))
-        self.redirect(self.url(self.context, u'manage')+'#tab2')
+            '%s - added: %s %s' % (ob_class, doctype, document.document_id))
+        self.redirect(self.url(self.context))
         return
+
+    @action(_('Cancel'), validator=NullValidator)
+    def cancel(self, **data):
+        self.redirect(self.url(self.context))
 
 
@@ -145,10 +146,13 @@
     """ Page to display document data
     """
-    grok.context(IDocument)
+    grok.context(IPublicDocument)
     grok.name('index')
     grok.require('waeup.viewDocuments')
     #grok.template('basepage')
-    form_fields = grok.AutoFields(IDocument)
     pnav = 2
+
+    @property
+    def form_fields(self):
+        return grok.AutoFields(self.context.form_fields_interface)
 
     @property
@@ -161,8 +165,7 @@
     """ View to manage document data
     """
-    grok.context(IDocument)
+    grok.context(IPublicDocument)
     grok.name('manage')
     grok.require('waeup.manageDocuments')
-    form_fields = grok.AutoFields(IDocument).omit('document_id')
     grok.template('documentmanagepage')
     pnav = 2
@@ -171,4 +174,8 @@
     tabtwoactions1 = [_('Remove selected local roles')]
     tabtwoactions2 = [_('Add local role')]
+
+    @property
+    def form_fields(self):
+        return grok.AutoFields(self.context.form_fields_interface)
 
     def label(self):
Index: /main/waeup.ikoba/trunk/src/waeup/ikoba/documents/browser_templates/containermanagepage.pt
===================================================================
--- /main/waeup.ikoba/trunk/src/waeup/ikoba/documents/browser_templates/containermanagepage.pt	(revision 12213)
+++ /main/waeup.ikoba/trunk/src/waeup/ikoba/documents/browser_templates/containermanagepage.pt	(revision 12214)
@@ -1,61 +1,32 @@
 <form action="." tal:attributes="action request/URL"
   i18n:domain="waeup.ikoba" method="POST" enctype="multipart/form-data">
-  <ul class="tabs nav nav-tabs" data-tabs="tabs">
-    <li class="active">
-    <a href="#tab1" data-toggle="tab">
-      <span i18n:translate="">Settings
-      </span></a>
-    </li>
-    <li>
-    <a href="#tab2" data-toggle="tab">
-      <span i18n:translate="">Documents
-      </span> </a>
-    </li>
-  </ul>
-  <div class="tab-content">
-    <div id="tab1" class="active tab-pane">
-      <table class="form-table">
-        <tbody>
-          <tal:widgets content="structure provider:widgets" />
-        </tbody>
-      </table>
-      <div tal:condition="view/availableActions">
-        <span tal:repeat="action view/actions" tal:omit-tag="">
-          <input tal:condition="python:action.label in view.taboneactions"
-                 tal:replace="structure action/render"/>
-        </span>
-      </div>
-    </div>
-    <div id="tab2" class="tab-pane">
-      <h3 i18n:translate="">Documents</h3>
-      <table class="ikoba-data-table dataTableManage">
-        <thead>
-          <tr>
-            <th>&nbsp;
-            </th>
-            <th i18n:translate="">Document Id
-            </th>
-            <th i18n:translate="">Title
-            </th>
-          </tr>
-        </thead>
-        <tbody>
-          <tr tal:repeat="doc context/values"> <td>
-              <input type="checkbox" name="val_id"
-                     tal:attributes="value doc/document_id" /> </td> <td>
-              <a tal:attributes="href python: view.url(doc)"
-                 tal:content="doc/__name__"> ID</a> </td> <td>
-              <span tal:content="doc/title">TITLE
-              </span> </td>
-          </tr>
-        </tbody>
-      </table>
-      <div tal:condition="view/availableActions">
-        <span tal:repeat="action view/actions" tal:omit-tag="">
-          <input tal:condition="python:action.label in view.tabtwoactions"
-                 tal:replace="structure action/render"/>
-        </span>
-      </div>
-    </div>
+  <h3 i18n:translate="">Documents</h3>
+  <table class="ikoba-data-table dataTableManage">
+    <thead>
+      <tr>
+        <th>&nbsp;
+        </th>
+        <th i18n:translate="">Id</th>
+        <th i18n:translate="">Title</th>
+        <th i18n:translate="">Type</th>
+        <th i18n:translate="">State</th>
+      </tr>
+    </thead>
+    <tbody>
+      <tr tal:repeat="doc context/values"> <td>
+          <input type="checkbox" name="val_id"
+                 tal:attributes="value doc/document_id" /> </td> <td>
+          <a tal:attributes="href python: view.url(doc)"
+             tal:content="doc/__name__"> ID</a> </td>
+          <td tal:content="doc/title">TITLE</td>
+          <td tal:content="doc/translated_class_name">CLASSNAME</td>
+          <td tal:content="doc/translated_state">STATE</td>
+      </tr>
+    </tbody>
+  </table>
+  <div tal:condition="view/availableActions">
+    <span tal:repeat="action view/actions" tal:omit-tag="">
+      <input tal:replace="structure action/render"/>
+    </span>
   </div>
 </form>
Index: /main/waeup.ikoba/trunk/src/waeup/ikoba/documents/browser_templates/containerpage.pt
===================================================================
--- /main/waeup.ikoba/trunk/src/waeup/ikoba/documents/browser_templates/containerpage.pt	(revision 12213)
+++ /main/waeup.ikoba/trunk/src/waeup/ikoba/documents/browser_templates/containerpage.pt	(revision 12214)
@@ -6,6 +6,8 @@
   <thead>
     <tr>
-      <th i18n:translate="">Document Id</th>
+      <th i18n:translate="">Id</th>
       <th i18n:translate="">Title</th>
+      <th i18n:translate="">Type</th>
+      <th i18n:translate="">State</th>
     </tr>
   </thead>
@@ -13,6 +15,9 @@
     <tr tal:repeat="value context/values">
       <td> <a tal:attributes="href python: view.url(value)">
-          <span tal:content="value/document_id">ID</span></a></td>
+          <span tal:content="value/document_id">ID</span></a>
+      </td>
       <td tal:content="value/title">TITLE</td>
+      <td tal:content="value/translated_class_name">CLASSNAME</td>
+      <td tal:content="value/translated_state">STATE</td>
     </tr>
   </tbody>
Index: /main/waeup.ikoba/trunk/src/waeup/ikoba/documents/browser_templates/documentaddform.pt
===================================================================
--- /main/waeup.ikoba/trunk/src/waeup/ikoba/documents/browser_templates/documentaddform.pt	(revision 12214)
+++ /main/waeup.ikoba/trunk/src/waeup/ikoba/documents/browser_templates/documentaddform.pt	(revision 12214)
@@ -0,0 +1,26 @@
+<form action="." tal:attributes="action request/URL" method="post"
+      enctype="multipart/form-data" i18n:domain="waeup.ikoba">
+  <table class="form-table">
+    <tbody>
+      <tr>
+        <td class="fieldname">
+          <span i18n:translate="">Document Type</span>:
+        </td>
+        <td>
+          <select id="doctype" name="doctype" size="1"
+                  class="form-control half">
+            <option tal:repeat="item view/selectable_doctypes"
+                    tal:attributes="value python:item[0]">
+              <span tal:replace="python:item[1]">DOCTYPE</span>
+            </option>
+          </select>
+        </td>
+      </tr>
+    </tbody>
+  </table>
+  <div tal:condition="view/availableActions">
+    <input tal:repeat="action view/actions"
+           tal:replace="structure action/render"
+           />
+  </div>
+</form>
Index: /main/waeup.ikoba/trunk/src/waeup/ikoba/documents/document.py
===================================================================
--- /main/waeup.ikoba/trunk/src/waeup/ikoba/documents/document.py	(revision 12213)
+++ /main/waeup.ikoba/trunk/src/waeup/ikoba/documents/document.py	(revision 12214)
@@ -49,4 +49,6 @@
     grok.baseclass()
 
+    form_fields_interface = None
+
     local_roles = [
         'waeup.local.DocumentManager',
@@ -56,4 +58,5 @@
     state = None
     translated_state = None
+    translated_class_name = None
 
     def __init__(self):
@@ -117,4 +120,12 @@
             return
 
+    @property
+    def translated_class_name(self):
+        try:
+            DOCTYPES_DICT = getUtility(IDocumentsUtils).DOCTYPES_DICT
+            return DOCTYPES_DICT[self.class_name]
+        except KeyError:
+            return
+
 
 class PDFDocument(PublicDocumentBase):
@@ -124,4 +135,6 @@
     grok.provides(IPDFDocument)
 
+    form_fields_interface = IPDFDocument
+
 PDFDocument = attrs_to_fields(PDFDocument)
 
@@ -133,20 +146,7 @@
     grok.provides(IHTMLDocument)
 
+    form_fields_interface = IHTMLDocument
+
 HTMLDocument = attrs_to_fields(HTMLDocument)
-
-
-class DocumentFactory(grok.GlobalUtility):
-    """A factory for documents.
-    """
-    grok.implements(IFactory)
-    grok.name(u'waeup.PublicDocument')
-    title = u"Create a new public document.",
-    description = u"This factory instantiates new public documents."
-
-    def __call__(self, *args, **kw):
-        return PublicDocument(*args, **kw)
-
-    def getInterfaces(self):
-        return implementedBy(PublicDocument)
 
 
Index: /main/waeup.ikoba/trunk/src/waeup/ikoba/documents/interfaces.py
===================================================================
--- /main/waeup.ikoba/trunk/src/waeup/ikoba/documents/interfaces.py	(revision 12213)
+++ /main/waeup.ikoba/trunk/src/waeup/ikoba/documents/interfaces.py	(revision 12214)
@@ -44,4 +44,5 @@
         'Returns a translated, more verbose verification state of a document')
     class_name = Attribute('Name of the document class')
+    translated_class_name = Attribute('Translatable class name')
     formatted_transition_date = Attribute('Last transition formatted date string')
     user_id = Attribute('Id of a user')
Index: /main/waeup.ikoba/trunk/src/waeup/ikoba/documents/utils.py
===================================================================
--- /main/waeup.ikoba/trunk/src/waeup/ikoba/documents/utils.py	(revision 12213)
+++ /main/waeup.ikoba/trunk/src/waeup/ikoba/documents/utils.py	(revision 12214)
@@ -22,5 +22,5 @@
 from waeup.ikoba.interfaces import (
     CREATED, SUBMITTED,
-    VERIFIED, REJECTED, EXPIRED)
+    VERIFIED, REJECTED, EXPIRED, PUBLISHED)
 from waeup.ikoba.documents.interfaces import IDocumentsUtils
 
@@ -31,5 +31,5 @@
 
 
-class DocumentssUtils(grok.GlobalUtility):
+class DocumentsUtils(grok.GlobalUtility):
     """A collection of methods subject to customization.
     """
@@ -38,7 +38,11 @@
     TRANSLATED_DOCUMENT_STATES = {
         CREATED: _('created'),
-        SUBMITTED: _('submitted for verification'),
-        VERIFIED: _('verified'),
-        REJECTED: _('rejected'),
-        EXPIRED:_('expired')
+        PUBLISHED:_('published')
         }
+
+    DOCTYPES_DICT = {
+        'PDFDocument': _('PDF Document'),
+        'HTMLDocument': _('HTML Document'),
+        }
+
+    SELECTABLE_DOCTYPES_DICT = DOCTYPES_DICT
