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