example/src/sqwl/cms/Content.scala
changeset 13 216da61215db
parent 12 e7512f9dc903
child 15 1e1b0a1a4d63
equal deleted inserted replaced
12:e7512f9dc903 13:216da61215db
    22   case object Cat4 extends Category("Category 4")
    22   case object Cat4 extends Category("Category 4")
    23   case object Cat5 extends Category("Category 5")
    23   case object Cat5 extends Category("Category 5")
    24   case object Cat6 extends Category("Category 6")
    24   case object Cat6 extends Category("Category 6")
    25 }
    25 }
    26 
    26 
       
    27 sealed abstract class Tag(val name: String) extends EnumEntry with iTag
       
    28   with Hyphencase {
       
    29   override def pathSegment: String = entryName
       
    30 }
       
    31 
       
    32 object Tag extends Enum[Tag] {
       
    33   val values = findValues
       
    34   case object Tag1 extends Tag("Tag 1")
       
    35   case object Tag2 extends Tag("Tag 2")
       
    36   case object Tag3 extends Tag("Tag 3")
       
    37   case object Tag4 extends Tag("Tag 4")
       
    38   case object Tag5 extends Tag("Tag 5")
       
    39   case object Tag6 extends Tag("Tag 6")
       
    40 }
       
    41 
    27 sealed abstract class Article(val title: String,
    42 sealed abstract class Article(val title: String,
    28   val category: Option[iCategory],
    43   val category: Option[iCategory],
    29   val tags: Seq[iTag],
    44   val tags: Seq[iTag],
    30 
    45 
    31 ) extends EnumEntry with iArticle with Hyphencase {
    46 ) extends EnumEntry with iArticle with Hyphencase {
    44   override def pathSegment: String = entryName
    59   override def pathSegment: String = entryName
    45 }
    60 }
    46 
    61 
    47 object Article extends Enum[Article] {
    62 object Article extends Enum[Article] {
    48   import Category._
    63   import Category._
       
    64   import  Tag._
    49   val values = findValues
    65   val values = findValues
    50   case object A1 extends Article("Article 1", Some(Cat1), Seq())
    66   case object A1 extends Article("Article 1", Some(Cat1),
       
    67     Seq(Tag1, Tag2, Tag3))
    51   case object A2 extends Article("Article 2", Some(Cat1), Seq())
    68   case object A2 extends Article("Article 2", Some(Cat1), Seq())
    52   case object A3 extends Article("Article 3", Some(Cat1), Seq())
    69   case object A3 extends Article("Article 3", Some(Cat1),
    53   case object A4 extends Article("Article 4", Some(Cat2), Seq())
    70     Seq(Tag4, Tag5))
    54   case object A5 extends Article("Article 5", Some(Cat2), Seq())
    71   case object A4 extends Article("Article 4", Some(Cat2), Seq(Tag4))
       
    72   case object A5 extends Article("Article 5", Some(Cat2), Seq(Tag5))
    55 }
    73 }
    56 
    74 
    57 object Content extends iContent {
    75 object Content extends iContent {
       
    76 
    58   def appTitle: String = "Content management system example"
    77   def appTitle: String = "Content management system example"
       
    78 
    59   def appTitleShort: String = "CMS"
    79   def appTitleShort: String = "CMS"
       
    80 
    60   def icon =
    81   def icon =
    61     ("icon.png", Paths.get("example/content/public/images/icon.png"))
    82     ("icon.png", Paths.get("example/content/public/images/icon.png"))
       
    83 
    62   def publicAssets: Path = Paths.get("example/content/public")
    84   def publicAssets: Path = Paths.get("example/content/public")
       
    85 
    63   def styleSheet =
    86   def styleSheet =
    64     ("site.css", Paths.get("example/content/public/css/site.css"))
    87     ("site.css", Paths.get("example/content/public/css/site.css"))
    65   def articlesByTag(t: iTag): Seq[iArticle] = Seq()
    88 
       
    89   def articlesByTag(t: iTag): Seq[iArticle] =
       
    90     Article.values.filter(_.tags contains(t))
       
    91 
    66   def articlesByCategory(c: iCategory): Seq[iArticle] =
    92   def articlesByCategory(c: iCategory): Seq[iArticle] =
    67     Article.values.filter(_.category contains(c))
    93     Article.values.filter(_.category contains(c))
    68   def tags: Seq[iTag] = Seq()
    94 
       
    95   def tags: Seq[iTag] = Tag.values
       
    96 
    69   def categories: Seq[iCategory] = Category.values
    97   def categories: Seq[iCategory] = Category.values
       
    98 
    70   def articleByPath(path: String): Option[iArticle] =
    99   def articleByPath(path: String): Option[iArticle] =
    71     Article.withNameOption(path)
   100     Article.withNameOption(path)
       
   101 
    72   def categoryByPath(path: String): Option[iCategory] =
   102   def categoryByPath(path: String): Option[iCategory] =
    73     Category.withNameOption(path)
   103     Category.withNameOption(path)
    74   def tagByPath(path: String): Option[iTag] = None
   104 
       
   105   def tagByPath(path: String): Option[iTag] = Tag.withNameOption(path)
    75 }
   106 }