SlideShare ist ein Scribd-Unternehmen logo
1 von 260
Beyond The Web
         Drupal Meets The Desktop (And Mobile)
                Justin Miller
                Code Sorcery Workshop, LLC
                http://codesorcery.net/dcdc




Tuesday, March 10, 2009
Introduction




Tuesday, March 10, 2009
Introduction




Tuesday, March 10, 2009
Introduction
               Personal introduction




Tuesday, March 10, 2009
Introduction
               Personal introduction
               Format & conventions for this talk




Tuesday, March 10, 2009
Introduction
               Personal introduction
               Format & conventions for this talk
                     Assume familiarity with core/contrib, modules, hooks




Tuesday, March 10, 2009
Introduction
               Personal introduction
               Format & conventions for this talk
                     Assume familiarity with core/contrib, modules, hooks
                     Functions & other code like_this()




Tuesday, March 10, 2009
Introduction
               Personal introduction
               Format & conventions for this talk
                     Assume familiarity with core/contrib, modules, hooks
                     Functions & other code like_this()
                     Modules represented {like_so}




Tuesday, March 10, 2009
Introduction
               Personal introduction
               Format & conventions for this talk
                     Assume familiarity with core/contrib, modules, hooks
                     Functions & other code like_this()
                     Modules represented {like_so}
                          http://drupal.org/project/{foo}




Tuesday, March 10, 2009
Introduction
               Personal introduction
               Format & conventions for this talk
                     Assume familiarity with core/contrib, modules, hooks
                     Functions & other code like_this()
                     Modules represented {like_so}
                          http://drupal.org/project/{foo}
                     Twitter hashtag #drupalbeyond




Tuesday, March 10, 2009
Introduction
               Personal introduction
               Format & conventions for this talk
                     Assume familiarity with core/contrib, modules, hooks
                     Functions & other code like_this()
                     Modules represented {like_so}
                          http://drupal.org/project/{foo}
                     Twitter hashtag #drupalbeyond
                     Q&A at the end



Tuesday, March 10, 2009
Who are you?




Tuesday, March 10, 2009
Who are you?
               A Drupal developer
                     What’s out there? Does it work?




Tuesday, March 10, 2009
Who are you?
               A Drupal developer
                     What’s out there? Does it work?
               A desktop or mobile developer
                     Can I use Drupal as a backend? How? Why?




Tuesday, March 10, 2009
Who are you?
               A Drupal developer
                     What’s out there? Does it work?
               A desktop or mobile developer
                     Can I use Drupal as a backend? How? Why?
               A non-developer
                      Will Drupal play nice with my existing systems?



Tuesday, March 10, 2009
Focus Of This Talk




Tuesday, March 10, 2009
Focus Of This Talk




Tuesday, March 10, 2009
Focus Of This Talk

               Direct concerns for desktop & mobile




Tuesday, March 10, 2009
Focus Of This Talk

               Direct concerns for desktop & mobile
                     Standards-based exchange




Tuesday, March 10, 2009
Focus Of This Talk

               Direct concerns for desktop & mobile
                     Standards-based exchange
                     Authentication & security




Tuesday, March 10, 2009
Focus Of This Talk

               Direct concerns for desktop & mobile
                     Standards-based exchange
                     Authentication & security
                     Building on what is available




Tuesday, March 10, 2009
Today’s Roadmap




Tuesday, March 10, 2009
Today’s Roadmap




Tuesday, March 10, 2009
Today’s Roadmap

               Putting Data In




Tuesday, March 10, 2009
Today’s Roadmap

               Putting Data In
               Getting Data Out




Tuesday, March 10, 2009
Today’s Roadmap

               Putting Data In
               Getting Data Out
               Authentication




Tuesday, March 10, 2009
Today’s Roadmap

               Putting Data In
               Getting Data Out
               Authentication
               Advanced Interop (XML-RPC, Services)




Tuesday, March 10, 2009
Putting Data In




         Putting Data In

Tuesday, March 10, 2009
Putting Data In




         Putting Data In

Tuesday, March 10, 2009
Putting Data In

               Desktop Publishing




         Putting Data In

Tuesday, March 10, 2009
Putting Data In

               Desktop Publishing
               File Uploads & Attachments




         Putting Data In

Tuesday, March 10, 2009
Putting Data In

               Desktop Publishing
               File Uploads & Attachments
               Files: The Next Level (File Framework)




         Putting Data In

Tuesday, March 10, 2009
Putting Data In

               Desktop Publishing
               File Uploads & Attachments
               Files: The Next Level (File Framework)
               WebDAV For Fun & Profit



         Putting Data In

Tuesday, March 10, 2009
Desktop Publishing




         Putting Data In ➔ Desktop Publishing


Tuesday, March 10, 2009
Desktop Publishing
               Basic support made available by Blog API




         Putting Data In ➔ Desktop Publishing


Tuesday, March 10, 2009
Desktop Publishing
               Basic support made available by Blog API
                     Optional core module {blogapi}




         Putting Data In ➔ Desktop Publishing


Tuesday, March 10, 2009
Desktop Publishing
               Basic support made available by Blog API
                     Optional core module {blogapi}
                     Implementation of hook_xmlrpc() (more later)




         Putting Data In ➔ Desktop Publishing


Tuesday, March 10, 2009
Desktop Publishing
               Basic support made available by Blog API
                     Optional core module {blogapi}
                     Implementation of hook_xmlrpc() (more later)
                     Blogger, MetaWeblog, & Movable Type




         Putting Data In ➔ Desktop Publishing


Tuesday, March 10, 2009
Desktop Publishing
               Basic support made available by Blog API
                     Optional core module {blogapi}
                     Implementation of hook_xmlrpc() (more later)
                     Blogger, MetaWeblog, & Movable Type
               Google Docs can publish to this!



         Putting Data In ➔ Desktop Publishing


Tuesday, March 10, 2009
Desktop Publishing
               Basic support made available by Blog API
                     Optional core module {blogapi}
                     Implementation of hook_xmlrpc() (more later)
                     Blogger, MetaWeblog, & Movable Type
               Google Docs can publish to this!
               Clients available for every platform

         Putting Data In ➔ Desktop Publishing


Tuesday, March 10, 2009
File Uploads & Attachments




         Putting Data In ➔ File Uploads & Attachments


Tuesday, March 10, 2009
File Uploads & Attachments
               Core support with {upload}




         Putting Data In ➔ File Uploads & Attachments


Tuesday, March 10, 2009
File Uploads & Attachments
               Core support with {upload}
               Files go into a folder on the server




         Putting Data In ➔ File Uploads & Attachments


Tuesday, March 10, 2009
File Uploads & Attachments
               Core support with {upload}
               Files go into a folder on the server
               Basic metadata is stored in the DB
                     Name, path, type, size




         Putting Data In ➔ File Uploads & Attachments


Tuesday, March 10, 2009
File Uploads & Attachments
               Core support with {upload}
               Files go into a folder on the server
               Basic metadata is stored in the DB
                     Name, path, type, size
               Can limit upload types accepted by extension




         Putting Data In ➔ File Uploads & Attachments


Tuesday, March 10, 2009
File Uploads & Attachments
               Core support with {upload}
               Files go into a folder on the server
               Basic metadata is stored in the DB
                     Name, path, type, size
               Can limit upload types accepted by extension
               Can enable private download method
                     Store files out of site root
                     Drupal becomes the gatekeeper for file permissions

         Putting Data In ➔ File Uploads & Attachments


Tuesday, March 10, 2009
File Framework




         Putting Data In ➔ File Framework


Tuesday, March 10, 2009
File Framework
               Contrib module suite called {fileframework}




         Putting Data In ➔ File Framework


Tuesday, March 10, 2009
File Framework
               Contrib module suite called {fileframework}
               Provides a ‘file’ content type to Drupal




         Putting Data In ➔ File Framework


Tuesday, March 10, 2009
File Framework
               Contrib module suite called {fileframework}
               Provides a ‘file’ content type to Drupal
                     Remember: normally, files are not nodes




         Putting Data In ➔ File Framework


Tuesday, March 10, 2009
File Framework
               Contrib module suite called {fileframework}
               Provides a ‘file’ content type to Drupal
                     Remember: normally, files are not nodes
               Advanced feature set




         Putting Data In ➔ File Framework


Tuesday, March 10, 2009
File Framework
               Contrib module suite called {fileframework}
               Provides a ‘file’ content type to Drupal
                     Remember: normally, files are not nodes
               Advanced feature set
                     Virus scanning on upload




         Putting Data In ➔ File Framework


Tuesday, March 10, 2009
File Framework
               Contrib module suite called {fileframework}
               Provides a ‘file’ content type to Drupal
                     Remember: normally, files are not nodes
               Advanced feature set
                     Virus scanning on upload
                     Automatic conversion




         Putting Data In ➔ File Framework


Tuesday, March 10, 2009
File Framework
               Contrib module suite called {fileframework}
               Provides a ‘file’ content type to Drupal
                     Remember: normally, files are not nodes
               Advanced feature set
                     Virus scanning on upload
                     Automatic conversion
                          Example: MPEG to FLV or HTML to TXT




         Putting Data In ➔ File Framework


Tuesday, March 10, 2009
File Framework
               Contrib module suite called {fileframework}
               Provides a ‘file’ content type to Drupal
                     Remember: normally, files are not nodes
               Advanced feature set
                     Virus scanning on upload
                     Automatic conversion
                          Example: MPEG to FLV or HTML to TXT
                     Metadata extraction (EXIF, ID3, PDF properties, etc.)



         Putting Data In ➔ File Framework


Tuesday, March 10, 2009
File Framework
               Contrib module suite called {fileframework}
               Provides a ‘file’ content type to Drupal
                     Remember: normally, files are not nodes
               Advanced feature set
                     Virus scanning on upload
                     Automatic conversion
                          Example: MPEG to FLV or HTML to TXT
                     Metadata extraction (EXIF, ID3, PDF properties, etc.)
                     AHAH-enabled inline previews

         Putting Data In ➔ File Framework


Tuesday, March 10, 2009
Putting Data In ➔ File Framework


Tuesday, March 10, 2009
Putting Data In ➔ File Framework


Tuesday, March 10, 2009
Putting Data In ➔ File Framework


Tuesday, March 10, 2009
Putting Data In ➔ File Framework


Tuesday, March 10, 2009
Putting Data In ➔ File Framework


Tuesday, March 10, 2009
Putting Data In ➔ File Framework


Tuesday, March 10, 2009
Putting Data In ➔ File Framework


Tuesday, March 10, 2009
Putting Data In ➔ File Framework


Tuesday, March 10, 2009
File Framework




         Putting Data In ➔ File Framework


Tuesday, March 10, 2009
File Framework
               Efficient




         Putting Data In ➔ File Framework


Tuesday, March 10, 2009
File Framework
               Efficient
                     File nodes can be reused




         Putting Data In ➔ File Framework


Tuesday, March 10, 2009
File Framework
               Efficient
                     File nodes can be reused
                          Re-attached again and again




         Putting Data In ➔ File Framework


Tuesday, March 10, 2009
File Framework
               Efficient
                     File nodes can be reused
                          Re-attached again and again
                          Autocomplete search field




         Putting Data In ➔ File Framework


Tuesday, March 10, 2009
File Framework
               Efficient
                     File nodes can be reused
                          Re-attached again and again
                          Autocomplete search field
                     Backend is distributed & content-addressable




         Putting Data In ➔ File Framework


Tuesday, March 10, 2009
File Framework
               Efficient
                     File nodes can be reused
                          Re-attached again and again
                          Autocomplete search field
                     Backend is distributed & content-addressable
                          Repositories on Memcached, SFTP, Amazon S3


         Putting Data In ➔ File Framework


Tuesday, March 10, 2009
File Framework
               Efficient
                     File nodes can be reused
                          Re-attached again and again
                          Autocomplete search field
                     Backend is distributed & content-addressable
                          Repositories on Memcached, SFTP, Amazon S3
                          See {bitcache} for more on the specifics
         Putting Data In ➔ File Framework


Tuesday, March 10, 2009
Putting Data In ➔ File Framework


Tuesday, March 10, 2009
Putting Data In ➔ File Framework


Tuesday, March 10, 2009
Putting Data In ➔ File Framework


Tuesday, March 10, 2009
WebDAV




         Putting Data In ➔ WebDAV


Tuesday, March 10, 2009
WebDAV




         Putting Data In ➔ WebDAV


Tuesday, March 10, 2009
WebDAV
               File Server {fileserver}




         Putting Data In ➔ WebDAV


Tuesday, March 10, 2009
WebDAV
               File Server {fileserver}
                     Based on {dav}




         Putting Data In ➔ WebDAV


Tuesday, March 10, 2009
WebDAV
               File Server {fileserver}
                     Based on {dav}
                     Browse file nodes by taxonomy




         Putting Data In ➔ WebDAV


Tuesday, March 10, 2009
WebDAV
               File Server {fileserver}
                     Based on {dav}
                     Browse file nodes by taxonomy
               File Relations Server {filerelationsserver}




         Putting Data In ➔ WebDAV


Tuesday, March 10, 2009
WebDAV
               File Server {fileserver}
                     Based on {dav}
                     Browse file nodes by taxonomy
               File Relations Server {filerelationsserver}
                     Also based on {dav}




         Putting Data In ➔ WebDAV


Tuesday, March 10, 2009
WebDAV
               File Server {fileserver}
                     Based on {dav}
                     Browse file nodes by taxonomy
               File Relations Server {filerelationsserver}
                     Also based on {dav}
                     Browse file nodes by:




         Putting Data In ➔ WebDAV


Tuesday, March 10, 2009
WebDAV
               File Server {fileserver}
                     Based on {dav}
                     Browse file nodes by taxonomy
               File Relations Server {filerelationsserver}
                     Also based on {dav}
                     Browse file nodes by:
                          MIME type




         Putting Data In ➔ WebDAV


Tuesday, March 10, 2009
WebDAV
               File Server {fileserver}
                     Based on {dav}
                     Browse file nodes by taxonomy
               File Relations Server {filerelationsserver}
                     Also based on {dav}
                     Browse file nodes by:
                          MIME type
                          Attached-to node type (page, story, etc.)




         Putting Data In ➔ WebDAV


Tuesday, March 10, 2009
WebDAV
               File Server {fileserver}
                     Based on {dav}
                     Browse file nodes by taxonomy
               File Relations Server {filerelationsserver}
                     Also based on {dav}
                     Browse file nodes by:
                          MIME type
                          Attached-to node type (page, story, etc.)
                          Group (via Organic Groups)




         Putting Data In ➔ WebDAV


Tuesday, March 10, 2009
WebDAV
               File Server {fileserver}
                     Based on {dav}
                     Browse file nodes by taxonomy
               File Relations Server {filerelationsserver}
                     Also based on {dav}
                     Browse file nodes by:
                          MIME type
                          Attached-to node type (page, story, etc.)
                          Group (via Organic Groups)
               WebDAV {webdav}



         Putting Data In ➔ WebDAV


Tuesday, March 10, 2009
WebDAV
               File Server {fileserver}
                     Based on {dav}
                     Browse file nodes by taxonomy
               File Relations Server {filerelationsserver}
                     Also based on {dav}
                     Browse file nodes by:
                          MIME type
                          Attached-to node type (page, story, etc.)
                          Group (via Organic Groups)
               WebDAV {webdav}
                     Access to textual nodes (pages, stories, etc.)

         Putting Data In ➔ WebDAV


Tuesday, March 10, 2009
Putting Data In ➔ WebDAV


Tuesday, March 10, 2009
Putting Data In ➔ WebDAV


Tuesday, March 10, 2009
Putting Data In ➔ WebDAV


Tuesday, March 10, 2009
Putting Data In ➔ WebDAV


Tuesday, March 10, 2009
Putting Data In ➔ WebDAV


Tuesday, March 10, 2009
Putting Data In ➔ WebDAV


Tuesday, March 10, 2009
Getting Data Out




         Getting Data Out


Tuesday, March 10, 2009
Getting Data Out




         Getting Data Out


Tuesday, March 10, 2009
Getting Data Out

               Feeds




         Getting Data Out


Tuesday, March 10, 2009
Getting Data Out

               Feeds
               Email




         Getting Data Out


Tuesday, March 10, 2009
Getting Data Out

               Feeds
               Email
               Popular Formats




         Getting Data Out


Tuesday, March 10, 2009
Getting Data Out

               Feeds
               Email
               Popular Formats
               Other Projects of Note



         Getting Data Out


Tuesday, March 10, 2009
General Feed Needs




         Getting Data Out → Feeds


Tuesday, March 10, 2009
General Feed Needs




         Getting Data Out → Feeds


Tuesday, March 10, 2009
General Feed Needs
                     Core




         Getting Data Out → Feeds


Tuesday, March 10, 2009
General Feed Needs
                     Core
                          Automatic node aggregation (e.g., blog)




         Getting Data Out → Feeds


Tuesday, March 10, 2009
General Feed Needs
                     Core
                           Automatic node aggregation (e.g., blog)
                          Create views with {views}




         Getting Data Out → Feeds


Tuesday, March 10, 2009
General Feed Needs
                     Core
                           Automatic node aggregation (e.g., blog)
                          Create views with {views}
                           Create displays for pages, blocks




         Getting Data Out → Feeds


Tuesday, March 10, 2009
General Feed Needs
                     Core
                           Automatic node aggregation (e.g., blog)
                          Create views with {views}
                           Create displays for pages, blocks
                           Also create displays for feeds



         Getting Data Out → Feeds


Tuesday, March 10, 2009
General Feed Needs
                     Core
                           Automatic node aggregation (e.g., blog)
                          Create views with {views}
                           Create displays for pages, blocks
                           Also create displays for feeds
                           “List, in table form, all comments on a node,
                           then provide an RSS feed of those comments.”
         Getting Data Out → Feeds


Tuesday, March 10, 2009
Feed Needs: Authentication




         Getting Data Out → Feeds


Tuesday, March 10, 2009
Feed Needs: Authentication




         Getting Data Out → Feeds


Tuesday, March 10, 2009
Feed Needs: Authentication
                     Token authentication {tokenauth}




         Getting Data Out → Feeds


Tuesday, March 10, 2009
Feed Needs: Authentication
                     Token authentication {tokenauth}
                          Checks for token present in URL




         Getting Data Out → Feeds


Tuesday, March 10, 2009
Feed Needs: Authentication
                     Token authentication {tokenauth}
                          Checks for token present in URL
                          User is automatically logged in as token owner




         Getting Data Out → Feeds


Tuesday, March 10, 2009
Feed Needs: Authentication
                     Token authentication {tokenauth}
                          Checks for token present in URL
                          User is automatically logged in as token owner
                     Server-based authentication




         Getting Data Out → Feeds


Tuesday, March 10, 2009
Feed Needs: Authentication
                     Token authentication {tokenauth}
                          Checks for token present in URL
                          User is automatically logged in as token owner
                     Server-based authentication
                          .htaccess, database-backed, LDAP




         Getting Data Out → Feeds


Tuesday, March 10, 2009
Feed Needs: Authentication
                     Token authentication {tokenauth}
                          Checks for token present in URL
                          User is automatically logged in as token owner
                     Server-based authentication
                          .htaccess, database-backed, LDAP
                          Applies to non-feed URLs too


         Getting Data Out → Feeds


Tuesday, March 10, 2009
Feed Needs: Authentication
                     Token authentication {tokenauth}
                          Checks for token present in URL
                          User is automatically logged in as token owner
                     Server-based authentication
                          .htaccess, database-backed, LDAP
                          Applies to non-feed URLs too
                          Covered in more general terms later
         Getting Data Out → Feeds


Tuesday, March 10, 2009
Other Feed Needs




Tuesday, March 10, 2009
Other Feed Needs
               Atom in addition to RSS using {atom}




Tuesday, March 10, 2009
Other Feed Needs
               Atom in addition to RSS using {atom}
                     Provides node, blog, user blog, & taxonomy feeds




Tuesday, March 10, 2009
Other Feed Needs
               Atom in addition to RSS using {atom}
                     Provides node, blog, user blog, & taxonomy feeds
               Feed Path Publisher {feed_path_publisher}




Tuesday, March 10, 2009
Other Feed Needs
               Atom in addition to RSS using {atom}
                     Provides node, blog, user blog, & taxonomy feeds
               Feed Path Publisher {feed_path_publisher}
                     Adds <link> tags to pages based on path




Tuesday, March 10, 2009
Other Feed Needs
               Atom in addition to RSS using {atom}
                     Provides node, blog, user blog, & taxonomy feeds
               Feed Path Publisher {feed_path_publisher}
                     Adds <link> tags to pages based on path




Tuesday, March 10, 2009
Email




         Getting Data Out → Email


Tuesday, March 10, 2009
Email




         Getting Data Out → Email


Tuesday, March 10, 2009
Email
               Core includes drupal_mail()




         Getting Data Out → Email


Tuesday, March 10, 2009
Email
               Core includes drupal_mail()
                     Important since it abstracts sending




         Getting Data Out → Email


Tuesday, March 10, 2009
Email
               Core includes drupal_mail()
                     Important since it abstracts sending
                     Uses PHP mail() by default




         Getting Data Out → Email


Tuesday, March 10, 2009
Email
               Core includes drupal_mail()
                     Important since it abstracts sending
                     Uses PHP mail() by default
                     Allows swapping the backend




         Getting Data Out → Email


Tuesday, March 10, 2009
Email
               Core includes drupal_mail()
                     Important since it abstracts sending
                     Uses PHP mail() by default
                     Allows swapping the backend
                          Example: development site holding email




         Getting Data Out → Email


Tuesday, March 10, 2009
Email
               Core includes drupal_mail()
                     Important since it abstracts sending
                     Uses PHP mail() by default
                     Allows swapping the backend
                          Example: development site holding email
               More robust emailing with {smtp}




         Getting Data Out → Email


Tuesday, March 10, 2009
Email
               Core includes drupal_mail()
                     Important since it abstracts sending
                     Uses PHP mail() by default
                     Allows swapping the backend
                          Example: development site holding email
               More robust emailing with {smtp}
                     Centralize your outgoing mail




         Getting Data Out → Email


Tuesday, March 10, 2009
Email
               Core includes drupal_mail()
                     Important since it abstracts sending
                     Uses PHP mail() by default
                     Allows swapping the backend
                          Example: development site holding email
               More robust emailing with {smtp}
                     Centralize your outgoing mail
                     Send mail over SSL



         Getting Data Out → Email


Tuesday, March 10, 2009
Email
               Core includes drupal_mail()
                     Important since it abstracts sending
                     Uses PHP mail() by default
                     Allows swapping the backend
                          Example: development site holding email
               More robust emailing with {smtp}
                     Centralize your outgoing mail
                     Send mail over SSL
                     Identify mailing sites by username (via SMTP auth)

         Getting Data Out → Email


Tuesday, March 10, 2009
Popular Formats




         Getting Data Out → Popular Formats


Tuesday, March 10, 2009
Popular Formats


               CSV, Word, TXT with {views_bonus}




         Getting Data Out → Popular Formats


Tuesday, March 10, 2009
Popular Formats


               CSV, Word, TXT with {views_bonus}
               Simple read-only JSON with {views_json}




         Getting Data Out → Popular Formats


Tuesday, March 10, 2009
Popular Formats


               CSV, Word, TXT with {views_bonus}
               Simple read-only JSON with {views_json}
               KML map data with {kml}




         Getting Data Out → Popular Formats


Tuesday, March 10, 2009
Other Projects of Note




         Getting Data Out → Other Projects


Tuesday, March 10, 2009
Other Projects of Note


               Print & PDF with {print}




         Getting Data Out → Other Projects


Tuesday, March 10, 2009
Other Projects of Note


               Print & PDF with {print}
               Force file downloads with {file_force}




         Getting Data Out → Other Projects


Tuesday, March 10, 2009
Other Projects of Note


               Print & PDF with {print}
               Force file downloads with {file_force}
               Backup & migrate with {backup_migrate}




         Getting Data Out → Other Projects


Tuesday, March 10, 2009
Authentication




         Authentication


Tuesday, March 10, 2009
Authentication




         Authentication


Tuesday, March 10, 2009
Authentication


               OpenID & OAuth




         Authentication


Tuesday, March 10, 2009
Authentication


               OpenID & OAuth
               LDAP




         Authentication


Tuesday, March 10, 2009
Authentication


               OpenID & OAuth
               LDAP
               HTTP




         Authentication


Tuesday, March 10, 2009
Auth: OpenID & OAuth




         Authentication → OpenID & OAuth


Tuesday, March 10, 2009
Auth: OpenID & OAuth




         Authentication → OpenID & OAuth


Tuesday, March 10, 2009
Auth: OpenID & OAuth
               Login and a “valet key” for many websites




         Authentication → OpenID & OAuth


Tuesday, March 10, 2009
Auth: OpenID & OAuth
               Login and a “valet key” for many websites
               OpenID login support




         Authentication → OpenID & OAuth


Tuesday, March 10, 2009
Auth: OpenID & OAuth
               Login and a “valet key” for many websites
               OpenID login support
                     Included in core as of D6 {openid}




         Authentication → OpenID & OAuth


Tuesday, March 10, 2009
Auth: OpenID & OAuth
               Login and a “valet key” for many websites
               OpenID login support
                     Included in core as of D6 {openid}
                     Allows one or more identities




         Authentication → OpenID & OAuth


Tuesday, March 10, 2009
Auth: OpenID & OAuth
               Login and a “valet key” for many websites
               OpenID login support
                     Included in core as of D6 {openid}
                     Allows one or more identities
               OpenID provider support




         Authentication → OpenID & OAuth


Tuesday, March 10, 2009
Auth: OpenID & OAuth
               Login and a “valet key” for many websites
               OpenID login support
                     Included in core as of D6 {openid}
                     Allows one or more identities
               OpenID provider support
                     Contrib module {openid_provider}




         Authentication → OpenID & OAuth


Tuesday, March 10, 2009
Auth: OpenID & OAuth
               Login and a “valet key” for many websites
               OpenID login support
                     Included in core as of D6 {openid}
                     Allows one or more identities
               OpenID provider support
                     Contrib module {openid_provider}
                     See James Walker’s talk happening right now!




         Authentication → OpenID & OAuth


Tuesday, March 10, 2009
Auth: OpenID & OAuth
               Login and a “valet key” for many websites
               OpenID login support
                     Included in core as of D6 {openid}
                     Allows one or more identities
               OpenID provider support
                     Contrib module {openid_provider}
                     See James Walker’s talk happening right now!
                          Don’t hate me for not telling you earlier




         Authentication → OpenID & OAuth


Tuesday, March 10, 2009
Auth: OpenID & OAuth
               Login and a “valet key” for many websites
               OpenID login support
                     Included in core as of D6 {openid}
                     Allows one or more identities
               OpenID provider support
                     Contrib module {openid_provider}
                     See James Walker’s talk happening right now!
                          Don’t hate me for not telling you earlier
               OAuth support with {oauth}




         Authentication → OpenID & OAuth


Tuesday, March 10, 2009
Auth: OpenID & OAuth
               Login and a “valet key” for many websites
               OpenID login support
                     Included in core as of D6 {openid}
                     Allows one or more identities
               OpenID provider support
                     Contrib module {openid_provider}
                     See James Walker’s talk happening right now!
                          Don’t hate me for not telling you earlier
               OAuth support with {oauth}
                     Gives users control over apps that use their data



         Authentication → OpenID & OAuth


Tuesday, March 10, 2009
Auth: OpenID & OAuth
               Login and a “valet key” for many websites
               OpenID login support
                     Included in core as of D6 {openid}
                     Allows one or more identities
               OpenID provider support
                     Contrib module {openid_provider}
                     See James Walker’s talk happening right now!
                          Don’t hate me for not telling you earlier
               OAuth support with {oauth}
                     Gives users control over apps that use their data
                     Can use this in your own services (including with {services})


         Authentication → OpenID & OAuth


Tuesday, March 10, 2009
Auth: LDAP




         Authentication → LDAP


Tuesday, March 10, 2009
Auth: LDAP




         Authentication → LDAP


Tuesday, March 10, 2009
Auth: LDAP
               Lightweight Directory Access Protocol




         Authentication → LDAP


Tuesday, March 10, 2009
Auth: LDAP
               Lightweight Directory Access Protocol
                     Enterprise-level solution (client integration, replication)




         Authentication → LDAP


Tuesday, March 10, 2009
Auth: LDAP
               Lightweight Directory Access Protocol
                     Enterprise-level solution (client integration, replication)
               Integration with {ldap_integration}




         Authentication → LDAP


Tuesday, March 10, 2009
Auth: LDAP
               Lightweight Directory Access Protocol
                     Enterprise-level solution (client integration, replication)
               Integration with {ldap_integration}
                     Authentication into a Drupal site




         Authentication → LDAP


Tuesday, March 10, 2009
Auth: LDAP
               Lightweight Directory Access Protocol
                     Enterprise-level solution (client integration, replication)
               Integration with {ldap_integration}
                     Authentication into a Drupal site
                     Roles based on group




         Authentication → LDAP


Tuesday, March 10, 2009
Auth: LDAP
               Lightweight Directory Access Protocol
                     Enterprise-level solution (client integration, replication)
               Integration with {ldap_integration}
                     Authentication into a Drupal site
                     Roles based on group
                     Some support for working with LDAP data




         Authentication → LDAP


Tuesday, March 10, 2009
Auth: LDAP
               Lightweight Directory Access Protocol
                     Enterprise-level solution (client integration, replication)
               Integration with {ldap_integration}
                     Authentication into a Drupal site
                     Roles based on group
                     Some support for working with LDAP data
               Provisioning with {ldap_provisioning}




         Authentication → LDAP


Tuesday, March 10, 2009
Auth: LDAP
               Lightweight Directory Access Protocol
                     Enterprise-level solution (client integration, replication)
               Integration with {ldap_integration}
                     Authentication into a Drupal site
                     Roles based on group
                     Some support for working with LDAP data
               Provisioning with {ldap_provisioning}
                     Integrates Drupal’s user registration process with LDAP




         Authentication → LDAP


Tuesday, March 10, 2009
Auth: LDAP
               Lightweight Directory Access Protocol
                     Enterprise-level solution (client integration, replication)
               Integration with {ldap_integration}
                     Authentication into a Drupal site
                     Roles based on group
                     Some support for working with LDAP data
               Provisioning with {ldap_provisioning}
                     Integrates Drupal’s user registration process with LDAP
                     Optional approval queue



         Authentication → LDAP


Tuesday, March 10, 2009
Auth: LDAP
               Lightweight Directory Access Protocol
                     Enterprise-level solution (client integration, replication)
               Integration with {ldap_integration}
                     Authentication into a Drupal site
                     Roles based on group
                     Some support for working with LDAP data
               Provisioning with {ldap_provisioning}
                     Integrates Drupal’s user registration process with LDAP
                     Optional approval queue
                     Does the LDAP account creation dirty work

         Authentication → LDAP


Tuesday, March 10, 2009
Auth: HTTP




         Authentication → HTTP


Tuesday, March 10, 2009
Auth: HTTP




         Authentication → HTTP


Tuesday, March 10, 2009
Auth: HTTP
               {securesite} & {webserver_auth}




         Authentication → HTTP


Tuesday, March 10, 2009
Auth: HTTP
               {securesite} & {webserver_auth}
                     Both protect resources at the HTTP level




         Authentication → HTTP


Tuesday, March 10, 2009
Auth: HTTP
               {securesite} & {webserver_auth}
                     Both protect resources at the HTTP level
                     Both integrate with Drupal user database




         Authentication → HTTP


Tuesday, March 10, 2009
Auth: HTTP
               {securesite} & {webserver_auth}
                     Both protect resources at the HTTP level
                     Both integrate with Drupal user database
                     Differ in scope: Drupal vs. Apache




         Authentication → HTTP


Tuesday, March 10, 2009
Auth: HTTP
               {securesite} & {webserver_auth}
                     Both protect resources at the HTTP level
                     Both integrate with Drupal user database
                     Differ in scope: Drupal vs. Apache
               IP-based login {ip_login}




         Authentication → HTTP


Tuesday, March 10, 2009
Auth: HTTP
               {securesite} & {webserver_auth}
                     Both protect resources at the HTTP level
                     Both integrate with Drupal user database
                     Differ in scope: Drupal vs. Apache
               IP-based login {ip_login}
                     Associate single or ranges of IPs to users




         Authentication → HTTP


Tuesday, March 10, 2009
Auth: HTTP
               {securesite} & {webserver_auth}
                     Both protect resources at the HTTP level
                     Both integrate with Drupal user database
                     Differ in scope: Drupal vs. Apache
               IP-based login {ip_login}
                     Associate single or ranges of IPs to users
               Certificates with {certificatelogin}




         Authentication → HTTP


Tuesday, March 10, 2009
Auth: HTTP
               {securesite} & {webserver_auth}
                     Both protect resources at the HTTP level
                     Both integrate with Drupal user database
                     Differ in scope: Drupal vs. Apache
               IP-based login {ip_login}
                     Associate single or ranges of IPs to users
               Certificates with {certificatelogin}
                     Assumes web server is handling cert auth



         Authentication → HTTP


Tuesday, March 10, 2009
Auth: HTTP
               {securesite} & {webserver_auth}
                     Both protect resources at the HTTP level
                     Both integrate with Drupal user database
                     Differ in scope: Drupal vs. Apache
               IP-based login {ip_login}
                     Associate single or ranges of IPs to users
               Certificates with {certificatelogin}
                     Assumes web server is handling cert auth
                     Looks for environment variable(s) to figure out who you are

         Authentication → HTTP


Tuesday, March 10, 2009
Advanced Interop




         Advanced Interop


Tuesday, March 10, 2009
Advanced Interop




         Advanced Interop


Tuesday, March 10, 2009
Advanced Interop


               XML-RPC




         Advanced Interop


Tuesday, March 10, 2009
Advanced Interop


               XML-RPC
               Services




         Advanced Interop


Tuesday, March 10, 2009
XML-RPC




         Advanced Interop → XML-RPC


Tuesday, March 10, 2009
XML-RPC


               Remote Procedure Calls




         Advanced Interop → XML-RPC


Tuesday, March 10, 2009
XML-RPC


               Remote Procedure Calls
               In core now (and always has been)




         Advanced Interop → XML-RPC


Tuesday, March 10, 2009
XML-RPC


               Remote Procedure Calls
               In core now (and always has been)
               Start here for basic custom APIs




         Advanced Interop → XML-RPC


Tuesday, March 10, 2009
XML-RPC: Status




         Advanced Interop → XML-RPC


Tuesday, March 10, 2009
XML-RPC: Status
               Has been in Drupal since the beginning




         Advanced Interop → XML-RPC


Tuesday, March 10, 2009
XML-RPC: Status
               Has been in Drupal since the beginning
               Effectively a subset of SOAP




         Advanced Interop → XML-RPC


Tuesday, March 10, 2009
XML-RPC: Status
               Has been in Drupal since the beginning
               Effectively a subset of SOAP
               Security fears? Not so fast




         Advanced Interop → XML-RPC


Tuesday, March 10, 2009
XML-RPC: Status
               Has been in Drupal since the beginning
               Effectively a subset of SOAP
               Security fears? Not so fast
               Widely accessible




         Advanced Interop → XML-RPC


Tuesday, March 10, 2009
XML-RPC: Status
               Has been in Drupal since the beginning
               Effectively a subset of SOAP
               Security fears? Not so fast
               Widely accessible
                     PHP, Perl, Python, C, C++, Objective-C, Ruby, Java,
                     JavaScript, Flash, .NET, Erlang


         Advanced Interop → XML-RPC


Tuesday, March 10, 2009
XML-RPC: Status
               Has been in Drupal since the beginning
               Effectively a subset of SOAP
               Security fears? Not so fast
               Widely accessible
                     PHP, Perl, Python, C, C++, Objective-C, Ruby, Java,
                     JavaScript, Flash, .NET, Erlang
                     You get the idea

         Advanced Interop → XML-RPC


Tuesday, March 10, 2009
XML-RPC: Basics




         Advanced Interop → XML-RPC


Tuesday, March 10, 2009
XML-RPC: Basics
               XML encoding




         Advanced Interop → XML-RPC


Tuesday, March 10, 2009
XML-RPC: Basics
               XML encoding
               HTTP transport




         Advanced Interop → XML-RPC


Tuesday, March 10, 2009
XML-RPC: Basics
               XML encoding
               HTTP transport
                     Can use HTTPS for security




         Advanced Interop → XML-RPC


Tuesday, March 10, 2009
XML-RPC: Basics
               XML encoding
               HTTP transport
                     Can use HTTPS for security
                     Authentication options at HTTP layer




         Advanced Interop → XML-RPC


Tuesday, March 10, 2009
XML-RPC: Basics
               XML encoding
               HTTP transport
                     Can use HTTPS for security
                     Authentication options at HTTP layer
                     Custom authentication in the method layer




         Advanced Interop → XML-RPC


Tuesday, March 10, 2009
XML-RPC: Basics
               XML encoding
               HTTP transport
                     Can use HTTPS for security
                     Authentication options at HTTP layer
                     Custom authentication in the method layer
                          Send credentials as argument(s)


         Advanced Interop → XML-RPC


Tuesday, March 10, 2009
XML-RPC: Basics
               XML encoding
               HTTP transport
                     Can use HTTPS for security
                     Authentication options at HTTP layer
                     Custom authentication in the method layer
                          Send credentials as argument(s)
                          Custom API key solution
         Advanced Interop → XML-RPC


Tuesday, March 10, 2009
XML-RPC: Format




         Advanced Interop → XML-RPC


Tuesday, March 10, 2009
XML-RPC: Format
                          <methodCall>
                            <methodName>
                              sandwich.makeMeOne
                            </methodName>
                            <params>
                              <param>
                                <value>
                                  <string>ham and swiss</string>
                                </value>
                              </param>
                            <params>
                          </methodCall>



         Advanced Interop → XML-RPC


Tuesday, March 10, 2009
XML-RPC: Customizing




         Advanced Interop → XML-RPC


Tuesday, March 10, 2009
XML-RPC: Customizing

               hook_xmlrpc()




         Advanced Interop → XML-RPC


Tuesday, March 10, 2009
XML-RPC: Customizing

               hook_xmlrpc()
                     Map exposed methods & parameters




         Advanced Interop → XML-RPC


Tuesday, March 10, 2009
XML-RPC: Customizing

               hook_xmlrpc()
                     Map exposed methods & parameters
                     Write those methods in straight Drupal




         Advanced Interop → XML-RPC


Tuesday, March 10, 2009
XML-RPC: Customizing

               hook_xmlrpc()
                     Map exposed methods & parameters
                     Write those methods in straight Drupal
                     Encoding is taken care of for you



         Advanced Interop → XML-RPC


Tuesday, March 10, 2009
XML-RPC: The Work




         Advanced Interop → XML-RPC


Tuesday, March 10, 2009
XML-RPC: The Work
                          function sandwich_make($type) {

                               switch ($type) {

                                   case ‘ham and swiss’:

                                   /**

                                      * sandwich making code goes here

                                      */

                                   break;

                               }
                               return TRUE;

                           }


         Advanced Interop → XML-RPC


Tuesday, March 10, 2009
XML-RPC: Mapping




         Advanced Interop → XML-RPC


Tuesday, March 10, 2009
XML-RPC: Mapping
                          function sandwich_xmlrpc() {
                               return array(
                                    array(
                                         ‘sandwich.makeMeOne’,
                                         ‘sandwich_make’,
                                         array(
                                              ‘boolean’,
                                              ‘string’,
                                         ),
                                         t(‘Drupal sandwich factory’),
                                    ),
                               );
                           }


         Advanced Interop → XML-RPC


Tuesday, March 10, 2009
XML-RPC: Mapping
                          function sandwich_xmlrpc() {
                               return array(
                                                                   RPC method name
                                    array(
                                         ‘sandwich.makeMeOne’,
                                         ‘sandwich_make’,
                                         array(
                                              ‘boolean’,
                                              ‘string’,
                                         ),
                                         t(‘Drupal sandwich factory’),
                                    ),
                               );
                           }


         Advanced Interop → XML-RPC


Tuesday, March 10, 2009
XML-RPC: Mapping
                          function sandwich_xmlrpc() {
                               return array(
                                                                   RPC method name
                                    array(
                                         ‘sandwich.makeMeOne’,
                                                                   Module function name
                                         ‘sandwich_make’,
                                         array(
                                              ‘boolean’,
                                              ‘string’,
                                         ),
                                         t(‘Drupal sandwich factory’),
                                    ),
                               );
                           }


         Advanced Interop → XML-RPC


Tuesday, March 10, 2009
XML-RPC: Mapping
                          function sandwich_xmlrpc() {
                               return array(
                                                                   RPC method name
                                    array(
                                         ‘sandwich.makeMeOne’,
                                                                   Module function name
                                         ‘sandwich_make’,
                                         array(
                                                                   Module function return type
                                              ‘boolean’,
                                              ‘string’,
                                         ),
                                         t(‘Drupal sandwich factory’),
                                    ),
                               );
                           }


         Advanced Interop → XML-RPC


Tuesday, March 10, 2009
XML-RPC: Mapping
                          function sandwich_xmlrpc() {
                               return array(
                                                                   RPC method name
                                    array(
                                         ‘sandwich.makeMeOne’,
                                                                   Module function name
                                         ‘sandwich_make’,
                                         array(
                                                                   Module function return type
                                              ‘boolean’,
                                              ‘string’,
                                                                   Module function argument type(s)
                                         ),
                                         t(‘Drupal sandwich factory’),
                                    ),
                               );
                           }


         Advanced Interop → XML-RPC


Tuesday, March 10, 2009
Services




         Advanced Interop → Services


Tuesday, March 10, 2009
Services
               Works similarly to core’s XML-RPC




         Advanced Interop → Services


Tuesday, March 10, 2009
Services
               Works similarly to core’s XML-RPC
               Extends the basic concept in several key ways




         Advanced Interop → Services


Tuesday, March 10, 2009
Services
               Works similarly to core’s XML-RPC
               Extends the basic concept in several key ways
                     Pluggable server backends




         Advanced Interop → Services


Tuesday, March 10, 2009
Services
               Works similarly to core’s XML-RPC
               Extends the basic concept in several key ways
                     Pluggable server backends
                          Comes with XML-RPC using hook_xmlrpc()




         Advanced Interop → Services


Tuesday, March 10, 2009
Services
               Works similarly to core’s XML-RPC
               Extends the basic concept in several key ways
                     Pluggable server backends
                          Comes with XML-RPC using hook_xmlrpc()
                          Modules exist for SOAP, REST, JSON




         Advanced Interop → Services


Tuesday, March 10, 2009
Services
               Works similarly to core’s XML-RPC
               Extends the basic concept in several key ways
                     Pluggable server backends
                          Comes with XML-RPC using hook_xmlrpc()
                          Modules exist for SOAP, REST, JSON
                     Pluggable data libraries




         Advanced Interop → Services


Tuesday, March 10, 2009
Services
               Works similarly to core’s XML-RPC
               Extends the basic concept in several key ways
                     Pluggable server backends
                          Comes with XML-RPC using hook_xmlrpc()
                          Modules exist for SOAP, REST, JSON
                     Pluggable data libraries
                     Introspection tool (web service browser/tester)



         Advanced Interop → Services


Tuesday, March 10, 2009
Services
               Works similarly to core’s XML-RPC
               Extends the basic concept in several key ways
                     Pluggable server backends
                          Comes with XML-RPC using hook_xmlrpc()
                          Modules exist for SOAP, REST, JSON
                     Pluggable data libraries
                     Introspection tool (web service browser/tester)
                     API key support

         Advanced Interop → Services


Tuesday, March 10, 2009
Services: Libraries




         Advanced Interop → Services


Tuesday, March 10, 2009
Services: Libraries
               Get file info or by node




         Advanced Interop → Services


Tuesday, March 10, 2009
Services: Libraries
               Get file info or by node
               Get menu trees




         Advanced Interop → Services


Tuesday, March 10, 2009
Services: Libraries
               Get file info or by node
               Get menu trees
               Get/save/delete nodes




         Advanced Interop → Services


Tuesday, March 10, 2009
Services: Libraries
               Get file info or by node
               Get menu trees
               Get/save/delete nodes
               Search nodes & users




         Advanced Interop → Services


Tuesday, March 10, 2009
Services: Libraries
               Get file info or by node
               Get menu trees
               Get/save/delete nodes
               Search nodes & users
               Get system variables & modules; send email




         Advanced Interop → Services


Tuesday, March 10, 2009
Services: Libraries
               Get file info or by node
               Get menu trees
               Get/save/delete nodes
               Search nodes & users
               Get system variables & modules; send email
               Get taxonomy trees & nodes




         Advanced Interop → Services


Tuesday, March 10, 2009
Services: Libraries
               Get file info or by node
               Get menu trees
               Get/save/delete nodes
               Search nodes & users
               Get system variables & modules; send email
               Get taxonomy trees & nodes
               Get/delete/login/logout/save user



         Advanced Interop → Services


Tuesday, March 10, 2009
Services: Libraries
               Get file info or by node
               Get menu trees
               Get/save/delete nodes
               Search nodes & users
               Get system variables & modules; send email
               Get taxonomy trees & nodes
               Get/delete/login/logout/save user
               Get/import/export views

         Advanced Interop → Services


Tuesday, March 10, 2009
Services: Example




         Advanced Interop → Services


Tuesday, March 10, 2009
Services: Example

               Send HTTP POST to /services/json




         Advanced Interop → Services


Tuesday, March 10, 2009
Services: Example

               Send HTTP POST to /services/json

                     method: search.nodes




         Advanced Interop → Services


Tuesday, March 10, 2009
Services: Example

               Send HTTP POST to /services/json

                     method: search.nodes

                     search keys: foo bar




         Advanced Interop → Services


Tuesday, March 10, 2009
Services: Example

               Send HTTP POST to /services/json

                     method: search.nodes

                     search keys: foo bar
               Get back JSON data




         Advanced Interop → Services


Tuesday, March 10, 2009
Services: Example

               Send HTTP POST to /services/json

                     method: search.nodes

                     search keys: foo bar
               Get back JSON data
                     Array of node objects matching search


         Advanced Interop → Services


Tuesday, March 10, 2009
Other Talks This Week




Tuesday, March 10, 2009
Other Talks This Week
                     Using SMS For Data        Communicating Data
                     Collection                Online: Data
                                               Visualizations and
                     The Future of Files and
                                               Opening Data
                     Media in Drupal 7
                                               Flash CMS: Drupal as
                     Media Mover: File
                                               an Adobe Flex Backend
                     Processing and
                     Storage                   Promiscuous Drupal:
                                               Building Your Site With
                     Mailing Strategies For
                                               Web APIs
                     Drupal


Tuesday, March 10, 2009
Conclusions




Tuesday, March 10, 2009
Conclusions




Tuesday, March 10, 2009
Conclusions


               Drupal is ready for integration now




Tuesday, March 10, 2009
Conclusions


               Drupal is ready for integration now
               Rich toolset for social sites + remote clients




Tuesday, March 10, 2009
Conclusions


               Drupal is ready for integration now
               Rich toolset for social sites + remote clients
               There are many ways to extend existing integration




Tuesday, March 10, 2009
Resources




Tuesday, March 10, 2009
Resources




Tuesday, March 10, 2009
Resources

               http://codesorcery.net/dcdc




Tuesday, March 10, 2009
Resources

               http://codesorcery.net/dcdc
                     Will contain these slides




Tuesday, March 10, 2009
Resources

               http://codesorcery.net/dcdc
                     Will contain these slides
                     Will have full list of modules mentioned today




Tuesday, March 10, 2009
Resources

               http://codesorcery.net/dcdc
                     Will contain these slides
                     Will have full list of modules mentioned today
               How to reach me




Tuesday, March 10, 2009
Resources

               http://codesorcery.net/dcdc
                     Will contain these slides
                     Will have full list of modules mentioned today
               How to reach me
                     Twitter: incanus77




Tuesday, March 10, 2009
Resources

               http://codesorcery.net/dcdc
                     Will contain these slides
                     Will have full list of modules mentioned today
               How to reach me
                     Twitter: incanus77
               Q&A


Tuesday, March 10, 2009

Weitere ähnliche Inhalte

Andere mochten auch

Sony laptop battery
Sony laptop batterySony laptop battery
Sony laptop batterycorporatt54
 
Wc1307 h mi concepts & systems review-preview
Wc1307   h mi concepts & systems  review-previewWc1307   h mi concepts & systems  review-preview
Wc1307 h mi concepts & systems review-previewMaria Willamowius
 
Operators in mule dataweave
Operators in mule dataweaveOperators in mule dataweave
Operators in mule dataweaveRamakrishna kapa
 
Big win for reforms after loss in bihar
Big win for reforms after loss in biharBig win for reforms after loss in bihar
Big win for reforms after loss in biharSaxbee Consultants
 
Listino Prezzi Volkswagen Tiguan 2017
Listino Prezzi Volkswagen Tiguan 2017Listino Prezzi Volkswagen Tiguan 2017
Listino Prezzi Volkswagen Tiguan 2017Autoblog.it
 
Avances científicos debido a la carrera espacial.
Avances científicos debido a la carrera espacial.Avances científicos debido a la carrera espacial.
Avances científicos debido a la carrera espacial.Diana Balukh
 
Content marketing tactics to grow traffic for your business
Content marketing tactics to grow traffic for your businessContent marketing tactics to grow traffic for your business
Content marketing tactics to grow traffic for your businessLetitiah Obiri
 
Turbo charger complete prensation
Turbo charger complete prensationTurbo charger complete prensation
Turbo charger complete prensationSwapnil Vhotkar
 

Andere mochten auch (11)

Sony laptop battery
Sony laptop batterySony laptop battery
Sony laptop battery
 
Wc1307 h mi concepts & systems review-preview
Wc1307   h mi concepts & systems  review-previewWc1307   h mi concepts & systems  review-preview
Wc1307 h mi concepts & systems review-preview
 
Data weave in mule
Data weave in muleData weave in mule
Data weave in mule
 
Operators in mule dataweave
Operators in mule dataweaveOperators in mule dataweave
Operators in mule dataweave
 
Big win for reforms after loss in bihar
Big win for reforms after loss in biharBig win for reforms after loss in bihar
Big win for reforms after loss in bihar
 
Listino Prezzi Volkswagen Tiguan 2017
Listino Prezzi Volkswagen Tiguan 2017Listino Prezzi Volkswagen Tiguan 2017
Listino Prezzi Volkswagen Tiguan 2017
 
Avances científicos debido a la carrera espacial.
Avances científicos debido a la carrera espacial.Avances científicos debido a la carrera espacial.
Avances científicos debido a la carrera espacial.
 
Content marketing tactics to grow traffic for your business
Content marketing tactics to grow traffic for your businessContent marketing tactics to grow traffic for your business
Content marketing tactics to grow traffic for your business
 
Turbo charger complete prensation
Turbo charger complete prensationTurbo charger complete prensation
Turbo charger complete prensation
 
Tigers profile
Tigers profileTigers profile
Tigers profile
 
(54)
(54)(54)
(54)
 

Ähnlich wie Beyond The Web: Drupal Meets The Desktop (And Mobile)

Drupal Themes: Past, present and future
Drupal Themes: Past, present and futureDrupal Themes: Past, present and future
Drupal Themes: Past, present and futureNicolas Borda
 
Semantics Enriched Service Environments
Semantics Enriched Service EnvironmentsSemantics Enriched Service Environments
Semantics Enriched Service EnvironmentsKarthik Gomadam
 
Kollaborationtools
KollaborationtoolsKollaborationtools
Kollaborationtoolsguest9e39ad
 
Chad Udell - Developers are from Mars, Designers are from Venus
Chad Udell - Developers are from Mars, Designers are from VenusChad Udell - Developers are from Mars, Designers are from Venus
Chad Udell - Developers are from Mars, Designers are from Venus360|Conferences
 
Frozen Rails Slides
Frozen Rails SlidesFrozen Rails Slides
Frozen Rails Slidescarllerche
 
HTML5 Web Standards
HTML5 Web StandardsHTML5 Web Standards
HTML5 Web StandardsVu Tran Lam
 
Gaelyk quickie - GR8Conf Europe 2010 - Guillaume Laforge
Gaelyk quickie - GR8Conf Europe 2010 - Guillaume LaforgeGaelyk quickie - GR8Conf Europe 2010 - Guillaume Laforge
Gaelyk quickie - GR8Conf Europe 2010 - Guillaume LaforgeGuillaume Laforge
 
Pharo: a powerful community @ work
Pharo: a powerful community @ workPharo: a powerful community @ work
Pharo: a powerful community @ workESUG
 
WordPress SEO - SEO-Campixx
WordPress SEO - SEO-CampixxWordPress SEO - SEO-Campixx
WordPress SEO - SEO-Campixxsteffenhd
 
The State of Puppet
The State of PuppetThe State of Puppet
The State of PuppetPuppet
 
J&Js adventures with agency best practice & the hybrid MVC framework - Umbrac...
J&Js adventures with agency best practice & the hybrid MVC framework - Umbrac...J&Js adventures with agency best practice & the hybrid MVC framework - Umbrac...
J&Js adventures with agency best practice & the hybrid MVC framework - Umbrac...Jeavon Leopold
 
Refreshdc html5css3-090719085307-phpapp01
Refreshdc html5css3-090719085307-phpapp01Refreshdc html5css3-090719085307-phpapp01
Refreshdc html5css3-090719085307-phpapp01Apoorvi Kapoor
 
Microservices and functional programming
Microservices and functional programmingMicroservices and functional programming
Microservices and functional programmingMichael Neale
 
The Case for Drupal in the Enterprise
The Case for Drupal in the EnterpriseThe Case for Drupal in the Enterprise
The Case for Drupal in the EnterpriseTreehouse Agency
 
DjangoCon 2009 Keynote
DjangoCon 2009 KeynoteDjangoCon 2009 Keynote
DjangoCon 2009 KeynoteTed Leung
 

Ähnlich wie Beyond The Web: Drupal Meets The Desktop (And Mobile) (20)

Drupal Themes: Past, present and future
Drupal Themes: Past, present and futureDrupal Themes: Past, present and future
Drupal Themes: Past, present and future
 
Semantics Enriched Service Environments
Semantics Enriched Service EnvironmentsSemantics Enriched Service Environments
Semantics Enriched Service Environments
 
Slides
SlidesSlides
Slides
 
Kollaborationtools
KollaborationtoolsKollaborationtools
Kollaborationtools
 
Chad Udell - Developers are from Mars, Designers are from Venus
Chad Udell - Developers are from Mars, Designers are from VenusChad Udell - Developers are from Mars, Designers are from Venus
Chad Udell - Developers are from Mars, Designers are from Venus
 
Frozen Rails Slides
Frozen Rails SlidesFrozen Rails Slides
Frozen Rails Slides
 
HTML5 Web Standards
HTML5 Web StandardsHTML5 Web Standards
HTML5 Web Standards
 
Gaelyk quickie - GR8Conf Europe 2010 - Guillaume Laforge
Gaelyk quickie - GR8Conf Europe 2010 - Guillaume LaforgeGaelyk quickie - GR8Conf Europe 2010 - Guillaume Laforge
Gaelyk quickie - GR8Conf Europe 2010 - Guillaume Laforge
 
Pharo: a powerful community @ work
Pharo: a powerful community @ workPharo: a powerful community @ work
Pharo: a powerful community @ work
 
WordPress SEO - SEO-Campixx
WordPress SEO - SEO-CampixxWordPress SEO - SEO-Campixx
WordPress SEO - SEO-Campixx
 
The State of Puppet
The State of PuppetThe State of Puppet
The State of Puppet
 
ASP.NET Concept and Practice
ASP.NET Concept and PracticeASP.NET Concept and Practice
ASP.NET Concept and Practice
 
Web 3.0: What's Next
Web 3.0: What's NextWeb 3.0: What's Next
Web 3.0: What's Next
 
J&Js adventures with agency best practice & the hybrid MVC framework - Umbrac...
J&Js adventures with agency best practice & the hybrid MVC framework - Umbrac...J&Js adventures with agency best practice & the hybrid MVC framework - Umbrac...
J&Js adventures with agency best practice & the hybrid MVC framework - Umbrac...
 
Up to Speed on HTML 5 and CSS 3
Up to Speed on HTML 5 and CSS 3Up to Speed on HTML 5 and CSS 3
Up to Speed on HTML 5 and CSS 3
 
Refreshdc html5css3-090719085307-phpapp01
Refreshdc html5css3-090719085307-phpapp01Refreshdc html5css3-090719085307-phpapp01
Refreshdc html5css3-090719085307-phpapp01
 
Microservices and functional programming
Microservices and functional programmingMicroservices and functional programming
Microservices and functional programming
 
The Case for Drupal in the Enterprise
The Case for Drupal in the EnterpriseThe Case for Drupal in the Enterprise
The Case for Drupal in the Enterprise
 
Infrastructure as Code with Chef / Puppet
Infrastructure as Code with Chef / PuppetInfrastructure as Code with Chef / Puppet
Infrastructure as Code with Chef / Puppet
 
DjangoCon 2009 Keynote
DjangoCon 2009 KeynoteDjangoCon 2009 Keynote
DjangoCon 2009 Keynote
 

Kürzlich hochgeladen

DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????blackmambaettijean
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 

Kürzlich hochgeladen (20)

DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 

Beyond The Web: Drupal Meets The Desktop (And Mobile)

  • 1. Beyond The Web Drupal Meets The Desktop (And Mobile) Justin Miller Code Sorcery Workshop, LLC http://codesorcery.net/dcdc Tuesday, March 10, 2009
  • 4. Introduction Personal introduction Tuesday, March 10, 2009
  • 5. Introduction Personal introduction Format & conventions for this talk Tuesday, March 10, 2009
  • 6. Introduction Personal introduction Format & conventions for this talk Assume familiarity with core/contrib, modules, hooks Tuesday, March 10, 2009
  • 7. Introduction Personal introduction Format & conventions for this talk Assume familiarity with core/contrib, modules, hooks Functions & other code like_this() Tuesday, March 10, 2009
  • 8. Introduction Personal introduction Format & conventions for this talk Assume familiarity with core/contrib, modules, hooks Functions & other code like_this() Modules represented {like_so} Tuesday, March 10, 2009
  • 9. Introduction Personal introduction Format & conventions for this talk Assume familiarity with core/contrib, modules, hooks Functions & other code like_this() Modules represented {like_so} http://drupal.org/project/{foo} Tuesday, March 10, 2009
  • 10. Introduction Personal introduction Format & conventions for this talk Assume familiarity with core/contrib, modules, hooks Functions & other code like_this() Modules represented {like_so} http://drupal.org/project/{foo} Twitter hashtag #drupalbeyond Tuesday, March 10, 2009
  • 11. Introduction Personal introduction Format & conventions for this talk Assume familiarity with core/contrib, modules, hooks Functions & other code like_this() Modules represented {like_so} http://drupal.org/project/{foo} Twitter hashtag #drupalbeyond Q&A at the end Tuesday, March 10, 2009
  • 12. Who are you? Tuesday, March 10, 2009
  • 13. Who are you? A Drupal developer What’s out there? Does it work? Tuesday, March 10, 2009
  • 14. Who are you? A Drupal developer What’s out there? Does it work? A desktop or mobile developer Can I use Drupal as a backend? How? Why? Tuesday, March 10, 2009
  • 15. Who are you? A Drupal developer What’s out there? Does it work? A desktop or mobile developer Can I use Drupal as a backend? How? Why? A non-developer Will Drupal play nice with my existing systems? Tuesday, March 10, 2009
  • 16. Focus Of This Talk Tuesday, March 10, 2009
  • 17. Focus Of This Talk Tuesday, March 10, 2009
  • 18. Focus Of This Talk Direct concerns for desktop & mobile Tuesday, March 10, 2009
  • 19. Focus Of This Talk Direct concerns for desktop & mobile Standards-based exchange Tuesday, March 10, 2009
  • 20. Focus Of This Talk Direct concerns for desktop & mobile Standards-based exchange Authentication & security Tuesday, March 10, 2009
  • 21. Focus Of This Talk Direct concerns for desktop & mobile Standards-based exchange Authentication & security Building on what is available Tuesday, March 10, 2009
  • 24. Today’s Roadmap Putting Data In Tuesday, March 10, 2009
  • 25. Today’s Roadmap Putting Data In Getting Data Out Tuesday, March 10, 2009
  • 26. Today’s Roadmap Putting Data In Getting Data Out Authentication Tuesday, March 10, 2009
  • 27. Today’s Roadmap Putting Data In Getting Data Out Authentication Advanced Interop (XML-RPC, Services) Tuesday, March 10, 2009
  • 28. Putting Data In Putting Data In Tuesday, March 10, 2009
  • 29. Putting Data In Putting Data In Tuesday, March 10, 2009
  • 30. Putting Data In Desktop Publishing Putting Data In Tuesday, March 10, 2009
  • 31. Putting Data In Desktop Publishing File Uploads & Attachments Putting Data In Tuesday, March 10, 2009
  • 32. Putting Data In Desktop Publishing File Uploads & Attachments Files: The Next Level (File Framework) Putting Data In Tuesday, March 10, 2009
  • 33. Putting Data In Desktop Publishing File Uploads & Attachments Files: The Next Level (File Framework) WebDAV For Fun & Profit Putting Data In Tuesday, March 10, 2009
  • 34. Desktop Publishing Putting Data In ➔ Desktop Publishing Tuesday, March 10, 2009
  • 35. Desktop Publishing Basic support made available by Blog API Putting Data In ➔ Desktop Publishing Tuesday, March 10, 2009
  • 36. Desktop Publishing Basic support made available by Blog API Optional core module {blogapi} Putting Data In ➔ Desktop Publishing Tuesday, March 10, 2009
  • 37. Desktop Publishing Basic support made available by Blog API Optional core module {blogapi} Implementation of hook_xmlrpc() (more later) Putting Data In ➔ Desktop Publishing Tuesday, March 10, 2009
  • 38. Desktop Publishing Basic support made available by Blog API Optional core module {blogapi} Implementation of hook_xmlrpc() (more later) Blogger, MetaWeblog, & Movable Type Putting Data In ➔ Desktop Publishing Tuesday, March 10, 2009
  • 39. Desktop Publishing Basic support made available by Blog API Optional core module {blogapi} Implementation of hook_xmlrpc() (more later) Blogger, MetaWeblog, & Movable Type Google Docs can publish to this! Putting Data In ➔ Desktop Publishing Tuesday, March 10, 2009
  • 40. Desktop Publishing Basic support made available by Blog API Optional core module {blogapi} Implementation of hook_xmlrpc() (more later) Blogger, MetaWeblog, & Movable Type Google Docs can publish to this! Clients available for every platform Putting Data In ➔ Desktop Publishing Tuesday, March 10, 2009
  • 41. File Uploads & Attachments Putting Data In ➔ File Uploads & Attachments Tuesday, March 10, 2009
  • 42. File Uploads & Attachments Core support with {upload} Putting Data In ➔ File Uploads & Attachments Tuesday, March 10, 2009
  • 43. File Uploads & Attachments Core support with {upload} Files go into a folder on the server Putting Data In ➔ File Uploads & Attachments Tuesday, March 10, 2009
  • 44. File Uploads & Attachments Core support with {upload} Files go into a folder on the server Basic metadata is stored in the DB Name, path, type, size Putting Data In ➔ File Uploads & Attachments Tuesday, March 10, 2009
  • 45. File Uploads & Attachments Core support with {upload} Files go into a folder on the server Basic metadata is stored in the DB Name, path, type, size Can limit upload types accepted by extension Putting Data In ➔ File Uploads & Attachments Tuesday, March 10, 2009
  • 46. File Uploads & Attachments Core support with {upload} Files go into a folder on the server Basic metadata is stored in the DB Name, path, type, size Can limit upload types accepted by extension Can enable private download method Store files out of site root Drupal becomes the gatekeeper for file permissions Putting Data In ➔ File Uploads & Attachments Tuesday, March 10, 2009
  • 47. File Framework Putting Data In ➔ File Framework Tuesday, March 10, 2009
  • 48. File Framework Contrib module suite called {fileframework} Putting Data In ➔ File Framework Tuesday, March 10, 2009
  • 49. File Framework Contrib module suite called {fileframework} Provides a ‘file’ content type to Drupal Putting Data In ➔ File Framework Tuesday, March 10, 2009
  • 50. File Framework Contrib module suite called {fileframework} Provides a ‘file’ content type to Drupal Remember: normally, files are not nodes Putting Data In ➔ File Framework Tuesday, March 10, 2009
  • 51. File Framework Contrib module suite called {fileframework} Provides a ‘file’ content type to Drupal Remember: normally, files are not nodes Advanced feature set Putting Data In ➔ File Framework Tuesday, March 10, 2009
  • 52. File Framework Contrib module suite called {fileframework} Provides a ‘file’ content type to Drupal Remember: normally, files are not nodes Advanced feature set Virus scanning on upload Putting Data In ➔ File Framework Tuesday, March 10, 2009
  • 53. File Framework Contrib module suite called {fileframework} Provides a ‘file’ content type to Drupal Remember: normally, files are not nodes Advanced feature set Virus scanning on upload Automatic conversion Putting Data In ➔ File Framework Tuesday, March 10, 2009
  • 54. File Framework Contrib module suite called {fileframework} Provides a ‘file’ content type to Drupal Remember: normally, files are not nodes Advanced feature set Virus scanning on upload Automatic conversion Example: MPEG to FLV or HTML to TXT Putting Data In ➔ File Framework Tuesday, March 10, 2009
  • 55. File Framework Contrib module suite called {fileframework} Provides a ‘file’ content type to Drupal Remember: normally, files are not nodes Advanced feature set Virus scanning on upload Automatic conversion Example: MPEG to FLV or HTML to TXT Metadata extraction (EXIF, ID3, PDF properties, etc.) Putting Data In ➔ File Framework Tuesday, March 10, 2009
  • 56. File Framework Contrib module suite called {fileframework} Provides a ‘file’ content type to Drupal Remember: normally, files are not nodes Advanced feature set Virus scanning on upload Automatic conversion Example: MPEG to FLV or HTML to TXT Metadata extraction (EXIF, ID3, PDF properties, etc.) AHAH-enabled inline previews Putting Data In ➔ File Framework Tuesday, March 10, 2009
  • 57. Putting Data In ➔ File Framework Tuesday, March 10, 2009
  • 58. Putting Data In ➔ File Framework Tuesday, March 10, 2009
  • 59. Putting Data In ➔ File Framework Tuesday, March 10, 2009
  • 60. Putting Data In ➔ File Framework Tuesday, March 10, 2009
  • 61. Putting Data In ➔ File Framework Tuesday, March 10, 2009
  • 62. Putting Data In ➔ File Framework Tuesday, March 10, 2009
  • 63. Putting Data In ➔ File Framework Tuesday, March 10, 2009
  • 64. Putting Data In ➔ File Framework Tuesday, March 10, 2009
  • 65. File Framework Putting Data In ➔ File Framework Tuesday, March 10, 2009
  • 66. File Framework Efficient Putting Data In ➔ File Framework Tuesday, March 10, 2009
  • 67. File Framework Efficient File nodes can be reused Putting Data In ➔ File Framework Tuesday, March 10, 2009
  • 68. File Framework Efficient File nodes can be reused Re-attached again and again Putting Data In ➔ File Framework Tuesday, March 10, 2009
  • 69. File Framework Efficient File nodes can be reused Re-attached again and again Autocomplete search field Putting Data In ➔ File Framework Tuesday, March 10, 2009
  • 70. File Framework Efficient File nodes can be reused Re-attached again and again Autocomplete search field Backend is distributed & content-addressable Putting Data In ➔ File Framework Tuesday, March 10, 2009
  • 71. File Framework Efficient File nodes can be reused Re-attached again and again Autocomplete search field Backend is distributed & content-addressable Repositories on Memcached, SFTP, Amazon S3 Putting Data In ➔ File Framework Tuesday, March 10, 2009
  • 72. File Framework Efficient File nodes can be reused Re-attached again and again Autocomplete search field Backend is distributed & content-addressable Repositories on Memcached, SFTP, Amazon S3 See {bitcache} for more on the specifics Putting Data In ➔ File Framework Tuesday, March 10, 2009
  • 73. Putting Data In ➔ File Framework Tuesday, March 10, 2009
  • 74. Putting Data In ➔ File Framework Tuesday, March 10, 2009
  • 75. Putting Data In ➔ File Framework Tuesday, March 10, 2009
  • 76. WebDAV Putting Data In ➔ WebDAV Tuesday, March 10, 2009
  • 77. WebDAV Putting Data In ➔ WebDAV Tuesday, March 10, 2009
  • 78. WebDAV File Server {fileserver} Putting Data In ➔ WebDAV Tuesday, March 10, 2009
  • 79. WebDAV File Server {fileserver} Based on {dav} Putting Data In ➔ WebDAV Tuesday, March 10, 2009
  • 80. WebDAV File Server {fileserver} Based on {dav} Browse file nodes by taxonomy Putting Data In ➔ WebDAV Tuesday, March 10, 2009
  • 81. WebDAV File Server {fileserver} Based on {dav} Browse file nodes by taxonomy File Relations Server {filerelationsserver} Putting Data In ➔ WebDAV Tuesday, March 10, 2009
  • 82. WebDAV File Server {fileserver} Based on {dav} Browse file nodes by taxonomy File Relations Server {filerelationsserver} Also based on {dav} Putting Data In ➔ WebDAV Tuesday, March 10, 2009
  • 83. WebDAV File Server {fileserver} Based on {dav} Browse file nodes by taxonomy File Relations Server {filerelationsserver} Also based on {dav} Browse file nodes by: Putting Data In ➔ WebDAV Tuesday, March 10, 2009
  • 84. WebDAV File Server {fileserver} Based on {dav} Browse file nodes by taxonomy File Relations Server {filerelationsserver} Also based on {dav} Browse file nodes by: MIME type Putting Data In ➔ WebDAV Tuesday, March 10, 2009
  • 85. WebDAV File Server {fileserver} Based on {dav} Browse file nodes by taxonomy File Relations Server {filerelationsserver} Also based on {dav} Browse file nodes by: MIME type Attached-to node type (page, story, etc.) Putting Data In ➔ WebDAV Tuesday, March 10, 2009
  • 86. WebDAV File Server {fileserver} Based on {dav} Browse file nodes by taxonomy File Relations Server {filerelationsserver} Also based on {dav} Browse file nodes by: MIME type Attached-to node type (page, story, etc.) Group (via Organic Groups) Putting Data In ➔ WebDAV Tuesday, March 10, 2009
  • 87. WebDAV File Server {fileserver} Based on {dav} Browse file nodes by taxonomy File Relations Server {filerelationsserver} Also based on {dav} Browse file nodes by: MIME type Attached-to node type (page, story, etc.) Group (via Organic Groups) WebDAV {webdav} Putting Data In ➔ WebDAV Tuesday, March 10, 2009
  • 88. WebDAV File Server {fileserver} Based on {dav} Browse file nodes by taxonomy File Relations Server {filerelationsserver} Also based on {dav} Browse file nodes by: MIME type Attached-to node type (page, story, etc.) Group (via Organic Groups) WebDAV {webdav} Access to textual nodes (pages, stories, etc.) Putting Data In ➔ WebDAV Tuesday, March 10, 2009
  • 89. Putting Data In ➔ WebDAV Tuesday, March 10, 2009
  • 90. Putting Data In ➔ WebDAV Tuesday, March 10, 2009
  • 91. Putting Data In ➔ WebDAV Tuesday, March 10, 2009
  • 92. Putting Data In ➔ WebDAV Tuesday, March 10, 2009
  • 93. Putting Data In ➔ WebDAV Tuesday, March 10, 2009
  • 94. Putting Data In ➔ WebDAV Tuesday, March 10, 2009
  • 95. Getting Data Out Getting Data Out Tuesday, March 10, 2009
  • 96. Getting Data Out Getting Data Out Tuesday, March 10, 2009
  • 97. Getting Data Out Feeds Getting Data Out Tuesday, March 10, 2009
  • 98. Getting Data Out Feeds Email Getting Data Out Tuesday, March 10, 2009
  • 99. Getting Data Out Feeds Email Popular Formats Getting Data Out Tuesday, March 10, 2009
  • 100. Getting Data Out Feeds Email Popular Formats Other Projects of Note Getting Data Out Tuesday, March 10, 2009
  • 101. General Feed Needs Getting Data Out → Feeds Tuesday, March 10, 2009
  • 102. General Feed Needs Getting Data Out → Feeds Tuesday, March 10, 2009
  • 103. General Feed Needs Core Getting Data Out → Feeds Tuesday, March 10, 2009
  • 104. General Feed Needs Core Automatic node aggregation (e.g., blog) Getting Data Out → Feeds Tuesday, March 10, 2009
  • 105. General Feed Needs Core Automatic node aggregation (e.g., blog) Create views with {views} Getting Data Out → Feeds Tuesday, March 10, 2009
  • 106. General Feed Needs Core Automatic node aggregation (e.g., blog) Create views with {views} Create displays for pages, blocks Getting Data Out → Feeds Tuesday, March 10, 2009
  • 107. General Feed Needs Core Automatic node aggregation (e.g., blog) Create views with {views} Create displays for pages, blocks Also create displays for feeds Getting Data Out → Feeds Tuesday, March 10, 2009
  • 108. General Feed Needs Core Automatic node aggregation (e.g., blog) Create views with {views} Create displays for pages, blocks Also create displays for feeds “List, in table form, all comments on a node, then provide an RSS feed of those comments.” Getting Data Out → Feeds Tuesday, March 10, 2009
  • 109. Feed Needs: Authentication Getting Data Out → Feeds Tuesday, March 10, 2009
  • 110. Feed Needs: Authentication Getting Data Out → Feeds Tuesday, March 10, 2009
  • 111. Feed Needs: Authentication Token authentication {tokenauth} Getting Data Out → Feeds Tuesday, March 10, 2009
  • 112. Feed Needs: Authentication Token authentication {tokenauth} Checks for token present in URL Getting Data Out → Feeds Tuesday, March 10, 2009
  • 113. Feed Needs: Authentication Token authentication {tokenauth} Checks for token present in URL User is automatically logged in as token owner Getting Data Out → Feeds Tuesday, March 10, 2009
  • 114. Feed Needs: Authentication Token authentication {tokenauth} Checks for token present in URL User is automatically logged in as token owner Server-based authentication Getting Data Out → Feeds Tuesday, March 10, 2009
  • 115. Feed Needs: Authentication Token authentication {tokenauth} Checks for token present in URL User is automatically logged in as token owner Server-based authentication .htaccess, database-backed, LDAP Getting Data Out → Feeds Tuesday, March 10, 2009
  • 116. Feed Needs: Authentication Token authentication {tokenauth} Checks for token present in URL User is automatically logged in as token owner Server-based authentication .htaccess, database-backed, LDAP Applies to non-feed URLs too Getting Data Out → Feeds Tuesday, March 10, 2009
  • 117. Feed Needs: Authentication Token authentication {tokenauth} Checks for token present in URL User is automatically logged in as token owner Server-based authentication .htaccess, database-backed, LDAP Applies to non-feed URLs too Covered in more general terms later Getting Data Out → Feeds Tuesday, March 10, 2009
  • 118. Other Feed Needs Tuesday, March 10, 2009
  • 119. Other Feed Needs Atom in addition to RSS using {atom} Tuesday, March 10, 2009
  • 120. Other Feed Needs Atom in addition to RSS using {atom} Provides node, blog, user blog, & taxonomy feeds Tuesday, March 10, 2009
  • 121. Other Feed Needs Atom in addition to RSS using {atom} Provides node, blog, user blog, & taxonomy feeds Feed Path Publisher {feed_path_publisher} Tuesday, March 10, 2009
  • 122. Other Feed Needs Atom in addition to RSS using {atom} Provides node, blog, user blog, & taxonomy feeds Feed Path Publisher {feed_path_publisher} Adds <link> tags to pages based on path Tuesday, March 10, 2009
  • 123. Other Feed Needs Atom in addition to RSS using {atom} Provides node, blog, user blog, & taxonomy feeds Feed Path Publisher {feed_path_publisher} Adds <link> tags to pages based on path Tuesday, March 10, 2009
  • 124. Email Getting Data Out → Email Tuesday, March 10, 2009
  • 125. Email Getting Data Out → Email Tuesday, March 10, 2009
  • 126. Email Core includes drupal_mail() Getting Data Out → Email Tuesday, March 10, 2009
  • 127. Email Core includes drupal_mail() Important since it abstracts sending Getting Data Out → Email Tuesday, March 10, 2009
  • 128. Email Core includes drupal_mail() Important since it abstracts sending Uses PHP mail() by default Getting Data Out → Email Tuesday, March 10, 2009
  • 129. Email Core includes drupal_mail() Important since it abstracts sending Uses PHP mail() by default Allows swapping the backend Getting Data Out → Email Tuesday, March 10, 2009
  • 130. Email Core includes drupal_mail() Important since it abstracts sending Uses PHP mail() by default Allows swapping the backend Example: development site holding email Getting Data Out → Email Tuesday, March 10, 2009
  • 131. Email Core includes drupal_mail() Important since it abstracts sending Uses PHP mail() by default Allows swapping the backend Example: development site holding email More robust emailing with {smtp} Getting Data Out → Email Tuesday, March 10, 2009
  • 132. Email Core includes drupal_mail() Important since it abstracts sending Uses PHP mail() by default Allows swapping the backend Example: development site holding email More robust emailing with {smtp} Centralize your outgoing mail Getting Data Out → Email Tuesday, March 10, 2009
  • 133. Email Core includes drupal_mail() Important since it abstracts sending Uses PHP mail() by default Allows swapping the backend Example: development site holding email More robust emailing with {smtp} Centralize your outgoing mail Send mail over SSL Getting Data Out → Email Tuesday, March 10, 2009
  • 134. Email Core includes drupal_mail() Important since it abstracts sending Uses PHP mail() by default Allows swapping the backend Example: development site holding email More robust emailing with {smtp} Centralize your outgoing mail Send mail over SSL Identify mailing sites by username (via SMTP auth) Getting Data Out → Email Tuesday, March 10, 2009
  • 135. Popular Formats Getting Data Out → Popular Formats Tuesday, March 10, 2009
  • 136. Popular Formats CSV, Word, TXT with {views_bonus} Getting Data Out → Popular Formats Tuesday, March 10, 2009
  • 137. Popular Formats CSV, Word, TXT with {views_bonus} Simple read-only JSON with {views_json} Getting Data Out → Popular Formats Tuesday, March 10, 2009
  • 138. Popular Formats CSV, Word, TXT with {views_bonus} Simple read-only JSON with {views_json} KML map data with {kml} Getting Data Out → Popular Formats Tuesday, March 10, 2009
  • 139. Other Projects of Note Getting Data Out → Other Projects Tuesday, March 10, 2009
  • 140. Other Projects of Note Print & PDF with {print} Getting Data Out → Other Projects Tuesday, March 10, 2009
  • 141. Other Projects of Note Print & PDF with {print} Force file downloads with {file_force} Getting Data Out → Other Projects Tuesday, March 10, 2009
  • 142. Other Projects of Note Print & PDF with {print} Force file downloads with {file_force} Backup & migrate with {backup_migrate} Getting Data Out → Other Projects Tuesday, March 10, 2009
  • 143. Authentication Authentication Tuesday, March 10, 2009
  • 144. Authentication Authentication Tuesday, March 10, 2009
  • 145. Authentication OpenID & OAuth Authentication Tuesday, March 10, 2009
  • 146. Authentication OpenID & OAuth LDAP Authentication Tuesday, March 10, 2009
  • 147. Authentication OpenID & OAuth LDAP HTTP Authentication Tuesday, March 10, 2009
  • 148. Auth: OpenID & OAuth Authentication → OpenID & OAuth Tuesday, March 10, 2009
  • 149. Auth: OpenID & OAuth Authentication → OpenID & OAuth Tuesday, March 10, 2009
  • 150. Auth: OpenID & OAuth Login and a “valet key” for many websites Authentication → OpenID & OAuth Tuesday, March 10, 2009
  • 151. Auth: OpenID & OAuth Login and a “valet key” for many websites OpenID login support Authentication → OpenID & OAuth Tuesday, March 10, 2009
  • 152. Auth: OpenID & OAuth Login and a “valet key” for many websites OpenID login support Included in core as of D6 {openid} Authentication → OpenID & OAuth Tuesday, March 10, 2009
  • 153. Auth: OpenID & OAuth Login and a “valet key” for many websites OpenID login support Included in core as of D6 {openid} Allows one or more identities Authentication → OpenID & OAuth Tuesday, March 10, 2009
  • 154. Auth: OpenID & OAuth Login and a “valet key” for many websites OpenID login support Included in core as of D6 {openid} Allows one or more identities OpenID provider support Authentication → OpenID & OAuth Tuesday, March 10, 2009
  • 155. Auth: OpenID & OAuth Login and a “valet key” for many websites OpenID login support Included in core as of D6 {openid} Allows one or more identities OpenID provider support Contrib module {openid_provider} Authentication → OpenID & OAuth Tuesday, March 10, 2009
  • 156. Auth: OpenID & OAuth Login and a “valet key” for many websites OpenID login support Included in core as of D6 {openid} Allows one or more identities OpenID provider support Contrib module {openid_provider} See James Walker’s talk happening right now! Authentication → OpenID & OAuth Tuesday, March 10, 2009
  • 157. Auth: OpenID & OAuth Login and a “valet key” for many websites OpenID login support Included in core as of D6 {openid} Allows one or more identities OpenID provider support Contrib module {openid_provider} See James Walker’s talk happening right now! Don’t hate me for not telling you earlier Authentication → OpenID & OAuth Tuesday, March 10, 2009
  • 158. Auth: OpenID & OAuth Login and a “valet key” for many websites OpenID login support Included in core as of D6 {openid} Allows one or more identities OpenID provider support Contrib module {openid_provider} See James Walker’s talk happening right now! Don’t hate me for not telling you earlier OAuth support with {oauth} Authentication → OpenID & OAuth Tuesday, March 10, 2009
  • 159. Auth: OpenID & OAuth Login and a “valet key” for many websites OpenID login support Included in core as of D6 {openid} Allows one or more identities OpenID provider support Contrib module {openid_provider} See James Walker’s talk happening right now! Don’t hate me for not telling you earlier OAuth support with {oauth} Gives users control over apps that use their data Authentication → OpenID & OAuth Tuesday, March 10, 2009
  • 160. Auth: OpenID & OAuth Login and a “valet key” for many websites OpenID login support Included in core as of D6 {openid} Allows one or more identities OpenID provider support Contrib module {openid_provider} See James Walker’s talk happening right now! Don’t hate me for not telling you earlier OAuth support with {oauth} Gives users control over apps that use their data Can use this in your own services (including with {services}) Authentication → OpenID & OAuth Tuesday, March 10, 2009
  • 161. Auth: LDAP Authentication → LDAP Tuesday, March 10, 2009
  • 162. Auth: LDAP Authentication → LDAP Tuesday, March 10, 2009
  • 163. Auth: LDAP Lightweight Directory Access Protocol Authentication → LDAP Tuesday, March 10, 2009
  • 164. Auth: LDAP Lightweight Directory Access Protocol Enterprise-level solution (client integration, replication) Authentication → LDAP Tuesday, March 10, 2009
  • 165. Auth: LDAP Lightweight Directory Access Protocol Enterprise-level solution (client integration, replication) Integration with {ldap_integration} Authentication → LDAP Tuesday, March 10, 2009
  • 166. Auth: LDAP Lightweight Directory Access Protocol Enterprise-level solution (client integration, replication) Integration with {ldap_integration} Authentication into a Drupal site Authentication → LDAP Tuesday, March 10, 2009
  • 167. Auth: LDAP Lightweight Directory Access Protocol Enterprise-level solution (client integration, replication) Integration with {ldap_integration} Authentication into a Drupal site Roles based on group Authentication → LDAP Tuesday, March 10, 2009
  • 168. Auth: LDAP Lightweight Directory Access Protocol Enterprise-level solution (client integration, replication) Integration with {ldap_integration} Authentication into a Drupal site Roles based on group Some support for working with LDAP data Authentication → LDAP Tuesday, March 10, 2009
  • 169. Auth: LDAP Lightweight Directory Access Protocol Enterprise-level solution (client integration, replication) Integration with {ldap_integration} Authentication into a Drupal site Roles based on group Some support for working with LDAP data Provisioning with {ldap_provisioning} Authentication → LDAP Tuesday, March 10, 2009
  • 170. Auth: LDAP Lightweight Directory Access Protocol Enterprise-level solution (client integration, replication) Integration with {ldap_integration} Authentication into a Drupal site Roles based on group Some support for working with LDAP data Provisioning with {ldap_provisioning} Integrates Drupal’s user registration process with LDAP Authentication → LDAP Tuesday, March 10, 2009
  • 171. Auth: LDAP Lightweight Directory Access Protocol Enterprise-level solution (client integration, replication) Integration with {ldap_integration} Authentication into a Drupal site Roles based on group Some support for working with LDAP data Provisioning with {ldap_provisioning} Integrates Drupal’s user registration process with LDAP Optional approval queue Authentication → LDAP Tuesday, March 10, 2009
  • 172. Auth: LDAP Lightweight Directory Access Protocol Enterprise-level solution (client integration, replication) Integration with {ldap_integration} Authentication into a Drupal site Roles based on group Some support for working with LDAP data Provisioning with {ldap_provisioning} Integrates Drupal’s user registration process with LDAP Optional approval queue Does the LDAP account creation dirty work Authentication → LDAP Tuesday, March 10, 2009
  • 173. Auth: HTTP Authentication → HTTP Tuesday, March 10, 2009
  • 174. Auth: HTTP Authentication → HTTP Tuesday, March 10, 2009
  • 175. Auth: HTTP {securesite} & {webserver_auth} Authentication → HTTP Tuesday, March 10, 2009
  • 176. Auth: HTTP {securesite} & {webserver_auth} Both protect resources at the HTTP level Authentication → HTTP Tuesday, March 10, 2009
  • 177. Auth: HTTP {securesite} & {webserver_auth} Both protect resources at the HTTP level Both integrate with Drupal user database Authentication → HTTP Tuesday, March 10, 2009
  • 178. Auth: HTTP {securesite} & {webserver_auth} Both protect resources at the HTTP level Both integrate with Drupal user database Differ in scope: Drupal vs. Apache Authentication → HTTP Tuesday, March 10, 2009
  • 179. Auth: HTTP {securesite} & {webserver_auth} Both protect resources at the HTTP level Both integrate with Drupal user database Differ in scope: Drupal vs. Apache IP-based login {ip_login} Authentication → HTTP Tuesday, March 10, 2009
  • 180. Auth: HTTP {securesite} & {webserver_auth} Both protect resources at the HTTP level Both integrate with Drupal user database Differ in scope: Drupal vs. Apache IP-based login {ip_login} Associate single or ranges of IPs to users Authentication → HTTP Tuesday, March 10, 2009
  • 181. Auth: HTTP {securesite} & {webserver_auth} Both protect resources at the HTTP level Both integrate with Drupal user database Differ in scope: Drupal vs. Apache IP-based login {ip_login} Associate single or ranges of IPs to users Certificates with {certificatelogin} Authentication → HTTP Tuesday, March 10, 2009
  • 182. Auth: HTTP {securesite} & {webserver_auth} Both protect resources at the HTTP level Both integrate with Drupal user database Differ in scope: Drupal vs. Apache IP-based login {ip_login} Associate single or ranges of IPs to users Certificates with {certificatelogin} Assumes web server is handling cert auth Authentication → HTTP Tuesday, March 10, 2009
  • 183. Auth: HTTP {securesite} & {webserver_auth} Both protect resources at the HTTP level Both integrate with Drupal user database Differ in scope: Drupal vs. Apache IP-based login {ip_login} Associate single or ranges of IPs to users Certificates with {certificatelogin} Assumes web server is handling cert auth Looks for environment variable(s) to figure out who you are Authentication → HTTP Tuesday, March 10, 2009
  • 184. Advanced Interop Advanced Interop Tuesday, March 10, 2009
  • 185. Advanced Interop Advanced Interop Tuesday, March 10, 2009
  • 186. Advanced Interop XML-RPC Advanced Interop Tuesday, March 10, 2009
  • 187. Advanced Interop XML-RPC Services Advanced Interop Tuesday, March 10, 2009
  • 188. XML-RPC Advanced Interop → XML-RPC Tuesday, March 10, 2009
  • 189. XML-RPC Remote Procedure Calls Advanced Interop → XML-RPC Tuesday, March 10, 2009
  • 190. XML-RPC Remote Procedure Calls In core now (and always has been) Advanced Interop → XML-RPC Tuesday, March 10, 2009
  • 191. XML-RPC Remote Procedure Calls In core now (and always has been) Start here for basic custom APIs Advanced Interop → XML-RPC Tuesday, March 10, 2009
  • 192. XML-RPC: Status Advanced Interop → XML-RPC Tuesday, March 10, 2009
  • 193. XML-RPC: Status Has been in Drupal since the beginning Advanced Interop → XML-RPC Tuesday, March 10, 2009
  • 194. XML-RPC: Status Has been in Drupal since the beginning Effectively a subset of SOAP Advanced Interop → XML-RPC Tuesday, March 10, 2009
  • 195. XML-RPC: Status Has been in Drupal since the beginning Effectively a subset of SOAP Security fears? Not so fast Advanced Interop → XML-RPC Tuesday, March 10, 2009
  • 196. XML-RPC: Status Has been in Drupal since the beginning Effectively a subset of SOAP Security fears? Not so fast Widely accessible Advanced Interop → XML-RPC Tuesday, March 10, 2009
  • 197. XML-RPC: Status Has been in Drupal since the beginning Effectively a subset of SOAP Security fears? Not so fast Widely accessible PHP, Perl, Python, C, C++, Objective-C, Ruby, Java, JavaScript, Flash, .NET, Erlang Advanced Interop → XML-RPC Tuesday, March 10, 2009
  • 198. XML-RPC: Status Has been in Drupal since the beginning Effectively a subset of SOAP Security fears? Not so fast Widely accessible PHP, Perl, Python, C, C++, Objective-C, Ruby, Java, JavaScript, Flash, .NET, Erlang You get the idea Advanced Interop → XML-RPC Tuesday, March 10, 2009
  • 199. XML-RPC: Basics Advanced Interop → XML-RPC Tuesday, March 10, 2009
  • 200. XML-RPC: Basics XML encoding Advanced Interop → XML-RPC Tuesday, March 10, 2009
  • 201. XML-RPC: Basics XML encoding HTTP transport Advanced Interop → XML-RPC Tuesday, March 10, 2009
  • 202. XML-RPC: Basics XML encoding HTTP transport Can use HTTPS for security Advanced Interop → XML-RPC Tuesday, March 10, 2009
  • 203. XML-RPC: Basics XML encoding HTTP transport Can use HTTPS for security Authentication options at HTTP layer Advanced Interop → XML-RPC Tuesday, March 10, 2009
  • 204. XML-RPC: Basics XML encoding HTTP transport Can use HTTPS for security Authentication options at HTTP layer Custom authentication in the method layer Advanced Interop → XML-RPC Tuesday, March 10, 2009
  • 205. XML-RPC: Basics XML encoding HTTP transport Can use HTTPS for security Authentication options at HTTP layer Custom authentication in the method layer Send credentials as argument(s) Advanced Interop → XML-RPC Tuesday, March 10, 2009
  • 206. XML-RPC: Basics XML encoding HTTP transport Can use HTTPS for security Authentication options at HTTP layer Custom authentication in the method layer Send credentials as argument(s) Custom API key solution Advanced Interop → XML-RPC Tuesday, March 10, 2009
  • 207. XML-RPC: Format Advanced Interop → XML-RPC Tuesday, March 10, 2009
  • 208. XML-RPC: Format <methodCall> <methodName> sandwich.makeMeOne </methodName> <params> <param> <value> <string>ham and swiss</string> </value> </param> <params> </methodCall> Advanced Interop → XML-RPC Tuesday, March 10, 2009
  • 209. XML-RPC: Customizing Advanced Interop → XML-RPC Tuesday, March 10, 2009
  • 210. XML-RPC: Customizing hook_xmlrpc() Advanced Interop → XML-RPC Tuesday, March 10, 2009
  • 211. XML-RPC: Customizing hook_xmlrpc() Map exposed methods & parameters Advanced Interop → XML-RPC Tuesday, March 10, 2009
  • 212. XML-RPC: Customizing hook_xmlrpc() Map exposed methods & parameters Write those methods in straight Drupal Advanced Interop → XML-RPC Tuesday, March 10, 2009
  • 213. XML-RPC: Customizing hook_xmlrpc() Map exposed methods & parameters Write those methods in straight Drupal Encoding is taken care of for you Advanced Interop → XML-RPC Tuesday, March 10, 2009
  • 214. XML-RPC: The Work Advanced Interop → XML-RPC Tuesday, March 10, 2009
  • 215. XML-RPC: The Work function sandwich_make($type) { switch ($type) { case ‘ham and swiss’: /** * sandwich making code goes here */ break; } return TRUE; } Advanced Interop → XML-RPC Tuesday, March 10, 2009
  • 216. XML-RPC: Mapping Advanced Interop → XML-RPC Tuesday, March 10, 2009
  • 217. XML-RPC: Mapping function sandwich_xmlrpc() { return array( array( ‘sandwich.makeMeOne’, ‘sandwich_make’, array( ‘boolean’, ‘string’, ), t(‘Drupal sandwich factory’), ), ); } Advanced Interop → XML-RPC Tuesday, March 10, 2009
  • 218. XML-RPC: Mapping function sandwich_xmlrpc() { return array( RPC method name array( ‘sandwich.makeMeOne’, ‘sandwich_make’, array( ‘boolean’, ‘string’, ), t(‘Drupal sandwich factory’), ), ); } Advanced Interop → XML-RPC Tuesday, March 10, 2009
  • 219. XML-RPC: Mapping function sandwich_xmlrpc() { return array( RPC method name array( ‘sandwich.makeMeOne’, Module function name ‘sandwich_make’, array( ‘boolean’, ‘string’, ), t(‘Drupal sandwich factory’), ), ); } Advanced Interop → XML-RPC Tuesday, March 10, 2009
  • 220. XML-RPC: Mapping function sandwich_xmlrpc() { return array( RPC method name array( ‘sandwich.makeMeOne’, Module function name ‘sandwich_make’, array( Module function return type ‘boolean’, ‘string’, ), t(‘Drupal sandwich factory’), ), ); } Advanced Interop → XML-RPC Tuesday, March 10, 2009
  • 221. XML-RPC: Mapping function sandwich_xmlrpc() { return array( RPC method name array( ‘sandwich.makeMeOne’, Module function name ‘sandwich_make’, array( Module function return type ‘boolean’, ‘string’, Module function argument type(s) ), t(‘Drupal sandwich factory’), ), ); } Advanced Interop → XML-RPC Tuesday, March 10, 2009
  • 222. Services Advanced Interop → Services Tuesday, March 10, 2009
  • 223. Services Works similarly to core’s XML-RPC Advanced Interop → Services Tuesday, March 10, 2009
  • 224. Services Works similarly to core’s XML-RPC Extends the basic concept in several key ways Advanced Interop → Services Tuesday, March 10, 2009
  • 225. Services Works similarly to core’s XML-RPC Extends the basic concept in several key ways Pluggable server backends Advanced Interop → Services Tuesday, March 10, 2009
  • 226. Services Works similarly to core’s XML-RPC Extends the basic concept in several key ways Pluggable server backends Comes with XML-RPC using hook_xmlrpc() Advanced Interop → Services Tuesday, March 10, 2009
  • 227. Services Works similarly to core’s XML-RPC Extends the basic concept in several key ways Pluggable server backends Comes with XML-RPC using hook_xmlrpc() Modules exist for SOAP, REST, JSON Advanced Interop → Services Tuesday, March 10, 2009
  • 228. Services Works similarly to core’s XML-RPC Extends the basic concept in several key ways Pluggable server backends Comes with XML-RPC using hook_xmlrpc() Modules exist for SOAP, REST, JSON Pluggable data libraries Advanced Interop → Services Tuesday, March 10, 2009
  • 229. Services Works similarly to core’s XML-RPC Extends the basic concept in several key ways Pluggable server backends Comes with XML-RPC using hook_xmlrpc() Modules exist for SOAP, REST, JSON Pluggable data libraries Introspection tool (web service browser/tester) Advanced Interop → Services Tuesday, March 10, 2009
  • 230. Services Works similarly to core’s XML-RPC Extends the basic concept in several key ways Pluggable server backends Comes with XML-RPC using hook_xmlrpc() Modules exist for SOAP, REST, JSON Pluggable data libraries Introspection tool (web service browser/tester) API key support Advanced Interop → Services Tuesday, March 10, 2009
  • 231. Services: Libraries Advanced Interop → Services Tuesday, March 10, 2009
  • 232. Services: Libraries Get file info or by node Advanced Interop → Services Tuesday, March 10, 2009
  • 233. Services: Libraries Get file info or by node Get menu trees Advanced Interop → Services Tuesday, March 10, 2009
  • 234. Services: Libraries Get file info or by node Get menu trees Get/save/delete nodes Advanced Interop → Services Tuesday, March 10, 2009
  • 235. Services: Libraries Get file info or by node Get menu trees Get/save/delete nodes Search nodes & users Advanced Interop → Services Tuesday, March 10, 2009
  • 236. Services: Libraries Get file info or by node Get menu trees Get/save/delete nodes Search nodes & users Get system variables & modules; send email Advanced Interop → Services Tuesday, March 10, 2009
  • 237. Services: Libraries Get file info or by node Get menu trees Get/save/delete nodes Search nodes & users Get system variables & modules; send email Get taxonomy trees & nodes Advanced Interop → Services Tuesday, March 10, 2009
  • 238. Services: Libraries Get file info or by node Get menu trees Get/save/delete nodes Search nodes & users Get system variables & modules; send email Get taxonomy trees & nodes Get/delete/login/logout/save user Advanced Interop → Services Tuesday, March 10, 2009
  • 239. Services: Libraries Get file info or by node Get menu trees Get/save/delete nodes Search nodes & users Get system variables & modules; send email Get taxonomy trees & nodes Get/delete/login/logout/save user Get/import/export views Advanced Interop → Services Tuesday, March 10, 2009
  • 240. Services: Example Advanced Interop → Services Tuesday, March 10, 2009
  • 241. Services: Example Send HTTP POST to /services/json Advanced Interop → Services Tuesday, March 10, 2009
  • 242. Services: Example Send HTTP POST to /services/json method: search.nodes Advanced Interop → Services Tuesday, March 10, 2009
  • 243. Services: Example Send HTTP POST to /services/json method: search.nodes search keys: foo bar Advanced Interop → Services Tuesday, March 10, 2009
  • 244. Services: Example Send HTTP POST to /services/json method: search.nodes search keys: foo bar Get back JSON data Advanced Interop → Services Tuesday, March 10, 2009
  • 245. Services: Example Send HTTP POST to /services/json method: search.nodes search keys: foo bar Get back JSON data Array of node objects matching search Advanced Interop → Services Tuesday, March 10, 2009
  • 246. Other Talks This Week Tuesday, March 10, 2009
  • 247. Other Talks This Week Using SMS For Data Communicating Data Collection Online: Data Visualizations and The Future of Files and Opening Data Media in Drupal 7 Flash CMS: Drupal as Media Mover: File an Adobe Flex Backend Processing and Storage Promiscuous Drupal: Building Your Site With Mailing Strategies For Web APIs Drupal Tuesday, March 10, 2009
  • 250. Conclusions Drupal is ready for integration now Tuesday, March 10, 2009
  • 251. Conclusions Drupal is ready for integration now Rich toolset for social sites + remote clients Tuesday, March 10, 2009
  • 252. Conclusions Drupal is ready for integration now Rich toolset for social sites + remote clients There are many ways to extend existing integration Tuesday, March 10, 2009
  • 255. Resources http://codesorcery.net/dcdc Tuesday, March 10, 2009
  • 256. Resources http://codesorcery.net/dcdc Will contain these slides Tuesday, March 10, 2009
  • 257. Resources http://codesorcery.net/dcdc Will contain these slides Will have full list of modules mentioned today Tuesday, March 10, 2009
  • 258. Resources http://codesorcery.net/dcdc Will contain these slides Will have full list of modules mentioned today How to reach me Tuesday, March 10, 2009
  • 259. Resources http://codesorcery.net/dcdc Will contain these slides Will have full list of modules mentioned today How to reach me Twitter: incanus77 Tuesday, March 10, 2009
  • 260. Resources http://codesorcery.net/dcdc Will contain these slides Will have full list of modules mentioned today How to reach me Twitter: incanus77 Q&A Tuesday, March 10, 2009

Hinweis der Redaktion

  1. - how many people -- first time drupalcon? - how many people -- new to drupal? - how many people -- new to integrating with drupal?
  2. - Portland, Oregon - Started using Drupal here in DC about five years ago - Drupal & web developer, sysadmin, and Mac/iPhone developer - Interested in how these areas converge -- whole stack -- datacenter to client app
  3. - Portland, Oregon - Started using Drupal here in DC about five years ago - Drupal & web developer, sysadmin, and Mac/iPhone developer - Interested in how these areas converge -- whole stack -- datacenter to client app
  4. - Portland, Oregon - Started using Drupal here in DC about five years ago - Drupal & web developer, sysadmin, and Mac/iPhone developer - Interested in how these areas converge -- whole stack -- datacenter to client app
  5. - Portland, Oregon - Started using Drupal here in DC about five years ago - Drupal & web developer, sysadmin, and Mac/iPhone developer - Interested in how these areas converge -- whole stack -- datacenter to client app
  6. - Portland, Oregon - Started using Drupal here in DC about five years ago - Drupal & web developer, sysadmin, and Mac/iPhone developer - Interested in how these areas converge -- whole stack -- datacenter to client app
  7. - Portland, Oregon - Started using Drupal here in DC about five years ago - Drupal & web developer, sysadmin, and Mac/iPhone developer - Interested in how these areas converge -- whole stack -- datacenter to client app
  8. - Portland, Oregon - Started using Drupal here in DC about five years ago - Drupal & web developer, sysadmin, and Mac/iPhone developer - Interested in how these areas converge -- whole stack -- datacenter to client app
  9. - Portland, Oregon - Started using Drupal here in DC about five years ago - Drupal & web developer, sysadmin, and Mac/iPhone developer - Interested in how these areas converge -- whole stack -- datacenter to client app
  10. - Portland, Oregon - Started using Drupal here in DC about five years ago - Drupal & web developer, sysadmin, and Mac/iPhone developer - Interested in how these areas converge -- whole stack -- datacenter to client app
  11. - What kinds of things can I use? - What kinds of things am I already using that could be used for integration?
  12. - What kinds of things can I use? - What kinds of things am I already using that could be used for integration?
  13. - What kinds of things can I use? - What kinds of things am I already using that could be used for integration?
  14. - Standards that are open -- fully buzzword compliant - Keeping things secure and leveraging Drupal&#x2019;s built-in security model - Finding jumping off points for future building
  15. - Standards that are open -- fully buzzword compliant - Keeping things secure and leveraging Drupal&#x2019;s built-in security model - Finding jumping off points for future building
  16. - Standards that are open -- fully buzzword compliant - Keeping things secure and leveraging Drupal&#x2019;s built-in security model - Finding jumping off points for future building
  17. - Standards that are open -- fully buzzword compliant - Keeping things secure and leveraging Drupal&#x2019;s built-in security model - Finding jumping off points for future building
  18. - Standards that are open -- fully buzzword compliant - Keeping things secure and leveraging Drupal&#x2019;s built-in security model - Finding jumping off points for future building
  19. - Putting data in -- collecting mobile user data points, taking user document submissions, finding a place to store your data. - Getting data out -- getting raw data for use on other platforms, having flexibility in the formats. - Authentication -- keeping it all secure, finding creative & flexible ways to let users in. - Advanced interop -- how to go about building up a full-blown (often) two-way API.
  20. - Putting data in -- collecting mobile user data points, taking user document submissions, finding a place to store your data. - Getting data out -- getting raw data for use on other platforms, having flexibility in the formats. - Authentication -- keeping it all secure, finding creative & flexible ways to let users in. - Advanced interop -- how to go about building up a full-blown (often) two-way API.
  21. - Putting data in -- collecting mobile user data points, taking user document submissions, finding a place to store your data. - Getting data out -- getting raw data for use on other platforms, having flexibility in the formats. - Authentication -- keeping it all secure, finding creative & flexible ways to let users in. - Advanced interop -- how to go about building up a full-blown (often) two-way API.
  22. - Putting data in -- collecting mobile user data points, taking user document submissions, finding a place to store your data. - Getting data out -- getting raw data for use on other platforms, having flexibility in the formats. - Authentication -- keeping it all secure, finding creative & flexible ways to let users in. - Advanced interop -- how to go about building up a full-blown (often) two-way API.
  23. - Putting data in -- collecting mobile user data points, taking user document submissions, finding a place to store your data. - Getting data out -- getting raw data for use on other platforms, having flexibility in the formats. - Authentication -- keeping it all secure, finding creative & flexible ways to let users in. - Advanced interop -- how to go about building up a full-blown (often) two-way API.
  24. - Desktop publishing -- getting content, often blog posts, into Drupal. - File uploads -- focusing on the mechanics, not the UX (sorry). - File Framework -- an advanced framework that greatly augments what&#x2019;s in core. - WebDAV -- I&#x2019;ve done a lot of work here -- using clients built into every OS to act in a file metaphor. Builds upon File Framework.
  25. - Desktop publishing -- getting content, often blog posts, into Drupal. - File uploads -- focusing on the mechanics, not the UX (sorry). - File Framework -- an advanced framework that greatly augments what&#x2019;s in core. - WebDAV -- I&#x2019;ve done a lot of work here -- using clients built into every OS to act in a file metaphor. Builds upon File Framework.
  26. - Desktop publishing -- getting content, often blog posts, into Drupal. - File uploads -- focusing on the mechanics, not the UX (sorry). - File Framework -- an advanced framework that greatly augments what&#x2019;s in core. - WebDAV -- I&#x2019;ve done a lot of work here -- using clients built into every OS to act in a file metaphor. Builds upon File Framework.
  27. - Desktop publishing -- getting content, often blog posts, into Drupal. - File uploads -- focusing on the mechanics, not the UX (sorry). - File Framework -- an advanced framework that greatly augments what&#x2019;s in core. - WebDAV -- I&#x2019;ve done a lot of work here -- using clients built into every OS to act in a file metaphor. Builds upon File Framework.
  28. - Desktop publishing -- getting content, often blog posts, into Drupal. - File uploads -- focusing on the mechanics, not the UX (sorry). - File Framework -- an advanced framework that greatly augments what&#x2019;s in core. - WebDAV -- I&#x2019;ve done a lot of work here -- using clients built into every OS to act in a file metaphor. Builds upon File Framework.
  29. - Popular -- this is what Wordpress, MT, etc. are doing too. - This has been in Drupal from the beginning. - Mac: MarsEdit, Ecto, Blogo Windows: Qumana, Windows Live Writer Linux/BSD: Flock, Kblogger, ScribeFire for Firefox, Sun Weblog Publisher for OpenOffice
  30. - Popular -- this is what Wordpress, MT, etc. are doing too. - This has been in Drupal from the beginning. - Mac: MarsEdit, Ecto, Blogo Windows: Qumana, Windows Live Writer Linux/BSD: Flock, Kblogger, ScribeFire for Firefox, Sun Weblog Publisher for OpenOffice
  31. - Popular -- this is what Wordpress, MT, etc. are doing too. - This has been in Drupal from the beginning. - Mac: MarsEdit, Ecto, Blogo Windows: Qumana, Windows Live Writer Linux/BSD: Flock, Kblogger, ScribeFire for Firefox, Sun Weblog Publisher for OpenOffice
  32. - Popular -- this is what Wordpress, MT, etc. are doing too. - This has been in Drupal from the beginning. - Mac: MarsEdit, Ecto, Blogo Windows: Qumana, Windows Live Writer Linux/BSD: Flock, Kblogger, ScribeFire for Firefox, Sun Weblog Publisher for OpenOffice
  33. - Popular -- this is what Wordpress, MT, etc. are doing too. - This has been in Drupal from the beginning. - Mac: MarsEdit, Ecto, Blogo Windows: Qumana, Windows Live Writer Linux/BSD: Flock, Kblogger, ScribeFire for Firefox, Sun Weblog Publisher for OpenOffice
  34. - Popular -- this is what Wordpress, MT, etc. are doing too. - This has been in Drupal from the beginning. - Mac: MarsEdit, Ecto, Blogo Windows: Qumana, Windows Live Writer Linux/BSD: Flock, Kblogger, ScribeFire for Firefox, Sun Weblog Publisher for OpenOffice
  35. - common need when integrating with desktop or mobile clients -- FILES - going to go over the basics of what is in core - this could be useful if you are taking user data and need a place to put it -- will this work for me?
  36. - common need when integrating with desktop or mobile clients -- FILES - going to go over the basics of what is in core - this could be useful if you are taking user data and need a place to put it -- will this work for me?
  37. - common need when integrating with desktop or mobile clients -- FILES - going to go over the basics of what is in core - this could be useful if you are taking user data and need a place to put it -- will this work for me?
  38. - common need when integrating with desktop or mobile clients -- FILES - going to go over the basics of what is in core - this could be useful if you are taking user data and need a place to put it -- will this work for me?
  39. - common need when integrating with desktop or mobile clients -- FILES - going to go over the basics of what is in core - this could be useful if you are taking user data and need a place to put it -- will this work for me?
  40. - Mention that all of those is great, but see how it can be built upon in a minute...
  41. - Mention that all of those is great, but see how it can be built upon in a minute...
  42. - Mention that all of those is great, but see how it can be built upon in a minute...
  43. - Mention that all of those is great, but see how it can be built upon in a minute...
  44. - Mention that all of those is great, but see how it can be built upon in a minute...
  45. - Mention that all of those is great, but see how it can be built upon in a minute...
  46. - Mention that all of those is great, but see how it can be built upon in a minute...
  47. - Mention that all of those is great, but see how it can be built upon in a minute...
  48. - Mention that all of those is great, but see how it can be built upon in a minute...
  49. - visual indication of type - size and type info - blocks are available for attachment/relationship status - as well as all properties (more on next slide)
  50. - visual indication of type - size and type info - blocks are available for attachment/relationship status - as well as all properties (more on next slide)
  51. - visual indication of type - size and type info - blocks are available for attachment/relationship status - as well as all properties (more on next slide)
  52. - visual indication of type - size and type info - blocks are available for attachment/relationship status - as well as all properties (more on next slide)
  53. - visual indication of type - size and type info - blocks are available for attachment/relationship status - as well as all properties (more on next slide)
  54. - here&#x2019;s an example of ahah-based previews - multiple sizes for images - other formats available -- large pdf also available as zip archive - also make note of extended metadata extracted from this file -- location, camera (all exif data)
  55. - here&#x2019;s an example of ahah-based previews - multiple sizes for images - other formats available -- large pdf also available as zip archive - also make note of extended metadata extracted from this file -- location, camera (all exif data)
  56. - here&#x2019;s an example of ahah-based previews - multiple sizes for images - other formats available -- large pdf also available as zip archive - also make note of extended metadata extracted from this file -- location, camera (all exif data)
  57. - makes a lot of sense if files are your &#x201C;unit of content&#x201D; - really gives remote clients a base to work with & makes your social site more friendly & robust
  58. - makes a lot of sense if files are your &#x201C;unit of content&#x201D; - really gives remote clients a base to work with & makes your social site more friendly & robust
  59. - makes a lot of sense if files are your &#x201C;unit of content&#x201D; - really gives remote clients a base to work with & makes your social site more friendly & robust
  60. - makes a lot of sense if files are your &#x201C;unit of content&#x201D; - really gives remote clients a base to work with & makes your social site more friendly & robust
  61. - makes a lot of sense if files are your &#x201C;unit of content&#x201D; - really gives remote clients a base to work with & makes your social site more friendly & robust
  62. - makes a lot of sense if files are your &#x201C;unit of content&#x201D; - really gives remote clients a base to work with & makes your social site more friendly & robust
  63. - makes a lot of sense if files are your &#x201C;unit of content&#x201D; - really gives remote clients a base to work with & makes your social site more friendly & robust
  64. - here&#x2019;s a good example of attachment reuse - if you know the node id, enter it - or else autocomplete by node title (i.e., file name)
  65. - here&#x2019;s a good example of attachment reuse - if you know the node id, enter it - or else autocomplete by node title (i.e., file name)
  66. - one more mention in the area of files - lends itself nicely to more complex layering with things like webdav - distributed authoring & versioning - like ftp but on the web server - this is great if you already are talking webdav or have libraries for your apps - also available on many platforms -- explorer on windows, finder on mac, kde/gnome file managers - for people familiar with apple, mobile me / .mac idisk is based on webdav - MENTION DAV API
  67. - one more mention in the area of files - lends itself nicely to more complex layering with things like webdav - distributed authoring & versioning - like ftp but on the web server - this is great if you already are talking webdav or have libraries for your apps - also available on many platforms -- explorer on windows, finder on mac, kde/gnome file managers - for people familiar with apple, mobile me / .mac idisk is based on webdav - MENTION DAV API
  68. - one more mention in the area of files - lends itself nicely to more complex layering with things like webdav - distributed authoring & versioning - like ftp but on the web server - this is great if you already are talking webdav or have libraries for your apps - also available on many platforms -- explorer on windows, finder on mac, kde/gnome file managers - for people familiar with apple, mobile me / .mac idisk is based on webdav - MENTION DAV API
  69. - one more mention in the area of files - lends itself nicely to more complex layering with things like webdav - distributed authoring & versioning - like ftp but on the web server - this is great if you already are talking webdav or have libraries for your apps - also available on many platforms -- explorer on windows, finder on mac, kde/gnome file managers - for people familiar with apple, mobile me / .mac idisk is based on webdav - MENTION DAV API
  70. - one more mention in the area of files - lends itself nicely to more complex layering with things like webdav - distributed authoring & versioning - like ftp but on the web server - this is great if you already are talking webdav or have libraries for your apps - also available on many platforms -- explorer on windows, finder on mac, kde/gnome file managers - for people familiar with apple, mobile me / .mac idisk is based on webdav - MENTION DAV API
  71. - one more mention in the area of files - lends itself nicely to more complex layering with things like webdav - distributed authoring & versioning - like ftp but on the web server - this is great if you already are talking webdav or have libraries for your apps - also available on many platforms -- explorer on windows, finder on mac, kde/gnome file managers - for people familiar with apple, mobile me / .mac idisk is based on webdav - MENTION DAV API
  72. - one more mention in the area of files - lends itself nicely to more complex layering with things like webdav - distributed authoring & versioning - like ftp but on the web server - this is great if you already are talking webdav or have libraries for your apps - also available on many platforms -- explorer on windows, finder on mac, kde/gnome file managers - for people familiar with apple, mobile me / .mac idisk is based on webdav - MENTION DAV API
  73. - one more mention in the area of files - lends itself nicely to more complex layering with things like webdav - distributed authoring & versioning - like ftp but on the web server - this is great if you already are talking webdav or have libraries for your apps - also available on many platforms -- explorer on windows, finder on mac, kde/gnome file managers - for people familiar with apple, mobile me / .mac idisk is based on webdav - MENTION DAV API
  74. - one more mention in the area of files - lends itself nicely to more complex layering with things like webdav - distributed authoring & versioning - like ftp but on the web server - this is great if you already are talking webdav or have libraries for your apps - also available on many platforms -- explorer on windows, finder on mac, kde/gnome file managers - for people familiar with apple, mobile me / .mac idisk is based on webdav - MENTION DAV API
  75. - one more mention in the area of files - lends itself nicely to more complex layering with things like webdav - distributed authoring & versioning - like ftp but on the web server - this is great if you already are talking webdav or have libraries for your apps - also available on many platforms -- explorer on windows, finder on mac, kde/gnome file managers - for people familiar with apple, mobile me / .mac idisk is based on webdav - MENTION DAV API
  76. - one more mention in the area of files - lends itself nicely to more complex layering with things like webdav - distributed authoring & versioning - like ftp but on the web server - this is great if you already are talking webdav or have libraries for your apps - also available on many platforms -- explorer on windows, finder on mac, kde/gnome file managers - for people familiar with apple, mobile me / .mac idisk is based on webdav - MENTION DAV API
  77. - one more mention in the area of files - lends itself nicely to more complex layering with things like webdav - distributed authoring & versioning - like ftp but on the web server - this is great if you already are talking webdav or have libraries for your apps - also available on many platforms -- explorer on windows, finder on mac, kde/gnome file managers - for people familiar with apple, mobile me / .mac idisk is based on webdav - MENTION DAV API
  78. - example of web-based browsing of file nodes in a system
  79. - file transfer client example - this is two-way communication - everything is revisioned in the nodes -- attachment status, filename, organic group - rather than build a custom api, you could use existing webdav client libraries to work with this sort of platform -- client doesn&#x2019;t even have to know that it&#x2019;s drupal
  80. - file transfer client example - this is two-way communication - everything is revisioned in the nodes -- attachment status, filename, organic group - rather than build a custom api, you could use existing webdav client libraries to work with this sort of platform -- client doesn&#x2019;t even have to know that it&#x2019;s drupal
  81. - file transfer client example - this is two-way communication - everything is revisioned in the nodes -- attachment status, filename, organic group - rather than build a custom api, you could use existing webdav client libraries to work with this sort of platform -- client doesn&#x2019;t even have to know that it&#x2019;s drupal
  82. - file transfer client example - this is two-way communication - everything is revisioned in the nodes -- attachment status, filename, organic group - rather than build a custom api, you could use existing webdav client libraries to work with this sort of platform -- client doesn&#x2019;t even have to know that it&#x2019;s drupal
  83. - file transfer client example - this is two-way communication - everything is revisioned in the nodes -- attachment status, filename, organic group - rather than build a custom api, you could use existing webdav client libraries to work with this sort of platform -- client doesn&#x2019;t even have to know that it&#x2019;s drupal
  84. - file transfer client example - this is two-way communication - everything is revisioned in the nodes -- attachment status, filename, organic group - rather than build a custom api, you could use existing webdav client libraries to work with this sort of platform -- client doesn&#x2019;t even have to know that it&#x2019;s drupal
  85. - file transfer client example - this is two-way communication - everything is revisioned in the nodes -- attachment status, filename, organic group - rather than build a custom api, you could use existing webdav client libraries to work with this sort of platform -- client doesn&#x2019;t even have to know that it&#x2019;s drupal
  86. many people are on board with feedapi not mentioning it in detail here since it&#x2019;s typically web-to-web
  87. many people are on board with feedapi not mentioning it in detail here since it&#x2019;s typically web-to-web
  88. many people are on board with feedapi not mentioning it in detail here since it&#x2019;s typically web-to-web
  89. many people are on board with feedapi not mentioning it in detail here since it&#x2019;s typically web-to-web
  90. many people are on board with feedapi not mentioning it in detail here since it&#x2019;s typically web-to-web
  91. many people are on board with feedapi not mentioning it in detail here since it&#x2019;s typically web-to-web
  92. - core has this concept of &#x2018;promote to front page&#x2019; - automatically published at /node - automatically sent out to rss feed - views is your swiss army knife -- worth the time invested to learn the api and/or the ui
  93. - core has this concept of &#x2018;promote to front page&#x2019; - automatically published at /node - automatically sent out to rss feed - views is your swiss army knife -- worth the time invested to learn the api and/or the ui
  94. - core has this concept of &#x2018;promote to front page&#x2019; - automatically published at /node - automatically sent out to rss feed - views is your swiss army knife -- worth the time invested to learn the api and/or the ui
  95. - core has this concept of &#x2018;promote to front page&#x2019; - automatically published at /node - automatically sent out to rss feed - views is your swiss army knife -- worth the time invested to learn the api and/or the ui
  96. - core has this concept of &#x2018;promote to front page&#x2019; - automatically published at /node - automatically sent out to rss feed - views is your swiss army knife -- worth the time invested to learn the api and/or the ui
  97. - core has this concept of &#x2018;promote to front page&#x2019; - automatically published at /node - automatically sent out to rss feed - views is your swiss army knife -- worth the time invested to learn the api and/or the ui
  98. - core has this concept of &#x2018;promote to front page&#x2019; - automatically published at /node - automatically sent out to rss feed - views is your swiss army knife -- worth the time invested to learn the api and/or the ui
  99. if podcasting is more your thing, drupal has you covered here too some modules you&#x2019;ll find interesting are...
  100. if podcasting is more your thing, drupal has you covered here too some modules you&#x2019;ll find interesting are...
  101. if podcasting is more your thing, drupal has you covered here too some modules you&#x2019;ll find interesting are...
  102. if podcasting is more your thing, drupal has you covered here too some modules you&#x2019;ll find interesting are...
  103. if podcasting is more your thing, drupal has you covered here too some modules you&#x2019;ll find interesting are...
  104. if podcasting is more your thing, drupal has you covered here too some modules you&#x2019;ll find interesting are...
  105. if podcasting is more your thing, drupal has you covered here too some modules you&#x2019;ll find interesting are...
  106. - how to keep anonymous users out, but also maybe not inconvenience users with user/pass - could possibly generate a token client-side using a known algorithm, update the server, then use that to pull data
  107. - how to keep anonymous users out, but also maybe not inconvenience users with user/pass - could possibly generate a token client-side using a known algorithm, update the server, then use that to pull data
  108. - how to keep anonymous users out, but also maybe not inconvenience users with user/pass - could possibly generate a token client-side using a known algorithm, update the server, then use that to pull data
  109. - how to keep anonymous users out, but also maybe not inconvenience users with user/pass - could possibly generate a token client-side using a known algorithm, update the server, then use that to pull data
  110. - how to keep anonymous users out, but also maybe not inconvenience users with user/pass - could possibly generate a token client-side using a known algorithm, update the server, then use that to pull data
  111. - how to keep anonymous users out, but also maybe not inconvenience users with user/pass - could possibly generate a token client-side using a known algorithm, update the server, then use that to pull data
  112. - how to keep anonymous users out, but also maybe not inconvenience users with user/pass - could possibly generate a token client-side using a known algorithm, update the server, then use that to pull data
  113. - how to keep anonymous users out, but also maybe not inconvenience users with user/pass - could possibly generate a token client-side using a known algorithm, update the server, then use that to pull data
  114. - node -- all nodes - blog -- all blog nodes - user blog -- all blog posts for a user - taxonomy feeds -- all content published under a certain tag
  115. - node -- all nodes - blog -- all blog nodes - user blog -- all blog posts for a user - taxonomy feeds -- all content published under a certain tag
  116. - node -- all nodes - blog -- all blog nodes - user blog -- all blog posts for a user - taxonomy feeds -- all content published under a certain tag
  117. - node -- all nodes - blog -- all blog nodes - user blog -- all blog posts for a user - taxonomy feeds -- all content published under a certain tag
  118. - node -- all nodes - blog -- all blog nodes - user blog -- all blog posts for a user - taxonomy feeds -- all content published under a certain tag
  119. - node -- all nodes - blog -- all blog nodes - user blog -- all blog posts for a user - taxonomy feeds -- all content published under a certain tag
  120. - important factor, esp. for iphone, is backend mailing - smtp -- more useful from remote clients - able to centralize your mail, even using another isp
  121. - important factor, esp. for iphone, is backend mailing - smtp -- more useful from remote clients - able to centralize your mail, even using another isp
  122. - important factor, esp. for iphone, is backend mailing - smtp -- more useful from remote clients - able to centralize your mail, even using another isp
  123. - important factor, esp. for iphone, is backend mailing - smtp -- more useful from remote clients - able to centralize your mail, even using another isp
  124. - important factor, esp. for iphone, is backend mailing - smtp -- more useful from remote clients - able to centralize your mail, even using another isp
  125. - important factor, esp. for iphone, is backend mailing - smtp -- more useful from remote clients - able to centralize your mail, even using another isp
  126. - important factor, esp. for iphone, is backend mailing - smtp -- more useful from remote clients - able to centralize your mail, even using another isp
  127. - important factor, esp. for iphone, is backend mailing - smtp -- more useful from remote clients - able to centralize your mail, even using another isp
  128. - important factor, esp. for iphone, is backend mailing - smtp -- more useful from remote clients - able to centralize your mail, even using another isp
  129. - important factor, esp. for iphone, is backend mailing - smtp -- more useful from remote clients - able to centralize your mail, even using another isp
  130. - simple office file format exporting - json useful for read-only data -- latest content, popular content, new users
  131. - simple office file format exporting - json useful for read-only data -- latest content, popular content, new users
  132. - simple office file format exporting - json useful for read-only data -- latest content, popular content, new users
  133. - easily export to pdf print view - force file downloads -- example, make people download media to disk, make it easy for users to save files locally - mention backup/migrate just out of ease of use - not ideal for data transfer, but might fit your project
  134. - easily export to pdf print view - force file downloads -- example, make people download media to disk, make it easy for users to save files locally - mention backup/migrate just out of ease of use - not ideal for data transfer, but might fit your project
  135. - easily export to pdf print view - force file downloads -- example, make people download media to disk, make it easy for users to save files locally - mention backup/migrate just out of ease of use - not ideal for data transfer, but might fit your project
  136. - just going to touch on this to mention that drupal support is there
  137. - just going to touch on this to mention that drupal support is there
  138. - just going to touch on this to mention that drupal support is there
  139. - just going to touch on this to mention that drupal support is there
  140. - just going to touch on this to mention that drupal support is there
  141. - just going to touch on this to mention that drupal support is there
  142. - just going to touch on this to mention that drupal support is there
  143. - just going to touch on this to mention that drupal support is there
  144. - just going to touch on this to mention that drupal support is there
  145. - just going to touch on this to mention that drupal support is there
  146. - just going to touch on this to mention that drupal support is there
  147. - just going to touch on this to mention that drupal support is there
  148. - just going to touch on this to mention that drupal support is there
  149. - enterprise print job reporting: cck type for &#x2018;print job&#x2019;, implement client reporting after print - hardware tracking: track battery life in the field, gps reporting of client location - high scores for mobile games, with a social element on the website
  150. - enterprise print job reporting: cck type for &#x2018;print job&#x2019;, implement client reporting after print - hardware tracking: track battery life in the field, gps reporting of client location - high scores for mobile games, with a social element on the website
  151. - enterprise print job reporting: cck type for &#x2018;print job&#x2019;, implement client reporting after print - hardware tracking: track battery life in the field, gps reporting of client location - high scores for mobile games, with a social element on the website
  152. - good place to start if you need a quick and dirty proof of concept with minimal code - that&#x2019;s not to say it&#x2019;s not powerful, but it&#x2019;s low barrier to entry - problem is, a lot of people don&#x2019;t know about it or have misconceptions...
  153. - good place to start if you need a quick and dirty proof of concept with minimal code - that&#x2019;s not to say it&#x2019;s not powerful, but it&#x2019;s low barrier to entry - problem is, a lot of people don&#x2019;t know about it or have misconceptions...
  154. - good place to start if you need a quick and dirty proof of concept with minimal code - that&#x2019;s not to say it&#x2019;s not powerful, but it&#x2019;s low barrier to entry - problem is, a lot of people don&#x2019;t know about it or have misconceptions...
  155. - Dries: &#x201C;It was added because I liked adding new and promising technologies.&#x201D; - Mollom uses XML-RPC today to talk to its servers - KDE using this for app scripting
  156. - Dries: &#x201C;It was added because I liked adding new and promising technologies.&#x201D; - Mollom uses XML-RPC today to talk to its servers - KDE using this for app scripting
  157. - Dries: &#x201C;It was added because I liked adding new and promising technologies.&#x201D; - Mollom uses XML-RPC today to talk to its servers - KDE using this for app scripting
  158. - Dries: &#x201C;It was added because I liked adding new and promising technologies.&#x201D; - Mollom uses XML-RPC today to talk to its servers - KDE using this for app scripting
  159. - Dries: &#x201C;It was added because I liked adding new and promising technologies.&#x201D; - Mollom uses XML-RPC today to talk to its servers - KDE using this for app scripting
  160. - Dries: &#x201C;It was added because I liked adding new and promising technologies.&#x201D; - Mollom uses XML-RPC today to talk to its servers - KDE using this for app scripting
  161. - very important to understand how access works - just as you could write a module that dumps private content whenever you go to /private - you could also write an xml-rpc service that gives free access - i&#x2019;ve done api key before by storing a key in the user profile data
  162. - very important to understand how access works - just as you could write a module that dumps private content whenever you go to /private - you could also write an xml-rpc service that gives free access - i&#x2019;ve done api key before by storing a key in the user profile data
  163. - very important to understand how access works - just as you could write a module that dumps private content whenever you go to /private - you could also write an xml-rpc service that gives free access - i&#x2019;ve done api key before by storing a key in the user profile data
  164. - very important to understand how access works - just as you could write a module that dumps private content whenever you go to /private - you could also write an xml-rpc service that gives free access - i&#x2019;ve done api key before by storing a key in the user profile data
  165. - very important to understand how access works - just as you could write a module that dumps private content whenever you go to /private - you could also write an xml-rpc service that gives free access - i&#x2019;ve done api key before by storing a key in the user profile data
  166. - very important to understand how access works - just as you could write a module that dumps private content whenever you go to /private - you could also write an xml-rpc service that gives free access - i&#x2019;ve done api key before by storing a key in the user profile data
  167. - very important to understand how access works - just as you could write a module that dumps private content whenever you go to /private - you could also write an xml-rpc service that gives free access - i&#x2019;ve done api key before by storing a key in the user profile data
  168. - lightweight, reasonably easy to understand what&#x2019;s going on
  169. - this is a core hook just like menu, access, nodeapi, etc.
  170. - this is a core hook just like menu, access, nodeapi, etc.
  171. - this is a core hook just like menu, access, nodeapi, etc.
  172. - this is a core hook just like menu, access, nodeapi, etc.
  173. - here&#x2019;s the code you&#x2019;re already writing
  174. - here&#x2019;s how you connect drupal&#x2019;s xml-rpc stack to your existing code
  175. - here&#x2019;s how you connect drupal&#x2019;s xml-rpc stack to your existing code
  176. - here&#x2019;s how you connect drupal&#x2019;s xml-rpc stack to your existing code
  177. - here&#x2019;s how you connect drupal&#x2019;s xml-rpc stack to your existing code
  178. - here&#x2019;s how you connect drupal&#x2019;s xml-rpc stack to your existing code
  179. - very robust - more upfront work to understand it - if included libraries meet your needs, faster startup - otherwise, need to learn the api
  180. - very robust - more upfront work to understand it - if included libraries meet your needs, faster startup - otherwise, need to learn the api
  181. - very robust - more upfront work to understand it - if included libraries meet your needs, faster startup - otherwise, need to learn the api
  182. - very robust - more upfront work to understand it - if included libraries meet your needs, faster startup - otherwise, need to learn the api
  183. - very robust - more upfront work to understand it - if included libraries meet your needs, faster startup - otherwise, need to learn the api
  184. - very robust - more upfront work to understand it - if included libraries meet your needs, faster startup - otherwise, need to learn the api
  185. - very robust - more upfront work to understand it - if included libraries meet your needs, faster startup - otherwise, need to learn the api
  186. - very robust - more upfront work to understand it - if included libraries meet your needs, faster startup - otherwise, need to learn the api
  187. - plus, of course, your own libraries
  188. - plus, of course, your own libraries
  189. - plus, of course, your own libraries
  190. - plus, of course, your own libraries
  191. - plus, of course, your own libraries
  192. - plus, of course, your own libraries
  193. - plus, of course, your own libraries
  194. - plus, of course, your own libraries
  195. - good simple example -- out of the box, search for content on the client side - as i mentioned, services supports json, xml-rpc, rest, soap
  196. - good simple example -- out of the box, search for content on the client side - as i mentioned, services supports json, xml-rpc, rest, soap
  197. - good simple example -- out of the box, search for content on the client side - as i mentioned, services supports json, xml-rpc, rest, soap
  198. - good simple example -- out of the box, search for content on the client side - as i mentioned, services supports json, xml-rpc, rest, soap
  199. - good simple example -- out of the box, search for content on the client side - as i mentioned, services supports json, xml-rpc, rest, soap
  200. - that about winds it up for me - there is a lot going on this week -- check it out