Browse Source

implemnted indexpage loading news from forum folder

TooManySugar 3 years ago
parent
commit
220bbf27b5
6 changed files with 87 additions and 16 deletions
  1. 48 0
      cmd/web/connector.go
  2. 17 1
      cmd/web/handlers.go
  3. 2 0
      cmd/web/main.go
  4. 1 15
      ui/templates/newindex.html
  5. 14 0
      ui/templates/newsentry.html
  6. 5 0
      ui/templates/newslist.html

+ 48 - 0
cmd/web/connector.go

@@ -4,6 +4,7 @@ import (
 	"database/sql"
 	"encoding/json"
 	"fmt"
+	"html/template"
 	"io/ioutil"
 	"log"
 
@@ -296,6 +297,53 @@ func (c connection) GetLastTorrents(amount int64) (torrents []Torrent, count int
 	return
 }
 
+// Takes 'amount' latest news for headline in order of Time desc 
+// (news[0] is a newest)
+// If amount is 0 returns all news in same order as usual 
+func (c connection) GetLastNews(amount int64) (news []NewsItem, count int64, err error) {
+	newsTopicUuid := "557adf6b-6988-4dfe-89d1-85e56947e067"
+	
+	db, err := sql.Open("mysql", c.dBOpenStr)
+	if err != nil {
+		return
+	}
+	defer db.Close()
+
+	var act_query string
+
+	act_query = fmt.Sprintf("SELECT text, users.username, msg.time FROM %s.messages as msg INNER JOIN %s.folders as folders ON msg.parent_uuid = folders.uuid INNER JOIN %s.users as users ON msg.author = users.idusers WHERE folders.parent_uuid = '%s' ORDER BY msg.time DESC", c.connProperties.Db, c.connProperties.Db, c.connProperties.Db, newsTopicUuid)
+	if amount != 0 {
+		act_query += fmt.Sprintf(" LIMIT %d",  amount)
+	}
+
+	fmt.Println(act_query)
+	rows, err := db.Query(act_query)
+	if err != nil {
+		return
+	}
+	defer rows.Close()
+
+	for rows.Next() {
+		var templateStr string
+		var item NewsItem
+		if err := rows.Scan(
+			&templateStr,
+			&item.Author,
+			&item.Time,
+		); err != nil {
+			log.Fatal(err)
+		}
+
+		item.NewsText = template.HTML(templateStr)
+
+		news = append(news, item)
+		count++
+	}
+
+	return
+
+}
+
 /*
 func main() {
 

+ 17 - 1
cmd/web/handlers.go

@@ -8,6 +8,7 @@ import (
 	"strconv"
 
 	"github.com/gorilla/mux"
+
 )
 
 // Struct for torrent entry in 'New torrents' list 
@@ -16,6 +17,12 @@ type Entry struct {
 	Link string
 }
 
+type NewsItem struct {
+	NewsText template.HTML
+	Author string
+	Time string
+}
+
 // indexHandler handels index page
 func indexHandler(w http.ResponseWriter, r *http.Request) {
 	data := struct {
@@ -24,6 +31,7 @@ func indexHandler(w http.ResponseWriter, r *http.Request) {
 		Title    string
 		Items    []string
 		Entrys 	 []Entry
+		News 	 []NewsItem
 	}{
 		User:  "",
 		Title: "My page",
@@ -57,7 +65,7 @@ func indexHandler(w http.ResponseWriter, r *http.Request) {
 
 	// tindexTemplate, err := template.New("").ParseFiles(INDEX_TEMPLATE, "ui\\templates\\placeholder.html")
 
-	tindexTemplate, err := template.New("").ParseFiles(NewIndexTemplate, TorrentEntry, TorrentList)
+	tindexTemplate, err := template.New("").ParseFiles(NewIndexTemplate, TorrentEntry, TorrentList, NewsList, NewsEntry)
 
 	
 	if err != nil {
@@ -78,6 +86,14 @@ func indexHandler(w http.ResponseWriter, r *http.Request) {
 	data.Entrys = append(data.Entrys, Entry{Num: 4,  Link: "/files/torrents/9torrent.torrent"})
 
 
+	news, _, err := dBConnector.GetLastNews(3)
+	if err != nil {
+		fmt.Println(err)
+	}
+	if err == nil {
+		data.News = append(data.News, news...)
+	}
+
 	// LastTorrents, err := dBConnector.SelectTorrents(10)
 	// if err != nil {
 	// 	fmt.Println(err)

+ 2 - 0
cmd/web/main.go

@@ -19,6 +19,8 @@ const (
 	NewIndexTemplate = "ui\\templates\\newindex.html"
 	TorrentList = "ui\\templates\\torrentlist.html"
 	TorrentEntry = "ui\\templates\\torrententry.html"
+	NewsList = "ui\\templates\\newslist.html"
+	NewsEntry = "ui\\templates\\newsentry.html"
 )
 
 var (

+ 1 - 15
ui/templates/newindex.html

@@ -82,21 +82,7 @@
                     <div class="container">
                         <div class="flex flex-col ">
                             <div class="font-bold text-3xl mb-3">Последние новости</div>
-                            <div class="grid col-1 divide-y-2 divide-red-900">
-                                <div class="p-2 w-full">
-                                    <div class="w-4/5 text-xl"> <!-- Template for messages start-->
-                                        Пользователям, у которых возникают проблемы с регистрацией: не используйте при регистрации адрес почты на mail.ru, вводите любой другой адрес (можно вымышленный)
-                                    </div>
-                                    <div class="flex container w-full">
-                                        <div class="w-full"></div>
-                                        <div class="flex-none">
-                                            Админ, 3 Февраля 2005
-                                        </div>
-                                    </div> <!-- Template for messages end-->
-                                </div>
-                                <div class="p-2 text-xl">Дорогие друзья, если у вас не качается раздача, при этом вы видите, что сиды явно присутствуют и у всех остальных нормально качается - проверьте, не пользуетесь ли вы случайно версией uTorrent 3.4.2 (или более поздней), и если это так - поставьте более раннюю версию и не обновляйтесь без необходимости. Ждать, что начнет качаться само, - бесполезно!</div>
-                                <div class="p-2 text-xl">Текст</div>
-                            </div>
+                            {{template "newslist" .}}
                         </div>
                     </div>
                 </div>

+ 14 - 0
ui/templates/newsentry.html

@@ -0,0 +1,14 @@
+{{define "newsentry"}}
+<div class="p-2 text-xl">
+    <div class="w-4/5 text-xl">
+        {{.NewsText}}
+        <!-- Пользователям, у которых возникают проблемы с регистрацией: не используйте при регистрации адрес почты на mail.ru, вводите любой другой адрес (можно вымышленный) -->
+    </div>
+    <div class="flex container w-full">
+        <div class="w-full"></div>
+        <div class="flex-none">
+            {{.Author}}<!--Админ-->, {{.Time}}<!--3 Февраля 2005-->
+        </div>
+    </div>
+</div>
+{{end}}

+ 5 - 0
ui/templates/newslist.html

@@ -0,0 +1,5 @@
+{{define "newslist"}}
+<div class="grid col-1 divide-y-2 divide-red-900">
+    {{ range .News }}{{template "newsentry" .}} {{ end }}
+</div>
+{{end}}