preferences.nim 962 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. import strutils, uri, os, algorithm
  2. import jester
  3. import router_utils
  4. import ".."/[types]
  5. import ../views/[general, preferences]
  6. export preferences
  7. proc findThemes*(dir: string): seq[string] =
  8. for kind, path in walkDir(dir / "css" / "themes"):
  9. let theme = path.splitFile.name
  10. result.add theme.capitalizeAscii.replace("_", " ")
  11. sort(result)
  12. proc createPrefRouter*(cfg: Config) =
  13. router preferences:
  14. get "/settings":
  15. let
  16. prefs = cookiePrefs()
  17. html = renderPreferences(prefs, refPath(), findThemes(cfg.staticDir))
  18. resp renderMain(html, request, cfg, prefs, "Preferences")
  19. get "/settings/@i?":
  20. redirect("/settings")
  21. post "/saveprefs":
  22. genUpdatePrefs()
  23. redirect(refPath())
  24. post "/resetprefs":
  25. genResetPrefs()
  26. redirect($(parseUri("/settings") ? filterParams(request.params)))
  27. post "/enablehls":
  28. savePref("hlsPlayback", "on", request)
  29. redirect(refPath())