Browse Source

Module pages, base front-end render, very simple

Vova Tkach 6 years ago
parent
commit
d67abb4815

+ 4 - 1
consts/consts.go

@@ -77,8 +77,11 @@ type TmplDataMainMenuItem struct {
 }
 }
 
 
 type TmplDataModIndex struct {
 type TmplDataModIndex struct {
+	Name            string
+	Alias           string
+	Content         template.HTML
 	MetaTitle       string
 	MetaTitle       string
 	MetaKeywords    string
 	MetaKeywords    string
 	MetaDescription string
 	MetaDescription string
-	MainMenuItems   []TmplDataMainMenuItem
+	// MainMenuItems   []TmplDataMainMenuItem
 }
 }

+ 1 - 1
hosts/localhost/template/footer.html

@@ -3,7 +3,7 @@
 			</div>
 			</div>
 			<footer class="container">
 			<footer class="container">
 				<p class="float-right"><a href="#">Back to top</a></p>
 				<p class="float-right"><a href="#">Back to top</a></p>
-				<p>&copy; 2017-2018 Company, Inc. &middot; <a href="#">Privacy</a> &middot; <a href="#">Terms</a></p>
+				<p>&copy; 2018-2019 Company, Inc. &middot; <a href="#">Privacy</a> &middot; <a href="#">Terms</a></p>
 			</footer>
 			</footer>
 		</main>
 		</main>
 		<!-- Optional JavaScript -->
 		<!-- Optional JavaScript -->

+ 4 - 6
hosts/localhost/template/header.html

@@ -19,17 +19,15 @@
 	<body class="pt-5">
 	<body class="pt-5">
 		<header>
 		<header>
 			<nav class="navbar navbar-expand-md navbar-dark fixed-top bg-dark">
 			<nav class="navbar navbar-expand-md navbar-dark fixed-top bg-dark">
-				<a class="navbar-brand" href="/">{{$.Data.MetaTitle}}</a>
+				<a class="navbar-brand" href="/">Home</a>
 				<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation">
 				<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation">
 					<span class="navbar-toggler-icon"></span>
 					<span class="navbar-toggler-icon"></span>
 				</button>
 				</button>
 				<div class="collapse navbar-collapse" id="navbarCollapse">
 				<div class="collapse navbar-collapse" id="navbarCollapse">
 					<ul class="navbar-nav mr-auto">
 					<ul class="navbar-nav mr-auto">
-						{{range $.Data.MainMenuItems}}
-							<li class="nav-item{{if .Active}} active{{end}}">
-								<a class="nav-link" href="{{.Link}}">{{.Name}}</a>
-							</li>
-						{{end}}
+						<li class="nav-item">
+							<a class="nav-link" href="/">More</a>
+						</li>
 					</ul>
 					</ul>
 					<form class="form-inline mt-2 mt-md-0">
 					<form class="form-inline mt-2 mt-md-0">
 						<input class="form-control mr-sm-2" type="text" placeholder="Search" aria-label="Search">
 						<input class="form-control mr-sm-2" type="text" placeholder="Search" aria-label="Search">

+ 4 - 1
hosts/localhost/template/index.html

@@ -28,6 +28,9 @@
 	</div>
 	</div>
 </div>
 </div>
 <div class="container some-text pt-3">
 <div class="container some-text pt-3">
-	Donec sed odio dui. Etiam porta sem malesuada magna mollis euismod. Nullam id dolor id nibh ultricies vehicula ut id elit. Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Praesent commodo cursus magna. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh. Donec sed odio dui. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Vestibulum id ligula porta felis euismod semper. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.
+	<h2>{{$.Data.Name}}</h2>
+	<div>
+		{{$.Data.Content}}
+	</div>
 </div>
 </div>
 {{template "footer.html" .}}
 {{template "footer.html" .}}

+ 8 - 0
hosts/localhost/template/page.html

@@ -0,0 +1,8 @@
+{{template "header.html" .}}
+<div class="container some-text pt-3">
+	<h2>{{$.Data.Name}}</h2>
+	<div>
+		{{$.Data.Content}}
+	</div>
+</div>
+{{template "footer.html" .}}

+ 78 - 11
modules/module_index.go

@@ -6,6 +6,7 @@ import (
 
 
 	"fmt"
 	"fmt"
 	"html"
 	"html"
+	"html/template"
 	"os"
 	"os"
 	"strconv"
 	"strconv"
 
 
@@ -30,17 +31,83 @@ func (this *Modules) RegisterModule_Index() *Module {
 		},
 		},
 	}, func(wrap *wrapper.Wrapper) {
 	}, func(wrap *wrapper.Wrapper) {
 		// Front-end
 		// Front-end
-		wrap.RenderFrontEnd("index", consts.TmplDataModIndex{
-			MetaTitle:       "Meta Title",
-			MetaKeywords:    "Meta Keywords",
-			MetaDescription: "Meta Description",
-
-			MainMenuItems: []consts.TmplDataMainMenuItem{
-				{Name: "Home", Link: "/", Active: true},
-				{Name: "Item 1", Link: "/#1", Active: false},
-				{Name: "Item 2", Link: "/#2", Active: false},
-				{Name: "Item 3", Link: "/#3", Active: false},
-			},
+
+		/*
+			wrap.RenderFrontEnd("index", consts.TmplDataModIndex{
+				MetaTitle:       "Meta Title",
+				MetaKeywords:    "Meta Keywords",
+				MetaDescription: "Meta Description",
+
+				MainMenuItems: []consts.TmplDataMainMenuItem{
+					{Name: "Home", Link: "/", Active: true},
+					{Name: "Item 1", Link: "/#1", Active: false},
+					{Name: "Item 2", Link: "/#2", Active: false},
+					{Name: "Item 3", Link: "/#3", Active: false},
+				},
+			})
+		*/
+
+		row := &utils.MySql_page{}
+		err := wrap.DB.QueryRow(`
+			SELECT
+				id,
+				user,
+				name,
+				alias,
+				content,
+				meta_title,
+				meta_keywords,
+				meta_description,
+				UNIX_TIMESTAMP(datetime) as datetime,
+				active
+			FROM
+				pages
+			WHERE
+				active = 1 and
+				alias = ?
+			LIMIT 1;`,
+			wrap.R.URL.Path,
+		).Scan(
+			&row.A_id,
+			&row.A_user,
+			&row.A_name,
+			&row.A_alias,
+			&row.A_content,
+			&row.A_meta_title,
+			&row.A_meta_keywords,
+			&row.A_meta_description,
+			&row.A_datetime,
+			&row.A_active,
+		)
+		if err != nil && err != sql.ErrNoRows {
+			// Error 500
+			utils.SystemErrorPageEngine(wrap.W, err)
+			return
+		} else if err == sql.ErrNoRows {
+			// Error 404
+			utils.SystemErrorPage404(wrap.W)
+			return
+		}
+
+		// Replace title with page name
+		if row.A_meta_title == "" {
+			row.A_meta_title = row.A_name
+		}
+
+		// Which template
+		tmpl_name := "index"
+		if wrap.R.URL.Path != "/" {
+			tmpl_name = "page"
+		}
+
+		// Render template
+		wrap.RenderFrontEnd(tmpl_name, consts.TmplDataModIndex{
+			Name:            row.A_name,
+			Alias:           row.A_alias,
+			Content:         template.HTML(row.A_content),
+			MetaTitle:       row.A_meta_title,
+			MetaKeywords:    row.A_meta_keywords,
+			MetaDescription: row.A_meta_description,
 		})
 		})
 	}, func(wrap *wrapper.Wrapper) (string, string, string) {
 	}, func(wrap *wrapper.Wrapper) (string, string, string) {
 		content := ""
 		content := ""