Setting up the development environment
Making changes to and redeploying a plugin
Using FastDev for plugin development
Understanding the Plugin Framework
Working with the Plugins1 and Plugins2 versions
Modifying Atlassian bundled plugins
Converting plugins from v1 to v2
Adding web resources into plugins
Adding new webwork actions to JIRA
Extending a webwork action in JIRA
Capturing plugin installation/uninstallation events
Dealing with custom fields on an issue
Programming custom field options
Overriding validation of custom fields
Customizing the change log value
Migrating from one custom field type to another
Displaying custom fields on subtask columns
Adding custom fields to notification mails
Adding help text for a custom field
Removing the "none" option from a select field
Making the custom field project importable
Changing the size of a text area custom field
Writing a workflow post function
Making an issue editable/non-editable based on workflow status
Including/excluding resolutions for specific transitions
Permissions based on workflow status
Internationalization in workflow transitions
Obtaining available workflow actions programmatically
Programmatically progressing on workflows
Obtaining workflow history from the database
Reordering workflow actions in JIRA
Creating common transitions in workflows
Creating global transitions in workflows
Data validation in JIRA reports
Object-configurable parameters for reports
Invoking REST services from gadgets
Configuring user preferences in gadgets
Accessing gadgets outside of JIRA
Smart querying using quick search
Parsing JQL queries in plugins
Linking directly to search queries
Index and de-index programmatically
Managing filters programmatically
Creating an issue from a plugin
Conditions on issue operations
Time tracking and worklog management
Working with comments on issues
Discarding fields while cloning
JavaScript tricks on issue fields
Creating issues and comments from an e-mail
Changing the basic look and feel
Adding new web sections in the UI
Adding new web items in the UI
Adding conditions for web fragments
Creating new Velocity context for web fragments
Adding a new drop-down menu on the top navigation bar
Adding new tabs in the View Issue screen
Adding new tabs in the Browse Project screen
Creating the project tab panel using fragments
Adding new tabs in the Browse Version screen
Adding new tabs in the Browse Component screen
Extending a webwork action to add UI elements
Displaying dynamic notifications/warnings on issues
Re-ordering issue operations in the View Issue page
Re-ordering fields in the View Issue page
Writing a Java client for the REST API
Remote user and group management
Progressing an issue in a workflow
Exposing services and data entities as REST APIs
Deploying a SOAP service in JIRA
Deploying an XML-RPC service within JIRA
Dealing with the JIRA Database
Extending the JIRA database with a custom schema
Accessing database entities from plugins
Persisting plugin information in the JIRA database
Using Active Objects to store data
Accessing the JIRA configuration properties
Getting a database connection for JDBC calls
Migrating a custom field from one type to another
Retrieving issue information from a database
Retrieving custom field details from a database
Retrieving permissions on issues from a database
Retrieving workflow details from a database
Updating the issue status in a database
Retrieving users and groups from a database
Dealing with change history in a database
Adding configurable parameters to a service
Writing scheduled tasks in JIRA
Redirecting to a different page in webwork actions
Adding custom behavior for user details
Adding shared parameters to the servlet context
Writing a servlet context listener
Using filters to intercept queries in JIRA
Adding and importing components in JIRA
Adding new module types to JIRA
Overriding JIRA's default components in plugins
Internationalization in webwork plugins
Sharing common libraries across v2 plugins