Creating Communities – Denver Public Library

September 17th, 2010

Creating Communities - Denver Public Library

The Creating Communities Web site has been created for the Denver Public Library using Drupal and extended by the Zen theme engine, Apache Solr Search Integration and the eXtensible Catalog (XC) Drupal Toolkit.

Recently, Drupal has been strongly embraced at the Denver Public Library becoming the official CMS of choice. Other Colorado Libraries are also making serious commitments to Drupal because of its flexibility, support for XML, taxonomy, low cost of ownership and a great community that provides many modules that support library ambitions with actual working code.

The Western History & Genealogy Department, in partnership with the City of Denver, History Colorado, Auraria Library, and University of Denver Penrose Library has brought together a number of historic resources and digitized archival materials. The project is funded by a National Leadership Grant from the Institute of Museum and Library Services (IMLS).

We encourage you all to explore the site and learn more about the history of Denver.


  • Neighborhoods: We’ve digitized photographs, maps and documents from seven of Denver’s historic neighborhoods including Auraria, Barnum, Capitol Hill, Five Points, Park Hill, University Park and West Colfax. Each neighborhood highlights the people, places and events that shaped each neighborhood’s unique history.
  • Building Histories: Digging through all of the historical resources available to compile your house or building history can be a daunting task. We’ve mapped a number of resources such as Assessor Records and National and State Historic Buildings on a Google map to make your house or building history research a breeze. There are also tips on how to search photographs, maps and building permits. Plus we have digitized Householder Directories, City Directories and Denver Municipal Facts.
  • Collections: If you just feel like browsing around, we have a vast collection of digitized archival materials in the collections section.
  • myDenver: A place for you to share your Denver history – upload photographs and favorite stories, and engage in conversations to enrich your Denver community.
  • Creating Communities Mobile Application: The mobile version of the Creating Communities project will enable fans of Denver history to explore our 7 historic neighborhoods. More than just walking tours of Denver, the app features National and State Historic buildings from the Office of Archeology and Historic Preservation (OAHP) at History Colorado and historic photographs from the DPL Western History Digital Image Collection. Users of the Creating Communities app can contribute to the Creating Communities experience by adding comments, uploading photos and stories about the places and events featured in these neighborhoods. The app is available on iTunes and in the near future a mobile version of the Drupal site will become available.

Please stop by and explore the Web site and contribute to the myDenver section. We look forward to hearing your stories about Denver and sharing the history that has shaped this great city we call home!

Using Drupal as a Content Management System

Creating Communities Screenshot

Drupal was a perfect fit for this project because of its low cost, ease of use, quality APIs, vast collection of modules, community support and many other reasons.

Drupal 6.x was used given that software development started in October 2009 and the maturity of desired contributed modules.

Important Contributed Modules

* The XC Drupal Toolkit is a collection of contributed modules that are focused on providing integration with existing library systems such as the eXtensible Catalog and ContentDM. For the Creating Communities project, the XML harvesting capabilities were used to aggregate data from multiple digital asset management systems to provide data for a Drupal Apache Solr driven faceted search interface.

Custom modules

This project called for functionality that had yet to be created and resulted in custom Drupal module development. The following four modules were written for this project:

  1. Dublin Core to CCK: This module maps harvested Dublin Core XML data into Drupal CCK fields which allows data to be fully accessible, ordered and accessible to Apache Solr, Views etc.
  2. DPL Dublin Core Schema: provides the Dublin Core XML schema for Drupal to use.
  3. Popup Survey: This module was developed to prompt site visitors to participate in a survey at various times throughout browsing. It uses Lightbox2 to produce the prompt and assorted hooks/logic to determine when the user will be prompted.

Platform and Hosting

Oracle Solaris 10, MySQL 5.x, PHP 5.2x, Apache 2.x, Lucene Solr (Java Application), Jetty or Tomcat Java with Java Runtime Environment 6 and the eXtensible Catalog Drupal Toolkit.

Languages Used

PHP, SQL, XHTML, AJAX, CSS, JSON, XML, JavaScript, Flash (video).

JavaScript and jQuery

  • Lightbox2 jQuery plugin is used for the galleries and to display full size image.
  • JQuery slider is being used for the image carousel on the front page.
  • Drupal uses the jQuery library.


PHP resources include, PHP-CURL, Alternative PHP Cache with Upload Progress enabled and Drupal required resources.


  • OAI-PMH: The Open Archive Initiative Protocol for Metadata Harvesting specification is being used to harvest data from multiple digital asset managers.
  • Dublin Core: The chosen XML schema for ADR and ContentDM. This Schema is being used by the OAI Harvester to collect data from the digital repositories. The data is stored in the Solr search index and data from these fields are stored in Drupal CCK fields. The development team authored a custom Drupal module that makes the field mapping from DC XML fields to CCK fields possible.



The iterative project management approach was transparently implemented by the developer and used exclusively for the web site. Subsequently, the project workflow meshed very well with the content managers and other library staff. Content managers were able to contribute content to the web site during the entire process without interruption because of the planned iterative cycles. Meaning, a release candidate version of the web site was kept available without interruption during the entire project. Each iteration would add features to the release candidate instance after development and testing was completed using local instances. After collecting feedback from the completed iteration, more features were scheduled and the development of the next release candidate would begin after associated tasks were scheduled. The importance of this system was to make sure that the release candidate was always available for content management.

Content managers and archivists were issued credentials and a streamlined interface was used to add content. Revision control was implemented from the beginning as a means to control page editing and organize content development.

Project Management

A project management system was used to plan development iterations, record development hours and structure communication between the development team, content team and library management.

The iterative project management technique was implemented by the developer and the library to provide closer collaboration with the content management team, other library personel and other libraries.

A list of iterations were scheduled using the project management system. Features were listed with the iterations and tasks were assigned to feature requests as the iterations became current. The PM system also was an effective communication tool providing a system of comments and e-mail notifications to form structured conversation for everyone involved in the project. Managers found it easy to log-in and follow the project’s status in realtime which encouraged participation at all levels.


Subversion (SVN) was used through the software building process by the developers to insure organization, quality control, self documentation and other reasons inherit in source control management systems.

Collocated server

A collocated server was provided by the developer and functioned efficiently throughout the project. The server was used to run the release candidate web site that included the Apache Solr search index, database and PHP.

Graphic Design

All images were provided by the library and all theme development including CSS, XHTML, JavaScript and PHP was provided by the developer.

Custom Zen Sub-Theme

The Denver Public Library has chosen Zen as the official base theme which is currently being used for main web site Creating Communities is also using Zen and created a similar Zen sub-theme in an effort to maintain consistance in usability and branding.

The Creating Communities theme was exclusively created by the developer as a Zen sub-theme. It is important to note that all code written for this project complies to Drupal coding standards.

The custom theme has been tested against multiple browsers including Safari, Mobile Safari, Webkit, Chrome, Internet Explorer versions 7 and 8, and Firefox 3.x.

This sub-theme was created to maintain branding and a similar look and feel to the parent Denver Public Library web site

Custom Search Results

The search results have been customized in the theme layer to display thumbnails if available from the digital repositories and to provide an external link to the original content. Local Drupal content is mixed into the search results but may also link to external content as in the case of assessor record and OAHP search results.

Information Architecture

Assessor Records

All available assessor records have been imported into the Drupal database. Each assessor record is displayed as a pin on a google map that that is filtered by neighborhood. Each neighborhood has a link on the corresponding navigation. When the pin is clicked a popup bubble appears with the details of the record and a link to the original record that resides in ContentDM.

OAHP – Historic Buildings

All available records for the Office of Archeological and Historical Preservation historic buildings have been imported into the Drupal database. A map pin is generated per record on a google map. When the pin is clicked a map popup windows appears that contains record details and a link to the original record that contains more information.

Faceted Search Interface

The Drupal Apache Solr module is used to index all of the site content, provide filters based on content criteria by providing facets. The Solr index provides content inclusion or exclusion and weight and bias configuration bassed on content criteria. A Lucene Solr search index is utilized to provide a faster and more accurate search than Drupal’s core search module and relieves expense on the database resulting in a performance increase.

Harvested Data

Data is collected from multiple digital asset managers such as the Denver University Peak Digital Library Alliance Digital Repository (ADR) and OCLC’s ContentDM system and has the capability to harvest data from any OAI-PMH XML compliant systems. See the Open Archive Initiative for details.


The neighborhoods section contain informational pages about each neighborhood and a photo gallery. The lightbox2 jQuery image viewer is used to provide a timed slideshow that also offers manual advancement.


The myDENVER section is a collection of anonymous user generated content that consists of text and images. The purpose is to provide a means for neighborhood community members to provide stories, written histories and historical images that are significant for each neighborhood.

The users can flag content as inappropriate which notifies the content manager by e-mail and lists the post in a queue for review.

The Mollom module and service is used to protect against spam bot generated posts and offensive material based on content keywords and other heuristics.

The reCaptcha module also used to protect against script bot generated posts.

Find Out More

The Creating Communities project Web team is motivated to provide code, configuration details and other information about the project with other museum and library institutions interested in using similar technologies. Please contact the Western History and Genealogy Department at the Denver Public Library for more information.