summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README.md3
-rw-r--r--README_ZH.md3
-rw-r--r--cmd/web.go1
-rw-r--r--conf/locale/locale_en-US.ini3
-rw-r--r--conf/locale/locale_zh-CN.ini3
-rw-r--r--gogs.go2
-rw-r--r--models/repo.go4
-rw-r--r--routers/home.go26
-rw-r--r--templates/.VERSION2
-rw-r--r--templates/explore/nav.tmpl8
-rw-r--r--templates/explore/repos.tmpl25
-rw-r--r--templates/org/settings/options.tmpl96
-rw-r--r--templates/status/404.tmpl4
13 files changed, 121 insertions, 59 deletions
diff --git a/README.md b/README.md
index ddb8367e9f..689b0df4fa 100644
--- a/README.md
+++ b/README.md
@@ -59,7 +59,7 @@ There are 5 ways to install Gogs:
- [Install from binary](http://gogs.io/docs/installation/install_from_binary.md): **STRONGLY RECOMMENDED**
- [Install from source](http://gogs.io/docs/installation/install_from_source.md)
- [Install from packages](http://gogs.io/docs/installation/install_from_packages.md)
-- [Ship with Docker](https://github.com/gogits/gogs/tree/master/dockerfiles)
+- [Ship with Docker](https://github.com/gogits/gogs/tree/master/docker)
- [Install with Vagrant](https://github.com/geerlingguy/ansible-vagrant-examples/tree/master/gogs)
## Acknowledgments
@@ -70,7 +70,6 @@ There are 5 ways to install Gogs:
- Usage and modification from [beego](http://beego.me) modules.
- Thanks [lavachen](http://www.lavachen.cn/) and [Rocker](http://weibo.com/rocker1989) for designing Logo.
- Thanks [gobuild.io](http://gobuild.io) for providing binary compile and download service.
-- Thanks [Docker China](http://www.dockboard.org/) for providing [dockerfiles](https://github.com/gogits/gogs/tree/master/dockerfiles).
## Contributors
diff --git a/README_ZH.md b/README_ZH.md
index de982baf37..401c8186c8 100644
--- a/README_ZH.md
+++ b/README_ZH.md
@@ -50,7 +50,7 @@ Gogs 的目标是打造一个最简单、最快速和最轻松的方式搭建自
- [二进制安装](http://gogs.io/docs/installation/install_from_binary.md): **强烈推荐**
- [源码安装](http://gogs.io/docs/installation/install_from_source.md)
- [包管理安装](http://gogs.io/docs/installation/install_from_packages.md)
-- [采用 Docker 部署](https://github.com/gogits/gogs/tree/master/dockerfiles)
+- [采用 Docker 部署](https://github.com/gogits/gogs/tree/master/docker)
- [通过 Vagrant 安装](https://github.com/geerlingguy/ansible-vagrant-examples/tree/master/gogs)
## 特别鸣谢
@@ -61,7 +61,6 @@ Gogs 的目标是打造一个最简单、最快速和最轻松的方式搭建自
- [martini](http://martini.codegangsta.io/) 的路由与中间件机制。
- 感谢 [gobuild.io](http://gobuild.io) 提供二进制编译与下载服务。
- 感谢 [lavachen](http://www.lavachen.cn/) 和 [Rocker](http://weibo.com/rocker1989) 设计的 Logo。
-- 感谢 [Docker 中文社区](http://www.dockboard.org/) 提供的 [dockerfiles](https://github.com/gogits/gogs/tree/master/dockerfiles)。
## 贡献成员
diff --git a/cmd/web.go b/cmd/web.go
index 57164683ac..cad1db336b 100644
--- a/cmd/web.go
+++ b/cmd/web.go
@@ -124,6 +124,7 @@ func runWeb(*cli.Context) {
// Routers.
m.Get("/", ignSignIn, routers.Home)
+ m.Get("/explore", routers.Explore)
m.Get("/install", bindIgnErr(auth.InstallForm{}), routers.Install)
m.Post("/install", bindIgnErr(auth.InstallForm{}), routers.InstallPost)
m.Group("", func(r *macaron.Router) {
diff --git a/conf/locale/locale_en-US.ini b/conf/locale/locale_en-US.ini
index 946d560461..e8329933a4 100644
--- a/conf/locale/locale_en-US.ini
+++ b/conf/locale/locale_en-US.ini
@@ -47,6 +47,9 @@ collaborative_repos = Collaborative Repositories
my_orgs = My Organizations
my_mirrors = My Mirrors
+[explore]
+repos = Repositories
+
[auth]
create_new_account = Create New Account
register_hepler_msg = Already have an account? Sign in now!
diff --git a/conf/locale/locale_zh-CN.ini b/conf/locale/locale_zh-CN.ini
index 55d22f23ee..a61a54ceb2 100644
--- a/conf/locale/locale_zh-CN.ini
+++ b/conf/locale/locale_zh-CN.ini
@@ -47,6 +47,9 @@ collaborative_repos = 参与协作的仓库
my_orgs = 我的组织
my_mirrors = 我的镜像
+[explore]
+repos = 探索仓库
+
[auth]
create_new_account = 创建帐户
register_hepler_msg = 已经注册?立即登录!
diff --git a/gogs.go b/gogs.go
index a116019078..1c012d4098 100644
--- a/gogs.go
+++ b/gogs.go
@@ -17,7 +17,7 @@ import (
"github.com/gogits/gogs/modules/setting"
)
-const APP_VER = "0.4.9.0902 Beta"
+const APP_VER = "0.4.9.0905 Beta"
func init() {
runtime.GOMAXPROCS(runtime.NumCPU())
diff --git a/models/repo.go b/models/repo.go
index 23d44a6b80..341e7e47a1 100644
--- a/models/repo.go
+++ b/models/repo.go
@@ -972,8 +972,8 @@ func GetRepositories(uid int64, private bool) ([]*Repository, error) {
}
// GetRecentUpdatedRepositories returns the list of repositories that are recently updated.
-func GetRecentUpdatedRepositories() (repos []*Repository, err error) {
- err = x.Where("is_private=?", false).Limit(5).Desc("updated").Find(&repos)
+func GetRecentUpdatedRepositories(num int) (repos []*Repository, err error) {
+ err = x.Where("is_private=?", false).Limit(num).Desc("updated").Find(&repos)
return repos, err
}
diff --git a/routers/home.go b/routers/home.go
index 5ea3e2a027..36a4f50fd2 100644
--- a/routers/home.go
+++ b/routers/home.go
@@ -5,6 +5,9 @@
package routers
import (
+ "fmt"
+
+ "github.com/gogits/gogs/models"
"github.com/gogits/gogs/modules/base"
"github.com/gogits/gogs/modules/middleware"
"github.com/gogits/gogs/modules/setting"
@@ -12,7 +15,8 @@ import (
)
const (
- HOME base.TplName = "home"
+ HOME base.TplName = "home"
+ EXPLORE_REPOS base.TplName = "explore/repos"
)
func Home(ctx *middleware.Context) {
@@ -42,6 +46,26 @@ func Home(ctx *middleware.Context) {
ctx.HTML(200, HOME)
}
+func Explore(ctx *middleware.Context) {
+ ctx.Data["Title"] = ctx.Tr("explore")
+ ctx.Data["PageIsExploreRepositories"] = true
+
+ repos, err := models.GetRecentUpdatedRepositories(20)
+ if err != nil {
+ ctx.Handle(500, "GetRecentUpdatedRepositories", err)
+ return
+ }
+ for _, repo := range repos {
+ if err = repo.GetOwner(); err != nil {
+ ctx.Handle(500, "GetOwner", fmt.Errorf("%d: %v", repo.Id, err))
+ return
+ }
+ }
+ ctx.Data["Repos"] = repos
+
+ ctx.HTML(200, EXPLORE_REPOS)
+}
+
func NotFound(ctx *middleware.Context) {
ctx.Data["Title"] = "Page Not Found"
ctx.Handle(404, "home.NotFound", nil)
diff --git a/templates/.VERSION b/templates/.VERSION
index 5f3c518191..6e361299ef 100644
--- a/templates/.VERSION
+++ b/templates/.VERSION
@@ -1 +1 @@
-0.4.9.0902 Beta \ No newline at end of file
+0.4.9.0905 Beta \ No newline at end of file
diff --git a/templates/explore/nav.tmpl b/templates/explore/nav.tmpl
new file mode 100644
index 0000000000..1310bccf04
--- /dev/null
+++ b/templates/explore/nav.tmpl
@@ -0,0 +1,8 @@
+<div id="setting-menu" class="grid-1-5 panel panel-radius left">
+ <p class="panel-header"><strong>{{.i18n.Tr "explore"}}</strong></p>
+ <div class="panel-body">
+ <ul class="menu menu-vertical switching-list grid-1-5 left">
+ <li {{if .PageIsExploreRepositories}}class="current"{{end}}><a href="/explore">{{.i18n.Tr "explore.repos"}}</a></li>
+ </ul>
+ </div>
+</div> \ No newline at end of file
diff --git a/templates/explore/repos.tmpl b/templates/explore/repos.tmpl
new file mode 100644
index 0000000000..a1e3d408e8
--- /dev/null
+++ b/templates/explore/repos.tmpl
@@ -0,0 +1,25 @@
+{{template "ng/base/head" .}}
+{{template "ng/base/header" .}}
+<div id="setting-wrapper" class="main-wrapper">
+ <div id="org-setting" class="container clear">
+ {{template "explore/nav" .}}
+ <div class="grid-4-5 left">
+ <div class="setting-content">
+ <div id="org-repo-list">
+ {{range .Repos}}
+ <div class="org-repo-item">
+ <ul class="org-repo-status right">
+ <li><i class="octicon octicon-star"></i> {{.NumStars}}</li>
+ <li><i class="octicon octicon-git-branch"></i> {{.NumForks}}</li>
+ </ul>
+ <h2><a href="/{{.Owner.Name}}/{{.Name}}">{{.Name}}</a></h2>
+ <p class="org-repo-description">{{.Description}}</p>
+ <p class="org-repo-updated">{{$.i18n.Tr "org.repo_updated"}} {{TimeSince .Updated $.i18n.Lang}}</p>
+ </div>
+ {{end}}
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
+{{template "ng/base/footer" .}} \ No newline at end of file
diff --git a/templates/org/settings/options.tmpl b/templates/org/settings/options.tmpl
index ae225a9ca4..14ea1b349d 100644
--- a/templates/org/settings/options.tmpl
+++ b/templates/org/settings/options.tmpl
@@ -3,54 +3,54 @@
{{template "org/base/header" .}}
<div id="setting-wrapper" class="main-wrapper">
<div id="org-setting" class="container clear">
- {{template "org/settings/nav" .}}
- <div class="grid-4-5 left">
- <div class="setting-content">
- {{template "ng/base/alert" .}}
- <div id="setting-content">
- <div id="user-profile-setting-content" class="panel panel-radius">
- <div class="panel-header">
- <strong>{{.i18n.Tr "org.settings.options"}}</strong>
- </div>
- <form class="form form-align panel-body" id="org-setting-form" action="/org/{{.Org.LowerName}}/settings" method="post">
- {{.CsrfTokenHtml}}
- <input type="hidden" name="action" value="update">
- <div class="field">
- <label class="req" for="orgname">{{.i18n.Tr "username"}}</label>
- <input class="ipt ipt-large ipt-radius {{if .Err_UserName}}ipt-error{{end}}" id="orgname" name="uname" value="{{.Org.Name}}" data-orgname="{{.Org.Name}}" required />
- </div>
- <div class="field">
- <label for="full-name">{{.i18n.Tr "org.settings.full_name"}}</label>
- <input class="ipt ipt-large ipt-radius {{if .Err_FullName}}ipt-error{{end}}" id="full-name" name="fullname" value="{{.Org.FullName}}" />
- </div>
- <div class="field">
- <label class="req" for="email">{{.i18n.Tr "email"}}</label>
- <input class="ipt ipt-large ipt-radius {{if .Err_Email}}ipt-error{{end}}" id="email" name="email" type="email" value="{{.Org.Email}}" required />
- </div>
- <div class="field clear">
- <label class="left" for="desc">{{.i18n.Tr "org.org_desc"}}</label>
- <textarea class="ipt ipt-large ipt-radius {{if .Err_Description}}ipt-error{{end}}" id="desc" name="desc">{{.Org.Description}}</textarea>
- </div>
- <div class="field">
- <label for="website">{{.i18n.Tr "org.settings.website"}}</label>
- <input class="ipt ipt-large ipt-radius {{if .Err_Website}}ipt-error{{end}}" id="website" name="website" type="url" value="{{.Org.Website}}" />
- </div>
- <div class="field">
- <label for="location">{{.i18n.Tr "org.settings.location"}}</label>
- <input class="ipt ipt-large ipt-radius {{if .Err_Location}}ipt-error{{end}}" id="location" name="location" type="text" value="{{.Org.Location}}" />
- </div>
- <div class="field">
- <label for="gravatar-email">Gravatar {{.i18n.Tr "email"}}</label>
- <input class="ipt ipt-large ipt-radius {{if .Err_Avatar}}ipt-error{{end}}" id="gravatar-email" name="avatar" type="text" value="{{.Org.AvatarEmail}}" />
- </div>
- <div class="field">
- <span class="form-label"></span>
- <button class="btn btn-green btn-large btn-radius">{{.i18n.Tr "org.settings.update_settings"}}</button>
- </div>
- </form>
- </div>
- </div>
- </div>
+ {{template "org/settings/nav" .}}
+ <div class="grid-4-5 left">
+ <div class="setting-content">
+ {{template "ng/base/alert" .}}
+ <div id="setting-content">
+ <div id="user-profile-setting-content" class="panel panel-radius">
+ <div class="panel-header">
+ <strong>{{.i18n.Tr "org.settings.options"}}</strong>
+ </div>
+ <form class="form form-align panel-body" id="org-setting-form" action="/org/{{.Org.LowerName}}/settings" method="post">
+ {{.CsrfTokenHtml}}
+ <input type="hidden" name="action" value="update">
+ <div class="field">
+ <label class="req" for="orgname">{{.i18n.Tr "username"}}</label>
+ <input class="ipt ipt-large ipt-radius {{if .Err_UserName}}ipt-error{{end}}" id="orgname" name="uname" value="{{.Org.Name}}" data-orgname="{{.Org.Name}}" required />
+ </div>
+ <div class="field">
+ <label for="full-name">{{.i18n.Tr "org.settings.full_name"}}</label>
+ <input class="ipt ipt-large ipt-radius {{if .Err_FullName}}ipt-error{{end}}" id="full-name" name="fullname" value="{{.Org.FullName}}" />
+ </div>
+ <div class="field">
+ <label class="req" for="email">{{.i18n.Tr "email"}}</label>
+ <input class="ipt ipt-large ipt-radius {{if .Err_Email}}ipt-error{{end}}" id="email" name="email" type="email" value="{{.Org.Email}}" required />
+ </div>
+ <div class="field clear">
+ <label class="left" for="desc">{{.i18n.Tr "org.org_desc"}}</label>
+ <textarea class="ipt ipt-large ipt-radius {{if .Err_Description}}ipt-error{{end}}" id="desc" name="desc">{{.Org.Description}}</textarea>
+ </div>
+ <div class="field">
+ <label for="website">{{.i18n.Tr "org.settings.website"}}</label>
+ <input class="ipt ipt-large ipt-radius {{if .Err_Website}}ipt-error{{end}}" id="website" name="website" type="url" value="{{.Org.Website}}" />
+ </div>
+ <div class="field">
+ <label for="location">{{.i18n.Tr "org.settings.location"}}</label>
+ <input class="ipt ipt-large ipt-radius {{if .Err_Location}}ipt-error{{end}}" id="location" name="location" type="text" value="{{.Org.Location}}" />
+ </div>
+ <div class="field">
+ <label for="gravatar-email">Gravatar {{.i18n.Tr "email"}}</label>
+ <input class="ipt ipt-large ipt-radius {{if .Err_Avatar}}ipt-error{{end}}" id="gravatar-email" name="avatar" type="text" value="{{.Org.AvatarEmail}}" />
+ </div>
+ <div class="field">
+ <span class="form-label"></span>
+ <button class="btn btn-green btn-large btn-radius">{{.i18n.Tr "org.settings.update_settings"}}</button>
+ </div>
+ </form>
+ </div>
+ </div>
+ </div>
</div>
</div>
</div>
diff --git a/templates/status/404.tmpl b/templates/status/404.tmpl
index 2d04b55917..e024715ed2 100644
--- a/templates/status/404.tmpl
+++ b/templates/status/404.tmpl
@@ -1,11 +1,11 @@
{{template "ng/base/head" .}}
{{template "ng/base/header" .}}
-<div id="body" class="container text-center">
+<div class="container text-center">
<p style="margin-top: 100px"><img src="/img/404.png" alt="404"/></p>
<hr/>
<br>
<p>Application Version: {{AppVer}}</p>
<p>If you think this is an error, please open an issue on <a href="https://github.com/gogits/gogs/issues/new">GitHub</a>.</p>
- <h3>We're currently working on 0.5 beta version, many pages may be missing at this time. Sorry for confusion!</h3>
+ <!-- <p>We're currently working on 0.5 beta version, many pages may be missing at this time. Sorry for confusion!</p> -->
</div>
{{template "ng/base/footer" .}}