@@ -196,22 +190,27 @@ var TplMap = map[string]string{
@@ -224,11 +223,13 @@ var TplMap = map[string]string{
{{ define "content" }}
-
{{ .user }}
+
- Homepage
- {{ .homepage }}
+ - Email
+ - {{ .email }}
- About
- {{ .about }}
diff --git a/web/handler/html/settings.html b/web/handler/html/settings.html
index cc0c86c..273087d 100644
--- a/web/handler/html/settings.html
+++ b/web/handler/html/settings.html
@@ -8,22 +8,27 @@
diff --git a/web/handler/html/user.html b/web/handler/html/user.html
index 02678b8..93a6099 100644
--- a/web/handler/html/user.html
+++ b/web/handler/html/user.html
@@ -5,11 +5,13 @@
{{ define "content" }}
-
{{ .user }}
+
- Homepage
- {{ .homepage }}
+ - Email
+ - {{ .email }}
- About
- {{ .about }}
diff --git a/web/handler/settings_show.go b/web/handler/settings_show.go
index f034b95..957ab86 100644
--- a/web/handler/settings_show.go
+++ b/web/handler/settings_show.go
@@ -24,10 +24,7 @@ func (h *Handler) showSettingsView(w http.ResponseWriter, r *http.Request) {
}
session.Save(r, w)
h.renderLayout(w, "settings", map[string]interface{}{
- "flash": flash,
- "About": user.About,
- "Homepage": user.Homepage,
- "Style": user.Style,
- "Picture": user.Picture,
+ "flash": flash,
+ "User": user,
}, username)
}
diff --git a/web/handler/settings_update.go b/web/handler/settings_update.go
index c6bcc97..15f2fd7 100644
--- a/web/handler/settings_update.go
+++ b/web/handler/settings_update.go
@@ -13,7 +13,7 @@ func (h *Handler) updateSettings(w http.ResponseWriter, r *http.Request) {
return
}
f := form.NewSettingsForm(r)
- if err := h.storage.UpdateSettings(user, f.Homepage, f.About, f.Style, f.Picture); err != nil {
+ if err := h.storage.UpdateSettings(user, f.Homepage, f.About, f.Style, f.Picture, f.Email); err != nil {
serverError(w, err)
return
}
diff --git a/web/handler/user_show.go b/web/handler/user_show.go
index 6f79413..404f2c5 100644
--- a/web/handler/user_show.go
+++ b/web/handler/user_show.go
@@ -2,9 +2,11 @@ package handler
import (
"encoding/json"
+ "fmt"
"github.com/fogleman/gg"
"github.com/golang/freetype"
"github.com/golang/freetype/truetype"
+ "github.com/gorilla/feeds"
"github.com/gorilla/mux"
"golang.org/x/image/font"
"golang.org/x/image/font/gofont/goregular"
@@ -14,6 +16,7 @@ import (
"image/color"
"image/draw"
"strconv"
+ "time"
//"image/png"
"net/http"
@@ -77,6 +80,7 @@ func (h *Handler) showUserView(w http.ResponseWriter, r *http.Request) {
"homepage": user.Homepage,
"about": template.HTML(user.About),
"picture": user.Picture,
+ "email": user.Email,
"style": template.CSS(user.Style),
"showMore": showMore,
"page": page,
@@ -197,3 +201,49 @@ func (h *Handler) showUserStatusImageView(w http.ResponseWriter, r *http.Request
//avatar := createAvatar(text)
//png.Encode(w, avatar)
}
+
+func (h *Handler) showAtomView(w http.ResponseWriter, r *http.Request) {
+ username := mux.Vars(r)["user"]
+ user, err := h.storage.UserByName(username)
+ if err != nil {
+ notFound(w)
+ return
+ }
+
+ now := time.Now()
+ feed := &feeds.Feed{
+ Title: user.Name,
+ Link: &feeds.Link{Href: fmt.Sprintf("https://status.cafe/users/%s", username)}, // TODO change the scheme?
+ Author: &feeds.Author{Name: user.Name, Email: "todo@todo.com"}, // TODO EMAIL
+ Created: now,
+ }
+
+ statuses, _, err := h.storage.StatusByUsername(user.Name, 20, 0)
+ if err != nil {
+ serverError(w, err)
+ return
+ }
+
+ for _, status := range statuses {
+ if err != nil {
+ serverError(w, err)
+ return
+ }
+ feed.Items = append(feed.Items, &feeds.Item{
+ Title: status.Content,
+ Link: &feeds.Link{Href: fmt.Sprintf("https://status.cafe/users/%s/%d", username, status.Id)},
+ Author: &feeds.Author{Name: user.Name},
+ Content: status.Content,
+ Created: status.CreatedAt,
+ })
+ }
+ atom, err := feed.ToAtom()
+ if err != nil {
+ serverError(w, err)
+ return
+ }
+
+ w.Header().Set("Access-Control-Allow-Origin", "*")
+ w.Header().Set("Content-Type", "application/atom+xml")
+ w.Write([]byte(atom))
+}