Mercurial Hosting > nabble
view src/nabble/view/web/app/Languages.jtp @ 19:18cf4872fd7f
remove anonymous posting
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Fri, 29 May 2020 22:58:25 -0600 |
parents | 7ecd1a4ef557 |
children |
line wrap: on
line source
<% package nabble.view.web.app; import fschmidt.db.DbDatabase; import nabble.model.Node; import nabble.model.Site; import nabble.model.User; import nabble.view.lib.Jtp; import nabble.view.lib.Permissions; import nabble.view.lib.Shared; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; import java.util.LinkedHashMap; import java.util.Map; public final class Languages extends HttpServlet { public static Map<String, String> languages = new LinkedHashMap<String, String>(); static { languages.put("lang_cs_cz", "Čeština (Czech Republic)"); languages.put("none", "English"); languages.put("lang_de", "Deutsch"); languages.put("lang_es", "Español"); languages.put("lang_fr_fr", "Français (France)"); languages.put("lang_pl", "Polski"); languages.put("lang_pt_br", "Português (Brasil)"); languages.put("lang_sv", "Svenska (<span class='important'>Incomplete</span>)"); languages.put("lang_tu", "Türkçe"); languages.put("lang_rus_ru", "Русский"); languages.put("lang_ell", "Ελληνικά"); languages.put("lang_ch_si", "中文 (简体)"); languages.put("lang_ch_tr", "中文 (繁體)"); languages.put("lang_arabic", "Arabic"); } protected void service(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException { Site site = Jtp.getSite(request); if (site == null) { response.sendError(HttpServletResponse.SC_NOT_FOUND, "No application match the \"<i>" + request.getHeader("host") + "</i>\" domain."); return; } User user = Jtp.getUser(request); if (user == null) { response.sendRedirect(site.getBaseUrl() + Jtp.loginPath(site,null,response.encodeURL("/forum/Addons.jtp?site="+site.getId())) ); return; } boolean isSiteAdmin = Permissions.isInGroup(user, Permissions.ADMINISTRATORS_GROUP); boolean isSysAdmin = Permissions.isSysAdmin(user); if (!isSiteAdmin && !isSysAdmin) { Jtp.login("Only administrators can proceed in this area.", request, response); return; } boolean isSave = "save".equals(request.getParameter("action")); if (isSave && "POST".equals(request.getMethod())) { DbDatabase db = site.getDb(); db.beginTransaction(); try { site = site.getGoodCopy(); String selectedLanguage = request.getParameter("lang"); for( Map.Entry<String,String> entry : languages.entrySet() ) { boolean isEnglish = "none".equals(entry.getKey()); if (!isEnglish) { boolean isEnabled = entry.getKey().equals(selectedLanguage); site.setModuleEnabled(entry.getKey(), isEnabled); } } db.commitTransaction(); Jtp.sendRedirect(request,response,Jtp.path(site.getRootNode())); return; } finally { db.endTransaction(); } } Node rootNode = site.getRootNode(); PrintWriter out = response.getWriter(); String selected = "none"; for( Map.Entry<String,String> entry : languages.entrySet() ) { if (site.isModuleEnabled(entry.getKey())) { selected = entry.getKey(); break; } } %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <META NAME="robots" CONTENT="noindex,nofollow"> <% Shared.title(request, response, "Languages"); %> <style type="text/css"> div.language { margin: .4em .8em; } </style> </head> <body> <% Shared.minHeader(request,response, rootNode); %> <div style="padding:.5em 0 .5em 60px;background:url('/images/world.png') 5px 5px no-repeat;min-height:45px"> <div class="big-title second-font">Languages</div> <div class="weak-color"> Select a language for this Nabble application. </div> </div> <form method="post" action="/app/Languages.jtp" accept-charset="UTF-8"> <input type="hidden" name="action" value="save"/> <% for( Map.Entry<String,String> entry : languages.entrySet() ) { %> <% boolean isChecked = selected.equals(entry.getKey()); %> <div class="language"> <input id="_<%=entry.getKey()%>" type="radio" name="lang" value="<%=entry.getKey()%>" <%=isChecked?"checked=\"true\"":""%>> <label for="_<%=entry.getKey()%>"><%=entry.getValue()%></label> </div> <% } %> <br/> <input type="submit" class="toolbar action-button" value="Save Changes"/> or <a href="/">Cancel</a> </form> <% Shared.footer(request, response); %> <% Shared.analytics(request, response); %> </body> </html> <% } } %>