From 24304e4bbc13fe43f8e576ae8fb553222caab985 Mon Sep 17 00:00:00 2001 From: Ilya Date: Sun, 20 Dec 2020 18:30:59 +0300 Subject: [PATCH] New Placeholder system and Localization system --- .../java/ru/redguy/webinfomod/IWebPage.java | 4 +- .../ru/redguy/webinfomod/WebInfoSponge.java | 10 ++-- .../java/ru/redguy/webinfomod/WebServer.java | 8 ++- .../{LangFile.java => Localization.java} | 16 +++--- .../ru/redguy/webinfomod/langs/Titles.java | 6 ++- .../ru/redguy/webinfomod/langs/Words.java | 6 ++- .../ru/redguy/webinfomod/pages/Index.java | 17 ++----- .../redguy/webinfomod/pages/auth/Index.java | 12 ++--- .../redguy/webinfomod/pages/auth/Worker.java | 4 +- .../ru/redguy/webinfomod/pages/cp/Index.java | 16 ++---- .../webinfomod/pages/json/MainData.java | 4 +- .../redguy/webinfomod/pages/logout/Index.java | 4 +- .../{DoerUtils.java => ActionsUtils.java} | 2 +- .../webinfomod/utils/BasePlaceholders.java | 40 +++++++++++++++ .../redguy/webinfomod/utils/Placeholder.java | 6 +++ .../webinfomod/utils/PlaceholdersUtils.java | 51 +++++++++++++++++++ src/main/resources/resources/langs/ru.json | 3 +- .../auth/Index.html => auth/index.html} | 8 +-- .../resources/web/{pages => }/cp/index.html | 7 ++- .../web/{pages/Index.html => index.html} | 5 +- .../resources/resources/web/js/cp/index.js | 0 src/main/resources/resources/web/js/index.js | 12 +---- .../resources/web/js/utils/tables.js | 11 ++++ 23 files changed, 173 insertions(+), 79 deletions(-) rename src/main/java/ru/redguy/webinfomod/langs/{LangFile.java => Localization.java} (74%) rename src/main/java/ru/redguy/webinfomod/utils/{DoerUtils.java => ActionsUtils.java} (58%) create mode 100644 src/main/java/ru/redguy/webinfomod/utils/BasePlaceholders.java create mode 100644 src/main/java/ru/redguy/webinfomod/utils/Placeholder.java create mode 100644 src/main/java/ru/redguy/webinfomod/utils/PlaceholdersUtils.java rename src/main/resources/resources/web/{pages/auth/Index.html => auth/index.html} (50%) rename src/main/resources/resources/web/{pages => }/cp/index.html (77%) rename src/main/resources/resources/web/{pages/Index.html => index.html} (85%) create mode 100644 src/main/resources/resources/web/js/cp/index.js create mode 100644 src/main/resources/resources/web/js/utils/tables.js diff --git a/src/main/java/ru/redguy/webinfomod/IWebPage.java b/src/main/java/ru/redguy/webinfomod/IWebPage.java index 22e7acd..eba21a2 100644 --- a/src/main/java/ru/redguy/webinfomod/IWebPage.java +++ b/src/main/java/ru/redguy/webinfomod/IWebPage.java @@ -1,11 +1,11 @@ package ru.redguy.webinfomod; import fi.iki.elonen.NanoHTTPD; -import ru.redguy.webinfomod.langs.LangFile; +import ru.redguy.webinfomod.langs.Localization; import java.io.IOException; public interface IWebPage { - public NanoHTTPD.Response getPage(Config config, LangFile langFile, NanoHTTPD.IHTTPSession session) throws IOException; + public NanoHTTPD.Response getPage(Config config, NanoHTTPD.IHTTPSession session) throws IOException; } diff --git a/src/main/java/ru/redguy/webinfomod/WebInfoSponge.java b/src/main/java/ru/redguy/webinfomod/WebInfoSponge.java index 70db480..a61e2d2 100644 --- a/src/main/java/ru/redguy/webinfomod/WebInfoSponge.java +++ b/src/main/java/ru/redguy/webinfomod/WebInfoSponge.java @@ -5,7 +5,9 @@ import org.slf4j.Logger; import org.spongepowered.api.event.game.state.GameStartedServerEvent; import org.spongepowered.api.event.Listener; import org.spongepowered.api.plugin.Plugin; -import ru.redguy.webinfomod.langs.LangFile; +import ru.redguy.webinfomod.langs.Localization; +import ru.redguy.webinfomod.utils.BasePlaceholders; +import ru.redguy.webinfomod.utils.PlaceholdersUtils; import java.io.IOException; @@ -26,13 +28,13 @@ public class WebInfoSponge { public ru.redguy.webinfomod.Logger myLogger; public Config config; public WebServer webServer; - public LangFile langFile; @Listener public void onServerStart(GameStartedServerEvent event) throws IOException { myLogger = new ru.redguy.webinfomod.Logger(logger); config = new Config(myLogger); - langFile = new LangFile(config); - webServer = new WebServer(config.getInt("WebPort"), config, langFile); + Localization.loadLangFile(config); + BasePlaceholders.registerBase(); + webServer = new WebServer(config.getInt("WebPort"), config); } } diff --git a/src/main/java/ru/redguy/webinfomod/WebServer.java b/src/main/java/ru/redguy/webinfomod/WebServer.java index 4a24e60..0760817 100644 --- a/src/main/java/ru/redguy/webinfomod/WebServer.java +++ b/src/main/java/ru/redguy/webinfomod/WebServer.java @@ -10,7 +10,7 @@ import org.reflections.scanners.TypeAnnotationsScanner; import org.reflections.util.ClasspathHelper; import org.reflections.util.ConfigurationBuilder; import org.reflections.util.FilterBuilder; -import ru.redguy.webinfomod.langs.LangFile; +import ru.redguy.webinfomod.langs.Localization; import java.io.IOException; import java.lang.reflect.InvocationTargetException; @@ -20,9 +20,8 @@ public class WebServer extends NanoHTTPD { Config config; Reflections reflections; - LangFile langFile; - public WebServer(int port, Config config, LangFile langFile) throws IOException { + public WebServer(int port, Config config) throws IOException { super(port); ConfigurationBuilder configBuilder = new ConfigurationBuilder() @@ -37,7 +36,6 @@ public class WebServer extends NanoHTTPD { this.reflections = new Reflections(configBuilder); start(NanoHTTPD.SOCKET_READ_TIMEOUT, false); this.config = config; - this.langFile = langFile; } @Override @@ -55,7 +53,7 @@ public class WebServer extends NanoHTTPD { for (Class mClass : reflections.getTypesAnnotatedWith(WebPage.class, true)) { if (mClass.getAnnotation(WebPage.class).url().equals(session.getUri())) { try { - return (Response) mClass.getMethod("getPage", Config.class, LangFile.class, IHTTPSession.class).invoke(mClass.newInstance(), config, langFile, session); + return (Response) mClass.getMethod("getPage", Config.class, IHTTPSession.class).invoke(mClass.newInstance(), config, session); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { diff --git a/src/main/java/ru/redguy/webinfomod/langs/LangFile.java b/src/main/java/ru/redguy/webinfomod/langs/Localization.java similarity index 74% rename from src/main/java/ru/redguy/webinfomod/langs/LangFile.java rename to src/main/java/ru/redguy/webinfomod/langs/Localization.java index 18707a2..d1ab6a1 100644 --- a/src/main/java/ru/redguy/webinfomod/langs/LangFile.java +++ b/src/main/java/ru/redguy/webinfomod/langs/Localization.java @@ -9,23 +9,21 @@ import org.apache.commons.io.IOUtils; import java.io.*; import java.nio.charset.StandardCharsets; -public class LangFile { - private JsonObject jsonObject; - public LangFile(Config config) throws IOException { +public class Localization { + + private static JsonObject jsonObject; + + public static void loadLangFile(Config config) throws IOException { JsonParser parser = new JsonParser(); Object obj = parser.parse( IOUtils.toString( - LangFile.class.getResourceAsStream( + Localization.class.getResourceAsStream( "/resources/langs/"+config.getString("lang")+".json" ), StandardCharsets.UTF_8)); jsonObject = (JsonObject) obj; } - public LangFile(JsonObject jsonObject) { - this.jsonObject = jsonObject; - } - - public RootCategory getCategory(RootCategories category) { + public static RootCategory getCategory(RootCategories category) { switch (category) { case Links: return new Links(jsonObject.getAsJsonObject("Links")); diff --git a/src/main/java/ru/redguy/webinfomod/langs/Titles.java b/src/main/java/ru/redguy/webinfomod/langs/Titles.java index 22083f9..d8fe468 100644 --- a/src/main/java/ru/redguy/webinfomod/langs/Titles.java +++ b/src/main/java/ru/redguy/webinfomod/langs/Titles.java @@ -12,7 +12,11 @@ public class Titles implements RootCategory { @Override public String getString(Object object) { - return jsonObject.get(((ru.redguy.webinfomod.langs.enums.Titles)object).getName()).getAsString(); + if(object instanceof String) { + return jsonObject.get((String) object).getAsString(); + } else { + return jsonObject.get(((ru.redguy.webinfomod.langs.enums.Titles) object).getName()).getAsString(); + } } @Override diff --git a/src/main/java/ru/redguy/webinfomod/langs/Words.java b/src/main/java/ru/redguy/webinfomod/langs/Words.java index 1c08ec4..bc780b3 100644 --- a/src/main/java/ru/redguy/webinfomod/langs/Words.java +++ b/src/main/java/ru/redguy/webinfomod/langs/Words.java @@ -13,7 +13,11 @@ public class Words implements RootCategory { @Override public String getString(Object object) { - return jsonObject.get(((ru.redguy.webinfomod.langs.enums.Words)object).getName()).getAsString(); + if(object instanceof String) { + return jsonObject.get((String) object).getAsString(); + } else { + return jsonObject.get(((ru.redguy.webinfomod.langs.enums.Titles) object).getName()).getAsString(); + } } @Override diff --git a/src/main/java/ru/redguy/webinfomod/pages/Index.java b/src/main/java/ru/redguy/webinfomod/pages/Index.java index 6bce885..6d24220 100644 --- a/src/main/java/ru/redguy/webinfomod/pages/Index.java +++ b/src/main/java/ru/redguy/webinfomod/pages/Index.java @@ -3,27 +3,20 @@ package ru.redguy.webinfomod.pages; import fi.iki.elonen.NanoHTTPD; import org.apache.commons.io.IOUtils; import ru.redguy.webinfomod.*; -import ru.redguy.webinfomod.langs.LangFile; +import ru.redguy.webinfomod.langs.Localization; import ru.redguy.webinfomod.langs.enums.Links; import ru.redguy.webinfomod.langs.enums.RootCategories; +import ru.redguy.webinfomod.utils.PlaceholdersUtils; import ru.redguy.webinfomod.utils.WebUtils; import java.io.IOException; -import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; @WebPage(url = "/") public class Index implements IWebPage { - public NanoHTTPD.Response getPage(Config config, LangFile langFile, NanoHTTPD.IHTTPSession session) throws IOException { - String path = "/resources/web/pages/Index.html"; + public NanoHTTPD.Response getPage(Config config, NanoHTTPD.IHTTPSession session) throws IOException { + String path = "/resources/web/index.html"; String page = IOUtils.toString(WebServer.class.getResourceAsStream(path), StandardCharsets.UTF_8); - WebUtils.CookieHandler ch = new WebUtils.CookieHandler(session.getHeaders()); - if(ch.read("session") == null) { - page = page.replace("",""+langFile.getCategory(RootCategories.Links).getString(Links.login)+""); - } else { - page = page.replace("",""+langFile.getCategory(RootCategories.Links).getString(Links.logout)+"
" + - ""+langFile.getCategory(RootCategories.Links).getString(Links.controlPanel)+""); - } - return NanoHTTPD.newFixedLengthResponse(page); + return NanoHTTPD.newFixedLengthResponse(new PlaceholdersUtils(session).work(page)); } } diff --git a/src/main/java/ru/redguy/webinfomod/pages/auth/Index.java b/src/main/java/ru/redguy/webinfomod/pages/auth/Index.java index 1f41894..4a6d2ae 100644 --- a/src/main/java/ru/redguy/webinfomod/pages/auth/Index.java +++ b/src/main/java/ru/redguy/webinfomod/pages/auth/Index.java @@ -3,10 +3,11 @@ package ru.redguy.webinfomod.pages.auth; import fi.iki.elonen.NanoHTTPD; import org.apache.commons.io.IOUtils; import ru.redguy.webinfomod.*; -import ru.redguy.webinfomod.langs.LangFile; +import ru.redguy.webinfomod.langs.Localization; import ru.redguy.webinfomod.langs.enums.RootCategories; import ru.redguy.webinfomod.langs.enums.Titles; import ru.redguy.webinfomod.langs.enums.Words; +import ru.redguy.webinfomod.utils.PlaceholdersUtils; import java.io.IOException; import java.nio.charset.Charset; @@ -14,12 +15,9 @@ import java.nio.charset.Charset; @WebPage(url = "/auth/") public class Index implements IWebPage { - public NanoHTTPD.Response getPage(Config config, LangFile langFile, NanoHTTPD.IHTTPSession session) throws IOException { - String path = "/resources/web/pages/auth/Index.html"; + public NanoHTTPD.Response getPage(Config config, NanoHTTPD.IHTTPSession session) throws IOException { + String path = "/resources/web/auth/index.html"; String page = IOUtils.toString(WebServer.class.getResourceAsStream(path), Charset.defaultCharset()); - page = page.replace("",langFile.getCategory(RootCategories.Titles).getString(Titles.authPage)); - page = page.replace("",langFile.getCategory(RootCategories.Words).getString(Words.user)); - page = page.replace("",langFile.getCategory(RootCategories.Words).getString(Words.password)); - return NanoHTTPD.newFixedLengthResponse(page); + return NanoHTTPD.newFixedLengthResponse(new PlaceholdersUtils(session).work(page)); } } diff --git a/src/main/java/ru/redguy/webinfomod/pages/auth/Worker.java b/src/main/java/ru/redguy/webinfomod/pages/auth/Worker.java index d99290f..7df4f20 100644 --- a/src/main/java/ru/redguy/webinfomod/pages/auth/Worker.java +++ b/src/main/java/ru/redguy/webinfomod/pages/auth/Worker.java @@ -2,7 +2,7 @@ package ru.redguy.webinfomod.pages.auth; import fi.iki.elonen.NanoHTTPD; import ru.redguy.webinfomod.*; -import ru.redguy.webinfomod.langs.LangFile; +import ru.redguy.webinfomod.langs.Localization; import ru.redguy.webinfomod.utils.WebUtils; import java.io.IOException; @@ -13,7 +13,7 @@ import java.util.Map; @WebPage(url = "/auth/worker/") public class Worker implements IWebPage { - public NanoHTTPD.Response getPage(Config config, LangFile langFile, NanoHTTPD.IHTTPSession session) throws IOException { + public NanoHTTPD.Response getPage(Config config, NanoHTTPD.IHTTPSession session) throws IOException { try { session.parseBody(new HashMap()); } catch (NanoHTTPD.ResponseException e) { diff --git a/src/main/java/ru/redguy/webinfomod/pages/cp/Index.java b/src/main/java/ru/redguy/webinfomod/pages/cp/Index.java index 0c29025..8b18290 100644 --- a/src/main/java/ru/redguy/webinfomod/pages/cp/Index.java +++ b/src/main/java/ru/redguy/webinfomod/pages/cp/Index.java @@ -6,9 +6,10 @@ import ru.redguy.webinfomod.Config; import ru.redguy.webinfomod.IWebPage; import ru.redguy.webinfomod.WebPage; import ru.redguy.webinfomod.WebServer; -import ru.redguy.webinfomod.langs.LangFile; +import ru.redguy.webinfomod.langs.Localization; import ru.redguy.webinfomod.langs.enums.Links; import ru.redguy.webinfomod.langs.enums.RootCategories; +import ru.redguy.webinfomod.utils.PlaceholdersUtils; import ru.redguy.webinfomod.utils.WebUtils; import java.io.IOException; @@ -16,16 +17,9 @@ import java.nio.charset.StandardCharsets; @WebPage(url = "/cp/") public class Index implements IWebPage { - public NanoHTTPD.Response getPage(Config config, LangFile langFile, NanoHTTPD.IHTTPSession session) throws IOException { - String path = "/resources/web/pages/cp/index.html"; + public NanoHTTPD.Response getPage(Config config, NanoHTTPD.IHTTPSession session) throws IOException { + String path = "/resources/web/cp/index.html"; String page = IOUtils.toString(WebServer.class.getResourceAsStream(path), StandardCharsets.UTF_8); - WebUtils.CookieHandler ch = new WebUtils.CookieHandler(session.getHeaders()); - if(ch.read("session") == null) { - page = page.replace("",""+langFile.getCategory(RootCategories.Links).getString(Links.login)+""); - } else { - page = page.replace("",""+langFile.getCategory(RootCategories.Links).getString(Links.logout)+"
" + - ""+langFile.getCategory(RootCategories.Links).getString(Links.controlPanel)+""); - } - return NanoHTTPD.newFixedLengthResponse(page); + return NanoHTTPD.newFixedLengthResponse(new PlaceholdersUtils(session).work(page)); } } diff --git a/src/main/java/ru/redguy/webinfomod/pages/json/MainData.java b/src/main/java/ru/redguy/webinfomod/pages/json/MainData.java index 64319de..a82157e 100644 --- a/src/main/java/ru/redguy/webinfomod/pages/json/MainData.java +++ b/src/main/java/ru/redguy/webinfomod/pages/json/MainData.java @@ -3,7 +3,7 @@ package ru.redguy.webinfomod.pages.json; import com.google.gson.JsonObject; import fi.iki.elonen.NanoHTTPD; import ru.redguy.webinfomod.*; -import ru.redguy.webinfomod.langs.LangFile; +import ru.redguy.webinfomod.langs.Localization; import ru.redguy.webinfomod.utils.DataUtils; import java.io.IOException; @@ -11,7 +11,7 @@ import java.io.IOException; @WebPage(url="/json/mainData.json") public class MainData implements IWebPage { - public NanoHTTPD.Response getPage(Config config, LangFile langFile, NanoHTTPD.IHTTPSession session) throws IOException { + public NanoHTTPD.Response getPage(Config config, NanoHTTPD.IHTTPSession session) throws IOException { JsonObject jsonObject = new JsonObject(); jsonObject.addProperty("MineV",config.getString("MineV")); StringBuilder players = new StringBuilder(); diff --git a/src/main/java/ru/redguy/webinfomod/pages/logout/Index.java b/src/main/java/ru/redguy/webinfomod/pages/logout/Index.java index 3974006..e4c8e41 100644 --- a/src/main/java/ru/redguy/webinfomod/pages/logout/Index.java +++ b/src/main/java/ru/redguy/webinfomod/pages/logout/Index.java @@ -2,14 +2,14 @@ package ru.redguy.webinfomod.pages.logout; import fi.iki.elonen.NanoHTTPD; import ru.redguy.webinfomod.*; -import ru.redguy.webinfomod.langs.LangFile; +import ru.redguy.webinfomod.langs.Localization; import ru.redguy.webinfomod.utils.WebUtils; import java.io.IOException; @WebPage(url = "/logout/") public class Index implements IWebPage { - public NanoHTTPD.Response getPage(Config config, LangFile langFile, NanoHTTPD.IHTTPSession session) throws IOException { + public NanoHTTPD.Response getPage(Config config, NanoHTTPD.IHTTPSession session) throws IOException { WebUtils.CookieHandler ch = new WebUtils.CookieHandler(session.getHeaders()); config.getLogger().info(LoggerType.Web,config.sessions.get(ch.read("session"))+ " has been logout!"); ch.delete("session"); diff --git a/src/main/java/ru/redguy/webinfomod/utils/DoerUtils.java b/src/main/java/ru/redguy/webinfomod/utils/ActionsUtils.java similarity index 58% rename from src/main/java/ru/redguy/webinfomod/utils/DoerUtils.java rename to src/main/java/ru/redguy/webinfomod/utils/ActionsUtils.java index 162a041..5b1e0ef 100644 --- a/src/main/java/ru/redguy/webinfomod/utils/DoerUtils.java +++ b/src/main/java/ru/redguy/webinfomod/utils/ActionsUtils.java @@ -1,5 +1,5 @@ package ru.redguy.webinfomod.utils; -public class DoerUtils { +public class ActionsUtils { } diff --git a/src/main/java/ru/redguy/webinfomod/utils/BasePlaceholders.java b/src/main/java/ru/redguy/webinfomod/utils/BasePlaceholders.java new file mode 100644 index 0000000..929a903 --- /dev/null +++ b/src/main/java/ru/redguy/webinfomod/utils/BasePlaceholders.java @@ -0,0 +1,40 @@ +package ru.redguy.webinfomod.utils; + +import ru.redguy.webinfomod.Logger; +import ru.redguy.webinfomod.langs.Localization; +import ru.redguy.webinfomod.langs.enums.Links; +import ru.redguy.webinfomod.langs.enums.RootCategories; + +import java.util.Arrays; +import java.util.Objects; + +public class BasePlaceholders { + public static void registerBase() { + PlaceholdersUtils.registerPlaceholder("auth", new Placeholder() { + @Override + public String getContent(String[] args, PlaceholdersUtils placeholdersUtils) { + WebUtils.CookieHandler ch = new WebUtils.CookieHandler(placeholdersUtils.getSession().getHeaders()); + if(ch.read("session") == null) { + return ""+ Localization.getCategory(RootCategories.Links).getString(Links.login)+""; + } else { + return ""+Localization.getCategory(RootCategories.Links).getString(Links.logout)+"
" + + ""+Localization.getCategory(RootCategories.Links).getString(Links.controlPanel)+""; + } + } + }); + + PlaceholdersUtils.registerPlaceholder("title", new Placeholder() { + @Override + public String getContent(String[] args, PlaceholdersUtils placeholdersUtils) { + return Objects.requireNonNull(Localization.getCategory(RootCategories.Titles)).getString(args[0]); + } + }); + + PlaceholdersUtils.registerPlaceholder("word", new Placeholder() { + @Override + public String getContent(String[] args, PlaceholdersUtils placeholdersUtils) { + return Objects.requireNonNull(Localization.getCategory(RootCategories.Words)).getString(args[0]); + } + }); + } +} diff --git a/src/main/java/ru/redguy/webinfomod/utils/Placeholder.java b/src/main/java/ru/redguy/webinfomod/utils/Placeholder.java new file mode 100644 index 0000000..547bb23 --- /dev/null +++ b/src/main/java/ru/redguy/webinfomod/utils/Placeholder.java @@ -0,0 +1,6 @@ +package ru.redguy.webinfomod.utils; + +public interface Placeholder { + + String getContent(String[] args,PlaceholdersUtils placeholdersUtils); +} diff --git a/src/main/java/ru/redguy/webinfomod/utils/PlaceholdersUtils.java b/src/main/java/ru/redguy/webinfomod/utils/PlaceholdersUtils.java new file mode 100644 index 0000000..2347913 --- /dev/null +++ b/src/main/java/ru/redguy/webinfomod/utils/PlaceholdersUtils.java @@ -0,0 +1,51 @@ +package ru.redguy.webinfomod.utils; + +import fi.iki.elonen.NanoHTTPD; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class PlaceholdersUtils { + + private static final HashMap placeholders = new HashMap<>(); + + public static void registerPlaceholder(String name, Placeholder placeholder) { + placeholders.put(name, placeholder); + } + + Pattern pattern = Pattern.compile("\\{(\\w.+ *\\w*)}"); + + private final NanoHTTPD.IHTTPSession session; + + public PlaceholdersUtils(NanoHTTPD.IHTTPSession session) { + this.session = session; + } + + public NanoHTTPD.IHTTPSession getSession() { + return session; + } + + public String work(String page) { + Matcher match = pattern.matcher(page); + while (match.find()) { + for (int i = 1; i <= match.groupCount(); i++) { + String found = match.group(i); + if (!found.equals("")) { + String placeholder = found.split(" ")[0]; + if (placeholders.containsKey(placeholder)) { + String[] args = found.split(" "); + if (args.length == 1) { + args = new String[0]; + } else { + args = Arrays.copyOfRange(args, 1, args.length); + } + page = page.replace("{" + found + "}", placeholders.get(placeholder).getContent(args, this)); + } + } + } + } + return page; + } +} diff --git a/src/main/resources/resources/langs/ru.json b/src/main/resources/resources/langs/ru.json index 1c47d2c..6b6a774 100644 --- a/src/main/resources/resources/langs/ru.json +++ b/src/main/resources/resources/langs/ru.json @@ -15,6 +15,7 @@ "EASY": "Простая", "NORMAL": "Нормальная", "HARD": "Сложная" - } + }, + "loading": "Загрузка..." } } \ No newline at end of file diff --git a/src/main/resources/resources/web/pages/auth/Index.html b/src/main/resources/resources/web/auth/index.html similarity index 50% rename from src/main/resources/resources/web/pages/auth/Index.html rename to src/main/resources/resources/web/auth/index.html index 4d97101..d621cc9 100644 --- a/src/main/resources/resources/web/pages/auth/Index.html +++ b/src/main/resources/resources/web/auth/index.html @@ -2,7 +2,7 @@ - <replace id="1"/> + {title auth} +
- + {auth}
diff --git a/src/main/resources/resources/web/js/cp/index.js b/src/main/resources/resources/web/js/cp/index.js new file mode 100644 index 0000000..e69de29 diff --git a/src/main/resources/resources/web/js/index.js b/src/main/resources/resources/web/js/index.js index eb8a3c7..b1073a9 100644 --- a/src/main/resources/resources/web/js/index.js +++ b/src/main/resources/resources/web/js/index.js @@ -20,14 +20,4 @@ function updatePageInfo() { } } -function appendLine(table,array) { - let tr = document.createElement("tr"); - for (let arrayKey in array) { - let td = document.createElement("td"); - td.innerText = array[arrayKey]; - tr.appendChild(td); - } - table.appendChild(tr); -} - -document.addEventListener("DOMContentLoaded", onload); \ No newline at end of file +document.addEventListener("DOMContentLoaded", onload); diff --git a/src/main/resources/resources/web/js/utils/tables.js b/src/main/resources/resources/web/js/utils/tables.js new file mode 100644 index 0000000..da67d4e --- /dev/null +++ b/src/main/resources/resources/web/js/utils/tables.js @@ -0,0 +1,11 @@ +class Tables { + static appendLine(table,array) { + let tr = document.createElement("tr"); + for (let arrayKey in array) { + let td = document.createElement("td"); + td.innerText = array[arrayKey]; + tr.appendChild(td); + } + table.appendChild(tr); + } +}