func EditTeam(ctx *context.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 UpdateIssueMilestone(ctx *context.Context) { issue := getActionIssue(ctx) if ctx.Written() { return } oldMilestoneID := issue.MilestoneID milestoneID := ctx.QueryInt64("id") if oldMilestoneID == milestoneID { ctx.JSON(200, map[string]interface{}{ "ok": true, }) return } // Not check for invalid milestone id and give responsibility to owners. issue.MilestoneID = milestoneID if err := models.ChangeMilestoneAssign(issue, oldMilestoneID); err != nil { ctx.Handle(500, "ChangeMilestoneAssign", err) return } ctx.JSON(200, map[string]interface{}{ "ok": true, }) }
func SettingsDeleteAvatar(ctx *context.Context) { if err := ctx.Org.Organization.DeleteAvatar(); err != nil { ctx.Flash.Error(err.Error()) } ctx.Redirect(ctx.Org.OrgLink + "/settings") }
func Labels(ctx *context.Context) { ctx.Data["Title"] = ctx.Tr("repo.labels") ctx.Data["PageIsIssueList"] = true ctx.Data["PageIsLabels"] = true ctx.Data["RequireMinicolors"] = true ctx.HTML(200, LABELS) }
// Request handling function func HTTPBackend(ctx *context.Context, config *Config) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { for _, route := range routes { r.URL.Path = strings.ToLower(r.URL.Path) // blue: In case some repo name has upper case name if m := route.cr.FindStringSubmatch(r.URL.Path); m != nil { if route.method != r.Method { renderMethodNotAllowed(w, r) return } file := strings.Replace(r.URL.Path, m[1]+"/", "", 1) dir, err := getGitDir(config, m[1]) if err != nil { log.GitLogger.Error(4, err.Error()) ctx.Handle(404, "HTTPBackend", err) return } route.handler(handler{config, w, r, dir, file}) return } } ctx.Handle(404, "HTTPBackend", nil) return } }
func UpdateIssueAssignee(ctx *context.Context) { issue := getActionIssue(ctx) if ctx.Written() { return } aid := ctx.QueryInt64("id") if issue.AssigneeID == aid { ctx.JSON(200, map[string]interface{}{ "ok": true, }) return } // Not check for invalid assignee id and give responsibility to owners. issue.AssigneeID = aid if err := models.UpdateIssueUserByAssignee(issue); err != nil { ctx.Handle(500, "UpdateIssueUserByAssignee: %v", err) return } ctx.JSON(200, map[string]interface{}{ "ok": true, }) }
func HTTPBackend(ctx *context.Context, cfg *serviceConfig) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { for _, route := range routes { r.URL.Path = strings.ToLower(r.URL.Path) // blue: In case some repo name has upper case name if m := route.reg.FindStringSubmatch(r.URL.Path); m != nil { if route.method != r.Method { if r.Proto == "HTTP/1.1" { w.WriteHeader(http.StatusMethodNotAllowed) w.Write([]byte("Method Not Allowed")) } else { w.WriteHeader(http.StatusBadRequest) w.Write([]byte("Bad Request")) } return } file := strings.Replace(r.URL.Path, m[1]+"/", "", 1) dir, err := getGitRepoPath(m[1]) if err != nil { log.GitLogger.Error(4, err.Error()) ctx.Handle(http.StatusNotFound, "HTTPBackend", err) return } route.handler(serviceHandler{cfg, w, r, dir, file}) return } } ctx.Handle(http.StatusNotFound, "HTTPBackend", nil) return } }
func Install(ctx *context.Context) { form := auth.InstallForm{} // Database settings form.DbHost = models.DbCfg.Host form.DbUser = models.DbCfg.User form.DbName = models.DbCfg.Name form.DbPath = models.DbCfg.Path ctx.Data["CurDbOption"] = "MySQL" switch models.DbCfg.Type { case "postgres": ctx.Data["CurDbOption"] = "PostgreSQL" case "sqlite3": if models.EnableSQLite3 { ctx.Data["CurDbOption"] = "SQLite3" } case "tidb": if models.EnableTidb { ctx.Data["CurDbOption"] = "TiDB" } } // Application general settings form.AppName = setting.AppName form.RepoRootPath = setting.RepoRootPath // Note(unknwon): it's hard for Windows users change a running user, // so just use current one if config says default. if setting.IsWindows && setting.RunUser == "git" { form.RunUser = user.CurrentUsername() } else { form.RunUser = setting.RunUser } form.Domain = setting.Domain form.SSHPort = setting.SSH.Port form.HTTPPort = setting.HttpPort form.AppUrl = setting.AppUrl form.LogRootPath = setting.LogRootPath // E-mail service settings if setting.MailService != nil { form.SMTPHost = setting.MailService.Host form.SMTPFrom = setting.MailService.From form.SMTPEmail = setting.MailService.User } form.RegisterConfirm = setting.Service.RegisterEmailConfirm form.MailNotify = setting.Service.EnableNotifyMail // Server and other services settings form.OfflineMode = setting.OfflineMode form.DisableGravatar = setting.DisableGravatar form.DisableRegistration = setting.Service.DisableRegistration form.EnableCaptcha = setting.Service.EnableCaptcha form.RequireSignInView = setting.Service.RequireSignInView auth.AssignForm(form, ctx.Data) ctx.HTML(200, INSTALL) }
func SettingsDeleteAvatar(ctx *context.Context) { if err := ctx.User.DeleteAvatar(); err != nil { ctx.Flash.Error(err.Error()) } ctx.Redirect(setting.AppSubUrl + "/user/settings/avatar") }
func checkWebhook(ctx *context.Context) (*OrgRepoCtx, *models.Webhook) { ctx.Data["RequireHighlightJS"] = true orCtx, err := getOrgRepoCtx(ctx) if err != nil { ctx.Handle(500, "getOrgRepoCtx", err) return nil, nil } ctx.Data["BaseLink"] = orCtx.Link w, err := models.GetWebhookByID(ctx.ParamsInt64(":id")) if err != nil { if models.IsErrWebhookNotExist(err) { ctx.Handle(404, "GetWebhookByID", nil) } else { ctx.Handle(500, "GetWebhookByID", err) } return nil, nil } switch w.HookTaskType { case models.SLACK: ctx.Data["SlackHook"] = w.GetSlackHook() ctx.Data["HookType"] = "slack" default: ctx.Data["HookType"] = "gogs" } ctx.Data["History"], err = w.History(1) if err != nil { ctx.Handle(500, "History", err) } return orCtx, w }
// retrieveFeeds loads feeds from database by given context user. // The user could be organization so it is not always the logged in user, // which is why we have to explicitly pass the context user ID. func retrieveFeeds(ctx *context.Context, ctxUser *models.User, userID, offset int64, isProfile bool) { actions, err := models.GetFeeds(ctxUser, userID, offset, isProfile) if err != nil { ctx.Handle(500, "GetFeeds", err) return } // Check access of private repositories. feeds := make([]*models.Action, 0, len(actions)) unameAvatars := make(map[string]string) for _, act := range actions { // Cache results to reduce queries. _, ok := unameAvatars[act.ActUserName] if !ok { u, err := models.GetUserByName(act.ActUserName) if err != nil { if models.IsErrUserNotExist(err) { continue } ctx.Handle(500, "GetUserByName", err) return } unameAvatars[act.ActUserName] = u.AvatarLink() } act.ActAvatar = unameAvatars[act.ActUserName] feeds = append(feeds, act) } ctx.Data["Feeds"] = feeds }
func NewTeam(ctx *context.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 ChangeCollaborationAccessMode(ctx *context.Context) { if err := ctx.Repo.Repository.ChangeCollaborationAccessMode( ctx.QueryInt64("uid"), models.AccessMode(ctx.QueryInt("mode"))); err != nil { log.Error(4, "ChangeCollaborationAccessMode: %v", err) } }
func NewMilestone(ctx *context.Context) { ctx.Data["Title"] = ctx.Tr("repo.milestones.new") ctx.Data["PageIsIssueList"] = true ctx.Data["PageIsMilestones"] = true ctx.Data["RequireDatetimepicker"] = true ctx.Data["DateLang"] = setting.DateLang(ctx.Locale.Language()) ctx.HTML(200, MILESTONE_NEW) }
func Repos(ctx *context.Context) { ctx.Data["Title"] = ctx.Tr("admin.repositories") ctx.Data["PageIsAdmin"] = true ctx.Data["PageIsAdminRepositories"] = true routers.RenderRepoSearch(ctx, models.CountRepositories, models.Repositories, setting.AdminRepoPagingNum, "id ASC", REPOS) }
func ExploreRepos(ctx *context.Context) { ctx.Data["Title"] = ctx.Tr("explore") ctx.Data["PageIsExplore"] = true ctx.Data["PageIsExploreRepositories"] = true RenderRepoSearch(ctx, models.CountPublicRepositories, models.GetRecentUpdatedRepositories, setting.ExplorePagingNum, "updated_unix DESC", EXPLORE_REPOS) }
func ExploreUsers(ctx *context.Context) { ctx.Data["Title"] = ctx.Tr("explore") ctx.Data["PageIsExplore"] = true ctx.Data["PageIsExploreUsers"] = true RenderUserSearch(ctx, models.USER_TYPE_INDIVIDUAL, models.CountUsers, models.Users, setting.ExplorePagingNum, "updated_unix DESC", EXPLORE_USERS) }
func checkHookType(ctx *context.Context) string { hookType := strings.ToLower(ctx.Params(":type")) if !com.IsSliceContainsStr(setting.Webhook.Types, hookType) { ctx.Handle(404, "checkHookType", nil) return "" } return hookType }
func Organizations(ctx *context.Context) { ctx.Data["Title"] = ctx.Tr("admin.organizations") ctx.Data["PageIsAdmin"] = true ctx.Data["PageIsAdminOrganizations"] = true routers.RenderUserSearch(ctx, models.USER_TYPE_ORGANIZATION, models.CountOrganizations, models.Organizations, setting.AdminOrgPagingNum, "id ASC", ORGS) }
func Monitor(ctx *context.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.ListTasks() ctx.HTML(200, MONITOR) }
func Users(ctx *context.Context) { ctx.Data["Title"] = ctx.Tr("admin.users") ctx.Data["PageIsAdmin"] = true ctx.Data["PageIsAdminUsers"] = true routers.RenderUserSearch(ctx, models.USER_TYPE_INDIVIDUAL, models.CountUsers, models.Users, setting.AdminUserPagingNum, "id ASC", USERS) }
func TeamMembers(ctx *context.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 *context.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) }
func SettingsAvatarPost(ctx *context.Context, form auth.AvatarForm) { if err := UpdateAvatarSetting(ctx, form, ctx.User); err != nil { ctx.Flash.Error(err.Error()) } else { ctx.Flash.Success(ctx.Tr("settings.update_avatar_success")) } ctx.Redirect(setting.AppSubUrl + "/user/settings/avatar") }
func DeleteFile(ctx *context.Context) { ctx.Data["PageIsDelete"] = true ctx.Data["BranchLink"] = ctx.Repo.RepoLink + "/src/" + ctx.Repo.BranchName ctx.Data["TreePath"] = ctx.Repo.TreePath ctx.Data["commit_summary"] = "" ctx.Data["commit_message"] = "" ctx.Data["commit_choice"] = "direct" ctx.Data["new_branch_name"] = "" ctx.HTML(200, DELETE_FILE) }
func SettingsAvatar(ctx *context.Context, form auth.UploadAvatarForm) { form.Enable = true if err := user.UpdateAvatarSetting(ctx, form, ctx.Org.Organization); err != nil { ctx.Flash.Error(err.Error()) } else { ctx.Flash.Success(ctx.Tr("org.settings.update_avatar_success")) } ctx.Redirect(ctx.Org.OrgLink + "/settings") }
func DeleteTeam(ctx *context.Context) { if err := models.DeleteTeam(ctx.Org.Team); err != nil { ctx.Flash.Error("DeleteTeam: " + err.Error()) } else { ctx.Flash.Success(ctx.Tr("org.teams.delete_team_success")) } ctx.JSON(200, map[string]interface{}{ "redirect": ctx.Org.OrgLink + "/teams", }) }
func Following(ctx *context.Context) { u := GetUserByParams(ctx) if ctx.Written() { return } ctx.Data["Title"] = u.DisplayName() ctx.Data["CardsTitle"] = ctx.Tr("user.following") ctx.Data["PageIsFollowing"] = true ctx.Data["Owner"] = u repo.RenderUserCards(ctx, u.NumFollowing, u.GetFollowing, FOLLOWERS) }
func MustEnableWiki(ctx *context.Context) { if !ctx.Repo.Repository.EnableWiki { ctx.Handle(404, "MustEnableWiki", nil) return } if ctx.Repo.Repository.EnableExternalWiki { ctx.Redirect(ctx.Repo.Repository.ExternalWikiURL) return } }
func NewWiki(ctx *context.Context) { ctx.Data["Title"] = ctx.Tr("repo.wiki.new_page") ctx.Data["PageIsWiki"] = true ctx.Data["RequireSimpleMDE"] = true if !ctx.Repo.Repository.HasWiki() { ctx.Data["title"] = "Home" } ctx.HTML(200, WIKI_NEW) }