public GitBlitTopMenu()

in src/main/java/com/googlesource/gerrit/plugins/gitblit/GitBlitTopMenu.java [43:89]


  public GitBlitTopMenu(
      @PluginName String pluginName,
      @PluginCanonicalWebUrl String pluginUrl,
      Provider<CurrentUser> userProvider,
      PluginConfigFactory cfgProvider) {
    this.userProvider = userProvider;

    String gitBlitBaseUrl = pluginUrl;
    PluginConfig cfg = cfgProvider.getFromGerritConfig(pluginName, true);
    // We don't have to worry about XSS here; the way these menu item get
    // created through GWT ensures that these values read from the config
    // end up as text nodes in the DOM, even if they contain potentially
    // malicious code. So if somebody sets these values to some HTML snippet,
    // he'll simply end up with a funny looking menu item, but he can't inject
    // things here.
    MenuItem repositories =
        new MenuItem(
            cfg.getString("repositories", "Repositories"), gitBlitBaseUrl + "repositories/", "");
    // GitBlit handles its own "/" url, so Gerrit won't produce any link, not even on the "plugins"
    // page, that would display the documentation.
    // I've considered simply redirecting "/" to "/Documentation/" since GitBlit's "/" screen is
    // very similar to its "/activity/" screen, but
    // decided finally to provide an explicit documentation submenu instead.
    MenuItem documentation =
        new MenuItem(
            cfg.getString("documentation", "Documentation"), gitBlitBaseUrl + "Documentation/", "");
    restrictedMenuEntries =
        new MenuEntry(GITBLIT_TOPMENU_NAME, Arrays.asList(repositories, documentation));
    List<MenuItem> fullMenuItems = Lists.newArrayList();
    fullMenuItems.add(repositories);
    fullMenuItems.add(
        new MenuItem(cfg.getString("activity", "Activity"), gitBlitBaseUrl + "activity/", ""));
    String search = cfg.getString("search");
    if (search != null && !search.isEmpty()) {
      fullMenuItems.add(new MenuItem(search, gitBlitBaseUrl + "lucene/", ""));
    }
    fullMenuItems.add(documentation);
    fullMenuEntries = new MenuEntry(GITBLIT_TOPMENU_NAME, fullMenuItems);
    extraProjectEntries =
        new MenuEntry(
            GerritTopMenu.PROJECTS,
            Arrays.asList(
                new MenuItem(
                    cfg.getString("browse", "Browse"),
                    gitBlitBaseUrl + "summary?r=${projectName}",
                    "")));
  }