Published on

For use on a contentDM UI project. For custom collections management design contact us at

Published in: Technology
  • Be the first to comment


  1. 1. CONTENTdm Extensions Terry Reese 541-737-6384 [email_address] Slides:
  2. 2. Understanding the rules <ul><li>You have to work within CONTENTdm’s application framework, i.e.: </li></ul><ul><ul><li>CONTENTdm’s indexes can only be easily accessed via an .exe in the CGI-BIN so the OAI is your friend </li></ul></ul><ul><ul><li>That nearly all data is stored in plain text files and are accessible via http/file level access </li></ul></ul><ul><ul><ul><li>Examples: </li></ul></ul></ul><ul><ul><ul><ul><li>Project Configuration Files: </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Vocab. Files: </li></ul></ul></ul></ul><ul><ul><li>In general, all data not within a results grid can be easily customized using javascript </li></ul></ul>
  3. 3. Retrieving Data: OAI & the CONTENTdm API <ul><li>Two primary methods for accessing collection data dynamically within CONTENTdm: </li></ul><ul><ul><li>API </li></ul></ul><ul><ul><ul><li>Example: queryget.exe </li></ul></ul></ul><ul><ul><ul><li>Usage Example: </li></ul></ul></ul>
  4. 4. Retrieving Data: OAI & the CONTENTdm API <ul><li>Two primary methods for accessing collection data dynamically within CONTENTdm: </li></ul><ul><ul><li>OAI </li></ul></ul><ul><ul><ul><li>Retrieves all Dublin Core tagged Fields </li></ul></ul></ul><ul><ul><ul><li>Retrieves data as simple Dublin Core </li></ul></ul></ul><ul><ul><ul><li>Example: </li></ul></ul></ul><ul><ul><ul><ul><li> </li></ul></ul></ul></ul>
  5. 5. Examples: E-Commerce Extension <ul><li>E-commerce extension: </li></ul><ul><ul><li>What it does: </li></ul></ul><ul><ul><ul><li>Allows institutions to implement a shopping cart feature with CONTENTdm </li></ul></ul></ul><ul><ul><ul><li>Provides patrons with a printout receipt of their orders </li></ul></ul></ul><ul><ul><ul><li>Provides staff with an html encoded email with links into the CONTENTdm collection to eliminate confusion regarding staff requests </li></ul></ul></ul><ul><ul><ul><li>Provides a method to potentially allow online billing of documents </li></ul></ul></ul><ul><ul><ul><ul><li>Method will vary from institution to institution based on their business offices rules and practices </li></ul></ul></ul></ul>
  6. 6. Examples: E-Commerce Extension <ul><li>E-commerce extension: </li></ul><ul><ul><li>How it works: </li></ul></ul><ul><ul><ul><li>Modifications to the global.js script to: </li></ul></ul></ul><ul><ul><ul><ul><li>Insert shopping cart buttons in the item & results windows </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Add Cookie parsing and Packing functions </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>The script uses the same cookie as the My Favorites functionality, allowing the Shopping Cart to import data from the My Favorites list. </li></ul></ul></ul></ul></ul><ul><ul><ul><li>Creation of two php scripts: </li></ul></ul></ul><ul><ul><ul><ul><li>mycart.php (handles the data retrieval submission form generation) </li></ul></ul></ul></ul><ul><ul><ul><ul><li>request.php (generates & emails this request – also provides the fork point for online payment if available) </li></ul></ul></ul></ul>
  7. 7. Examples: E-Commerce Extension <ul><li>E-Commerce extension: </li></ul><ul><ul><li>Data flow: </li></ul></ul><ul><ul><ul><li>Patron clicks on shopping cart link to pack CISOPTR into the cookie. </li></ul></ul></ul><ul><ul><ul><li>Patron clicks on “order prints” link to generate the request form. </li></ul></ul></ul><ul><ul><ul><li>Request form (mycart.php) generates an OAI request for each item and extracts the necessary data required to generate the print/email request. </li></ul></ul></ul><ul><ul><ul><li>Patron enters data & submits data – receipt is generated and user is given one last opportunity to verify data. </li></ul></ul></ul><ul><ul><ul><li>Submits data – Email is sent to staff which fill the request. </li></ul></ul></ul>
  8. 8. Examples: E-Commerce Extension <ul><li>E-Commerce extension: </li></ul><ul><ul><li>Example (Demo here): </li></ul></ul><ul><ul><ul><li> </li></ul></ul></ul>
  9. 9. Examples: RSS Generator <ul><li>RSS Feed Generator </li></ul><ul><ul><li>Probably the most widely used CONTENTdm extension in our library. </li></ul></ul><ul><ul><li>Used by: </li></ul></ul><ul><ul><ul><li>Librarians to track individual collection or topical growth within collections. </li></ul></ul></ul><ul><ul><ul><li>Managers (like myself) as a review tool to keep track of items as they change and check resulting metadata. </li></ul></ul></ul>
  10. 10. Examples: RSS Generator <ul><li>RSS Feed Generator </li></ul><ul><ul><li>How it works: </li></ul></ul><ul><ul><ul><li>Uses OAI for data retrieval </li></ul></ul></ul><ul><ul><ul><ul><li>OAI is called using date limiters that can be specified by the user </li></ul></ul></ul></ul><ul><ul><ul><li>SAXON for XSLT parsing </li></ul></ul></ul><ul><ul><ul><ul><li>This allows the OAI to be pre-processed to Qualified Dublin Core and then processed against a users processing instructions. Using XSLT, the user can: </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>Query items with specific keywords </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>Query items with specific creators/titles </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>Query items with a combination of criteria – XSLT step simply allows script to produce queries using a level of granularity that isn’t available in OAI. </li></ul></ul></ul></ul></ul><ul><ul><ul><li>RSS Feed reader to display results </li></ul></ul></ul>
  11. 11. Examples: RSS Generator <ul><li>RSS Feed Generator </li></ul><ul><ul><li>Example: </li></ul></ul><ul><ul><ul><li>Within Bloglines </li></ul></ul></ul><ul><ul><ul><ul><li>Example </li></ul></ul></ul></ul><ul><ul><ul><li>As a simple link </li></ul></ul></ul><ul><ul><ul><ul><li> </li></ul></ul></ul></ul>
  12. 12. Things I’d like to see or am working on <ul><li>An Open-Source Acquisitions client built in Java (so it can be run on Linux and customized for specific workflows </li></ul><ul><li>Open Source Multi-Site server solution </li></ul><ul><li>True OBDC driver to access CONTENTdm database natively within scripts </li></ul><ul><li>More folks developing and sharing their development. </li></ul>
  13. 13. Going Further: Embedding Rights Management <ul><li>Rights management example – how it works: </li></ul><ul><ul><li>Generate a wrapper .exe for the CONTENTdm display exe. </li></ul></ul><ul><ul><li>Embed rights management metadata into individual items </li></ul></ul><ul><ul><li>Have the wrapper pre-process requests on the server, pulling data from CONTENTdm using the OAI. </li></ul></ul><ul><ul><li>Example screenshots: </li></ul></ul><ul><ul><ul><li>Metadata ( ) </li></ul></ul></ul><ul><ul><ul><li>Display ( ) </li></ul></ul></ul><ul><ul><li>For more information, feel free to contact me. </li></ul></ul>