Finish feeds

This commit is contained in:
Unknown 2014-03-15 05:30:59 -04:00
parent 06deed820d
commit 4b8e888437
6 changed files with 44 additions and 24 deletions

View file

@ -3,7 +3,7 @@ Gogs - Go Git Service [![wercker status](https://app.wercker.com/status/ad0bdb0b
Gogs(Go Git Service) is a GitHub-like clone in the Go Programming Language, it currently supports Linux and Max OS X, but Windows has **NOT** supported yet due to installation problem with [libgit2](http://libgit2.github.com/) in Windows. Gogs(Go Git Service) is a GitHub-like clone in the Go Programming Language, it currently supports Linux and Max OS X, but Windows has **NOT** supported yet due to installation problem with [libgit2](http://libgit2.github.com/) in Windows.
##### Current version: 0.0.7 Alpha ##### Current version: 0.0.8 Alpha
## Purpose ## Purpose

View file

@ -56,6 +56,7 @@ func NewRepoAction(user *User, repo *Repository) error {
return err return err
} }
// GetFeeds returns action list of given user in given context.
func GetFeeds(userid, offset int64, isProfile bool) ([]Action, error) { func GetFeeds(userid, offset int64, isProfile bool) ([]Action, error) {
actions := make([]Action, 0, 20) actions := make([]Action, 0, 20)
sess := orm.Limit(20, int(offset)).Desc("id").Where("user_id=?", userid) sess := orm.Limit(20, int(offset)).Desc("id").Where("user_id=?", userid)

View file

@ -97,7 +97,7 @@ func SignOutRequire() martini.Handler {
type FeedsForm struct { type FeedsForm struct {
UserId int64 `form:"userid" binding:"Required"` UserId int64 `form:"userid" binding:"Required"`
Offset int64 `form:"offset"` Page int64 `form:"p"`
} }
type UpdateProfileForm struct { type UpdateProfileForm struct {

View file

@ -5,6 +5,7 @@
package user package user
import ( import (
"fmt"
"net/http" "net/http"
"github.com/codegangsta/martini" "github.com/codegangsta/martini"
@ -26,10 +27,17 @@ func Dashboard(r render.Render, data base.TmplData, session sessions.Session) {
return return
} }
data["MyRepos"] = repos data["MyRepos"] = repos
feeds, err := models.GetFeeds(auth.SignedInId(session), 0, false)
if err != nil {
log.Handle(200, "user.Dashboard", data, r, err)
return
}
data["Feeds"] = feeds
r.HTML(200, "user/dashboard", data) r.HTML(200, "user/dashboard", data)
} }
func Profile(params martini.Params, r render.Render, req *http.Request, data base.TmplData, session sessions.Session) { func Profile(params martini.Params, req *http.Request, r render.Render, data base.TmplData, session sessions.Session) {
data["Title"] = "Profile" data["Title"] = "Profile"
// TODO: Need to check view self or others. // TODO: Need to check view self or others.
@ -40,23 +48,13 @@ func Profile(params martini.Params, r render.Render, req *http.Request, data bas
} }
data["Owner"] = user data["Owner"] = user
data["TabName"] = req.FormValue("tab")
req.ParseForm() feeds, err := models.GetFeeds(user.Id, 0, true)
tab := req.Form.Get("tab") if err != nil {
data["TabName"] = tab log.Handle(200, "user.Profile", data, r, err)
return
switch tab {
case "activity":
feeds, err := models.GetFeeds(user.Id, 0, true)
if err != nil {
log.Handle(200, "user.Profile", data, r, err)
return
}
data["Feeds"] = feeds
default:
} }
data["Feeds"] = feeds
r.HTML(200, "user/profile", data) r.HTML(200, "user/profile", data)
} }
@ -172,10 +170,21 @@ func Delete(data base.TmplData, req *http.Request, session sessions.Session, r r
r.HTML(200, "user/delete", data) r.HTML(200, "user/delete", data)
} }
const (
feedTpl = `<i class="icon fa fa-%s"></i>
<div class="info"><span class="meta">%s</span><br>%s</div>`
)
func Feeds(form auth.FeedsForm, r render.Render) { func Feeds(form auth.FeedsForm, r render.Render) {
actions, err := models.GetFeeds(form.UserId, form.Offset, false) actions, err := models.GetFeeds(form.UserId, form.Page*20, false)
if err != nil { if err != nil {
r.JSON(500, err) r.JSON(500, err)
} }
r.JSON(200, actions)
feeds := make([]string, len(actions))
for i := range actions {
feeds[i] = fmt.Sprintf(feedTpl, base.ActionIcon(actions[i].OpType),
base.TimeSince(actions[i].Created), base.ActionDesc(actions[i]))
}
r.JSON(200, &feeds)
} }

View file

@ -14,7 +14,17 @@
<div id="gogs-body" class="container"> <div id="gogs-body" class="container">
{{if .HasInfo}}<div class="alert alert-info">{{.InfoMsg}}</div>{{end}} {{if .HasInfo}}<div class="alert alert-info">{{.InfoMsg}}</div>{{end}}
<div id="gogs-feed-left" class="col-md-8"> <div id="gogs-feed-left" class="col-md-8">
Website is still in the progress of building...please come back later! <strong>{{.SignedUserName}}</strong> is logged! <ul class="list-unstyled activity-list">
{{range .Feeds}}
<li>
<i class="icon fa fa-{{ActionIcon .OpType}}"></i>
<div class="info"><span class="meta">{{TimeSince .Created}}</span><br>{{ActionDesc . | str2html}}</div>
<span class="clearfix"></span>
</li>
{{else}}
<li>Not any activity yet.</li>
{{end}}
</ul>
</div> </div>
<div id="gogs-feed-right" class="col-md-4"> <div id="gogs-feed-right" class="col-md-4">
<div class="panel panel-default repo-panel"> <div class="panel panel-default repo-panel">

View file

@ -39,12 +39,12 @@
<span class="clearfix"></span> <span class="clearfix"></span>
</li> </li>
{{else}} {{else}}
<li>Not found any activity</li> <li>Not any public activity yet.</li>
{{end}} {{end}}
</ul> </ul>
</div> </div>
{{else}} {{else}}
<div class="tab-pane active">repo</div> <div class="tab-pane active">repo</div>
{{end}} {{end}}
</div> </div>
</div> </div>