]> source.dussan.org Git - gitea.git/commitdiff
Finish feeds
authorUnknown <joe2010xtmf@163.com>
Sat, 15 Mar 2014 09:30:59 +0000 (05:30 -0400)
committerUnknown <joe2010xtmf@163.com>
Sat, 15 Mar 2014 09:30:59 +0000 (05:30 -0400)
README.md
models/action.go
modules/auth/user.go
routers/user/user.go
templates/user/dashboard.tmpl
templates/user/profile.tmpl

index 0e354a9d4713408d69c052224cf6cf57e734606d..dd95e90d6fa174abd2f08120097ccd70b59979eb 100644 (file)
--- a/README.md
+++ b/README.md
@@ -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.
 
-##### Current version: 0.0.7 Alpha
+##### Current version: 0.0.8 Alpha
 
 ## Purpose
 
index 8008d331cb644013d827d691d811eea47845ac84..6a77d73003e8fd750320e7f353d6bbd665aa2ec5 100644 (file)
@@ -56,6 +56,7 @@ func NewRepoAction(user *User, repo *Repository) error {
        return err
 }
 
+// GetFeeds returns action list of given user in given context.
 func GetFeeds(userid, offset int64, isProfile bool) ([]Action, error) {
        actions := make([]Action, 0, 20)
        sess := orm.Limit(20, int(offset)).Desc("id").Where("user_id=?", userid)
index d950b25002883311347344d3ba9a8cce83684c1d..e5f22a0915b79025b5367007ff87bc440e184f69 100644 (file)
@@ -97,7 +97,7 @@ func SignOutRequire() martini.Handler {
 
 type FeedsForm struct {
        UserId int64 `form:"userid" binding:"Required"`
-       Offset int64 `form:"offset"`
+       Page   int64 `form:"p"`
 }
 
 type UpdateProfileForm struct {
index 680055f6611d41ae1b671991cb1021e2a53d5cc3..513767a30b00448dc6ff366ea607d0eb71733a26 100644 (file)
@@ -5,6 +5,7 @@
 package user
 
 import (
+       "fmt"
        "net/http"
 
        "github.com/codegangsta/martini"
@@ -26,10 +27,17 @@ func Dashboard(r render.Render, data base.TmplData, session sessions.Session) {
                return
        }
        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)
 }
 
-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"
 
        // 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
-
-       req.ParseForm()
-       tab := req.Form.Get("tab")
-       data["TabName"] = tab
-
-       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["TabName"] = req.FormValue("tab")
+       feeds, err := models.GetFeeds(user.Id, 0, true)
+       if err != nil {
+               log.Handle(200, "user.Profile", data, r, err)
+               return
        }
-
+       data["Feeds"] = feeds
        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)
 }
 
+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) {
-       actions, err := models.GetFeeds(form.UserId, form.Offset, false)
+       actions, err := models.GetFeeds(form.UserId, form.Page*20, false)
        if err != nil {
                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)
 }
index 7768a7ee6d77b52ac6fe7eb35244d44751af9ebc..14b34515621d928da4afc2cd2a9bda0ef5030b39 100644 (file)
 <div id="gogs-body" class="container">
     {{if .HasInfo}}<div class="alert alert-info">{{.InfoMsg}}</div>{{end}}
     <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 id="gogs-feed-right" class="col-md-4">
         <div class="panel panel-default repo-panel">
index fd4313efdc9e5339acb76c3a6cec3cb712acae75..f2bb984b318d01e521467795d4a218ed9ad4d206 100644 (file)
                         <span class="clearfix"></span>
                     </li>
                 {{else}}
-                    <li>Not found any activity</li>
+                    <li>Not any public activity yet.</li>
                 {{end}}
                 </ul>
             </div>
             {{else}}
-                <div class="tab-pane active">repo</div>
+            <div class="tab-pane active">repo</div>
             {{end}}
         </div>
     </div>