Drupal 7

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    8 Favorites & 1 Group

    Drupal 7 - Presentation Transcript

    1. Drupal 7 Angela “webchick” Byron, Drupalcon DC March 4, 2009
    2. About Me • Started Drupal in 2005 as Google Summer of Code student • Obsessed with everything Drupal (especially getting new people involved!) • Using Drupal co-author, Drupal Association board member, Drupal 7 maintainer • Work at Lullabot doing consulting and education
    3. Agenda • What happens during release? • What’s done so far? • What’s in the future? • How can you help? • Questions?
    4. http://flickr.com/photos/earthandeden/ Mom, where does Drupal come from? A tour of the Drupal release cycle.
    5. Step 1: Release the current version!
    6. Step 1: Release the current version! ! W NE Drupal 6
    7. Step 1: Release the current version! ! W NE Drupal 6
    8. Step 2: Open up next version for development Drupal 6
    9. Step 2: Open up next version for development Drupal 6
    10. Step 2: Open up next version for development Drupal 6
    11. Step 2: Open up next version for development Drupal 6 Drupal 7 (HEAD)
    12. Drupal 4.7 http://flickr.com/photos/shashchatter/
    13. http://flickr.com/photos/shashchatter/ Drupal 4.7 Note: Drupal 5 retires when Drupal 7 is released.
    14. Step 3: “Code thaw” http://flickr.com/photos/monikahoinkis/
    15. http://flickr.com/photos/monikahoinkis/ Step 3: “Code thaw” Fix things that have always annoyed you.
    16. http://flickr.com/photos/monikahoinkis/ Step 3: “Code thaw” Fix things that have always annoyed you. Add features that take Drupal to the next level.
    17. http://flickr.com/photos/monikahoinkis/ Step 3: “Code thaw” Fix things that have always annoyed you. Add features that take Drupal to the next level. Integrate useful contributed modules.
    18. http://flickr.com/photos/monikahoinkis/ Step 3: “Code thaw” Fix things that have always annoyed you. Add features that take Drupal to the next level. Integrate useful contributed modules. World domination!
    19. Step 4: “Code freeze”
    20. Step 4: “Code freeze”
    21. Step 4: “Code freeze”
    22. Step 4: “Code freeze” Alpha / Beta / RC
    23. Step 5: GOTO Step 1
    24. Step 5: GOTO Step 1 ! W NE Drupal 7
    25. Step 5: GOTO Step 1 ! W NE Drupal 7
    26. Step 6: Port all your modules. ;) Drupal 7
    27. Where are we? code thaw code freeze* *Code freeze not necessarily drawn to scale. ;)
    28. Where are we? code thaw code freeze* Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec Jan Feb Mar Apr May Jun Jul Aug Sep 08 08 08 08 08 08 08 08 08 08 08 09 09 09 09 09 09 09 09 09 *Code freeze not necessarily drawn to scale. ;)
    29. Where are we? February, 2008 Drupal 6 released Drupal 7 opened code thaw code freeze* Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec Jan Feb Mar Apr May Jun Jul Aug Sep 08 08 08 08 08 08 08 08 08 08 08 09 09 09 09 09 09 09 09 09 *Code freeze not necessarily drawn to scale. ;)
    30. Where are we? March, 2009 February, 2008 Drupalcon DC Drupal 6 released (we are here now) Drupal 7 opened code thaw code freeze* Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec Jan Feb Mar Apr May Jun Jul Aug Sep 08 08 08 08 08 08 08 08 08 08 08 09 09 09 09 09 09 09 09 09 *Code freeze not necessarily drawn to scale. ;)
    31. Where are we? September 1, 2009 March, 2009 February, 2008 Code freeze Drupalcon DC Drupal 6 released (we are here now) Drupal 7 opened code thaw code freeze* Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec Jan Feb Mar Apr May Jun Jul Aug Sep 08 08 08 08 08 08 08 08 08 08 08 09 09 09 09 09 09 09 09 09 *Code freeze not necessarily drawn to scale. ;)
    32. Where are we? September 1, 2009 March, 2009 February, 2008 Code freeze Drupalcon DC Drupal 6 released (we are here now) Drupal 7 opened “When it’s ready” Drupal 7 release code thaw code freeze* Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec Jan Feb Mar Apr May Jun Jul Aug Sep 08 08 08 08 08 08 08 08 08 08 08 09 09 09 09 09 09 09 09 09 *Code freeze not necessarily drawn to scale. ;)
    33. Where are we? September 1, 2009 March, 2009 February, 2008 Code freeze Drupalcon DC Drupal 6 released (we are here now) Drupal 7 opened “When it’s ready” Drupal 7 release 6 months left! code thaw code freeze* Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec Jan Feb Mar Apr May Jun Jul Aug Sep 08 08 08 08 08 08 08 08 08 08 08 09 09 09 09 09 09 09 09 09 *Code freeze not necessarily drawn to scale. ;)
    34. When is “When it’s ready”?
    35. When is “When it’s ready”?
    36. When is “When it’s ready”?
    37. When is “When it’s ready”? When this number becomes zero.
    38. Should I start building sites on Drupal 7?
    39. Should I start building sites on Drupal 7? NO!
    40. Should I start porting modules to Drupal 7?
    41. Should I start porting modules to Drupal 7? YES!
    42. Should I start porting modules to Drupal 7? YES! *
    43. Should I start porting modules to Drupal 7? YES! * * Sense of adventure required. ;)
    44. Will $feature be in Drupal 7?
    45. Will $feature be in Drupal 7? IT DEPENDS.
    46. Drupal is a...
    47. Drupal is a... DO-OCRACY
    48. Drupal is a... DO-OCRACY The work that gets done is the work that people like you (yes, you!) actually do! :)
    49. “Core maintainers” Dries Buytaert Drupal project lead Neil Drumm Gábor Hojtsy Angela Byron Drupal 5 maintainer Drupal 6 maintainer Drupal 7 maintainer
    50. SLAC “Core maintainers” KERS Dries Buytaert Drupal project lead Neil Drumm Gábor Hojtsy Angela Byron Drupal 5 maintainer Drupal 6 maintainer Drupal 7 maintainer
    51. The people who do the actual work. ;) Over 300 contributors to 1,000+ patches so far!
    52. (some of) Team Drupal 7
    53. (some of) Team Drupal 7
    54. Help wanted! http://drupal.org/community-initiatives/drupal-core Sprint Day on Saturday!
    55. What’s new ? in Drupal 7? So far, anyway...
    56. Changes for site builders
    57. New Minimum Requirements 5.0 5.2 8.3
    58. Installation
    59. Installation
    60. Installation
    61. Installation
    62. Installation
    63. Installation
    64. Installation
    65. Default profile
    66. Default profile
    67. Default profile
    68. Default profile
    69. Permission screen
    70. Permission screen
    71. Permission screen
    72. Users can cancel own accounts
    73. Users can cancel own accounts
    74. Users can cancel own accounts
    75. Users can cancel own accounts
    76. Improved Translation Interface
    77. Improved Translation Interface
    78. Forums
    79. Forums
    80. Content Type Screen
    81. Content Type Screen
    82. Content Type Screen
    83. Content Type Screen
    84. Content Type Screen
    85. Modules page
    86. Modules page
    87. Modules page
    88. Modules page
    89. Themes page
    90. Themes page
    91. Themes page
    92. Configurable Error Reporting
    93. Configurable Error Reporting
    94. Configurable Error Reporting
    95. What’s next for usability? • Vastly improved Help system • Clearer separation of admin vs. user tasks • Filter system improvements • Mark Boulton Design to help re-design Drupal 7 • Fixing issues found in University of Baltimore usability study (Designers, come and join us!)
    96. Sign me up! • http://drupal.org/community-initiatives/ drupal-core/usability • http://groups.drupal.org/usability • http://groups.drupal.org/mark-boulton- design-drupal-7-project • Go to the Usability team’s sessions on Thursday afternoon!
    97. Changes for designers
    98. Re-vamped page.tpl.php
    99. Re-vamped page.tpl.php
    100. Re-vamped page.tpl.php
    101. Re-vamped page.tpl.php • Re-engineered XHTML structure to facilitate CSS-only design.
    102. Re-vamped page.tpl.php • Re-engineered XHTML structure to facilitate CSS-only design. • Standard, semantic class/ID names (.section, #navigation, etc.)
    103. Re-vamped page.tpl.php • Re-engineered XHTML structure to facilitate CSS-only design. • Standard, semantic class/ID names (.section, #navigation, etc.) • Improved consistency throughout.
    104. Re-vamped page.tpl.php • Re-engineered XHTML structure to facilitate CSS-only design. • Standard, semantic class/ID names (.section, #navigation, etc.) • Improved consistency throughout. • Enables designers to create beautiful, CSS- only themes without touching PHP.
    105. And to show it off...
    106. Stark: “Naked” Drupal
    107. drupal_add_js() improvements • Now pass in $options rather than 500 function arguments • Uses actual weighting rather than awkward ‘core’ vs. ‘module’ vs. ‘theme’ types. • Add external JavaScript files to the page. • hook_js_alter() • drupal_add_css() is next!
    108. Cross-library compatibility works in 6! Before: After: (function($) { $('a').fadeOut().fadeIn(); $('a').fadeOut().fadeIn(); })(jQuery);
    109. What’s next for designers? • Re-vamped node, block, comment, etc. templates to further cater to CSS-only themes. • Removing old core themes (and adding new ones)? • jQuery 1.3.x (and jQuery UI?) • Additional interface elements: pop-ups, modal dialogs, vertical tabs, results filters...
    110. Sign me up! • http://drupal.org/community-initiatives/ drupal-core/theming • http://groups.drupal.org/theme- development • http://drupal.org/community-initiatives/ drupal-core/javascript • http://groups.drupal.org/javascript
    111. Changes for coders 01110111 01101001 01101100 01101100 00100000 01100011 01101111 01100100 01100101 00100000 01110000 01101000 01110000 00100000 01100110 01101111 01110010 00100000 01100110 01101111 01101111 01100100
    112. Warning: Things are about to get... geeky.
    113. http://www.flickr.com/photos/sebastian_bergmann/
    114. SimpleTest
    115. SimpleTest
    116. SimpleTest
    117. SimpleTest
    118. SimpleTest • Writing tests causes you to really think through a problem, and helps flesh out obscure bugs.
    119. SimpleTest • Writing tests causes you to really think through a problem, and helps flesh out obscure bugs. • Know instantly if your changes break something; freedom to refactor wildly.
    120. SimpleTest • Writing tests causes you to really think through a problem, and helps flesh out obscure bugs. • Know instantly if your changes break something; freedom to refactor wildly. • Submit a test with your bug fix, it’ll stay fixed forever.
    121. SimpleTest • Writing tests causes you to really think through a problem, and helps flesh out obscure bugs. • Know instantly if your changes break something; freedom to refactor wildly. • Submit a test with your bug fix, it’ll stay fixed forever. • Over 75% test coverage!
    122. SimpleTest works in Excerpt from modules/block/block.test: 6!
    123. testing.drupal.org
    124. testing.drupal.org
    125. testing.drupal.org
    126. testing.drupal.org
    127. testing.drupal.org • “Patch (code needs review)” and “Patch (reviewed & tested by community)” statuses can now be trusted.
    128. testing.drupal.org • “Patch (code needs review)” and “Patch (reviewed & tested by community)” statuses can now be trusted. • Reviewers no longer getting carpal tunnel clicking through all the basic stuff.
    129. testing.drupal.org • “Patch (code needs review)” and “Patch (reviewed & tested by community)” statuses can now be trusted. • Reviewers no longer getting carpal tunnel clicking through all the basic stuff. • Running the full test suite takes a long time; let a computer do it for you!
    130. testing.drupal.org • “Patch (code needs review)” and “Patch (reviewed & tested by community)” statuses can now be trusted. • Reviewers no longer getting carpal tunnel clicking through all the basic stuff. • Running the full test suite takes a long time; let a computer do it for you! • Notifies author within 24 hours if patch no longer applies or breaks tests.
    131. What’s next for testing? • testing.drupal.org testing on multiple databases/platforms • Automated testing for contributed modules • Testing site per patch • Automated testing for JavaScript • Improved core test coverage
    132. Sign me up! • http://drupal.org/community-initiatives/ drupal-core/testing • http://groups.drupal.org/testing-qa • testing.drupal.org back-end: Go see the “Saving Webchick Time” session • Donate to testing framework improvements @ http://testing.drupal.org/
    133. Database The next geNERATION
    134. The who in the what now? • Database abstraction layer built with PHP Data Objects (PDO) • Theoretical support for any database PHP supports; mysql, sqlite, and pgsql drivers in D7. • Dynamic query builder (db_rewrite_sql is DEAD!), with support for old-fashioned SELECTs for simple queries. • Transaction support • Master/slave replication
    135. Static Select Queries Drupal 6: $result = db_query(\"SELECT nid, title FROM {node} WHERE type = '%s' AND nid = %d\", array($type, $nid)); $node = db_fetch_object($result); Drupal 7: $node = db_query('SELECT nid, title FROM {node} WHERE type = :type AND nid = :nid', array(':type' => $type, ':nid' => $nid))->fetchObject();
    136. Dynamic Select Queries Drupal 6: $result = pager_query(db_rewrite_sql('SELECT n.nid FROM {node} n WHERE n.promote = 1 AND n.status = 1 ORDER BY n.sticky DESC, n.created DESC'), variable_get('default_nodes_main', 10)); Drupal 7: $select = db_select('node', 'n') ->fields('n', array('nid')) ->condition('promote', 1) ->condition('status', 1) ->orderBy('sticky', 'DESC') ->orderBy('created', 'DESC') ->extend('PagerDefault') ->limit(variable_get('default_nodes_main', 10)) ->addTag('node_access');
    137. Other Queries Insert Delete $nid = db_insert('node') $num_deleted = db_delete('node') ->fields(array('title', 'uid')) ->condition('nid', 5) ->values(array( ->execute(); 'title' => 'Example', 'uid' => 1, )) ->execute(); Update $num_updated = db_update('node') ->fields(array( 'uid' => 5, 'status' => 1, )) ->condition('created', REQUEST_TIME - 3600, '>=') ->execute();
    138. hook_query_alter() Drupal 6: function hook_db_rewrite_sql($query, $primary_table, $primary_field, $args) { switch ($primary_field) { case 'nid': $return = array(); if ($primary_table != 'n') { $return['join'] = \"LEFT JOIN {node} n ON $primary_table.nid = n.nid\"; } $return['where'] = 'created >' . time() - 3600; return $return; break; } Drupal 7: function hook_query_alter(&$query) { if ($query->hasTag(‘node_access’)) { $query->condition(‘created’, time() - 3600, ‘>’); } }
    139. What’s next for databases? • Improvements to: • Slave replication • Schema API • Update system • Multiple database support • Conversion of all core queries to DBTNG
    140. Sign me up! • http://drupal.org/community-initiatives/ drupal-core/database • http://groups.drupal.org/database • DBTNG session (uh. right now :\\) • API docs: http://drupal.org/node/310069 • Core conversion party on Saturday!
    141. Field API http://www.flickr.com/photos/piper/
    142. About Field API • CCK API in Drupal core (UI in contrib) • No longer node-specific: can attach fields to users, potentially other objects. • Swappable storage back-ends (currently, SQL but potentially web services, etc.) • Consistent way of storing/referencing fields to ease making changes.
    143. Overview Bundles Field Fields instances name = Article name = subtitle type = node type = text Article subtitle widget = text area name = User name = photo type = user type = image Article photo widget = file upload Group of fields that make up Base types User photo a larger entity widget = file upload A field attached to a particular bundle
    144. CCK Today content_type_profile (content type) nid vid name gender age color picture 1 1 Sally F 37 Purple sally.png 2 2 Jesse M 32 Red jesse.png
    145. CCK Today
    146. CCK Today content_type_profile (content type) nid vid name gender age color picture 1 1 Sally F 37 Purple sally.png 2 2 Jesse M 32 Red jesse.png content_field_fav_colors (multi-value field) nid vid delta color 1 1 0 Purple 1 1 1 Green 2 2 0 Red
    147. CCK Today
    148. CCK Today content_type_profile (content type) nid vid name gender age picture 1 1 Sally F 37 sally.png 2 2 Jesse M 32 jesse.png content_field_fav_colors content_field_picture (multi-value field) (shared field) nid vid delta color nid vid image 1 1 0 Purple 1 1 sally.png 1 1 1 Green 1 1 album_cover.png
    149. Field API “revision id” “entity type” Corresponds 1 = user field_data_name to node rev. ID 2 = node etid bundle entity_id revision_id delta name_value 2 profile 1 1 0 Sally 2 profile 2 2 0 Jesse “bundle” “entity id” Name of Corresponds content type to node ID
    150. Field API etid bundle entity_id revision_id delta name_value 2 profile 1 1 0 Sally 2 profile 2 2 0 Jesse etid bundle entity_id revision_id delta gender_value 2 profile 1 1 0 F 2 profile 2 2 0 M etid bundle entity_id revision_id delta color_value 2 profile 1 1 0 Purple 2 profile 1 1 1 Green 2 profile 2 2 0 Red etid bundle entity_id revision_id delta picture_value 2 profile 1 1 0 sally.png 2 profile 2 2 0 jesse.png 2 album 3 3 0 cover.png
    151. What’s next for Field API? • Performance improvements with per-”bundle” storage and materialized views • Translatable fields • User Interface? • Additional fields types (+ body/teaser/ taxonomy?)
    152. Sign me up! • http://drupal.org/community-initiatives/ drupal-core/fields • http://groups.drupal.org/fields-core • API documentation: http://api.drupal.org/ api/group/field/7
    153. Performance http://flickr.com/photos/thatguyfromcchs08/
    154. Registry
    155. Registry
    156. Registry • Auto-parses and caches list of all functions, classes, and interfaces in all files
    157. Registry • Auto-parses and caches list of all functions, classes, and interfaces in all files • Facilitates faster hook calls; only loop through modules that implement a hook
    158. Registry • Auto-parses and caches list of all functions, classes, and interfaces in all files • Facilitates faster hook calls; only loop through modules that implement a hook • Allows more fine-grained break-up of code (ex: all “info” functions in module.registry.inc)
    159. Registry • Auto-parses and caches list of all functions, classes, and interfaces in all files • Facilitates faster hook calls; only loop through modules that implement a hook • Allows more fine-grained break-up of code (ex: all “info” functions in module.registry.inc) • Need to register all files in .info:
    160. Registry • Auto-parses and caches list of all functions, classes, and interfaces in all files • Facilitates faster hook calls; only loop through modules that implement a hook • Allows more fine-grained break-up of code (ex: all “info” functions in module.registry.inc) • Need to register all files in .info:
    161. Registry • Auto-parses and caches list of all functions, classes, and interfaces in all files • Facilitates faster hook calls; only loop through modules that implement a hook • Allows more fine-grained break-up of code (ex: all “info” functions in module.registry.inc) • Need to register all files in .info: files[] = example.module files[] = example.install
    162. No more $op works in 6! • hook_nodeapi(), hook_user(), hook_block(), etc. are no longer “mega” hooks: • hook_nodeapi_load(), hook_nodeapi_update() • hook_user_register(), hook_user_login() • hook_block_list(), hook_block_view() • hook_form_FORM_ID_alter()
    163. Multi-load! • node_load_multiple() • file_load_multiple() • taxonomy_term_load_multiple() • user_load_multiple() (coming soon!)
    164. File API http://flickr.com/photos/bunny/
    165. File API improvements • Files are now first-class objects • hook_file_load(), hook_file_save(), hook_file_move(), etc. • Files are managed automatically; no need to deal with {files} table yourself • Potential for modules to share files
    166. What’s next for files? • Image handling in core (for real this time?) • File management console • Native file fields • Improved private file handling?
    167. Sign me up! • http://drupal.org/community-initiatives/ drupal-core/files • http://drupal.org/community-initiatives/ drupal-core/images • http://groups.drupal.org/file-api • http://groups.drupal.org/image
    168. Hooks http://flickr.com/photos/yabanji/
    169. New Hooks in D7 • hook_modules_X(): installed, enabled, disabled, uninstalled • hook_taxonomy_term_X(): load, insert, update, delete • hook_taxonomy_vocabulary_X(): load, insert, update, delete • hook_aggregator_X(): fetch, parse, process, remove
    170. hook_page_alter() Drupal 6: Drupal 7: function page_callback($nids) { function page_callback($nids) { $output =   $nodes = node_load_multiple($nids); t('Welcome to a big list of nodes.');   $build['message'] = array(   foreach ($nids as $nid) {   '#markup' =>   $output .= node_view(node_load($nid)); t('Welcome to a big list of nodes.'),  }   );   $output .= theme('pager');   foreach ($nodes as $node) {   $build['nodes'][$node->nid] =   return $output; node_build($node); }  }   $build['pager'] = array(   '#markup' => theme('pager'),   '#weight' => 5,   );   return drupal_get_page($build); }
    171. $page object $page['left']['blocks']['user-navigation']['#block'] = (block object); $page['content']['message']['#markup'] = 'Welcome to a big list of nodes.'; $page['content']['nodes'] = (array of node objects keyed by node ID); $page['content']['pager']['#markup'] = (HTML markup of pager); $page['footer']['blocks']['system-powered-by']['#block'] = (block object); Mwahahahahaha....!
    172. Questions?

    + guest31ca73guest31ca73, 8 months ago

    custom

    2912 views, 8 favs, 3 embeds more stats

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 2912
      • 2606 on SlideShare
      • 306 from embeds
    • Comments 0
    • Favorites 8
    • Downloads 63
    Most viewed embeds
    • 246 views on http://indexante.com
    • 59 views on http://www.factorsim.info
    • 1 views on http://www.slideshare.net

    more

    All embeds
    • 246 views on http://indexante.com
    • 59 views on http://www.factorsim.info
    • 1 views on http://www.slideshare.net

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories

    Groups / Events