Beyond The Web
         Drupal Meets The Desktop (And Mobile)
                Justin Miller
                Code Sorcery W...
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,...
Introduction
               Personal introduction
               Format & conventions for this talk
                     A...
Introduction
               Personal introduction
               Format & conventions for this talk
                     A...
Introduction
               Personal introduction
               Format & conventions for this talk
                     A...
Introduction
               Personal introduction
               Format & conventions for this talk
                     A...
Introduction
               Personal introduction
               Format & conventions for this talk
                     A...
Introduction
               Personal introduction
               Format & conventions for this talk
                     A...
Who are you?




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




Tuesday, March 10,...
Who are you?
               A Drupal developer
                     What’s out there? Does it work?
               A deskt...
Who are you?
               A Drupal developer
                     What’s out there? Does it work?
               A deskt...
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




...
Focus Of This Talk

               Direct concerns for desktop & mobile
                     Standards-based exchange
    ...
Focus Of This Talk

               Direct concerns for desktop & mobile
                     Standards-based exchange
    ...
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,...
Today’s Roadmap

               Putting Data In
               Getting Data Out
               Authentication
            ...
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
...
Putting Data In

               Desktop Publishing
               File Uploads & Attachments
               Files: The Nex...
Putting Data In

               Desktop Publishing
               File Uploads & Attachments
               Files: The Nex...
Desktop Publishing




         Putting Data In ➔ Desktop Publishing


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




         Putting Data In ➔ Desktop Publishi...
Desktop Publishing
               Basic support made available by Blog API
                     Optional core module {blog...
Desktop Publishing
               Basic support made available by Blog API
                     Optional core module {blog...
Desktop Publishing
               Basic support made available by Blog API
                     Optional core module {blog...
Desktop Publishing
               Basic support made available by Blog API
                     Optional core module {blog...
Desktop Publishing
               Basic support made available by Blog API
                     Optional core module {blog...
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 & Attachm...
File Uploads & Attachments
               Core support with {upload}
               Files go into a folder on the server

...
File Uploads & Attachments
               Core support with {upload}
               Files go into a folder on the server
 ...
File Uploads & Attachments
               Core support with {upload}
               Files go into a folder on the server
 ...
File Uploads & Attachments
               Core support with {upload}
               Files go into a folder on the server
 ...
File Framework




         Putting Data In ➔ File Framework


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




         Putting Data In ➔ File Framework


T...
File Framework
               Contrib module suite called {fileframework}
               Provides a ‘file’ content type to D...
File Framework
               Contrib module suite called {fileframework}
               Provides a ‘file’ content type to D...
File Framework
               Contrib module suite called {fileframework}
               Provides a ‘file’ content type to D...
File Framework
               Contrib module suite called {fileframework}
               Provides a ‘file’ content type to D...
File Framework
               Contrib module suite called {fileframework}
               Provides a ‘file’ content type to D...
File Framework
               Contrib module suite called {fileframework}
               Provides a ‘file’ content type to D...
File Framework
               Contrib module suite called {fileframework}
               Provides a ‘file’ content type to D...
File Framework
               Contrib module suite called {fileframework}
               Provides a ‘file’ content type to D...
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 F...
File Framework
               Efficient
                     File nodes can be reused
                          Re-attached...
File Framework
               Efficient
                     File nodes can be reused
                          Re-attached...
File Framework
               Efficient
                     File nodes can be reused
                          Re-attached...
File Framework
               Efficient
                     File nodes can be reused
                          Re-attached...
File Framework
               Efficient
                     File nodes can be reused
                          Re-attached...
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


...
WebDAV
               File Server {fileserver}
                     Based on {dav}
                     Browse file nodes by...
WebDAV
               File Server {fileserver}
                     Based on {dav}
                     Browse file nodes by...
WebDAV
               File Server {fileserver}
                     Based on {dav}
                     Browse file nodes by...
WebDAV
               File Server {fileserver}
                     Based on {dav}
                     Browse file nodes by...
WebDAV
               File Server {fileserver}
                     Based on {dav}
                     Browse file nodes by...
WebDAV
               File Server {fileserver}
                     Based on {dav}
                     Browse file nodes by...
WebDAV
               File Server {fileserver}
                     Based on {dav}
                     Browse file nodes by...
WebDAV
               File Server {fileserver}
                     Based on {dav}
                     Browse file nodes by...
WebDAV
               File Server {fileserver}
                     Based on {dav}
                     Browse file nodes by...
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

...
Getting Data Out

               Feeds
               Email
               Popular Formats
               Other Projects o...
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)




       ...
General Feed Needs
                     Core
                           Automatic node aggregation (e.g., blog)
          ...
General Feed Needs
                     Core
                           Automatic node aggregation (e.g., blog)
          ...
General Feed Needs
                     Core
                           Automatic node aggregation (e.g., blog)
          ...
General Feed Needs
                     Core
                           Automatic node aggregation (e.g., blog)
          ...
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


T...
Feed Needs: Authentication
                     Token authentication {tokenauth}
                          Checks for toke...
Feed Needs: Authentication
                     Token authentication {tokenauth}
                          Checks for toke...
Feed Needs: Authentication
                     Token authentication {tokenauth}
                          Checks for toke...
Feed Needs: Authentication
                     Token authentication {tokenauth}
                          Checks for toke...
Feed Needs: Authentication
                     Token authentication {tokenauth}
                          Checks for toke...
Feed Needs: Authentication
                     Token authentication {tokenauth}
                          Checks for toke...
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, ...
Other Feed Needs
               Atom in addition to RSS using {atom}
                     Provides node, blog, user blog, ...
Other Feed Needs
               Atom in addition to RSS using {atom}
                     Provides node, blog, user blog, ...
Other Feed Needs
               Atom in addition to RSS using {atom}
                     Provides node, blog, user blog, ...
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




         Ge...
Email
               Core includes drupal_mail()
                     Important since it abstracts sending
               ...
Email
               Core includes drupal_mail()
                     Important since it abstracts sending
               ...
Email
               Core includes drupal_mail()
                     Important since it abstracts sending
               ...
Email
               Core includes drupal_mail()
                     Important since it abstracts sending
               ...
Email
               Core includes drupal_mail()
                     Important since it abstracts sending
               ...
Email
               Core includes drupal_mail()
                     Important since it abstracts sending
               ...
Email
               Core includes drupal_mail()
                     Important since it abstracts sending
               ...
Popular Formats




         Getting Data Out → Popular Formats


Tuesday, March 10, 2009
Popular Formats


               CSV, Word, TXT with {views_bonus}




         Getting Data Out → Popular Formats


Tuesd...
Popular Formats


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


               CSV, Word, TXT with {views_bonus}
               Simple read-only JSON with {views_json}
...
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,...
Other Projects of Note


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




 ...
Other Projects of Note


               Print & PDF with {print}
               Force file downloads with {file_force}
     ...
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


Tuesd...
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...
Auth: OpenID & OAuth
               Login and a “valet key” for many websites
               OpenID login support




    ...
Auth: OpenID & OAuth
               Login and a “valet key” for many websites
               OpenID login support
        ...
Auth: OpenID & OAuth
               Login and a “valet key” for many websites
               OpenID login support
        ...
Auth: OpenID & OAuth
               Login and a “valet key” for many websites
               OpenID login support
        ...
Auth: OpenID & OAuth
               Login and a “valet key” for many websites
               OpenID login support
        ...
Auth: OpenID & OAuth
               Login and a “valet key” for many websites
               OpenID login support
        ...
Auth: OpenID & OAuth
               Login and a “valet key” for many websites
               OpenID login support
        ...
Auth: OpenID & OAuth
               Login and a “valet key” for many websites
               OpenID login support
        ...
Auth: OpenID & OAuth
               Login and a “valet key” for many websites
               OpenID login support
        ...
Auth: OpenID & OAuth
               Login and a “valet key” for many websites
               OpenID login support
        ...
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, 20...
Auth: LDAP
               Lightweight Directory Access Protocol
                     Enterprise-level solution (client int...
Auth: LDAP
               Lightweight Directory Access Protocol
                     Enterprise-level solution (client int...
Auth: LDAP
               Lightweight Directory Access Protocol
                     Enterprise-level solution (client int...
Auth: LDAP
               Lightweight Directory Access Protocol
                     Enterprise-level solution (client int...
Auth: LDAP
               Lightweight Directory Access Protocol
                     Enterprise-level solution (client int...
Auth: LDAP
               Lightweight Directory Access Protocol
                     Enterprise-level solution (client int...
Auth: LDAP
               Lightweight Directory Access Protocol
                     Enterprise-level solution (client int...
Auth: LDAP
               Lightweight Directory Access Protocol
                     Enterprise-level solution (client int...
Auth: LDAP
               Lightweight Directory Access Protocol
                     Enterprise-level solution (client int...
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


...
Auth: HTTP
               {securesite} & {webserver_auth}
                     Both protect resources at the HTTP level
  ...
Auth: HTTP
               {securesite} & {webserver_auth}
                     Both protect resources at the HTTP level
  ...
Auth: HTTP
               {securesite} & {webserver_auth}
                     Both protect resources at the HTTP level
  ...
Auth: HTTP
               {securesite} & {webserver_auth}
                     Both protect resources at the HTTP level
  ...
Auth: HTTP
               {securesite} & {webserver_auth}
                     Both protect resources at the HTTP level
  ...
Auth: HTTP
               {securesite} & {webserver_auth}
                     Both protect resources at the HTTP level
  ...
Auth: HTTP
               {securesite} & {webserver_auth}
                     Both protect resources at the HTTP level
  ...
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 Int...
XML-RPC


               Remote Procedure Calls
               In core now (and always has been)
               Start here...
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, M...
XML-RPC: Status
               Has been in Drupal since the beginning
               Effectively a subset of SOAP




    ...
XML-RPC: Status
               Has been in Drupal since the beginning
               Effectively a subset of SOAP
        ...
XML-RPC: Status
               Has been in Drupal since the beginning
               Effectively a subset of SOAP
        ...
XML-RPC: Status
               Has been in Drupal since the beginning
               Effectively a subset of SOAP
        ...
XML-RPC: Status
               Has been in Drupal since the beginning
               Effectively a subset of SOAP
        ...
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


Tuesda...
XML-RPC: Basics
               XML encoding
               HTTP transport
                     Can use HTTPS for security
...
XML-RPC: Basics
               XML encoding
               HTTP transport
                     Can use HTTPS for security
...
XML-RPC: Basics
               XML encoding
               HTTP transport
                     Can use HTTPS for security
...
XML-RPC: Basics
               XML encoding
               HTTP transport
                     Can use HTTPS for security
...
XML-RPC: Basics
               XML encoding
               HTTP transport
                     Can use HTTPS for security
...
XML-RPC: Format




         Advanced Interop → XML-RPC


Tuesday, March 10, 2009
XML-RPC: Format
                          <methodCall>
                            <methodName>
                          ...
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




         Adva...
XML-RPC: Customizing

               hook_xmlrpc()
                     Map exposed methods & parameters
                 ...
XML-RPC: Customizing

               hook_xmlrpc()
                     Map exposed methods & parameters
                 ...
XML-RPC: The Work




         Advanced Interop → XML-RPC


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

                               switch ($type)...
XML-RPC: Mapping




         Advanced Interop → XML-RPC


Tuesday, March 10, 2009
XML-RPC: Mapping
                          function sandwich_xmlrpc() {
                               return array(
     ...
XML-RPC: Mapping
                          function sandwich_xmlrpc() {
                               return array(
     ...
XML-RPC: Mapping
                          function sandwich_xmlrpc() {
                               return array(
     ...
XML-RPC: Mapping
                          function sandwich_xmlrpc() {
                               return array(
     ...
XML-RPC: Mapping
                          function sandwich_xmlrpc() {
                               return array(
     ...
Services




         Advanced Interop → Services


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




         Advanced Interop → Services


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



...
Services
               Works similarly to core’s XML-RPC
               Extends the basic concept in several key ways
   ...
Services
               Works similarly to core’s XML-RPC
               Extends the basic concept in several key ways
   ...
Services
               Works similarly to core’s XML-RPC
               Extends the basic concept in several key ways
   ...
Services
               Works similarly to core’s XML-RPC
               Extends the basic concept in several key ways
   ...
Services
               Works similarly to core’s XML-RPC
               Extends the basic concept in several key ways
   ...
Services
               Works similarly to core’s XML-RPC
               Extends the basic concept in several key ways
   ...
Services: Libraries




         Advanced Interop → Services


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




         Advanced Interop → Services


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




         Advanced Interop → S...
Services: Libraries
               Get file info or by node
               Get menu trees
               Get/save/delete no...
Services: Libraries
               Get file info or by node
               Get menu trees
               Get/save/delete no...
Services: Libraries
               Get file info or by node
               Get menu trees
               Get/save/delete no...
Services: Libraries
               Get file info or by node
               Get menu trees
               Get/save/delete no...
Services: Libraries
               Get file info or by node
               Get menu trees
               Get/save/delete no...
Services: Libraries
               Get file info or by node
               Get menu trees
               Get/save/delete no...
Services: Example




         Advanced Interop → Services


Tuesday, March 10, 2009
Services: Example

               Send HTTP POST to /services/json




         Advanced Interop → Services


Tuesday, Mar...
Services: Example

               Send HTTP POST to /services/json

                     method: search.nodes




        ...
Services: Example

               Send HTTP POST to /services/json

                     method: search.nodes

           ...
Services: Example

               Send HTTP POST to /services/json

                     method: search.nodes

           ...
Services: Example

               Send HTTP POST to /services/json

                     method: search.nodes

           ...
Other Talks This Week




Tuesday, March 10, 2009
Other Talks This Week
                     Using SMS For Data        Communicating Data
                     Collection   ...
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 cli...
Conclusions


               Drupal is ready for integration now
               Rich toolset for social sites + remote cli...
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...
Resources

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

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

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

               http://codesorcery.net/dcdc
                     Will contain these slides
                     ...
Upcoming SlideShare
Loading in...5
×

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

2,982

Published on

For more on this talk, see these links:

http://dc2009.drupalcon.org/session/beyond-web-drupal-meets-desktop-and-mobile
http://codesorcery.net/dcdc

Published in: Technology, Business
0 Comments
26 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,982
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
4
Comments
0
Likes
26
Embeds 0
No embeds

No notes for slide
  • - how many people -- first time drupalcon?
    - how many people -- new to drupal?
    - how many people -- new to integrating with drupal?
  • - 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
  • - 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
  • - 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
  • - 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
  • - 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
  • - 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
  • - 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
  • - 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
  • - 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
  • - What kinds of things can I use?
    - What kinds of things am I already using that could be used for integration?

  • - What kinds of things can I use?
    - What kinds of things am I already using that could be used for integration?

  • - What kinds of things can I use?
    - What kinds of things am I already using that could be used for integration?

  • - 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
  • - 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
  • - 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
  • - 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
  • - 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
  • - 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.
  • - 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.
  • - 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.
  • - 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.
  • - 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.
  • - 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.
  • - 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.
  • - 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.
  • - 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.
  • - 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.
  • - 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
  • - 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
  • - 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
  • - 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
  • - 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
  • - 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
  • - 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?


  • - 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?


  • - 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?


  • - 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?


  • - 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?




  • - Mention that all of those is great, but see how it can be built upon in a minute...
  • - Mention that all of those is great, but see how it can be built upon in a minute...
  • - Mention that all of those is great, but see how it can be built upon in a minute...
  • - Mention that all of those is great, but see how it can be built upon in a minute...
  • - Mention that all of those is great, but see how it can be built upon in a minute...
  • - Mention that all of those is great, but see how it can be built upon in a minute...
  • - Mention that all of those is great, but see how it can be built upon in a minute...
  • - Mention that all of those is great, but see how it can be built upon in a minute...
  • - Mention that all of those is great, but see how it can be built upon in a minute...
  • - visual indication of type
    - size and type info
    - blocks are available for attachment/relationship status
    - as well as all properties (more on next slide)
  • - visual indication of type
    - size and type info
    - blocks are available for attachment/relationship status
    - as well as all properties (more on next slide)
  • - visual indication of type
    - size and type info
    - blocks are available for attachment/relationship status
    - as well as all properties (more on next slide)
  • - visual indication of type
    - size and type info
    - blocks are available for attachment/relationship status
    - as well as all properties (more on next slide)
  • - visual indication of type
    - size and type info
    - blocks are available for attachment/relationship status
    - as well as all properties (more on next slide)
  • - 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)
  • - 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)
  • - 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)
  • - 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
  • - 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
  • - 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
  • - 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
  • - 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
  • - 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
  • - 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
  • - 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)
  • - 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)
  • - 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
  • - 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
  • - 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
  • - 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
  • - 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
  • - 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
  • - 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
  • - 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
  • - 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
  • - 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
  • - 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
  • - 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
  • - example of web-based browsing of file nodes in a system
  • - 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
  • - 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
  • - 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
  • - 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
  • - 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
  • - 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
  • - 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
  • many people are on board with feedapi

    not mentioning it in detail here since it&#x2019;s typically web-to-web
  • many people are on board with feedapi

    not mentioning it in detail here since it&#x2019;s typically web-to-web
  • many people are on board with feedapi

    not mentioning it in detail here since it&#x2019;s typically web-to-web
  • many people are on board with feedapi

    not mentioning it in detail here since it&#x2019;s typically web-to-web
  • many people are on board with feedapi

    not mentioning it in detail here since it&#x2019;s typically web-to-web
  • many people are on board with feedapi

    not mentioning it in detail here since it&#x2019;s typically web-to-web





  • - 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
  • - 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
  • - 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
  • - 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
  • - 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
  • - 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
  • - 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
  • if podcasting is more your thing, drupal has you covered here too

    some modules you&#x2019;ll find interesting are...
  • if podcasting is more your thing, drupal has you covered here too

    some modules you&#x2019;ll find interesting are...
  • if podcasting is more your thing, drupal has you covered here too

    some modules you&#x2019;ll find interesting are...
  • if podcasting is more your thing, drupal has you covered here too

    some modules you&#x2019;ll find interesting are...
  • if podcasting is more your thing, drupal has you covered here too

    some modules you&#x2019;ll find interesting are...
  • if podcasting is more your thing, drupal has you covered here too

    some modules you&#x2019;ll find interesting are...
  • if podcasting is more your thing, drupal has you covered here too

    some modules you&#x2019;ll find interesting are...
  • - 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
  • - 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
  • - 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
  • - 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
  • - 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
  • - 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
  • - 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
  • - 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
  • - node -- all nodes
    - blog -- all blog nodes
    - user blog -- all blog posts for a user
    - taxonomy feeds -- all content published under a certain tag
  • - node -- all nodes
    - blog -- all blog nodes
    - user blog -- all blog posts for a user
    - taxonomy feeds -- all content published under a certain tag
  • - node -- all nodes
    - blog -- all blog nodes
    - user blog -- all blog posts for a user
    - taxonomy feeds -- all content published under a certain tag
  • - node -- all nodes
    - blog -- all blog nodes
    - user blog -- all blog posts for a user
    - taxonomy feeds -- all content published under a certain tag
  • - node -- all nodes
    - blog -- all blog nodes
    - user blog -- all blog posts for a user
    - taxonomy feeds -- all content published under a certain tag
  • - node -- all nodes
    - blog -- all blog nodes
    - user blog -- all blog posts for a user
    - taxonomy feeds -- all content published under a certain tag
  • - important factor, esp. for iphone, is backend mailing
    - smtp -- more useful from remote clients
    - able to centralize your mail, even using another isp
  • - important factor, esp. for iphone, is backend mailing
    - smtp -- more useful from remote clients
    - able to centralize your mail, even using another isp
  • - important factor, esp. for iphone, is backend mailing
    - smtp -- more useful from remote clients
    - able to centralize your mail, even using another isp
  • - important factor, esp. for iphone, is backend mailing
    - smtp -- more useful from remote clients
    - able to centralize your mail, even using another isp
  • - important factor, esp. for iphone, is backend mailing
    - smtp -- more useful from remote clients
    - able to centralize your mail, even using another isp
  • - important factor, esp. for iphone, is backend mailing
    - smtp -- more useful from remote clients
    - able to centralize your mail, even using another isp
  • - important factor, esp. for iphone, is backend mailing
    - smtp -- more useful from remote clients
    - able to centralize your mail, even using another isp
  • - important factor, esp. for iphone, is backend mailing
    - smtp -- more useful from remote clients
    - able to centralize your mail, even using another isp
  • - important factor, esp. for iphone, is backend mailing
    - smtp -- more useful from remote clients
    - able to centralize your mail, even using another isp
  • - important factor, esp. for iphone, is backend mailing
    - smtp -- more useful from remote clients
    - able to centralize your mail, even using another isp
  • - simple office file format exporting
    - json useful for read-only data -- latest content, popular content, new users


  • - simple office file format exporting
    - json useful for read-only data -- latest content, popular content, new users


  • - simple office file format exporting
    - json useful for read-only data -- latest content, popular content, new users


  • - 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
  • - 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
  • - 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




  • - just going to touch on this to mention that drupal support is there
  • - just going to touch on this to mention that drupal support is there
  • - just going to touch on this to mention that drupal support is there
  • - just going to touch on this to mention that drupal support is there
  • - just going to touch on this to mention that drupal support is there
  • - just going to touch on this to mention that drupal support is there
  • - just going to touch on this to mention that drupal support is there
  • - just going to touch on this to mention that drupal support is there
  • - just going to touch on this to mention that drupal support is there
  • - just going to touch on this to mention that drupal support is there
  • - just going to touch on this to mention that drupal support is there
  • - just going to touch on this to mention that drupal support is there
  • - just going to touch on this to mention that drupal support is there





















  • - 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
  • - 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
  • - 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
  • - 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...
  • - 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...
  • - 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...
  • - 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
  • - 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
  • - 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
  • - 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
  • - 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
  • - 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
  • - 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
  • - 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
  • - 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
  • - 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
  • - 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
  • - 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
  • - 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
  • - lightweight, reasonably easy to understand what&#x2019;s going on
  • - this is a core hook just like menu, access, nodeapi, etc.
  • - this is a core hook just like menu, access, nodeapi, etc.
  • - this is a core hook just like menu, access, nodeapi, etc.
  • - this is a core hook just like menu, access, nodeapi, etc.
  • - here&#x2019;s the code you&#x2019;re already writing
  • - here&#x2019;s how you connect drupal&#x2019;s xml-rpc stack to your existing code
  • - here&#x2019;s how you connect drupal&#x2019;s xml-rpc stack to your existing code
  • - here&#x2019;s how you connect drupal&#x2019;s xml-rpc stack to your existing code
  • - here&#x2019;s how you connect drupal&#x2019;s xml-rpc stack to your existing code
  • - here&#x2019;s how you connect drupal&#x2019;s xml-rpc stack to your existing code
  • - very robust
    - more upfront work to understand it
    - if included libraries meet your needs, faster startup
    - otherwise, need to learn the api
  • - very robust
    - more upfront work to understand it
    - if included libraries meet your needs, faster startup
    - otherwise, need to learn the api
  • - very robust
    - more upfront work to understand it
    - if included libraries meet your needs, faster startup
    - otherwise, need to learn the api
  • - very robust
    - more upfront work to understand it
    - if included libraries meet your needs, faster startup
    - otherwise, need to learn the api
  • - very robust
    - more upfront work to understand it
    - if included libraries meet your needs, faster startup
    - otherwise, need to learn the api
  • - very robust
    - more upfront work to understand it
    - if included libraries meet your needs, faster startup
    - otherwise, need to learn the api
  • - very robust
    - more upfront work to understand it
    - if included libraries meet your needs, faster startup
    - otherwise, need to learn the api
  • - very robust
    - more upfront work to understand it
    - if included libraries meet your needs, faster startup
    - otherwise, need to learn the api
  • - plus, of course, your own libraries
  • - plus, of course, your own libraries
  • - plus, of course, your own libraries
  • - plus, of course, your own libraries
  • - plus, of course, your own libraries
  • - plus, of course, your own libraries
  • - plus, of course, your own libraries
  • - plus, of course, your own libraries
  • - good simple example -- out of the box, search for content on the client side
    - as i mentioned, services supports json, xml-rpc, rest, soap
  • - good simple example -- out of the box, search for content on the client side
    - as i mentioned, services supports json, xml-rpc, rest, soap
  • - good simple example -- out of the box, search for content on the client side
    - as i mentioned, services supports json, xml-rpc, rest, soap
  • - good simple example -- out of the box, search for content on the client side
    - as i mentioned, services supports json, xml-rpc, rest, soap
  • - good simple example -- out of the box, search for content on the client side
    - as i mentioned, services supports json, xml-rpc, rest, soap
  • - that about winds it up for me
    - there is a lot going on this week -- check it out











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

    1. 1. Beyond The Web Drupal Meets The Desktop (And Mobile) Justin Miller Code Sorcery Workshop, LLC http://codesorcery.net/dcdc Tuesday, March 10, 2009
    2. 2. Introduction Tuesday, March 10, 2009
    3. 3. Introduction Tuesday, March 10, 2009
    4. 4. Introduction Personal introduction Tuesday, March 10, 2009
    5. 5. Introduction Personal introduction Format & conventions for this talk Tuesday, March 10, 2009
    6. 6. Introduction Personal introduction Format & conventions for this talk Assume familiarity with core/contrib, modules, hooks Tuesday, March 10, 2009
    7. 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. 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. 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. 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. 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. 12. Who are you? Tuesday, March 10, 2009
    13. 13. Who are you? A Drupal developer What’s out there? Does it work? Tuesday, March 10, 2009
    14. 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. 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. 16. Focus Of This Talk Tuesday, March 10, 2009
    17. 17. Focus Of This Talk Tuesday, March 10, 2009
    18. 18. Focus Of This Talk Direct concerns for desktop & mobile Tuesday, March 10, 2009
    19. 19. Focus Of This Talk Direct concerns for desktop & mobile Standards-based exchange Tuesday, March 10, 2009
    20. 20. Focus Of This Talk Direct concerns for desktop & mobile Standards-based exchange Authentication & security Tuesday, March 10, 2009
    21. 21. Focus Of This Talk Direct concerns for desktop & mobile Standards-based exchange Authentication & security Building on what is available Tuesday, March 10, 2009
    22. 22. Today’s Roadmap Tuesday, March 10, 2009
    23. 23. Today’s Roadmap Tuesday, March 10, 2009
    24. 24. Today’s Roadmap Putting Data In Tuesday, March 10, 2009
    25. 25. Today’s Roadmap Putting Data In Getting Data Out Tuesday, March 10, 2009
    26. 26. Today’s Roadmap Putting Data In Getting Data Out Authentication Tuesday, March 10, 2009
    27. 27. Today’s Roadmap Putting Data In Getting Data Out Authentication Advanced Interop (XML-RPC, Services) Tuesday, March 10, 2009
    28. 28. Putting Data In Putting Data In Tuesday, March 10, 2009
    29. 29. Putting Data In Putting Data In Tuesday, March 10, 2009
    30. 30. Putting Data In Desktop Publishing Putting Data In Tuesday, March 10, 2009
    31. 31. Putting Data In Desktop Publishing File Uploads & Attachments Putting Data In Tuesday, March 10, 2009
    32. 32. Putting Data In Desktop Publishing File Uploads & Attachments Files: The Next Level (File Framework) Putting Data In Tuesday, March 10, 2009
    33. 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. 34. Desktop Publishing Putting Data In ➔ Desktop Publishing Tuesday, March 10, 2009
    35. 35. Desktop Publishing Basic support made available by Blog API Putting Data In ➔ Desktop Publishing Tuesday, March 10, 2009
    36. 36. Desktop Publishing Basic support made available by Blog API Optional core module {blogapi} Putting Data In ➔ Desktop Publishing Tuesday, March 10, 2009
    37. 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. 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. 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. 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. 41. File Uploads & Attachments Putting Data In ➔ File Uploads & Attachments Tuesday, March 10, 2009
    42. 42. File Uploads & Attachments Core support with {upload} Putting Data In ➔ File Uploads & Attachments Tuesday, March 10, 2009
    43. 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. 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. 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. 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. 47. File Framework Putting Data In ➔ File Framework Tuesday, March 10, 2009
    48. 48. File Framework Contrib module suite called {fileframework} Putting Data In ➔ File Framework Tuesday, March 10, 2009
    49. 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. 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. 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. 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. 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. 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. 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. 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. 57. Putting Data In ➔ File Framework Tuesday, March 10, 2009
    58. 58. Putting Data In ➔ File Framework Tuesday, March 10, 2009
    59. 59. Putting Data In ➔ File Framework Tuesday, March 10, 2009
    60. 60. Putting Data In ➔ File Framework Tuesday, March 10, 2009
    61. 61. Putting Data In ➔ File Framework Tuesday, March 10, 2009
    62. 62. Putting Data In ➔ File Framework Tuesday, March 10, 2009
    63. 63. Putting Data In ➔ File Framework Tuesday, March 10, 2009
    64. 64. Putting Data In ➔ File Framework Tuesday, March 10, 2009
    65. 65. File Framework Putting Data In ➔ File Framework Tuesday, March 10, 2009
    66. 66. File Framework Efficient Putting Data In ➔ File Framework Tuesday, March 10, 2009
    67. 67. File Framework Efficient File nodes can be reused Putting Data In ➔ File Framework Tuesday, March 10, 2009
    68. 68. File Framework Efficient File nodes can be reused Re-attached again and again Putting Data In ➔ File Framework Tuesday, March 10, 2009
    69. 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. 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. 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. 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. 73. Putting Data In ➔ File Framework Tuesday, March 10, 2009
    74. 74. Putting Data In ➔ File Framework Tuesday, March 10, 2009
    75. 75. Putting Data In ➔ File Framework Tuesday, March 10, 2009
    76. 76. WebDAV Putting Data In ➔ WebDAV Tuesday, March 10, 2009
    77. 77. WebDAV Putting Data In ➔ WebDAV Tuesday, March 10, 2009
    78. 78. WebDAV File Server {fileserver} Putting Data In ➔ WebDAV Tuesday, March 10, 2009
    79. 79. WebDAV File Server {fileserver} Based on {dav} Putting Data In ➔ WebDAV Tuesday, March 10, 2009
    80. 80. WebDAV File Server {fileserver} Based on {dav} Browse file nodes by taxonomy Putting Data In ➔ WebDAV Tuesday, March 10, 2009
    81. 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. 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. 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. 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. 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. 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. 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. 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. 89. Putting Data In ➔ WebDAV Tuesday, March 10, 2009
    90. 90. Putting Data In ➔ WebDAV Tuesday, March 10, 2009
    91. 91. Putting Data In ➔ WebDAV Tuesday, March 10, 2009
    92. 92. Putting Data In ➔ WebDAV Tuesday, March 10, 2009
    93. 93. Putting Data In ➔ WebDAV Tuesday, March 10, 2009
    94. 94. Putting Data In ➔ WebDAV Tuesday, March 10, 2009
    95. 95. Getting Data Out Getting Data Out Tuesday, March 10, 2009
    96. 96. Getting Data Out Getting Data Out Tuesday, March 10, 2009
    97. 97. Getting Data Out Feeds Getting Data Out Tuesday, March 10, 2009
    98. 98. Getting Data Out Feeds Email Getting Data Out Tuesday, March 10, 2009
    99. 99. Getting Data Out Feeds Email Popular Formats Getting Data Out Tuesday, March 10, 2009
    100. 100. Getting Data Out Feeds Email Popular Formats Other Projects of Note Getting Data Out Tuesday, March 10, 2009
    101. 101. General Feed Needs Getting Data Out → Feeds Tuesday, March 10, 2009
    102. 102. General Feed Needs Getting Data Out → Feeds Tuesday, March 10, 2009
    103. 103. General Feed Needs Core Getting Data Out → Feeds Tuesday, March 10, 2009
    104. 104. General Feed Needs Core Automatic node aggregation (e.g., blog) Getting Data Out → Feeds Tuesday, March 10, 2009
    105. 105. General Feed Needs Core Automatic node aggregation (e.g., blog) Create views with {views} Getting Data Out → Feeds Tuesday, March 10, 2009
    106. 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. 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. 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. 109. Feed Needs: Authentication Getting Data Out → Feeds Tuesday, March 10, 2009
    110. 110. Feed Needs: Authentication Getting Data Out → Feeds Tuesday, March 10, 2009
    111. 111. Feed Needs: Authentication Token authentication {tokenauth} Getting Data Out → Feeds Tuesday, March 10, 2009
    112. 112. Feed Needs: Authentication Token authentication {tokenauth} Checks for token present in URL Getting Data Out → Feeds Tuesday, March 10, 2009
    113. 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. 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. 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. 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. 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. 118. Other Feed Needs Tuesday, March 10, 2009
    119. 119. Other Feed Needs Atom in addition to RSS using {atom} Tuesday, March 10, 2009
    120. 120. Other Feed Needs Atom in addition to RSS using {atom} Provides node, blog, user blog, & taxonomy feeds Tuesday, March 10, 2009
    121. 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. 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. 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. 124. Email Getting Data Out → Email Tuesday, March 10, 2009
    125. 125. Email Getting Data Out → Email Tuesday, March 10, 2009
    126. 126. Email Core includes drupal_mail() Getting Data Out → Email Tuesday, March 10, 2009
    127. 127. Email Core includes drupal_mail() Important since it abstracts sending Getting Data Out → Email Tuesday, March 10, 2009
    128. 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. 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. 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. 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. 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. 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. 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. 135. Popular Formats Getting Data Out → Popular Formats Tuesday, March 10, 2009
    136. 136. Popular Formats CSV, Word, TXT with {views_bonus} Getting Data Out → Popular Formats Tuesday, March 10, 2009
    137. 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. 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. 139. Other Projects of Note Getting Data Out → Other Projects Tuesday, March 10, 2009
    140. 140. Other Projects of Note Print & PDF with {print} Getting Data Out → Other Projects Tuesday, March 10, 2009
    141. 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. 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. 143. Authentication Authentication Tuesday, March 10, 2009
    144. 144. Authentication Authentication Tuesday, March 10, 2009
    145. 145. Authentication OpenID & OAuth Authentication Tuesday, March 10, 2009
    146. 146. Authentication OpenID & OAuth LDAP Authentication Tuesday, March 10, 2009
    147. 147. Authentication OpenID & OAuth LDAP HTTP Authentication Tuesday, March 10, 2009
    148. 148. Auth: OpenID & OAuth Authentication → OpenID & OAuth Tuesday, March 10, 2009
    149. 149. Auth: OpenID & OAuth Authentication → OpenID & OAuth Tuesday, March 10, 2009
    150. 150. Auth: OpenID & OAuth Login and a “valet key” for many websites Authentication → OpenID & OAuth Tuesday, March 10, 2009
    151. 151. Auth: OpenID & OAuth Login and a “valet key” for many websites OpenID login support Authentication → OpenID & OAuth Tuesday, March 10, 2009
    152. 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. 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. 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. 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. 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. 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. 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. 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. 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. 161. Auth: LDAP Authentication → LDAP Tuesday, March 10, 2009
    162. 162. Auth: LDAP Authentication → LDAP Tuesday, March 10, 2009
    163. 163. Auth: LDAP Lightweight Directory Access Protocol Authentication → LDAP Tuesday, March 10, 2009
    164. 164. Auth: LDAP Lightweight Directory Access Protocol Enterprise-level solution (client integration, replication) Authentication → LDAP Tuesday, March 10, 2009
    165. 165. Auth: LDAP Lightweight Directory Access Protocol Enterprise-level solution (client integration, replication) Integration with {ldap_integration} Authentication → LDAP Tuesday, March 10, 2009
    166. 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. 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. 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. 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. 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. 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. 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. 173. Auth: HTTP Authentication → HTTP Tuesday, March 10, 2009
    174. 174. Auth: HTTP Authentication → HTTP Tuesday, March 10, 2009
    175. 175. Auth: HTTP {securesite} & {webserver_auth} Authentication → HTTP Tuesday, March 10, 2009
    176. 176. Auth: HTTP {securesite} & {webserver_auth} Both protect resources at the HTTP level Authentication → HTTP Tuesday, March 10, 2009
    177. 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. 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. 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. 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. 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. 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. 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. 184. Advanced Interop Advanced Interop Tuesday, March 10, 2009
    185. 185. Advanced Interop Advanced Interop Tuesday, March 10, 2009
    186. 186. Advanced Interop XML-RPC Advanced Interop Tuesday, March 10, 2009
    187. 187. Advanced Interop XML-RPC Services Advanced Interop Tuesday, March 10, 2009
    188. 188. XML-RPC Advanced Interop → XML-RPC Tuesday, March 10, 2009
    189. 189. XML-RPC Remote Procedure Calls Advanced Interop → XML-RPC Tuesday, March 10, 2009
    190. 190. XML-RPC Remote Procedure Calls In core now (and always has been) Advanced Interop → XML-RPC Tuesday, March 10, 2009
    191. 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. 192. XML-RPC: Status Advanced Interop → XML-RPC Tuesday, March 10, 2009
    193. 193. XML-RPC: Status Has been in Drupal since the beginning Advanced Interop → XML-RPC Tuesday, March 10, 2009
    194. 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. 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. 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. 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. 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. 199. XML-RPC: Basics Advanced Interop → XML-RPC Tuesday, March 10, 2009
    200. 200. XML-RPC: Basics XML encoding Advanced Interop → XML-RPC Tuesday, March 10, 2009
    201. 201. XML-RPC: Basics XML encoding HTTP transport Advanced Interop → XML-RPC Tuesday, March 10, 2009
    202. 202. XML-RPC: Basics XML encoding HTTP transport Can use HTTPS for security Advanced Interop → XML-RPC Tuesday, March 10, 2009
    203. 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. 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. 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. 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. 207. XML-RPC: Format Advanced Interop → XML-RPC Tuesday, March 10, 2009
    208. 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. 209. XML-RPC: Customizing Advanced Interop → XML-RPC Tuesday, March 10, 2009
    210. 210. XML-RPC: Customizing hook_xmlrpc() Advanced Interop → XML-RPC Tuesday, March 10, 2009
    211. 211. XML-RPC: Customizing hook_xmlrpc() Map exposed methods & parameters Advanced Interop → XML-RPC Tuesday, March 10, 2009
    212. 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. 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. 214. XML-RPC: The Work Advanced Interop → XML-RPC Tuesday, March 10, 2009
    215. 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. 216. XML-RPC: Mapping Advanced Interop → XML-RPC Tuesday, March 10, 2009
    217. 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. 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. 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. 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. 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. 222. Services Advanced Interop → Services Tuesday, March 10, 2009
    223. 223. Services Works similarly to core’s XML-RPC Advanced Interop → Services Tuesday, March 10, 2009
    224. 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. 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. 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. 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. 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. 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. 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. 231. Services: Libraries Advanced Interop → Services Tuesday, March 10, 2009
    232. 232. Services: Libraries Get file info or by node Advanced Interop → Services Tuesday, March 10, 2009
    233. 233. Services: Libraries Get file info or by node Get menu trees Advanced Interop → Services Tuesday, March 10, 2009
    234. 234. Services: Libraries Get file info or by node Get menu trees Get/save/delete nodes Advanced Interop → Services Tuesday, March 10, 2009
    235. 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. 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. 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. 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. 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. 240. Services: Example Advanced Interop → Services Tuesday, March 10, 2009
    241. 241. Services: Example Send HTTP POST to /services/json Advanced Interop → Services Tuesday, March 10, 2009
    242. 242. Services: Example Send HTTP POST to /services/json method: search.nodes Advanced Interop → Services Tuesday, March 10, 2009
    243. 243. Services: Example Send HTTP POST to /services/json method: search.nodes search keys: foo bar Advanced Interop → Services Tuesday, March 10, 2009
    244. 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. 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. 246. Other Talks This Week Tuesday, March 10, 2009
    247. 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
    248. 248. Conclusions Tuesday, March 10, 2009
    249. 249. Conclusions Tuesday, March 10, 2009
    250. 250. Conclusions Drupal is ready for integration now Tuesday, March 10, 2009
    251. 251. Conclusions Drupal is ready for integration now Rich toolset for social sites + remote clients Tuesday, March 10, 2009
    252. 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
    253. 253. Resources Tuesday, March 10, 2009
    254. 254. Resources Tuesday, March 10, 2009
    255. 255. Resources http://codesorcery.net/dcdc Tuesday, March 10, 2009
    256. 256. Resources http://codesorcery.net/dcdc Will contain these slides Tuesday, March 10, 2009
    257. 257. Resources http://codesorcery.net/dcdc Will contain these slides Will have full list of modules mentioned today Tuesday, March 10, 2009
    258. 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. 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. 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

    ×