site_name: Developer Guide
repo_url: https://github.com/civicrm/civicrm-dev-docs
site_description: A guide for CiviCRM developers.
site_author: The CiviCRM community
theme: material

pages:
- Home: index.md
- Basics:
  - Developer Community: basics/community.md
  - Useful Skills: basics/skills.md
  - Planning Your Project: basics/planning.md
  - File System: basics/filesystem.md
- Development tools:
  - Development tools: tools/index.md
  - Buildkit: tools/buildkit.md
  - civibuild: tools/civibuild.md
  - cividist: tools/cividist.md
  - civilint: tools/civilint.md
  - GitHub: tools/github.md
  - PhpStorm: tools/phpstorm.md
  - Debugging: tools/debugging.md
- Core Development:
  - When to Edit Core: core/hacking.md
  - How to Contribute: core/contributing.md
  - Reviewing PR's: core/pr-review.md
  - Codebase & Architecture: core/architecture.md
  # Reporting Bugs & Issues: /core/reporting.md
  # Submitting a Patch: /core/patches.md
  # Verifying a Bug Fix: /core/verifying.md
- Extensions Development:
  - Basics: extensions/index.md
  - civix: extensions/civix.md
  # Creating Pages: extensions/create-page.md
  # Storing Configuration: extensions/config.md
  # Storing Data: extensions/storing-data.md
  # Setting Permissions: extensions/permissions.md
  # Adding API Functions: extensions/api.md
  # Reports: extensions/reports.md
  # Searches: extensions/searches.md
  # Payment Processors: extensions/payment-processors.md
  - Publishing Extensions: extensions/publish.md
  - Extension Lifecycle: extensions/lifecycle.md
  - Troubleshooting: extensions/troubleshooting.md
  - Advanced patterns: extensions/advanced.md
- Testing:
  - Testing Setup: testing/setup.md
  - "PHPUnit Tests": testing/phpunit.md
  - "Javascript Tests": testing/javascript.md
  - "Selinium Tests": testing/selinium.md
  - "Continuous Integration": testing/continuous-integration.md
  - "Upgrade Tests": testing/upgrades.md
- Framework Reference:
  - AngularJS:
    - "AngularJS: Intro": framework/angular/index.md
    - "AngularJS: Quick Start": framework/angular/quickstart.md
    - "AngularJS: File Names": framework/angular/files.md
    - "AngularJS: Loader": framework/angular/loader.md
    - "AngularJS: Changesets":  framework/angular/changeset.md
  - Asset Builder: framework/asset-builder.md
  # Bootstrap: /framework/bootstrap.md
  # Cache: /framework/cache.md
  # Components: /framework/components.md
  # Database: /framework/database.md
  - Schema definition: framework/schema-definition.md
  # Resources: /framework/resources.md
  # Upgrade: /framework/upgrade.md
  #### Code Standards:
  # PHP: /standards/php.md
  # Javascript: /standards/js.md
  # API: /standards/api.md
  # Git: /standards/git.md
  # Other Reference:
  # CiviMail: /reference/civimail.md
  # CiviReport: /reference/civireport.md
  # Payment Processing: /reference/payment.md
- API:
  - APIv3 Intro: api/index.md
  - APIv3 Usage: api/usage.md
  - APIv3 Actions: api/actions.md
  - APIv3 Parameters: api/params.md
  # APIv3 Permissions: api/permissions.md
  - APIv3 Joins: api/joins.md
  - APIv3 Chaining: api/chaining.md
  # APIv3 Changes: api/changes.md
- Hooks:
  - Using hooks: hooks/index.md
  - All hooks: hooks/list.md
  - Setup:
    - Hooks with Symfony: hooks/setup/symfony.md
    - Hooks with Joomla: hooks/setup/joomla.md
    - Hooks with Drupal: hooks/setup/drupal.md
    - Hooks with Wordpress: hooks/setup/wordpress.md
  - Batch hooks:
    - hook_civicrm_batchItems: hooks/hook_civicrm_batchItems.md
    - hook_civicrm_batchQuery: hooks/hook_civicrm_batchQuery.md
  - Case hooks:
    - hook_civicrm_caseChange: hooks/hook_civicrm_caseChange.md
    - hook_civicrm_caseTypes: hooks/hook_civicrm_caseTypes.md
    - hook_civicrm_post_case_merge: hooks/hook_civicrm_post_case_merge.md
    - hook_civicrm_pre_case_merge: hooks/hook_civicrm_pre_case_merge.md
  - Database hooks:
    - hook_civicrm_copy: hooks/hook_civicrm_copy.md
    - hook_civicrm_custom: hooks/hook_civicrm_custom.md
    - hook_civicrm_managed: hooks/hook_civicrm_managed.md
    - hook_civicrm_merge: hooks/hook_civicrm_merge.md
    - hook_civicrm_post: hooks/hook_civicrm_post.md
    - hook_civicrm_postSave_table_name: hooks/hook_civicrm_postSave_table_name.md
    - hook_civicrm_pre: hooks/hook_civicrm_pre.md
    - hook_civicrm_trigger_info: hooks/hook_civicrm_trigger_info.md
    - hook_civicrm_referenceCounts: hooks/hook_civicrm_referenceCounts.md
  - Entity hooks:
    - hook_civicrm_entityTypes: hooks/hook_civicrm_entityTypes.md
  - Extension lifecycle hooks:
    - hook_civicrm_disable: hooks/hook_civicrm_disable.md
    - hook_civicrm_enable: hooks/hook_civicrm_enable.md
    - hook_civicrm_install: hooks/hook_civicrm_install.md
    - hook_civicrm_postInstall: hooks/hook_civicrm_postInstall.md
    - hook_civicrm_uninstall: hooks/hook_civicrm_uninstall.md
    - hook_civicrm_upgrade: hooks/hook_civicrm_upgrade.md
  - Form hooks:
    - hook_civicrm_alterContent: hooks/hook_civicrm_alterContent.md
    - hook_civicrm_alterTemplateFile: hooks/hook_civicrm_alterTemplateFile.md
    - hook_civicrm_buildForm: hooks/hook_civicrm_buildForm.md
    - hook_civicrm_idsException: hooks/hook_civicrm_idsException.md
    - hook_civicrm_postProcess: hooks/hook_civicrm_postProcess.md
    - hook_civicrm_preProcess: hooks/hook_civicrm_preProcess.md
    - hook_civicrm_validateForm: hooks/hook_civicrm_validateForm.md
  - GUI hooks:
    - hook_civicrm_alterMenu: hooks/hook_civicrm_alterMenu.md
    - hook_civicrm_buildAmount: hooks/hook_civicrm_buildAmount.md
    - hook_civicrm_caseSummary: hooks/hook_civicrm_caseSummary.md
    - hook_civicrm_contact_get_displayname: hooks/hook_civicrm_contact_get_displayname.md
    - <del>hook_civicrm_customFieldOptions</del>: hooks/hook_civicrm_customFieldOptions.md
    - hook_civicrm_dashboard: hooks/hook_civicrm_dashboard.md
    - hook_civicrm_dashboard_defaults: hooks/hook_civicrm_dashboard_defaults.md
    - hook_civicrm_fieldOptions: hooks/hook_civicrm_fieldOptions.md
    - hook_civicrm_links: hooks/hook_civicrm_links.md
    - hook_civicrm_navigationMenu: hooks/hook_civicrm_navigationMenu.md
    - hook_civicrm_pageRun: hooks/hook_civicrm_pageRun.md
    - hook_civicrm_searchColumns: hooks/hook_civicrm_searchColumns.md
    - hook_civicrm_searchTasks: hooks/hook_civicrm_searchTasks.md
    - hook_civicrm_summary: hooks/hook_civicrm_summary.md
    - hook_civicrm_summaryActions: hooks/hook_civicrm_summaryActions.md
    - <del>hook_civicrm_tabs</del>: hooks/hook_civicrm_tabs.md
    - hook_civicrm_tabset: hooks/hook_civicrm_tabset.md
    - hook_civicrm_xmlMenu: hooks/hook_civicrm_xmlMenu.md
  - Mail hooks:
    - hook_civicrm_alterMailContent: hooks/hook_civicrm_alterMailContent.md
    - hook_civicrm_alterMailer: hooks/hook_civicrm_alterMailer.md
    - hook_civicrm_alterMailParams: hooks/hook_civicrm_alterMailParams.md
    - hook_civicrm_emailProcessor: hooks/hook_civicrm_emailProcessor.md
    - hook_civicrm_emailProcessorContact: hooks/hook_civicrm_emailProcessorContact.md
    - hook_civicrm_mailingGroups: hooks/hook_civicrm_mailingGroups.md
    - hook_civicrm_postEmailSend: hooks/hook_civicrm_postEmailSend.md
    - hook_civicrm_postMailing: hooks/hook_civicrm_postMailing.md
    - hook_civicrm_unsubscribeGroups: hooks/hook_civicrm_unsubscribeGroups.md
  - Permission hooks:
    - hook_civicrm_aclGroup: hooks/hook_civicrm_aclGroup.md
    - hook_civicrm_aclWhereClause: hooks/hook_civicrm_aclWhereClause.md
    - hook_civicrm_alterAPIPermissions: hooks/hook_civicrm_alterAPIPermissions.md
    - hook_civicrm_permission: hooks/hook_civicrm_permission.md
    - hook_civicrm_permission_check: hooks/hook_civicrm_permission_check.md
    - hook_civicrm_selectWhereClause: hooks/hook_civicrm_selectWhereClause.md
  - Profile hooks:
    - hook_civicrm_buildProfile: hooks/hook_civicrm_buildProfile.md
    - hook_civicrm_buildUFGroupsForModule: hooks/hook_civicrm_buildUFGroupsForModule.md
    - hook_civicrm_processProfile: hooks/hook_civicrm_processProfile.md
    - hook_civicrm_searchProfile: hooks/hook_civicrm_searchProfile.md
    - hook_civicrm_validateProfile: hooks/hook_civicrm_validateProfile.md
    - hook_civicrm_viewProfile: hooks/hook_civicrm_viewProfile.md
  - Report hooks:
    - hook_civicrm_alterReportVar: hooks/hook_civicrm_alterReportVar.md
  - SMS hooks:
    - hook_civicrm_inboundSMS: hooks/hook_civicrm_inboundSMS.md
  - Uncategorized hooks:
    - hook_civicrm_alterBadge: hooks/hook_civicrm_alterBadge.md
    - hook_civicrm_alterBarcode: hooks/hook_civicrm_alterBarcode.md
    - hook_civicrm_alterCalculatedMembershipStatus: hooks/hook_civicrm_alterCalculatedMembershipStatus.md
    - hook_civicrm_alterLogTables: hooks/hook_civicrm_alterLogTables.md
    - hook_civicrm_alterMailingLabelParams: hooks/hook_civicrm_alterMailingLabelParams.md
    - hook_civicrm_alterPaymentProcessorParams: hooks/hook_civicrm_alterPaymentProcessorParams.md
    - hook_civicrm_alterSettingsFolders: hooks/hook_civicrm_alterSettingsFolders.md
    - hook_civicrm_alterSettingsMetaData: hooks/hook_civicrm_alterSettingsMetaData.md
    - hook_civicrm_angularModules: hooks/hook_civicrm_angularModules.md
    - hook_civicrm_apiWrappers: hooks/hook_civicrm_apiWrappers.md
    - hook_civicrm_buildAsset: hooks/hook_civicrm_buildAsset.md
    - hook_civicrm_buildStateProvinceForCountry: hooks/hook_civicrm_buildStateProvinceForCountry.md
    - hook_civicrm_check: hooks/hook_civicrm_check.md
    - hook_civicrm_config: hooks/hook_civicrm_config.md
    - <del>hook_civicrm_contactListQuery</del>: hooks/hook_civicrm_contactListQuery.md
    - hook_civicrm_container: hooks/hook_civicrm_container.md
    - hook_civicrm_coreResourceList: hooks/hook_civicrm_coreResourceList.md
    - hook_civicrm_cron: hooks/hook_civicrm_cron.md
    - hook_civicrm_crudLink: hooks/hook_civicrm_crudLink.md
    - hook_civicrm_dupeQuery: hooks/hook_civicrm_dupeQuery.md
    - hook_civicrm_eventDiscount: hooks/hook_civicrm_eventDiscount.md
    - hook_civicrm_export: hooks/hook_civicrm_export.md
    - hook_civicrm_fileSearches: hooks/hook_civicrm_fileSearches.md
    - hook_civicrm_geocoderFormat: hooks/hook_civicrm_geocoderFormat.md
    - hook_civicrm_import: hooks/hook_civicrm_import.md
    - hook_civicrm_membershipTypeValues: hooks/hook_civicrm_membershipTypeValues.md
    - hook_civicrm_notePrivacy: hooks/hook_civicrm_notePrivacy.md
    - <del>hook_civicrm_optionValues</del>: hooks/hook_civicrm_optionValues.md
    - hook_civicrm_queryObjects: hooks/hook_civicrm_queryObjects.md
    - hook_civicrm_recent: hooks/hook_civicrm_recent.md
    - hook_civicrm_tokens: hooks/hook_civicrm_tokens.md
    - hook_civicrm_tokenValues: hooks/hook_civicrm_tokenValues.md
    - hook_civicrm_unhandledException: hooks/hook_civicrm_unhandledException.md
- Documentation:
  - Writing Documentation: documentation/index.md
  - Documenting Extensions: documentation/extensions.md
  - Markdown: documentation/markdown.md
  - Style Guide: documentation/style-guide.md
- Content to reorganize:
  - Extensions files: extensions/files.md
  - Requirements: requirements.md
  - Develop: develop.md


markdown_extensions:
  - attr_list
  - admonition
  - def_list
  - toc:
      permalink: true
  - pymdownx.highlight:
      guess_lang: true
      extend_pygments_lang:
        - name: php
          lang: php
          options:
            startinline: true
  - pymdownx.superfences:
      css_class: codehilite
  - pymdownx.inlinehilite:
      css_class: codehilite
  - pymdownx.tilde
  - pymdownx.betterem
  - pymdownx.mark
