func EditTeam(ctx *middleware.Context) { ctx.Data["Title"] = ctx.Org.Organization.FullName ctx.Data["PageIsOrgTeams"] = true ctx.Data["team_name"] = ctx.Org.Team.Name ctx.Data["desc"] = ctx.Org.Team.Description ctx.HTML(200, TEAM_NEW) }
func Home(ctx *middleware.Context) { if ctx.IsSigned { if !ctx.User.IsActive && setting.Service.RegisterEmailConfirm { ctx.Data["Title"] = ctx.Tr("auth.active_your_account") ctx.HTML(200, user.ACTIVATE) } else { user.Dashboard(ctx) } return } // Check auto-login. uname := ctx.GetCookie(setting.CookieUserName) if len(uname) != 0 { ctx.Redirect(setting.AppSubUrl + "/user/login") return } if setting.OauthService != nil { ctx.Data["OauthEnabled"] = true ctx.Data["OauthService"] = setting.OauthService } ctx.Data["PageIsHome"] = true ctx.HTML(200, HOME) }
func NewMilestonePost(ctx *middleware.Context, form auth.CreateMilestoneForm) { ctx.Data["Title"] = "New Milestone" ctx.Data["IsRepoToolbarIssues"] = true ctx.Data["IsRepoToolbarIssuesList"] = true if ctx.HasError() { ctx.HTML(200, MILESTONE_NEW) return } var deadline time.Time var err error if len(form.Deadline) == 0 { form.Deadline = "12/31/9999" } deadline, err = time.Parse("01/02/2006", form.Deadline) if err != nil { ctx.Handle(500, "issue.NewMilestonePost(time.Parse)", err) return } mile := &models.Milestone{ RepoId: ctx.Repo.Repository.Id, Index: int64(ctx.Repo.Repository.NumMilestones) + 1, Name: form.Title, Content: form.Content, Deadline: deadline, } if err = models.NewMilestone(mile); err != nil { ctx.Handle(500, "issue.NewMilestonePost(NewMilestone)", err) return } ctx.Redirect(ctx.Repo.RepoLink + "/issues/milestones") }
// GET /repos/:username/:reponame/hooks // https://developer.github.com/v3/repos/hooks/#list-hooks func ListRepoHooks(ctx *middleware.Context) { hooks, err := models.GetWebhooksByRepoId(ctx.Repo.Repository.Id) if err != nil { ctx.JSON(500, &base.ApiJsonErr{"GetWebhooksByRepoId: " + err.Error(), base.DOC_URL}) return } apiHooks := make([]*api.Hook, len(hooks)) for i := range hooks { h := &api.Hook{ Id: hooks[i].Id, Type: hooks[i].HookTaskType.Name(), Active: hooks[i].IsActive, Config: make(map[string]string), } // Currently, onle have push event. h.Events = []string{"push"} h.Config["url"] = hooks[i].Url h.Config["content_type"] = hooks[i].ContentType.Name() if hooks[i].HookTaskType == models.SLACK { s := hooks[i].GetSlackHook() h.Config["channel"] = s.Channel } apiHooks[i] = h } ctx.JSON(200, &apiHooks) }
func NewTeam(ctx *middleware.Context) { ctx.Data["Title"] = ctx.Org.Organization.FullName ctx.Data["PageIsOrgTeams"] = true ctx.Data["PageIsOrgTeamsNew"] = true ctx.Data["Team"] = &models.Team{} ctx.HTML(200, TEAM_NEW) }
func Monitor(ctx *middleware.Context) { ctx.Data["Title"] = ctx.Tr("admin.monitor") ctx.Data["PageIsAdmin"] = true ctx.Data["PageIsAdminMonitor"] = true ctx.Data["Processes"] = process.Processes ctx.Data["Entries"] = cron.ListEntries() ctx.HTML(200, MONITOR) }
// POST /user/repos // https://developer.github.com/v3/repos/#create func CreateRepo(ctx *middleware.Context, opt api.CreateRepoOption) { // Shouldn't reach this condition, but just in case. if ctx.User.IsOrganization() { ctx.JSON(422, "not allowed creating repository for organization") return } createRepo(ctx, ctx.User, opt) }
func NewAuthSource(ctx *middleware.Context) { ctx.Data["Title"] = ctx.Tr("admin.auths.new") ctx.Data["PageIsAdmin"] = true ctx.Data["PageIsAdminAuthentications"] = true ctx.Data["LoginTypes"] = models.LoginTypes ctx.Data["SMTPAuths"] = models.SMTPAuths ctx.HTML(200, AUTH_NEW) }
// Render a Markdown document in raw mode. func MarkdownRaw(ctx *middleware.Context) { body, err := ctx.Req.Body().Bytes() if err != nil { ctx.JSON(422, base.ApiJsonErr{err.Error(), base.DOC_URL}) return } ctx.Write(base.RenderRawMarkdown(body, "")) }
func TeamMembers(ctx *middleware.Context) { ctx.Data["Title"] = ctx.Org.Team.Name ctx.Data["PageIsOrgTeams"] = true if err := ctx.Org.Team.GetMembers(); err != nil { ctx.Handle(500, "GetMembers", err) return } ctx.HTML(200, TEAM_MEMBERS) }
func TeamRepositories(ctx *middleware.Context) { ctx.Data["Title"] = ctx.Org.Team.Name ctx.Data["PageIsOrgTeams"] = true if err := ctx.Org.Team.GetRepositories(); err != nil { ctx.Handle(500, "GetRepositories", err) return } ctx.HTML(200, TEAM_REPOSITORIES) }
// POST /users/:username/tokens func CreateAccessToken(ctx *middleware.Context, form CreateAccessTokenForm) { t := &models.AccessToken{ Uid: ctx.User.Id, Name: form.Name, } if err := models.NewAccessToken(t); err != nil { ctx.JSON(500, &base.ApiJsonErr{"NewAccessToken: " + err.Error(), base.DOC_URL}) return } ctx.JSON(201, &sdk.AccessToken{t.Name, t.Sha1}) }
func TemplatePreview(ctx *middleware.Context) { ctx.Data["User"] = models.User{Name: "Unknown"} ctx.Data["AppName"] = setting.AppName ctx.Data["AppVer"] = setting.AppVer ctx.Data["AppUrl"] = setting.AppUrl ctx.Data["Code"] = "2014031910370000009fff6782aadb2162b4a997acb69d4400888e0b9274657374" ctx.Data["ActiveCodeLives"] = setting.Service.ActiveCodeLives / 60 ctx.Data["ResetPwdCodeLives"] = setting.Service.ResetPwdCodeLives / 60 ctx.Data["CurDbValue"] = "" ctx.HTML(200, base.TplName(ctx.Params("*"))) }
func Config(ctx *middleware.Context) { ctx.Data["Title"] = ctx.Tr("admin.users") ctx.Data["PageIsAdmin"] = true ctx.Data["PageIsAdminConfig"] = true ctx.Data["AppUrl"] = setting.AppUrl ctx.Data["Domain"] = setting.Domain ctx.Data["OfflineMode"] = setting.OfflineMode ctx.Data["DisableRouterLog"] = setting.DisableRouterLog ctx.Data["RunUser"] = setting.RunUser ctx.Data["RunMode"] = strings.Title(macaron.Env) ctx.Data["RepoRootPath"] = setting.RepoRootPath ctx.Data["StaticRootPath"] = setting.StaticRootPath ctx.Data["LogRootPath"] = setting.LogRootPath ctx.Data["ScriptType"] = setting.ScriptType ctx.Data["ReverseProxyAuthUser"] = setting.ReverseProxyAuthUser ctx.Data["Service"] = setting.Service ctx.Data["DbCfg"] = models.DbCfg ctx.Data["Webhook"] = setting.Webhook ctx.Data["MailerEnabled"] = false if setting.MailService != nil { ctx.Data["MailerEnabled"] = true ctx.Data["Mailer"] = setting.MailService } ctx.Data["OauthEnabled"] = false if setting.OauthService != nil { ctx.Data["OauthEnabled"] = true ctx.Data["Oauther"] = setting.OauthService } ctx.Data["CacheAdapter"] = setting.CacheAdapter ctx.Data["CacheInternal"] = setting.CacheInternal ctx.Data["CacheConn"] = setting.CacheConn ctx.Data["SessionConfig"] = setting.SessionConfig ctx.Data["PictureService"] = setting.PictureService ctx.Data["DisableGravatar"] = setting.DisableGravatar type logger struct { Mode, Config string } loggers := make([]*logger, len(setting.LogModes)) for i := range setting.LogModes { loggers[i] = &logger{setting.LogModes[i], setting.LogConfigs[i]} } ctx.Data["Loggers"] = loggers ctx.HTML(200, CONFIG) }
// GET /users/:username/tokens func ListAccessTokens(ctx *middleware.Context) { tokens, err := models.ListAccessTokens(ctx.User.Id) if err != nil { ctx.JSON(500, &base.ApiJsonErr{"ListAccessTokens: " + err.Error(), base.DOC_URL}) return } apiTokens := make([]*sdk.AccessToken, len(tokens)) for i := range tokens { apiTokens[i] = &sdk.AccessToken{tokens[i].Name, tokens[i].Sha1} } ctx.JSON(200, &apiTokens) }
func Members(ctx *middleware.Context) { org := ctx.Org.Organization ctx.Data["Title"] = org.FullName ctx.Data["PageIsOrgMembers"] = true if err := org.GetMembers(); err != nil { ctx.Handle(500, "GetMembers", err) return } ctx.Data["Members"] = org.Members ctx.HTML(200, MEMBERS) }
func ShowSSHKeys(ctx *middleware.Context, uid int64) { keys, err := models.ListPublicKeys(uid) if err != nil { ctx.Handle(500, "ListPublicKeys", err) return } var buf bytes.Buffer for i := range keys { buf.WriteString(keys[i].OmitEmail()) buf.WriteString("\n") } ctx.RenderData(200, buf.Bytes()) }
func Home(ctx *middleware.Context) { org := ctx.Org.Organization ctx.Data["Title"] = org.FullName repos, err := models.GetRepositories(org.Id, ctx.IsSigned && org.IsOrgMember(ctx.User.Id)) if err != nil { ctx.Handle(500, "GetRepositories", err) return } ctx.Data["Repos"] = repos if err = org.GetMembers(); err != nil { ctx.Handle(500, "GetMembers", err) return } ctx.Data["Members"] = org.Members if err = org.GetTeams(); err != nil { ctx.Handle(500, "GetTeams", err) return } ctx.Data["Teams"] = org.Teams ctx.HTML(200, HOME) }
func CreateIssue(ctx *middleware.Context) { ctx.Data["Title"] = "Create issue" ctx.Data["IsRepoToolbarIssues"] = true ctx.Data["IsRepoToolbarIssuesList"] = false ctx.Data["AttachmentsEnabled"] = setting.AttachmentEnabled var err error // Get all milestones. ctx.Data["OpenMilestones"], err = models.GetMilestones(ctx.Repo.Repository.Id, false) if err != nil { ctx.Handle(500, "issue.ViewIssue(GetMilestones.1): %v", err) return } ctx.Data["ClosedMilestones"], err = models.GetMilestones(ctx.Repo.Repository.Id, true) if err != nil { ctx.Handle(500, "issue.ViewIssue(GetMilestones.2): %v", err) return } us, err := ctx.Repo.Repository.GetCollaborators() if err != nil { ctx.Handle(500, "issue.CreateIssue(GetCollaborators)", err) return } ctx.Data["AllowedTypes"] = setting.AttachmentAllowedTypes ctx.Data["Collaborators"] = us ctx.HTML(200, ISSUE_CREATE) }
func pagination(ctx *middleware.Context, count int64, pageNum int) int { p := ctx.QueryInt("p") if p < 1 { p = 1 } curCount := int64((p-1)*pageNum + pageNum) if curCount >= count { p = int(math.Ceil(float64(count) / float64(pageNum))) } else { ctx.Data["NextPageNum"] = p + 1 } if p > 1 { ctx.Data["LastPageNum"] = p - 1 } return p }
func GitHooksEdit(ctx *middleware.Context) { ctx.Data["Title"] = ctx.Tr("repo.settings") ctx.Data["PageIsSettingsGitHooks"] = true name := ctx.Params(":name") hook, err := ctx.Repo.GitRepo.GetHook(name) if err != nil { if err == git.ErrNotValidHook { ctx.Handle(404, "GetHook", err) } else { ctx.Handle(500, "GetHook", err) } return } ctx.Data["Hook"] = hook ctx.HTML(200, GITHOOK_EDIT) }
func getForkRepository(ctx *middleware.Context) (*models.Repository, error) { forkId := ctx.QueryInt64("fork_id") ctx.Data["ForkId"] = forkId forkRepo, err := models.GetRepositoryById(forkId) if err != nil { return nil, fmt.Errorf("GetRepositoryById: %v", err) } ctx.Data["repo_name"] = forkRepo.Name ctx.Data["desc"] = forkRepo.Description if err = forkRepo.GetOwner(); err != nil { return nil, fmt.Errorf("GetOwner: %v", err) } ctx.Data["ForkFrom"] = forkRepo.Owner.Name + "/" + forkRepo.Name return forkRepo, nil }
func ActivateEmail(ctx *middleware.Context) { code := ctx.Query("code") email_string := ctx.Query("email") // Verify code. if email := models.VerifyActiveEmailCode(code, email_string); email != nil { if err := email.Activate(); err != nil { ctx.Handle(500, "ActivateEmail", err) } log.Trace("Email activated: %s", email.Email) ctx.Flash.Success(ctx.Tr("settings.activate_email_success")) } ctx.Redirect(setting.AppSubUrl + "/user/settings/email") return }
func DeleteNotice(ctx *middleware.Context) { id := com.StrTo(ctx.Params(":id")).MustInt64() if err := models.DeleteNotice(id); err != nil { ctx.Handle(500, "DeleteNotice", err) return } log.Trace("System notice deleted by admin(%s): %d", ctx.User.Name, id) ctx.Flash.Success(ctx.Tr("admin.notices.delete_success")) ctx.Redirect("/admin/notices") }
func Migrate(ctx *middleware.Context) { ctx.Data["Title"] = ctx.Tr("new_migrate") ctxUser, err := checkContextUser(ctx, ctx.QueryInt64("org")) if err != nil { ctx.Handle(500, "checkContextUser", err) return } ctx.Data["ContextUser"] = ctxUser if err := ctx.User.GetOrganizations(); err != nil { ctx.Handle(500, "GetOrganizations", err) return } ctx.Data["Orgs"] = ctx.User.Orgs ctx.HTML(200, MIGRATE) }
func ResetPasswd(ctx *middleware.Context) { ctx.Data["Title"] = ctx.Tr("auth.reset_password") code := ctx.Query("code") if len(code) == 0 { ctx.Error(404) return } ctx.Data["Code"] = code ctx.Data["IsResetForm"] = true ctx.HTML(200, RESET_PASSWORD) }
func Email2User(ctx *middleware.Context) { u, err := models.GetUserByEmail(ctx.Query("email")) if err != nil { if err == models.ErrUserNotExist { ctx.Handle(404, "user.Email2User(GetUserByEmail)", err) } else { ctx.Handle(500, "user.Email2User(GetUserByEmail)", err) } return } ctx.Redirect(setting.AppSubUrl + "/user/" + u.Name) }
func EditAuthSource(ctx *middleware.Context) { ctx.Data["Title"] = ctx.Tr("admin.auths.edit") ctx.Data["PageIsAdmin"] = true ctx.Data["PageIsAdminAuthentications"] = true ctx.Data["LoginTypes"] = models.LoginTypes ctx.Data["SMTPAuths"] = models.SMTPAuths id := com.StrTo(ctx.Params(":authid")).MustInt64() if id == 0 { ctx.Handle(404, "EditAuthSource", nil) return } u, err := models.GetLoginSourceById(id) if err != nil { ctx.Handle(500, "GetLoginSourceById", err) return } ctx.Data["Source"] = u ctx.HTML(200, AUTH_EDIT) }
func Milestones(ctx *middleware.Context) { ctx.Data["Title"] = "Milestones" ctx.Data["IsRepoToolbarIssues"] = true ctx.Data["IsRepoToolbarIssuesList"] = true isShowClosed := ctx.Query("state") == "closed" miles, err := models.GetMilestones(ctx.Repo.Repository.Id, isShowClosed) if err != nil { ctx.Handle(500, "issue.Milestones(GetMilestones)", err) return } for _, m := range miles { m.RenderedContent = string(base.RenderMarkdown([]byte(m.Content), ctx.Repo.RepoLink)) m.CalOpenIssues() } ctx.Data["Milestones"] = miles if isShowClosed { ctx.Data["State"] = "closed" } else { ctx.Data["State"] = "open" } ctx.HTML(200, MILESTONE) }
func SearchUsers(ctx *middleware.Context) { opt := models.SearchOption{ Keyword: ctx.Query("q"), Limit: com.StrTo(ctx.Query("limit")).MustInt(), } if opt.Limit == 0 { opt.Limit = 10 } us, err := models.SearchUserByName(opt) if err != nil { ctx.JSON(500, map[string]interface{}{ "ok": false, "error": err.Error(), }) return } results := make([]*sdk.User, len(us)) for i := range us { results[i] = &sdk.User{ UserName: us[i].Name, AvatarUrl: us[i].AvatarLink(), FullName: us[i].FullName, } } ctx.Render.JSON(200, map[string]interface{}{ "ok": true, "data": results, }) }