mirror of
https://github.com/osmarks/mycorrhiza.git
synced 2025-08-11 08:14:08 +00:00
Make trivial improvements to the new recent-changes feed
Add wiki name and remove author from feed metadata Hyphenate order settings Change default order from new-to-old to old-to-new Only group edits from the same author Add author to feed item titles
This commit is contained in:
parent
114e18bcbd
commit
6cb4161dd8
@ -14,10 +14,9 @@ import (
|
|||||||
|
|
||||||
func recentChangesFeed(opts FeedOptions) *feeds.Feed {
|
func recentChangesFeed(opts FeedOptions) *feeds.Feed {
|
||||||
feed := &feeds.Feed{
|
feed := &feeds.Feed{
|
||||||
Title: "Recent changes",
|
Title: cfg.WikiName + " (recent changes)",
|
||||||
Link: &feeds.Link{Href: cfg.URL},
|
Link: &feeds.Link{Href: cfg.URL},
|
||||||
Description: "List of 30 recent changes on the wiki",
|
Description: "List of 30 recent changes on the wiki",
|
||||||
Author: &feeds.Author{Name: "Wikimind", Email: "wikimind@mycorrhiza"},
|
|
||||||
Updated: time.Now(),
|
Updated: time.Now(),
|
||||||
}
|
}
|
||||||
revs := RecentChanges(30)
|
revs := RecentChanges(30)
|
||||||
@ -79,12 +78,13 @@ func groupRevisionsByPeriod(revs []Revision, period time.Duration) (res []revisi
|
|||||||
}
|
}
|
||||||
|
|
||||||
currTime := revs[0].Time
|
currTime := revs[0].Time
|
||||||
res = append(res, newRevisionGroup(revs[0]))
|
currGroup := newRevisionGroup(revs[0])
|
||||||
for _, rev := range revs[1:] {
|
for _, rev := range revs[1:] {
|
||||||
if currTime.Sub(rev.Time) < period {
|
if currTime.Sub(rev.Time) < period && currGroup[0].Username == rev.Username {
|
||||||
res[len(res)-1].addRevision(rev)
|
currGroup.addRevision(rev)
|
||||||
} else {
|
} else {
|
||||||
res = append(res, newRevisionGroup(rev))
|
res = append(res, currGroup)
|
||||||
|
currGroup = newRevisionGroup(rev)
|
||||||
}
|
}
|
||||||
currTime = rev.Time
|
currTime = rev.Time
|
||||||
}
|
}
|
||||||
@ -94,7 +94,8 @@ func groupRevisionsByPeriod(revs []Revision, period time.Duration) (res []revisi
|
|||||||
func (grp revisionGroup) feedItem(opts FeedOptions) feeds.Item {
|
func (grp revisionGroup) feedItem(opts FeedOptions) feeds.Item {
|
||||||
return feeds.Item{
|
return feeds.Item{
|
||||||
Title: grp.title(opts.groupOrder),
|
Title: grp.title(opts.groupOrder),
|
||||||
Author: grp.author(),
|
// groups for feeds should have the same author for all revisions
|
||||||
|
Author: &feeds.Author{Name: grp[0].Username},
|
||||||
Id: grp[len(grp)-1].Hash,
|
Id: grp[len(grp)-1].Hash,
|
||||||
Description: grp.descriptionForFeed(opts.groupOrder),
|
Description: grp.descriptionForFeed(opts.groupOrder),
|
||||||
Created: grp[len(grp)-1].Time, // earliest revision
|
Created: grp[len(grp)-1].Time, // earliest revision
|
||||||
@ -112,22 +113,12 @@ func (grp revisionGroup) title(order FeedGroupOrder) string {
|
|||||||
message = grp[len(grp)-1].Message
|
message = grp[len(grp)-1].Message
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(grp) == 1 {
|
|
||||||
return message
|
|
||||||
} else {
|
|
||||||
return fmt.Sprintf("%d edits (%s, ...)", len(grp), message)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (grp revisionGroup) author() *feeds.Author {
|
|
||||||
author := grp[0].Username
|
author := grp[0].Username
|
||||||
for _, rev := range grp[1:] {
|
if len(grp) == 1 {
|
||||||
// if they don't all have the same author, return nil
|
return fmt.Sprintf("%s by %s", message, author)
|
||||||
if rev.Username != author {
|
} else {
|
||||||
return nil
|
return fmt.Sprintf("%d edits by %s (%s, ...)", len(grp), author, message)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
return &feeds.Author{Name: author}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (grp revisionGroup) descriptionForFeed(order FeedGroupOrder) string {
|
func (grp revisionGroup) descriptionForFeed(order FeedGroupOrder) string {
|
||||||
@ -204,10 +195,10 @@ const (
|
|||||||
|
|
||||||
func parseFeedGroupOrder(query url.Values) (FeedGroupOrder, error) {
|
func parseFeedGroupOrder(query url.Values) (FeedGroupOrder, error) {
|
||||||
switch query.Get("order") {
|
switch query.Get("order") {
|
||||||
case "oldtonew":
|
case "old-to-new":
|
||||||
return OldToNew, nil
|
|
||||||
case "newtoold":
|
|
||||||
case "":
|
case "":
|
||||||
|
return OldToNew, nil
|
||||||
|
case "new-to-old":
|
||||||
return NewToOld, nil
|
return NewToOld, nil
|
||||||
}
|
}
|
||||||
return 0, errors.New("unknown order")
|
return 0, errors.New("unknown order")
|
||||||
|
@ -68,7 +68,7 @@ func Revisions(hyphaName string) ([]Revision, error) {
|
|||||||
return revs, err
|
return revs, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// Return time like mm-dd 13:42
|
// Return time like dd — 13:42
|
||||||
func (rev *Revision) timeToDisplay() string {
|
func (rev *Revision) timeToDisplay() string {
|
||||||
D := rev.Time.Day()
|
D := rev.Time.Day()
|
||||||
h, m, _ := rev.Time.Clock()
|
h, m, _ := rev.Time.Clock()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user