Jump to >

TemplateHook

djblets.extensions.hooks.TemplateHook is one of the most versatile hooks, allowing you to inject your own HTML into templates at various points.

Template hooks have three parameters:

  • name: The name of the template hook point to inject into.
  • template_name: The filename of the template to render. This should refer to template files in your extensions templates directory.
  • apply_to: An optional list of URL names to limit this hook to. This is useful when using a generic template hook point, but when you only want to inject onto a specific page. If this is not provided, the template will be rendered for all pages with the given hook point name.

Template Hook Names

All Pages

base-extrahead
Inside the <head> tag for the page. This is generally used for <meta> tags.
base-css

Right after all Review Board CSS has loaded. This is generally used for <link> or <style> tags.

If referencing extension-provided files, it’s better to use static bundles instead.

base-scripts

Toward the top of the page, after initial JavaScript files and before any page content. This is generally used for <script> tags. Note that scripts loaded here will delay rendering of the page.

If referencing extension-provided files, it’s better to use static bundles instead. For everything else, we recommend creating a JavaScript extension.

base-scripts-post

Toward the end of the page, after all Review Board JavaScript. This is generally used for <script> tags.

If referencing extension-provided files, it’s better to use static bundles instead. For everything else, we recommend creating a JavaScript extension.

base-before-nav
Toward the top of the page before the navigation bar (#navbar-container) and after the header bar (#headerbar).
base-after-nav
Toward the top of the page after the navigation bar (#navbar-container).
base-before-content
Right before the page content (at the beginning of #content).
base-after-content
Right after the page content (at the end of #content).

Login Page

before-login-form
Right before the login form. Useful for displaying login instructions.
after-login-form
Right after the login form. Useful for providing contact information in case of login issues.

E-mails

review-email-html-summary
Displayed right before the header text for reviews in HTML e-mails, and below any “Ship It!” text.
review-email-text-summary
Displayed right before the header text for reviews in plain text e-mails, and below any “Ship It!” text.

Registration Page

before-register-form
Displayed right before the new account registration form. Useful for displaying login instructions.
after-register-form
Displayed right after the new account registration form. Useful for providing contact information in case of login issues.

Review Request Pages

before-review-request-summary
The very top of the review request box, right before the summary information (containing the Summary field, review request ID, and created/updated/closed information). Content here will not be aligned with the summary information.
after-review-request-summary
The area right below the review request box’s summary information. Content here will not be aligned with the summary information.
review-request-summary-pre
The area at the top of the element for the review request box’s summary information. Content here will be properly padding and aligned with the summary information.
review-request-summary-post
The area at the bottom of the element for the review request box’s summary information. Content here will be properly padding and aligned with the summary information.
before-review-request-fields
Right after the summary (and the field validation warning, if shown), and right before the fields in the review request box.
after-review-request-fields
Right after the fields in the review request box, and before the extra panes shown (file attachments, issue summary table, etc.).
before-review-request-extra-panes

Right after the fields in the review request box, and before the extra panes shown (file attachments, issue summary table, etc.).

This is basically equivalent to after-review-request-fields, but is preferable if you’re explicitly trying to target the area right before the panes. This may impact placement or rendering in the future.

after-review-request-extra-panes
Right after any extra panes shown in the review request box, as the last content at the bottom of the box.
review-request-extra-panes-pre
The very top of the element containing extra panes in the review request box.
review-request-extra-panes-post
The very bottom of the element containing extra panes in the review request box.
change-summary-header-pre
Right before the box’s header text for “Review Request Changed” entries.
change-summary-header-post
Right after the box’s header text for “Review Request Changed” entries, before the change description or fields.
review-summary-header-pre
Right before the box’s header text for reviews.
review-summary-header-post
Right after the box’s header text for reviews, before any comments.

Additional template hook points are trivially added. If these are insufficient for your needs, please get in touch with the Review Board developer community.

Example

from reviewboard.extensions.base import Extension
from reviewboard.extensions.hooks import TemplateHook


class SampleExtension(Extension):
    def initialize(self):
        TemplateHook(self,
                     name='base-after-nav',
                     template_name='myextension/after-nav.html',
                     apply_to=['view-diff', 'view-diff-revision'])

        TemplateHook(self,
                     name='before-register-form',
                     template_name='myextension/registeration-info.html')