Third Party Product Integration: ATVocabularyManager

by Jens W. Klein last modified Dec 30, 2008 03:04 PM
ATVocabularyManager is a product for letting site managers define vocabularies for fields through-the-web or by import from XML files. ArchGenXML can generate the necessary code to use this product.

ATVM manages dynamic vocabularies. It installs a tool, where a site Manager can add, change and delete vocabularies. These vocabularies can then be used anywhere on the site.

You can download ATVocabularyManager from the Plone.org products area: "http://plone.org/products/atvocabularymanager":/products/atvocabularymanager

Using simple flat vocabularies

Adding ATVM-vocabs to your UML model is quite easy.

1. Add a selection or multiselection field to your type.

2. Add a tag 'vocabulary:name' and give it a name, let's say 'countries'

3. Add a tag 'vocabulary:type' with the value 'ATVocabularyManager'

We are now finished with the UML. Save it and let AGX do the work. What still is missing, is to install the countries vocabulary. Therefore:

* Add a file called 'AppInstall.py' in the /Extensions folder of your product

* Add the following code (this sets up a vocabulary 'countries' with the given values, and registers it with ATVocabularyManager)::


from Products.ATVocabularyManager.config import TOOL_NAME as ATVOCABULARYTOOL
from Products.CMFCore.utils import getToolByName
from Products.ATVocabularyManager.utils import createSimpleVocabs

def install(self):
"""let's install the countries vocab"""

vocabs = {}
vocabs['countries'] = (
('ice', u'Iceland'),
('nor', u'Norway'),
('fin', u'Finland'),
('tyr', u'Tyrol'),
('auf', u'Ausserfern'),
)
portal=getToolByName(self,'portal_url').getPortalObject()
atvm = getToolByName(portal, ATVOCABULARYTOOL)
createSimpleVocabs(atvm, vocabs)

Using simple tree vocabularies

If youre interested in using and creating hierachical vocab:

* use additional tag 'vocabulary:vocabulary_type' with value 'TreeVocabulary',

* have a look at the doc-string of 'Products.ATVocabularyManager.utils.createHierarchicalVocabs'.

Using vocabularies based on the **IMS Vocabulary Definition Exchange** (VDEX) format.

"VDEX":http://www.imsglobal.org/vdex/index.html is a simple XML based format to define flat or hierachical multilingual vocabularies. ATVocabularyManager supports VDEX in most of its dialects.

To tell Archetypes to use them in your UML first take Steps 1 to 3 of the first section and skip the import part. Then add a tag 'vocabulary:vocabulary_type' and give it the value 'VdexVocabulary'.

Now add a folder called 'data' in your products folder. Inside the '/data' folder create a new file called 'countries.vdex' ("example":countries.vdex). It will be imported automatically on install or reinstall, but only if a vocabulary named countries does not exist.