example/src/sqwl/cms/Content.scala
changeset 13 216da61215db
parent 12 e7512f9dc903
child 15 1e1b0a1a4d63
--- 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