Index: DefaultYanelToolbar.java =================================================================== --- DefaultYanelToolbar.java (revision 59010) +++ DefaultYanelToolbar.java (working copy) @@ -1,246 +1,251 @@ -package org.wyona.yanel.servlet.toolbar.impl; - -import javax.servlet.http.HttpServletRequest; - -import org.apache.log4j.Logger; - -import org.wyona.security.core.api.Identity; -import org.wyona.yanel.core.Resource; -import org.wyona.yanel.core.api.attributes.VersionableV2; -import org.wyona.yanel.core.map.Map; -import org.wyona.yanel.core.util.PathUtil; -import org.wyona.yanel.core.util.ResourceAttributeHelper; -import org.wyona.yanel.servlet.YanelServlet; -import org.wyona.yanel.servlet.menu.Menu; -import org.wyona.yanel.servlet.toolbar.YanelToolbar; -import org.wyona.yanel.servlet.toolbar.YanelToolbarException; - -/** - * The default Yanel toolbar implementation, wrapping a {@link Menu} (which might has been configured in the realm.xml configuration). - */ -public class DefaultYanelToolbar implements YanelToolbar { - - private static Logger log = Logger.getLogger(DefaultYanelToolbar.class); - - //private int DELAY_IN_MILLIS = 300; - private int DELAY_IN_MILLIS = 400; - - protected Menu menu; - - /** - * - */ - public DefaultYanelToolbar() { - log.warn("No realm specific menu seems to be configured, hence use default menu."); - menu = new org.wyona.yanel.servlet.menu.impl.DefaultMenu(); - } - - /** - * - */ - public DefaultYanelToolbar(Menu menu) { - this.menu = menu; - } - - /** - * @see org/wyona/yanel/servlet/toolbar/YanelToolbar#getToolbarBodyStart(Resource, HttpServletRequest, Map, String) - */ - public String getToolbarBodyStart(Resource resource, HttpServletRequest request, Map map, String reservedPrefix) { - log.debug("Generate toolbar XHTML ..."); - try { - String backToRealm = PathUtil.backToRealm(resource.getPath()); - StringBuilder buf = new StringBuilder(); - buf.append("
"); - buf.append("
"); - buf.append(getToolbarMenus(resource, request, map, reservedPrefix)); - buf.append("
"); - - buf.append("" + getInfo(resource, request, map, backToRealm, reservedPrefix) + ""); - - buf.append(""); - buf.append(""); - buf.append(""); - - buf.append("
"); - buf.append("
"); - return buf.toString(); - } catch (RuntimeException e) { - throw e; - } catch (Exception e) { - throw new YanelToolbarException("Couldn't generate toolbar body start markup: " + e.getMessage(), e); - } - } - - /** - * @see org/wyona/yanel/servlet/toolbar/YanelToolbar#getToolbarHeader(Resource, HttpServletRequest, Map, String) - */ - public String getToolbarHeader(Resource resource, HttpServletRequest request, Map map, String reservedPrefix) { - - String backToRealm = org.wyona.yanel.core.util.PathUtil.backToRealm(resource.getPath()); - StringBuilder sb = new StringBuilder(); - - sb.append(""); - sb.append(System.getProperty("line.separator")); - sb.append(""); - sb.append(System.getProperty("line.separator")); - sb.append(""); - sb.append(System.getProperty("line.separator")); - - // INFO: superfish related stuff - sb.append(""); - sb.append(System.getProperty("line.separator")); - sb.append(""); - sb.append(System.getProperty("line.separator")); - sb.append(" "); - sb.append(System.getProperty("line.separator")); - sb.append(""); - sb.append(System.getProperty("line.separator")); - - // INFO: If browser is Mozilla (gecko engine rv:1.7) - if (request.getHeader("User-Agent").indexOf("rv:1.7") >= 0) { - sb.append(""); - sb.append(System.getProperty("line.separator")); - } - // If browser is IE - if (request.getHeader("User-Agent").indexOf("compatible; MSIE") >= 0 - && request.getHeader("User-Agent").indexOf("Windows") >= 0) { - sb.append(""); -/* NOTE: Not necessary anymore? - sb.append(System.getProperty("line.separator")); - sb.append(""); -*/ - } - // If browser is IE6 - if (request.getHeader("User-Agent").indexOf("compatible; MSIE 6") >= 0 - && request.getHeader("User-Agent").indexOf("Windows") >= 0) { - sb.append(""); - sb.append(System.getProperty("line.separator")); - } - sb.append(""); - - return sb.toString(); - } - - /** - * @see org/wyona/yanel/servlet/toolbar/YanelToolbar#getToolbarBodyEnd(Resource, HttpServletRequest, Map, String) - */ - public String getToolbarBodyEnd(Resource resource, HttpServletRequest request, Map map, String reservedPrefix) { - return "
"; - } - - /** - * Gets the toolbar menus. - */ - private String getToolbarMenus(Resource resource, HttpServletRequest request, Map map, String reservedPrefix) throws Exception { - return menu.getAllMenus(resource, request, map, reservedPrefix); - } - - /** - * Gets information such as realm name, user name, etc. - */ - protected String getInfo(Resource resource, HttpServletRequest request, Map map, String backToRealm, String reservedPrefix) throws Exception { - String userLanguage = getUserLanguage(resource); - - StringBuilder buf = new StringBuilder(); - - //buf.append("Version: " + yanel.getVersion() + "-r" + yanel.getRevision() + "  "); - - if (ResourceAttributeHelper.hasAttributeImplemented(resource, "Versionable", "2")) { - VersionableV2 versionableRes = (VersionableV2) resource; - if (versionableRes.isCheckedOut()) { - buf.append(getLabel("page", userLanguage) + ": Locked by " + versionableRes.getCheckoutUserID() - + " (unlock)  "); - } - } - - Identity identity = resource.getEnvironment().getIdentity(); - if (identity != null && !identity.isWorld()) { - buf.append(getLabel("user", userLanguage) + ": " + identity.getAlias() + ""); // TODO: yanel/users should be replaced by reservedPrefix, also see src/webapp/src/java/org/wyona/yanel/servlet/menu/Menu.java - } else { - buf.append(getLabel("user", userLanguage) + ": Not signed in!"); - } - - return buf.toString(); - } - - /** - * Gets user language (order: profile, browser, ...) (Also see - * org/wyona/yanel/servlet/menu/Menu.java) - */ - private String getUserLanguage(Resource resource) throws Exception { - Identity identity = resource.getEnvironment().getIdentity(); - String language = resource.getRequestedLanguage(); - String userID = identity.getUsername(); - if (userID != null) { - String userLanguage = resource.getRealm().getIdentityManager().getUserManager().getUser(userID).getLanguage(); - if (userLanguage != null) { - language = userLanguage; - log.debug("Use user profile language: " + language); - } else { - log.debug("Use requested language: " + language); - } - } - return language; - } - - /** - * Gets i18n (TODO: Replace this by something more generic) - * - * @param key I18n key - * @param language Language - */ - private static String getLabel(String key, String language) { - if (language.equals("de")) { - if (key.equals("user")) { - return "Benutzer"; - } else if (key.equals("page")) { - return "Seite"; - } else { - log.warn("Key '" + key + "' not supported yet by requested language '" + language + "'. Fallback to english!"); - return getLabel(key, "en"); - } - } else if (language.equals("en")) { - if (key.equals("user")) { - return "User"; - } else if (key.equals("page")) { - return "Page"; - } else { - log.warn("Key '" + key + "' not supported yet!"); - return key; - } - } else { - log.warn("Language '" + language + "' not supported yet. Fallback to english!"); - return getLabel(key, "en"); - } - } - -} +Index: DefaultYanelToolbar.java +=================================================================== +--- DefaultYanelToolbar.java (revision 59010) ++++ DefaultYanelToolbar.java (working copy) +@@ -1,246 +0,0 @@ +-package org.wyona.yanel.servlet.toolbar.impl; +- +-import javax.servlet.http.HttpServletRequest; +- +-import org.apache.log4j.Logger; +- +-import org.wyona.security.core.api.Identity; +-import org.wyona.yanel.core.Resource; +-import org.wyona.yanel.core.api.attributes.VersionableV2; +-import org.wyona.yanel.core.map.Map; +-import org.wyona.yanel.core.util.PathUtil; +-import org.wyona.yanel.core.util.ResourceAttributeHelper; +-import org.wyona.yanel.servlet.YanelServlet; +-import org.wyona.yanel.servlet.menu.Menu; +-import org.wyona.yanel.servlet.toolbar.YanelToolbar; +-import org.wyona.yanel.servlet.toolbar.YanelToolbarException; +- +-/** +- * The default Yanel toolbar implementation, wrapping a {@link Menu} (which might has been configured in the realm.xml configuration). +- */ +-public class DefaultYanelToolbar implements YanelToolbar { +- +- private static Logger log = Logger.getLogger(DefaultYanelToolbar.class); +- +- //private int DELAY_IN_MILLIS = 300; +- private int DELAY_IN_MILLIS = 400; +- +- protected Menu menu; +- +- /** +- * +- */ +- public DefaultYanelToolbar() { +- log.warn("No realm specific menu seems to be configured, hence use default menu."); +- menu = new org.wyona.yanel.servlet.menu.impl.DefaultMenu(); +- } +- +- /** +- * +- */ +- public DefaultYanelToolbar(Menu menu) { +- this.menu = menu; +- } +- +- /** +- * @see org/wyona/yanel/servlet/toolbar/YanelToolbar#getToolbarBodyStart(Resource, HttpServletRequest, Map, String) +- */ +- public String getToolbarBodyStart(Resource resource, HttpServletRequest request, Map map, String reservedPrefix) { +- log.debug("Generate toolbar XHTML ..."); +- try { +- String backToRealm = PathUtil.backToRealm(resource.getPath()); +- StringBuilder buf = new StringBuilder(); +- buf.append("
"); +- buf.append("
"); +- buf.append(getToolbarMenus(resource, request, map, reservedPrefix)); +- buf.append("
"); +- +- buf.append("" + getInfo(resource, request, map, backToRealm, reservedPrefix) + ""); +- +- buf.append(""); +- buf.append(""); +- buf.append(""); +- +- buf.append("
"); +- buf.append("
"); +- return buf.toString(); +- } catch (RuntimeException e) { +- throw e; +- } catch (Exception e) { +- throw new YanelToolbarException("Couldn't generate toolbar body start markup: " + e.getMessage(), e); +- } +- } +- +- /** +- * @see org/wyona/yanel/servlet/toolbar/YanelToolbar#getToolbarHeader(Resource, HttpServletRequest, Map, String) +- */ +- public String getToolbarHeader(Resource resource, HttpServletRequest request, Map map, String reservedPrefix) { +- +- String backToRealm = org.wyona.yanel.core.util.PathUtil.backToRealm(resource.getPath()); +- StringBuilder sb = new StringBuilder(); +- +- sb.append(""); +- sb.append(System.getProperty("line.separator")); +- sb.append(""); +- sb.append(System.getProperty("line.separator")); +- sb.append(""); +- sb.append(System.getProperty("line.separator")); +- +- // INFO: superfish related stuff +- sb.append(""); +- sb.append(System.getProperty("line.separator")); +- sb.append(""); +- sb.append(System.getProperty("line.separator")); +- sb.append(" "); +- sb.append(System.getProperty("line.separator")); +- sb.append(""); +- sb.append(System.getProperty("line.separator")); +- +- // INFO: If browser is Mozilla (gecko engine rv:1.7) +- if (request.getHeader("User-Agent").indexOf("rv:1.7") >= 0) { +- sb.append(""); +- sb.append(System.getProperty("line.separator")); +- } +- // If browser is IE +- if (request.getHeader("User-Agent").indexOf("compatible; MSIE") >= 0 +- && request.getHeader("User-Agent").indexOf("Windows") >= 0) { +- sb.append(""); +-/* NOTE: Not necessary anymore? +- sb.append(System.getProperty("line.separator")); +- sb.append(""); +-*/ +- } +- // If browser is IE6 +- if (request.getHeader("User-Agent").indexOf("compatible; MSIE 6") >= 0 +- && request.getHeader("User-Agent").indexOf("Windows") >= 0) { +- sb.append(""); +- sb.append(System.getProperty("line.separator")); +- } +- sb.append(""); +- +- return sb.toString(); +- } +- +- /** +- * @see org/wyona/yanel/servlet/toolbar/YanelToolbar#getToolbarBodyEnd(Resource, HttpServletRequest, Map, String) +- */ +- public String getToolbarBodyEnd(Resource resource, HttpServletRequest request, Map map, String reservedPrefix) { +- return "
"; +- } +- +- /** +- * Gets the toolbar menus. +- */ +- private String getToolbarMenus(Resource resource, HttpServletRequest request, Map map, String reservedPrefix) throws Exception { +- return menu.getAllMenus(resource, request, map, reservedPrefix); +- } +- +- /** +- * Gets information such as realm name, user name, etc. +- */ +- protected String getInfo(Resource resource, HttpServletRequest request, Map map, String backToRealm, String reservedPrefix) throws Exception { +- String userLanguage = getUserLanguage(resource); +- +- StringBuilder buf = new StringBuilder(); +- +- //buf.append("Version: " + yanel.getVersion() + "-r" + yanel.getRevision() + "  "); +- +- if (ResourceAttributeHelper.hasAttributeImplemented(resource, "Versionable", "2")) { +- VersionableV2 versionableRes = (VersionableV2) resource; +- if (versionableRes.isCheckedOut()) { +- buf.append(getLabel("page", userLanguage) + ": Locked by " + versionableRes.getCheckoutUserID() +- + " (unlock)  "); +- } +- } +- +- Identity identity = resource.getEnvironment().getIdentity(); +- if (identity != null && !identity.isWorld()) { +- buf.append(getLabel("user", userLanguage) + ": " + identity.getAlias() + ""); // TODO: yanel/users should be replaced by reservedPrefix, also see src/webapp/src/java/org/wyona/yanel/servlet/menu/Menu.java +- } else { +- buf.append(getLabel("user", userLanguage) + ": Not signed in!"); +- } +- +- return buf.toString(); +- } +- +- /** +- * Gets user language (order: profile, browser, ...) (Also see +- * org/wyona/yanel/servlet/menu/Menu.java) +- */ +- private String getUserLanguage(Resource resource) throws Exception { +- Identity identity = resource.getEnvironment().getIdentity(); +- String language = resource.getRequestedLanguage(); +- String userID = identity.getUsername(); +- if (userID != null) { +- String userLanguage = resource.getRealm().getIdentityManager().getUserManager().getUser(userID).getLanguage(); +- if (userLanguage != null) { +- language = userLanguage; +- log.debug("Use user profile language: " + language); +- } else { +- log.debug("Use requested language: " + language); +- } +- } +- return language; +- } +- +- /** +- * Gets i18n (TODO: Replace this by something more generic) +- * +- * @param key I18n key +- * @param language Language +- */ +- private static String getLabel(String key, String language) { +- if (language.equals("de")) { +- if (key.equals("user")) { +- return "Benutzer"; +- } else if (key.equals("page")) { +- return "Seite"; +- } else { +- log.warn("Key '" + key + "' not supported yet by requested language '" + language + "'. Fallback to english!"); +- return getLabel(key, "en"); +- } +- } else if (language.equals("en")) { +- if (key.equals("user")) { +- return "User"; +- } else if (key.equals("page")) { +- return "Page"; +- } else { +- log.warn("Key '" + key + "' not supported yet!"); +- return key; +- } +- } else { +- log.warn("Language '" + language + "' not supported yet. Fallback to english!"); +- return getLabel(key, "en"); +- } +- } +- +-}