This summer, the US Department of Energy re-launched Energy.gov on Drupal. The technical requirements of the project were driven by an internal need to consolidate the publishing and editorial resources of dozens of program offices. This session will discuss the challenges of developing a platform that will serve the current and future needs of the department, and the tools and techniques we developed along the way. We will also be discussing the projects that will be contributed back to the Drupal community on behalf of the work done for this project.
The technical discussion will include:
New techniques for block creation.
New techniques for page creation with custom block layouts.
State machine-based publishing workflows.
Custom data visualization framework.
API-centric module development.
Apidays New York 2024 - The value of a flexible API Management solution for O...
DruplCampNYC 10 - Energy.gov Case Study
1. Energy.gov Case Study
DrupalCampNYC 10
December 10, 2011
Roger López
Sunday, December 11, 11
2. Energy.gov
Roger López
‣ VP, Engineering at
Treehouse Agency
‣ Drupal.org member
since July 2006
‣ @zroger
DrupalCampNYC 2011, Roger López
Sunday, December 11, 11
4. Energy.gov
Project Goals
‣ Consolidation of 100’s of sub-sites
‣ Sub-site creation should not require
developer intervention.
‣ Content should be easily shared
between sub-sites.
‣ Maintain a uniform style across all
sub-sites.
DrupalCampNYC, 2011, Roger López
Sunday, December 11, 11
5. Energy.gov
Drupal 7
‣ Released January 5, 2011
‣ Target launch date: August 4, 2011
‣ Drupal 6 will stopped being
supported in about 2-3 years
DrupalCampNYC, 2011, Roger López
Sunday, December 11, 11
6. Energy.gov
What about contrib?
‣ Entities and fields
‣ DB API and EntityFieldQuery
‣ Image styles
‣ ...
DrupalCampNYC, 2011, Roger López
Sunday, December 11, 11
7. Energy.gov
Organic groups
‣ Create groups
‣ Content is added to groups
‣ Users are members of groups
‣ Membership-based access control
DrupalCampNYC, 2011, Roger López
Sunday, December 11, 11
10. Energy.gov
Group Type
DrupalCampNYC, 2011, Roger López
Sunday, December 11, 11
11. Energy.gov
Group Membership
DrupalCampNYC, 2011, Roger López
Sunday, December 11, 11
12. Energy.gov
OG Usage
‣ Group type
‣ Office vocabulary terms
‣ Group content
‣ Articles
‣ Pages
‣ Blocks*
DrupalCampNYC, 2011, Roger López
Sunday, December 11, 11
13. Energy.gov
Not all terms are created
equal
‣ Internal sites are groups
‣ External sites are not
‣ Otherwise the same
DrupalCampNYC, 2011, Roger López
Sunday, December 11, 11
22. screenshot of listing
block example, with
highlights like previous
slide
Sunday, December 11, 11
23. screenshot of listing
block example, with
highlights like previous
slide
Sunday, December 11, 11
24. Energy.gov
Beans
(Block Entities)
DrupalCampNYC, 2011, Roger López
Sunday, December 11, 11
25. Energy.gov
Block Entities
‣ Block types
‣ Fieldable
‣ Simple data storage for settings
‣ Non-admin permissions
‣ Data entry is familiar to users
DrupalCampNYC, 2011, Roger López
Sunday, December 11, 11
30. Energy.gov
View modes
‣ Previously called “Build modes”
‣ Provides multiple display options
‣ Out of the box
‣ Full content
‣ Teaser
‣ RSS
DrupalCampNYC, 2011, Roger López
Sunday, December 11, 11
31. Energy.gov
Named styles
‣ Block teaser ‣ Related items
DrupalCampNYC, 2011, Roger López
Sunday, December 11, 11
32. Energy.gov
Editorial listings
‣ Hand-selected listings of nodes
‣ Multiple Node Reference field
‣ View mode set in the Node
Reference field settings
‣ Additional fields
‣ More link, Header text, etc.
DrupalCampNYC, 2011, Roger López
Sunday, December 11, 11
33. Energy.gov
Block Placement
DrupalCampNYC, 2011, Roger López
Sunday, December 11, 11
34. Energy.gov
Pages vs Nodes
‣ Users think about Pages
‣ Pages with only blocks
‣ Publishing workflow doesn’t include
block placements
DrupalCampNYC, 2011, Roger López
Sunday, December 11, 11
35. Energy.gov
Block References
‣ Block reference fields to emulate
regions
‣ “Landing page” node types for each
page layout
‣ Can be combined with other
methods (context, core block
module, etc.)
DrupalCampNYC, 2011, Roger López
Sunday, December 11, 11
46. Energy.gov
Workflows
DrupalCampNYC, 2011, Roger López
Sunday, December 11, 11
47. Energy.gov
Standard Workflow
DrupalCampNYC, 2011, Roger López
Sunday, December 11, 11
48. Energy.gov
Standard Workflow
‣ Draft
DrupalCampNYC, 2011, Roger López
Sunday, December 11, 11
49. Energy.gov
Standard Workflow
‣ Draft
‣ Needs Review
DrupalCampNYC, 2011, Roger López
Sunday, December 11, 11
50. Energy.gov
Standard Workflow
‣ Draft
‣ Needs Review
‣ Approved
DrupalCampNYC, 2011, Roger López
Sunday, December 11, 11
51. Energy.gov
Standard Workflow
‣ Draft
‣ Needs Review
‣ Approved
‣ Published
DrupalCampNYC, 2011, Roger López
Sunday, December 11, 11
52. Energy.gov
Standard Workflow
‣ Draft
‣ Needs Review
‣ Approved
‣ Published
‣ Unpublished
DrupalCampNYC, 2011, Roger López
Sunday, December 11, 11
53. Energy.gov
Other Requirements
‣ Workflow setup in code
‣ Exportable, API, etc.
‣ Multiple concurrent revisions
‣ Draft revisions subject to workflow
‣ Published revision is not editable
DrupalCampNYC, 2011, Roger López
Sunday, December 11, 11
54. Energy.gov
Options
‣ Workflow
‣ Rules
‣ Workbench moderation
DrupalCampNYC, 2011, Roger López
Sunday, December 11, 11
55. Energy.gov
StateFlow
DrupalCampNYC, 2011, Roger López
Sunday, December 11, 11
56. Energy.gov
Revisions
‣ New nodes start as Drafts
‣ Published revisions are not editable
‣ Editing a published node creates a
new draft revision
‣ Publishing a revision archives the
current revision
DrupalCampNYC, 2011, Roger López
Sunday, December 11, 11
57. Energy.gov
DrupalCampNYC, 2011, Roger López
Sunday, December 11, 11
58. Energy.gov
New Draft
DrupalCampNYC, 2011, Roger López
Sunday, December 11, 11
59. Energy.gov
New Draft
Reviewed
DrupalCampNYC, 2011, Roger López
Sunday, December 11, 11
60. Energy.gov
New Draft
Reviewed
Published
DrupalCampNYC, 2011, Roger López
Sunday, December 11, 11
61. Energy.gov
New Draft
Reviewed
Published
Edit
New Draft
DrupalCampNYC, 2011, Roger López
Sunday, December 11, 11
62. Energy.gov
New Draft
Reviewed
Published
Edit
New Draft
Reviewed
DrupalCampNYC, 2011, Roger López
Sunday, December 11, 11
63. Energy.gov
New Draft
Reviewed
Published
Archived
Edit
New Draft
Reviewed
Published
DrupalCampNYC, 2011, Roger López
Sunday, December 11, 11
65. Energy.gov
API First
‣ 100% implementable from code
‣ State Machine
‣ Customize by extending
‣ Workflow
‣ States
‣ Events
DrupalCampNYC, 2011, Roger López
Sunday, December 11, 11
66. Energy.gov
http://drupal.org/project/state_machine
DrupalCampNYC, 2011, Roger López
Sunday, December 11, 11
67. Energy.gov
Data Visualizations
DrupalCampNYC, 2011, Roger López
Sunday, December 11, 11
68. Energy.gov
Libraries
‣ jqPlot
‣ jqplot.com
‣ The Jit
‣ thejit.org
‣ High Charts
‣ highcharts.com
DrupalCampNYC, 2011, Roger López
Sunday, December 11, 11
69. Energy.gov
DataVis
formatted
data
JSON
DrupalCampNYC, 2011, Roger López
Sunday, December 11, 11
70. Energy.gov
DataVis
DataVis
formatted
Adapter
data
JSON Javascript
DrupalCampNYC, 2011, Roger López
Sunday, December 11, 11
71. Energy.gov
DataVis
Drupal DataVis
formatted
Module Adapter
data
PHP JSON Javascript
DrupalCampNYC, 2011, Roger López
Sunday, December 11, 11
72. Energy.gov
DrupalCampNYC, 2011, Roger López
Sunday, December 11, 11
73. Energy.gov
DrupalCampNYC, 2011, Roger López
Sunday, December 11, 11