protected String getContent(Map<String, Object> data) {
    String content = "";
    try {
      if (isLoginPage) {
        return getLoginForm(data);
      } else if (!isAuthorized) {
        return "<h3>" + ResourceBundleUtil.getMessage("ubuilder.noAuthorize") + "</h3>";
      } else if (userview.getCurrent() != null) {
        if (isQuickEditEnabled) {
          String label =
              ResourceBundleUtil.getMessage("adminBar.label.page")
                  + ": "
                  + userview.getCurrent().getPropertyString("label");
          String url =
              request.getContextPath()
                  + "/web/console/app/"
                  + userview.getParamString("appId")
                  + "/"
                  + userview.getParamString("appVersion")
                  + "/userview/builder/"
                  + userview.getPropertyString("id")
                  + "?menuId="
                  + userview.getCurrent().getPropertyString("id");
          content += "<div class=\"quickEdit\" style=\"display: none\">\n";
          content +=
              "    <a href=\""
                  + url
                  + "\" target=\"_blank\"><i class=\"icon-edit\"></i> "
                  + label
                  + "</a>\n";
          content += "</div>\n";
        }

        content += UserviewUtil.getUserviewMenuHtml(userview.getCurrent());
      } else {
        String pageNotFound = theme.handlePageNotFound(data);
        if (pageNotFound != null) {
          return pageNotFound;
        } else {
          return getDefaultTheme().handlePageNotFound(data);
        }
      }
    } catch (Exception e) {
      String errorHandle = theme.handleContentError(e, data);
      if (errorHandle != null) {
        return errorHandle;
      } else {
        return getDefaultTheme().handleContentError(e, data);
      }
    }

    return content;
  }
  protected String getJogetFooter() {
    String html =
        "<script type=\"text/javascript\">\n"
            + "            HelpGuide.base = \""
            + request.getContextPath()
            + "\"\n"
            + "            HelpGuide.attachTo = \"#header\";\n"
            + "            HelpGuide.key = \"help.web.userview."
            + userview.getParamString("appId")
            + "."
            + userview.getParamString("userviewId")
            + "."
            + getBodyId()
            + "\";\n"
            + "            HelpGuide.show();\n"
            + "        </script>\n";

    html += AppUtil.getSystemAlert() + "\n";

    Map<String, Object> modelMap = new HashMap<String, Object>();
    AppDefinition appDef = AppUtil.getCurrentAppDefinition();
    modelMap.put("appId", userview.getParamString("appId"));
    modelMap.put("appVersion", appDef.getVersion().toString());
    modelMap.put("userviewId", userview.getParamString("userviewId"));
    html += UserviewUtil.renderJspAsString("ubuilder/adminBar.jsp", modelMap) + "\n\n";

    if ("true".equalsIgnoreCase(userview.getParamString("isPreview"))) {
      html +=
          "<!--[if IE]><div id=\"preview-label\" class=\"ie\">"
              + ResourceBundleUtil.getMessage("fbuilder.preview")
              + "</div><![endif]-->\n"
              + "        <!--[if !IE]><!--><div id=\"preview-label\">"
              + ResourceBundleUtil.getMessage("fbuilder.preview")
              + "</div><!--<![endif]-->        \n"
              + "        <div style=\"display:none\" id=\"preview-form\">\n"
              + "            <form id=\"preview\" action=\"\" method=\"post\">\n"
              + "                <input type=\"hidden\" name=\"json\" value=\""
              + StringEscapeUtils.escapeHtml(userview.getParamString("json"))
              + "\"/>\"/>\n"
              + "            </form>\n"
              + "        </div>\n";
    }

    return html;
  }
  protected String handleMenuResponse() {
    if (userview.getCurrent() != null) {
      String menuAlertMessage =
          userview.getCurrent().getPropertyString(UserviewMenu.ALERT_MESSAGE_PROPERTY);
      String menuRedirectUrl =
          userview.getCurrent().getPropertyString(UserviewMenu.REDIRECT_URL_PROPERTY);
      String redirectParent =
          userview.getCurrent().getPropertyString(UserviewMenu.REDIRECT_PARENT_PROPERTY);

      if ((menuAlertMessage != null && !menuAlertMessage.isEmpty())
          || (redirectParent != null && "true".equalsIgnoreCase(redirectParent))) {
        if (menuRedirectUrl != null && !menuRedirectUrl.isEmpty()) {
          Map<String, String> data = new HashMap<String, String>();
          data.put("alertMessage", menuAlertMessage);
          data.put("redirectUrl", menuRedirectUrl);
          data.put("redirectParent", redirectParent);
          return UserviewUtil.getTemplate(
              getDefaultTheme(), data, "/templates/userview/redirect.ftl");
        } else {
          alertMessage = menuAlertMessage;
        }
      } else if (menuRedirectUrl != null && !menuRedirectUrl.isEmpty()) {
        if (!menuRedirectUrl.toLowerCase().startsWith("http")
            && !menuRedirectUrl.toLowerCase().startsWith("/")
            && !menuRedirectUrl.startsWith(request.getContextPath())) {
          redirectUrl = "/web/";
          if ("true".equalsIgnoreCase(userview.getParamString("embed"))) {
            redirectUrl += "embed/";
          }
          redirectUrl += "userview/" + userview.getParamString("appId") + "/";
          redirectUrl += userview.getPropertyString("id") + "/";
          redirectUrl += userview.getParamString("key") + "/" + menuRedirectUrl;
        } else if (menuRedirectUrl.startsWith(request.getContextPath())) {
          redirectUrl = menuRedirectUrl.replaceFirst(request.getContextPath(), "");
        } else {
          redirectUrl = menuRedirectUrl;
        }
      }
    }
    return null;
  }