This page does not refer to the most recent version of the SCM-Manager. Go to the latest version of this page.

Extension Points

The following extension points are provided for the frontend:

admin.navigation

admin.route

admin.setting

changeset.description.tokens

  • Can be used to replace parts of a changeset description with components
  • Has to be bound with a funktion taking the changeset and the (partial) description and returning Replacement objects with the following attributes:
    • textToReplace: The text part of the description that should be replaced by a component
    • replacement: The component to take instead of the text to replace
    • replaceAll: Optional boolean; if set to true, all occurances of the text will be replaced (default: false)

changeset.right

changesets.author.suffix

group.navigation

group.route

group.setting

main.route

  • Add a new Route to the main Route (scm/)
  • Props: authenticated?: boolean, links: Links

plugins.plugin-avatar

primary-navigation

primary-navigation.first-menu

  • A placeholder for the first navigation menu.
  • A PrimaryNavigationLink Component can be used here
  • Actually this Extension Point is used from the Activity Plugin to display the activities at the first Main Navigation menu.

primary-navigation.logout

profile.route

profile.setting

repo-config.route

repo-config.details

repos.branch-details.information

repos.content.metadata

  • Location: At meta data view for file
  • can be used to render additional meta data line
  • Props: file: string, repository: Repository, revision: string

repos.create.namespace

repos.sources.content.actionbar

repository.navigation

repository.navigation.topLevel

repositoryRole.role-details.information

repository.setting

repos.repository-avatar

repos.repository-avatar.primary

  • Location: At each repository in repository overview
  • can be used to add avatar for each repository (e.g., to mark repository type)

repos.repository-details.information

  • Location: At bottom of a single repository view
  • can be used to show detailed information about the repository (how to clone, e.g.)

repos.sources.view

roles.route

user.route

user.setting

markdown-renderer.code.{language}

  • Dynamic extension point for custom language-specific renderers
  • Overrides the default Syntax Highlighter
  • Used by the Markdown Plantuml Plugin

markdown-renderer.link.protocol

  • Define custom protocols and their renderers for links in markdown

Example:

[description](myprotocol:somelink)
binder.bind("markdown-renderer.link.protocol", { protocol: "myprotocol", renderer: MyProtocolRenderer })

Deprecated

changeset.description

  • can be used to replace the whole description of a changeset

Deprecated: Use changeset.description.tokens instead

changeset.avatar-factory

  • Location: At every changeset (detailed view as well as changeset overview)
  • can be used to add avatar (such as gravatar) for each changeset
  • expects a function: (Changeset) => void

repos.sources.view

  • Location: At sources viewer
  • can be used to render a special source that is not an image or a source code

main.redirect

  • Extension Point for a link factory that provide the Redirect Link
  • Actually used from the activity plugin: binder.bind("main.redirect", () => "/activity");

markdown-renderer-factory

  • A Factory function to create markdown renderer
  • The factory function will be called with a renderContext parameter of type Object. this parameter is given as a prop for the MarkdownView component.

example:

let MarkdownFactory = (renderContext) => {
 
  let Heading= (props) => {
    return React.createElement(`h${props.level}`,
      props['data-sourcepos'] ? {'data-sourcepos': props['data-sourcepos']} : {},
      props.children);
  };
    return {heading : Heading};
};

binder.bind("markdown-renderer-factory", MarkdownFactory);
<MarkdownView
    renderContext={{pullRequest, repository}}
    className="content"
    content={pullRequest.description}
/>