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