= Example plugin from www.edgewall.com = == Description == A component that handles HTTP requests and extends the navigation bar. More information at [trac:TracDev/PluginDevelopment#Writingtheplugincode edgewall.com]. == Bugs/Feature Requests == N/A, example. == Download == Copy and paste [trac:TracDev/PluginDevelopment#Writingtheplugincode this]. = Installing = Authoritative instructions [trac:TracDev/PluginDevelopment#Packaginganddeployingplugins here], but reproduced below: trac:TracPlugins are packaged as [http://peak.telecommunity.com/DevCenter/PythonEggs Python Eggs]. You can use [http://peak.telecommunity.com/DevCenter/setuptools setuptools] to make a `setup.py` script that will produce a Python Egg for your plugin. The egg file needs to have a file named `trac_plugin.txt` in its `EGG-INFO` directory. This file should contain the names of all modules that need to be imported by Trac to register your components. ''Note that this will change in the very near future: setuptools 0.6 will introduce the concept of “entry points”, which will be used instead of the `trac_plugin.txt` descriptor.''. See trac:TracPlugins for details. A plugin can either be deployed globally, or only for a specific environment. Global deployment is done by installing the plugin: {{{ $ cd /path/to/pluginsource $ python setup.py install }}} To deploy a plugin only to a specific Trac environment, copy the egg file into the `plugins` directory of that environment: {{{ $ cd /path/to/pluginsource $ python setup.py bdist_egg $ cp dist/*.egg /path/to/projenv/plugins }}} During development of a plugin, it is inconvenient to have to install it in either of the ways described above. Instead, you should use the setuptools `develop` command: {{{ $ cd /path/to/pluginsource $ python setup.py develop --install-dir=/path/to/projenv/plugins }}} You can omit the `--install-dir` argument to make the development version of your plugin available globally. This will install an `.egg-link` file instead of the actual egg. That file is basically a link to the source directory of your plugin, so that Trac will always see the latest version of your code. A tutorial to build your own plugins is available here: EggCookingTutorial == Author/Contributors == '''Author:''' trac:TracTeam [[TagIt(example,unsupported,0.9,plugin)]]