James Moger
2014-04-21 856f3fc2a8365c141d1418d3cfff502be233c104
src/site/plugins_extensions.mkd
@@ -19,6 +19,7 @@
import com.gitblit.manager.IFederationManager;
import com.gitblit.manager.IPluginManager;
import com.gitblit.manager.IGitblit;
import ro.fortsoft.pf4j.Version;
public class ExamplePlugin extends GitblitPlugin {
@@ -33,6 +34,22 @@
        IFederationManager federation = GitblitContext.getManager(IFederationManager.class);
        IPluginManager plugins = GitblitContext.getManager(IPluginManager.class);
        IGitblit gitblit = GitblitContext.getManager(IGitblit.class);
    }
    @Override
    public void stop() {
    }
    @Override
    public void onInstall() {
    }
    @Override
    public void onUpgrade(Version oldVersion) {
    }
    @Override
    public void onUninstall() {
    }
}
```
@@ -58,14 +75,14 @@
public class MyDispatcher extends DispatchCommand {
    @Override
    protected void setup(UserModel user) {
    protected void setup() {
        // commands in this dispatcher
        register(user, CommandA.class);
        register(user, CommandB.class);
        register(CommandA.class);
        register(CommandB.class);
        // nested dispatchers
        register(user, SubDispatcher1.class);
        register(user, SubDispatcher2.class);
        register(SubDispatcher1.class);
        register(SubDispatcher2.class);
    }
    @CommandMetaData(name = "commanda", aliases = { "ca" }, description = "description of command a")
@@ -168,3 +185,49 @@
}
```
### Request Filter
*SINCE 1.6.0*
You can provide your own custom request filter by subclassing the *HttpRequestFilter* class.
```java
import com.gitblit.extensions.HttpRequestFilter;
import ro.fortsoft.pf4j.Extension;
@Extension
public class MyRequestFilter extends HttpRequestFilter {
    @Override
    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {
    }
}
```
### Admin Menu Items
*SINCE 1.6.0*
You can provide your own admin menu items by subclassing the *AdminMenuExtension* class.
```java
import java.util.Arrays;
import java.util.List;
import ro.fortsoft.pf4j.Extension;
import com.gitblit.extensions.AdminMenuExtension;
import com.gitblit.models.Menu.ExternalLinkMenuItem;
import com.gitblit.models.Menu.MenuItem;
import com.gitblit.models.UserModel;
@Extension
public class MyAdminMenuContributor extends AdminMenuExtension {
    @Override
    public List<MenuItem> getMenuItems(UserModel user) {
        return Arrays.asList((MenuItem) new ExternalLinkMenuItem("Github", String.format("https://github.com/%s", user.username));
    }
}
```