Added site setting.
This commit is contained in:
parent
39611070f8
commit
3774c903e2
17 changed files with 170 additions and 18 deletions
|
|
@ -19,7 +19,7 @@ func (s *Service) WritePost(site models.Site, post models.Post) models.Job {
|
|||
if err != nil {
|
||||
return err
|
||||
} else if rbn {
|
||||
return s.RebuildSite(site).Do(ctx)
|
||||
return s.RebuildSite(site, site).Do(ctx)
|
||||
}
|
||||
|
||||
if err := s.writePost(site, post); err != nil {
|
||||
|
|
|
|||
|
|
@ -46,21 +46,21 @@ func (s *Service) CreateNewSite(site models.Site) models.Job {
|
|||
}
|
||||
}
|
||||
|
||||
func (s *Service) RebuildSite(site models.Site) models.Job {
|
||||
func (s *Service) RebuildSite(oldSite, newSite models.Site) models.Job {
|
||||
return models.Jobs(
|
||||
models.Job{
|
||||
Do: func(ctx context.Context) error {
|
||||
// Teardown the existing site
|
||||
siteDir := s.hugo.SiteStagingDir(site, hugo.BaseSiteDir)
|
||||
siteDir := s.hugo.SiteStagingDir(oldSite, hugo.BaseSiteDir)
|
||||
if err := os.RemoveAll(siteDir); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
},
|
||||
},
|
||||
s.CreateNewSite(site),
|
||||
s.WriteAllPosts(site),
|
||||
s.Publish(site),
|
||||
s.CreateNewSite(newSite),
|
||||
s.WriteAllPosts(newSite),
|
||||
s.Publish(newSite),
|
||||
)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -51,6 +51,7 @@ func (s *Service) CreateSite(ctx context.Context, user models.User, name string)
|
|||
OwnerUserID: user.ID,
|
||||
Title: name,
|
||||
Theme: "bear",
|
||||
//Theme: "yingyang",
|
||||
}
|
||||
|
||||
_, ok := s.themes.Lookup(newSite.Theme)
|
||||
|
|
@ -78,12 +79,39 @@ func (s *Service) CreateSite(ctx context.Context, user models.User, name string)
|
|||
return newSite, s.jobs.Queue(ctx, s.sb.CreateNewSite(newSite))
|
||||
}
|
||||
|
||||
func (s *Service) SaveSettings(ctx context.Context, site models.Site, newSettings NewSettings) error {
|
||||
_, ok := s.themes.Lookup(newSettings.Theme)
|
||||
if !ok {
|
||||
return errors.New("theme not found")
|
||||
}
|
||||
|
||||
newSite := site
|
||||
newSite.Title = newSettings.Title
|
||||
newSite.Name = normaliseName(newSite.Title)
|
||||
newSite.Theme = newSettings.Theme
|
||||
|
||||
if err := s.db.UpdateSite(ctx, newSite); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return s.jobs.Queue(ctx, s.sb.RebuildSite(site, newSite))
|
||||
}
|
||||
|
||||
type NewSettings struct {
|
||||
Title string `form:"title"`
|
||||
Theme string `form:"theme"`
|
||||
}
|
||||
|
||||
func (s *Service) Rebuild(ctx context.Context, site models.Site) error {
|
||||
if site.ID == 0 {
|
||||
return errors.New("site id required")
|
||||
}
|
||||
|
||||
return s.jobs.Queue(ctx, s.sb.RebuildSite(site))
|
||||
return s.jobs.Queue(ctx, s.sb.RebuildSite(site, site))
|
||||
}
|
||||
|
||||
func (s *Service) Themes() []models.ThemeMeta {
|
||||
return s.themes.Themes()
|
||||
}
|
||||
|
||||
func normaliseName(name string) string {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue