package ch.uzh.ifi.attempto.acewiki.core; import java.util.HashMap; import java.util.Map; public class AceWikiConfig { private Map<String, String> parameters; private UserProvider userProvider; public AceWikiConfig(Map<String, String> parameters, UserProvider userProvider) { this.parameters = parameters; this.userProvider = userProvider; } public Map<String, String> getParameters() { return new HashMap<String, String>(parameters); } /** * Returns the value of the given parameter. These parameters are defined in the web.xml file * of the web application. * * @param paramName The parameter name. * @return The value of the parameter. */ public String getParameter(String paramName) { return parameters.get(paramName); } public boolean hasParameter(String paramName) { return parameters.get(paramName) != null; } /** * Returns whether the login features are enabled. * * @return true if login is enabled. */ public boolean isLoginEnabled() { return "yes".equals(getParameter("login")); } /** * Returns whether login is required for viewing the wiki data. * * @return true if login is required for viewing. */ public boolean isLoginRequiredForViewing() { if (!isLoginEnabled()) return false; return "yes".equals(getParameter("login_required")); } /** * Returns whether login is required for editing the wiki data. * * @return true if login is required for editing. */ public boolean isLoginRequiredForEditing() { if (!isLoginEnabled()) return false; if (isLoginRequiredForViewing()) return true; return "edit".equals(getParameter("login_required")); } /** * Returns whether the user registration is open to everyone. * * @return true if the user registration is open. */ public boolean isUserRegistrationOpen() { if (!isLoginEnabled()) return false; return !"no".equals(getParameter("register")); } /** * Returns true if this wiki is set to be read-only. * * @return true if this wiki is read-only. */ public boolean isReadOnly() { return "on".equals(getParameter("readonly")); } /** * Returns true if language switching is enabled. * * @return true if language switching is enabled. */ public boolean isLanguageSwitchingEnabled() { return !"off".equals(getParameter("language_switching")); } /** * Returns true if comment feature is enabled. * * @return true if enabled. */ public boolean isCommentingEnabled() { if ("hide".equals(getParameter("comments"))) return false; if (!"readonly".equals(getParameter("comments"))) return true; User u = userProvider.getUser(); if (u != null && u.hasRight("write_comments")) return true; return false; } /** * Returns true if comments are disabled and hidden. * * @return true if hidden. */ public boolean isCommentHidingEnabled() { return "hide".equals(getParameter("comments")); } /** * Returns true if retract/reassert actions on sentences are enabled. * * @return true if enabled. */ public boolean isRetractReassertEnabled() { return !"off".equals(getParameter("retractreassert")); } public boolean isDetailsPageEnabled() { return !"off".equals(getParameter("details_page")); } public boolean isTranslationsPageEnabled() { return !"off".equals(getParameter("translations_page")); } public boolean isGrammarIntegrationEnabled() { return "on".equals(getParameter("grammar_integration")); } public boolean isAutodisambiguationEnabled() { return "on".equals(getParameter("autodisambiguation")); } }