//printPageNavi renders page_navi.txt, part for paging. func (t *threadCGI) printPageNavi(path string, page int, ca *thread.Cache, id string) { len := ca.Len() first := len / cfg.ThreadPageSize if len%cfg.ThreadPageSize == 0 { first++ } pages := make([]int, first+1) for i := 0; i <= first; i++ { pages[i] = i } s := struct { Page int CacheLen int Path string ID string First int ThreadCGI string Message cgi.Message ThreadPageSize int Pages []int }{ page, len, path, id, first, cfg.ThreadURL, t.M, cfg.ThreadPageSize, pages, } cgi.RenderTemplate("page_navi", s, t.WR) }
//makeOneRow makes one row of CSV depending on c. func (g *gatewayCGI) makeOneRow(c string, ca *thread.Cache, p, title string) string { switch c { case "file": return ca.Datfile case "stamp": return strconv.FormatInt(ca.Stamp(), 10) case "date": return time.Unix(ca.Stamp(), 0).String() case "path": return p case "uri": if g.Host() != "" && p != "" { return "http://" + g.Host() + p } case "type": return "thread" case "title": return title case "records": return strconv.Itoa(ca.Len()) case "size": return strconv.FormatInt(ca.Size(), 10) case "tag": return user.String(ca.Datfile) case "sugtag": return suggest.String(ca.Datfile) } return "" }
//NewResTable creates ane returns a resTable instance. func NewResTable(ca *thread.Cache) *ResTable { r := &ResTable{ make(map[string]int), make([]string, ca.Len()+1), } recs := ca.LoadRecords(record.Alive) for i, k := range recs.Keys() { rec := recs.Get(k, nil) r.Num2id[i+1] = rec.ID[:8] r.ID2num[rec.ID[:8]] = i + 1 } return r }