Skip to main content

Provides content types for creating and organizing personnel directories within educational institutions. Integrates with Plone's users and groups infrastructure and supports an extensibility framework for custom requirements.

Project description

Version History

' ' 2.1.3 -- ' '

* Fixed the overzealous user search
[ems174 (Eric Steele)]

* Revised workflow for Persons. Visibility and membership behavior can
now be controlled independently.
[cah190 (Craig Haynal)]

* Fixed an umlaut crash
[ems174 (Eric Steele)]

* Fixed some ReferenceBrowserWidget behavior when running behind a web
server (
[cah190 (Craig Haynal)]

* Added Turkish translation

* Brought translation infrastructure up to date
[ewr119 (Erik Rose)]

* Corrected the permission needed to manage personnel

* Described the permissions implementations of the Personal
Assistant(s) field (
[ewr119 (Erik Rose)]

* Wrapped example extender in egg packaging and renamed it.
[ewr119 (Erik Rose)]

* Fixed syntax error in the French translation.
[ewr119 (Erik Rose)]

* Included compiled (.mo) versions of all translations.
[ewr119 (Erik Rose)]

* Fix the getClassificationNames index method so that it doesn't
throw an error trying to concatenate a function and an int, also
make sure the method works in 3.2 and 3.3
[cqp5087 (claytron)]

* Remove and use setuptools svn integration instead
[cqp5087 (claytron)]

' ' 2.1.2 -- ' '

* Corrected a problem with the reference browser widget popup not
displaying available items when used on a site using virtual
hosting. [ems174 (Eric Steele)]

' ' -- ' '

* Corrected a problem with missing files in the 2.1.1 distribution.
[ems174 (Eric Steele)]

' ' 2.1.1 -- ' '

* Corrected a problem with that caused errors
when anonymous users viewed a person with an assistant
assigned. [cewing]

* Corrected a problem that prevented versioning of Persons and
Committees. [cewing]

* Added a dedicated Committees Folder view (similar to the
specialies folder view). [ajung]

* A Specialty has an extra schemata "Overview" with an image and
richtext field. Both fields are used for the
speciality_overview view. [ajung]

* Added microformats for person_view's address block. [robzonenet]

* Added Spanish translation [Gildardo Bautista]

* Added French translation [Benjamin Klups]

* List department in person_view [Gildardo Bautista]

* Corrected a problem with viewing departments located outside
of a Directory object. [ems174 (Eric Steele)]

' ' 2.1 -- ' '

* Corrected some CSS display issues with Person pictures.

* Users with the Personnel Manager role can now add Person

* Added a field to the classification gallery view to control
the width of the Person images

* Multiple FacultyStaffDirectory objects can now exist in the
same site

* Improved product reinstallation performance

* Added an assistant field to confer profile editing delegation
on other users

* Added a "can manage personnel" field to the sharing tab

* Added i18n hooks for all fields and templates

* Removed a boatload of unused imports

* Removed WebLionLibrary dependency

* Eggified product

* Configlet icon should now work properly in
VirtualHostMonstered sites

* vCard should handle unicode characters properly now

* vCard images now display

* Empty biographies stay empty

' ' 2.0 -- ' '

* Added an A-to-Z listing view for Directories and Departments.

* Forced Previous/Next display in the Person editor.

* Bug fixes

' ' 2.0a1 -- ' '

* Integrated with Plone users and groups.

* Switched extensibility framework to archetypes.schemaextender.
More than one extender works at once now, and all content
types are extensible.

* Added Department content type.

* Sortable Name is now available as a SmartFolder index (mainly
for sorting).

* Added SmartFolder fields for Departments, Classifications,
Committees, Specialties, and People.

* Templates are faster.

* Non-ASCII characters in Person titles work.

* People now have a Middle Name field.

* Specialties and other types of person groups can now live
outside the Faculty/Staff Directory.

* Specialties are now listed in a sane order.

* Committees Folders are now addable within Departments.

* Added a configlet in Site Setup to allow customization of
phone number and user ID validation as well as the ability
to disable aspects of membrane integration.

* Silenced some deprecation warnings.

* Added support for Plone 3's versioning.

* Renamed content types to avoid collisions with other products.

* Added oodles of new tests.

* Ditched ArchGenXML, making our code much cleaner.

* Made more use of GenericSetup.

' ' 1.0.1 -- Minor documentation tweaks

' ' 1.0 -- Initial release


FacultyStaffDirectory is a personnel directory, a provider of shared
workspaces for committees, a way of keeping track of people's areas of
expertise, a floor wax, and a dessert topping. It integrates with Plone's
users and groups infrastructure and supports an extensibility framework for
custom requirements.


Everything you need is included with the product bundle:

* Products.Relations

* Products.membrane

* archetypes.schemaextender

* If you're using Plone 2.5.x, the branch of Archetypes available via
Subversion at
(If you're using Plone 3.x, the 1.5.x version that comes with it is fine.)


FacultyStaffDirectory works with Plone 2.5.x and 3.x, though the
installation instructions differ. For each version of Plone, there are a few
choices of installation method, depending on how your Zope instance was
installed and on your personal preferences.

Plone 2.5

Buildout (recommended)

1. Add the following to buildout.cfg::

parts =
. . .(other parts). . .
eggs =
. . .(other eggs). . .
archetypes.schemaextender == 1.0

recipe = infrae.subversion
urls = Archetypes
svn:// Five

recipe = infrae.subversion
urls = FacultyStaffDirectory membrane

. . .(other instance configuration). . .
products =
. . .(other product locations). . .

2. Re-run buildout (typically 'bin/buildout').

2. Restart Zope.

3. Install the FacultyStaffDirectory product using
portal_quickinstaller or the Plone Add/Remove Products tool
under Site Setup. The necessary dependencies will install
themselves automatically.

You will see a number of warnings about Syntax Errors. These may be
safely ignored, as they are the result of a problem in setuptools, not
the FacultyStaffDirectory product.


1. Install the dependencies:

1. Put membrane and Relations (included) into your Products

2. Put the included copy of Archetypes into your Products

3. Install archetypes.schemaextender:

1. Open the archetypes.schemaextender-1.0 folder (included)
and find the "archetypes" folder within.

2. Place the archetypes folder in the lib/python folder
within your Zope instance.

2. Put FacultyStaffDirectory into your Products folder.

3. Restart Zope.

4. Install the FacultyStaffDirectory product using
portal_quickinstaller or the Plone Add/Remove Products tool
under Site Setup. The dependencies that need to be installed
will install themselves automatically.

Plone 3.x

Buildout (recommended)

1. Add the following to buildout.cfg::

eggs =
. . .(other eggs). . .

2. Re-run buildout (typically 'bin/buildout').

2. Restart Zope (typically 'bin/instance restart').

3. Install the FacultyStaffDirectory product using
portal_quickinstaller or the Plone Add/Remove Products tool
under Site Setup. The necessary dependencies will install
themselves automatically. (Membrane remains in the 'available'
column, but is in fact installed.)

Egg-based without buildout

1. If you're using a non-buildout Plone installation, use
easy_install to install Products.FacultyStaffDirectory.
Dependencies will be installed automatically.

2. Restart Zope (typically 'bin/instance').

3. Install the FacultyStaffDirectory product using
portal_quickinstaller or the Plone Add/Remove Products tool
under Site Setup. The necessary dependencies will install
themselves automatically. (Membrane remains in the 'available'
column, but is in fact installed.)


Don't do this if you can help it.

1. Install the dependencies:

1. Put membrane and Relations (included) into your Products

2. Install archetypes.schemaextender in the following disgusting

1. Find the "archetypes" folder, somewhere in your Zope
instance (lowercase "a", not uppercase "A"). It's often
in lib/python and should have a "kss" folder in it. On
Windows, it's at C:\Program Files\Plone

2. Put the
folder (included) into the archetypes folder.

2. Put FacultyStaffDirectory into your Products folder.

3. Restart Zope.

4. Install the FacultyStaffDirectory using portal_quickinstaller or
the Plone Add/Remove Products tool under Site Setup. The
dependencies that need to be installed will install themselves
automatically. (Membrane remains in the 'available'
column, but is in fact installed.)


To upgrade from 2.0, just follow the installation instructions above.

To upgrade from 1.x, use the migration script in the Extensions folder of
FacultyStaffDirectory. Follow the instructions inside To perform the migration under Plone 3, you'll need
the "contentmigration product":

Using FacultyStaffDirectory

Adding a Faculty/Staff Directory

From the "add" dropdown menu in Plone, select "Faculty/Staff Directory".
A Faculty/Staff Directory will be created as well as several default
items inside:

* Faculty (a Classification)

* Staff (a Classification)

* Graduate Students (a Classification)

* Committees (a Committees Folder, which can hold only Committees)

* Specialties (a Specialties Folder, which can hold only Specialties)

Any or all of these default items may be safely deleted as needed.

Working with your directory

FacultyStaffDirectory provides content types for creating and organizing
details of people. It has principally been developed for personnel
directories in educational institutions but can be repurposed for use in
a variety of settings.

The core content type is Person. This has a variety of fields (email,
telephone number, job title, and so on). You can also easily add your

Out of the box, FacultyStaffDirectory offers 3 Classifications that can
be assigned to Person objects: Faculty, Staff and Graduate Student. If
these don't work for you, you can add your own Classifications (e.g.
Administrators, Technicians, Board Members, or whatever you like).

FacultyStaffDirectory also provides several content types for grouping
people: Departments, Specialties and Committees. If these labels don't
make sense in your organization, you can easily relabel them. In each
case, the association between the Person and the grouping (e.g. the
Person-Specialty relationship) can be given a description. So, for
example, if Person Jane Doe is in the Artificial Intelligence Specialty,
you could give the Jane Doe-Artificial Intelligence relationship a
description (e.g. "Interested in the cultural impacts of machine

FacultyStaffDirectory can be configured so people added to the directory
automatically become Members of your Plone site and each person can edit
his or her own page. It also adds some new roles, to facilitate
management of people. For instance, the PersonnelManager role can create
new Specialties and assign people to them.

Membership integration

Out of the box, FacultyStaffDirectory offers the following integration
with Plone users and groups:

The Faculty/Staff Directory itself acts as a group. -- ' '

All Person objects created in the Faculty/Staff Directory are
automatically considered members of this group. This group also
provides the option of assigning a global role to all Persons in
the Directory. This option should be handled with care. It is
generally best to select only the 'Member' role, as this is the
most restrictive option.

Departments, Classifications and Committees act as groups. -- ' '

Global role assignment is not available for these content types,
but the groups they define may be granted local roles throughout
the Plone site. For complex academic units, this can be a great
time-saver, since personnel management can be tied closely to site
security management.

Person objects act as users. -- ' '

The Faculty/Staff Directory configlet in Site Setup allows you to
choose whether Person objects provide passwords for
authentication. If you are using some other PAS plugin for
authentication, such as PloneLDAP, WebServerAuth, PubcookiePAS or
CAS4PAS, you will want to disable password provision so that
authentication will cascade to these other systems.

Users defined by Person objects are automatically granted the Owner role
locally for that object and its contents. This allows users to add to
and edit their own biographies, contact information, etc. They also
control sharing rights to their object and can thus allow assistants to
edit content on their behalf without sharing their own passwords or user

The 'My Folder' action, found on the personal toolbar, is altered by the
Faculty/Staff Directory product to take users defined by Person objects
directly to them. Users defined through the standard Plone UI will be
taken to the usual location (portal/Members/<userid>). Likewise, the
personal preferences link found in the personal toolbar and on the
plone_memberprefs_panel or dashboard will take Person users to their
Person objects.

Owners are not granted the rights to add or remove their Person object
from Departments, Committees, Classifications and Specialties, since
these collections are used as authorization groups. Instead, this right
is reserved for site managers and for the newly-created 'Personnel
Manager' role, installed with the Faculty/Staff Directory product. The
Personnel Manager is likewise not granted access to the ZMI or to
personal preferences for Persons. This allows for fine-grained
separation of management concerns.

Membership integration for Person, Department, Classification and
Committee objects is configurable. A switch to turn the function on or
off is in the Faculty/Staff Directory configuration panel in Site Setup.
It may be necessary to disable membership integration for Person objects
in systems that have established user bases built on LDAP systems, for

Configuring the product

Several global settings, such as phone number and user ID formats, can
be controlled through the Faculty/Staff Directory configuration panel
within Site Setup.


Because every organization has a few unique requirements,
FacultyStaffDirectory supports an extension mechanism based on the
archetypes.schemaextender library. Using it, you can write plugin
products which add fields to or otherwise modify our content types. For
an example, see the FacultyStaffDirectoryExtender product and
"its readme":

Design Rationale & Thoughts

Why the push for just one Directory in a site? Why not just add people to Departments? -- ' '

The main thought behind this was that People could be members of
multiple departments (i.e., faculty member John Smith teaches courses in
both MSIS and Computer Science). So where do we put the Person object?
We'd like to refrain from making two Persons if possible, and the
alternative of making a Department both a container and a referenced
object could be nightmarish.

Why add membrane? -- ' '

We wanted a relatively simple way to let members modify their own
profiles. With membrane, we get that right out of the box since that
profile *is* the member. We also get nifty groups like "Faculty" and
"Chemistry Department" and "Some Useless Committee".

How do I manage People across multiple Plone sites? -- ' '

We wish we knew. We suspect it will have something to do with LDAP.

Future Plans

See the "3.0 roadmap":

Possible Gotchas

Skinning plone 2.5.x with DIYPloneStyle 2.5

The implementation of Generic Setup installation in DIYPloneStyle 2.5
fails to include non-standard skin layers in its skins. Please note
that installing a skin product built with this version will cause
skin-based functionality in FSD to break and may cause site-wide
template errors due to missing skin layers from the relations product.
You can fix these problems by manually adding the layers
'FacultyStaffDirectory', 'relations', and 'relations_images' to any
skins defined in ZMI &rarr; plone &rarr; portal_skins &rarr; properties.


This product was developed by the WebLion group at Penn State University.

membrane integration by Cris Ewing at the University of Washington.

Special thanks to Andreas Jung for his early testing, code contributions,
and reminding us that, yes, people do live outside the United States.


* Report bugs to the "WebLion issue tracker":

* More documentation:

* Contact us::

WebLion Project Team
Penn State University
304 The 300 Building
University Park, PA 16802


Copyright (c) 2006-2008 The Pennsylvania State University. WebLion is
developed and maintained by the WebLion Project Team, its partners, and
members of the Penn State Zope Users Group.

This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the Free
Software Foundation; either version 2 of the License, or (at your option)
any later version.

This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
more details.

You should have received a copy of the GNU General Public License along with
this program; if not, write to the Free Software Foundation, Inc., 59 Temple
Place, Suite 330, Boston, MA 02111-1307 USA.

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for Products.FacultyStaffDirectory, version 2.1.3
Filename, size File type Python version Upload date Hashes
Filename, size Products.FacultyStaffDirectory-2.1.3-py2.4.egg (365.2 kB) File type Egg Python version 2.4 Upload date Hashes View
Filename, size Products.FacultyStaffDirectory-2.1.3.tar.gz (153.5 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page