aboutsummaryrefslogtreecommitdiff
path: root/juick-spring-www/src/main/java/com/juick/www/controllers/HelpController.java
diff options
context:
space:
mode:
Diffstat (limited to 'juick-spring-www/src/main/java/com/juick/www/controllers/HelpController.java')
-rw-r--r--juick-spring-www/src/main/java/com/juick/www/controllers/HelpController.java58
1 files changed, 57 insertions, 1 deletions
diff --git a/juick-spring-www/src/main/java/com/juick/www/controllers/HelpController.java b/juick-spring-www/src/main/java/com/juick/www/controllers/HelpController.java
index dad3ff9f..49e24c8c 100644
--- a/juick-spring-www/src/main/java/com/juick/www/controllers/HelpController.java
+++ b/juick-spring-www/src/main/java/com/juick/www/controllers/HelpController.java
@@ -1,12 +1,68 @@
package com.juick.www.controllers;
+import com.juick.User;
+import com.juick.server.util.HttpNotFoundException;
+import com.juick.service.UserService;
+import com.juick.util.UserUtils;
+import org.springframework.core.io.ClassPathResource;
import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
+import javax.inject.Inject;
+import java.io.IOException;
+import java.net.URISyntaxException;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.security.Principal;
+import java.util.Optional;
+import java.util.stream.Collectors;
+
/**
* Created by aalexeev on 11/21/16.
*/
@Controller
-@RequestMapping("/help")
public class HelpController {
+ @Inject
+ UserService userService;
+
+ @RequestMapping({"/help", "/help/{lang}", "/help/{lang}/{page}"})
+ protected String doGetHelp(
+ Principal principal,
+ @PathVariable("lang") Optional<String> lang,
+ @PathVariable("page") Optional<String> page,
+ ModelMap model) throws IOException, URISyntaxException {
+ String name = UserUtils.getUsername(principal, null);
+ User visitor = userService.getUserByName(name);
+
+ lang.ifPresent(l -> {
+ if (l.length() != 2 || !l.matches("^[a-z]+$")) {
+ throw new HttpNotFoundException();
+ }
+ });
+ if (!lang.isPresent()) {
+ lang = Optional.of("ru");
+ }
+
+ page.ifPresent(p -> {
+ if (!p.matches("^[a-zA-Z0-9\\-]*$") || p.equals("navigation") || p.equals("index")) {
+ throw new HttpNotFoundException();
+ }
+ });
+ if (!page.isPresent()) {
+ page = Optional.of("index");
+ }
+
+ String filePath = "help/" + lang.get() + "/" + page.get();
+ String navigationPath = "help/" + lang.get() + "/navigation";
+
+ model.addAttribute("title", "Помощь");
+ model.addAttribute("visitor", visitor);
+ model.addAttribute("help_nav", Files.readAllLines(Paths.get(new ClassPathResource(navigationPath).getURI()))
+ .stream().collect(Collectors.joining()));
+ model.addAttribute("help_data", Files.readAllLines(Paths.get(new ClassPathResource(filePath).getURI()))
+ .stream().collect(Collectors.joining()));
+ return "views/help";
+ }
}