Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Drupal Bedework calendar integration (drupalcamp)

No description
by

Vincent Massaro

on 18 March 2013

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Drupal Bedework calendar integration (drupalcamp)

"Feeding" Bedework The Feeds module Feeds allows us to import or aggregate data as content, users, taxonomy terms or simple database records Supports one-off or periodic imports of content Import many data types: CSV, RSS, JSON, XML, iCal and more Drupal monsters by Saman Bemel Benrud
drupal.org/project/feeds
drupal.org/project/feeds_tamper
drupal.org/project/features
drupal.org/project/strongarm Vincent Massaro Office of Public Affairs & Communications Why integrate? How does it work? Enterprise content management
+
Enterprise calendaring The masses want it Low effort:
existing Drupal modules make it easy No custom code (almost) Bedework outputs feeds in RSS, JSON, or iCal formats Javascript Object Notation What's it look like? {
"firstName": "Vincent",
"lastName": "Massaro",
"address": {
"street": "2 Whitney Ave",
"city": "New Haven",
"state": "CT",
"zip": "06510"
}
} How about this? {
"summary": "\"American Night: The Ballad of Juan José\"",
"subtitle": "",
"guid": "CAL-2c9cb3cd-399c4ff0-0139-bb2333db-00004c11bedework%40yale.edu",
"recurrenceId": "20121011T000000Z",
"link": "http://www.yalerep.org/on_stage/2012-13/american.html",
"eventlink": "http://calendar.yale.edu:80/events/opa/CAL-2c9cb3cd-399c4ff0-0139-bb2333db-00004c11bedework@yale.edu/20121011T000000Z",
"status": "CONFIRMED",
"start": {
"allday": "false",
"shortdate": "10/10/12",
"longdate": "October 10, 2012",
"dayname": "Wednesday",
"time": "8:00 PM",
"utcdate": "20121011T000000Z",
"datetime": "20121010T200000",
"timezone": "America/New_York"
},
"end": {
"allday": "false",
"shortdate": "10/10/12",
"longdate": "October 10, 2012",
"dayname": "Wednesday",
"time": "8:00 PM",
"utcdate": "20121011T000000Z",
"datetime": "20121010T200000",
"timezone": "America/New_York"
},
"recurrence": "",
"rdates": [

],
"categories": [
"performance",
"theater"
],
"itags": [
".opa"
],
"description": "Written by Richard Montoya, developed by Culture Clash and Jo Bonney, and directed by Shana Cooper.",
"speaker": "",
"ticketInfo": "Tickets: $20-$96.",
"contact": {
"name": "Yale Repertory Theatre",
"phone": "203-432-1234",
"email": "yalerep@yale.edu",
"url": "http://www.yalerep.org"
},
"location": {
"abbreviation": "UT",
"name": "University Theatre",
"address": "222 York St.",
"city": "New Haven, CT",
"zip": "06511",
"room": "",
"wheelchairAccessible": "no",
"additionalInfo": ""
},
"xproperties": {
"X-BEDEWORK-ALIAS": "/user/agrp_opa/Performances/Theater",
"X-BEDEWORK-SUBMITTEDBY": "msimpson for opaAdminGroup (agrp_opa)",
"X-YALE-LOCATION": "BD203",
"X-YALE-LOCATION-WHEELCHAIR": "no",
"X-YALE-EVENTURL1-LABEL": "More information",
"X-YALE-OPENTO": "GENERALPUBLIC",
"X-YALE-ADMISSION": "TICKETS",
"X-YALE-ADMISSION-INFO": "Tickets: $20-$96.",
"X-YALE-PRINT-CATEGORY": "Performances",
"X-BEDEWORK-IMAGE": "http://resources.message.yale.edu/sites/default/files/eec6/images/American%20Night%20JJ.jpg",
"X-YALE-HOURS-OF-OPERATION": "Performances run Sept. 21-Oct. 13. Shows are at 8 p.m. Tuesday-Saturday, with additional 2 p.m. <br />matinees on Saturdays, Sept. 29, Oct. 6 (an open-captioned performance),<br /> and Oct. 13 (an audio-described show), and on Wednesday, Oct. 3. There <br />is one Monday performance, on Sept. 24.<br />",
"X-YALE-IMAGE-SIZE": "329"
}
} Consumption into Drupal We create a content type - a collection of fields - to store the data Title
Description
Event date/time
Location
Image 1. Create a feed importer, sourcing fields from the Bedework feed Drupal magic does the rest! Demo How do we make it ‘easy’? The Features and Strongarm modules Developer modules that capture and bundle configuration as code We bundle the optional Bedework Calendar feature which extends the calendar feature: additional fields, fully-configured feed importer Just enter your Bedework calendar address and go! Thanks! Questions? vincent.massaro@yale.edu Credits These fields match the data fields coming from the Bedework feed Easiest format to work with 2. Choose their matching destination fields in the content type Yalesites suite of features - news, calendar, image gallery Override defaults that administrators would need to change manually Title
Description
Event date/time
Location
Image Title
Description
Event date/time
Location
Image Why not? More exposure Magic, with a few gotchas Source data isn't always clean, so tamper with things Use the Feeds Tamper module to modify import data before it gets saved Common issues: HTML entities need decoding (& to &) Stripping unwanted tags Case conversion (titlecase, lowercase, uppercase) ...and many more Using Feeds and building an importer is an iterative process You won't get it right the first time! Try, try again Trial and error + persistence wins Import, delete items, import
Full transcript