func projectBrowseHandler(w http.ResponseWriter, r *http.Request) { data := setDefaultData(w, r) projectAmount := 16 pageAmount := 5 //pagination pageNumber, err := strconv.Atoi(r.URL.Query().Get("page")) //used for getting roles currentPage := pageNumber //used for getting page list if currentPage <= 0 { currentPage = 1 } data["currentPage"] = currentPage data["prevPage"] = currentPage - 1 data["nextPage"] = currentPage + 1 if err != nil { fmt.Println(err) } //zero index page number for skip calculation when querying mongo if pageNumber != 0 { pageNumber-- } //get projects projectList, projectCount := project.FindProjects(nil, (pageNumber)*projectAmount, projectAmount) fmt.Println(projectList) //more params for pagination maxPage := int(math.Ceil(float64(projectCount) / float64(projectAmount))) pageList := getPageList(maxPage, currentPage, pageAmount) data["projects"] = projectList data["pageList"] = pageList data["maxPage"] = maxPage display(w, "browseProjects", &Page{Title: "Projects", Data: data}) }
func viewUserProjects(w http.ResponseWriter, r *http.Request) { data := setDefaultData(w, r) userID := r.URL.Query().Get("id") user := user.FindUserById(userID) dbRefUser := &mgo.DBRef{Collection: "users", Id: user.Id, Database: "CoAud"} postedProjects, projectCount := project.FindProjects(bson.M{"user": dbRefUser}, 0, 500) data["user"] = user data["postedProjects"] = postedProjects data["projectCount"] = projectCount display(w, "viewUserProjects", &Page{Title: user.DisplayName, Data: data}) }
//The handlers. func homeHandler(w http.ResponseWriter, r *http.Request) { data := setDefaultData(w, r) //get roles roleList, totalRolesCount := role.FindRoles(nil, 0, 16) projectList, totalProjectList := project.FindProjects(nil, 0, 6) fmt.Println("total number of projects: ", totalProjectList) data["totalRolesCount"] = totalRolesCount data["roles"] = roleList data["projects"] = projectList display(w, "home", &Page{Title: "Home!", Data: data}) }