SlideShare uma empresa Scribd logo
1 de 25
7 as a RAD Tool
 I'm not kidding
Not a drag and drop app builder
Hook system
       not obvious
       Reminiscent of old word processor print drivers
Best suited to web apps
       Output need not HTML
       XML, RSS, services
New in 7
       render elements universal - used to be in form
Render elements are new to Drupal 7's theme layer. They've existed since Drupal 4.7 as part of the Form API, but they've now been injected into the heart of the theme system. A Render
element is a complex data structure passed as a single parameter to theme(), as one of its variables. Render elements are fundamentally nested arrays that can include:

The data to be rendered Other render elements which are considered "children" of the element An array of structures such as CSS and JavaScript files, that should be attached to the page
when it is rendered A list of theme hooks that can be used to theme the data A list of callback functions to run on the element before and after it is themed

Climbing the hook tree
      You can see a good implementation of this in views

In Drupal 7, there are 184 theme hooks that you could use in your own code. Many of those theme hooks are specific to a core module's usage, like theming an administration form, but it's
still useful to go through the entire list to find hooks you could reuse. To make it even easier, we've included a list of the most commonly reused theme hooks:

Credo: Sacrifice the API, preserve data. Means that API chances between version can be apocalyptic.

Data values in forms - move data in array - form_state
Persistent data in db

Tokens in core
Like several things moved into core, admin/interface remains in contrib - see field API

Drupal 7 introduces major changes to the way Drupal handles content. In earlier versions, nearly all content was considered a "node". By making content a standard object with a common
API, any module could add data to and manipulate that object to create complex data models and workflows.

That worked extremely well, with the exception that Drupal had several other types of objects, such as users or comments, that were not really "content" per se but could still have benefited
from the same rich API. For Drupal 7, therefore, most of those separate object types were merged into a single super-system known as "entities". Nodes, users, comments, and several
other types of data objects are now particular instances of the generic Entity data object concept. That allows all types of data to have the same, or at least very similar, API and workflow,
avoiding duplicate code and reducing the number of moving parts developers need to keep track of. Most importantly, it allows us to attach Fields, discrete structured pieces of information,
to any type of entity rather than just to nodes.

Bundles - entity subtypes

Schema API
What is Drupal?
• OOTB blog/website/CMS




• A set of APIs that let you turn it into almost
  anything
What is Drupal?
• OOTB blog/website/CMS
 • Okay, it’s still harder to get going than Wordpress, but it is much
   improved in that regard in Drupal 7

 • We don’t care


• A set of APIs that let you turn it into almost
  anything

 • This is the interesting part
Some Assumptions
• You have heard of Drupal

• You know that it is a popular CMS in the
  library community

• You might know that it is easy to extend

• You might have heard some of the reasons,
  like the hook system
We’re talking
framework here.
7
• Why so long?

• Better alignment of contributed and core funcionality

• Stuff we have been waiting for since Drupal 5 and
  Drupal 4.7

• #D7CX pledge:

  • My module will be ready on the day Drupal 7 is
    released
The Drupal Credo
Sac!fice " API, preserve " data


  • Means that user data is gold. Developer effort
    is expendable.

  • API changes between versions can be
    apocalyptic.
(Short) Tale of Two
         Drupals
• Modules

• Theme

 • Theme hooks

 • Templates
Hook
• Reminiscent of ancient word processor print driver system

   • Intercepted processes to build print stream

   • Matched two APIs

      • What the program wanted to send

      • What the printer expected to see

   • Economics - word processor companies wanted others to do their work for
     them

• Flash forward

   • Open source software

   • A very simple system that allows developers to insert or modify functionality
     almost anywhere. Without talking to each other.
Core Hooks in Drupal
                    6
custom_url_rewrite_inboundphp    hook_hook_info                   hook_search
custom_url_rewrite_outboundphp   hook_init See also, hook_boot.   hook_search_preprocess
hook_access                      hook_insert                      hook_system_info_alterinfo files
hook_actions_delete              hook_install                     hook_taxonomy
hook_action_info                 hook_link                        hook_term_path
hook_action_info_alter           hook_link_alter                  hook_theme
hook_block                       hook_load                        hook_theme_registry_alter
hook_boot See also, hook_init.




                                 78
                                 hook_locale                      hook_translated_menu_link_alter
hook_comment                     hook_mail                        hook_translation_link_alter
hook_cron                        hook_mail_alterhook_menu         hook_uninstall
hook_db_rewrite_sql              hook_menu_alter                  hook_update
hook_delete                      hook_menu_link_alter             hook_update_index
hook_disable                     hook_nodeapi                     hook_update_last_removed
hook_elements                    hook_node_access_records         hook_update_N
hook_enable                      hook_node_grants                 hook_update_projects_alter
hook_exit                        hook_node_info                   hook_update_status_alter
hook_file_download               hook_node_operations             hook_user
hook_filter                      hook_node_type                   hook_user_operations
hook_filter_tips                 hook_openid                      hook_validate
hook_flush_caches                hook_perm                        hook_view
hook_footer                      hook_ping                        hook_watchdog
hook_form                        hook_prepare                     module_hook
hook_forms                       hook_profile_alter               module_implements
hook_form_alter                  hook_requirements                module_invoke
hook_form_FORM_ID_alter          hook_schema                      module_invoke_all
hook_help                        hook_schema_alter                page_cache_fastpath
Core Hooks in Drupal
 hook_actions_delete
 hook_action_info
 hook_action_info_alter
 hook_admin_paths
 hook_admin_paths_alter
                            7         hook_entity_delete
                                      hook_entity_info
                                      hook_entity_info_alter
                                      hook_entity_insert
                                      hook_entity_load
                                                                         hook_js_alter
                                                                         hook_language_fallback_candidates_alter
                                                                         hook_language_init
                                                                         hook_language_negotiation_info
                                                                         hook_language_negotiation_info_alter
                                                                                                                    hook_node_update_index
                                                                                                                    hook_node_validate
                                                                                                                    hook_node_view
                                                                                                                    hook_node_view_alter
                                                                                                                    hook_openid
 hook_aggregator_fetch                hook_entity_prepare_view           hook_language_switch_links_alter           hook_openid_discovery_method_info
 hook_aggregator_fetch_info           hook_entity_presave                hook_language_types_info                   hook_openid_discovery_method_info_alter
 hook_aggregator_parse                hook_entity_query_alter            hook_language_types_info_alter             hook_openid_normalization_method_info
 hook_aggregator_parse_info           hook_entity_update                 hook_library                               hook_openid_normalization_method_info_alter
 hook_aggregator_process              hook_entity_view                   hook_library_alter                         hook_openid_response
 hook_aggregator_process_info




                                     266
                                      hook_entity_view_alter             hook_load                                  hook_overlay_child_initialize
 hook_aggregator_remove               hook_exit                          hook_locale                                hook_overlay_parent_initialize
 hook_ajax_render_alter               hook_filetransfer_info             hook_mail                                  hook_page_alter
 hook_archiver_info                   hook_filetransfer_info_alter       hook_mail_alter                            hook_page_build
 hook_archiver_info_alter             hook_file_copy                     hook_menu                                  hook_page_delivery_callback_alter
 hook_batch_alter                     hook_file_delete                   hook_menu_alter                            hook_path_delete
 hook_block_configure                 hook_file_download                 hook_menu_breadcrumb_alter                 hook_path_insert
 hook_block_info                      hook_file_insert                   hook_menu_contextual_links_alter           hook_path_update
hook_block_info_alter                hook_file_load                     hook_menu_delete                           hook_permission
hook_block_list_alter                hook_file_mimetype_mapping_alter   hook_menu_get_item_alter                   hook_prepare
hook_block_save                      hook_file_move                     hook_menu_insert                           hook_query_alter
hook_block_view                      hook_file_presave                  hook_menu_link_alter                       hook_query_TAG_alter
hook_block_view_alter                hook_file_update                   hook_menu_link_delete                      hook_ranking
hook_block_view_MODULE_DELTA_alter   hook_file_url_alter                hook_menu_link_insert                      hook_rdf_mapping
hook_boot See also, hook_init.       hook_file_validate                 hook_menu_link_update                      hook_rdf_namespaces
hook_comment_delete                  hook_filter_format_disable         hook_menu_local_tasks_alter                hook_registry_files_alter
hook_comment_insert                  hook_filter_format_insert          hook_menu_site_status_alter                hook_requirements
hook_comment_load                    hook_filter_format_update          hook_menu_update                           hook_schema
hook_comment_presave                 hook_filter_info                   hook_modules_disabled                      hook_schema_alter
hook_comment_publish                 hook_filter_info_alter             hook_modules_enabled                       hook_search_access
hook_comment_unpublish               hook_flush_caches                  hook_modules_installed                     hook_search_admin
hook_comment_update                  hook_form                          hook_modules_uninstalled                   hook_search_execute
hook_comment_view                    hook_forms                         hook_module_implements_alter               hook_search_info
hook_comment_view_alter              hook_form_alter                    hook_multilingual_settings_changed         hook_search_page
hook_contextual_links_view_alter     hook_form_BASE_FORM_ID_alter       hook_node_access                           hook_search_preprocess
hook_countries_alter                 hook_form_FORM_ID_alter            hook_node_access_records                   hook_search_reset
hook_cron                            hook_help                          hook_node_access_records_alter             hook_search_status
hook_cron_queue_info                 hook_hook_info                     hook_node_delete                           hook_shortcut_default_set
hook_cron_queue_info_alter           hook_hook_info_alter               hook_node_grants                           hook_simpletest_alter
hook_css_alter                       hook_html_head_alter               hook_node_grants_alter                     hook_stream_wrappers
hook_custom_theme                    hook_image_default_styles          hook_node_info                             hook_stream_wrappers_alter
hook_dashboard_regions               hook_image_effect_info             hook_node_insert                           hook_system_info_alterinfo files
hook_dashboard_regions_alter         hook_image_effect_info_alter       hook_node_load                             hook_system_themes_page_alter
hook_date_formats                    hook_image_styles_alter            hook_node_operations                       h
hook_date_formats_alter              hook_image_style_delete            hook_node_prepare                          ook_taxonomy_term_delete
hook_date_format_types               hook_image_style_flush             hook_node_presave                          hook_taxonomy_term_insert
hook_date_format_types_alter         hook_image_style_save              hook_node_revision_delete                  hook_taxonomy_term_load
hook_delete                          hook_image_toolkits                hook_node_search_result                    hook_taxonomy_term_presave
hook_disable                         hook_init See also, hook_boot.     hook_node_submit                           hook_taxonomy_term_update
hook_drupal_goto_alter               hook_insert                        hook_node_type_delete                      hook_taxonomy_term_view_alter
hook_element_info                    hook_install                       hook_node_type_insert                      hook_taxonomy_vocabulary_delete
hook_element_info_alter              hook_install_tasks                 hook_node_type_update                      hook_taxonomy_vocabulary_insert
hook_enable                          hook_install_tasks_alter           hook_node_update                           hook_taxonomy_vocabulary_load
What’s in the Box
Files that say stuff:

CHANGELOG.txt
COPYRIGHT.txt
INSTALL.mysql.txt
INSTALL.pgsql.txt
INSTALL.sqlite.txt
INSTALL.txt
LICENSE.txt
MAINTAINERS.txt
README.txt
UPGRADE.txt
What’s in the Box
Files that do stuff:

authorize.php
cron.php
index.php
install.php
robots.txt
update.php
web.config
xmlrpc.php
What’s in the Box
Directories:

includes
misc
profiles
scripts
modules
themes
sites
  all
    modules
    themes
    libraries
  default
Modules
• Core module

• Contrib modules

• Learn to love associative arrays. Passing data
  in strings is dead(ish)

• By using core hooks, modules achieve instant
  interoperabity
help.info
; $Id: help.info,v 1.9 2010/12/20 19:59:42 webchick Exp $
name = Help
description = Manages the display of online help.
package = Core
version = VERSION
core = 7.x
files[] = help.test

; Information added by drupal.org packaging script on 2011-01-05
version = "7.0"
project = "drupal"
datestamp = "1294208756"
help.module -1
<?php
// $Id: help.module,v 1.99 2010/10/04 14:54:10 webchick Exp $

/**
 * @file
 * Manages displaying online help.
 */
}
help.module -2
/**
 * Implements hook_menu().
 */
function help_menu() {
  $items['admin/help'] = array(
    'title' => 'Help',
    'description' => 'Reference for usage, configuration, and modules.',
    'page callback' => 'help_main',
    'access arguments' => array('access administration pages'),
    'weight' => 9,
    'file' => 'help.admin.inc',
  );

    foreach (module_implements('help', TRUE) as $module) {
      $items['admin/help/' . $module] = array(
        'title' => $module,
        'page callback' => 'help_page',
        'page arguments' => array(2),
        'access arguments' => array('access administration pages'),
        'type' => MENU_VISIBLE_IN_BREADCRUMB,
        'file' => 'help.admin.inc',
      );
    }

    return $items;
}
help.module -3
/**
 * Implements hook_help().
 */
function help_help($path, $arg) {
  switch ($path) {
    case 'admin/help':
     $output = '<p>' . t('Follow these steps to set up and start using your website:') . '</p>';
     $output .= '<ol>';
     $output .= '<li>' . t('<strong>Configure your website</strong> Once logged in, visit the <a href="@admin">administration section</a>, where you
can <a href="@config">customize and configure</a> all aspects of your website.', array('@admin' => url('admin'), '@config' => url('admin/config'))) .
'</li>';
     $output .= '</ol>';
     $output .= '<p>' . t('For more information, refer to the specific topics listed in the next section or to the <a href="@handbook">online Drupal
handbooks</a>. You may also post at the <a href="@forum">Drupal forum</a> or view the wide range of <a href="@support">other support
options</a> available.', array('@help' => url('admin/help'), '@handbook' => 'http://drupal.org/handbooks', '@forum' => 'http://drupal.org/forum',
'@support' => 'http://drupal.org/support')) . '</p>';
      ---snip---
     return $output;
    case 'admin/help#help':
     $output = '';
     $output .= '<h3>' . t('About') . '</h3>';
      ---snip---
     $output .= '<h3>' . t('Uses') . '</h3>';
     $output .= '<dl>';
     $output .= '<dt>' . t('Providing a help reference') . '</dt>';
      ---snip---
     $output .= '<dd>' . t('The Help module displays context-sensitive advice and explanations on various pages.') . '</dd>';
     $output .= '</dl>';
     return $output;
  }
}
help.test
<?php
// $Id: help.test,v 1.22 2010/11/27 20:25:44 dries Exp $

class HelpTestCase extends DrupalWebTestCase {
 protected $big_user;
 protected $any_user;

 public static function getInfo() {
   return array(
     'name' => 'Help functionality',
     'description' => 'Verify help display and user access to help based on permissions.',
     'group' => 'Help',
   );
 }

 /**
  * Enable modules and create users with specific permissions.
  */
 function setUp() {
   parent::setUp('blog', 'poll');

  $this->getModuleList();

    // Create users.
    $this->big_user = $this->drupalCreateUser(array('access administration pages', 'view the administration theme',
'administer permissions'));
    $this->any_user = $this->drupalCreateUser(array());
  }
}
Drupal APIs. Yum.


• core modules call core hooks

• Drupal 8 will be even more reliant on its own
  APIs
New in Drupal 7
• Besides 190 new hooks

• More granular control of processing order

 • 12 levels of preprocess function minimize
   can’t get there from here issues

• SimpleTest framework in core

• Generally more consistent
So, What’s it Good For
• CMS

• WEB based applications

• Front ends to dedicated apps

  • Islandora

• RDF

• Multi-output (XML, etc.)

• Data apps

• Anything
That’s All
• api.drupal.org

• Cary Gordon
  The Cherry Hill Company
  Los Angeles, CA
  310-397-2999
  cgordon@chillco.com
  highermath (Drupal, irc, twitter, etc)

• BoF this afternoon

Mais conteúdo relacionado

Mais procurados

深入淺出 MVC
深入淺出 MVC深入淺出 MVC
深入淺出 MVCJace Ju
 
2007 Fsoss Drupal Under The Hood
2007 Fsoss Drupal Under The Hood2007 Fsoss Drupal Under The Hood
2007 Fsoss Drupal Under The HoodJames Walker
 
ZF2 for the ZF1 Developer
ZF2 for the ZF1 DeveloperZF2 for the ZF1 Developer
ZF2 for the ZF1 DeveloperGary Hockin
 
Hyperproductive JSF 2.0 @ JavaOne Brazil 2010
Hyperproductive JSF 2.0 @ JavaOne Brazil 2010Hyperproductive JSF 2.0 @ JavaOne Brazil 2010
Hyperproductive JSF 2.0 @ JavaOne Brazil 2010Arun Gupta
 
Apigility reloaded
Apigility reloadedApigility reloaded
Apigility reloadedRalf Eggert
 
Java Web Programming [5/9] : EL, JSTL and Custom Tags
Java Web Programming [5/9] : EL, JSTL and Custom TagsJava Web Programming [5/9] : EL, JSTL and Custom Tags
Java Web Programming [5/9] : EL, JSTL and Custom TagsIMC Institute
 

Mais procurados (7)

深入淺出 MVC
深入淺出 MVC深入淺出 MVC
深入淺出 MVC
 
2007 Fsoss Drupal Under The Hood
2007 Fsoss Drupal Under The Hood2007 Fsoss Drupal Under The Hood
2007 Fsoss Drupal Under The Hood
 
ZF2 for the ZF1 Developer
ZF2 for the ZF1 DeveloperZF2 for the ZF1 Developer
ZF2 for the ZF1 Developer
 
Hyperproductive JSF 2.0 @ JavaOne Brazil 2010
Hyperproductive JSF 2.0 @ JavaOne Brazil 2010Hyperproductive JSF 2.0 @ JavaOne Brazil 2010
Hyperproductive JSF 2.0 @ JavaOne Brazil 2010
 
Apigility reloaded
Apigility reloadedApigility reloaded
Apigility reloaded
 
Java Web Programming [5/9] : EL, JSTL and Custom Tags
Java Web Programming [5/9] : EL, JSTL and Custom TagsJava Web Programming [5/9] : EL, JSTL and Custom Tags
Java Web Programming [5/9] : EL, JSTL and Custom Tags
 
BEAR v0.9 (Saturday)
BEAR v0.9 (Saturday)BEAR v0.9 (Saturday)
BEAR v0.9 (Saturday)
 

Semelhante a Drupal 7 as a rad tool

Taking your module from Drupal 6 to Drupal 7
Taking your module from Drupal 6 to Drupal 7Taking your module from Drupal 6 to Drupal 7
Taking your module from Drupal 6 to Drupal 7Phase2
 
Custom module and theme development in Drupal7
Custom module and theme development in Drupal7Custom module and theme development in Drupal7
Custom module and theme development in Drupal7marif4pk
 
Drupal 7-api-2010-11-10
Drupal 7-api-2010-11-10Drupal 7-api-2010-11-10
Drupal 7-api-2010-11-10Shamsher Alam
 
CodeIgniter PHP MVC Framework
CodeIgniter PHP MVC FrameworkCodeIgniter PHP MVC Framework
CodeIgniter PHP MVC FrameworkBo-Yi Wu
 
livedoor blogのsorryサーバの話 #study2study
livedoor blogのsorryサーバの話 #study2studylivedoor blogのsorryサーバの話 #study2study
livedoor blogのsorryサーバの話 #study2studySATOSHI TAGOMORI
 
Building and managing applications fast for IBM i
Building and managing applications fast for IBM iBuilding and managing applications fast for IBM i
Building and managing applications fast for IBM iZend by Rogue Wave Software
 
Drupal 8 - Core and API Changes
Drupal 8 - Core and API ChangesDrupal 8 - Core and API Changes
Drupal 8 - Core and API ChangesShabir Ahmad
 
What's New In Apache Lenya 1.4
What's New In Apache Lenya 1.4What's New In Apache Lenya 1.4
What's New In Apache Lenya 1.4nobby
 
Migrate yourself. code -> module -> mind
Migrate yourself. code -> module -> mindMigrate yourself. code -> module -> mind
Migrate yourself. code -> module -> mindValentine Matsveiko
 
Валентин Мацвейко та Владислав Мойсеєнко — D8: Migrate Yourself: code->module...
Валентин Мацвейко та Владислав Мойсеєнко — D8: Migrate Yourself: code->module...Валентин Мацвейко та Владислав Мойсеєнко — D8: Migrate Yourself: code->module...
Валентин Мацвейко та Владислав Мойсеєнко — D8: Migrate Yourself: code->module...LEDC 2016
 
A linux mac os x command line interface
A linux mac os x command line interfaceA linux mac os x command line interface
A linux mac os x command line interfaceDavid Walker
 
Advanced moduledevelopment d6_slideshare
Advanced moduledevelopment d6_slideshareAdvanced moduledevelopment d6_slideshare
Advanced moduledevelopment d6_slideshareOpevel
 
What Big Data Folks Need to Know About DevOps
What Big Data Folks Need to Know About DevOpsWhat Big Data Folks Need to Know About DevOps
What Big Data Folks Need to Know About DevOpsMatt Ray
 
A deep dive into Drupal 8 routing
A deep dive into Drupal 8 routingA deep dive into Drupal 8 routing
A deep dive into Drupal 8 routingNaveen Valecha
 
Introduction à Ruby
Introduction à RubyIntroduction à Ruby
Introduction à RubyMicrosoft
 
devise tutorial - 2011 rubyconf taiwan
devise tutorial - 2011 rubyconf taiwandevise tutorial - 2011 rubyconf taiwan
devise tutorial - 2011 rubyconf taiwanTse-Ching Ho
 
Nginx: Accelerate Rails, HTTP Tricks
Nginx: Accelerate Rails, HTTP TricksNginx: Accelerate Rails, HTTP Tricks
Nginx: Accelerate Rails, HTTP TricksAdam Wiggins
 
Rails 3 - The Developers Conference - 21aug2010
Rails 3 - The Developers Conference - 21aug2010Rails 3 - The Developers Conference - 21aug2010
Rails 3 - The Developers Conference - 21aug2010Plataformatec
 
Symfony2 Introduction Presentation
Symfony2 Introduction PresentationSymfony2 Introduction Presentation
Symfony2 Introduction PresentationNerd Tzanetopoulos
 

Semelhante a Drupal 7 as a rad tool (20)

Taking your module from Drupal 6 to Drupal 7
Taking your module from Drupal 6 to Drupal 7Taking your module from Drupal 6 to Drupal 7
Taking your module from Drupal 6 to Drupal 7
 
Custom module and theme development in Drupal7
Custom module and theme development in Drupal7Custom module and theme development in Drupal7
Custom module and theme development in Drupal7
 
Drupal 7-api-2010-11-10
Drupal 7-api-2010-11-10Drupal 7-api-2010-11-10
Drupal 7-api-2010-11-10
 
CodeIgniter PHP MVC Framework
CodeIgniter PHP MVC FrameworkCodeIgniter PHP MVC Framework
CodeIgniter PHP MVC Framework
 
livedoor blogのsorryサーバの話 #study2study
livedoor blogのsorryサーバの話 #study2studylivedoor blogのsorryサーバの話 #study2study
livedoor blogのsorryサーバの話 #study2study
 
Building and managing applications fast for IBM i
Building and managing applications fast for IBM iBuilding and managing applications fast for IBM i
Building and managing applications fast for IBM i
 
Drupal 8 - Core and API Changes
Drupal 8 - Core and API ChangesDrupal 8 - Core and API Changes
Drupal 8 - Core and API Changes
 
Php version 5
Php version 5Php version 5
Php version 5
 
What's New In Apache Lenya 1.4
What's New In Apache Lenya 1.4What's New In Apache Lenya 1.4
What's New In Apache Lenya 1.4
 
Migrate yourself. code -> module -> mind
Migrate yourself. code -> module -> mindMigrate yourself. code -> module -> mind
Migrate yourself. code -> module -> mind
 
Валентин Мацвейко та Владислав Мойсеєнко — D8: Migrate Yourself: code->module...
Валентин Мацвейко та Владислав Мойсеєнко — D8: Migrate Yourself: code->module...Валентин Мацвейко та Владислав Мойсеєнко — D8: Migrate Yourself: code->module...
Валентин Мацвейко та Владислав Мойсеєнко — D8: Migrate Yourself: code->module...
 
A linux mac os x command line interface
A linux mac os x command line interfaceA linux mac os x command line interface
A linux mac os x command line interface
 
Advanced moduledevelopment d6_slideshare
Advanced moduledevelopment d6_slideshareAdvanced moduledevelopment d6_slideshare
Advanced moduledevelopment d6_slideshare
 
What Big Data Folks Need to Know About DevOps
What Big Data Folks Need to Know About DevOpsWhat Big Data Folks Need to Know About DevOps
What Big Data Folks Need to Know About DevOps
 
A deep dive into Drupal 8 routing
A deep dive into Drupal 8 routingA deep dive into Drupal 8 routing
A deep dive into Drupal 8 routing
 
Introduction à Ruby
Introduction à RubyIntroduction à Ruby
Introduction à Ruby
 
devise tutorial - 2011 rubyconf taiwan
devise tutorial - 2011 rubyconf taiwandevise tutorial - 2011 rubyconf taiwan
devise tutorial - 2011 rubyconf taiwan
 
Nginx: Accelerate Rails, HTTP Tricks
Nginx: Accelerate Rails, HTTP TricksNginx: Accelerate Rails, HTTP Tricks
Nginx: Accelerate Rails, HTTP Tricks
 
Rails 3 - The Developers Conference - 21aug2010
Rails 3 - The Developers Conference - 21aug2010Rails 3 - The Developers Conference - 21aug2010
Rails 3 - The Developers Conference - 21aug2010
 
Symfony2 Introduction Presentation
Symfony2 Introduction PresentationSymfony2 Introduction Presentation
Symfony2 Introduction Presentation
 

Último

Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Scott Andery
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 

Último (20)

Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 

Drupal 7 as a rad tool

  • 1. 7 as a RAD Tool I'm not kidding
  • 2. Not a drag and drop app builder Hook system not obvious Reminiscent of old word processor print drivers Best suited to web apps Output need not HTML XML, RSS, services New in 7 render elements universal - used to be in form Render elements are new to Drupal 7's theme layer. They've existed since Drupal 4.7 as part of the Form API, but they've now been injected into the heart of the theme system. A Render element is a complex data structure passed as a single parameter to theme(), as one of its variables. Render elements are fundamentally nested arrays that can include: The data to be rendered Other render elements which are considered "children" of the element An array of structures such as CSS and JavaScript files, that should be attached to the page when it is rendered A list of theme hooks that can be used to theme the data A list of callback functions to run on the element before and after it is themed Climbing the hook tree You can see a good implementation of this in views In Drupal 7, there are 184 theme hooks that you could use in your own code. Many of those theme hooks are specific to a core module's usage, like theming an administration form, but it's still useful to go through the entire list to find hooks you could reuse. To make it even easier, we've included a list of the most commonly reused theme hooks: Credo: Sacrifice the API, preserve data. Means that API chances between version can be apocalyptic. Data values in forms - move data in array - form_state Persistent data in db Tokens in core Like several things moved into core, admin/interface remains in contrib - see field API Drupal 7 introduces major changes to the way Drupal handles content. In earlier versions, nearly all content was considered a "node". By making content a standard object with a common API, any module could add data to and manipulate that object to create complex data models and workflows. That worked extremely well, with the exception that Drupal had several other types of objects, such as users or comments, that were not really "content" per se but could still have benefited from the same rich API. For Drupal 7, therefore, most of those separate object types were merged into a single super-system known as "entities". Nodes, users, comments, and several other types of data objects are now particular instances of the generic Entity data object concept. That allows all types of data to have the same, or at least very similar, API and workflow, avoiding duplicate code and reducing the number of moving parts developers need to keep track of. Most importantly, it allows us to attach Fields, discrete structured pieces of information, to any type of entity rather than just to nodes. Bundles - entity subtypes Schema API
  • 3. What is Drupal? • OOTB blog/website/CMS • A set of APIs that let you turn it into almost anything
  • 4. What is Drupal? • OOTB blog/website/CMS • Okay, it’s still harder to get going than Wordpress, but it is much improved in that regard in Drupal 7 • We don’t care • A set of APIs that let you turn it into almost anything • This is the interesting part
  • 5. Some Assumptions • You have heard of Drupal • You know that it is a popular CMS in the library community • You might know that it is easy to extend • You might have heard some of the reasons, like the hook system
  • 7. 7 • Why so long? • Better alignment of contributed and core funcionality • Stuff we have been waiting for since Drupal 5 and Drupal 4.7 • #D7CX pledge: • My module will be ready on the day Drupal 7 is released
  • 8. The Drupal Credo Sac!fice " API, preserve " data • Means that user data is gold. Developer effort is expendable. • API changes between versions can be apocalyptic.
  • 9. (Short) Tale of Two Drupals • Modules • Theme • Theme hooks • Templates
  • 10. Hook • Reminiscent of ancient word processor print driver system • Intercepted processes to build print stream • Matched two APIs • What the program wanted to send • What the printer expected to see • Economics - word processor companies wanted others to do their work for them • Flash forward • Open source software • A very simple system that allows developers to insert or modify functionality almost anywhere. Without talking to each other.
  • 11. Core Hooks in Drupal 6 custom_url_rewrite_inboundphp hook_hook_info hook_search custom_url_rewrite_outboundphp hook_init See also, hook_boot. hook_search_preprocess hook_access hook_insert hook_system_info_alterinfo files hook_actions_delete hook_install hook_taxonomy hook_action_info hook_link hook_term_path hook_action_info_alter hook_link_alter hook_theme hook_block hook_load hook_theme_registry_alter hook_boot See also, hook_init. 78 hook_locale hook_translated_menu_link_alter hook_comment hook_mail hook_translation_link_alter hook_cron hook_mail_alterhook_menu hook_uninstall hook_db_rewrite_sql hook_menu_alter hook_update hook_delete hook_menu_link_alter hook_update_index hook_disable hook_nodeapi hook_update_last_removed hook_elements hook_node_access_records hook_update_N hook_enable hook_node_grants hook_update_projects_alter hook_exit hook_node_info hook_update_status_alter hook_file_download hook_node_operations hook_user hook_filter hook_node_type hook_user_operations hook_filter_tips hook_openid hook_validate hook_flush_caches hook_perm hook_view hook_footer hook_ping hook_watchdog hook_form hook_prepare module_hook hook_forms hook_profile_alter module_implements hook_form_alter hook_requirements module_invoke hook_form_FORM_ID_alter hook_schema module_invoke_all hook_help hook_schema_alter page_cache_fastpath
  • 12. Core Hooks in Drupal hook_actions_delete hook_action_info hook_action_info_alter hook_admin_paths hook_admin_paths_alter 7 hook_entity_delete hook_entity_info hook_entity_info_alter hook_entity_insert hook_entity_load hook_js_alter hook_language_fallback_candidates_alter hook_language_init hook_language_negotiation_info hook_language_negotiation_info_alter hook_node_update_index hook_node_validate hook_node_view hook_node_view_alter hook_openid hook_aggregator_fetch hook_entity_prepare_view hook_language_switch_links_alter hook_openid_discovery_method_info hook_aggregator_fetch_info hook_entity_presave hook_language_types_info hook_openid_discovery_method_info_alter hook_aggregator_parse hook_entity_query_alter hook_language_types_info_alter hook_openid_normalization_method_info hook_aggregator_parse_info hook_entity_update hook_library hook_openid_normalization_method_info_alter hook_aggregator_process hook_entity_view hook_library_alter hook_openid_response hook_aggregator_process_info 266 hook_entity_view_alter hook_load hook_overlay_child_initialize hook_aggregator_remove hook_exit hook_locale hook_overlay_parent_initialize hook_ajax_render_alter hook_filetransfer_info hook_mail hook_page_alter hook_archiver_info hook_filetransfer_info_alter hook_mail_alter hook_page_build hook_archiver_info_alter hook_file_copy hook_menu hook_page_delivery_callback_alter hook_batch_alter hook_file_delete hook_menu_alter hook_path_delete hook_block_configure hook_file_download hook_menu_breadcrumb_alter hook_path_insert hook_block_info hook_file_insert hook_menu_contextual_links_alter hook_path_update hook_block_info_alter hook_file_load hook_menu_delete hook_permission hook_block_list_alter hook_file_mimetype_mapping_alter hook_menu_get_item_alter hook_prepare hook_block_save hook_file_move hook_menu_insert hook_query_alter hook_block_view hook_file_presave hook_menu_link_alter hook_query_TAG_alter hook_block_view_alter hook_file_update hook_menu_link_delete hook_ranking hook_block_view_MODULE_DELTA_alter hook_file_url_alter hook_menu_link_insert hook_rdf_mapping hook_boot See also, hook_init. hook_file_validate hook_menu_link_update hook_rdf_namespaces hook_comment_delete hook_filter_format_disable hook_menu_local_tasks_alter hook_registry_files_alter hook_comment_insert hook_filter_format_insert hook_menu_site_status_alter hook_requirements hook_comment_load hook_filter_format_update hook_menu_update hook_schema hook_comment_presave hook_filter_info hook_modules_disabled hook_schema_alter hook_comment_publish hook_filter_info_alter hook_modules_enabled hook_search_access hook_comment_unpublish hook_flush_caches hook_modules_installed hook_search_admin hook_comment_update hook_form hook_modules_uninstalled hook_search_execute hook_comment_view hook_forms hook_module_implements_alter hook_search_info hook_comment_view_alter hook_form_alter hook_multilingual_settings_changed hook_search_page hook_contextual_links_view_alter hook_form_BASE_FORM_ID_alter hook_node_access hook_search_preprocess hook_countries_alter hook_form_FORM_ID_alter hook_node_access_records hook_search_reset hook_cron hook_help hook_node_access_records_alter hook_search_status hook_cron_queue_info hook_hook_info hook_node_delete hook_shortcut_default_set hook_cron_queue_info_alter hook_hook_info_alter hook_node_grants hook_simpletest_alter hook_css_alter hook_html_head_alter hook_node_grants_alter hook_stream_wrappers hook_custom_theme hook_image_default_styles hook_node_info hook_stream_wrappers_alter hook_dashboard_regions hook_image_effect_info hook_node_insert hook_system_info_alterinfo files hook_dashboard_regions_alter hook_image_effect_info_alter hook_node_load hook_system_themes_page_alter hook_date_formats hook_image_styles_alter hook_node_operations h hook_date_formats_alter hook_image_style_delete hook_node_prepare ook_taxonomy_term_delete hook_date_format_types hook_image_style_flush hook_node_presave hook_taxonomy_term_insert hook_date_format_types_alter hook_image_style_save hook_node_revision_delete hook_taxonomy_term_load hook_delete hook_image_toolkits hook_node_search_result hook_taxonomy_term_presave hook_disable hook_init See also, hook_boot. hook_node_submit hook_taxonomy_term_update hook_drupal_goto_alter hook_insert hook_node_type_delete hook_taxonomy_term_view_alter hook_element_info hook_install hook_node_type_insert hook_taxonomy_vocabulary_delete hook_element_info_alter hook_install_tasks hook_node_type_update hook_taxonomy_vocabulary_insert hook_enable hook_install_tasks_alter hook_node_update hook_taxonomy_vocabulary_load
  • 13. What’s in the Box Files that say stuff: CHANGELOG.txt COPYRIGHT.txt INSTALL.mysql.txt INSTALL.pgsql.txt INSTALL.sqlite.txt INSTALL.txt LICENSE.txt MAINTAINERS.txt README.txt UPGRADE.txt
  • 14. What’s in the Box Files that do stuff: authorize.php cron.php index.php install.php robots.txt update.php web.config xmlrpc.php
  • 15. What’s in the Box Directories: includes misc profiles scripts modules themes sites all modules themes libraries default
  • 16. Modules • Core module • Contrib modules • Learn to love associative arrays. Passing data in strings is dead(ish) • By using core hooks, modules achieve instant interoperabity
  • 17. help.info ; $Id: help.info,v 1.9 2010/12/20 19:59:42 webchick Exp $ name = Help description = Manages the display of online help. package = Core version = VERSION core = 7.x files[] = help.test ; Information added by drupal.org packaging script on 2011-01-05 version = "7.0" project = "drupal" datestamp = "1294208756"
  • 18. help.module -1 <?php // $Id: help.module,v 1.99 2010/10/04 14:54:10 webchick Exp $ /** * @file * Manages displaying online help. */ }
  • 19. help.module -2 /** * Implements hook_menu(). */ function help_menu() { $items['admin/help'] = array( 'title' => 'Help', 'description' => 'Reference for usage, configuration, and modules.', 'page callback' => 'help_main', 'access arguments' => array('access administration pages'), 'weight' => 9, 'file' => 'help.admin.inc', ); foreach (module_implements('help', TRUE) as $module) { $items['admin/help/' . $module] = array( 'title' => $module, 'page callback' => 'help_page', 'page arguments' => array(2), 'access arguments' => array('access administration pages'), 'type' => MENU_VISIBLE_IN_BREADCRUMB, 'file' => 'help.admin.inc', ); } return $items; }
  • 20. help.module -3 /** * Implements hook_help(). */ function help_help($path, $arg) { switch ($path) { case 'admin/help': $output = '<p>' . t('Follow these steps to set up and start using your website:') . '</p>'; $output .= '<ol>'; $output .= '<li>' . t('<strong>Configure your website</strong> Once logged in, visit the <a href="@admin">administration section</a>, where you can <a href="@config">customize and configure</a> all aspects of your website.', array('@admin' => url('admin'), '@config' => url('admin/config'))) . '</li>'; $output .= '</ol>'; $output .= '<p>' . t('For more information, refer to the specific topics listed in the next section or to the <a href="@handbook">online Drupal handbooks</a>. You may also post at the <a href="@forum">Drupal forum</a> or view the wide range of <a href="@support">other support options</a> available.', array('@help' => url('admin/help'), '@handbook' => 'http://drupal.org/handbooks', '@forum' => 'http://drupal.org/forum', '@support' => 'http://drupal.org/support')) . '</p>'; ---snip--- return $output; case 'admin/help#help': $output = ''; $output .= '<h3>' . t('About') . '</h3>'; ---snip--- $output .= '<h3>' . t('Uses') . '</h3>'; $output .= '<dl>'; $output .= '<dt>' . t('Providing a help reference') . '</dt>'; ---snip--- $output .= '<dd>' . t('The Help module displays context-sensitive advice and explanations on various pages.') . '</dd>'; $output .= '</dl>'; return $output; } }
  • 21. help.test <?php // $Id: help.test,v 1.22 2010/11/27 20:25:44 dries Exp $ class HelpTestCase extends DrupalWebTestCase { protected $big_user; protected $any_user; public static function getInfo() { return array( 'name' => 'Help functionality', 'description' => 'Verify help display and user access to help based on permissions.', 'group' => 'Help', ); } /** * Enable modules and create users with specific permissions. */ function setUp() { parent::setUp('blog', 'poll'); $this->getModuleList(); // Create users. $this->big_user = $this->drupalCreateUser(array('access administration pages', 'view the administration theme', 'administer permissions')); $this->any_user = $this->drupalCreateUser(array()); } }
  • 22. Drupal APIs. Yum. • core modules call core hooks • Drupal 8 will be even more reliant on its own APIs
  • 23. New in Drupal 7 • Besides 190 new hooks • More granular control of processing order • 12 levels of preprocess function minimize can’t get there from here issues • SimpleTest framework in core • Generally more consistent
  • 24. So, What’s it Good For • CMS • WEB based applications • Front ends to dedicated apps • Islandora • RDF • Multi-output (XML, etc.) • Data apps • Anything
  • 25. That’s All • api.drupal.org • Cary Gordon The Cherry Hill Company Los Angeles, CA 310-397-2999 cgordon@chillco.com highermath (Drupal, irc, twitter, etc) • BoF this afternoon

Notas do Editor

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n