Skip to main content

A country widget for Archetypes

Project description

A country widget for Archetypes

Adds a new tool, portal_countryutil to the Plone root, which lets you manage a list of areas which may contain several countries from the official ISO-country list via the ZMI. A complete list of areas and their countries is being created at install time.

Provides three widgets which you can use in your own Archetype:

CountryWidget

the areas and countries defined in the country tool are then rendered as a dropdown (with <optgroup>).

AreaWidget

provides a dropdown with all areas you have defined.

MultiCountryWidget

for use with LinesField, lets you select multiple countries

Examples

Here is some code that demonstrates how to use those widgets:

---- YourArcheType.py ----

# Import the widget/s:
from Products.ATCountryWidget.Widget import CountryWidget, AreaWidget

# Define the field/s in your schema:
[...]

 StringField(
    'country',
    validators=('isValidISOCountry',),
    widget=CountryWidget(label='Country',
                         provideNullValue=1,   # this is default
                         nullValueTitle='-',   # this is default
                         omitCountries=None,   # this is default, can be a
                                               # list of country codes which
                                               # are not displayed
                         description='Select a country')
 ),

[... and/or ...]

 StringField(
    'area',
    widget=AreaWidget(label='Area',
                      provideNullValue=1,      # this is default
                      nullValueTitle='-',      # this is default
                      description='Select an area')
 ),

[... and/or ...]

 LinesField(
    'countries',
    widget=MultiCountryWidget(label='Countries',
                         omitCountries=None,   # this is default, can be a
                                               # list of country codes which
                                               # are not displayed
                         description='Select countries')
 ),

[...]

Use without Archetypes

To use your countrylist in a custom page template outside of an Archetype (e.g. in a search form) you can directly use the API the country tool provides:

<select tal:define="countrytool here/portal_countryutils">
  <option>Choose...</option>
  <optgroup
      label="Western Europe"
      tal:repeat="area countrytool/listAreas"
      tal:attributes="label area/name">
    <option
      value="DE"
      tal:repeat="country area/countries"
      tal:content="country/name"
      tal:attributes="value country/isocc">Germany
    </option>
  </optgroup>
</select>

For more details on how to customize content-types, add custom fields to content-types, see Martin’s tutorial: http://plone.org/documentation/kb/richdocument/extending-atct

Changelog

2011-04-11
  • Release Plone 4 compat version

2009-02-21
  • Released as egg.

2006-04-19
  • Added patch from Norman H. Voss (missing country/rearranged default areas)

  • Updated README to cover MultiCountryWidget

2006-03-14
  • Added multiselect widget (MultiCountryWidget)

2005-09-02
  • Compatibility with Plone 2.1 (RC3)

2005-06-29
  • Added parameter ‘omitCountries’ to CountryWidget. Country ISO codes in this list are omitted from display in selection.

2005-02-20
  • added listing of languages and their two letter ISO codes

2004-08-30
  • release 0.2

  • added area-widget

  • provideNullValue & nullValue properties for widgets

  • creation of complete area-country structure in installer

  • migrated to AT 1.3 beta

2004-07-05
  • release 0.1.1

  • added validator

2004-06-29
  • initial release 0.1

Authors

Christian Zagrodnick (cz@gocept.com) Michael Howitz (mh@gocept.com) Daniel Havlik (dh@gocept.com)

Additional credits:

  • Norman H. Voss for a patch (04/2006)

  • Alex Clark for releasing Plone 4 compat version (from gocept trunk moved to the collective, 04/2011)

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page