--- 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