Plugin Interfaces
(FogCreek.FogBugz.Plugins.Interfaces namespace)
Your plugin can implement any number of our powerful plugin interfaces, which allow your plugin to enhance the functionality, look, and feel of your Fogbugz site. The interfaces are organized into groups by functionality, described below. There is also a list of all interfaces.
Adding pages and links to FogBugz
-
Add Pages to FogBugz
- Create a new page, either wrapped in the FogBugz interface, raw HTML, or raw binary data. The latter two are useful for providing file downloads or other non-HTML content such as HTML AJAX responses.
- Create a configuration page for your plugin.
-
Custom Site-Wide Menus
- Add links to the Settings menu, the Extras menu, and the Admin menu.
Database
-
Add Custom Database Tables
- Add custom tables to the FogBugz database, and manage their schema and migrations when the plugin is upgraded.
See "Working with FogBugz Objects" below for explanations of how to set up special "Join" relationships with existing FogBugz tables to automatically load your data when an object is loaded.
See Generic Database Access for an explanation of how to query existing FogBugz tables via the Plugin API.
Working with FogBugz Entities
FogBugz provides three types of interfaces for working with FogBugz entities.
- Commit interfaces provide methods that are called when changes to an entity are committed to the database. These give plugins a way to know when a change has been made, and make their own changes to the object.
- Join interfaces allow plugins to set up a special "Join" relationship between a custom Plugin table and an existing FogBugz table that will cause plugin fields to be automatically loaded when an entity is loaded. These allow plugins to easily associate their own database columns with existing tables.
- Display interfaces allow plugins to add UI elements to the page when entities are listed, viewed, and edited.
See Access and Modify FogBugz Entities for general information on loading and editing FogBugz objects via the Plugin API
Supported Classes (* indicates no Display interface exposed)
- Cases (CBug, CBugEvent)
- Discussion Topics (CDiscussTopic)
- EBS Time Intervals* (CTimeInterval) and FixFors* (CFixFor)
- Filters (CFilter)
- Projects (CProject) and Areas* (CArea)
- Source Control* (CCvs)
- Users (CPerson)
- Wikis (CWiki) and Wiki Pages (CWikiPage)
* indicates no Display interfaces exposed
Filters and the Grid View
-
Customize Case List Filters
- Expose methods which allow plugins to add columns to the grid view, and add custom filtering criteria
Search
-
Enhance FogBugz Search
- Extend the search query syntax to include new fields (axes), and/or add new data to the full-text indexer
Serve static files
-
Include Javascript, CSS, and Other Files
- CSS and Javascript for use in page display, or a simple file download (useful for images you need for your interface)
Handling requests
-
Request Cleanup
- Perform actions at the end of each FogBugz request
Maintenance (asynchronous tasks)
-
Periodic Site Maintenance
-
For long-running tasks or periodic maintenance that don't need to slow down a user's request:
- Heartbeat tasks run during the day (typically every few seconds)
- Daily tasks run overnight
-
For long-running tasks or periodic maintenance that don't need to slow down a user's request: