diff -r e7512f9dc903 -r 216da61215db example/src/sqwl/cms/Content.scala --- a/example/src/sqwl/cms/Content.scala Thu Dec 06 15:19:41 2018 +0100 +++ b/example/src/sqwl/cms/Content.scala Thu Dec 06 16:18:26 2018 +0100 @@ -24,6 +24,21 @@ case object Cat6 extends Category("Category 6") } +sealed abstract class Tag(val name: String) extends EnumEntry with iTag + with Hyphencase { + override def pathSegment: String = entryName +} + +object Tag extends Enum[Tag] { + val values = findValues + case object Tag1 extends Tag("Tag 1") + case object Tag2 extends Tag("Tag 2") + case object Tag3 extends Tag("Tag 3") + case object Tag4 extends Tag("Tag 4") + case object Tag5 extends Tag("Tag 5") + case object Tag6 extends Tag("Tag 6") +} + sealed abstract class Article(val title: String, val category: Option[iCategory], val tags: Seq[iTag], @@ -46,30 +61,46 @@ object Article extends Enum[Article] { import Category._ + import Tag._ val values = findValues - case object A1 extends Article("Article 1", Some(Cat1), Seq()) + case object A1 extends Article("Article 1", Some(Cat1), + Seq(Tag1, Tag2, Tag3)) case object A2 extends Article("Article 2", Some(Cat1), Seq()) - case object A3 extends Article("Article 3", Some(Cat1), Seq()) - case object A4 extends Article("Article 4", Some(Cat2), Seq()) - case object A5 extends Article("Article 5", Some(Cat2), Seq()) + case object A3 extends Article("Article 3", Some(Cat1), + Seq(Tag4, Tag5)) + case object A4 extends Article("Article 4", Some(Cat2), Seq(Tag4)) + case object A5 extends Article("Article 5", Some(Cat2), Seq(Tag5)) } object Content extends iContent { + def appTitle: String = "Content management system example" + def appTitleShort: String = "CMS" + def icon = ("icon.png", Paths.get("example/content/public/images/icon.png")) + def publicAssets: Path = Paths.get("example/content/public") + def styleSheet = ("site.css", Paths.get("example/content/public/css/site.css")) - def articlesByTag(t: iTag): Seq[iArticle] = Seq() + + def articlesByTag(t: iTag): Seq[iArticle] = + Article.values.filter(_.tags contains(t)) + def articlesByCategory(c: iCategory): Seq[iArticle] = Article.values.filter(_.category contains(c)) - def tags: Seq[iTag] = Seq() + + def tags: Seq[iTag] = Tag.values + def categories: Seq[iCategory] = Category.values + def articleByPath(path: String): Option[iArticle] = Article.withNameOption(path) + def categoryByPath(path: String): Option[iCategory] = Category.withNameOption(path) - def tagByPath(path: String): Option[iTag] = None + + def tagByPath(path: String): Option[iTag] = Tag.withNameOption(path) } \ No newline at end of file