// checkSpecialUsage checks special usage of keywords. // It returns true if it is a special usage, false otherwise. func checkSpecialUsage(this *SearchRouter, q string) bool { switch { case q == "gorepo": // Show list of standard library. pinfos, _ := models.GetGoRepo() if len(pinfos) > 0 { this.Data["IsFindPro"] = true this.Data["Results"] = pinfos } return true case q == "imports": // Show imports package list. pkgs := strings.Split(this.Input().Get("pkgs"), "|") pinfos, _ := models.GetGroupPkgInfo(pkgs) if len(pinfos) > 0 { this.Data["IsFindPro"] = true this.Data["Results"] = pinfos } return true case q == "imported": // Show packages that import this project. pkgs := strings.Split( strings.Replace(this.Input().Get("pkgs"), "$", "", -1), "|") pinfos := models.GetGroupPkgInfoById(pkgs) if len(pinfos) > 0 { this.Data["IsFindPro"] = true this.Data["Results"] = pinfos } return true case strings.Index(q, ":l=") > -1: // Add label to the project. // Get label(s). i := strings.Index(q, ":l=") if utils.IsGoRepoPath(q[:i]) { this.Redirect("/"+q[:i], 302) return true } if isLabel(q[i+3:]) && models.UpdateLabelInfo(q[:i], q[i+3:], true) { this.Redirect("/"+q[:i], 302) } return true case strings.Index(q, ":rl=") > -1: // Remove label to the project. // Get label(s). i := strings.Index(q, ":rl=") if utils.IsGoRepoPath(q[:i]) { this.Redirect("/"+q[:i], 302) return true } if isLabel(q[i+4:]) && models.UpdateLabelInfo(q[:i], q[i+4:], false) { this.Redirect("/"+q[:i], 302) } return true } return false }
// checkSpecialUsage checks special usage of keywords. // It returns true if it is a special usage, false otherwise. func checkSpecialUsage(this *SearchController, q string) bool { switch { case q == "gorepo": // Show list of standard library. pkgInfos, _ := models.GetGoRepo() // Show results after searched. if len(pkgInfos) > 0 { this.Data["IsFindPro"] = true this.Data["AllPros"] = pkgInfos } return true case q == "imports": // Show imports package list. pkgs := strings.Split(this.Input().Get("pkgs"), "|") pinfos, _ := models.GetGroupPkgInfo(pkgs) if len(pinfos) > 0 { this.Data["IsFindPro"] = true this.Data["AllPros"] = pinfos } return true case q == "imported": // Show packages that import this project. pkgs := strings.Split(this.Input().Get("pkgs"), "|") pinfos, _ := models.GetGroupPkgInfoById(pkgs) if len(pinfos) > 0 { this.Data["IsFindPro"] = true this.Data["AllPros"] = pinfos } return true case strings.Index(q, ":tag=") > -1: // Add tag(s) to the project. // Get tag(s). i := strings.Index(q, ":tag=") if utils.IsGoRepoPath(q[:i]) { this.Redirect("/"+q[:i], 302) return true } if isTag(q[i+5:]) && models.UpdateTagInfo(q[:i], q[i+5:], true) { this.Redirect("/"+q[:i], 302) } return true case strings.Index(q, ":rtag=") > -1: // Remove tag(s) to the project. // Get tag(s). i := strings.Index(q, ":rtag=") if utils.IsGoRepoPath(q[:i]) { this.Redirect("/"+q[:i], 302) return true } if isTag(q[i+6:]) && models.UpdateTagInfo(q[:i], q[i+6:], false) { this.Redirect("/"+q[:i], 302) } return true } return false }
func serveHome(this *HomeRouter, urpids, urpts *http.Cookie) { this.Data["IsHome"] = true this.TplNames = "home.html" // Global Recent projects. this.Data["GlobalHistory"] = recentViewedPros // User Recent projects. if urpids != nil && urpts != nil { upros := models.GetGroupPkgInfoById(strings.Split(urpids.Value, "|")) pts := strings.Split(urpts.Value, "|") for i, p := range upros { ts, _ := strconv.ParseInt(pts[i], 10, 64) p.ViewedTime = ts } this.Data["UserHistory"] = upros } // Popular projects and examples. this.Data["WeeklyStarPros"] = RockPros this.Data["TopRankPros"] = topRankPros this.Data["TopViewsPros"] = topViewedPros this.Data["RecentExams"] = recentUpdatedExs }
func serveHome(this *HomeRouter, urpids, urpts *http.Cookie) { this.Data["IsHome"] = true // Global Recent projects. this.Data["GlobalRecentPros"] = recentViewedPros // User Recent projects. if urpids != nil && urpts != nil { upros := models.GetGroupPkgInfoById(strings.Split(urpids.Value, "|")) pts := strings.Split(urpts.Value, "|") for i, p := range upros { ts, _ := strconv.ParseInt(pts[i], 10, 64) p.ViewedTime = ts } this.Data["UserRecentPros"] = upros } // Popular projects and examples. this.Data["TopRankPros"] = topRankPros this.Data["TopViewedPros"] = topViewedPros this.Data["RockPros"] = RockPros this.Data["RecentExams"] = recentUpdatedExs // Standard library type-ahead. this.Data["DataSrc"] = utils.GoRepoSet }