#access property, 338
#ajax attribute, 511
#ajax property, dynamic forms via, 591–592
#attached property, 322, 788–789, 932
#attributes array, 449
#callback property, 547
#description property, 336, 411, 781
#element_validate property, 779, 781
#field_name, 755
#items property, 324
#markup property, 411–412, 927
#post_render methods, 932
#pre_render property, 332
#prefix property, 322, 411, 790
#region property, 322
#sorted property, 322
#states attribute, 511
#theme property, 322–324, 331, 437
#theme_wrappers property, 322, 331, 435, 790, 927, 932
#title property, 411
#view_mode, 755
#weight property, 322, 336, 339
$_GET['q'] path, 691
$account parameter, 469
$action_links variable, 327, 767
$attributes variable, 297
$base_path, 686
$base_root, 686
$base_url, 686
$classes variable, 297, 314–315
$closure variable, 286
$conf array, 637
$content variable, 297, 326–328
$databases = array( ) line, 246
$directory variable, 296
$(document).ready( ) method, 364
$every_page flag, 362
$filters['dgd7_tip'] array, 776
$form argument, 505
$form['email'] field, 332
$form_id argument, 505
$form_id parameter, 505
$form_state argument, 505, 781
$has_credit, 406
$HOME/.drush directory, 608
$HOME/.drush/drushrc.php file, 607–608
$i iteration, 779
$i variable, 779
$Id$ comment, 389
$is_admin variable, 296
$item variable, 327
$items['outrageous'] array, 670–671
$language variable, 297
$logged_in variable, 296
$logo variable, 276
$messages variable, 311
$name_of_variable, 399
$node->book array, 799
$output variable, 335
$page variable, 326
$page['content'] variable, 286
$page_bottom region, 357
$page_callback variable, 413
$permissions variable, 432
$picture variable, 277
$rm array, 779
$rows variable, 434
$secondary_menu variable, 277, 289
$site_name, 276
$site_slogan, 276
$styles variable, 345
$submitted variable, 319
$tabs variable, 326
$text available, 399
$theme_hook_suggestions variable, 297, 305, 308–309
$title_attributes variable, 297
$title_attributes_array, 319
$title_prefix variable, 297, 301, 328
$title_suffix variable, 297, 301, 328
$update_free_access, 142
$user variable, 277, 297, 399, 410
$user_profile variable, 326
$variables array, finding contents of, 317
$variables parameter, 316
$very_slow_result, 637
$whole_form, 781
($every_page), 362
($path == 'admin/content') comparison, 403
<?php print $block->subject ?> tag, 300
<?php print $content ?> tag, 300
<?php print $sidebar_first; ?> tag, 321
<?php print drupal_render_children($form); ?> tag, 337
<?php print render($title_prefix); ?> line, 301
@ingroup themeable method, documenting codes with, 433–435
[*]_rollback method, 631
~/code directory, 973
~/code/dgd7/web/sites/all/modules/custom/xray directory, 388
~/workspace directory, 973
+ entity_exportable_schema_fields( ) method, 551
->condition( ) method, 451
->execute( ) method, 451
->fetchAllAsoc( ) method, 797
->fetchAllKeyed( ) method, 446
->fetchAssoc( ) method, 796, 798
->fetchField( ) method, 443
->save( ) method, 557
2>&1 modifier, 632
2bits.com, 88
404 errors, modules for handling, 106–107
404 Navigation, 107
Apache Solr, 106
Global Redirect, 107
404 Navigation module, 107
accepting tasks, 217
access
applying for, 863
receiving, 864
settings, creating bookmarks with server, 235–236
to Suggestion content type Status field, limiting, 187–190
user, conditionally taking action based on, 468–469
access arguments, 678
access callback item, 671, 678
access callback key, 670
legislation of, 943
population segments benefiting from, 942–943
recent enhancements, 941
accessible modules, 943
contrast and color, 944
expert feedback, 946
regular reviews of pages, 946
simulation, 945
themes, 944
WAI-ARIA, 945
standards for, 942
Accessibility Group, 946
Accessible Helper module, 943
Accessible Rich Internet Applications (ARIA), 942, 945
accordion library, 367
Account link option, 758
ACID (Atomic, Consistency, Isolation, and Durability), and BASE, 643–645
Acquia company, 197
Acquia Dev Desktop app, 985–990
creating subsites with, 988–989
importing sites with, 990
Action links, 54
active voice, 745
activitystream, 890
Add content option, 225
Add new comment link, 328
add new links, contextual, 767–771
Add or remove shortcut link, 277
addanother_access method, 495
addanother_message method, 496
addanother_node_access method, 495
addanother_node_insert method, 495
adherence, to coding standards, 406
admin menu, Drupal site, 224
admin path, 275
admin/appearance page, 13, 275, 278, 281, 348
admin/appearance/settings location, 275
admin/config path, 700
admin/config/content/blog, 804
admin/config/content/formats, 103, 186, 773, 787
admin/config/content/formats/filtered_html, 794
admin/config/content/formats/full_html, 794
admin/config/development, 463
admin/config/development/coder/upgrade, 491
admin/config/development/content_type_overview, 100
admin/config/development/devel, 474
admin/config/development/maintenance, 140, 142
admin/config/development/performance page, 636–637, 798
admin/config/development/testing/settings, 522
admin/config/development/xray, 465
admin/config/group/permissions, 122
admin/config/group/roles, 122
admin/config/media/image-styles/edit/thumbnail, 184
admin/config/people, 465
admin/config/people/accounts, 27, 127, 184, 465
admin/config/people/comment_notify, 105
admin/config/people/gravatar, 183
admin/configs, 918
admin/config/search/path/patterns, 190
admin/config/search/path/settings, 96
admin/config/search/path/update_bulk, 802
admin/config/search/settings, 701
admin/config/system/site-export, 804
admin/config/system/site-information page, 276
admin/config/system/YourModuleName link, 493
admin/config/user-interface/shortcut, 13
admin/config/YourModuleName, 493
admin/content, 21, 423–425, 767
admin/content/book/settings, 171
admin/help, 482
admin/help#xray, 482
admin/help/shortcut, 13
administration
code, creating separate file for, 465
reserving first user for, 126
enabling and setting default, 274–275
administration pages
stylesheets for, conditionally including, 788–790
Action links, 54
Advanced Help module, 53
changing listed Views, 54
administrative information, defining for Views, 71–74
administrative interfaces
Environment Indicator, 99
Masquerade, 103
Smart Crop, 99
Workbench suite, 99
providing for entities, 555–559
administrative options, Search module, 700–701
Administrative overlay, 741
administrative tables, cloning and making using exposed filters, 80–81
Administrator role, 27
admin/modules, 51, 94, 117, 422, 474, 490, 521, 550
admin/modules Modules page, 15
admin/modules/install, 110
admin/people/permissions, 13, 156, 189, 407, 467–468
admin/people/permissions/roles Permissions Roles, 26
admin/reports, 430
admin/reports/status, 142
admin/reports/updates, 132, 139, 145, 147
admin/reports/xray, 422, 424, 426
admin/settings/YourModuleName menu path, 493
admin/structure, 481
admin/structure path, 394, 396
admin/structure/block, 21, 176, 183, 529
admin/structure/block page, 282, 292
admin/structure/block/add-menu-block, 176
admin/structure/content_migrate, 902
admin/structure/content-types, 767
admin/structure/features/create, 811, 906
admin/structure/field_permissions, 187
admin/structure/menu, 162
admin/structure/menu/manage/main-menu, 277
admin/structure/menu/manage/user-menu, 277
admin/structure/menu/settings, 277
admin/structure/pages, 119
admin/structure/taxonomy, 24
admin/structure/types/add, 17
admin/structure/types/manage/%, 481
admin/structure/types/manage/blog, 117
admin/structure/types/manage/book, 168
admin/structure/types/manage/book/fields, 172
admin/structure/types/manage/book/fields/body, 172
admin/structure/types/manage/book/fields/field_image/edit, 186
admin/structure/types/manage/group, 112
admin/structure/types/manage/profile/fields, 152
admin/structure/types/manage/profilevdisplayvteaser, 166
admin/structure/types/manage/resource/fields, 181
admin/structure/types/manage/suggestion/fields, 26
admin/structure/types/manage/suggestion/fields/field_status/field-settings, 188
admin/structure/views, 56, 68–69, 85–86, 767–768
admin/structure/views/add, 802
adminvreports/updates/update, 146
adminvstructure/types/manage/article, 481
admin/xray, 422
Advanced Help module, 53
Advanced Settings box, 73
aegirproject.org, 386
aesthetics, concerns about, 222
aggregation, of CSS files, 341
ajax support, 574
algorithms, language negotiation, 691
Alias context, 608
alias drush='~/dev/drush/drush' code, 36
alias drush='/path/to/drush/drush' code, 36
alias files (aliases.drushrc.php), for Drush, 600–601
aliases
creating for drush command, 35–37
aliases.drushrc.php file, 601, 607, 619–620
all directory, 94
--all option, 624
AllowOverride directive, 248
alphas, building and verifying with users, 733–734
alter hooks, modifying forms using, 339–340
altering queries and results, hooks for, 709–710
Ambiguity attribute, 725
analysis, Apache Solr project and, 710–711
analyzing, choosing method of, 737
Anderson, Greg, 595
anjaliup_update_7003( ) method, 897
Anonymous user role, 27
Answer support requests, 876
AntiSpam module, 98
Apache configuration file, 955
Apache Solr project, 106
enabled filters, 707
type biasing and exclusion, 707–708
integrating with server, 710–711
managing data in Solr index, 710
searching and analysis, 710–711
Apache Tab, MAMP screen, 978
Apache virtual host configuration file, 248
API methods, 258
api.drupal.org, 452
api.drupal.org/api/function/hook_menu/7, 423
api.drupal.org/api/group/themeable/7, 436
api.drupal.org/block_admin_display_form, 789
api.drupal.org/check_plain, 474
api.drupal.org/db_query_range, 797
api.drupal.org/db_transaction, 442
api.drupal.org/drupal_add_css, 789
api.drupal.org/drupal_process_attached, 932
api.drupal.org/form_error, 544
api.drupal.org/hook_comment_view, 393
api.drupal.org/hook_field_formatter_info, 757
api.drupal.org/hook_filter_info, 774
api.drupal.org/hook_form_alter, 410
api.drupal.org/hook_help, 396
api.drupal.org/hook_menu, 396
api.drupal.org/node_menu_local_tasks_alter, 770
api.drupal.org/number_field_formatter_settings_form, 759
api.drupal.org/theme_table, 434, 457
api.drupal.org/theme_user_admin_permissions, 433
api.drupal.org/timer_start, api.drupal.org/timer_stop, 908
api.jquery.com/category/events, 545
APIs (Application Programming Interfaces), 258–259
changes, list of, 489
form elements, 331
automatic file inclusion, 592
dynamic forms via #ajax property, 591–592
human, 713
outlining, 542
keeping API and UI separate, 536–537
using to hide complexity, 537
site-specific modules using, 792–794
Appearance page, Drupal, 274
Apple Mac OS X, running Ubuntu operating system on, 971
Application Programming Interfaces. See APIs; Render API
applications
for access, 863
preparing branches for, 862
Appropriate degree of refinement attribute, 722
Archive view, 57
archives, uncompressing, 238–239
arguments, for Drush scripts, 618
ARIA (Accessible Rich Internet Applications), 942, 945
arithmetic operator, 400
array_keys( ) method, 457
array_merge_recursive( ) method, 783
arrays
$variables, finding contents of, 317
render
in core templates, 326
overview, 321
renderable, 437
asort( ) method, 432
assertNoRaw('html'); 530
assertNoText('text'); 530
assertRaw('html'); 530
assertText( ) method, 527
assertText('text'); 530
Assigned field, 488
assigned tasks, 217
association.drupal.org/about/donations, 881
association.drupal.org/membership, 881
Atomic, Consistency, Isolation, and Durability (ACID), and BASE, 643–645
atzzolo.org/category/topics/drupal-highlights, 869
audience, for Rules module, 723
auditing, migration processes, 910
Authenticated user role, 27
Author field, 225
Author profiles, connecting to author user accounts, 155–156
authors
approximate pages contributed by each, 155
building headshot view of, 158–162
author biographies view page, 162–164
menu link for page view, 161–162
giving permission to create profiles, 156–157
linking chapters to, 178
linking to other pages by, 153–154
showcasing with profile pages, 149–157
user accounts of, connecting Author profiles to, 155–156
autogenerating, human-readable URLs with Pathauto module, 190–191
automated backups, 249
automated module installer, 146
automated testing, for accessibility, 944–945
automatic file inclusion, 592
automatic installers, 11–12, 974–975
automatic upgrades, adding Features module to, 906–907
avoiding production bottlenecks, 225
Backlinks view, 57
Backup and Migrate module, 249
Backupninja tool, 250
backups
Banner Ad region, 291
bare repository, 253
BASE (Basically Available, Scalable, and Eventually Consistent), ACID and, 643–645
base Features modules, 905
base table, 553
base theme property, 279
base themes
custom, 351
popular, 350
.bash_aliases file, 602
.bashrc file, 602
Basic settings, 163
Basically Available, Scalable, and Eventually Consistent (BASE), ACID and, 643–645
batch tasks, 809
attaching, 364
detaching, 365
Berkun, Scott, 219
best practices, in theming, 351–354
leveraging default CSS classes, 353–354
modules vs. themes, 354
overriding template files with purpose, 353
starting with good base theme, 351–352
bi-directional text support, 343
binary operators, and concatenators, spaces on either side of, 406
biographies, of authors, 162–164
block system, 223
Block template, 306
block theme, 927
block__MODULE template, 304
block__MODULE__DELTA template, 306
block__REGION template, 306
block_admin_configure, 412
block_view block, 395
block--MODULE--DELTA.tpl.php, 306
block--MODULE.tpl.php, 304
<blockquote> tag, 940
block--REGION.tpl.php, 306
blocks
creating new, 223
placing, 76
Blocks administration page, 287
block.tpl.php file, 295, 298, 301, 306, 351
blog/[user]/[title], 83
Body field, 225
Book module, making table of contents with, 168–178
adding to main menu, 178
setting permissions for organizing and writing chapters, 170–171
using Menu Block module to display better, 176–177
book module templates, reusing to display non-book navigation, 798–801
book navigation, next and previous links mimicking, 795–801
book_node_load( ) method, 694
book_node_view( ) method, 798
book_page_alter( ) method, 697
bookmarks, creating with server access setting, 235–236
book-navigation.tpl.php template, 798–799
execution of page callback, 692–693
initialize configuration, 686
initialize database layer, 689
initialize session handling, 690
initialize variable system, 689–690
load modules and initialize theme, 691–692
select language, 691
set up page header, 690
try to serve cached page, 687–689
bootstrap.inc, 474
Bot module, 107
bottlenecks, avoiding, 225
brainstorming meetings, 214
branches
preparing for applications, 862
and tags on Drupal.org, 861
browsers and devices, compatibility testing, 232–233
budgeting time, and success as developer, 842
bueditor module, 97
builtin help command, 603
business models, for contributors, 849–851
convincing clients of value of contributing, 849
developing install profile, 850
development plus model, 850
Buying the Definitive Guide to Drupal 7 page, 19
--cache option, 614
cache tables, caching data using default, 765–766
cache_get modules, 765
cache_set( ) method, 637, 765, 930
cache-clear command, 598
cached pages, try to serve, 687–689
cachegrind.out file, 918
caches, clearing, 407
data, using default cache table, 765–766
disabling during development, 637–638
memcached system, 638
Cafés, Drupal, 880
callback methods, 592
entity access, defining, 554
callbacks
execution of page, bootstrap phase, 692–693
page callback, 928
settings, 776
camps, 845
Camps, Drupal, 879
Cannot modify header information error, 303
CAP (Consistency, Availability, and Partition Tolerance), between ACID and BASE, 643–645
getting involved in community, 844–846
communities of like interests, 845–846
conferences and camps, 845
starting own business, 846
Cart module, 583
Cascading Style Sheets files. See CSS files
case "admin/content": line, 403
case statements, 403
Category field, 488
Category option, filter drop-down, 486
CCK module, 850
cd Dropbox/MAMP/dgd7 command, 33
cd /path/to/site command, 33
c:drush, 965
change picture link, adding underneath user photo, 320
Chaos Tools dependency, 95
Chaos Tools project, 256
Chapter content type
adding metadata to with fields, 172–173
setting how fields will be displayed by, 173–175
Chapter number field display, 754–757
Chapter option, 225
chapters
creating sample, 225
linking to authors, 178
Resource content type referencing, 179–181
allowing people to attach generic files to content, 180
connecting content types with Node reference, 181
managing Resource content type display, 181
reusing chapter image field, 179–180
setting permissions for organizing and writing, 170–171
check_plain( ) method, 474, 478
checkins, 215
Checkout complete, 582
chmod u+x dev/drush/drush command, 35
chmod u+x /path/to/drush/drush command, 35
Christenson, Bob, 226
classes
adding to template wrappers, 318
container form elements with specified, 790–791
Clear all caches button, 798
Clear vocabulary attribute, 724
CLI context, 608
client-facing document, 209
clients
and entering content early, 222
getting involved, 842
interaction, with Drupal interface, 222
Clone view, 57
Close useless bug reports, 876
closing PHP tag, 404
coda, on contributed modules, 792
code
capturing all changes in, 256–260
creating, editing, and reviewing content on production, 259
pages or content sections that require methodality, 259–260
custom, 488
deployment of changes in, 254–255
enabling modules in, 901
documenting, 513
following coding standards, 513
making methodality configurable, 512–513
tying components together, 513
hosting on drupal.org, 817
reviews, security, 132
sharing in sandbox on Drupal.org, 541
snippets, internal documentation, 225
themeable, documenting with @ingroup themeable method, 433–435
code comments, 392
code contributions, 265
code directory, 144
Code Filter module, 103
Code Sprints, 880
<code> tag, 940
coder module output, 493
coder_upgrade directory, 490
coder_upgrade subdirectory, 490
coder_upgrade/old directory, 490
coder_upgrade/old/addanother- path, 491
coding standards
internal documentation, 226
overview, 862
accessible, 944
harmony of, 719
Color module, 91
--color=auto option, 632
Colorbox module, 104
Coming Soon page, 212
command aliases, 598
command hook, for Drush extensions, 627–628
command-line
Mac OSX operating system installation, 979–981
coder module output, 493
command-line tools, Linux, 264
commands folder, 606
Comment module, 91
Comment Notify module, 104–105
comments, code, 392
comment.tpl.php file, 295
Commerce module, 569
Commerce project, Drupal. See Drupal Commerce project
commerce_cart_product_add( ) method, 574
commerce_cart.module, 574
commerce_payment.checkout_pane.inc, 591
commerce_price_create_instance( ) method, 570
commerce_product_type_get_name( ) method, 590
commerce_product.forms.inc, 592
Commerce/Commerce UI, 568
CommerceProductEntityController class, 590
commit message, writing, 263
communication, effective, 218
community, 195–201, 865–883. See also contributors
Organic Groups, 105
Profile2, 106
Rate, 105
Role Limits, 106
Userpoints, 105
Voting API dependency, 105
answering questions, 873
by being wrong, 871
handling issue queues, 875–877
making Drupal.org better, 878–879
non-technical support, 869
reviewing patches, 878
writing documentation, 873–874
documentation for, 226
communities of like interests, 845–846
conferences and camps, 845
good karma in, 848
conferences and meetups, 197
Drupal Planet aggregator, 196
DrupalCamp events, 198
DrupalCon conferences, 198
Drupal.org forums, 197
Groups.Drupal.org site, 197
mailing lists, 197
community web sites, creating with Organic Groups module, 109–124
installing and configuring, 110–114
Members, Roles, and Permissions settings, 122–124
compact( ) method, 420
compatibility testing, browser and device, 232–233
completion dates, estimating, 211–212
Component field, 488
Component option, filter drop-down, 486
compression of CSS files, 341
concatenators, binary operators and, 406
concentration, 264
Concept design, defined, 213
concerns, about aesthetics, 222
conditional statements. See also operators
conditional stylesheets, adding for Internet Explorer, 345
conferences, 197, 845, 879–880
configurable methodality, 512–513
configuration, initializing, 686
configuration features, 810–815
drune_track.*.inc file, 812
drune_track.module file, 812–815
overrides, 813
updates, 813
using installation profiles and features as development tool, 815
configuration page, for modules, 469–483
conditionally taking action based on configuration settings or user access, 468–469
creating separate file for administration code, 465
defining menu items for settings form, 464–465
defining new permissions, 467–468
configuration settings, conditionally taking action based on, 468–469
configure directive, 390
Configure filter criterion, 64
Consistency, Availability, and Partition Tolerance (CAP), between ACID and BASE, 643–645
Contact module, 333
container form elements, with specified classes, 790–791
container__xray__form, 412
connecting with Node reference, 181
contextual add new links for, 767–771
entering early, and clients, 222
modifying teaser display and setting trim length, 166–167
using view modes to display same content in different ways, 166
with human-readable URL and main menu link, 19–20
modules for display of, 103–104
Code Filter, 103
Colorbox, 104
Panels, 103
Environment Indicator, 99
Masquerade, 103
Smart Crop, 99
Workbench suite, 99
needs managing, 837
posting and promoting to front page, 20–21
of render arrays
moving between regions, 325
connecting with Node reference, 181
contextual add new links for, 767–771
of website, 207
content child, 926
content editors, 223
Content region, 285
Content Staging, Drupal Project Stage, 208
Content staging stage, 9
Content translation module, 93
Content Type Overview module, 99–102
content/[node:title], 190
content_migrate_batch_process_create_fields( ) method, 902
content_migrate_batch_process_migrate_data( ) method, 902
content-migrate-field-structure, 902
context item, 621
contextual add new links, for content types, 767–771
contextual commands, 603
Contextual Links module, 91
contrast, accessible, 944
contrib directory, 94
Contributed (contrib) module term, 501
coda on, 792
storage of, 94
automated module installer, 146
contributed projects, dealing with issues in, 135
contributing to community, 866–881
answering questions, 873
by being wrong, 871
handling issue queues, 875–877
making Drupal.org better, 878–879
non-technical support, 869
reviewing patches, 878
writing documentation, 873–874
Contribution Sprints, 738
good community karma, 848
notoriety, 848
participating in dialog, 848
convincing clients of value of contributing, 849
developing install profile, 850
"development plus" model, 850
expectations for, 851
Control Panel links, 988
control statements, 405
if, elseif, and else statements, 402–403
loops, 403
switch and case statements, 403
conversations, importance of, 218
Cooperperkins.com, 934
copywriting
core
Drupal
dealing with issues in, 135
files
CSS, 342
downloading for Mac OSX installation, 979–984
templates
common, 295
render arrays in, 326
Bartik theme, 270
Garland theme, 271
Seven theme, 272
core attribute, 807
core debug( ) method, 752
core directive, 389
Core Drupal Commerce Entities, 584
Core Drupal Commerce Fields, 584
core methods, Drupal, 943
Core module term, 501
core property, 279
core-cli command, 602
core-status command, 612
countQuery( ) method, 445
<create a new book> tag, 175
Create content menu, 492
Create New Database option, Navicat, 980
credentials, login, 237
Csikszentmihalyi, Mihaly, 264
CSS (Cascading Style Sheets) files, 341–348
adding, removing, and replacing, 343–348
aggregation and compression, 341
leveraging default classes, 353–354
patterns and naming conventions, 342–343
bi-directional text support, 343
core and module CSS files, 342
streamlining form elements with, 766
stylesheets for administration pages, conditionally including, 788–790
CSS class, 63
ctools folder, 51
Custom display settings, 749
Custom module term, 501
Customer module, 577
Customer/Customer UI, 568
cvs.drupal.org, 389
Cyberduck, 235
Dashboard, customizing, 225
Dashboard link, Drupal site, 224
Dashboard Main region, 287
Dashboard module, 91
Dashboard Sidebar region, 287
data
decentralized dataspaces, 654
linking on global scale, 655
auditing, 910
iterating, 910
showing, 910
sticking points, 909
timing, 910
storing and editing in UI, 548–549
data models
overview, 452
data.agaric.com/edit-term-love Edit Term module, 869
database abstraction layer, initializing, bootstrap phase, 689
data models, 452
displaying same data in two locations, 447–449
fetching data
with static queries with joins on two tables, 445–447
inserting and updating data, 455–456
using variable_get( ) method and another static select counting and grouping query, 450
database backup tools, 45
Database Logging module, 92
Database overriding code, 56
CAP between ACID and BASE, 643–645
creating
for Drupal sites, 974
Mac OSX operating system installation, 979–980
exporting, 244
finding system names in, 428–430
watchdog subsystem, session subsystem, and message queue, 648–649
setting up
with wizards and manual tools, 240
date_validate( ) method, 543
datepicker library, 368
db_delete( ) method, 536, 898, 900–901
db_drop_table( ) method, 899–900
db_merge( ) method, 455
db_or( ) method, 901
db_query( ) method, 443–446, 450–451, 457, 689
db_query_range( ) method, 797–798
db_select( ) method, 445, 450–451
dblog_overview( ) method, 456
--db-su option, 613
--db-su-pw option, 613
deadlines, 212
Debian package manager, 250
debug( ) method, 311, 410, 416, 456, 481, 504, 543, 748, 752, 796
--debug flag, 615
'debug' log level, 625
debug($items) method, 761
debug($node) method, 796
debug(debug_backtrace( )) method, 475
debug(field_info_bundles( )) method, 460
debug(list_themes( )) method, 416
decentralized dataspaces, 654
default cache tables, caching data using, 765–766
default key, 246
Default Order States and Statuses, 585
default status, 813
Default view mode, 165
default_message array, 927
.default_views.inc file, 812
default.settings.php file, 141
definitivedrupal.mayfirst.org domain, 248
DefinitiveDrupal.org, 747, 771–772, 776
definitivedrupal.org/patch, 875
definitivedrupal.org/suggestions, 869
DefinitiveGuide.org account, 155
degrading, JavaScript language and jQuery library, 365–366
Demonstration module, 254
dependencies
on contributed modules, 592–593
dependencies attribute, 807
Dependencies item, 360
dependencies[] directive, 389–391
Deployment and launch stage, 9
deployment of websites, 251–261
approach, 252
capturing all changes in code, 256–260
Deployment/Launch, Drupal Project Stage, 208
description attribute, 807
description property, 279
Design, Drupal Project Stage, 208
designs, 723. See also visual design
Drupal Commerce project, 587–588
with limited resources, 722
mockups for detailed, 733
process of
making informed decisions, 721
Empty screen state, 731
Error screen state, 733
Flooded screen state, 732
Normal screen state, 731
Dev Days, Drupal, 880
Dev Desktop app, Acquia. See Acquia Dev Desktop app
Dev Desktop Control Panel, 987
devel command file, 607
Devel dpm( ) method, 752
Devel module, tracing errors with, 474–476
Develop for Drupal handbook, 134
budgeting time, 842
using distributions, 843
using experienced developers, 843
using install profiles, 843
consulting with experts, 838
content needs managing, 837
and contributing to community, 840
long-term benefits of using Drupal, 838
long-term support, 841
making sustainable choices, 840
sponsoring, 881
supporting different participants, 839–840
understanding concepts of Drupal site, 836–837
development
disabling caching during, 637–638
contributing, 265
revision control, 263
meetings, 215
of project plan, 207
Development, Drupal Project Stage, 208
development environments, 227–241
selecting hosting services, 234–238
server-side tasks and tools, 239–241
uncompressing archives, 238–239
accessing command line, 230–231
browser and device compatibility testing, 232–233
hosting sites locally, 230
PHP files, 233
Microsoft Windows. See Microsoft Windows development environment
starting with Quickstart appliance, 228–229
Visual Studio, 948
development plus model, business model for contributors, 850
development standards, Drupal Commerce project, 588
development team, documentation for, 225–226
development tools, using installation profiles and features as, 815
development workflow, of websites, 260–261
devices, browsers and, compatibility testing, 232–233
DGB (Drush Git Backup), 249
DGD7 site code, 43
dgd7_field_formatter_view( ) method, 761
dgd7_tip directory, 775
dgd7_tip_add_rm_formset( ) method, 778–779, 790
dgd7_tip_filter_info( ) method, 776
dgd7_tip_settings( ) method, 776
dgd7_tips_settings( ) method, 782
dgd7.aliases.drushrc.php file, 610
dgd9781430231356.css file, 794
dgd7glue folder, 749
dgd7glue_drupal_page_title( ) method, 763
dgd7glue_field_formatter_settings_form( ) method, 761
dgd7glue_field_formatter_settings_summary( ) method, 761
dgd7glue_field_formatter_view( ) method, 761
dgd7glue_nextprev_suggestion( ) method, 797–798, 800
dgd7glue_node_view( ) method, 795
dgd7glue_preprocess_field( ) method, 754
dgd7glue.info file, 749
dgd7glue.module, 798
dialog, participating in community, 848
diff method, updating with, 143–144
diff tool, 141
diff via, 138
direct feedback, 264
direct funding, business model for contributors, 850–851
directives
configure, 390
overview, 389
package, 391
directories, setting permissions, 245
<Directory> tag, 956
Disable view, 57
disabled = status, 444
discovery
meetings, 214
phase of project planning, 205–206
Discovery, Drupal Project Stage, 208
Display Status, 62
displays. See also Views
content
creating additional, 74
defining elements of content for, 72
defining order of content for, 72
defining type of content for, 71
of fields, setting with Chapter content type, 173–175
multiple to highlight first result, 77–78
names of, 60
Resource content type, managing, 181
settings
overriding, 63
of Views, 61
Disposable attribute, 724
Distinct gesture attribute, 724
configuration features, 810–815
drune_track.*.inc file, 812
drune_track.module file, 812–815
using installation profiles and features as development tool, 815
Drune example, 805
hosting on drupal.org, 817
packaging, 817
example distribution, 805
full-featured services, 804
drune.info file, 807
and success as developer, 843
<div class="content"> wrapper, 328
<div class="inner"> tag, 352–353
<div class="user-picture"> tag, 293
<div id="header"> tag, 292
<div id="page-wrapper"> tag, 292
div tags, 75
<div> wrapper, 315
DNS (Domain Name System) settings, 247
docs/drush.api.php file, 613
documentation, 221–226, 741–743
for community, 226
for end-user, post-launch, 222–223
documentation contributions, 265
documenting code, 513
DocumentRoot, 956
documents, client-facing, 209
Dojo Barn Raisings, 872
Dojos, Drupal, 880
DOM traversal technique, 657
domain name, 247
Domain Name System (DNS) settings, 247
donating, to Drupal Association, 881
Downloads section, 89
dpm( ) method, 308, 311, 317, 505, 795
draggable library, 370
Dreditor, reviewing patches using, 878
Dropbox, 978
droppable library, 371
Drubuntu script, customizing Ubuntu OS for development with, 972
drune_track feature, 809
drune_track.*.inc file, 812
drune_track.info file, 812
drune_track.module file, 812–815
overrides, 813
updates, 813
drune.install file, 814
batch tasks, 809
Drupal
core, dealing with issues in, 135
and HTML5, 940
installing on Ubuntu operating system, 973–975
database, 974
meet-ups, 824
Drupal Foundation, 828
upgrading from 6 to 7. See upgrading
Drupal 7 platform, improvements in, 589–593
contributed module dependencies, 592–593
core entities and fields, 589–591
Drupal administration menu, 984
Drupal Association, donating to, 881
Drupal Cafés, 880
Drupal Camps, 879
Drupal Commerce project, 565–593
development standards, 588
improvements in Drupal 7, 589–593
contributed module dependencies, 592–593
core entities and fields, 589–591
overview, 565
Cart module, 583
Commerce module, 569
Customer module, 577
dynamic pricing, 570
enabling payment methods, 579–581
Payment module, 578
Product display node type, 575–577
Product Reference module, 575
summary of main components, 584–585
Drupal Commons, 804
Drupal context, 608
Drupal core code, loading, 953–957
Drupal Dev Days, 880
Drupal Dojos, 880
Drupal events, 832
Drupal install screen, 981
Drupal Katas, 880
Drupal Learning Projects, 872
Drupal Meetups, 880
Drupal Open Curriculum Project, 872
Drupal parties, 880
Drupal Planet aggregator, 196
Drupal project page, 10
Drupal Security Report, 134
Drupal Summits, 879
drupal_add_css( ) method, 343–344, 361, 788–789
drupal_add_js( ) method, 356–359, 361–362
drupal_add_library( ) method, 360–362, 366–367
drupal_add_library('system', 'ui.dialog);, 369–371
drupal_add_library('system', 'ui.progressbar);, 372
drupal_add_library('system', 'ui.resizable);, 373
drupal_add_library('system', 'ui.selectable);, 374
drupal_add_library('system', 'ui.slider);, 375
drupal_add_library('system', 'ui.sortable);, 376
drupal_add_library('system', 'ui.tabs);, 377
drupal_alter( ) method, 538
drupal_bootstrap( ) method, 407, 685–686
drupal_deliver_html_page( ) method, 676, 692, 697, 928–929
drupal_deliver_page( ) method, 692, 697
drupal_flush_all_caches( ) method, 407, 436
drupal_form_submit( ) method, 258–259
drupal_get_form( ) method, 464–465
drupal_get_normal_path( ) method, 692
drupal_get_path( ) method, 356, 770
Drupal_http_request( ) method, 710
drupal_is_front_page( ) method, 296
drupal_load( ) method, 918
drupal_parse_info_file( ) method, 919
drupal_placeholder( ) method, 476
drupal_process_attached( ) method, 932
drupal_render( ) method, 692, 697, 923, 930, 932
drupal_render_cache_by_query( ) method, 931
drupal_render_children( ) method, 334, 782
drupal_render_children($form), 337
drupal_render_page( ) method, 929
drupal_required_modules( ) method, 919
drupal_set_message( ) method, 451, 495
drupal_static( ) method, 907, 909
drupal_system_listing( ) method, 919
drupal_uninstall_/chema( ) method, 899
drupal_uninstall_modules( ) method, 902
drupal_write_record( ) method, 536
Drupal.attachBehaviors( ) method, 364–365
Drupal.behavior method, 364, 368, 371–377
Drupal.behaviors object, 364
DrupalCacheInterface, 688
DrupalCamp events, 198
DrupalCon conferences, 198
drupalcontrib.org, 394
drupalCreateUser( ) method, 530
DrupalDefaultEntityController class, 553, 694
drupalGet('path') method, 530
drupalLogin($user), 530
DrupalOpenLearning.org, 872
Drupal.org
accounts, setting up for contributing, 854–855
branches and tags on, 861
contributing patch files to, 498–499
linking to with field formatters, 757–766
caching data using default cache table, 765–766
sandboxes on, sharing code in, 541
submitting patches to, 531–532
drupal.org, hosting on, 234, 817
drupal.org documentation, 869
drupal.org project page, 228
Drupal.org User ID, 154
drupal.org username, 870
drupal.org web forums, 196
drupal.org/coding-standards, 478
drupal.org/community-spotlight, 869
drupal.org/contribute/documentation, 874
drupal.org/contribute/documentation/join, 874
drupal.org/home, 140
drupal.org-hosted module, 488
drupal.org/irc/guidelines, 881
drupal.org/localize, 11
drupal.org/node/add/book, 874
drupal.org/node/add/project-project, 541, 856
drupal.org/patch, 91
drupal.org/patch/apply, 875
drupal.org/patch/create, 875
drupal.org/patch/novice, 874
drupal.org/planet, 871
drupal.org/project/advanced_help, 183
drupal.org/project/api, 394
drupal.org/project/backupmigrate Backup and Migrate module, 45
drupal.org/project/bbcode, 772
drupal.org/project/browscap, 232
drupal.org/project/captcha_pack, 99
drupal.org/project/coder, 406, 478, 862
drupal.org/project/content_type_overview, 100, 179
drupal.org/project/corolla, 13
drupal.org/project/custom_formatters, 154
drupal.org/project/customfilter, 772
drupal.org/project/devel, 474
drupal.org/project/dreditor, 878
drupal.org/project/drubuntu, 972
drupal.org/project/drupalforfirebug, 232
drupal.org/project/drupalorg_testing, 879
drupal.org/project/enabled_modules, 898
drupal.org/project/entity, 550
drupal.org/project/examples, 773
drupal.org/project/field_group, 96
drupal.org/project/field_permissions, 187
drupal.org/project/flexifilter, 772
drupal.org/project/grammar_parser, 406
drupal.org/project/image_resize_filter, 781
drupal.org/project/imagefield_crop, 159
drupal.org/project/insert, 186
drupal.org/project/issues, 868
drupal.org/project/issues/drupal, 877
drupal.org/project/issues/gci, 872
drupal.org/project/issues/projectapplications, 863
drupal.org/project/issues/remarkup, 794
drupal.org/project/link, 96, 151
drupal.org/project/markdown, 772
drupal.org/project/media, 97
drupal.org/project/modules, 88, 90, 94
drupal.org/project/multicolumncheckboxesradios, 766
drupal.org/project/openid_provider, 15
drupal.org/project/oracle, 442
drupal.org/project/pathauto, 190, 801
drupal.org/project/pathologic, 187
drupal.org/project/project_shortname, 94
drupal.org/project/quickstart, 228, 972
drupal.org/project/references, 96
drupal.org/project/relation, 96, 179, 182
drupal.org/project/remarkup, 792
drupal.org/project/reptag, 772
drupal.org/project/simplehtmldom, 772
drupal.org/project/sitedoc, 889
drupal.org/project/skinr, 939
drupal.org/project/sky, 939
drupal.org/project/smartcrop, 159
drupal.org/project/sqlsrv, 442
drupal.org/project/strongarm, 905
drupal.org/project/textile, 772
drupal.org/project/themes, 13
drupal.org/project/token, 190, 853
drupal.org/project/typogrify, 772
drupal.org/projectvctools, 95
drupal.org/project/views, 89
drupal.org/project/votingapi, 537
drupal.org/project/wysiwyg_linebreaks, 97
drupal.org/project/xray, 769
drupal.org/requirements, 234
drupal.org's version control, 492
drupal.org/user/register, 874
drupal.orgvnode/1002658, 146
drupal.orgvproject/hacked, 143
drupal.orgvproject/migrate, 889
drupal.orgvproject/xray, 902
drupal.orgvsecurity-team, 137
drupal.orgvuser/26979, 876
drupal.org/writing-secure-code, 863
Drupaltherapy, 226
alias files (aliases.drushrc.php), 600–601
aliases for all sites involved in upgrade, 892–893
applying code updates with, 603–606
combined with manual approach for upgrading, 893–896
command-specific options, 609
database backup tools, 45
downloading Drush tool, 34
making Drush tool executable, 35
arguments for, 618
drush_dispatch command, 619
drush_html_to_text command, 623
drush_invoke command, 619
drush_invoke_process command, 620
drush_invoke_process_args command, 620
drush_invoke_sitealias command, 620
drush_invoke_sitealias_args command, 620
drush_op_system command, 619
drush_print command, 622
drush_print_pipe command, 622
drush_print_table command, 622–623
drush_set_error comand, 626
drush_shell_exec command, 619
dt command, 622
options for, 618
processing command results, 620–621
updating with
overview, 142
using remote commands with, 610–617
making local copy of remote Drupal site, 612–614
setting up SSH key pair, 611–612
using Drush site context to control sql-sync options, 616–617
using sql-sync without installing Drush on remote system, 615–616
writing extensions for, 626–633
altering Drush command behavior with, 631–633
implementing command methods, 628
manually specify command with callback, 629
placing command implementation in separate file, 629
returning array to pass data to other Drush scripts, 629
drush @dev core-status command, 609
drush cache-clear all command, 598, 613
drush cc all command, 46, 407, 798
drush cc command, 494
drush command, 35
drush commandname command, 33
drush convert-makefile command, 817
drush core-cli command, 601
drush core-rsync command, 612
drush dl menu_block; drush en -y menu_block, 176
drush dl MODULE_NAME, 31
drush dl modulename, 38
drush docs-commands command, 628
drush en featurename, 906
drush en views_ui, 904
drush features-export command, 905
drush features-revert command, 813
drush features-update command, 813
.drush folder, 607
Drush Git Backup (DGB), 249
drush help --filter command, 630
Drush help screen, 968
drush mmas command, 628
Drush project page, 34
drush site-install command, 540, 806
drush site-upgrade command, 888, 893, 895, 897, 901, 904
drush sql-dump > /path/to/filename.sql command, 45
drush sql-query 'show tables;' | grep cache command, 613
drush sql-sync @dev @live command, 617
drush sql-sync command, 612, 894
drush topic docs-api command, 633
drush up command, 31–32, 38, 147
drush upc ctools views, 147
drush verify-makefile command, 817
drush_bootstrap_max method, 631
drush_choice method, 624
drush_command_invoke_all method, 632
drush_command_invoke_all_ref method, 632
drush_COMMANDFILE_HOOK method, 631
drush_COMMANDFILE_HOOK_validate method, 631
drush_COMMANDFILE_post_HOOK method, 631
drush_COMMANDFILE_pre_HOOK method, 631
drush_confirm method, 624
drush_devel_download method, 632
drush_dispatch command, 619
drush_dispatch method, 629
drush_docs_readme method, 629
drush_extras module, 611
drush_get_merged_options method, 621
drush_HOOK_init method, 631
drush_html_to_text command, 623
drush_invoke command, 619
drush_invoke_process command, 620
drush_invoke_process_args command, 620
drush_invoke_sitealias command, 620
drush_invoke_sitealias_args command, 620
drush_key_value_to_array_table method, 623
drush_op_system command, 619
drush_print command, 622
drush_print method, 624
drush_print_file method, 629
drush_print_pipe command, 622
drush_print_pipe method, 629
drush_print_table command, 622–623
drush_prompt method, 624
drush_redispatch_get_options method, 625
drush_set_error command, 626
drush_set_error method, 624–625, 631–632
drush_shell_exec command, 619
drushed modules, 386
drush/examples/helloworld.script file, 618, 622
drush/examples/sandwich.drush.inc file, 626
drush.php file, 608
drushrc.php file, 600, 606–607, 613, 617
dsm( ) method, 311
dt command, 622
Dublin Core vocabulary, 662
dur option, 648
dynamic forms, via #ajax property, 591–592
dynamic pages, building using Views module. See Views module
dynamic pricing, 570
EcoAlign site, 937
Edit view, 57
effective communication, 218
element field name, 26
element_validate property, 544
elements
forms accepting multiple, 776–779
jQuery UI
accordion library, 367
datepicker library, 368
draggable library, 370
droppable library, 371
resizeable library, 373
selectable library, 374
slider library, 375
sortable library, 376
render
manipulating output of, 322–326
overview, 322
<em> tags, 413
Empty screen state, 731
Enable and set default link, 281
enabled filters, 707
end-user, documentation for, 222–223
engine property, 279
providing administrative interface for, 555–559
defining entity access callback method, 554
defining new permission, 554–555
reasons for creating, 550
entity class, 553
entity keys, 553
ENTITY_build_content( ) method, 694
entity_load( ) method, 559
entity_metadata_comment_access( ) method, 554
entity_prepare_view( ) method, 694
ENTITY_view_multiple( ) method, 694
EntityAPIController class, 553
entityFieldQuery( ) method, 549
Environment Indicator module, 99, 252
Environment variables dialog, 967
error code, 621
error log level, 625
fatal errors
runtime, 473
syntactic, 472
searching for solutions to, 472
tracing with Devel module, 474–476
Error screen state, 733
error_log item, 621
ERROR_REPORTING_DISPLAY_ALL, 408
error_status item, 621
errors
search and 404-modules for handling, 106–107
showing, 408
etc/backup.d file, 250
events, sponsoring, 881
every_page flag, 358
everything in code approach, 251–252
everything through the web philosophy, 252
example components, 813
example modal dialog, 60
example_something( ) method, 469
example_update_7001( ) method, 451
example.aliases.drushrc.php file, 600
example.com/blog/blog-post-title, 96
example.drushrc.php file, 608, 613
exampleform_unsubscribe( ) form, 331
example.js file, 357
examples directory, 608
examples folder, 618
examples/examples.drushrc.php file, 622
example/web directory, 140
existing modules, hooking into, 504
expectations, for contributors, 851
experts
consulting with, 838
and success as developer, 843
explorative usability tests, 736–737
environment, 737
method, 736
scenario, 736
setting up module, recording, and logging, 738
Export view, 58
exportables, 811
exporting, Views to code, 85–86
exposed filters, cloning and making administrative tables using, 80–81
Exposed form in block, 62
Exposed form style, 62
exposed forms, 62
altering Drush command behavior with, 631–633
implementing command methods, 628
manually specify command with callback, 629
placing command implementation in separate file, 629
returning array to pass data to other Drush scripts, 629
extract( ) method, 471
facet blocks, 703
fatal errors
runtime, 473
syntactic, 472
faux-exportables, 811
Features, defined, 214
features directory, 906
adding to automatic upgrade, 906–907
base, 905
features property, 279
Features suite, 252
features_revert( ) method, 258
.features.content.inc file, 812
feedback
direct and immediate, 264
expert, about site accessibility, 946
from issue queues, 741
field formatters, linking to Drupal.org/Twitter accounts with, 757–766
caching data using default cache table, 765–766
Field SQL Storage, Field UI module, 92
field_add_more_js( ) method, 777
field_attach_form( ) method, 557
field_attach_load( ) method, 694
field_create_field( ) method, 560
field_get_items( ) method, 509
field_info_bundles( ) method, 460–461
field_language( ) method, 509
field_status, 187
fields
adding metadata to Chapter content type with, 172–173
adding types of to Field module, 96–97
programmatically creating and attaching, 559–560
setting display of with Chapter content type, 173–175
of Views, 61
Fields module, adding field types to, 96–97
Fields upgrades, automating, 902–903
'file' => filename.extension, 424
file directories, setting permissions, 245
File Transfer Protocol clients. See FTP clients
file xray.admin.inc, 465
file_get_contents( ) method, 710
file_scan_directory( ) method, 919
file.js, 365
files
automatic inclusion of, 592
generic, allowing people to attach to content, 180
Photoshop, 206
uploading, with FTP clients, 237
files attribute, 807
files[ ] = mymodule.test, 519
FILO (first in, last out) order, 308
--filter flag, 607
filter module, PHP, 128
filter settings
forms
accepting two additional rows, 777–779
providing instructions on, 781–782
filter_example.module, 773, 775–776
filter_xss( ) method, 478
--filter=devel flag, 607
filtered_html_plus, 185
filters
criteria
of Views, 61
adding custom markup for output, 795
container form elements with specified classes, 790–791
custom hooks, 783
editing text formats, 794
examples, 773
modules, 771–773, 776–788, 791–794
stylesheets for administration pages, 788–790
tags and replacement markup form, 776–782
enabled, 707
exposed, cloning and making administrative tables using, 80–81
filters, unchanged, 163
find command, 646
Find duplicate issues, 875
Find maintainer directions, 875
Find related issues, 876
fine-tuning content display, 164–167
modifying teaser display and setting trim length, 166–167
using view modes to display same content in different ways, 166
Firebug net summary, 914
FireFTP, 236
first in, last out (FILO) order, 308
Flooded screen state, 732
flow state, 264
FOAF (Friend of a Friend) vocabulary, 662
fonts, choosing for visual design, 939
foo_load( ) method, 677
foreach( ) statement, 763
Form API, 134
Form component type, 504
form elements
container, with specified classes, 790–791
form variable, 547
form_alter( ) method, 412
form_error( ) method, 544
form_get_error( ) method, 547
form_id form, 332
form_process_password_confirm( ), 542
form_set_error( ) method, 544
form_set_value( ) method, 779
form_state variable, 547
<form> ID attribute, 333
Format settings
configuration options for, 67–68
for Views, 72
format_plural( ) method, localization with t( ) method and, 412–414
formats, text, 794
formatting
allowing images, adding to text, 184–187
data for display as tables, 433–435
formmsgs directory, 540
formmsgs entity, 553
formmsgs_form( ) method, 557
formmsgs_form_submit( )method, 557
formmsgs_load( ) method, 557
formmsgs_load_by_name( ) method, 557
formmsgs_load_multiple( ) method, 557
formmsgs.admin.inc file, 556
forms
accepting multiple elements, 776–779
API elements and default properties, 331
dynamic, via #ajax property, 591–592
filter settings
accepting two additional rows, 777–779
providing instructions on, 781–782
manipulating elements
in theme methods, 335
Simpletest framework and, 528–530
streamlining elements with CSS, 766
modifying using alter hooks, 339–340
automatic file inclusion, 592
dynamic forms via #ajax property, 591–592
Forum module, 93
FOSDEM (Free and Open Source Developers' European Meeting), 824
FOSS (Free and Open Source Software), 822
Free and Open Source Developers' European Meeting (FOSDEM), 824
Free and Open Source Software (FOSS), 822
Friend of a Friend (FOAF) vocabulary, 662
Front page view, 57
<front> text, 22
FTP (File Transfer Protocol) clients
setting to use text editor, 238
creating bookmarks with server access setting, 235–236
entering login credentials, 237
selecting security protocol, 236–237
starting connection and uploading files, 237
function signatures, of hook_help( ) method, 480
function_exists($function_name), 670
function_name( ) method, 404
functional requirements
development and implementation, 207
IA stage, 206
functional testing, with Simpletest framework, 517–532
advantages and caveats, 518
running tests, 520–522, 526–527
submitting patches to Drupal.org, 531–532
TDD, 519
when to use, 518
functionality
OpenID module, 15
modifying existing, 504
pages or content sections requiring, 259–260
functions
calling, 302
garfieldtech.com/blog/language-tradeoffs, 393
garland_width setting, 277
garland.info file, 277
get_defined_vars( ) method, 311
getfirebug.com, 753
git add -A command, 255
git bisect, 263
git checkout mymodule.info, 45
git checkout -- path/to/filename.php command, 45
git clone --bare command, 254
git commit -a -m command, 263
git commit command, 43
git diff command, 249
.git directory, 254
Git homepage, 40
git init command, 42
git log command, 45
git pull command, 139
git reset command, 255
git reset --hard HEAD command, 44
git revert HEAD command, 45
git status command, 42, 45, 255
git status type, 139
Git system, 263
Git tool, 31–38, 45–46, 858–861
adding files to repository, 859–861
database backup tools, 45
git checkout mymodule.info command, 45
git log command, 45
git status command, 45
Git version control system, 254–255
gitignore file, 894
gitorious.org/drupal-open-curriculum/pages/Home, 872
Global Redirect module, 107
Global Theme Settings, 275–277
custom, 277
Logo setting, 276
Main and Secondary menus settings, 277
Name and Slogan settings, 276
Shortcut Icon setting, 277
User Pictures in Posts and Comments settings, 277
User Verification Status in Comments option, 277
Glossary view, 57
glue code modules, custom upgrade methods from, 896–897
GNU General Public License, 822
goals
setting, 264
GoMockingbird, 206
Grid option, 68
GROUP BY, 908
group rule, 358
Group-related Roles, 123
groups
creating, 114
in drupal_add_js( ) method, 357–359
Groups landing page, 116
Groups.Drupal.com/seattle, 872
groups.drupal.org profile pages, 763
Groups.Drupal.org site, 197
Groups.Drupal.org User ID, 154
groups.drupal.org/contributed-module-ideas, 91
groups.drupal.org/drupalchix, 882
groups.drupal.org/events, 875
groups.drupal.org/html5, 940
groups.drupal.org/peer-review, 479–480
GUI tools, 264
-h parameter, mysql command, 246
<h2> tags, 319
hackable URLs, views allowing for user pages, 801–802
hacking core, 277
hardcoded variables, 289
hard-coding, variables in template files, 288
headers
overview, 61
setting up page, bootstrap phase, 690
Headers already sent error, 303
headshot images
author biographies view page, 162–164
menu link for page view, 161–162
overview, 151
helloworld.drush file, 618
help hook, for Drush extensions, 630–631
Help region, 285
Help-displays help text module, 92
Heyes, Richard, 622
<Hidden> tag, 165
Highlighted region, 323
highlighting first result with multiple displays, 77–78
Home context, 608
homepage.css stylesheet, 347
hook suggestions
overview, 305
hook_anything_whatsoever( ) method, 393
hook_apachesolr_field_mappings_alter(&$mappings) method, 709
hook_apachesolr_modify_query( ) method, 709
hook_apachesolr_modify_query($query, $caller) method, 709
hook_apachesolr_node_exclude($node, $namespace) method, 709
hook_apachesolr_prepare_query($query, $caller) method, 709
hook_apachesolr_search_result_alter($doc, $extra) method, 710
hook_apachesolr_update_index( ) method, 709
hook_apachesolr_update_index($document, $entity, $namespace) method, 708
hook_apachesolr_update_index($document, $node, $namespace) method, 709
hook_block( ) method, 260
hook_block_view( ) method, 395
hook_comment_presave( ) method, 503
hook_comment_view( ) method, 393
hook_commerce_currency_info_alter( ) method, 569
hook_commerce_customer_profile_info( ) method, 577
hook_commerce_line_item_info( ) method, 568, 574
hook_commerce_line_item_info_alter( ) method, 574
hook_commerce_payment_info( ) method, 579
hook_commerce_product_info( ) method, 590
hook_commerce_tax_info( ) method, 574
hook_contact_site_form( ) method, 334
hook_cron( ) method, 685
hook_css_alter( ) method, 343, 345–348, 916
hook_custom_theme( ) method, 692
hook_db_rewrite_sql( ) method, 63
hook_default_formmsgs( ) method, 538
hook_default_views( ) method, 538
hook_entity_info( ) method, 460, 550–551, 554, 556, 571
hook_entity_info_alter( ) method, 590–591, 748, 750
hook_entity_load( ) method, 694
hook_entity_prepare_view( ) method, 694
hook_entity_view( ) method, 695
hook_entity_view_alter( ) method, 695
hook_field_attach_load( ) method, 694
hook_field_formatter_*( ) method, 758
hook_field_formatter_info( ) method, 757–758
hook_field_formatter_view( ) method, 761–762
hook_field_storage_pre_load( ) method, 694
hook_filter_info( ) method, 774–776
hook_form_alter( ) method, 190, 339–340, 392, 409, 440, 505, 542, 545, 923
hook_form_FORM_ID_alter( ) method, 340, 409
hook_forms( ) method, 464
hook_help( ) method, 394–396, 416, 422, 440, 463, 480, 482, 539
hook_init( ) method, 692
hook_install( ) method, 258, 451, 508, 560, 808, 814, 899, 903, 907
hook_install_tasks( ) method, 807–808
hook_js_alter( ) method, 362–363, 916
hook_language_init( ) fuction, 689, 691
hook_language_negotiation_info( ) method, 691
hook_language_negotiation_info_alter( ) method, 691
hook_library( ) method, 359–362, 545
hook_library_alter( ) method, 363
hook_load( ) method, 694
hook_menu( ) method, creating pages with, 421–426
choosing paths for administration pages, 422
hook_menu implementations, 675, 682
hook_menu_alter( ) method, 362, 424, 427, 681, 705
hook_menu_alter array, 679–682
hook_menu_item_alter( ) method, 928–929
hook_module_implements_alter(&$implementations, $hook) method, 509
hook_node_info( ) method, 513
hook_node_insert( ) method, 772
hook_node_load( ) method, 694
hook_node_update( ) method, 772
hook_node_update_index($node), 709
hook_node_view( ) method, 513, 772, 795, 798
hook_node_view($node, $view_mode, $langcode) method, 709
hook_node_view_alter( ) method, 695, 804
hook_nodeapi method, 496
hook_page_alter( ) method, 325–326, 437, 511, 697, 929–932
hook_page_build( ) method, 260, 697, 929–930
hook_permission( ) method, 426, 555
hook_permissions( ) method, 432, 555
hook_preprocess_comment( ) method, 754
hook_preprocess_HOOK( ) method, 754
hook_preprocess_node( ) method, 748–749, 754
hook_preprocess_page( ) method, 362, 754
hook_process_HOOK( ) method, 754
hook_rdf_mapping( ) method, 661
hook_requirements( ) method, 452
hook_schema( ) method, 258, 451, 453–454, 551, 553
hook_search_execute( ) method, 704–705
hook_search_info( ) method, 704–705
hook_search_page( ) method, 705–706
hook_stream_wrapper_alter( ) method, 691
hook_stream_wrappers( ) method, 691
hook_system_info_alter( ) method, 286–287
hook_theme( ) method, 301–302, 316, 333–334, 407, 435–436, 439, 476, 483
hook_theme_registry_alter( ) method, 799
hook_update_dependencies( ) method, 452
hook_update_N( ) method, 258, 451–452, 454, 560, 814, 897, 899, 903, 906
hook_url_inbound_alter( ) method, 692
hook_views_default( ) method, 538
hook_views_default_view( ) method, 513
hook_watchdog( ) method, 689
hooking, into modules, 537–538
hooks, 304–310, 393–397, 503, 783
alter, modifying forms using, 339–340
altering queries and results, 709–710
calling all implementations of, 432–433
description of, 304
preprocess and process, 315–317
Search module
defining new searches, 704
capturing additional upgrade steps in, 896–904
hookvnode_view( ) method, 695
host server, with SSH, 243
hosting
selecting according to performance and service, 234–235
sites, locally, 230
hosting name, 247
.htaccess files, 10, 138–139, 141, 245, 248, 962
HTML (HyperText Markup Language)
semantic markup, 656
HTML List option, 68
html theme, 927
html_tag, 324
HTML5-and Drupal, 940
htmlspecialchars( ) method, 472–475
html.tpl.php template, 288
HTTP (Hypertext Transfer Protocol) accelerators, Varnish, 638
HTTP port, 952
httpd.conf file, 955
http://drupal.org project page, 486
http://purl.org/dc/terms/ namespace, 653
Hudson tool, 260
hybrid approach, 253
HyperText Markup Language. See HTML
Hypertext Preprocessor. See PHP
Hypertext Transfer Protocol (HTTP) accelerators, Varnish, 638
identi.ca, 655
IDEs (Integrated Development Environments), 237
idiosyncrasies, internal documentation, 226
if ($path == 'admin/structure')... statement, 403
if module_exists( ) method, 259
if... statements, 675
image fields, reusing, 179–180
image_resize_filter, 147
image_resize_filter.module, 782
image_style_name_validate( ) method, 544
images
headshots, 151
immediate feedback, 264
implementation, of project plan, 207
Implements hook_somethingorother( ) method, 496
include file, 550
--include-conf option, 612
includes/common.inc, 899
includes/entity.controller.inc file, 553
includes/graph.inc, 536
in/config/development/performance, 341
indenting, two spaces, 405
index.php file, 10, 502, 608, 685, 692, 784, 960, 962
Inexpensive attribute, 721
.info files, 278–281, 355–356, 388–391
adding stylesheets via, 343–344
directives
configure, 390
overview, 389
package, 391
.info folder, 85
information architecture
overview, 206
Information Architecture Discovery, Drupal Project Stage, 208
inline parameter, 357
<input type="submit" >, 331
install directory, 140
.install files, 259, 451–453, 550, 560
install_profile_info( ) method, 919
installation profiles, 803–818
configuration features, 810–815
drune_track.*.inc file, 812
drune_track.module file, 812–815
using installation profiles and features as development tool, 815
developing, as business model for contributors, 850
hosting on drupal.org, 817
example distribution, 805
full-featured services, 804
drune.info file, 807
and success as developer, 843
installers
automated module, 146
one-click, circumventing, 240–241
installing Drupal, on Ubuntu operating system, 973–975
install.php file, 974
INSTALL.txt, 386
Integrated Development Environments (IDEs), 237
interaction, adding dynamic front-end, 510–511
#ajax attribute, 511
#states attribute, 511
interfaces, administrative
providing for entities, 555–559
interim names, for modules, 773–775
internal documentation, 225
Internet Explorer, adding conditional stylesheets for, 345
Internet Protocol (IP) address, 247
Internet Relay Chat (IRC) site, 199–200
Invocation count, 918
IP (Internet Protocol) address, 247
IRC (Internet Relay Chat) site, 199–200
feedback from, 741
issues
item_list( ) method, 459
iterating, migration processes, 910
JavaScript language
drupal_add_js( ) method, 356–357
Jenkins Continuous Integration tool, 260
joins, static queries with, 445–447
drupal_add_js( ) method
further resources, 379
and JavaScript language, 355–366
drupal_add_js( ) method, 356–357
jquery.js file, 363
Js item, 360
JS_THEME, 358
js-file-one.js file, 360
js-file-two.js file, 360
Jump Menu option, 68
karma, in community, 848
Katas, Drupal, 880
keyup( ) method, 545
Kit specification, 257
Knaddison, Greg, 134
kpr($vars);, 749
Krumo library, 311
LAMP (Linux/Apache/MySQL/PHP) stack, to WISP, 947–948
languages
negotiation algorithms, 691
selection, bootstrap phase, 691
Last updated issue, 488
launching
meetings, 216
of website, 207
laws
of similarity, 717
layout
defined, 213
Learning Projects, Drupal, 872
left-to-right (LTR), 343
legislation, of accessibility, 943
drupal_add_library( ) method, 361–362
hook_library( ) method, 359–361
licensing, 863
estimating completion dates, 211–212
minimum viable project, 212
risks, 212
limitations, role of in project planning, 203–204
Line Item/Line Item UI, 568
line_item_id values, 574
Link display, 63
linking
chapters to authors, 178
to other pages by authors, 153–154
from profiles to web sites, 151–153
links template, 309
links__comment template, 309
links__contextual template, 309
links__contextual__node template, 309
links__node template, 309
Linux/Apache/MySQL/PHP (LAMP) stack, to WISP, 947–948
list_themes( ) method, 415–416
listing
author biographies view page, 162–164
building authors headshot view, 158–162
local copy, of remote Drupal site, 612–614
local hosting, of sites, 230
local tasks
defining tabs with, 425
second to complement default, 431–432
Locale module, 93
locale.module, 765
localhost hostname, Navicat, 979
localization, with t( ) and format_plural( ) methods, 412–414
--lock option, 605
log item, 621
logging, setting up for testing, 738
logging in
allowing with OpenID module, 15
entering credentials, 237
logical operators
logintoboggan module, 603
Logo checkbox, 276
Logo setting, 276
long-term support, 841
loops, 403
Lopp, Michael, 219
LTR (left-to-right), 343
Lullabot consulting and training shop, 197
Lullabots, 226
Mac OSX operating system installation, downloading core file, 977–984
command-line fu, 979
Machine Name field, 62
machine_name.info, 389
mailing lists, 197
Main and Secondary menus settings, 277
main menu, adding table of contents to, 178
<Main menu>, 19
Main page areas, 730
Main page content block, 286
maintenance
of project, 207
major modules. See modules, major
make command, 816
MAMP icon, 977
MAMP screen, 977
man backupninja command, 250
man command, 245
man git command, 45
Manage display page, 165
manual tools, setting up databases with, 240
mappings
options for working with, 661–662
markdown filter, 97
markup
adding custom for output, 795
replacement, tags and, 776–782
Masquerade module, 103
max_execution_time, 895
Media module, 804
MediaWiki, 225
meetings, brainstorming, 214
Meetup.com, 199
meetups, 824
overview, 197
memcached system, 638
memory item, 621
Menu Block module
overview, 104
using to display better table of contents, 176–177
Menu component type, 504
menu items
create new, 223
declaring for X-ray module, 425–426
defining for settings form, 464–465
defining pages with normal, 422–424
defining tabs with local task, 425
menu links, for page view, 161–162
Menu module, 92
Menu Position module, 104
Menu Settings page, 277
menu system, and paths, 667–683
modifying existing router items, 680–683
MENU_DEFAULT_LOCAL_TASK, 425
menu_execute_active_handler( ) method, 407, 475, 928
menu_get_active_help( ) method, 395–396
menu_get_item( ) method, 438–439
MENU_NORMAL_ITEM, 425
menu_router database, 682
menu_router table, 680
menus
adding to Views, 73
modules for, 104
message item, 621
meta:COMMANDFILE:summary item, 630
meta:COMMANDFILE:title item, 630
metadata
adding to Chapter content type with fields, 172–173
method ->extend('TableSort'); 457
methodologies, of project management, 207–209
Microsoft Windows development environment, 947–969
loading Drupal core code, 953–957
phpMyAdmin and MySQL Connector tools, 963–965
Visual Studio development environment, 948
Microsoft Windows, running Ubuntu operating system on, 971
Migrate module, 259
auditing, 910
iterating, 910
showing, 910
sticking points, 909
timing, 910
milestones
site review at completion of, 217–218
tracking, 212
Minimal detail attribute, 725
minimum viable project (MVP), 212
misc/favicon.ico file, 277
misc/machine-name.js file, 356
Mission Statement block, 23
mission statement, custom, 21–24
mk-query-digest, 920
mockups
defined, 213
for detailed designs, 733
of DGD7 home page, 8
mod_deflate, 916
concept, of Rules module, 722
view, using to display same content in different ways, 166
Modifying field label, 113
making dependencies optional, 538–539
modularity, 713
Module Page Signup, 734
module_disable( ) method, 901–902
module_exists('block'); 539
module_implements_alter( ) method, 452
module_invoke_all( ) method, 393, 432, 783
module_invoke_all('x') method, 395
modulename_function( ) method, 405
modulename.api.php file, 538
modules, 87–107, 463–469, 485–488
$path and $arg parameters, 481
accessible, 943
administrative interface and content entry, 99–103
Content Type Overview module, 99–102
Environment Indicator module, 99
Masquerade module, 103
Smart Crop module, 99
Workbench suite of modules, 99
automated installer, 146
Bot, 107
security code reviews, 132
coda on contributed, 792
community building and social networking, 104–106
Comment Notify module, 104–105
Organic Groups module, 105
Profile2 module, 106
Rate module, 105
Role Limits module, 106
Userpoints module, 105
Voting API dependency, 105
configuration page for, 469–483
conditionally taking action based on configuration settings or user access, 468–469
creating separate file for administration code, 465
defining menu items for settings form, 464–465
defining new permissions, 467–468
Code Filter module, 103
Colorbox module, 104
Panels module, 103
contributed
patch files to Drupal.org, 498–499
CSS files, 342
custom coding, 488
custom upgrade methods from glue code, 896–897
custom utility methods, 470–471
dependencies on contributed, 592–593
placement of custom modules, 385–387
repository for modules, 388
enabling in code, 901
searching for solutions to, 472
tracing with Devel module, 474–476
evolution of, 87
extending site methodality with, 15–16
adding to automatic upgrade, 906–907
base, 905
fixing problems with, 91
handling search and 404 errors, 106–107
404 Navigation module, 107
Apache Solr module, 106
Global Redirect module, 107
hook_help( ) method, 480
implementations, 317
list of API changes, 489
loading, bootstrap phase, 691–692
defining goals, 561
finding existing modules, 534–535
programmatically creating and attaching fields, 559–560
providing administrative interface for entities, 555–559
providing new entity type, 549–555
menus and navigation, 104
on-site documentation for, 482–483
OpenLayers, 107
performance issues with, 88
PHP filter, avoiding using, 128
releasing, project page and documentation, 741–743
renaming, 788
setting up for testing, 738
sharing on Drupal.org, 791–792
site building essentials, 94–98
adding field types to Fields module, 96–97
AntiSpam and Mollom modules, 98
Token dependency, 96
Views module, 95
Webform module, 98
WYSIWYG module, 97
site-specific using API, 792–794
storing contributed, 94
vs. themes, 354
calling all implementations of hooks, 432–433
calling methods directly, 438–439
creating pages with hook_menu( ) method, 421–426
displaying data in sortable tables, 456–460
formatting data for display as tables, 433–435
identifying needed methods, 414–421
localization with t( ) and format_plural( ) methods, 412–414
Permissions administration page, 426–431
second local task to complement default local task, 431–432
styling with CSS files, 440–442
writing site-specific, 501–515
hook system, 503
modules_number field, 460
modules/acquia, 989
modules/block directory, 298
modules/block.module, 445
modules/book, 798
modules/contact/contact.test file, 531
modules/field/field.form.inc, 777
modules/file/file.js, 365
modules/help/help.api.php, 396
modules/image/image.admin.inc, 544
modules/node folder, 423
modules/node/node.test file, 518, 522, 531
module-specific regions, 287
modules/simpletest/drupal_web_test_case.php file, 531
modules/system directory, 292, 309
modules/system/system.api.php, 393
modules/user/user.admin.inc: user_admin_permissions( ) method, 433
modules/user/user.install, 796
modules/user/user.js, 544
Mollom module, 98
getting involved in community, 844–846
starting own business, 846
expectations for, 851
consulting with experts, 838
content needs managing, 837
and contriburing to community, 840
long-term benefits of using Drupal, 838
long-term support, 841
making sustainable choices, 840
supporting different participants, 839–840
understanding concepts of Drupal site, 836–837
mongod, 648
watchdog subsystem, session subsystem, and message queue, 648–649
mongodb_watchdog, 649
monitary support, of community, 880–881
moreoutrageous_menu_alter( ) method, 681
moreoutrageous_message( ) method, 682
MustardSeed Media video podcast, 226
MVP (minimum viable project), 212
mymodule_active_users( ) method, 524
mymodule.info file, 519
mymodule.module file, 519
mymodule.test file, 519
mysql command, 246
MySQL Connector tools, 963–965
MySQL RDBMS, root password, 972
MySQL root password, 246
mysqldump command, 244–245, 614
mytheme_css_alter( ) method, 348
mytheme_js_alter( ) method, 362
name attribute, 807
name code, 530
name field_user, 155
name property, 279
Name setting, 276
names, for modules
renaming, 788
nameservers, 247
naming conventions, of CSS files, 342–343
bi-directional text support, 343
core and module, 342
nano .bash_profile file, 36
Napkin sketch wireframe, 6
Navicat Lite, 979
Navicat Premium, 979
navigation
book, next and previous links mimicking, 795–801
modules for, 104
non-book, reusing book module templates to display, 798–801
Navigation region, 291
negotiation algorithms, language, 691
New Bookmark window, 236
new tasks, 217
next links, mimicking book navigation, 795–801
ninjahelper program, 250
--no option, 624
no results behavior, 62
Node component type, 504
Node export module, 259
Node module, 314
Node reference, connecting content types with, 181
node types, Product display, 575–577
'node/%node' menu router item, 677–678
node/[nid], 928
node/[node ID], 92
node_access_grants( ) method, 709
node_add( ) method, 769
node_add_access( ) method, 676
node_add_body_field( ) method, 559
node_add_page( ) callback, 676
node_build_content( ) method, 695
node_form_block_admin_configure_alter( ) method, 412
node_help( ) method, 396
node_menu_local_tasks_alter( ) method, 770
node_page_default( ) method, 307
node_page_title( ) method, 678
node_page_view( ) method, 678, 694
node_show( ) method, 694
node_type, 445
node_view( ) method, 695
node_view_multiple( ) method, 694
node/42 path, 674
node/add Add content page, 17
node/add/article, 481
node/add/book, 174
node.admin.inc file, 424
node--article--teaser.tpl.php file, 749
node--article.tpl.php file, 749
node-compact class, 748
node.css file, 348
node/integer/action type paths, 675
node--profile--compact.tpl.php file, 751–752
node--profile.tpl.php file, 751
nodes, making changes to, 319–320
node--suggestion.tpl.php file, 753
node-title class, 319
node.tpl.php file, 295, 648, 751–752
nodewords, 147
none property, 944
normal menu items, defining pages with, 422–424
Normal screen state, 731
--notes option, 609
notice log level, 625
notoriety, benefits of being contributor, 848
NULL values
object item, 621
OG Example panel, 120
ok log level, 625
one-click installers, circumventing, 240–241
on-site documentation, for modules, 482–483
ontologies, 653
Open Curriculum Project, Drupal, 872
Open ID module, 93
open source projects, contributing to, 265
OpenID module, allowing registration and logging in with, 15
openid_form_user_login_alter( ) method, 412
openid_form_user_login_block_alter( ) method, 412
openid.net, 15
OpenLayers module, 107
arithmetic, 400
combining sorts with logical, 65–66
string, 400
ternary, 401
choosing analysis method, 737
choosing users to test, 735–736
explorative usability test, 736–737
environment, 737
method, 736
scenario, 736
participants
finding, 737
informing of privacy considerations, 738
recruiting, 737
scheduling, 738
reasons for testing Rules module, 735
setting up module, recording, and logging, 738
test plan outline, 735
options
command-specific, 609
for Drush scripts, 618
order of content, defining for displays, 72
order rule, 358
Order/Order UI, 568
Organic Groups module
creating community web sites with, 109–124
installing and configuring, 110–114
Members, Roles, and Permissions settings, 122–124
overview, 105
OSX operating system installation, Mac. See Mac OSX operating system installation, downloading core file
output item, 620
output_charset option, examples/examples.drushrc.php file, 622
outrageous_menu( ) method, 669–670, 682
outrageous_message( ) method, 669–671
outrageous/dog/friend path, 673
Overlay module, 92
overrides, 813
overriding display settings, 63
-p parameter, mysqldump command, 244
package directive, 391
package manager, Debian, 250
hosting on drupal.org, 817
packaging, 817
page arguments key, 678
page callback method, 414, 682, 928
drupal_render( ) method, 930
drupal_render_page( ) method, 929
hook_page_alter( ) method, 929–930
page callback, 928
router item for, 928
page requests, bootstrap phases, 685–698
execution of page callback, 692–693
initialize configuration, 686
initialize database layer, 689
initialize session handling, 690
initialize variable system, 689–690
load modules and initialize theme, 691–692
select language, 691
set up page header, 690
try to serve cached page, 687–689
Page Settings, 163
page view, menu links for, 161–162
page_arguments array, 475
page_bottom region, 286
page_top region, 286
page-level suggestions, 306–308
pagers, 61
pages
creating with hook_menu( ) method, 421–426
choosing paths for administration pages, 422
defining with normal menu items, 422–424
page.tpl.php file, 276, 293, 295
parameters, spaces between, 405
parenthesis, control statements and, spaces between, 405
participants
finding, 737
informing of privacy considerations, 738
not asking for solutions, 739
putting at ease, 740
questioning, 739
recruiting, 737
scheduling, 738
waiting before offering assistance, 740
parties, Drupal, 880
password-protected URL, 222
passwords
MySQL RDBMS root, 972
patch files, contributing to Drupal.org, 498–499
patches
reviewing, using Dreditor, 878
submitting to Drupal.org, 531–532
patching existing modules, 514
PATH environment, 967
Pathauto module, 259
autogenerating human-readable URLs with, 190–191
Pathologic module, 259
paths
choosing for administration pages, 422
modifying existing router items, 680–683
patterns of CSS files, 342–343
bi-directional text support, 343
core and module, 342
payment methods, enabling, 579–581
Payment module, 578
Payment/Payment UI, 568
Pear Consol Table library, 622
issues with modules, 88
page and block level caching, 916–917
slow database queries, 920–921
reasons for slow websites, 913–916
user-perceived, 913
permissions
allowing people to attach generic files to content, 180
assigning, 127
checking, 407
conditionally taking action based on, 468–469
defining new, 467–468, 554–555
giving to authors to create profiles, 156–157
limiting access to Suggestion content type Status field, 187–190
setting for organizing and writing chapters, 170–171
downloading, 51
Permissions administration page, finding system names, 426–431
personal control, sense of, 265
pg_dump command, 614
photos, adding change picture link underneath user, 320
Photoshop files, 206
PHP (Hypertext Preprocessor)
files, 233
filter module, avoiding using, 128
language
closing tag, 404
overview, 398
PHP property, 279
php.exe, 968
phpMyAdmin screen, 239, 963–964
phpMyAdmin tool
setting up databases with, 239–240
PHP.net, 470
php.net/integer, 398
php.net/sort, 432
php.net/switch, 403
php.net/ternary, 401
php.netvwhile, 403
PHPs /* */ C-style, 392
PHP's print_r( ) method, 752
PHPTemplate, 273
--pipe flag, 627
Plentiful attribute, 722
pm-download command, 603, 607, 609, 624
pm-enable command, 632
pm-list command, 622
pm-releasenotes command, 605, 623
pm-update command, 605
pm-updatecode command, 604–605, 609
Poll module, 93
porting modules, upgrading, 485–499
contributing patch files to Drupal.org, 498–499
custom coding, 488
list of API changes, 489
post-launch, documentation for end-user, 222–223
post-launch plan, 842
post-project debriefs, 216
posts
inserting images into, 186–187
showing content that references post being viewed, 182–183
Preferences button, MAMP screen, 978
preg_quote( ) method, 786
preg_replace( ) method, 786–788
preprocess methods, 313–320, 476–477
adding change picture link underneath user photo, 320
adding classes to template wrappers, 318
finding contents of $variables array, 317
making changes to nodes, 319–320
theming forms with template files, 338–339
previous links, mimicking book navigation, 795–801
pricing, dynamic, 570
print render($content['field_image']);, 752
print_r( ) method, 311, 752, 796
Priority field, 488
Priority option, filter drop-down, 486
privacy of test participants, 738
problems, identifying in code, 493–497
process API, 620
process code
adding change picture link underneath user photo, 320
adding classes to template wrappers, 318
finding contents of $variables array, 317
making changes to nodes, 319–320
Product display node type, 575–577
adding products to site, 572–573
product types, 571
Product Pricing/Product Pricing UI, 568
Product Reference module, 568, 575
production bottlenecks, avoiding, 225
Product/Product UI, 568
products
types, 571
.profile file, 602
Profile module, 94
profile pages, showcasing authors of sites with, 149–157
approximate pages contributed by each author, 155
connecting Author profiles to author user accounts, 155–156
giving authors permission to create profiles, 156–157
headshot image, 151
Profile2 module, 106
profile2_get_types( ) method, 557
profile/drune/drune.make file, 816
profilename.info file, 806–807, 815
profilename.install file, 808
profilename.profile file, 806–807, 815
profiles
Author, connecting to author user accounts, 155–156
giving authors permission to create, 156–157
profiles folder, 806
profiles/foo, 918
profiles/standard, 918
project goals, 842
Project information section, 89
Project Information section, 130
project manager, meetings with, 214
project plan, purpose statement of, 209
project/desired_name, 858
projects
contributed, dealing with issues in, 135
lifecycle of, 205
project information, 857
promoting projects from sandbox, 861–864
sandbox projects, 856
status of projects, 856
further resources, 219
example for BeachHouse non-profit, 210–211
further resources, 219
coding standards, 862
licensing, 863
project description, 863
security, 863
prompting user, in Drush scripts, 623–624
property attribute, 659
prototypes, iterating rapidly, 222
pure PHP themes, 274
purpose statement, of project plan, 209
QA (Quality Assurance), 208, 217, 252, 256
Quality assurance stage, 9
queries
database, slow, 920
static, with joins on two tables, 445–447
static select, counting and grouping, 450
Query settings, 62
Quick attribute, 724
quicksketch.org/node/5739, 889
Quickstart appliance, starting development environments with, 228–229
randomName( ) method, 530
randyfay.com/node/76, 408
Rate module, 105
RDF (Resource Description Framework)
options for working with, 661–662
RDF_DEFAULT_BUNDLE, 660
rdf_mapping_delete( ) method, 661
rdf_mapping_load( ) method, 661
rdf_mapping_save( ) method, 661
rdf_process( ) method, 315
RDFa, semantic markup, 656–658
RDFa processing model, 657
readability, of custom utility methods, 470–471
README.txt file, 349, 595, 851
page and block level caching, 916–917
slow database queries, 920–921
Recent comments view, 57
recording, setting up for testing, 738
recruiting participants, 737
referencing, showing content that references post being viewed, 182–183
region theme, 927
vs. hard-coding variables in template files, 288
module-specific, 287
moving content between, 325
and themes, 288
Regions asset, 349
regions property, 280
region.tpl.php file, 295
registration, allowing with OpenID module, 15
regression, defined, 518
regular expressions
rejecting tasks, 217
relationships, 62
Relationships configuration, 83–84
releasing modules, project page and documentation, 741–743
patching existing modules, 514
remote commands, with Drush, 610–617
making local copy of remote Drupal site, 612–614
setting up SSH key pair, 611–612
using Drush site context to control sql-sync options, 616–617
using sql-sync without installing Drush on remote system, 615–616
remote Drupal site, local copy of, 612–614
render( ) method, 321, 327–329, 752, 782
Render API (Application Programming Interface), 321–326
elements
manipulating output of, 322–326
overview, 322
render arrays
in core templates, 326
overview, 321
render arrays
altering content inside, 325–326
in core templates, 326
overview, 321
render element, 439
rendering pages. See page rendering
Replacement markup filter, 787
replacement markup, tags and, 776–782
defining settings callback, 776
forms accepting multiple elements, 776–779
manipulating values before saving with validate method, 779–780
repository
resizeable library, 373
Resource content type, referencing chapters, 179–181
allowing people to attach generic files to content, 180
connecting content types with Node reference, 181
managing Resource content type display, 181
reusing chapter image field, 179–180
Resource Description Framework. See RDF
restore later feature, 263
'restrict access' => TRUE directive, 554
results
defining number of, 72
of usability tests, analyzing, 740
Review order, 582
Review patches, 876
reviews
of pages, for accessibility, 946
preparing projects for, 862–863
coding standards, 862
licensing, 863
project description, 863
security, 863
revision control, 263
Revision moderation module, 259
right-to-left (RTL), 343
risks, in projects, 212
Role Limits module, 106
<root of Definitive Guide to Drupal 7> tag, 176
root passwords, MySQL RDBMS, 972
router items
for page rendering, 928
rows
filter setting forms accepting two additional, 777–779
overriding styles for, 74
rsync command, 255
RTL (right-to-left), 343
Rules module
audience for, 723
concept model of, 722
reasons for testing, 735
sketching UI, 725
runtime fatal errors, 473
sachachua.com, 871
sample chapter, creating, 225
sandboxes
on Drupal.org, sharing code in, 541
projects, 856
promoting projects from, 861–864
branches and tags on Drupal.org, 861
preparing branches for applications, 862
preparing projects for review, 862–863
sandwich_drush_command method, 627
--sanitize option, 616
disabling during development, 637–638
memcached system, 638
CAP between ACID and BASE, 643–645
Varnish HTTP accelerator, 638
scheduling, participants, 738
Schneider, Jan, 622
'scope' => 'footer' setting, 357
scope rule, 358
scp command, 245
screencasts, Drupaltherapy, 226
screenshot property, 280
screenshot.png file, 281
scripting, with Drush, 617–626
arguments for, 618
drush_dispatch command, 619
drush_html_to_text command, 623
drush_invoke command, 619
drush_invoke_process command, 620
drush_invoke_process_args command, 620
drush_invoke_sitealias command, 620
drush_invoke_sitealias_args command, 620
drush_op_system command, 619
drush_print command, 622
drush_print_pipe command, 622
drush_print_table command, 622–623
drush_set_error comand, 626
drush_shell_exec command, 619
dt command, 622
options for, 618
processing command results, 620–621
scripts directory, 144
scripts property, 280
scripts[ ] = file.js, 355
search errors, modules for handling, 106–107
404 Navigation, 107
Apache Solr, 106
Global Redirect, 107
Search for box, 488
Search for text field, 486
administrative options, 700–701
Apache Solr project
integrating with server, 710–711
search results and facet blocks, 703
search results, 703
search.api.php file, 704
searches, Apache Solr project and, 710–711
Secure Shell (SSH) protocol, 858–859
choosing modules and themes, 129–132
assigning permissions, 127
avoiding using PHP filter module, 128
keeping text formats tight and secure, 127
reserving first user for administration, 126
security bugs, 131
--security-only flag, 605
--select flag, 603
-select option, 490
--select option, 624
select queries
counting and grouping, using variable_get( ) method and, 450
selectable library, 374
selecting sites, with Drush, 597–600
Selection settings, 121
data content, 654
decentralized dataspaces, 654
HTML, 656
information identification, 651–654
linking data on global scale, 655
RDF mappings structure, 661–665
options for working with, 661–662
Semantically-Interlinked Online Communities (SIOC) vocabulary, 662
servers
access setting, creating bookmarks with, 235–236
creating databases on and importing, 245–246
integrating Apache Solr project with, 710–711
managing data in Solr index, 710
searching and analysis, 710–711
transferring site to, 245
server-side tasks and tools, 239–241
circumventing one-click installers, 240–241
database setup
with wizards and manual tools, 240
session handling, initializing, 690
Set the status of bug report, 876
settings callback, 776
settings property, 280
settings.php file, 126, 141–142, 246–247, 597, 616, 648, 689, 921
setUp( ) method, 528
setup.exe, 230
Shortcut Icon setting, 277
shortcut list, customizing, 225
SHOW TABLES, 899
--show-invoke option, 632
--show-invoke output option, 632
--show-passwords option, 609, 615
Sidebar First region, 289, 300
sidebar_first region, 529–530, 929
similarity, law of, 717
Simple Knowledge Organization System (SKOS) vocabulary, 662
simplehtmldom.sourceforge.net, 772
Simpletest framework, functional testing with, 517–532
advantages and caveats, 518
running tests, 520–522, 526–527
submitting patches to Drupal.org, 531–532
TDD, 519
when to use, 518
--simulate option, 612
simulation, accessibility, 945
SIOC (Semantically-Interlinked Online Communities) vocabulary, 662
SIPP (Survey for Income and Program Participation), 942
site architecture, and visual design, 939
Site builder, 735
Site context, 608
site launch checklist, internal documentation, 226
site lists, for Drush, 609–610
site recipes, internal documentation, 226
site selection, with Drush, 597–600
example distribution, Drune, 805
full-featured services, 804
sitealias API, 620
site-alias command, 616
sites. See websites
sites directory, 140
sites folder, 94, 140, 597, 637
sites/all/libraries folder, 97
sites/all/modules directory, 491, 508, 523
sites/all/modules/contrib directory, 94, 386, 502
sites/all/modules/ctools directory, 51
sites/all/modules/custom directory, 94, 384, 386–387, 502, 906
sites/all/modules/mymodule/mymodule.info file, 526
sites/all/modules/mymodule/mymodule.module directory, 523
sites/all/modules/mymodule/mymodule.test directory, 519, 524
sites/all/modules/views directory, 51
sites/all/themes directory, 278
sites/all/themes/gamma/gamma.info, 356
sites/all/themes/gamma/js/gamma.js, 356
sites/all/themes/mytheme directory, 292
sites/default/default.settings.php file, 11, 973
sites/default/files directory, 11, 490
sites/default/files/coder_upgrade/new directory, 491
sites/default/files/coder_upgrade/old directory, 490
sites/default/modules/ directory, 386–387
sites/default/modules file, 493
sites/default/settings.php directory, 240, 637, 973
sites-enabled directory, 248
sites/example.com/modules/custom/ directory, 387
site-specific modules, using API, 792–794
sites/sitename/themes directory, 278
sitesvall/modules/custom, 386
site-upgrade command, 893
site-upgrade-modules, 904
sketching
Rules module UI, 725
Skip navigation, 941
skip-tables option, 615
SKOS (Simple Knowledge Organization System) vocabulary, 662
Slate color, 14
slider library, 375
Slogan setting, 276
small_square, 160
Smart Crop module, 99
Smith, Greg, 219
social networking, modules for, 104–106
Organic Groups, 105
Profile2, 106
Rate, 105
Role Limits, 106
Userpoints, 105
Voting API dependency, 105
sogame.cat/dummylipsum, 174
Solr project, Apache. See Apache Solr project
sort( ) method, 432
sortable library, 376
sortable tables, displaying data in, 456–460
sorts, combining with logical operators, 65–66
source .bash_profile file, 37
source command, 602
--source-dump option, 614
spaces
between control statements and parenthesis, 405
on either side of binary operators and concatenators, 406
indenting two, 405
between parameters, 405
Specific context, 608
sponsoring, 881
SQL (Structured Query Language), NULL values in, 642–643
SQL dumps, 263
sql-conf command, 615
sql-sync command
using Drush site context to control options, 616–617
using without installing Drush on remote system, 615–616
square_root( ) method, 517
SSH (Secure Shell) protocol, 858–859
SSH key pairs, setting up, 611–612
st( ) method, 808
staging server, 222
approach, 252
capturing all changes in code, 256–260
standards, coding, 862
starter themes, 350
static queries
counting and grouping, using variable_get( ) method and, 450
with joins on two tables, fetching data with, 445–447
stats.php, 648
Status field, Suggestion content type, 187–190
Status option, filter drop-down, 486
storage
of contributed modules, 94
store configuration, Drupal Commerce project, 566–585
Cart module, 583
Commerce module, 569
Customer module, 577
dynamic pricing, 570
enabling payment methods, 579–581
Payment module, 578
Product display node type, 575–577
Product Reference module, 575
summary of main components, 584–585
stress-testing designs, 730–733
Empty screen state, 731
Error screen state, 733
Flooded screen state, 732
Normal screen state, 731
string operator, 400
strlen($element['#value']), 781
Strongarm module, 258
Structured Query Language (SQL), NULL values in, 642–643
structure/features, 111
structure-tables option, 615
Style settings, 163
style-rtl.css file, 343
styles, overriding, 74
stylesheets
adding conditional for Internet Explorer, 345
adding via .info files, 343–344
for administration pages, conditionally including, 788–790
conditionally loading with drupal_add_css( ) method, 344
controlling using hook_css_alter( ) method, 345–348
stylesheets property, 280
stylesheets[all] = file.css, 355
stylesheets[TYPE][] directive, 440
styling, with CSS files, 440–442
Submit Again module, 495
submit button, changing label of, 505–506
submit method, 259
subsites, creating with Acquia Dev Desktop app, 988–989
substr( ) method, 398
substr_count( ) method, 781
subthemes, base themes and, 348–351
custom, 351
inheritance, 349
popular, 350
budgeting time, 842
using distributions, 843
using experienced developers, 843
using install profiles, 843
success log level, 625
sudo a2ensite dgd7 command, 248
sudo apt-get install git command, 39
Suggest and explore rather than confirm attribute, 722
Suggestion content type
Status field, limiting access to, 187–190
suggestions
hook
suggestions path, 768
suggestions/installing-drubuntu, 802
Summits, Drupal, 879
superuser accounts, setting up, 983
Survey for Income and Program Participation (SIPP), 942
sustainability
leveraging default CSS classes, 353–354
modules vs. themes, 354
overriding template files with purpose, 353
starting with good base theme, 351–352
sustainable choices, 842
SwitchTheme, 275
syntactic fatal errors, 472
Syslog module, 94
system names, finding
system_admin_config_page( ) method, 465
system_block_view( ) method, 395–397
system_element_info( ) method, 324, 331
system_init( ) method, 692
system_main, 926
system_modules( ) method, 384
system_rebuild_theme_data( ) method, 285, 415, 421
system_requirements( ) method, 919
system_schema( ) method, 453
system_settings_form( ) method, 465, 467
system_themes_page( ) method, 415
system.admin.css file, 342
system.base.css file, 342, 354
system.maintenance.css file, 342
system.menus.css file, 342
system.messages.css file, 342
system.theme.css file, 342
t( ) methods, 412–414, 424, 470–471, 474, 479, 529, 808
table of contents, making with Book module, 168–178
adding to main menu, 178
setting permissions for organizing and writing chapters, 170–171
using Menu Block module to display better, 176–177
Table option, 68
administrative, cloning and making using exposed filters, 80–81
formatting data for display as, 433–435
sortable, displaying data in, 456–460
tabs
defining with local task menu items, 425
tags
<?php opening, 404
branches and, on Drupal.org, 861
closing PHP, 404
and replacement markup form, 776–782
defining settings callback, 776
forms accepting multiple elements, 776–779
manipulating values before saving with validate method, 779–780
--tar option, 817
--target-dump option, 614
--target-structure-tables='users,user_roles' option, 620
task management systems, 213
circumventing one-click installers, 240–241
taxonomy system, 223
Taxonomy term view, 57
taxonomy terms, 223
taxonomy_help( ) method, 396
Tax/Tax UI, 568
t('Content summary'); 413
TDD (test-driven development), 519
teaser display, modifying, 166–167
<?php opening tag, 404
automating adherence, 406
checking permissions, 407
clearing caches, 407
closing PHP tag, 404
control statements starting new lines, 405
if, elseif, and else statements, 402–403
loops, 403
switch and case statements, 403
Drupal coding standards, 404–406
arithmetic, 400
string, 400
ternary, 401
PHP language, 398
preceding internal methods with underscore, 404–405
showing errors, 408
spaces
between control statements and parenthesis, 405
on either side of binary operators and concatenators, 406
indenting two, 405
between parameters, 405
common core templates, 295
overriding with purpose, 353
themes vs. hard-coding variables in, 288
manipulating form elements, 337–338
template_preprocess( ) method, 297, 314
template_preprocess_block( ) method, 297, 305
template_preprocess_book_navigation( ) method, 799
template_preprocess_field( ) method, 754
template_preprocess_html( ) method, 344–345
template_preprocess_node( ) method, 297, 305, 314–316, 476
template_preprocess_user_picture( ) method, 320
template_preprocess_username( ) method, 277
template_process( ) method, 315
template.php file, 318, 333, 356, 359, 476
templates
adding classes to wrappers, 318
book module, reusing to display non-book navigation, 798–801
common core, 295
core, render arrays in, 326
templates subdirectory, 751
ternary operator, 401
test environments, code, 539–541
sharing in sandbox on Drupal.org, 541
test plans, outline for, 735
test-driven development (TDD), 519
test.info file, 481
testing
automated, for accessibility, 944–945
choosing users to test, 735–736
explorative usability, 736–737
environment, 737
method, 736
scenario, 736
Rules module, reasons for, 735
setting up module, recording, and logging, 738
Testing module, 94
test.module, 481
text
adding format that allows images, 184–187
bi-directional support, 343
custom filters
adding custom markup for output, 795
container form elements with specified classes, 790–791
editing text formats, 794
examples, 773
hooks, 783
modules, 771–773, 776–788, 791–794
stylesheets for administration pages, 788–790
tags and replacement markup form, 776–782
editing formats, 794
editors
configuring preferences for, 238
setting FTP client to use, 238
keeping formats tight and secure, 127
text_long format, 559
Theme, defined, 213
theme( ) methods, theming forms with, 334–335
manipulating form elements in, 335
using drupal_render_children( ) method, 334
Theme Developer module, 312–313
Theme Developer window, 313
theme engines, 854
Theme Screenshot, 349
Theme Settings, 349
theme_block( ) method, 923
theme_contact_site_form( ) method, 334
theme_container( ) method, 324
THEME_container( ) method, 412
theme_container( ) method, 790
THEME_container__xray( ) method, 412
THEME_container__xray__form( ) method, 412
theme_form( ) method, 332
theme_form_element( ) method, 766
theme_get_suggestions( ) method, 306
'theme_hook_suggestions' array, 748
theme_html_tag( ) method, 324
theme_image_resize_filter_form( ) method, 782
theme_item_list( ) method, 324
theme_links( ) method, 277, 308
THEME_links( ) method, 309
THEME_links__comment( ) method, 309
THEME_links__contextual( ) method, 309
THEME_links__contextual__node( ) method, 309
THEME_links__node( ) method, 309
theme_links__system_main_menu( ) method, 309
theme_links__system_secondary_menu( ) method, 309
theme_menu_link( ) method, 278
theme_more_link( ) method, 303
theme_my_theme_hook( ) method, 302
theme_name_menu_link( ) method, 278
theme_name.info file, 278
theme_node( ) method, 305
theme_node__suggestion( ) method, 753
THEME_preprocess_page( ) method, 310
THEME_preprocess_page__front( ) method, 308
theme_table( ) method, 336, 437, 457
theme_that( ) method, 302
theme_this( ) method, 302
theme_user_admin_permissions( ) method, 433
theme_username( ) method, 277
theme_xray_permission_names( ) method, 435
theme_xray_show_callback, 475
theme_xray_show_page_callback( ) method, 439
themeable codes, documenting with @ingroup themeable method, 433–435
accessible, 944
security code reviews, 132
enabling and setting default, 274–275
implementations, 317
initializing, bootstrap phase, 691–692
regions and, 288
resources for, 436
enabling and setting default theme, 274–275
Global Theme Settings, 275–277
inheritance, 349
core themes directory, 269–274
Bartik theme, 270
Garland theme, 271
Seven theme, 272
defining metadata, .info files, 278–281
modifying using alter hooks, 339–340
calling, 302
hook suggestions
adding, removing, and replacing, 343–348
aggregation and compression, 341
patterns and naming conventions, 342–343
preprocess and process methods, 313–320
adding change picture link underneath user photo, 320
adding classes to template wrappers, 318
finding contents of $variables array, 317
making changes to nodes, 319–320
vs. hard-coding variables in template files, 288
module-specific, 287
and themes, 288
render( ), hide( ), and show( ) methods, 327–329
sustainability and best practices, 351–354
leveraging default CSS classes, 353–354
modules vs. themes, 354
overriding template files with purpose, 353
starting with good base theme, 351–352
common core templates, 295
theme layer, finding available variables in, 311–313
elements, 322
three-column layout, 285
tilting images, 184
time, budgeting of, 842
Timely attribute, 724
timer_start( ) method, 909
timestamp item, 621
timing, migration processes, 910
'title arguments' => array(1), 678
title code, 530
Token dependency, 96
Toolbar module, 93
toolbar.js file, 363
tools
circumventing one-click installers, 240–241
Total inclusive cost, 918
Total self cost, 918
.tpl.php suffix, 336
Tracker module, 94
Tracker view, 57
tracking milestones, 212
Trigger module, 94
Trimmed format, 167
t('Save blocks'); 529
twice-nested array, 246
Twitter accounts, linking to with field formatters, 757–766
caching data using default cache table, 765–766
tying components together, 513
type attribute, 808
type item, 621
Typical Slow Query Summary, 920
-u parameter, mysqldump command, 244
Ubuntu operating system, 971–975
customizing for development with Drubuntu script, 972
database, 974
running on Microsoft Windows or Apple Mac OS X, 971
ubuntu.com/download, 971
UIs (User Interfaces)
administrative, providing for entities, 555–559
keeping separate from API, 536–537
Rules module, sketching, 725
uncompressing, archives, 238–239
Under Construction icon, 212
underscores, preceding internal methods with, 404–405
Unformatted option, 68
Uniform Resource Locators. See URLs
Unit tests, 517
Universally Unique Identifiers (UUIDs), 260
--unlock=all option, 606
--unlock=module_name option, 606
update hooks
capturing additional upgrade steps in, 896–904
automating Fields upgrade, 902–903
Update manager module, 93
update path, 710
update_advanced module, 606
updatedb command, 605
update.php file, 126, 141, 252, 255, 259, 605, 887–888, 896, 903
updates
overview, 813
automated installer, 146
with Drush tool, 142
UPGRADE.txt file instructions, 140–142
upgrading
automatic, adding Features module to, 906–907
custom methods for, from glue code, 896–897
from Drupal 6 to Drupal 7, 887–911
assessing the situation, 889–891
capturing additional upgrade steps in update hooks, 896–904
running the upgrade repeatedly, 891–896
Fields upgrade, automating, 902–903
contributing patch files to Drupal.org, 498–499
custom coding, 488
list of API changes, 489
uploading files, with FTP clients, 237
URL - checkout/#, 583
URLs (Uniform Resource Locators)
human-readable, 19–20, 190–191
password-protected, 222
requests. See page requests, bootstrap phases
views allowing hackable for user pages, 801–802
environment, 737
method, 736
scenario, 736
participants
not asking for solutions, 739
putting at ease, 740
questioning, 739
waiting before offering assistance, 740
setting up module, recording, and logging, 738
use @alias command, 603
Use AJAX, 62
USE databasename, 898
Use grouping, 62
Use pager, 61
Use Slave Server, 63
user access, conditionally taking action based on, 468–469
user accounts, of authors, connecting Author profiles to, 155–156
bringing principles into practice, 720–746
analyzing results, 740
building alpha and verifying with users, 733–734
feedback from issue queues, 741
color harmony, 719
designing for, 940
human API, 713
laws
of similarity, 717
modularity, 713
User Groups, 738
user interface, hiding elements from, 507–508
User Interfaces. See UIs
user login box, Drupal site, 224
user object, 530
user pages, views allowing hackable URLs for, 801–802
User Pictures in Posts and Comments settings, 277
user stories, creating, 216–217
User Verification Status in Comments option, 277
user_access( ) method, 426, 468–469, 554–555
user_admin_settings( ) method, 465
user_menu( ) method, 464
user_picture theme hook, 293
user_roles table, 617
user/7/shortcuts user's Shortcuts tab, 13
user/86/edit, 15
user-perceived performance, 913
user-picture.tpl.php file, 293, 320
Userpoints module, 105
choosing which to test, 735–736
photos, adding change picture link underneath, 320
reserving first for administration, 126
users table, 617
usr/share/drush/commands folder, 609
utility methods, custom, 470–471
UUIDs (Universally Unique Identifiers), 260
validate method, manipulating values before saving with, 779–780
validating filter settings, 780–781
values, manipulating before saving with validate method, 779–780
var_dump( ) method, 311
var_export( ) method, 796
variable system, initializing, 689–690
variable_get( ) method, 450, 465, 467–469, 785
variable_set( ) method, 465, 467
variables
finding available in theme layer, 311–313
in template files, themes vs. hard-coding, 288
Varnish HTTP accelerator, 638
var/www directory, 245
var/www/dgd7 directory, 246
--verbose flag, 625
verbose messages, 522
--verbose option, 625
Version item, 359
Version option, filter drop-down, 486
version property, 280
version-specific dependencies, 390
vertical-tabs.css file, 346
very_slow_find( ) method, 636
vi /etc/apache2/sites-available/dgd7 command, 247
video podcast, MustardSeed Media, 226
view modes
using to display same content in different ways, 166
view pages, for biographies of authors, 162–164
Views
allowing hackable URLs for user pages, 801–802
default, 56
changing listed, 54
with contextual filters, 82
creating with Views module, 68–76
adding menus, 73
administrative information, 71
Advanced Settings box, 73
format settings, 72
goal of, 68
number of results, 72
previewing work, 73
title for, 71
viewing, 74
with exposed filters, 81
cloning and making administrative tables using exposed filters, 80–81
handling zero results, 76
with other modules, 84
using with Organic Groups module, 115–117
Action links, 54
Advanced Help module, 53
changing listed Views, 54
advanced implementations, 82–84
Relationships configuration, 83–84
Chaos Tools dependency, 95
adding menus, 73
administrative information, 71
Advanced Settings box, 73
format settings, 72
goal of, 68
number of results, 72
previewing work, 73
title for, 71
viewing, 74
overriding, 63
examples of usage, 50
cloning and making administrative tables using exposed filters, 80–81
handling zero results, 76
with other modules, 84
view.tpl.php file, 351
virtual host configuration file, Apache, 248
virtualbox.org, 971
choosing fonts wisely, 939
designing for entire user experience, 940
remembering purpose of design, 939
understanding site architecture, 939
with Drupal
advantages of working with Drupal, 933
designing from content out, 938–939
differences of, 934
and HTML5, 940
Visual Studio development environment, 948
Voting API dependency, 105
VS.Php happy screen, 959
WAI (Web Accessibility Initiative), 942
WAI-ARIA (Accessible Rich Internet Applications), 945
WAMP (Windows/Apache/MySQL/PHP) stack, 948–953
WampServer control panel, 951
WampServer default happy screen, 951
warning log level, 625
watchdog( ) method, 765
watchdog-show command, 623
WCAG (Web Content Accessibility Guidelines) 2.0, 942, 945
Web Accessibility Initiative (WAI), 942
Web Content Accessibility Guidelines (WCAG) 2.0, 942, 945
contrast and color, 944
expert feedback, 946
modules, 943
regular reviews of pages, 946
simulation, 945
themes, 944
WAI-ARIA, 945
Acquia Dev Desktop app
creating subsites with, 988–989
importing sites with, 990
adding Resource content type that references chapters, 179–181
allowing people to attach generic files to content, 180
connecting content types with Node reference, 181
managing Resource content type display, 181
reusing chapter image field, 179–180
adding text format that allows images, 184–187
inserting images into posts, 186–187
authors of
linking chapters to, 178
showcasing with profile pages, 149–157
autogenerating human-readable URLs with Pathauto module, 190–191
Chapter number field display, 754–757
community. See community web sites, creating with Organic Groups module
contextual add new links for content types, 767–771
adding custom markup for output, 795
container form elements with specified classes, 790–791
custom hooks, 783
editing text formats, 794
examples, 773
modules, 771–773, 776–788, 791–794
stylesheets for administration pages, 788–790
tags and replacement markup form, 776–782
custom theming templates, 751–754
essential modules for building, 94–98
AntiSpam and Mollom, 98
Token dependency, 96
Views, 95
Webform, 98
WYSIWYG, 97
fine-tuning content display, 164–167
modifying teaser display and setting trim length, 166–167
using view modes to display same content in different ways, 166
hosting locally, 230
extending methodality with modules, 15–16
users, roles, and permissions, 27–28
limiting access to Suggestion content type Status field, 187–190
linking to Drupal.org and Twitter accounts with field formatters, 757–766
caching data using default cache table, 765–766
making table of contents with Book module, 168–178
adding to main menu, 178
setting permissions for organizing and writing chapters, 170–171
using Menu Block module to display better, 176–177
next and previous links mimicking book navigation, 795–801
pointing visitors to your site, 247–248
transferring site to server, 245
assigning permissions, 127
avoiding using PHP filter module, 128
keeping text formats tight and secure, 127
reserving user 1 for administration, 126
showing content that references post being viewed, 182–183
staging and deployment, 251–261
approach, 252
capturing all changes in code, 256–260
streamlining form elements with CSS, 766
views to allow hackable URLs for user pages, 801–802
work in progress version, 222
Webform module, 98
weight, in drupal_add_js( ) method, 357–359
weight rule, 358
while ($expression) ... statement, 403
widgets, 152
Windows development environment, Microsoft. See Microsoft Windows development environment
Windows/Apache/MySQL/PHP (WAMP) stack, 948–953
mockups for detailed design, 733
stress-testing design, 730–733
Empty screen state, 731
Error screen state, 733
Flooded screen state, 732
Normal screen state, 731
wizards, setting up databases with, 240
Workbench suite of modules, 99
workflow, of websites, 252–253
wrappers, templates, 318
Writing Secure Code, 134
www.w3.org/TR/xhtml-rdfa-primer/, 658
WYSIWYG editors, 223
xdebug.profiler_enable_trigger=1, 918
X-ray module, declaring menu items for, 425–426
xray_admin_settings( ) method, 464–465
xray_block_view_system_help_alter( ) method, 397
xray_display_section_summaries, 465
xray_form_alter( ) method, 392–393, 399, 410, 469
xray_help( ) method, 395–396, 399
xray_help_admin_appearance( ) method, 416
xray_menu( ) method, 468
xray_module_implements_alter( ) method, 457
xray_overview_page( ) method, 449
xray_oxford_comma_list( ) method, 439, 449, 459, 471
xray_permission_names( ) method, 435
xray_permission_names_page( ) method, 432, 436
xray_show_page_callback( ) method, 475
xray_stats_blocks_enabled_by_theme( ) method, 447
xray_stats_content_type_total( ) method, 413, 450
xray.admin.inc, 465
--yes option, 624
YSlow grade, 915
zebra_help( ) method, 396
zero results, handling, 76
.zip formats, 953
18.220.88.62