Cover image for Drupal 7 Module Development.
Drupal 7 Module Development.
Title:
Drupal 7 Module Development.
Author:
Butcher, Matt.
ISBN:
9781849511179
Personal Author:
Edition:
1st ed.
Physical Description:
1 online resource (439 pages)
Contents:
Drupal 7 Module Development -- Table of Contents -- Copyright -- Credits -- Foreword -- About the Authors -- About the Reviewers -- www.PacktPub.com -- Support files, eBooks, discount offers and more -- Why Subscribe? -- Free Access for Packt account holders -- Preface -- What this book covers -- Who this book is for -- Conventions -- Reader feedback -- Customer support -- Errata -- Piracy -- Questions -- 1. Developing for Drupal 7 -- Introducing Drupal (for developers) -- Technologies that drive Drupal -- PHP -- Databases and MySQL -- HTML, CSS, and JavaScript -- Other technologies -- The web server -- The Operating System -- Drupal architecture -- Drupal core libraries -- Drupal hooks -- Drupal core modules -- The database -- The theme system -- Drupal's major subsystems -- Themes -- Menus -- Nodes -- Files -- Users -- Comments -- Fields and entities -- Forms API -- Installation Profiles -- Simple test -- Blocks -- Other subsystems -- Tools for developing Drupal code -- Version control with Git and CVS -- The book's code and Git -- The API site and coding standards -- Developer-oriented modules -- The developer module -- Drush (the Drupal shell) -- Coder -- Summary -- 2. Creating Your First Module -- Our goal: a module with a block -- Creating a new module -- Module names -- Where does our module go? -- Creating the module directory -- Writing the .info file -- Creating a module file -- Source code standards -- Doxygen-style doc blocks -- The help hook -- The t() function and translations -- Working with the Block API -- The block info hook -- The block view hook -- The first module in action -- Writing automated tests -- Creating a test -- Starting out -- Writing a test case -- The basic pattern -- The getInfo() method -- Setting up the test case -- Writing a test method -- Summary -- 3. Drupal's Theme Layer.

Business logic versus presentation logic -- Data granularity -- Theme engines -- Two ways to theme -- Theme functions -- Preprocess functions -- Theme overrides -- Template files -- The preprocess zoo -- "template_" preprocess functions -- Multi-hook preprocess functions -- Process functions -- Order of preprocess execution -- Render elements -- Render properties -- hook_element_info -- hook_page_alter() -- The power of theme() -- Theme hook suggestions -- Theme registry -- Variable default values -- hook_theme -- hook_theme_registry_alter -- What else? -- Summary -- 4. Theming a Module -- Reusing a default theme implementation -- Drupal blocks revisited -- Theming a Drupal block -- Render element and a theme hook suggestion -- Creating a pre_render function -- Attaching CSS to render arrays -- RTL languages -- Steps to build a default theme implementation -- hook_theme() implementations -- Variables versus render element -- Preprocess functions -- Template files -- Summary -- 5. Building an Admin Interface -- The User Warn module -- Starting our module -- The Drupal menu system -- Defining a page callback with hook_menu -- Using wildcards in menu paths -- Form API -- Using drupal_get_form() -- Building a form callback function -- Managing persistent data -- Form submission process -- A shortcut for system settings -- A shortcut for confirmation forms -- Sending mail with drupal_mail() and hook_mail() -- Calling drupal_mail() -- Implementing hook_mail() -- The token system -- What are tokens? -- Implementing tokens in your text -- Summary -- 6. Working with Content -- Why create your own entities -- The goal -- Bundles -- The Schema API -- Declaring our entity -- The entity declaration -- The entity controller -- Entity management -- Managing artwork types -- Adding artworks -- Adding new artwork -- Validation callback -- Submit callback.

Saving your artwork -- Handling revisions -- Viewing artworks -- Editing an artwork -- Deleting an artwork -- Summary -- 7. Creating New Fields -- Our goal: a "dimensions" field -- How Field API works -- Creating our new field type -- Declaring the field -- Defining the field structure -- Defining empty -- Field settings -- Field validation -- Exposing fields to the Form API with widgets -- Declaring a widget -- Simple widget forms -- Complex widgets -- Using formatters to display our field -- Declaring a formatter -- Single-value formatters -- Complex formatters -- Managing non-Field fields -- Finding entities and fields -- Summary -- 8. Drupal Permissions and Security -- Using user_access() to assert permissions -- Checking the proper user account -- Using hook_permission() -- Defining your module's permissions -- Writing hook_permission() -- Declaring your own access functions -- Responding when access is denied -- Enabling permissions programmatically -- Defining roles programmatically -- Securing forms in Drupal -- The Forms API -- Disabling form elements -- Passing secure data via forms -- Running access checks on forms -- Handling AJAX callbacks securely -- Using AJAX in forms -- Using AJAX in other contexts -- Summary -- 9. Node Access -- Node Access compared to user_access() and other permission checks -- How Drupal grants node permissions -- The node_access() function -- The access whitelist -- Caching the result for performance -- Invoking hook_node_access() -- Access to a user's own nodes -- Invoking the node access API -- hook_node_access() compared to {node_access} -- Using hook_node_access() -- A sample access control module -- A second access control module -- View operations and access control modules -- When to write a node access module -- The {node_access} table and its role -- {node_access} table schema explained.

Defining your module's access rules -- Creating the role access module -- Using hook_node_access_records() -- Using hook_node_grants() -- Security considerations -- Rebuilding the {node_access} table -- Modifying the behavior of other modules -- Using hook_node_grants_alter() -- Using hook_node_access_records_alter() -- Testing and debugging your module -- Using Devel Node Access -- Using hook_node_access_explain() -- Using the Devel Node Access by user block -- Summary -- 10. JavaScript in Drupal -- JavaScript inside Drupal -- Adding JavaScript -- Adding JavaScript and CSS files to .info files -- Using drupal_add_js() -- Adding JavaScript files -- Adding CSS files -- Passing variables from PHP to JavaScript -- Adding inline JavaScript -- Adding inline CSS -- Using the Library API -- Defining a library with hook_library -- Altering information in hook_library -- Using renderable arrays -- Altering JavaScript -- Altering CSS -- Drupal specific JavaScript -- Themeable presentation -- Translatable strings -- Behaviors -- AJAX helpers -- Adding AJAX to forms -- AJAX automatically applied -- AJAX commands -- ajax_command_after -- ajax_command_alert -- ajax_command_append -- ajax_command_before -- ajax_command_changed -- ajax_command_css -- ajax_command_data -- ajax_command_html -- ajax_command_prepend -- ajax_command_remove -- ajax_command_replace -- ajax_command_restripe -- ajax_command_settings -- Summary -- 11. Working with Files and Images -- The Twitpic and watermark modules -- Files in Drupal -- File API -- Stream wrappers -- Creating a stream wrapper -- Images in Drupal -- Image API -- Image Styles -- Creating image effects -- Creating image styles from a module -- Summary -- 12. Installation Profiles -- Introducing installation profiles -- Drupal distributions -- Setting up a distribution -- Standard and minimal profiles.

Creating a profile directory -- Profile modules and themes -- Creating profiles -- Enabling modules -- The install task system -- Choosing an install task or using hook_install -- Anatomy of an install task -- Creating a task -- Altering tasks -- Configuring blocks -- Variable settings -- Text filters -- Code placement -- Running the installer from the command line -- Summary -- A. Database Access -- Basic queries -- Result objects -- Dynamic queries -- Insert queries -- Update queries -- Delete queries -- Merge queries -- Advanced subjects -- Transactions -- Slave servers -- Summary -- B. Security -- Thinking securely -- Filtering versus escaping -- Filtering -- Escaping HTML -- SQL injection -- Node access control -- Handling insecure code -- Staying up to date -- Summary -- Index.
Abstract:
Create your own Drupal 7 modules from scratch.
Local Note:
Electronic reproduction. Ann Arbor, Michigan : ProQuest Ebook Central, 2017. Available via World Wide Web. Access may be limited to ProQuest Ebook Central affiliated libraries.
Electronic Access:
Click to View
Holds: Copies: