Mercurial Hosting > nabble
view src/nabble/view/web/app/Languages.java @ 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; } } out.print( "\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n<html>\n <head>\n <META NAME=\"robots\" CONTENT=\"noindex,nofollow\">\n " ); Shared.title(request, response, "Languages"); out.print( "\n <style type=\"text/css\">\n div.language {\n margin: .4em .8em;\n }\n </style>\n </head>\n <body>\n " ); Shared.minHeader(request,response, rootNode); out.print( "\n\n <div style=\"padding:.5em 0 .5em 60px;background:url('/images/world.png') 5px 5px no-repeat;min-height:45px\">\n <div class=\"big-title second-font\">Languages</div>\n <div class=\"weak-color\">\n Select a language for this Nabble application.\n </div>\n </div>\n\n <form method=\"post\" action=\"/app/Languages.jtp\" accept-charset=\"UTF-8\">\n <input type=\"hidden\" name=\"action\" value=\"save\"/>\n\n " ); for( Map.Entry<String,String> entry : languages.entrySet() ) { out.print( "\n " ); boolean isChecked = selected.equals(entry.getKey()); out.print( "\n <div class=\"language\">\n <input id=\"_" ); out.print( (entry.getKey()) ); out.print( "\" type=\"radio\" name=\"lang\" value=\"" ); out.print( (entry.getKey()) ); out.print( "\" " ); out.print( (isChecked?"checked=\"true\"":"") ); out.print( ">\n <label for=\"_" ); out.print( (entry.getKey()) ); out.print( "\">" ); out.print( (entry.getValue()) ); out.print( "</label>\n </div>\n " ); } out.print( "\n\n <br/>\n <input type=\"submit\" class=\"toolbar action-button\" value=\"Save Changes\"/>\n or <a href=\"/\">Cancel</a>\n </form>\n\n " ); Shared.footer(request, response); out.print( "\n " ); Shared.analytics(request, response); out.print( "\n </body>\n</html>\n" ); } }