Browse Source

new commits table

Unknwon 9 years ago
parent
commit
aa65761d81

+ 7 - 0
models/repo.go

@@ -166,6 +166,13 @@ type Repository struct {
 	Updated time.Time `xorm:"UPDATED"`
 }
 
+func (repo *Repository) AfterSet(colName string, _ xorm.Cell) {
+	switch colName {
+	case "updated":
+		repo.Updated = regulateTimeZone(repo.Updated)
+	}
+}
+
 func (repo *Repository) getOwner(e Engine) (err error) {
 	if repo.Owner == nil {
 		repo.Owner, err = getUserByID(e, repo.OwnerID)

+ 3 - 1
modules/git/repo_commit.go

@@ -275,9 +275,11 @@ func (repo *Repository) searchCommits(id sha1, keyword string) (*list.List, erro
 	return parsePrettyFormatLog(repo, stdout)
 }
 
+var CommitsRangeSize = 50
+
 func (repo *Repository) commitsByRange(id sha1, page int) (*list.List, error) {
 	stdout, stderr, err := com.ExecCmdDirBytes(repo.Path, "git", "log", id.String(),
-		"--skip="+com.ToStr((page-1)*50), "--max-count=50", prettyLogFormat)
+		"--skip="+com.ToStr((page-1)*CommitsRangeSize), "--max-count="+com.ToStr(CommitsRangeSize), prettyLogFormat)
 	if err != nil {
 		return nil, errors.New(string(stderr))
 	}

File diff suppressed because it is too large
+ 0 - 0
public/css/gogs.min.css


+ 1 - 1
public/less/_admin.less

@@ -1,6 +1,6 @@
 .admin {
 	padding-top: 15px;
-	padding-bottom: @footer-margin * 3;
+	padding-bottom: @footer-margin * 2;
 
 	.table.segment {
 		padding: 0;

+ 7 - 0
public/less/_base.less

@@ -92,6 +92,13 @@ img {
 		&.small {
 			font-size: 0.75em;
 		}
+
+		&.truncate {
+			overflow: hidden;
+			text-overflow: ellipsis;
+			white-space: nowrap;
+			display: inline-block;
+		}
 	}
 
 	.message {

+ 5 - 1
public/less/_form.less

@@ -9,7 +9,11 @@
 .ui.attached.header {
 	background: #f0f0f0;
 	.right {
-		margin-top: -6px;
+		margin-top: -5px;
+		.button {
+			padding: 8px 10px;
+			font-weight: normal;
+		}
 	}
 }
 .repository {

+ 1 - 1
public/less/_home.less

@@ -1,5 +1,5 @@
 .home {
-	padding-bottom: @footer-margin * 3;
+	padding-bottom: @footer-margin * 2;
 	.logo {
 		max-width: 250px;
 	}

+ 1 - 1
public/less/_install.less

@@ -1,6 +1,6 @@
 .install {
 	padding-top: 45px;
-	padding-bottom: @footer-margin * 3;
+	padding-bottom: @footer-margin * 2;
 	form {
 		@input-padding: 320px !important;
 		label {

+ 47 - 1
public/less/_repository.less

@@ -2,7 +2,7 @@
 	@mega-octicon-width: 30px;
 
 	padding-top: 15px;
-	padding-bottom: @footer-margin * 3;
+	padding-bottom: @footer-margin * 2;
 
 	.head {
 		.column {
@@ -424,6 +424,52 @@
 			}
 		}
 	}
+
+	&.commits {
+		.header {
+			.ui.right {
+				.search {
+					input {
+						font-weight: normal;
+						padding: 5px 10px;
+					}
+				}
+				.button {
+					float: right;
+					margin-left: 5px;
+					margin-top: 1px;
+				}
+			}
+		}
+	}
+	.commits.table {
+		font-size: 13px;
+		th, td {
+			&:first-child {
+				padding-left: 15px;
+			}
+		}
+		td {
+			line-height: 15px;
+		}
+		.author {
+			min-width: 180px;
+		}
+		.sha {
+			a {
+				font-family: Consolas, Menlo, Monaco, "Lucida Console", monospace;
+				font-size: 14px;
+				padding: 6px 10px 4px 10px;
+				font-weight: normal;
+			}
+		}
+		.message span {
+			max-width: 500px;
+		}
+		.date {
+	    width: 120px;
+		}
+	}
 }
 
 .ui.comments {

+ 1 - 1
public/less/_user.less

@@ -1,6 +1,6 @@
 .user {
 	padding-top: 15px;
-	padding-bottom: @footer-margin * 3;
+	padding-bottom: @footer-margin * 2;
 
 	&.settings {
 		.key.list {

+ 7 - 17
routers/repo/commit.go

@@ -9,6 +9,7 @@ import (
 	"path"
 
 	"github.com/Unknwon/com"
+	"github.com/Unknwon/paginater"
 
 	"github.com/gogits/gogs/models"
 	"github.com/gogits/gogs/modules/base"
@@ -44,7 +45,7 @@ func RenderIssueLinks(oldCommits *list.List, repoLink string) *list.List {
 }
 
 func Commits(ctx *middleware.Context) {
-	ctx.Data["IsRepoToolbarCommits"] = true
+	ctx.Data["PageIsCommits"] = true
 
 	userName := ctx.Repo.Owner.Name
 	repoName := ctx.Repo.Repository.Name
@@ -64,19 +65,11 @@ func Commits(ctx *middleware.Context) {
 		return
 	}
 
-	// Calculate and validate page number.
-	page, _ := com.StrTo(ctx.Query("p")).Int()
-	if page < 1 {
+	page := ctx.QueryInt("page")
+	if page <= 1 {
 		page = 1
 	}
-	lastPage := page - 1
-	if lastPage < 0 {
-		lastPage = 0
-	}
-	nextPage := page + 1
-	if page*50 > commitsCount {
-		nextPage = 0
-	}
+	ctx.Data["Page"] = paginater.New(commitsCount, git.CommitsRangeSize, page, 5)
 
 	// Both `git log branchName` and `git log commitId` work.
 	commits, err := ctx.Repo.Commit.CommitsByRange(page)
@@ -91,14 +84,11 @@ func Commits(ctx *middleware.Context) {
 	ctx.Data["Username"] = userName
 	ctx.Data["Reponame"] = repoName
 	ctx.Data["CommitCount"] = commitsCount
-	ctx.Data["LastPageNum"] = lastPage
-	ctx.Data["NextPageNum"] = nextPage
 	ctx.HTML(200, COMMITS)
 }
 
 func SearchCommits(ctx *middleware.Context) {
-	ctx.Data["IsSearchPage"] = true
-	ctx.Data["IsRepoToolbarCommits"] = true
+	ctx.Data["PageIsCommits"] = true
 
 	keyword := ctx.Query("q")
 	if len(keyword) == 0 {
@@ -253,7 +243,7 @@ func Diff(ctx *middleware.Context) {
 	ctx.Data["Parents"] = parents
 	ctx.Data["DiffNotAvailable"] = diff.NumFiles() == 0
 	ctx.Data["SourcePath"] = setting.AppSubUrl + "/" + path.Join(userName, repoName, "src", commitId)
-	if (commit.ParentCount() > 0) {
+	if commit.ParentCount() > 0 {
 		ctx.Data["BeforeSourcePath"] = setting.AppSubUrl + "/" + path.Join(userName, repoName, "src", parents[0])
 	}
 	ctx.Data["RawPath"] = setting.AppSubUrl + "/" + path.Join(userName, repoName, "raw", commitId)

+ 7 - 8
templates/repo/commits.tmpl

@@ -1,9 +1,8 @@
-{{template "ng/base/head" .}}
-{{template "ng/base/header" .}}
-<div id="repo-wrapper">
-    {{template "repo/header_old" .}}
-	<div class="container clear">
-  		{{template "repo/commits_table" .}}
-  	</div>
+{{template "base/head" .}}
+<div class="repository commits">
+	{{template "repo/header" .}}
+  <div class="ui container">
+		{{template "repo/commits_table" .}}
+	</div>
 </div>
-{{template "ng/base/footer" .}}
+{{template "base/footer" .}}

+ 64 - 46
templates/repo/commits_table.tmpl

@@ -1,48 +1,66 @@
-<div id="commits-list">
-    <div class="panel panel-radius">
-        <div class="panel-header">
-            {{if not .IsDiffCompare}}
-            <form class="search pull-right" action="{{.RepoLink}}/commits/{{.BranchName}}/search" method="get" id="commits-search-form">
-                <input class="ipt ipt-radius" type="search" name="q" placeholder="{{.i18n.Tr "repo.commits.search"}}" value="{{.Keyword}}" />
-                <button class="btn btn-black btn-small btn-radius">{{.i18n.Tr "repo.commits.find"}}</button>
-            </form>
-            {{end}}
-            <h4>{{.CommitCount}} {{.i18n.Tr "repo.commits.commits"}}</h4>
-        </div>
-        <table class="panel-body table commit-list table-striped">
-            <thead>
-                <tr>
-                    <th class="author">{{.i18n.Tr "repo.commits.author"}}</th>
-                    <th class="sha">SHA1</th>
-                    <th class="message">{{.i18n.Tr "repo.commits.message"}}</th>
-                    <th class="date">{{.i18n.Tr "repo.commits.date"}}</th>
-                </tr>
-            </thead>
-            <tbody>
-            {{ $username := .Username}}
-            {{ $reponame := .Reponame}}
-            {{$r := List .Commits}}
-            {{range $r}}
-            <tr>
-                <td class="author">
-                    {{if .User}}
-                    <img class="avatar-20" src="{{.User.AvatarLink}}" alt=""/>&nbsp;&nbsp;&nbsp;<a href="{{AppSubUrl}}/{{.User.Name}}">{{.Author.Name}}</a>
-                    {{else}}
-                    <img class="avatar-20" src="{{AvatarLink .Author.Email}}" alt=""/>&nbsp;&nbsp;&nbsp;{{.Author.Name}}
-                    {{end}}
-                </td>
-                <td class="sha"><a rel="nofollow" class="label label-green" href="{{AppSubUrl}}/{{$username}}/{{$reponame}}/commit/{{.Id}} ">{{SubStr .Id.String 0 10}} </a></td>
-                <td class="message"><span class="text-truncate">{{RenderCommitMessage .Summary $.RepoLink}}</span></td>
-                <td class="date">{{TimeSince .Author.When $.Lang}}</td>
-            </tr>
-            {{end}}
-            </tbody>
-        </table>
-    </div>
-    {{if and (not .IsSearchPage) (not .IsDiffCompare)}}
-    <ul class="pagination">
-        {{if .LastPageNum}}<li><a class="btn btn-medium btn-gray btn-radius" href="{{.RepoLink}}/commits/{{.BranchName}}{{if .FileName}}/{{.FileName}}{{end}}?p={{.LastPageNum}}" rel="nofollow">&laquo; {{.i18n.Tr "repo.commits.newer"}}</a></li>{{end}}
-        {{if .NextPageNum}}<li><a class="btn btn-medium btn-gray btn-radius" href="{{.RepoLink}}/commits/{{.BranchName}}{{if .FileName}}/{{.FileName}}{{end}}?p={{.NextPageNum}}" rel="nofollow">&raquo; {{.i18n.Tr "repo.commits.older"}}</a></li>{{end}}
-    </ul>
+<h4 class="ui top attached header">
+  {{.CommitCount}} {{.i18n.Tr "repo.commits.commits"}}
+  {{if .PageIsCommits}}
+  <div class="ui right">
+    <form action="{{.RepoLink}}/commits/{{.BranchName}}/search">
+      <div class="ui tiny search input">
+        <input name="q" placeholder="{{.i18n.Tr "repo.commits.search"}}" value="{{.Keyword}}" autofocus>
+      </div>
+      <button class="ui black tiny button" data-panel="#add-deploy-key-panel">{{.i18n.Tr "repo.commits.find"}}</button>
+    </form>
+  </div>
+  {{end}}
+</h4>
+<div class="ui attached table segment">
+  <table class="ui very basic striped commits table">
+    <thead>
+      <tr>
+        <th>{{.i18n.Tr "repo.commits.author"}}</th>
+        <th>SHA1</th>
+        <th>{{.i18n.Tr "repo.commits.message"}}</th>
+        <th>{{.i18n.Tr "repo.commits.date"}}</th>
+      </tr>
+    </thead>
+    <tbody>
+    {{ $username := .Username}}
+    {{ $reponame := .Reponame}}
+    {{  $r:= List .Commits}}
+    {{range $r}}
+      <tr>
+        <td class="author">
+          {{if .User}}
+          <img class="ui avatar image" src="{{.User.AvatarLink}}" alt=""/>&nbsp;&nbsp;<a href="{{AppSubUrl}}/{{.User.Name}}">{{.Author.Name}}</a>
+          {{else}}
+          <img class="ui avatar image" src="{{AvatarLink .Author.Email}}" alt=""/>&nbsp;&nbsp;{{.Author.Name}}
+          {{end}}
+        </td>
+        <td class="sha"><a rel="nofollow" class="ui green label" href="{{AppSubUrl}}/{{$username}}/{{$reponame}}/commit/{{.Id}} ">{{SubStr .Id.String 0 10}} </a></td>
+        <td class="message"><span class="text truncate">{{RenderCommitMessage .Summary $.RepoLink}}</span></td>
+        <td class="date">{{TimeSince .Author.When $.Lang}}</td>
+      </tr>
     {{end}}
+    </tbody>
+  </table>
 </div>
+
+{{with .Page}}
+{{if gt .TotalPages 1}}
+<div class="center page buttons">
+  <div class="ui borderless pagination menu">
+    <a class="{{if not .HasPrevious}}disabled{{end}} item" {{if .HasPrevious}}href="{{$.RepoLink}}/commits/{{$.BranchName}}{{if $.FileName}}/{{$.FileName}}{{end}}?page={{.Previous}}"{{end}}>
+      <i class="left arrow icon"></i> {{$.i18n.Tr "repo.issues.previous"}}
+    </a>
+    {{range .Pages}}
+    {{if eq .Num -1}}
+    <a class="disabled item">...</a>
+    {{else}}
+    <a class="{{if .IsCurrent}}active{{end}} item" {{if not .IsCurrent}}href="{{$.RepoLink}}/commits/{{$.BranchName}}{{if $.FileName}}/{{$.FileName}}{{end}}?page={{.Num}}"{{end}}>{{.Num}}</a>
+    {{end}}
+    {{end}}
+    <a class="{{if not .HasNext}}disabled{{end}} item" {{if .HasNext}}href="{{$.RepoLink}}/commits/{{$.BranchName}}{{if $.FileName}}/{{$.FileName}}{{end}}?page={{.Next}}"{{end}}>
+      {{$.i18n.Tr "repo.issues.next"}} <i class="icon right arrow"></i>
+    </a>
+  </div>
+</div>
+{{end}}
+{{end}}

+ 11 - 11
templates/repo/diff.tmpl

@@ -1,19 +1,18 @@
-{{template "ng/base/head" .}}
-{{template "ng/base/header" .}}
-<div id="repo-wrapper">
-    {{template "repo/header_old" .}}
-    <div class="container clear" id="diff-page">
-        {{if .IsDiffCompare }}
+{{template "base/head" .}}
+<div class="repository diff">
+  {{template "repo/header" .}}
+    <div class="ui container">
+      {{if .IsDiffCompare }}
         <div class="panel panel-info panel-radius compare-head-box">
             <div class="panel-header">
                 <a class="pull-right btn btn-blue btn-header btn-medium btn-radius" rel="nofollow" href="{{EscapePound .SourcePath}}">{{.i18n.Tr "repo.diff.browse_source"}}</a>
                 <h4><a href="{{$.RepoLink}}/commit/{{.BeforeCommitId}}" class="label label-green">{{ShortSha .BeforeCommitId}}</a> ... <a href="{{$.RepoLink}}/commit/{{.AfterCommitId}}" class="label label-green">{{ShortSha .AfterCommitId}}</a></h4>
             </div>
             <div class="panel-body compare">
-                {{template "repo/commits_table" .}}
             </div>
         </div>
-        {{else}}
+      {{template "repo/commits_table" .}}
+      {{else}}
         <div class="panel panel-info panel-radius diff-head-box">
             <div class="panel-header">
                 <a class="pull-right btn btn-blue btn-header btn-medium btn-radius" rel="nofollow" href="{{EscapePound .SourcePath}}">{{.i18n.Tr "repo.diff.browse_source"}}</a>
@@ -41,7 +40,8 @@
                 </p>
             </div>
         </div>
-        {{end}}
+      {{end}}
+      
         {{if .DiffNotAvailable}}
         <h4>{{.i18n.Tr "repo.diff.data_not_available"}}</h4>
         {{else}}
@@ -129,6 +129,6 @@
         <br>
         {{end}}
         {{end}}
-    </div>
+  </div>
 </div>
-{{template "ng/base/footer" .}}
+{{template "base/footer" .}}

Some files were not shown because too many files changed in this diff