diff --git a/models/repo_watch.go b/models/repo_watch.go index 85a7834bb..31868fcae 100644 --- a/models/repo_watch.go +++ b/models/repo_watch.go @@ -305,7 +305,10 @@ func NotifyWatchersActions(acts []*Action) error { return err } } - return sess.Commit() + + err := sess.Commit() + producer(acts...) + return err } func watchIfAuto(e Engine, userID, repoID int64, isWrite bool) error { diff --git a/modules/context/context.go b/modules/context/context.go index 6cb6c267a..653a1895f 100755 --- a/modules/context/context.go +++ b/modules/context/context.go @@ -328,7 +328,11 @@ func Contexter() macaron.Handler { } } - ctx.Resp.Header().Set(`X-Frame-Options`, `SAMEORIGIN`) + if setting.IFrameURL != "" { + ctx.Resp.Header().Set(`X-Frame-Options`, `ALLOW-FROM `+setting.IFrameURL) + } else { + ctx.Resp.Header().Set(`X-Frame-Options`, `SAMEORIGIN`) + } ctx.Data["CsrfToken"] = html.EscapeString(x.GetToken()) ctx.Data["CsrfTokenHtml"] = template.HTML(``) diff --git a/modules/setting/setting.go b/modules/setting/setting.go index 3d2bd91c5..5775ca552 100755 --- a/modules/setting/setting.go +++ b/modules/setting/setting.go @@ -573,6 +573,7 @@ var ( OrgName string TeamName string }{} + IFrameURL string ) // DateLang transforms standard language locale name to corresponding value in datetime plugin. @@ -1340,6 +1341,8 @@ func NewContext() { sec = Cfg.Section("course") Course.OrgName = sec.Key("org_name").MustString("") Course.TeamName = sec.Key("team_name").MustString("") + sec = Cfg.Section("xFrame") + IFrameURL = sec.Key("url").MustString("") } func SetRadarMapConfig() { diff --git a/routers/api/v1/api.go b/routers/api/v1/api.go index 8b87110c9..2a4092510 100755 --- a/routers/api/v1/api.go +++ b/routers/api/v1/api.go @@ -534,6 +534,7 @@ func RegisterRoutes(m *macaron.Macaron) { m.Get("/downloadAllOpenI", repo.ServeAllProjectsOpenIStatisticsFile) m.Group("/project", func() { m.Get("", repo.GetAllProjectsPeriodStatistics) + m.Get("/numVisit", repo.ProjectNumVisit) m.Group("/:id", func() { m.Get("", repo.GetProjectLatestStatistics) diff --git a/routers/api/v1/repo/repo_dashbord.go b/routers/api/v1/repo/repo_dashbord.go index a8887a744..46596330f 100644 --- a/routers/api/v1/repo/repo_dashbord.go +++ b/routers/api/v1/repo/repo_dashbord.go @@ -12,6 +12,7 @@ import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/log" + "code.gitea.io/gitea/modules/repository" "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/setting" @@ -640,3 +641,26 @@ func getTotalPage(total int64, pageSize int) int { return int(total)/pageSize + another } + +func ProjectNumVisit(ctx *context.APIContext) { + var ( + err error + ) + + var userName = ctx.Query("user") + var projectName = ctx.Query("project") + var beginTime = ctx.Query("begintime") + var endTime = ctx.Query("endtime") + + var ProjectNumVisits int + ProjectNumVisits, err = repository.AppointProjectView(userName, projectName, beginTime, endTime) //访问量 + if err != nil { + ctx.NotFound(err) + } + log.Info("ProjectNumVisits is:", ProjectNumVisits) + + ctx.JSON(http.StatusOK, map[string]interface{}{ + "ProjectNumVisits": ProjectNumVisits, + "StatusOK": 0, + }) +} diff --git a/routers/repo/user_data_analysis.go b/routers/repo/user_data_analysis.go index e2d44ab0a..e71e8cb3a 100755 --- a/routers/repo/user_data_analysis.go +++ b/routers/repo/user_data_analysis.go @@ -91,19 +91,19 @@ func queryUserDataPage(ctx *context.Context, tableName string, queryObj interfac xlsx.SetCellValue(sheetName, "Q"+rows, formatTime) } - //设置默认打开的表单 - xlsx.SetActiveSheet(index) - filename := sheetName + "_" + ctx.Tr("user.static."+tableName) + ".xlsx" - ctx.Resp.Header().Set("Content-Disposition", "attachment; filename="+url.QueryEscape(filename)) - ctx.Resp.Header().Set("Content-Type", "application/octet-stream") - if _, err := xlsx.WriteTo(ctx.Resp); err != nil { - log.Info("writer exel error." + err.Error()) - } indexTotal += PAGE_SIZE if indexTotal >= count { break } } + //设置默认打开的表单 + xlsx.SetActiveSheet(index) + filename := sheetName + "_" + ctx.Tr("user.static."+tableName) + ".xlsx" + ctx.Resp.Header().Set("Content-Disposition", "attachment; filename="+url.QueryEscape(filename)) + ctx.Resp.Header().Set("Content-Type", "application/octet-stream") + if _, err := xlsx.WriteTo(ctx.Resp); err != nil { + log.Info("writer exel error." + err.Error()) + } } else { re, count := models.QueryUserStaticDataByTableName((page-1)*pageSize, pageSize, tableName, queryObj, userName) mapInterface := make(map[string]interface{}) diff --git a/services/socketwrap/clientManager.go b/services/socketwrap/clientManager.go index c59936581..601c0f7a8 100644 --- a/services/socketwrap/clientManager.go +++ b/services/socketwrap/clientManager.go @@ -50,6 +50,7 @@ func (h *ClientsManager) Run() { } case message := <-models.ActionChan: if isInOpTypes(opTypes, message.OpType) { + message.Comment = nil LastActionsQueue.Push(message) for _, client := range h.Clients.Keys() { select { diff --git a/templates/org/select_pro.tmpl b/templates/org/select_pro.tmpl index 220dba9a5..70b2a9bb3 100755 --- a/templates/org/select_pro.tmpl +++ b/templates/org/select_pro.tmpl @@ -61,7 +61,9 @@ -webkit-line-clamp: 2; -webkit-box-orient: vertical; } - + .ui.cards>.card>.extra .tags > a{ + margin-top: 5px; + }