Upload
cary-gordon
View
6.963
Download
0
Embed Size (px)
DESCRIPTION
Overview of Drupal for use in libraries
Citation preview
Agenda
A short chat about Drupal
Modules (4849 at last count)
A brief library tour
Drupal as application framework
Drupal 7
Resources
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
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
A Small Corner of the CMS Universe
And about 1085 others (http://www.cmsmatrix.org/matrix)
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
Drupal is built…
Standing on the shoulders of…
Each other
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
Drupal LingoNode
Comment
Block
Page
Path
Taxonomy
Modules
Themes
Core
Contrib
PresentationHelpersDrupalLAMP/???P
Drupal Technology Stack
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)
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!
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
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.
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.
Example sites
Ann Arbor District Library
Darien Library
Darien Library
Darien LibrarySOPAC 2
http://www.thesocialopac.net/
Millennium integration (Locum)
Locum is an abstraction layer between the ILS and Drupal
Genesee Valley BOCES
Genesee Valley BOCES
Genesee Valley BOCES
Catalog
Research tools
Student resources
Teacher resources
System contributed & school contributed
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
Idaho Commission for Libraries
Troy Public Library
<http://troylibrary.info>
Benicia Public Library - LLWIP
Camerena Memorial Library - LLWIP
Camerena Memorial Library - LLWIP
North State Cooperative Library System
Example applications
California State University San Marcos
California State University San MarcosDigital repository/archive
Intranet/Extranet
E-resource directory/manager
Ian Chan <[email protected]>
California State University San Marcos
SFU Library Thesis Assistant
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]>
Albert R. Mann Library - Cornell
Anchor Archive Zine Library
http://www.robertsstreet.org/n/searchinfieldsAmanda Stevens <[email protected]>
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]>
McMaster University Guides
http://library.mcmaster.ca/guides/
Islandora
http://islandora.org/Module
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
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
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);
Drupal 7 changes – automated testing
SimpleTest integration
http://testing.drupal.org
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
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);
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));
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 …)
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)
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
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!!!
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
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
Can’t say it enough…
Don't hack core!
Cary Gordon, MLISThe Cherry Hill CompanyLos Angeles, Californiahttp://[email protected](310) 397-2999