Przeglądaj źródła

Go back to previous page when saving settings

Zed 7 lat temu
rodzic
commit
3f7ccb5525
2 zmienionych plików z 10 dodań i 3 usunięć
  1. 7 2
      src/nitter.nim
  2. 3 1
      src/views/preferences.nim

+ 7 - 2
src/nitter.nim

@@ -90,7 +90,7 @@ routes:
     var prefs = cookiePrefs()
     genUpdatePrefs()
     setCookie("preferences", $prefs.id, daysForward(360), httpOnly=true, secure=cfg.useHttps)
-    redirect("/")
+    redirect(decodeUrl(@"referer"))
 
   post "/resetprefs":
     var prefs = cookiePrefs()
@@ -99,7 +99,12 @@ routes:
     redirect("/settings")
 
   get "/settings":
-    resp renderMain(renderPreferences(cookiePrefs()), cfg.title, "Preferences")
+    let refUri = request.headers.getOrDefault("Referer").parseUri()
+    var path =
+      if refUri.path.len > 0 and "/settings" notin refUri.path: refUri.path
+      else: "/"
+    if refUri.query.len > 0: path &= &"?{refUri.query}"
+    resp renderMain(renderPreferences(cookiePrefs(), path), cfg.title, "Preferences")
 
   get "/@name/?":
     cond '.' notin @"name"

+ 3 - 1
src/views/preferences.nim

@@ -51,10 +51,12 @@ macro renderPrefs*(): untyped =
 
       result[2].add stmt
 
-proc renderPreferences*(prefs: Prefs): VNode =
+proc renderPreferences*(prefs: Prefs; path: string): VNode =
   buildHtml(tdiv(class="preferences-container")):
     fieldset(class="preferences"):
       form(`method`="post", action="saveprefs"):
+        verbatim "<input name=\"referer\" style=\"display: none\" value=\"$1\"/>" % path
+
         renderPrefs()
 
         button(`type`="submit", class="pref-submit"):