Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 186a090

Browse files
committed
Merge branch 'develop' into revision
2 parents dd85fda + bebfaec commit 186a090

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

91 files changed

+4504
-412
lines changed

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ bin
1212
log
1313
pid
1414
data
15+
sitemap
16+
assets
1517

1618
# Architecture specific extensions/prefixes
1719
*.[568vq]
@@ -32,6 +34,8 @@ _testmain.go
3234
*.sublime-project
3335
*.sublime-workspace
3436

37+
notes.md
38+
3539
studygolang_data.sql
3640

3741
welcome.png

websites/code/studygolang/install

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,12 @@ if [ ! -d log ]; then
1515
mkdir log
1616
fi
1717

18+
VERSION="`git symbolic-ref HEAD | cut -b 12-`-`git rev-parse HEAD`"
19+
DATE=`date +%FT%T%z`
20+
1821
gofmt -w src
1922

20-
go install server/studygolang
21-
go install server/crawlarticle
22-
go install server/indexer
23+
go install -ldflags "-X util.Version "$VERSION" -X util.Date "$DATE ./...
2324

2425
export GOPATH="$OLDGOPATH"
2526
export PATH="$OLDPATH"

websites/code/studygolang/install.bat

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,17 @@ set GOPATH=%~dp0;%~dp0..\thirdparty
1313

1414
if not exist log mkdir log
1515

16+
for /f "delims=" %%t in ('git symbolic-ref HEAD') do set VERNAME=%%t
17+
set VERNAME=%VERNAME:~11%
18+
19+
for /f "delims=" %%t in ('git rev-parse HEAD') do set VERCODE=%%t
20+
21+
set VERSION=%VERNAME%-%VERCODE%
22+
1623
gofmt -w src
1724

1825
:: -tags "debug" 表示测试
19-
go install -tags "debug" server/studygolang
20-
go install -tags "debug" server/crawlarticle
21-
go install -tags "debug" server/indexer
26+
go install -tags "debug" -ldflags "-X util.Version "%VERSION%" -X util.Date "%date:~3,10%T%time%"" ./...
2227

2328
set GOPATH=%OLDGOPATH%
2429

websites/code/studygolang/src/controller/account.go

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,18 @@
77
package controller
88

99
import (
10+
"fmt"
11+
"html/template"
12+
"net/http"
13+
"strings"
14+
1015
"config"
1116
"filter"
12-
"fmt"
17+
"github.com/dchest/captcha"
1318
"github.com/gorilla/sessions"
1419
"github.com/studygolang/mux"
15-
"html/template"
1620
"logger"
17-
"net/http"
1821
"service"
19-
"strings"
2022
"util"
2123
)
2224

@@ -27,33 +29,40 @@ func RegisterHandler(rw http.ResponseWriter, req *http.Request) {
2729
username := req.PostFormValue("username")
2830
// 请求注册页面
2931
if username == "" || req.Method != "POST" || vars["json"] == "" {
32+
filter.SetData(req, map[string]interface{}{"captchaId": captcha.NewLen(4)})
3033
req.Form.Set(filter.CONTENT_TPL_KEY, "/template/register.html")
3134
return
3235
}
3336

37+
// 校验验证码
38+
if !captcha.VerifyString(req.PostFormValue("captchaid"), req.PostFormValue("captchaSolution")) {
39+
fmt.Fprint(rw, `{"errno": 1, "error":"验证码错误"}`)
40+
return
41+
}
42+
3443
// 入库
3544
errMsg, err := service.CreateUser(req.Form)
3645
if err != nil {
3746
// bugfix:http://studygolang.com/topics/255
3847
if errMsg == "" {
3948
errMsg = err.Error()
4049
}
41-
fmt.Fprint(rw, `{"errno": 1, "error":"`, errMsg, `"}`)
50+
fmt.Fprint(rw, `{"errno": 2, "error":"`, errMsg, `"}`)
4251
return
4352
}
4453

4554
// 注册成功,自动为其登录
4655
setCookie(rw, req, req.PostFormValue("username"))
4756
// 发送欢迎邮件
48-
go sendWelcomeMail([]string{req.PostFormValue("email")})
57+
// go sendWelcomeMail([]string{req.PostFormValue("email")})
4958
fmt.Fprint(rw, `{"errno": 0, "error":""}`)
5059
}
5160

5261
func sendWelcomeMail(email []string) {
5362
content := `Welcome to Study Golang.<br><br>
5463
欢迎您,成功注册成为 Golang中文社区 | Go语言学习园地 会员<br><br>
5564
Golang中文社区是一个Go语言技术社区,完全用Go语言开发。我们为gopher们提供一个好的学习交流场所。加入到社区中来,参与分享,学习,不断提高吧。前往 <a href="http://studygolang.com">Golang中文社区 | Go语言学习园地</a><br>
56-
<div style="text-align:right;">&copy;2013 studygolang.com Golang中文社区 | Go语言学习园地</div>`
65+
<div style="text-align:right;">&copy;2012-2014 studygolang.com Golang中文社区 | Go语言学习园地</div>`
5766
service.SendMail("Golang中文社区 | Go语言学习园地 注册成功通知", content, email)
5867
}
5968

@@ -75,6 +84,7 @@ func LoginHandler(rw http.ResponseWriter, req *http.Request) {
7584
userLogin, err := service.Login(username, passwd)
7685
if err != nil {
7786
if suffix != "" {
87+
logger.Errorln("login error:", err)
7888
fmt.Fprint(rw, `{"ok":0,"error":"`+err.Error()+`"}`)
7989
return
8090
}
Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
// Copyright 2014 The StudyGolang Authors. All rights reserved.
2+
// Use of this source code is governed by a BSD-style
3+
// license that can be found in the LICENSE file.
4+
// http://studygolang.com
5+
// Author:polaris [email protected]
6+
7+
package admin
8+
9+
import (
10+
"net/http"
11+
"strconv"
12+
13+
"filter"
14+
"logger"
15+
"service"
16+
)
17+
18+
// 所有晨读(分页)
19+
// /admin/reading/list
20+
func ReadingListHandler(rw http.ResponseWriter, req *http.Request) {
21+
curPage, limit := parsePage(req)
22+
23+
readings, total := service.FindReadingByPage(nil, curPage, limit)
24+
25+
if readings == nil {
26+
logger.Errorln("[ReadingListHandler]sql find error")
27+
rw.WriteHeader(http.StatusInternalServerError)
28+
return
29+
}
30+
31+
data := map[string]interface{}{
32+
"datalist": readings,
33+
"total": total,
34+
"totalPages": (total + limit - 1) / limit,
35+
"page": curPage,
36+
"limit": limit,
37+
}
38+
39+
// 设置内容模板
40+
req.Form.Set(filter.CONTENT_TPL_KEY, "/template/admin/reading/list.html,/template/admin/reading/query.html")
41+
filter.SetData(req, data)
42+
}
43+
44+
// /admin/reading/query.html
45+
func ReadingQueryHandler(rw http.ResponseWriter, req *http.Request) {
46+
curPage, limit := parsePage(req)
47+
48+
conds := parseConds(req, []string{"id", "rtype"})
49+
50+
readings, total := service.FindReadingByPage(conds, curPage, limit)
51+
52+
if readings == nil {
53+
logger.Errorln("[ReadingQueryHandler]sql find error")
54+
rw.WriteHeader(http.StatusInternalServerError)
55+
return
56+
}
57+
58+
data := map[string]interface{}{
59+
"datalist": readings,
60+
"total": total,
61+
"totalPages": (total + limit - 1) / limit,
62+
"page": curPage,
63+
"limit": limit,
64+
}
65+
66+
// 设置内容模板
67+
req.Form.Set(filter.CONTENT_TPL_KEY, "/template/admin/reading/query.html")
68+
filter.SetData(req, data)
69+
}
70+
71+
// /admin/reading/publish
72+
func PublishReadingHandler(rw http.ResponseWriter, req *http.Request) {
73+
var data = make(map[string]interface{})
74+
75+
if req.PostFormValue("submit") == "1" {
76+
user, _ := filter.CurrentUser(req)
77+
78+
errMsg, err := service.SaveReading(req.PostForm, user["username"].(string))
79+
if err != nil {
80+
data["ok"] = 0
81+
data["error"] = errMsg
82+
} else {
83+
data["ok"] = 1
84+
data["msg"] = "操作成功"
85+
}
86+
} else {
87+
id, err := strconv.Atoi(req.FormValue("id"))
88+
if err == nil && id != 0 {
89+
data["reading"], err = service.FindReadingById(id)
90+
91+
if err != nil {
92+
rw.WriteHeader(http.StatusInternalServerError)
93+
return
94+
}
95+
}
96+
97+
// 设置内容模板
98+
req.Form.Set(filter.CONTENT_TPL_KEY, "/template/admin/reading/modify.html")
99+
}
100+
101+
filter.SetData(req, data)
102+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
// Copyright 2013 The StudyGolang Authors. All rights reserved.
2+
// Use of this source code is governed by a BSD-style
3+
// license that can be found in the LICENSE file.
4+
// http://studygolang.com
5+
// Author:polaris [email protected]
6+
7+
package admin
8+
9+
import (
10+
"net/http"
11+
12+
"filter"
13+
"service"
14+
)
15+
16+
// uri: /admin/tool/sitemap
17+
func GenSitemapHandler(rw http.ResponseWriter, req *http.Request) {
18+
service.GenSitemap()
19+
// 设置内容模板
20+
req.Form.Set(filter.CONTENT_TPL_KEY, "/template/admin/tool/sitemap.html")
21+
}

websites/code/studygolang/src/controller/admin/user.go

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ func UserQueryHandler(rw http.ResponseWriter, req *http.Request) {
6666
filter.SetData(req, data)
6767
}
6868

69+
// uri: /admin/user/user/detail
6970
func UserDetailHandler(rw http.ResponseWriter, req *http.Request) {
7071
uid := req.FormValue("uid")
7172

@@ -76,7 +77,40 @@ func UserDetailHandler(rw http.ResponseWriter, req *http.Request) {
7677
}
7778

7879
user := service.FindUserByUID(uid)
80+
7981
// 设置内容模板
8082
req.Form.Set(filter.CONTENT_TPL_KEY, "/template/admin/user/detail.html")
81-
filter.SetData(req, map[string]interface{}{"user": user})
83+
filter.SetData(req, map[string]interface{}{"user": user, "roles": service.Roles})
84+
}
85+
86+
// uri: /admin/user/user/modify
87+
func UserModifyHandler(rw http.ResponseWriter, req *http.Request) {
88+
uidStr := req.PostFormValue("uid")
89+
90+
var (
91+
uid int
92+
err error
93+
)
94+
if uid, err = strconv.Atoi(uidStr); err != nil {
95+
logger.Errorln("[UserModifyHandler] invalid uid")
96+
rw.WriteHeader(http.StatusNotFound)
97+
return
98+
}
99+
100+
var data = make(map[string]interface{})
101+
102+
user, _ := filter.CurrentUser(req)
103+
if user["uid"].(int) == uid {
104+
data["ok"] = 0
105+
data["error"] = "不能改自己的角色!"
106+
107+
filter.SetData(req, data)
108+
return
109+
}
110+
111+
service.AllocUserRoles(uid, req.PostForm["roleids"])
112+
113+
data["ok"] = 1
114+
data["msg"] = "success"
115+
filter.SetData(req, data)
82116
}

0 commit comments

Comments
 (0)