func Review(w http.ResponseWriter, r *http.Request, a app.App) { bar, _ := strconv.Atoi(r.URL.Query().Get("save")) foo, _ := b64.StdEncoding.DecodeString(r.URL.Query().Get("id")) id := string(foo) qq := a.Env().Db.Find(bson.M{"resource": id}) cnt, _ := qq.Count() rec := schema.Record{} qq.Iter().Next(&rec) if cnt != 1 || !((rec.Parsed == 0 && bar == 0) || (rec.Parsed == 0 && bar == 1)) { fmt.Fprintf(w, "Wrong flat id or parsed state provided: %d, %d", cnt, rec.Parsed) return } fmt.Fprintf(w, `<html><head> <script> window.onunload = refreshParent; function refreshParent() { window.opener.location.reload(); } function continueExecution() { window.close(); } function closeSelf(f) { f.submit(); setTimeout(continueExecution, 1000); } </script> </head><body>`) if bar == 1 { oldmeta := schema.WWWRecord{} err := json.Unmarshal([]byte(rec.Meta), &oldmeta) if err != nil { log.Panic(err) } meta := schema.MetaRecord{} meta.SavedHTMLName = oldmeta.SavedHTMLName meta.ScreenshotName = oldmeta.ScreenshotName meta.SlackTS = oldmeta.SlackTS meta.SlackCN = oldmeta.SlackCN meta.ReviewTime = time.Now().Format("Jan 2, 2006 at 3:04pm (MST)") if len(meta.SlackCN) < 3 { log.Panic("no meta") } meta.TimeToOffice = r.URL.Query().Get("tto") meta.Rent = r.URL.Query().Get("rent") meta.Address = r.URL.Query().Get("address") meta.Good = (r.URL.Query().Get("valid") == "true") b, _ := json.Marshal(meta) rec.Meta = string(b) rec.Parsed = 1 fmt.Printf("Debug: stored time '%s'\n", rec.Tm) // app.Env().Db.Update(bson.M{"resource": id}, rec) fmt.Fprintf(w, "<script>window.close();</script></body></html>") } else { w.Header().Set("Content-Type", "text/html") meta := schema.WWWRecord{} json.Unmarshal([]byte(rec.Meta), &meta) fmt.Fprintf(w, `(object screenshot and editor for <a href="%v">%v</a> go here)<br /> Found at time: `+rec.Tm+`<br /> Meta raw: <i>`+html.EscapeString(rec.Meta)+`</i><br /> <FORM METHOD="GET" ACTION="/review" onsubmit="closeSelf(this);"> <input type="hidden" name="save" value="1" /> <input type="hidden" name="id" value="`+r.URL.Query().Get("id")+`" /> TimeToOffice minutes: <input type="text" name="tto" /><br /> Rent (kr): <input type="text" name="rent" /><br /> Address: <input type="text" name="address" /><br /> Valid content (no daily rent, weekly rent, Gothia cup/Summer specials): <input type="checkbox" name="valid" value="true" /> <br /><hr /><input type="submit" value="SEND" /> </FORM><hr /><br /><br /><img src="file/`+meta.ScreenshotName+`"/> `, rec.Link, rec.Link) fmt.Fprintf(w, "</body></html>") } }