| Gerrit2 - Site Customization |
| ============================ |
| |
| Gerrit2 supports some customization of the HTML it sends to |
| the browser, allowing organizations to alter the look and |
| feel of the application to fit with their general scheme. |
| |
| HTML Header/Footer |
| ------------------ |
| |
| At startup Gerrit reads the following files (if they exist) and |
| uses them to customize the HTML page it sends to clients: |
| |
| * `$site_path/GerritSiteHeader.html` |
| + |
| HTML is inserted below the menu bar, but above any page content. |
| This is a good location for an organizational logo, or links to |
| other systems like bug tracking. |
| |
| * `$site_path/GerritSiteFooter.html` |
| + |
| HTML is inserted at the bottom of the page, below all other content, |
| but just above the footer rule and the "Powered by Gerrit Code |
| Review (v....)" message shown at the extreme bottom. |
| |
| * `$site_path/GerritSite.css` |
| + |
| The CSS rules are inlined into the top of the HTML page, inside |
| of a `<style>` tag. These rules can be used to support styling |
| the elements within either the header or the footer. |
| |
| If any of these files are created, deleted or modified you need to |
| restart the web application to make the changes take effect. |
| |
| The *.html files must be valid XHTML, with one root element, |
| typically a single `<div>` tag. The server parses it as XML, and |
| then inserts the root element into the host page. If a file has |
| more than one root level element, Gerrit will not start. |
| |
| Static Images |
| ------------- |
| |
| Static image files can also be served from `$site_path/static`, |
| and may be referenced in `GerritSite{Header,Footer}.html` |
| or `GerritSite.css` by the relative URL `static/$name` |
| (e.g. `static/logo.png`). |
| |
| To simplify security management, only files are served from |
| `$site_path/static`. Subdirectories are explicitly forbidden from |
| being served from this location by enforcing the rule that file names |
| cannot contain `/` or `\`. (Client requests for `static/foo/bar` |
| will result in 404 Not Found responses.) |
| |
| HTTP Caching |
| ------------ |
| |
| Assets under `$site_path` are always served with a 5 minute expire, |
| permitting some (limited) caching. It may take up to 5 minutes |
| after Gerrit restart before clients see the changes. |
| |
| Google Analytics Integration |
| ---------------------------- |
| |
| To connect Gerrit to Google Analytics add the following to your |
| `GerritSiteFooter.html`: |
| |
| ==== |
| <div> |
| <!-- standard analytics code --> |
| <script type="text/javascript"> |
| var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); |
| document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E")); |
| </script> |
| <script type="text/javascript"> |
| var pageTracker = _gat._getTracker("UA-nnnnnnn-n"); |
| pageTracker._trackPageview(); |
| </script> |
| <!-- /standard analytics code --> |
| |
| <script type="text/javascript"> |
| window.onload = function() { |
| gerrit_addHistoryHook(function (s) { |
| pageTracker._trackPageview(s.replace(/#/, '/')) |
| }); |
| }; |
| </script> |
| </div> |
| ==== |
| |
| Please consult the Google Analytics documentation for the correct |
| setup code (the first two script tags). The above is shown only |
| as a reference example. |
| |
| If your footer is otherwise empty, ensure you wrap all of the script |
| tags in a single `<div>` tag to ensure it is a well-formed XHTML |
| document file. |
| |
| The global function `gerrit_addHistoryHook` accepts functions that |
| accept a string parameter. These functions are put into a list and |
| invoked any time Gerrit shifts URLs. You'll see page names like |
| `/Gerrit#change,123` be passed to these functions, which in turn |
| are handed off to Google Analytics for tracking. Our example hook |
| above replaces '#' with '/' because Analytics won't track anchors. |
| |
| The `window.onload` callback is necessary to ensure that the |
| `gerrit_addHistoryHook` function has actually been defined by the |
| page. Because GWT loads the module asynchronously any `<script>` |
| block in the header or footer will execute before Gerrit has defined |
| the function and is ready to register the hook callback. |
| |