drupal in libraries

57
Drupal in Libraries Cary Gordon, MLIS The Cherry Hill Company http://chillco.com

Upload: cary-gordon

Post on 08-May-2015

6.961 views

Category:

Technology


0 download

DESCRIPTION

Overview of Drupal for use in libraries

TRANSCRIPT

Page 1: Drupal in Libraries

Drupal in Libraries

Cary Gordon, MLISThe Cherry Hill Companyhttp://chillco.com

Page 2: Drupal in Libraries

Agenda

A short chat about Drupal

Modules (4849 at last count)

A brief library tour

Drupal as application framework

Drupal 7

Resources

Page 3: Drupal in Libraries

But First…The Cherry Hill Company

Library focused development and system integrationDeveloped the California State Library website Integrated and developed 24/7 Reference (now rolled into

OCLC’s QuestionPoint)Pre-Drupal, mostly ColdFusion and JavaWe provide a full range of support and development services

for Drupal in libraries.

Active in the local, US and World Drupal communities.Board member of the Drupal AssociationEvents Manger for Drupal events worldwideDrupal evangelistDrank the KoolAid

Page 4: Drupal in Libraries

Drupal is different

Free and Open Source

Simple – based on the blogging idiom

Content Management Framework

Designed to be a development platform

The hook system

Drupal CVS contributions

Page 5: Drupal in Libraries

A Small Corner of the CMS Universe

And about 1085 others (http://www.cmsmatrix.org/matrix)

Page 6: Drupal in Libraries

Drupal is designed bythe communityAbout 800

contributors to core

25 Maintainers

2 Core committers

Angela ByronDries Buytaert

http://cvs.drupal.org/viewvc.py/drupal/drupal/MAINTAINERS.txt?view=co

Page 7: Drupal in Libraries

Drupal is built…

Standing on the shoulders of…

Each other

Page 8: Drupal in Libraries

Drupal Principles Modular and extensible.  Drupal aims to provide a slim, powerful core that can be

readily extended through custom modules.

Quality coding.  High quality, elegant, documented code is a priority over roughed-in functionality.

Standards-based.  Drupal supports established and emerging standards.  Specific target standards include XHTML and CSS.

Low resource demands.  To ensure excellent performance, Drupal puts a premium on low-profile coding (for example, minimizing database queries).  Drupal should also have minimal, widely-available server-side software requirements.  Specifically, Drupal should be fully operational on a platform with a web server, PHP, and either MySQL or Postgresql.

Open source.  Drupal is based on the open source philosophy of collaborative free software development and is licensed under the GPL.  Drupal is itself open source and builds on and supports other open source projects.  Specifically, Drupal is coded in the open source scripting language PHP and supports as primary data sources the open source database formats MySQL and Postgresql.

Ease of use.  Drupal aims for a high standard of usability for developers, administrators, and users.

Collaboration.  Drupal development supports open, collaborative information sharing systems and approaches. http://drupal.org/principles

Page 9: Drupal in Libraries

Drupal LingoNode

Comment

Block

Page

Path

Taxonomy

Modules

Themes

Core

Contrib

Page 10: Drupal in Libraries

PresentationHelpersDrupalLAMP/???P

Drupal Technology Stack

Page 11: Drupal in Libraries

Best PracticesPlan your site.

Plan for the future.

Get involved in the community

Back up your site.

Test your PHP snippets.

Observe Drupal Programming Best Practices - http://drupal.org/node/287350

Use a version control system.

Keep your site up-to-date.http://drupal.org/best-practices (with a couple additions)

Page 12: Drupal in Libraries

You’ve been warned!Don’t use a Windows server and IIS

(unless you wear Kevlar socks)

Don't hack core

Don't hack core!

Page 13: Drupal in Libraries

Contributed Modules

4849 contrib modules in Drupal CVS

Little concrete information on what they do

Most start as solutions to specific problems

Also 570 contrib themes

Page 14: Drupal in Libraries

Cherry Hill module collection library for public library hosting (example)

acl customerror logintoboggan views_bulk_operations

admin_menu date nice_menus views_calc

advanced_help event nodeasblock views_groupby

backup_migrate extlink nodewords views_node_feed

better_formats faceted_search pathauto views_or

calendar fivestar securepages votingapi

captcha google_analytics service_links webform

cck image services workflow worldclock

cck_redirection imce taxonomy_access wysiwyg

checkbox_validate imce_wysiwyg token

computed_field legal views

content_access link views_bonus

We keep a collection of shared modules in our Subversion repository.

Page 15: Drupal in Libraries

Cherry Hill Drupal root dir (example)

lrwxrwxrwx 1 www-user apache 19 Jul 6 16:29 cron.php -> ../drupal6/cron.php

-rw-r--r-- 1 www-user apache 3964 Mar 19 2009 .htaccess

lrwxrwxrwx 1 www-user apache 19 Jul 6 16:29 includes -> ../drupal6/includes

lrwxrwxrwx 1 www-user apache 20 Jul 6 16:29 index.php -> ../drupal6/index.php

lrwxrwxrwx 1 www-user apache 22 Jul 6 16:29 install.php -> ../drupal6/install.php

lrwxrwxrwx 1 www-user apache 15 Jul 6 16:29 misc -> ../drupal6/misc

lrwxrwxrwx 1 www-user apache 18 Jul 6 16:29 modules -> ../drupal6/modules

lrwxrwxrwx 1 www-user apache 19 Jul 6 16:29 profiles -> ../drupal6/profiles

lrwxrwxrwx 1 www-user apache 21 Jul 6 16:29 robots.txt -> ../drupal6/robots.txt

lrwxrwxrwx 1 www-user apache 18 Jul 6 16:29 scripts -> ../drupal6/scripts

drwxrwxr-x 13 www-user apache 4096 Aug 6 18:10 sites

lrwxrwxrwx 1 www-user apache 17 Jul 6 16:29 themes -> ../drupal6/themes

lrwxrwxrwx 1 www-user apache 21 Jul 6 16:29 update.php -> ../drupal6/update.php

lrwxrwxrwx 1 www-user apache 21 Jul 6 16:29 xmlrpc.php -> ../drupal6/xmlrpc.php

Keeping the core Drupal installation in its own directory and symbolically linking to its files simplifies the process of maintaining it. New versions are put in the drupal6 directory and only the needed files and directories are linked in.

The sites directory is managed in subversion.

Page 16: Drupal in Libraries

Example sites

Page 17: Drupal in Libraries

Ann Arbor District Library

Page 18: Drupal in Libraries

Darien Library

Page 19: Drupal in Libraries

Darien Library

Page 20: Drupal in Libraries

Darien LibrarySOPAC 2

http://www.thesocialopac.net/

Millennium integration (Locum)

Locum is an abstraction layer between the ILS and Drupal

Page 21: Drupal in Libraries

Genesee Valley BOCES

Page 22: Drupal in Libraries

Genesee Valley BOCES

Page 23: Drupal in Libraries

Genesee Valley BOCES

Catalog

Research tools

Student resources

Teacher resources

System contributed & school contributed

Page 24: Drupal in Libraries

Genesee Valley BOCESUsing Drupal as a framework

Took everything that they could from contrib

Wrote the rest

sites/all/modules:

contrib:calendar jquery_calendar spellcheckercck jstools tagadeliccck_redirection linktaxonomy_super_selectcontemplate link_views_rss tinymcedate nodequeue user_importdevel panels viewsdirectory porterstemmer views_bonusfaceted_search prepopulate views_podcastfivestar refine_by_taxo votingapiimagecache search_config workflowimagefield similartermsjcarousellite slidebox

fish:bcckreview dedupe ez_amazonpathfindercustom details marc

Page 25: Drupal in Libraries

Idaho Commission for Libraries

Page 26: Drupal in Libraries

Troy Public Library

<http://troylibrary.info>

Page 27: Drupal in Libraries

Benicia Public Library - LLWIP

Page 28: Drupal in Libraries

Camerena Memorial Library - LLWIP

Page 29: Drupal in Libraries

Camerena Memorial Library - LLWIP

Page 30: Drupal in Libraries

North State Cooperative Library System

Page 31: Drupal in Libraries

Example applications

Page 32: Drupal in Libraries

California State University San Marcos

Page 33: Drupal in Libraries

California State University San MarcosDigital repository/archive

Intranet/Extranet

E-resource directory/manager

Ian Chan <[email protected]>

Page 34: Drupal in Libraries

California State University San Marcos

Page 35: Drupal in Libraries

SFU Library Thesis Assistant

Page 36: Drupal in Libraries

Simon Fraser University LibraryThesis Submission/Management

Replaces legacy submission app based on single CGI script and Excel files

Allows students to submit their theses, inc. PDF and supplemental files

Allows Library Thesis Office staff to Audit (i.e., approve) thesis Manage basic information about correspondence with student Manage “degree” records that contain details about

departments, programs, etc.

Allows Grad Records staff to get lists of students

Going live mid October

Mark Jordan <[email protected]>

Page 37: Drupal in Libraries

Albert R. Mann Library - Cornell

Page 38: Drupal in Libraries

Anchor Archive Zine Library

http://www.robertsstreet.org/n/searchinfieldsAmanda Stevens <[email protected]>

Page 39: Drupal in Libraries

Curation Tool

William Hayes <[email protected]>

Page 40: Drupal in Libraries

Curation Tool

Node import

CCK

Exhibit(using Josh Huckabee's tutorial - http://bit.ly/zv7LJ )

Allows us to import a spreadsheet of a lot of data and have very quick and powerful data filtering/visualization set up very quickly with the ability to curate the data at will which we did not have using Exhibit alone.  Of course, once it's set up, adding data manually is pretty easy and we also have the ability to programmatically add new data records.

William Hayes, PhD, Director of Decision Support, Biogen Idec<[email protected]>

Page 41: Drupal in Libraries

McMaster University Guides

http://library.mcmaster.ca/guides/

Page 42: Drupal in Libraries

Islandora

http://islandora.org/Module

Page 43: Drupal in Libraries

Drupal 7

Currently in code freeze:

Bug patches only

With a few exceptions

Release when it’s ready

Expanded automated test coverage should shorten cycle

#D7CX pledge http://bit.ly/121D6T - components ready on the day Drupal 7 is released

Page 44: Drupal in Libraries

Drupal 7 changes - GeneralInstall consolidation

Fewer pages with more logical arrangement

Users can cancel accounts!

Improved translation interface

Improved and expanded help integration

Administration theme

More error reporting options

Page 45: Drupal in Libraries

Drupal 7 changes - ThemingPage template XHTML refactored

More semantic class and ID names

Friendlier to CSS only layout

CSS only means no template changes needed (i.e. no PHP)

Better JavaScript cross library integration

JQuery 3.x

Library calls are wrapped

(function($) {$('a').fadeOut().fadeIn();

})(jQuery);

Page 46: Drupal in Libraries

Drupal 7 changes – automated testing

SimpleTest integration

http://testing.drupal.org

Page 47: Drupal in Libraries

Drupal 7 changes - DBTNGUsing PHP data objects (PDO)

Direct support of MySQL PostgreSQL & SQLite

Implied support for others

Transaction support

Replication support (master/slave)

Potential for update automation

Dynamic select queries

Geek alert:

Hook_query_alter replaces hook_db_rewrite_sql

Page 48: Drupal in Libraries

Drupal 7 changes - DBTNGNew static select query syntax

Drupal 6:

Drupal 7:

$node = db_query('SELECT nid, title FROM {node} WHERE type = :type AND nid = :nid', array(':type' => $type, ':nid' => $nid))->fetchObject();

$result = db_query("SELECT nid, title FROM {node} WHERE type = '%s' AND nid = %d", array($type, $nid));$node = db_fetch_object($result);

Page 49: Drupal in Libraries

Drupal 7 changes - DBTNGNew dynamic select query:

Drupal 6:

Drupal 7:

$select = db_select('node', 'n')->fields('n', array('nid'))->condition('promote', 1)->condition('status', 1)->orderBy('sticky', 'DESC')->orderBy('created', 'DESC')->extend('PagerDefault')->limit(variable_get('default_nodes_main', 10))->addTag('node_access');

$result = pager_query(db_rewrite_sql('SELECT n.nid FROM {node} nWHERE n.promote = 1 AND n.status = 1 ORDER BY n.sticky DESC,n.created DESC'), variable_get('default_nodes_main', 10));

Page 50: Drupal in Libraries

Drupal 7 – Field API

CCK API -> core

CCK UI -> contrib

Not node specific

Use fields in users, etc.

Storage abstraction

Multiple databases (potential)

Amazon S3 (or …)

Page 51: Drupal in Libraries

Drupal 7 – and more…

File API

Files are now first class objects

hook_file_load(), _save(), _move()

Registry

Automatically caches functions, classes, interfaces

$page object

Image handling in core (maybe)

Page 52: Drupal in Libraries

Drupal is not Magic It will not:

Design your site Write your content Keep it up to date

The real limitations are time and money

You must start with a clear idea of what you want to accomplish

Keep your initial install as simple as possible

The beauty of a content management system is that it allows you to keep your site fresh

The hell of a content management system is that, if your content is stale, you have nobody to blame

Page 53: Drupal in Libraries

Recommended Reading

Building powerful and robust websites with Drupal 6, David Mercer

• Learning Drupal 6 Module Development, Matt Butcher

• Pro Drupal Development, Second Edition, John K. VanDyk

• Cracking Drupal, Greg KnaddisonMUST READ!!!

Page 54: Drupal in Libraries

More Recommended Reading

Drupal handbooks - http://drupal.org/handbook

The code - http://cvs.drupal.org/viewvc.py/drupal

The APIs - http://api.drupal.org

Getting started - http://drupal.org/getting-started

Page 55: Drupal in Libraries

Recommended sites

Drupal Library Group - http://groups.drupal.org/libraries

DrupaLib - http://drupalib.interoperating.info/

Drupal4lib mailing list – http://listserv.uic.edu/archives/drupal4lib.html

Page 56: Drupal in Libraries

Can’t say it enough…

Don't hack core!

Page 57: Drupal in Libraries

Cary Gordon, MLISThe Cherry Hill CompanyLos Angeles, Californiahttp://[email protected](310) 397-2999