html.go 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. package front
  2. import (
  3. "notabug.org/apiote/amuse/i18n"
  4. "notabug.org/apiote/amuse/tmdb"
  5. "bytes"
  6. "golang.org/x/text/language"
  7. "html/template"
  8. "strings"
  9. "time"
  10. )
  11. type renderData struct {
  12. Data interface{}
  13. Strings i18n.Translation
  14. }
  15. func (d renderData) LetAmuse0() string {
  16. let_amuse := strings.Split(d.Strings.Index["let_amuse_you"], "{}")
  17. let_amuse[0], let_amuse[1] = strings.Trim(let_amuse[0], " "), strings.Trim(let_amuse[1], " ")
  18. return let_amuse[0]
  19. }
  20. func (d renderData) LetAmuse1() string {
  21. let_amuse := strings.Split(d.Strings.Index["let_amuse_you"], "{}")
  22. let_amuse[0], let_amuse[1] = strings.Trim(let_amuse[0], " "), strings.Trim(let_amuse[1], " ")
  23. return let_amuse[1]
  24. }
  25. func (d renderData) FormatDate(date time.Time) string {
  26. return i18n.FormatDate(date, d.Strings.Global["date_format"], d.Strings.Global)
  27. }
  28. func (d renderData) RenderAsciiDoc(s string) template.HTML {
  29. return i18n.RenderAsciiDoc(s)
  30. }
  31. func (d renderData) GetErrorData(code int, kind string) string {
  32. return i18n.GetErrorData(code, d.Strings, kind)
  33. }
  34. type HtmlRenderer struct{}
  35. func (HtmlRenderer) RenderFilm(film *tmdb.Film, languages []language.Tag) string {
  36. i18n.LoadServerLangs()
  37. language := i18n.Match(languages)
  38. strings, err := i18n.LoadStrings(language)
  39. if err != nil {
  40. // todo return http:500
  41. }
  42. data := renderData{film, strings}
  43. t, _ := template.ParseFiles("templates/film.html")
  44. b := bytes.NewBuffer([]byte{})
  45. err = t.Execute(b, data)
  46. if err != nil {
  47. // todo return http:500
  48. }
  49. return b.String()
  50. }
  51. func (HtmlRenderer) RenderSearch(results *tmdb.SearchResults, languages []language.Tag) string {
  52. i18n.LoadServerLangs()
  53. language := i18n.Match(languages)
  54. strings, err := i18n.LoadStrings(language)
  55. if err != nil {
  56. // todo return http:500
  57. }
  58. data := renderData{results, strings}
  59. t, _ := template.ParseFiles("templates/search.html")
  60. b := bytes.NewBuffer([]byte{})
  61. err = t.Execute(b, data)
  62. if err != nil {
  63. // todo return http:500
  64. }
  65. return b.String()
  66. }
  67. func (HtmlRenderer) RenderIndex(randomComedy string, languages []language.Tag) string {
  68. i18n.LoadServerLangs()
  69. language := i18n.Match(languages)
  70. strings, err := i18n.LoadStrings(language)
  71. if err != nil {
  72. // todo return http:500
  73. }
  74. data := renderData{randomComedy, strings}
  75. t, _ := template.ParseFiles("templates/index.html")
  76. b := bytes.NewBuffer([]byte{})
  77. err = t.Execute(b, data)
  78. if err != nil {
  79. // todo return http:500
  80. }
  81. return b.String()
  82. }
  83. func (HtmlRenderer) RenderSerie(serie *tmdb.Serie, languages []language.Tag) string {
  84. i18n.LoadServerLangs()
  85. language := i18n.Match(languages)
  86. strings, err := i18n.LoadStrings(language)
  87. if err != nil {
  88. // todo return http:500
  89. }
  90. data := renderData{serie, strings}
  91. t, _ := template.ParseFiles("templates/serie.html")
  92. b := bytes.NewBuffer([]byte{})
  93. err = t.Execute(b, data)
  94. if err != nil {
  95. // todo return http:500
  96. }
  97. return b.String()
  98. }
  99. func (HtmlRenderer) RenderPerson(person *tmdb.Person, languages []language.Tag) string {
  100. i18n.LoadServerLangs()
  101. language := i18n.Match(languages)
  102. strings, err := i18n.LoadStrings(language)
  103. if err != nil {
  104. // todo return http:500
  105. }
  106. data := renderData{person, strings}
  107. t, _ := template.ParseFiles("templates/person.html")
  108. b := bytes.NewBuffer([]byte{})
  109. err = t.Execute(b, data)
  110. if err != nil {
  111. // todo return http:500
  112. }
  113. return b.String()
  114. }
  115. func (HtmlRenderer) RenderAbout(languages []language.Tag) string {
  116. i18n.LoadServerLangs()
  117. language := i18n.Match(languages)
  118. strings, err := i18n.LoadStrings(language)
  119. if err != nil {
  120. // todo return http:500
  121. }
  122. i18n.RenderAsciiDoc(strings.About["doc"])
  123. data := renderData{nil, strings}
  124. t, _ := template.ParseFiles("templates/about.html")
  125. b := bytes.NewBuffer([]byte{})
  126. err = t.Execute(b, data)
  127. if err != nil {
  128. // todo return http:500
  129. }
  130. return b.String()
  131. }
  132. func (HtmlRenderer) RenderErrorPage(code int, languages []language.Tag) string {
  133. i18n.LoadServerLangs()
  134. language := i18n.Match(languages)
  135. strings, err := i18n.LoadStrings(language)
  136. if err != nil {
  137. // todo return http:500
  138. }
  139. i18n.RenderAsciiDoc(strings.About["doc"])
  140. data := renderData{code, strings}
  141. t, _ := template.ParseFiles("templates/error.html")
  142. b := bytes.NewBuffer([]byte{})
  143. err = t.Execute(b, data)
  144. if err != nil {
  145. // todo return http:500
  146. }
  147. return b.String()
  148. }