mirror of
https://github.com/gohugoio/hugo.git
synced 2025-04-20 02:53:12 +00:00
hugolib: Support an expiration date
This commit is contained in:
parent
2564f46a68
commit
d4156e6127
2 changed files with 55 additions and 5 deletions
|
@ -59,6 +59,7 @@ type Page struct {
|
||||||
Truncated bool
|
Truncated bool
|
||||||
Draft bool
|
Draft bool
|
||||||
PublishDate time.Time
|
PublishDate time.Time
|
||||||
|
ExpiryDate time.Time
|
||||||
Markup string
|
Markup string
|
||||||
extension string
|
extension string
|
||||||
contentType string
|
contentType string
|
||||||
|
@ -467,7 +468,8 @@ func (p *Page) LinkTitle() string {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *Page) ShouldBuild() bool {
|
func (p *Page) ShouldBuild() bool {
|
||||||
if viper.GetBool("BuildFuture") || p.PublishDate.IsZero() || p.PublishDate.Before(time.Now()) {
|
if (viper.GetBool("BuildFuture") || p.PublishDate.IsZero() || p.PublishDate.Before(time.Now())) &&
|
||||||
|
(viper.GetBool("BuildExpired") || p.ExpiryDate.IsZero() || p.ExpiryDate.After(time.Now())) {
|
||||||
if viper.GetBool("BuildDrafts") || !p.Draft {
|
if viper.GetBool("BuildDrafts") || !p.Draft {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
@ -480,10 +482,11 @@ func (p *Page) IsDraft() bool {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *Page) IsFuture() bool {
|
func (p *Page) IsFuture() bool {
|
||||||
if p.PublishDate.Before(time.Now()) {
|
return p.PublishDate.After(time.Now())
|
||||||
return false
|
|
||||||
}
|
}
|
||||||
return true
|
|
||||||
|
func (p *Page) IsExpired() bool {
|
||||||
|
return p.ExpiryDate.Before(time.Now())
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *Page) Permalink() (string, error) {
|
func (p *Page) Permalink() (string, error) {
|
||||||
|
@ -564,6 +567,11 @@ func (p *Page) update(f interface{}) error {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
jww.ERROR.Printf("Failed to parse publishdate '%v' in page %s", v, p.File.Path())
|
jww.ERROR.Printf("Failed to parse publishdate '%v' in page %s", v, p.File.Path())
|
||||||
}
|
}
|
||||||
|
case "expirydate", "unpublishdate":
|
||||||
|
p.ExpiryDate, err = cast.ToTimeE(v)
|
||||||
|
if err != nil {
|
||||||
|
jww.ERROR.Printf("Failed to parse expirydate '%v' in page %s", v, p.File.Path())
|
||||||
|
}
|
||||||
case "draft":
|
case "draft":
|
||||||
draft = new(bool)
|
draft = new(bool)
|
||||||
*draft = cast.ToBool(v)
|
*draft = cast.ToBool(v)
|
||||||
|
|
|
@ -296,6 +296,48 @@ func TestDraftAndFutureRender(t *testing.T) {
|
||||||
viper.Set("BuildFuture", false)
|
viper.Set("BuildFuture", false)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestFutureExpirationRender(t *testing.T) {
|
||||||
|
viper.Reset()
|
||||||
|
defer viper.Reset()
|
||||||
|
|
||||||
|
hugofs.InitMemFs()
|
||||||
|
sources := []source.ByteSource{
|
||||||
|
{filepath.FromSlash("sect/doc3.md"), []byte("---\ntitle: doc1\nexpirydate: \"2400-05-29\"\n---\n# doc1\n*some content*")},
|
||||||
|
{filepath.FromSlash("sect/doc4.md"), []byte("---\ntitle: doc2\nexpirydate: \"2000-05-29\"\n---\n# doc2\n*some content*")},
|
||||||
|
}
|
||||||
|
|
||||||
|
siteSetup := func() *Site {
|
||||||
|
s := &Site{
|
||||||
|
Source: &source.InMemorySource{ByteSource: sources},
|
||||||
|
}
|
||||||
|
|
||||||
|
s.initializeSiteInfo()
|
||||||
|
|
||||||
|
if err := s.createPages(); err != nil {
|
||||||
|
t.Fatalf("Unable to create pages: %s", err)
|
||||||
|
}
|
||||||
|
return s
|
||||||
|
}
|
||||||
|
|
||||||
|
viper.Set("baseurl", "http://auth/bub")
|
||||||
|
|
||||||
|
s := siteSetup()
|
||||||
|
|
||||||
|
if len(s.Pages) != 1 {
|
||||||
|
if len(s.Pages) > 1 {
|
||||||
|
t.Fatal("Expired content published unexpectedly")
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(s.Pages) < 1 {
|
||||||
|
t.Fatal("Valid content expired unexpectedly")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if s.Pages[0].Title == "doc2" {
|
||||||
|
t.Fatal("Expired content published unexpectedly")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Issue #957
|
// Issue #957
|
||||||
func TestCrossrefs(t *testing.T) {
|
func TestCrossrefs(t *testing.T) {
|
||||||
hugofs.InitMemFs()
|
hugofs.InitMemFs()
|
||||||
|
|
Loading…
Add table
Reference in a new issue