docs: public String displayHead() {
  
          StringBuffer result = new StringBuffer(2048);
  
          int buttonStyle = getSettings().getUserSettings().getWorkplaceButtonStyle();
  
          // change to online project to allow exporting
          try {
              getJsp().getRequestContext().setCurrentProject(m_onlineProject);
              String resourcePath = getJsp().link("/system/modules/" + MODULE_NAME + "/resources/");
  
              result.append(buildHtmlHelpStart("workplace.css", false));
              result.append("<body class=\"buttons-head\" unselectable=\"on\">\n");
              result.append("<script type=\"text/javascript\" src=\"");
              result.append(getJsp().link("/system/modules/org.opencms.workplace.help/resources/search.js"));
              result.append("\"></script>\n");
  
              // store home link in JS variable to use it in body frame
              result.append("<script type=\"text/javascript\">\n<!--\n");
              result.append("\tvar homeLink = \"");
              result.append(CmsEncoder.escapeXml(getParamHomelink()));
              result.append("\";\n\n");
              result.append("//-->\n</script>\n");
  
              // search form with invisible elements
  
              // search index may be attached to resource /system/modules/org.opencms.workplace.help/elements/search.jsp,
              // property search.index.
              String index = getJsp().property(
                  "search.index",
                  "/system/modules/org.opencms.workplace.help/elements/search.jsp",
                  "German online help",
                  false);
              StringBuffer submitAction = new StringBuffer();
              submitAction.append("parseSearchQuery(document.forms[\'searchform\'],\'");
              submitAction.append(
                  Messages.get().getBundle(getLocale()).key(
                      Messages.GUI_HELP_ERR_SEARCH_WORD_LENGTH_1,
                      new Integer(3))).append("\');");
  
              result.append("<form style=\"margin: 0;\" name=\"searchform\" method=\"post\" action=\"");
              String searchLink = getJsp().link(
                  new StringBuffer("/system/modules/org.opencms.workplace.help/elements/search.jsp?").append(
                      CmsLocaleManager.PARAMETER_LOCALE).append("=").append(getLocale()).toString());
              result.append(searchLink);
              result.append("\" target=\"body\"");
              result.append(" onsubmit=\"");
              result.append(submitAction.toString());
              result.append("\">\n");
              result.append("  <input type=\"hidden\" name=\"action\" value=\"search\" />\n");
              result.append("  <input type=\"hidden\" name=\"query\" value=\"\" />\n");
              result.append("  <input type=\"hidden\" name=\"index\" value=\"" + index + "\" />\n");
              result.append("  <input type=\"hidden\" name=\"searchPage\" value=\"1\" />\n");
  
              result.append("<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n");
              result.append("<tr>\n");
              result.append("\t<td align=\"left\">\n");
  
              // display navigation buttons
              result.append(buttonBar(HTML_START));
              result.append(buttonBarStartTab(0, 5));
              result.append(button(
                  "javascript:history.back();",
                  null,
                  "back.png",
                  org.opencms.search.Messages.GUI_HELP_BUTTON_BACK_0,
                  buttonStyle,
                  resourcePath));
              result.append(button(
                  "javascript:history.forward();",
                  null,
                  "next.png",
                  org.opencms.search.Messages.GUI_HELP_BUTTON_NEXT_0,
                  buttonStyle,
                  resourcePath));
  
              result.append(button(
                  "javascript:top.body.location.href='" + CmsEncoder.escapeXml(getParamHomelink()) + "';",
                  null,
                  "contents.png",
                  org.opencms.search.Messages.GUI_HELP_BUTTON_CONTENTS_0,
                  buttonStyle,
                  resourcePath));
              //search
              result.append("<td style=\"vertical-align: top;\">");
              result.append("<input type=\"text\" name=\"query2\" class=\"onlineform\" style=\"width: 120px\" value=\"");
              result.append("");
              result.append(" \">");
              result.append("</td>\n");
  
              result.append(
                  button(
                      new StringBuffer("javascript:").append(submitAction.toString()).toString(),
                      null,
                      null,
                      org.opencms.search.Messages.GUI_HELP_BUTTON_SEARCH_0,
                      2,
                      null));
  
              result.append(buttonBar(HTML_END));
  
              result.append("</td>\n");
              result.append("\t<td align=\"right\" width=\"100%\">\n");
  
              // display close button
              result.append(buttonBar(HTML_START));
              result.append(buttonBarSeparator(5, 0));
              result.append(button(
                  "javascript:top.close();",
                  null,
                  "close",
                  org.opencms.search.Messages.GUI_HELP_BUTTON_CLOSE_0,
                  buttonStyle,
                  resourcePath));
              result.append(buttonBar(HTML_END));
  
              result.append("\t</td>\n");
              result.append("\t<td>&nbsp;</td>\n");
              result.append("<td>");
  
              // display logo
              result.append("<span style=\"display: block; width: 80px; height: 22px; background-image: url(\'");
              result.append(getSkinUri());
              result.append("commons/workplace.png");
              result.append("\'); \"></span>");
              result.append("</td>");
              result.append("</tr>\n");
              result.append("</table>\n");
              result.append("</form>\n");
              result.append(buildHtmlHelpEnd());
  
              return result.toString();
          } finally {
              // set back to offline project
              getJsp().getRequestContext().setCurrentProject(m_offlineProject);
          }
      }