example/src/sqwl/cms/Content.scala
changeset 10 4b5313097a4d
parent 9 7d5ed4c927ce
child 12 e7512f9dc903
equal deleted inserted replaced
9:7d5ed4c927ce 10:4b5313097a4d
     7 import enumeratum.EnumEntry.Hyphencase
     7 import enumeratum.EnumEntry.Hyphencase
     8 import enumeratum._
     8 import enumeratum._
     9 
     9 
    10 import scala.io.Source
    10 import scala.io.Source
    11 
    11 
    12 sealed abstract class Category(val name: String) extends EnumEntry with iCategory with Hyphencase {
    12 sealed abstract class Category(val name: String) extends EnumEntry with
       
    13   iCategory with Hyphencase {
    13   override def pathSegment: String = entryName
    14   override def pathSegment: String = entryName
    14 }
    15 }
    15 
    16 
    16 object Category extends Enum[Category] {
    17 object Category extends Enum[Category] {
    17   val values = findValues
    18   val values = findValues
    18   case object Cat1 extends Category("Category 1")
    19   case object Cat1 extends Category("Category 1")
    19   case object Cat2 extends Category("Category 2")
    20   case object Cat2 extends Category("Category 2")
       
    21   case object Cat3 extends Category("Category 3")
       
    22   case object Cat4 extends Category("Category 4")
       
    23   case object Cat5 extends Category("Category 5")
       
    24   case object Cat6 extends Category("Category 6")
    20 }
    25 }
    21 
    26 
    22 sealed abstract class Article(val title: String,
    27 sealed abstract class Article(val title: String,
    23   val category: Option[iCategory],
    28   val category: Option[iCategory],
    24   val tags: Seq[iTag],
    29   val tags: Seq[iTag],
    41 
    46 
    42 object Article extends Enum[Article] {
    47 object Article extends Enum[Article] {
    43   import Category._
    48   import Category._
    44   val values = findValues
    49   val values = findValues
    45   case object A1 extends Article("Article 1", Some(Cat1), Seq())
    50   case object A1 extends Article("Article 1", Some(Cat1), Seq())
       
    51   case object A2 extends Article("Article 2", Some(Cat1), Seq())
       
    52   case object A3 extends Article("Article 3", Some(Cat1), Seq())
       
    53   case object A4 extends Article("Article 4", Some(Cat2), Seq())
       
    54   case object A5 extends Article("Article 5", Some(Cat2), Seq())
    46 }
    55 }
    47 
    56 
    48 object Content extends iContent {
    57 object Content extends iContent {
    49   def appTitle: String = "Content management system example"
    58   def appTitle: String = "Content management system example"
    50   def appTitleShort: String = "CMS"
    59   def appTitleShort: String = "CMS"
    51   def icon = ("icon.png", Paths.get("example/content/public/images/icon.png"))
    60   def icon =
       
    61     ("icon.png", Paths.get("example/content/public/images/icon.png"))
    52   def publicAssets: Path = Paths.get("example/content/public")
    62   def publicAssets: Path = Paths.get("example/content/public")
    53   def styleSheet = ("site.css", Paths.get("example/content/public/css/site.css"))
    63   def styleSheet =
       
    64     ("site.css", Paths.get("example/content/public/css/site.css"))
    54   def articlesByTag(t: iTag): Seq[iArticle] = Seq()
    65   def articlesByTag(t: iTag): Seq[iArticle] = Seq()
    55   def articlesByCategory(c: iCategory): Seq[iArticle] = Seq()
    66   def articlesByCategory(c: iCategory): Seq[iArticle] = Seq()
    56   def tags: Seq[iTag] = Seq()
    67   def tags: Seq[iTag] = Seq()
    57   def categories: Seq[iCategory] = Category.values
    68   def categories: Seq[iCategory] = Category.values
    58   def articleByPath(path: String): Option[iArticle] = Article.withNameOption(path)
    69   def articleByPath(path: String): Option[iArticle] =
    59   def categoryByPath(path: String): Option[iCategory] = Category.withNameOption(path)
    70     Article.withNameOption(path)
       
    71   def categoryByPath(path: String): Option[iCategory] =
       
    72     Category.withNameOption(path)
    60   def tagByPath(path: String): Option[iTag] = None
    73   def tagByPath(path: String): Option[iTag] = None
    61 }
    74 }