mirror of
https://github.com/gohugoio/hugo.git
synced 2024-12-26 17:21:57 +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
|
||||
Draft bool
|
||||
PublishDate time.Time
|
||||
ExpiryDate time.Time
|
||||
Markup string
|
||||
extension string
|
||||
contentType string
|
||||
|
@ -467,7 +468,8 @@ func (p *Page) LinkTitle() string {
|
|||
}
|
||||
|
||||
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 {
|
||||
return true
|
||||
}
|
||||
|
@ -480,10 +482,11 @@ func (p *Page) IsDraft() bool {
|
|||
}
|
||||
|
||||
func (p *Page) IsFuture() bool {
|
||||
if p.PublishDate.Before(time.Now()) {
|
||||
return false
|
||||
}
|
||||
return true
|
||||
return p.PublishDate.After(time.Now())
|
||||
}
|
||||
|
||||
func (p *Page) IsExpired() bool {
|
||||
return p.ExpiryDate.Before(time.Now())
|
||||
}
|
||||
|
||||
func (p *Page) Permalink() (string, error) {
|
||||
|
@ -564,6 +567,11 @@ func (p *Page) update(f interface{}) error {
|
|||
if err != nil {
|
||||
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":
|
||||
draft = new(bool)
|
||||
*draft = cast.ToBool(v)
|
||||
|
|
|
@ -296,6 +296,48 @@ func TestDraftAndFutureRender(t *testing.T) {
|
|||
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
|
||||
func TestCrossrefs(t *testing.T) {
|
||||
hugofs.InitMemFs()
|
||||
|
|
Loading…
Reference in a new issue