X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;f=src%2Forg%2Fcacert%2Fgigi%2Fpages%2FPage.java;h=f2bdbd7f7c370951ccfd02cfc9776ec3f6c86833;hb=8552a0eaf52ad7a05cb045ee9423cfc8a45c336a;hp=320107f84868c408467ec72d0fefa519afdc6536;hpb=943d8e7ed0ea5a9d56e7e694a3cbd849c52bad16;p=gigi.git diff --git a/src/org/cacert/gigi/pages/Page.java b/src/org/cacert/gigi/pages/Page.java index 320107f8..f2bdbd7f 100644 --- a/src/org/cacert/gigi/pages/Page.java +++ b/src/org/cacert/gigi/pages/Page.java @@ -2,19 +2,24 @@ package org.cacert.gigi.pages; import java.io.IOException; import java.net.URL; +import java.util.Enumeration; +import java.util.Locale; import javax.servlet.ServletRequest; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; -import org.cacert.gigi.Language; +import org.cacert.gigi.PermissionCheckable; +import org.cacert.gigi.dbObjects.User; +import org.cacert.gigi.localisation.Language; import org.cacert.gigi.output.template.Template; /** * This class encapsulates a sub page of Gigi. A template residing nearby this * class with name <className>.templ will be loaded automatically. */ -public abstract class Page { +public abstract class Page implements PermissionCheckable { private String title; @@ -97,12 +102,29 @@ public abstract class Page { return title; } - public void setTitle(String title) { - this.title = title; - } - public static Language getLanguage(ServletRequest req) { - return Language.getInstance("de"); + HttpSession session = ((HttpServletRequest) req).getSession(); + synchronized (session) { + + Locale sessval = (Locale) session.getAttribute(Language.SESSION_ATTRIB_NAME); + if (sessval != null) { + Language l = Language.getInstance(sessval); + if (l != null) { + return l; + } + } + Enumeration langs = req.getLocales(); + while (langs.hasMoreElements()) { + Locale c = langs.nextElement(); + Language l = Language.getInstance(c); + if (l != null) { + session.setAttribute(Language.SESSION_ATTRIB_NAME, l.getLocale()); + return l; + } + } + session.setAttribute(Language.SESSION_ATTRIB_NAME, Locale.ENGLISH); + return Language.getInstance(Locale.ENGLISH); + } } public static String translate(ServletRequest req, String string) { @@ -110,4 +132,13 @@ public abstract class Page { return l.getTranslation(string); } + public static User getUser(HttpServletRequest req) { + return LoginPage.getUser(req); + } + + @Override + public boolean isPermitted(User u) { + return !needsLogin() || u != null; + } + }