hotdata.go 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623
  1. package back
  2. import (
  3. "html/template"
  4. "strconv"
  5. )
  6. // Для быстрой вставки меню в шаблон HTML
  7. var templateMenu template.HTML
  8. var templateMenuTop template.HTML
  9. // Для быстрой вставки меню в шаблон HTML (включая неактивные пункты)
  10. var templateMenuAll template.HTML
  11. var templateMenuAllTop template.HTML
  12. // Для быстрой выдачи меню на пост запрос
  13. var buildedMenu []menu
  14. var buildedMenuTop []menu
  15. // Для быстрой выдачи меню на пост запрос (включая неактивные пункты)
  16. var buildedMenuAll []menu
  17. var buildedMenuAllTop []menu
  18. func prepareMenu() {
  19. m := menu{}
  20. mAll := menu{}
  21. m.Categoty = "__main"
  22. e := m.Select()
  23. if e != nil {
  24. logger.Println(e)
  25. return
  26. }
  27. mAll.Categoty = "__main"
  28. e = mAll.SelectAll()
  29. if e != nil {
  30. logger.Println(e)
  31. return
  32. }
  33. buildedMenu = make([]menu, 0)
  34. templateMenu = template.HTML("")
  35. for i := 0; i < len(m.Rows); i++ {
  36. if !m.Rows[i].Parent.Valid {
  37. buildMenu(m.Rows, &buildedMenu, m.Rows[i])
  38. }
  39. }
  40. buildedMenuAll = make([]menu, 0)
  41. templateMenuAll = template.HTML("")
  42. for i := 0; i < len(mAll.Rows); i++ {
  43. if !mAll.Rows[i].Parent.Valid {
  44. buildMenuAll(mAll.Rows, &buildedMenuAll, mAll.Rows[i])
  45. }
  46. }
  47. // TOP MENU BUILD
  48. m = menu{}
  49. mAll = menu{}
  50. m.Categoty = "__top"
  51. e = m.Select()
  52. if e != nil {
  53. logger.Println(e)
  54. return
  55. }
  56. mAll.Categoty = "__top"
  57. e = mAll.SelectAll()
  58. if e != nil {
  59. logger.Println(e)
  60. return
  61. }
  62. buildedMenuTop = make([]menu, 0)
  63. templateMenuTop = template.HTML("")
  64. for i := 0; i < len(m.Rows); i++ {
  65. if !m.Rows[i].Parent.Valid {
  66. buildMenuTop(m.Rows, &buildedMenuTop, m.Rows[i])
  67. }
  68. }
  69. buildedMenuAllTop = make([]menu, 0)
  70. templateMenuAllTop = template.HTML("")
  71. for i := 0; i < len(mAll.Rows); i++ {
  72. if !mAll.Rows[i].Parent.Valid {
  73. buildMenuAllTop(mAll.Rows, &buildedMenuAllTop, mAll.Rows[i])
  74. }
  75. }
  76. }
  77. func buildMenu(root []menu, out *[]menu, current menu) {
  78. if !current.Parent.Valid {
  79. if current.Link.Valid {
  80. // if strings.EqualFold(current.Link.String[:4], "http") {
  81. templateMenu += template.HTML(`<div class="item"><a class="text" data-id="` + strconv.Itoa(int(current.ID)) + `" href="` + current.Link.String + `">` + current.Caption + `</a>`)
  82. // } else {
  83. // templateMenu += template.HTML(`<div class="item"><div class="text" onclick="LoadMaterial('` + current.Link.String + `')" data-id="` + strconv.Itoa(int(current.ID)) + `" data-link="` + current.Link.String + `">` + current.Caption + `</div>`)
  84. // }
  85. } else {
  86. templateMenu += template.HTML(`<div class="item"><a class="text" data-id="` + strconv.Itoa(int(current.ID)) + `">` + current.Caption + `</a>`)
  87. }
  88. *out = append(*out, current)
  89. openSub := false
  90. for _, r := range root {
  91. if r.Parent.Valid {
  92. if r.Parent.Int32 == current.ID {
  93. if !openSub {
  94. templateMenu += template.HTML(`<div class="submenu">`)
  95. openSub = true
  96. }
  97. if r.Link.Valid {
  98. // if strings.EqualFold(r.Link.String[:4], "http") {
  99. templateMenu += template.HTML(`<div class="item"><a class="text" data-id="` + strconv.Itoa(int(r.ID)) + `" href="` + r.Link.String + `">` + r.Caption + `</a>`)
  100. // } else {
  101. // templateMenu += template.HTML(`<div class="item"><div onclick="LoadMaterial('` + r.Link.String + `')" data-id="` + strconv.Itoa(int(r.ID)) + `" data-link="` + r.Link.String + `">` + r.Caption + `</div>`)
  102. // }
  103. } else {
  104. templateMenu += template.HTML(`<div class="item"><a class="text" data-id="` + strconv.Itoa(int(r.ID)) + `">` + r.Caption + `</a>`)
  105. }
  106. (*out)[len(*out)-1].Rows = append((*out)[len(*out)-1].Rows, r)
  107. buildMenu(root[1:], &((*out)[len(*out)-1].Rows[len((*out)[len(*out)-1].Rows)-1]).Rows, r)
  108. templateMenu += template.HTML(`</div>`)
  109. }
  110. }
  111. }
  112. if openSub {
  113. templateMenu += template.HTML(`</div>`)
  114. }
  115. templateMenu += template.HTML(`</div>`)
  116. } else {
  117. openSub := false
  118. for _, r := range root {
  119. if r.Parent.Int32 == current.ID {
  120. if !openSub {
  121. templateMenu += template.HTML(`<div class="submenu">`)
  122. openSub = true
  123. }
  124. if r.Link.Valid {
  125. // if strings.EqualFold(r.Link.String[:4], "http") {
  126. templateMenu += template.HTML(`<div class="item"><a class="text" data-id="` + strconv.Itoa(int(r.ID)) + `" href="` + r.Link.String + `">` + r.Caption + `</a>`)
  127. // } else {
  128. // templateMenu += template.HTML(`<div class="item"><div class="text" onclick="LoadMaterial('` + r.Link.String + `')" data-id="` + strconv.Itoa(int(r.ID)) + `" data-link="` + r.Link.String + `">` + r.Caption + `</div>`)
  129. // }
  130. } else {
  131. templateMenu += template.HTML(`<div class="item"><a class="text" data-id="` + strconv.Itoa(int(r.ID)) + `">` + r.Caption + `</a>`)
  132. }
  133. *out = append(*out, r)
  134. // Смотрим детей текущего элемента
  135. buildMenu(root, &(*out)[len(*out)-1].Rows, r)
  136. templateMenu += template.HTML(`</div>`)
  137. }
  138. }
  139. if openSub {
  140. templateMenu += template.HTML(`</div>`)
  141. }
  142. }
  143. }
  144. func buildMenuTop(root []menu, out *[]menu, current menu) {
  145. if !current.Parent.Valid {
  146. if current.Link.Valid {
  147. // if strings.EqualFold(current.Link.String[:4], "http") {
  148. templateMenuTop += template.HTML(`<div class="item"><a class="text" data-id="` + strconv.Itoa(int(current.ID)) + `" href="` + current.Link.String + `">` + current.Caption + `</a>`)
  149. // } else {
  150. // templateMenuTop += template.HTML(`<div class="item"><div class="text" onclick="LoadMaterial('` + current.Link.String + `')" data-id="` + strconv.Itoa(int(current.ID)) + `" data-link="` + current.Link.String + `">` + current.Caption + `</div>`)
  151. // }
  152. } else {
  153. templateMenuTop += template.HTML(`<div class="item"><a class="text" data-id="` + strconv.Itoa(int(current.ID)) + `">` + current.Caption + `</a>`)
  154. }
  155. *out = append(*out, current)
  156. openSub := false
  157. for _, r := range root {
  158. if r.Parent.Valid {
  159. if r.Parent.Int32 == current.ID {
  160. if !openSub {
  161. templateMenuTop += template.HTML(`<div class="submenu">`)
  162. openSub = true
  163. }
  164. if r.Link.Valid {
  165. // if strings.EqualFold(r.Link.String[:4], "http") {
  166. templateMenuTop += template.HTML(`<div class="item"><a class="text" data-id="` + strconv.Itoa(int(r.ID)) + `" href="` + r.Link.String + `">` + r.Caption + `</a>`)
  167. // } else {
  168. // templateMenuTop += template.HTML(`<div class="item"><div onclick="LoadMaterial('` + r.Link.String + `')" data-id="` + strconv.Itoa(int(r.ID)) + `" data-link="` + r.Link.String + `">` + r.Caption + `</div>`)
  169. // }
  170. } else {
  171. templateMenuTop += template.HTML(`<div class="item"><a class="text" data-id="` + strconv.Itoa(int(r.ID)) + `">` + r.Caption + `</a>`)
  172. }
  173. (*out)[len(*out)-1].Rows = append((*out)[len(*out)-1].Rows, r)
  174. buildMenu(root[1:], &((*out)[len(*out)-1].Rows[len((*out)[len(*out)-1].Rows)-1]).Rows, r)
  175. templateMenuTop += template.HTML(`</div>`)
  176. }
  177. }
  178. }
  179. if openSub {
  180. templateMenuTop += template.HTML(`</div>`)
  181. }
  182. templateMenuTop += template.HTML(`</div>`)
  183. } else {
  184. openSub := false
  185. for _, r := range root {
  186. if r.Parent.Int32 == current.ID {
  187. if !openSub {
  188. templateMenuTop += template.HTML(`<div class="submenu">`)
  189. openSub = true
  190. }
  191. if r.Link.Valid {
  192. // if strings.EqualFold(r.Link.String[:4], "http") {
  193. templateMenuTop += template.HTML(`<div class="item"><a class="text" data-id="` + strconv.Itoa(int(r.ID)) + `" href="` + r.Link.String + `">` + r.Caption + `</a>`)
  194. // } else {
  195. // templateMenuTop += template.HTML(`<div class="item"><div class="text" onclick="LoadMaterial('` + r.Link.String + `')" data-id="` + strconv.Itoa(int(r.ID)) + `" data-link="` + r.Link.String + `">` + r.Caption + `</div>`)
  196. // }
  197. } else {
  198. templateMenuTop += template.HTML(`<div class="item"><a class="text" data-id="` + strconv.Itoa(int(r.ID)) + `">` + r.Caption + `</a>`)
  199. }
  200. *out = append(*out, r)
  201. // Смотрим детей текущего элемента
  202. buildMenu(root, &(*out)[len(*out)-1].Rows, r)
  203. templateMenuTop += template.HTML(`</div>`)
  204. }
  205. }
  206. if openSub {
  207. templateMenuTop += template.HTML(`</div>`)
  208. }
  209. }
  210. }
  211. func buildMenuAll(root []menu, out *[]menu, current menu) {
  212. if !current.Parent.Valid {
  213. idStr := strconv.Itoa(int(current.ID))
  214. if current.Link.Valid {
  215. // if strings.EqualFold(current.Link.String[:4], "http") {
  216. if current.Active {
  217. templateMenuAll += template.HTML(`<div class="item"><a class="text" data-id="` + idStr + `" href="` + current.Link.String + `">` + current.Caption + `</a>`)
  218. } else {
  219. templateMenuAll += template.HTML(`<div class="item hide"><a class="text" data-id="` + idStr + `" href="` + current.Link.String + `">` + current.Caption + `</a>`)
  220. }
  221. // } else {
  222. // if current.Active {
  223. // templateMenuAll += template.HTML(`<div class="item"><div class="text" onclick="LoadMaterial('` + current.Link.String + `')" data-id="` + strconv.Itoa(int(current.ID)) + `" data-link="` + current.Link.String + `">` + current.Caption + `</div>`)
  224. // } else {
  225. // templateMenuAll += template.HTML(`<div class="item hide"><div class="text" onclick="LoadMaterial('` + current.Link.String + `')" data-id="` + strconv.Itoa(int(current.ID)) + `" data-link="` + current.Link.String + `">` + current.Caption + `</div>`)
  226. // }
  227. // }
  228. } else {
  229. if current.Active {
  230. templateMenuAll += template.HTML(`<div class="item"><a class="text" data-id="` + idStr + `">` + current.Caption + `</a>`)
  231. } else {
  232. templateMenuAll += template.HTML(`<div class="item hide"><a class="text" data-id="` + idStr + `">` + current.Caption + `</a>`)
  233. }
  234. }
  235. *out = append(*out, current)
  236. openSub := false
  237. for _, r := range root {
  238. if r.Parent.Valid {
  239. if r.Parent.Int32 == current.ID {
  240. if !openSub {
  241. templateMenuAll += template.HTML(`<div class="submenu">`)
  242. openSub = true
  243. }
  244. idStr = strconv.Itoa(int(r.ID))
  245. if r.Link.Valid {
  246. // if strings.EqualFold(r.Link.String[:4], "http") {
  247. if r.Active {
  248. templateMenuAll += template.HTML(`<div class="item"><a class="text" data-id="` + idStr + `" href="` + r.Link.String + `">` + r.Caption + `</a>`)
  249. } else {
  250. templateMenuAll += template.HTML(`<div class="item hide"><a class="text" data-id="` + idStr + `" href="` + r.Link.String + `">` + r.Caption + `</a>`)
  251. }
  252. // } else {
  253. // if r.Active {
  254. // templateMenuAll += template.HTML(`<div class="item"><div onclick="LoadMaterial('` + r.Link.String + `')" data-id="` + strconv.Itoa(int(r.ID)) + `" data-link="` + r.Link.String + `">` + r.Caption + `</div>`)
  255. // } else {
  256. // templateMenuAll += template.HTML(`<div class="item hide"><div onclick="LoadMaterial('` + r.Link.String + `')" data-id="` + strconv.Itoa(int(r.ID)) + `" data-link="` + r.Link.String + `">` + r.Caption + `</div>`)
  257. // }
  258. // }
  259. } else {
  260. if r.Active {
  261. templateMenuAll += template.HTML(`<div class="item"><a class="text" data-id="` + idStr + `">` + r.Caption + `</a>`)
  262. } else {
  263. templateMenuAll += template.HTML(`<div class="item hide"><a class="text" data-id="` + idStr + `">` + r.Caption + `</a>`)
  264. }
  265. }
  266. (*out)[len(*out)-1].Rows = append((*out)[len(*out)-1].Rows, r)
  267. buildMenuAll(root[1:], &((*out)[len(*out)-1].Rows[len((*out)[len(*out)-1].Rows)-1]).Rows, r)
  268. templateMenuAll += template.HTML(`</div>`)
  269. }
  270. }
  271. }
  272. if openSub {
  273. templateMenuAll += template.HTML(`</div>`)
  274. }
  275. templateMenuAll += template.HTML(`</div>`)
  276. } else {
  277. openSub := false
  278. for _, r := range root {
  279. if r.Parent.Int32 == current.ID {
  280. if !openSub {
  281. templateMenuAll += template.HTML(`<div class="submenu">`)
  282. openSub = true
  283. }
  284. idStr := strconv.Itoa(int(r.ID))
  285. if r.Link.Valid {
  286. // if strings.EqualFold(r.Link.String[:4], "http") {
  287. if r.Active {
  288. templateMenuAll += template.HTML(`<div class="item"><a class="text" data-id="` + idStr + `" href="` + r.Link.String + `">` + r.Caption + `</a>`)
  289. } else {
  290. templateMenuAll += template.HTML(`<div class="item hide"><a class="text" data-id="` + idStr + `" href="` + r.Link.String + `">` + r.Caption + `</a>`)
  291. }
  292. // } else {
  293. // if r.Active {
  294. // templateMenuAll += template.HTML(`<div class="item"><div class="text" onclick="LoadMaterial('` + r.Link.String + `')" data-id="` + strconv.Itoa(int(r.ID)) + `" data-link="` + r.Link.String + `">` + r.Caption + `</div>`)
  295. // } else {
  296. // templateMenuAll += template.HTML(`<div class="item hide"><div class="text" onclick="LoadMaterial('` + r.Link.String + `')" data-id="` + strconv.Itoa(int(r.ID)) + `" data-link="` + r.Link.String + `">` + r.Caption + `</div>`)
  297. // }
  298. // }
  299. } else {
  300. if r.Active {
  301. templateMenuAll += template.HTML(`<div class="item"><a class="text" data-id="` + idStr + `">` + r.Caption + `</a>`)
  302. } else {
  303. templateMenuAll += template.HTML(`<div class="item hide"><a class="text" data-id="` + idStr + `">` + r.Caption + `</a>`)
  304. }
  305. }
  306. *out = append(*out, r)
  307. // Смотрим детей текущего элемента
  308. buildMenuAll(root, &(*out)[len(*out)-1].Rows, r)
  309. templateMenuAll += template.HTML(`</div>`)
  310. }
  311. }
  312. if openSub {
  313. templateMenuAll += template.HTML(`</div>`)
  314. }
  315. }
  316. }
  317. func buildMenuAllTop(root []menu, out *[]menu, current menu) {
  318. if !current.Parent.Valid {
  319. strID := strconv.Itoa(int(current.ID))
  320. if current.Link.Valid {
  321. // if strings.EqualFold(current.Link.String[:4], "http") {
  322. if current.Active {
  323. templateMenuAllTop += template.HTML(`<div class="item"><a class="text" data-id="` + strID + `" href="` + current.Link.String + `">` + current.Caption + `</a>`)
  324. } else {
  325. templateMenuAllTop += template.HTML(`<div class="item hide"><a class="text" data-id="` + strID + `" href="` + current.Link.String + `">` + current.Caption + `</a>`)
  326. }
  327. // } else {
  328. // if current.Active {
  329. // templateMenuAllTop += template.HTML(`<div class="item"><div class="text" onclick="LoadMaterial('` + current.Link.String + `')" data-id="` + strconv.Itoa(int(current.ID)) + `" data-link="` + current.Link.String + `">` + current.Caption + `</div>`)
  330. // } else {
  331. // templateMenuAllTop += template.HTML(`<div class="item hide"><div class="text" onclick="LoadMaterial('` + current.Link.String + `')" data-id="` + strconv.Itoa(int(current.ID)) + `" data-link="` + current.Link.String + `">` + current.Caption + `</div>`)
  332. // }
  333. // }
  334. } else {
  335. if current.Active {
  336. templateMenuAllTop += template.HTML(`<div class="item"><a class="text" data-id="` + strID + `">` + current.Caption + `</a>`)
  337. } else {
  338. templateMenuAllTop += template.HTML(`<div class="item hide"><a class="text" data-id="` + strID + `">` + current.Caption + `</a>`)
  339. }
  340. }
  341. *out = append(*out, current)
  342. openSub := false
  343. for _, r := range root {
  344. if r.Parent.Valid {
  345. if r.Parent.Int32 == current.ID {
  346. if !openSub {
  347. templateMenuAllTop += template.HTML(`<div class="submenu">`)
  348. openSub = true
  349. }
  350. idStr := strconv.Itoa(int(r.ID))
  351. if r.Link.Valid {
  352. // if strings.EqualFold(r.Link.String[:4], "http") {
  353. if r.Active {
  354. templateMenuAllTop += template.HTML(`<div class="item"><a class="text" data-id="` + idStr + `" href="` + r.Link.String + `">` + r.Caption + `</a>`)
  355. } else {
  356. templateMenuAllTop += template.HTML(`<div class="item hide"><a class="text" data-id="` + idStr + `" href="` + r.Link.String + `">` + r.Caption + `</a>`)
  357. }
  358. // } else {
  359. // if r.Active {
  360. // templateMenuAllTop += template.HTML(`<div class="item"><div onclick="LoadMaterial('` + r.Link.String + `')" data-id="` + strconv.Itoa(int(r.ID)) + `" data-link="` + r.Link.String + `">` + r.Caption + `</div>`)
  361. // } else {
  362. // templateMenuAllTop += template.HTML(`<div class="item hide"><div onclick="LoadMaterial('` + r.Link.String + `')" data-id="` + strconv.Itoa(int(r.ID)) + `" data-link="` + r.Link.String + `">` + r.Caption + `</div>`)
  363. // }
  364. // }
  365. } else {
  366. if r.Active {
  367. templateMenuAllTop += template.HTML(`<div class="item"><a class="text" data-id="` + idStr + `">` + r.Caption + `</a>`)
  368. } else {
  369. templateMenuAllTop += template.HTML(`<div class="item hide"><a class="text" data-id="` + idStr + `">` + r.Caption + `</a>`)
  370. }
  371. }
  372. (*out)[len(*out)-1].Rows = append((*out)[len(*out)-1].Rows, r)
  373. buildMenuAll(root[1:], &((*out)[len(*out)-1].Rows[len((*out)[len(*out)-1].Rows)-1]).Rows, r)
  374. templateMenuAllTop += template.HTML(`</div>`)
  375. }
  376. }
  377. }
  378. if openSub {
  379. templateMenuAllTop += template.HTML(`</div>`)
  380. }
  381. templateMenuAllTop += template.HTML(`</div>`)
  382. } else {
  383. openSub := false
  384. for _, r := range root {
  385. if r.Parent.Int32 == current.ID {
  386. if !openSub {
  387. templateMenuAllTop += template.HTML(`<div class="submenu">`)
  388. openSub = true
  389. }
  390. strID := strconv.Itoa(int(r.ID))
  391. if r.Link.Valid {
  392. // if strings.EqualFold(r.Link.String[:4], "http") {
  393. if r.Active {
  394. templateMenuAllTop += template.HTML(`<div class="item"><a class="text" data-id="` + strID + `" href="` + r.Link.String + `">` + r.Caption + `</a>`)
  395. } else {
  396. templateMenuAllTop += template.HTML(`<div class="item hide"><a class="text" data-id="` + strID + `" href="` + r.Link.String + `">` + r.Caption + `</a>`)
  397. }
  398. // } else {
  399. // if r.Active {
  400. // templateMenuAllTop += template.HTML(`<div class="item"><div class="text" onclick="LoadMaterial('` + r.Link.String + `')" data-id="` + strconv.Itoa(int(r.ID)) + `" data-link="` + r.Link.String + `">` + r.Caption + `</div>`)
  401. // } else {
  402. // templateMenuAllTop += template.HTML(`<div class="item hide"><div class="text" onclick="LoadMaterial('` + r.Link.String + `')" data-id="` + strconv.Itoa(int(r.ID)) + `" data-link="` + r.Link.String + `">` + r.Caption + `</div>`)
  403. // }
  404. // }
  405. } else {
  406. if r.Active {
  407. templateMenuAllTop += template.HTML(`<div class="item"><a class="text" data-id="` + strID + `">` + r.Caption + `</a>`)
  408. } else {
  409. templateMenuAllTop += template.HTML(`<div class="item hide"><a class="text" data-id="` + strID + `">` + r.Caption + `</a>`)
  410. }
  411. }
  412. *out = append(*out, r)
  413. // Смотрим детей текущего элемента
  414. buildMenuAll(root, &(*out)[len(*out)-1].Rows, r)
  415. templateMenuAllTop += template.HTML(`</div>`)
  416. }
  417. }
  418. if openSub {
  419. templateMenuAllTop += template.HTML(`</div>`)
  420. }
  421. }
  422. }
  423. // Для быстрой вставки новостей в шалбон HTML главной страницы
  424. var templateNews template.HTML
  425. func prepareNews() {
  426. news := material{}
  427. news.Category = "новость"
  428. e := news.Select(0, 8)
  429. if e != nil {
  430. logger.Println(e.Error())
  431. return
  432. }
  433. templateNews = template.HTML("")
  434. // 0 3 4 с изображениями
  435. for i, m := range news.Rows {
  436. images := `<div class="image no"><img src="/img/no-image.png" /></div>`
  437. if m.Image.Valid {
  438. images = `<div class="image"><img src="/` + m.Image.String + `" /><img class="blur" src="/` + m.Image.String + `" /></div>`
  439. }
  440. if i == 0 || i == 3 || i == 4 || i == 7 || i == 8 || i == 11 {
  441. templateNews += template.HTML(`<div class="news"><div class="caption">` + m.Caption + `</div><div class="text">` + m.Preview.String + `</div><a href="/данные/новость/` + m.Link + `" class="gradient-button">Читать далее</a>` + images + `</div>`)
  442. } else {
  443. templateNews += template.HTML(`<div class="news"><div class="caption">` + m.Caption + `</div><div class="text">` + m.Preview.String + `</div><a href="/данные/новость/` + m.Link + `" class="gradient-button">Читать далее</a></div>`)
  444. }
  445. }
  446. }
  447. var templateNewsPagination template.HTML
  448. func prepareNewsPagination() {
  449. news := material{}
  450. news.Category = "новость"
  451. count, e := news.SelectCount()
  452. if e != nil {
  453. logger.Println(e.Error())
  454. return
  455. }
  456. templateNewsPagination = template.HTML("")
  457. count = count / 8
  458. if count%8 != 0 {
  459. count++
  460. }
  461. if count == 0 {
  462. return
  463. }
  464. templateNewsPagination += template.HTML(`<a class="active" href="javascript:void(0)">` + strconv.Itoa(1) + `</a>`)
  465. for i := 1; i < count; i++ {
  466. templateNewsPagination += template.HTML(`<a href="/страница/` + strconv.Itoa(i) + `">` + strconv.Itoa(i+1) + `</a>`)
  467. }
  468. }
  469. // Для быстрой вставки объявлений в шаблон HTML главной страницы
  470. var templateNotice template.HTML
  471. func prepareNotice() {
  472. news := material{}
  473. news.Category = "объявление"
  474. e := news.SelectWithContent(0, 50)
  475. if e != nil {
  476. logger.Println(e.Error())
  477. return
  478. }
  479. templateNotice = template.HTML("")
  480. for i, m := range news.Rows {
  481. images := `<div class="image no"><img src="/img/no-image.png" /></div>`
  482. if m.Image.Valid {
  483. images = `<div class="image"><img src="/` + m.Image.String + `" /><img class="blur" src="/` + m.Image.String + `" /></div>`
  484. }
  485. templateNotice += template.HTML(`<div class="slide" data-slide="` + strconv.Itoa(i) + `">` + images + `<div class="content"><h2>` + m.Caption + `</h2><div class="text">` + m.Preview.String + `</div><article class="full-text">` + string(m.Content) + `</article><a href="javascript:void(0)" class="gradient-button">Развернуть</a></div></div>`)
  486. }
  487. }