example/src/sqwl/cms/Content.scala
changeset 16 4556852613a9
parent 15 1e1b0a1a4d63
child 17 0ebcd5464503
equal deleted inserted replaced
15:1e1b0a1a4d63 16:4556852613a9
     4 import java.nio.file.{FileSystems, Path, Paths}
     4 import java.nio.file.{FileSystems, Path, Paths}
     5 
     5 
     6 import akka.stream.scaladsl.FileIO
     6 import akka.stream.scaladsl.FileIO
     7 import enumeratum.EnumEntry.Hyphencase
     7 import enumeratum.EnumEntry.Hyphencase
     8 import enumeratum._
     8 import enumeratum._
     9 
       
    10 import scala.io.Source
     9 import scala.io.Source
       
    10 import scalatags.Text.all._
    11 
    11 
    12 sealed abstract class Category(val name: String) extends EnumEntry with
    12 sealed abstract class Category(val name: String) extends EnumEntry with
    13   iCategory with Hyphencase {
    13   iCategory with Hyphencase {
    14   override def pathSegment: String = entryName
    14   override def pathSegment: String = entryName
    15 }
    15 }
    39   case object Tag6 extends Tag("Tag 6")
    39   case object Tag6 extends Tag("Tag 6")
    40 }
    40 }
    41 
    41 
    42 sealed abstract class Article(val title: String,
    42 sealed abstract class Article(val title: String,
    43   val category: Option[iCategory],
    43   val category: Option[iCategory],
    44   val tags: Seq[iTag],
    44   val tags: Seq[iTag] = Seq(),
       
    45   val tex: Option[SeqFrag[Frag]] = None
       
    46 ) extends EnumEntry with ScalatexOrFsArticle with Hyphencase {
    45 
    47 
    46 ) extends EnumEntry with FsArticle with Hyphencase {
    48   override protected def content: Either[Path, SeqFrag[Frag]] = tex match {
       
    49     case Some(v) => Right(v)
       
    50     case _ =>
       
    51       Left(Paths.get(s"example/content/${entryName}.html"))
       
    52   }
    47 
    53 
    48   override protected def contentPath: Path = Paths.get(
       
    49     s"example/content/${entryName}.html")
       
    50   override def assets: Path = Paths.get(s"example/content/${entryName}")
    54   override def assets: Path = Paths.get(s"example/content/${entryName}")
    51   override def pathSegment: String = entryName
    55   override def pathSegment: String = entryName
    52 }
    56 }
    53 
    57 
    54 object Article extends Enum[Article] {
    58 object Article extends Enum[Article] {
    55   import Category._
    59   import Category._
    56   import  Tag._
    60   import  Tag._
    57   val values = findValues
    61   val values = findValues
    58   case object A1 extends Article("Article 1", Some(Cat1),
    62   case object A1 extends Article("Article 1", Some(Cat1),
    59     Seq(Tag1, Tag2, Tag3))
    63     Seq(Tag1, Tag2, Tag3))
    60   case object A2 extends Article("Article 2", Some(Cat1), Seq())
    64   case object A2 extends Article("Article 2", Some(Cat1))
    61   case object A3 extends Article("Article 3", Some(Cat1),
    65   case object A3 extends Article("Article 3", Some(Cat1),
    62     Seq(Tag4, Tag5))
    66     Seq(Tag4, Tag5))
    63   case object A4 extends Article("Article 4", Some(Cat2), Seq(Tag4))
    67   case object A4 extends Article("Article 4", Some(Cat2), Seq(Tag4))
    64   case object A5 extends Article("Article 5", Some(Cat2), Seq(Tag5))
    68   case object A5 extends Article("Article 5", Some(Cat2), Seq(Tag5))
       
    69   import scalatex._
       
    70   case object A6 extends Article("Article 6", Some(Cat1),
       
    71     Seq(Tag1), Some(twf("example/content/a6.scalatex")))
    65 }
    72 }
    66 
    73 
    67 object Content extends iContent {
    74 object Content extends iContent {
    68 
    75 
    69   def appTitle: String = "Content management system example"
    76   def appTitle: String = "Content management system example"