| author | Tomas Zeman <tzeman@volny.cz> |
| Tue, 15 Jan 2019 12:25:19 +0100 | |
| changeset 27 | 8529ce302f7c |
| parent 21 | 1fa630ed9b8a |
| child 33 | fa0f19a74283 |
| permissions | -rw-r--r-- |
|
4
1a1347e8c5be
Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents:
diff
changeset
|
1 |
|
|
1a1347e8c5be
Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents:
diff
changeset
|
2 |
package sqwl.cms |
|
1a1347e8c5be
Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents:
diff
changeset
|
3 |
|
| 17 | 4 |
import java.nio.file.{Path, Paths}
|
|
4
1a1347e8c5be
Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents:
diff
changeset
|
5 |
|
|
1a1347e8c5be
Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents:
diff
changeset
|
6 |
import enumeratum.EnumEntry.Hyphencase |
|
1a1347e8c5be
Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents:
diff
changeset
|
7 |
import enumeratum._ |
| 21 | 8 |
|
9 |
import scala.collection.immutable |
|
|
4
1a1347e8c5be
Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents:
diff
changeset
|
10 |
|
|
10
4b5313097a4d
Added example content articles, categories
Tomas Zeman <tzeman@volny.cz>
parents:
9
diff
changeset
|
11 |
sealed abstract class Category(val name: String) extends EnumEntry with |
|
4b5313097a4d
Added example content articles, categories
Tomas Zeman <tzeman@volny.cz>
parents:
9
diff
changeset
|
12 |
iCategory with Hyphencase {
|
|
4
1a1347e8c5be
Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents:
diff
changeset
|
13 |
override def pathSegment: String = entryName |
|
1a1347e8c5be
Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents:
diff
changeset
|
14 |
} |
|
1a1347e8c5be
Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents:
diff
changeset
|
15 |
|
|
1a1347e8c5be
Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents:
diff
changeset
|
16 |
object Category extends Enum[Category] {
|
| 21 | 17 |
val values: immutable.IndexedSeq[Category] = findValues |
|
4
1a1347e8c5be
Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents:
diff
changeset
|
18 |
case object Cat1 extends Category("Category 1")
|
|
1a1347e8c5be
Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents:
diff
changeset
|
19 |
case object Cat2 extends Category("Category 2")
|
|
10
4b5313097a4d
Added example content articles, categories
Tomas Zeman <tzeman@volny.cz>
parents:
9
diff
changeset
|
20 |
case object Cat3 extends Category("Category 3")
|
|
4b5313097a4d
Added example content articles, categories
Tomas Zeman <tzeman@volny.cz>
parents:
9
diff
changeset
|
21 |
case object Cat4 extends Category("Category 4")
|
|
4b5313097a4d
Added example content articles, categories
Tomas Zeman <tzeman@volny.cz>
parents:
9
diff
changeset
|
22 |
case object Cat5 extends Category("Category 5")
|
|
4b5313097a4d
Added example content articles, categories
Tomas Zeman <tzeman@volny.cz>
parents:
9
diff
changeset
|
23 |
case object Cat6 extends Category("Category 6")
|
|
4
1a1347e8c5be
Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents:
diff
changeset
|
24 |
} |
|
1a1347e8c5be
Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents:
diff
changeset
|
25 |
|
| 13 | 26 |
sealed abstract class Tag(val name: String) extends EnumEntry with iTag |
27 |
with Hyphencase {
|
|
28 |
override def pathSegment: String = entryName |
|
29 |
} |
|
30 |
||
31 |
object Tag extends Enum[Tag] {
|
|
| 21 | 32 |
val values: immutable.IndexedSeq[Tag] = findValues |
| 13 | 33 |
case object Tag1 extends Tag("Tag 1")
|
34 |
case object Tag2 extends Tag("Tag 2")
|
|
35 |
case object Tag3 extends Tag("Tag 3")
|
|
36 |
case object Tag4 extends Tag("Tag 4")
|
|
37 |
case object Tag5 extends Tag("Tag 5")
|
|
38 |
case object Tag6 extends Tag("Tag 6")
|
|
39 |
} |
|
40 |
||
|
4
1a1347e8c5be
Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents:
diff
changeset
|
41 |
object Content extends iContent {
|
|
18
8cfd67425811
Scalatex article as primary format
Tomas Zeman <tzeman@volny.cz>
parents:
17
diff
changeset
|
42 |
InitializeContent() |
| 13 | 43 |
|
| 9 | 44 |
def appTitle: String = "Content management system example" |
| 13 | 45 |
|
| 9 | 46 |
def appTitleShort: String = "CMS" |
| 13 | 47 |
|
| 21 | 48 |
def icon: (String, Path) = |
|
10
4b5313097a4d
Added example content articles, categories
Tomas Zeman <tzeman@volny.cz>
parents:
9
diff
changeset
|
49 |
("icon.png", Paths.get("example/content/public/images/icon.png"))
|
| 13 | 50 |
|
| 7 | 51 |
def publicAssets: Path = Paths.get("example/content/public")
|
| 13 | 52 |
|
| 21 | 53 |
def styleSheet: (String, Path) = |
|
10
4b5313097a4d
Added example content articles, categories
Tomas Zeman <tzeman@volny.cz>
parents:
9
diff
changeset
|
54 |
("site.css", Paths.get("example/content/public/css/site.css"))
|
| 13 | 55 |
|
56 |
def articlesByTag(t: iTag): Seq[iArticle] = |
|
|
27
8529ce302f7c
Article.rank: sort articles by category/tag w.r.t. rank
Tomas Zeman <tzeman@volny.cz>
parents:
21
diff
changeset
|
57 |
Articles.values filter(_.tags contains t) sortBy(_.rank) |
| 13 | 58 |
|
|
12
e7512f9dc903
Layout: categories, articles, primary view
Tomas Zeman <tzeman@volny.cz>
parents:
10
diff
changeset
|
59 |
def articlesByCategory(c: iCategory): Seq[iArticle] = |
|
27
8529ce302f7c
Article.rank: sort articles by category/tag w.r.t. rank
Tomas Zeman <tzeman@volny.cz>
parents:
21
diff
changeset
|
60 |
Articles.values filter(_.category contains c) sortBy(_.rank) |
| 13 | 61 |
|
62 |
def tags: Seq[iTag] = Tag.values |
|
63 |
||
|
4
1a1347e8c5be
Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents:
diff
changeset
|
64 |
def categories: Seq[iCategory] = Category.values |
| 13 | 65 |
|
|
10
4b5313097a4d
Added example content articles, categories
Tomas Zeman <tzeman@volny.cz>
parents:
9
diff
changeset
|
66 |
def articleByPath(path: String): Option[iArticle] = |
|
18
8cfd67425811
Scalatex article as primary format
Tomas Zeman <tzeman@volny.cz>
parents:
17
diff
changeset
|
67 |
Articles.values.find(_.pathSegment == path) |
| 13 | 68 |
|
|
10
4b5313097a4d
Added example content articles, categories
Tomas Zeman <tzeman@volny.cz>
parents:
9
diff
changeset
|
69 |
def categoryByPath(path: String): Option[iCategory] = |
|
4b5313097a4d
Added example content articles, categories
Tomas Zeman <tzeman@volny.cz>
parents:
9
diff
changeset
|
70 |
Category.withNameOption(path) |
| 13 | 71 |
|
72 |
def tagByPath(path: String): Option[iTag] = Tag.withNameOption(path) |
|
|
4
1a1347e8c5be
Build modules: base, content, app; example content, minimal layout
Tomas Zeman <tzeman@volny.cz>
parents:
diff
changeset
|
73 |
} |