Browse Source

Shop theme

Vova Tkach 5 years ago
parent
commit
67d75fb29f

+ 5 - 3
assets/template/footer_html_file.go

@@ -1,9 +1,11 @@
 package template
 
 var VarFooterHtmlFile = []byte(`						</div>
-						<div class="col-md-4">
-							{{template "sidebar-right.html" .}}
-						</div>
+						{{if or (eq $.Data.Module "index") (eq $.Data.Module "404") (eq $.Data.Module "blog") (eq $.Data.Module "blog-post") (eq $.Data.Module "blog-category")}}
+							<div class="col-sm-5 col-md-4 col-lg-3">
+								{{template "sidebar-right.html" .}}
+							</div>
+						{{end}}
 					</div>
 				</div>
 			</div>

+ 10 - 1
assets/template/header_html_file.go

@@ -114,4 +114,13 @@ var VarHeaderHtmlFile = []byte(`<!doctype html>
 				</div>
 				<div class="container clear-top">
 					<div class="row pt-4">
-						<div class="col-md-8">`)
+						{{if or (eq $.Data.Module "shop") (eq $.Data.Module "shop-category")}}
+							<div class="col-sm-5 col-md-4 col-lg-3">
+								{{template "sidebar-left.html" .}}
+							</div>
+						{{end}}
+						{{if or (eq $.Data.Module "shop-product")}}
+							<div class="col-md-12">
+						{{else}}
+							<div class="col-sm-7 col-md-8 col-lg-9">
+						{{end}}`)

+ 22 - 17
assets/template/shop_category_html_file.go

@@ -8,30 +8,35 @@ var VarShopCategoryHtmlFile = []byte(`{{template "header.html" .}}
 		</div>
 	</div>
 </div>
-<div class="card mb-4">
+<div class="mb-4">
 	{{if $.Data.Shop.HaveProducts}}
-		{{range $.Data.Shop.Products}}
-			<div class="post">
-				<div class="card-body">
-					<h2 class="card-title">
+		<div class="grid-products">
+			{{range $.Data.Shop.Products}}
+				<div class="card card-product">
+					<div class="card-img-link">
 						<a href="{{.Permalink}}">
-							{{.Name}}
+							<img class="card-img-top" src="data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%22286%22%20height%3D%22180%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20286%20180%22%20preserveAspectRatio%3D%22none%22%3E%3Cdefs%3E%3Cstyle%20type%3D%22text%2Fcss%22%3E%23holder_16c7e5ac360%20text%20%7B%20fill%3Argba(255%2C255%2C255%2C.75)%3Bfont-weight%3Anormal%3Bfont-family%3AHelvetica%2C%20monospace%3Bfont-size%3A14pt%20%7D%20%3C%2Fstyle%3E%3C%2Fdefs%3E%3Cg%20id%3D%22holder_16c7e5ac360%22%3E%3Crect%20width%3D%22286%22%20height%3D%22180%22%20fill%3D%22%23777%22%3E%3C%2Frect%3E%3Cg%3E%3Ctext%20x%3D%22107.0078125%22%20y%3D%2296.234375%22%3E286x180%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E" alt="Card image cap">
 						</a>
-					</h2>
-					<div class="post-content">
-						{{.Briefly}}
 					</div>
-					<div class="post-date">
-						<div><small>Price: {{.PriceFormat "%.2f"}} {{.Currency.Code}}</small></div>
-						<div><small>Published on {{.DateTimeFormat "02/01/2006, 15:04:05"}}</small></div>
-						<div>Author: {{.User.FirstName}} {{.User.LastName}}</div>
+					<div class="card-body">
+						<h5 class="card-title">
+							<a href="{{.Permalink}}">
+								{{.Name}}
+							</a>
+						</h5>
+						<div class="card-text">{{.Briefly}}</div>
+					</div>
+					<div class="card-footer">
+						<span class="price">{{.PriceFormat "%.2f"}} {{.Currency.Code}}</span><a href="{{.Permalink}}" class="btn btn-primary">View</a>
 					</div>
 				</div>
-			</div>
-		{{end}}
+			{{end}}
+		</div>
 	{{else}}
-		<div class="card-body">
-			Sorry, no products matched your criteria
+		<div class="card">
+			<div class="card-body">
+				Sorry, no products matched your criteria
+			</div>
 		</div>
 	{{end}}
 </div>

+ 22 - 17
assets/template/shop_html_file.go

@@ -1,30 +1,35 @@
 package template
 
 var VarShopHtmlFile = []byte(`{{template "header.html" .}}
-<div class="card mb-4">
+<div class="mb-4">
 	{{if $.Data.Shop.HaveProducts}}
-		{{range $.Data.Shop.Products}}
-			<div class="post">
-				<div class="card-body">
-					<h2 class="card-title">
+		<div class="grid-products">
+			{{range $.Data.Shop.Products}}
+				<div class="card card-product">
+					<div class="card-img-link">
 						<a href="{{.Permalink}}">
-							{{.Name}}
+							<img class="card-img-top" src="data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%22286%22%20height%3D%22180%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20286%20180%22%20preserveAspectRatio%3D%22none%22%3E%3Cdefs%3E%3Cstyle%20type%3D%22text%2Fcss%22%3E%23holder_16c7e5ac360%20text%20%7B%20fill%3Argba(255%2C255%2C255%2C.75)%3Bfont-weight%3Anormal%3Bfont-family%3AHelvetica%2C%20monospace%3Bfont-size%3A14pt%20%7D%20%3C%2Fstyle%3E%3C%2Fdefs%3E%3Cg%20id%3D%22holder_16c7e5ac360%22%3E%3Crect%20width%3D%22286%22%20height%3D%22180%22%20fill%3D%22%23777%22%3E%3C%2Frect%3E%3Cg%3E%3Ctext%20x%3D%22107.0078125%22%20y%3D%2296.234375%22%3E286x180%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E" alt="Card image cap">
 						</a>
-					</h2>
-					<div class="post-content">
-						{{.Briefly}}
 					</div>
-					<div class="post-date">
-						<div><small>Price: {{.PriceFormat "%.2f"}} {{.Currency.Code}}</small></div>
-						<div><small>Published on {{.DateTimeFormat "02/01/2006, 15:04:05"}}</small></div>
-						<div>Author: {{.User.FirstName}} {{.User.LastName}}</div>
+					<div class="card-body">
+						<h5 class="card-title">
+							<a href="{{.Permalink}}">
+								{{.Name}}
+							</a>
+						</h5>
+						<div class="card-text">{{.Briefly}}</div>
+					</div>
+					<div class="card-footer">
+						<span class="price">{{.PriceFormat "%.2f"}} {{.Currency.Code}}</span><a href="{{.Permalink}}" class="btn btn-primary">View</a>
 					</div>
 				</div>
-			</div>
-		{{end}}
+			{{end}}
+		</div>
 	{{else}}
-		<div class="card-body">
-			Sorry, no products matched your criteria
+		<div class="card">
+			<div class="card-body">
+				Sorry, no products matched your criteria
+			</div>
 		</div>
 	{{end}}
 </div>

+ 143 - 9
assets/template/shop_product_html_file.go

@@ -1,18 +1,152 @@
 package template
 
 var VarShopProductHtmlFile = []byte(`{{template "header.html" .}}
+<nav aria-label="breadcrumb">
+	<ol class="breadcrumb">
+		<li class="breadcrumb-item"><a href="/shop/">Shop</a></li>
+		<li class="breadcrumb-item active"><a href="{{$.Data.Shop.Product.Permalink}}">{{$.Data.Shop.Product.Name}}</a></li>
+	</ol>
+</nav>
 <div class="card mb-4">
-	<div class="card-body">
+	<div class="card-body product-full">
 		<h2 class="card-title">{{$.Data.Shop.Product.Name}}</h2>
-		<div class="page-content">
-			{{$.Data.Shop.Product.Briefly}}
-			{{$.Data.Shop.Product.Content}}
+		<ul class="nav nav-tabs" id="myTab" role="tablist">
+			<li class="nav-item">
+				<a class="nav-link active" id="all-tab" data-toggle="tab" href="#all" role="tab" aria-controls="all" aria-selected="true">All about product</a>
+			</li>
+			<li class="nav-item">
+				<a class="nav-link" id="specifications-tab" data-toggle="tab" href="#specifications" role="tab" aria-controls="specifications" aria-selected="false">Specifications</a>
+			</li>
+		</ul>
+		<div class="tab-content" id="myTabContent">
+			<div class="tab-pane no-fade pt-3 show active" id="all" role="tabpanel" aria-labelledby="all-tab">
+				<div class="row">
+					<div class="col-md-6">
+						<div class="card">
+							<img class="card-img-top" src="data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%22286%22%20height%3D%22180%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20286%20180%22%20preserveAspectRatio%3D%22none%22%3E%3Cdefs%3E%3Cstyle%20type%3D%22text%2Fcss%22%3E%23holder_16c7e5ac360%20text%20%7B%20fill%3Argba(255%2C255%2C255%2C.75)%3Bfont-weight%3Anormal%3Bfont-family%3AHelvetica%2C%20monospace%3Bfont-size%3A14pt%20%7D%20%3C%2Fstyle%3E%3C%2Fdefs%3E%3Cg%20id%3D%22holder_16c7e5ac360%22%3E%3Crect%20width%3D%22286%22%20height%3D%22180%22%20fill%3D%22%23777%22%3E%3C%2Frect%3E%3Cg%3E%3Ctext%20x%3D%22107.0078125%22%20y%3D%2296.234375%22%3E286x180%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E" alt="Card image cap">
+						</div>
+					</div>
+					<div class="col-md-6">
+						<div class="card mt-3 mt-sm-3 mt-md-0 mt-lg-0">
+							<div class="card-body">
+								<h3 class="price mb-0 mr-4">{{$.Data.Shop.Product.PriceFormat "%.2f"}} {{$.Data.Shop.Product.Currency.Code}}</h3><a href="" class="btn btn-success btn-buy">Buy</a>
+							</div>
+						</div>
+						<div class="card mt-3">
+							<div class="card-header">Payment</div>
+							<div class="card-body">
+								<p class="card-text">Non-cash, Cash</p>
+							</div>
+						</div>
+					</div>
+				</div>
+				
+				{{if ne $.Data.Shop.Product.Content ""}}
+					<hr>
+					<h3>Description</h3>
+					<hr>
+					<div class="product-description">
+						{{$.Data.Shop.Product.Content}}
+					</div>
+				{{end}}
+				<hr>
+				<h3>Specifications</h3>
+				<hr>
+				<table class="table table-striped table-bordered mb-0 table-specifications">
+					<tbody>
+						<tr>
+							<td class="tcol-1">Диагональ экрана</td>
+							<td class="tcol-2">15.6" (1920x1080) Full HD</td>
+						</tr>
+						<tr>
+							<td class="tcol-1">Процессор</td>
+							<td class="tcol-2">Шестиядерный Intel Core i7-8750H (2.2 - 4.1 ГГц)</td>
+						</tr>
+						<tr>
+							<td class="tcol-1">Частота обновления экрана</td>
+							<td class="tcol-2">60 Гц</td>
+						</tr>
+						<tr>
+							<td class="tcol-1">Объем оперативной памяти</td>
+							<td class="tcol-2">8 ГБ</td>
+						</tr>
+						<tr>
+							<td class="tcol-1">Операционная система</td>
+							<td class="tcol-2">Windows 10 Home 64bit</td>
+						</tr>
+						<tr>
+							<td class="tcol-1">Цвет</td>
+							<td class="tcol-2">Черный</td>
+						</tr>
+						<tr>
+							<td class="tcol-1">Поколение процессора Intel</td>
+							<td class="tcol-2">8-ое Coffee Lake</td>
+						</tr>
+						<tr>
+							<td class="tcol-1">Объём накопителя</td>
+							<td class="tcol-2">1 ТБ + SSD 128 ГБ</td>
+						</tr>
+					</tbody>
+				</table>
+
+			</div>
+			<div class="tab-pane no-fade pt-3" id="specifications" role="tabpanel" aria-labelledby="specifications-tab">
+				<div class="row">
+					<div class="col-md-8">
+						
+						<table class="table table-striped table-bordered mb-0 table-specifications">
+							<tbody>
+								<tr>
+									<td class="tcol-1">Диагональ экрана</td>
+									<td class="tcol-2">15.6" (1920x1080) Full HD</td>
+								</tr>
+								<tr>
+									<td class="tcol-1">Процессор</td>
+									<td class="tcol-2">Шестиядерный Intel Core i7-8750H (2.2 - 4.1 ГГц)</td>
+								</tr>
+								<tr>
+									<td class="tcol-1">Частота обновления экрана</td>
+									<td class="tcol-2">60 Гц</td>
+								</tr>
+								<tr>
+									<td class="tcol-1">Объем оперативной памяти</td>
+									<td class="tcol-2">8 ГБ</td>
+								</tr>
+								<tr>
+									<td class="tcol-1">Операционная система</td>
+									<td class="tcol-2">Windows 10 Home 64bit</td>
+								</tr>
+								<tr>
+									<td class="tcol-1">Цвет</td>
+									<td class="tcol-2">Черный</td>
+								</tr>
+								<tr>
+									<td class="tcol-1">Поколение процессора Intel</td>
+									<td class="tcol-2">8-ое Coffee Lake</td>
+								</tr>
+								<tr>
+									<td class="tcol-1">Объём накопителя</td>
+									<td class="tcol-2">1 ТБ + SSD 128 ГБ</td>
+								</tr>
+							</tbody>
+						</table>
+
+					</div>
+					<div class="col-md-4">
+						<div class="card mt-3 mt-sm-3 mt-md-0 mt-lg-0">
+							<div class="card-body">
+								<img class="card-img-top" src="data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%22286%22%20height%3D%22180%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20286%20180%22%20preserveAspectRatio%3D%22none%22%3E%3Cdefs%3E%3Cstyle%20type%3D%22text%2Fcss%22%3E%23holder_16c7e5ac360%20text%20%7B%20fill%3Argba(255%2C255%2C255%2C.75)%3Bfont-weight%3Anormal%3Bfont-family%3AHelvetica%2C%20monospace%3Bfont-size%3A14pt%20%7D%20%3C%2Fstyle%3E%3C%2Fdefs%3E%3Cg%20id%3D%22holder_16c7e5ac360%22%3E%3Crect%20width%3D%22286%22%20height%3D%22180%22%20fill%3D%22%23777%22%3E%3C%2Frect%3E%3Cg%3E%3Ctext%20x%3D%22107.0078125%22%20y%3D%2296.234375%22%3E286x180%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E" alt="Card image cap">
+							</div>
+						</div>
+						<div class="card mt-3">
+							<div class="card-body">
+								<h3 class="price mb-0 mr-4">{{$.Data.Shop.Product.PriceFormat "%.2f"}} {{$.Data.Shop.Product.Currency.Code}}</h3><a href="" class="btn btn-success btn-buy">Buy</a>
+							</div>
+						</div>
+					</div>
+				</div>
+			</div>
 		</div>
 	</div>
-	<div class="card-footer text-muted">
-		<div>Price: {{$.Data.Shop.Product.PriceFormat "%.2f"}} {{$.Data.Shop.Product.Currency.Code}}</div>
-		<div>Published on {{$.Data.Shop.Product.DateTimeFormat "02/01/2006, 15:04:05"}}</div>
-		<div>Author: {{$.Data.Shop.Product.User.FirstName}} {{$.Data.Shop.Product.User.LastName}}</div>
-	</div>
 </div>
 {{template "footer.html" .}}`)

+ 18 - 1
assets/template/sidebar_left_html_file.go

@@ -1,3 +1,20 @@
 package template
 
-var VarSidebarLeftHtmlFile = []byte(``)
+var VarSidebarLeftHtmlFile = []byte(`<div class="card mb-4">
+	<h5 class="card-header">Shop categories</h5>
+	<div class="card-body">
+		<ul class="m-0 p-0 pl-4">
+			{{range $.Data.Shop.Categories 0}}
+				<li class="{{if and $.Data.Shop.Category (eq $.Data.Shop.Category.Id .Id)}}active{{end}}">
+					<a href="{{.Permalink}}">{{.Name}}</a>
+				</li>
+			{{end}}
+		</ul>
+	</div>
+</div>
+<div class="card mb-4">
+	<h5 class="card-header">Shop filter</h5>
+	<div class="card-body">
+		Filter
+	</div>
+</div>`)

+ 2 - 14
assets/template/sidebar_right_html_file.go

@@ -1,7 +1,7 @@
 package template
 
 var VarSidebarRightHtmlFile = []byte(`<div class="card mb-4">
-	<h5 class="card-header">Blog Categories</h5>
+	<h5 class="card-header">Blog categories</h5>
 	<div class="card-body">
 		<ul class="m-0 p-0 pl-4">
 			{{range $.Data.Blog.Categories 0}}
@@ -13,19 +13,7 @@ var VarSidebarRightHtmlFile = []byte(`<div class="card mb-4">
 	</div>
 </div>
 <div class="card mb-4">
-	<h5 class="card-header">Shop Categories</h5>
-	<div class="card-body">
-		<ul class="m-0 p-0 pl-4">
-			{{range $.Data.Shop.Categories 0}}
-				<li class="{{if and $.Data.Shop.Category (eq $.Data.Shop.Category.Id .Id)}}active{{end}}">
-					<a href="{{.Permalink}}">{{.Name}}</a>
-				</li>
-			{{end}}
-		</ul>
-	</div>
-</div>
-<div class="card mb-4">
-	<h5 class="card-header">Useful Links</h5>
+	<h5 class="card-header">Useful links</h5>
 	<div class="card-body">
 		<ul class="m-0 p-0 pl-4">
 			<li><a href="https://github.com/vladimirok5959/golang-fave" target="_blank">Project on GitHub</a></li>

+ 134 - 1
assets/template/styles_css_file.go

@@ -26,13 +26,18 @@ var VarStylesCssFile = []byte(`/* Fix bootstrap */
 /* Set base bootstrap width */
 @media (min-width: 1200px) {
 	.container {
-		max-width: 1000px;
+		 max-width: 1000px; 
+		/*background: red;*/
 	}
 	.navbar-expand-lg .navbar-nav {
 		margin-right: -.5rem;
 	}
 }
 
+/*@media (min-width: 1200px) { .container { max-width: 100%; } }
+@media (min-width: 992px) { .container { max-width: 100%; } }
+@media (min-width: 768px) { .container { max-width: 100%; } }*/
+
 /* Base font and colors */
 body {
 	color: #444;
@@ -116,4 +121,132 @@ footer {
 
 footer {
 	border-top: 1px solid rgba(0, 0, 0, .125);
+}
+
+/* Shop */
+.grid-products {
+	display: flex;
+	flex-flow: row wrap;
+	padding-top: 1px;
+	padding-left: 1px;
+	margin-right: -4px;
+}
+
+.grid-products .card-product {
+	width: 100%;
+	border-radius: 0;
+	margin-top: -1px;
+	margin-left: -1px;
+}
+
+@media (min-width: 768px) { .grid-products .card-product { width: 50%; } }
+@media (min-width: 992px) { .grid-products .card-product { width: 33.33333%; } }
+@media (min-width: 1200px) { .grid-products .card-product { width: 33.33333%; } }
+
+.grid-products .card-product:hover {
+	background-color: #f2f4f6;
+}
+
+.grid-products .card-product .card-img-link {
+	display: block;
+	padding: 1.25rem;
+	padding-bottom: 0;
+}
+
+.grid-products .card-product .card-img-link img {
+	display: block;
+	border-radius: 0;
+	opacity: 0.8;
+}
+
+.grid-products .card-product .card-title {
+	font-size: 1rem;
+}
+
+.grid-products .card-product .card-text {
+	font-size: 0.7rem;
+}
+
+.grid-products .card-product .card-footer {
+	padding-top: 0;
+	border-radius: 0;
+	border-top: 0;
+	background: transparent;
+	padding-bottom: 1.25rem;
+}
+
+.grid-products .card-product .price {
+	font-weight: bold;
+}
+
+.grid-products .card-product .btn {
+	float: right;
+}
+
+.product-full .price {
+	display: inline-block;
+	vertical-align: middle;
+}
+
+.product-full .btn-buy {
+	display: inline-block;
+	vertical-align: middle;
+}
+
+.product-full .product-description {
+	font-size: 1rem;
+}
+
+.product-full .product-description p:last-child {
+	margin-bottom: 0px;
+}
+
+.table-specifications .tcol-1,
+.table-specifications .tcol-2 {
+	width: 100%;
+	display: block;
+}
+
+.table-specifications .tcol-1 {
+	font-weight: bold;
+	border-bottom: none;
+	padding-bottom: 0px;
+}
+
+.table-specifications .tcol-2 {
+	border-top: none;
+	padding-top: 0px;
+}
+
+@media (min-width: 768px) {
+	.table-specifications .tcol-1,
+	.table-specifications .tcol-2 {
+		width: 50%;
+		display: table-cell;
+		font-weight: normal;
+		border: 1px solid #dee2e6;
+		padding: .75rem;
+	}
+}
+
+@media (min-width: 992px) {
+	.table-specifications .tcol-1,
+	.table-specifications .tcol-2 {
+		width: 50%;
+		display: table-cell;
+		font-weight: normal;
+		border: 1px solid #dee2e6;
+		padding: .75rem;
+	}
+}
+
+@media (min-width: 1200px) {
+	.table-specifications .tcol-1,
+	.table-specifications .tcol-2 {
+		width: 50%;
+		display: table-cell;
+		font-weight: normal;
+		border: 1px solid #dee2e6;
+		padding: .75rem;
+	}
 }`)

+ 5 - 3
hosts/localhost/template/footer.html

@@ -1,7 +1,9 @@
 						</div>
-						<div class="col-md-4">
-							{{template "sidebar-right.html" .}}
-						</div>
+						{{if or (eq $.Data.Module "index") (eq $.Data.Module "404") (eq $.Data.Module "blog") (eq $.Data.Module "blog-post") (eq $.Data.Module "blog-category")}}
+							<div class="col-sm-5 col-md-4 col-lg-3">
+								{{template "sidebar-right.html" .}}
+							</div>
+						{{end}}
 					</div>
 				</div>
 			</div>

+ 10 - 1
hosts/localhost/template/header.html

@@ -112,4 +112,13 @@
 				</div>
 				<div class="container clear-top">
 					<div class="row pt-4">
-						<div class="col-md-8">
+						{{if or (eq $.Data.Module "shop") (eq $.Data.Module "shop-category")}}
+							<div class="col-sm-5 col-md-4 col-lg-3">
+								{{template "sidebar-left.html" .}}
+							</div>
+						{{end}}
+						{{if or (eq $.Data.Module "shop-product")}}
+							<div class="col-md-12">
+						{{else}}
+							<div class="col-sm-7 col-md-8 col-lg-9">
+						{{end}}

+ 22 - 17
hosts/localhost/template/shop-category.html

@@ -6,30 +6,35 @@
 		</div>
 	</div>
 </div>
-<div class="card mb-4">
+<div class="mb-4">
 	{{if $.Data.Shop.HaveProducts}}
-		{{range $.Data.Shop.Products}}
-			<div class="post">
-				<div class="card-body">
-					<h2 class="card-title">
+		<div class="grid-products">
+			{{range $.Data.Shop.Products}}
+				<div class="card card-product">
+					<div class="card-img-link">
 						<a href="{{.Permalink}}">
-							{{.Name}}
+							<img class="card-img-top" src="data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%22286%22%20height%3D%22180%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20286%20180%22%20preserveAspectRatio%3D%22none%22%3E%3Cdefs%3E%3Cstyle%20type%3D%22text%2Fcss%22%3E%23holder_16c7e5ac360%20text%20%7B%20fill%3Argba(255%2C255%2C255%2C.75)%3Bfont-weight%3Anormal%3Bfont-family%3AHelvetica%2C%20monospace%3Bfont-size%3A14pt%20%7D%20%3C%2Fstyle%3E%3C%2Fdefs%3E%3Cg%20id%3D%22holder_16c7e5ac360%22%3E%3Crect%20width%3D%22286%22%20height%3D%22180%22%20fill%3D%22%23777%22%3E%3C%2Frect%3E%3Cg%3E%3Ctext%20x%3D%22107.0078125%22%20y%3D%2296.234375%22%3E286x180%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E" alt="Card image cap">
 						</a>
-					</h2>
-					<div class="post-content">
-						{{.Briefly}}
 					</div>
-					<div class="post-date">
-						<div><small>Price: {{.PriceFormat "%.2f"}} {{.Currency.Code}}</small></div>
-						<div><small>Published on {{.DateTimeFormat "02/01/2006, 15:04:05"}}</small></div>
-						<div>Author: {{.User.FirstName}} {{.User.LastName}}</div>
+					<div class="card-body">
+						<h5 class="card-title">
+							<a href="{{.Permalink}}">
+								{{.Name}}
+							</a>
+						</h5>
+						<div class="card-text">{{.Briefly}}</div>
+					</div>
+					<div class="card-footer">
+						<span class="price">{{.PriceFormat "%.2f"}} {{.Currency.Code}}</span><a href="{{.Permalink}}" class="btn btn-primary">View</a>
 					</div>
 				</div>
-			</div>
-		{{end}}
+			{{end}}
+		</div>
 	{{else}}
-		<div class="card-body">
-			Sorry, no products matched your criteria
+		<div class="card">
+			<div class="card-body">
+				Sorry, no products matched your criteria
+			</div>
 		</div>
 	{{end}}
 </div>

+ 143 - 9
hosts/localhost/template/shop-product.html

@@ -1,16 +1,150 @@
 {{template "header.html" .}}
+<nav aria-label="breadcrumb">
+	<ol class="breadcrumb">
+		<li class="breadcrumb-item"><a href="/shop/">Shop</a></li>
+		<li class="breadcrumb-item active"><a href="{{$.Data.Shop.Product.Permalink}}">{{$.Data.Shop.Product.Name}}</a></li>
+	</ol>
+</nav>
 <div class="card mb-4">
-	<div class="card-body">
+	<div class="card-body product-full">
 		<h2 class="card-title">{{$.Data.Shop.Product.Name}}</h2>
-		<div class="page-content">
-			{{$.Data.Shop.Product.Briefly}}
-			{{$.Data.Shop.Product.Content}}
+		<ul class="nav nav-tabs" id="myTab" role="tablist">
+			<li class="nav-item">
+				<a class="nav-link active" id="all-tab" data-toggle="tab" href="#all" role="tab" aria-controls="all" aria-selected="true">All about product</a>
+			</li>
+			<li class="nav-item">
+				<a class="nav-link" id="specifications-tab" data-toggle="tab" href="#specifications" role="tab" aria-controls="specifications" aria-selected="false">Specifications</a>
+			</li>
+		</ul>
+		<div class="tab-content" id="myTabContent">
+			<div class="tab-pane no-fade pt-3 show active" id="all" role="tabpanel" aria-labelledby="all-tab">
+				<div class="row">
+					<div class="col-md-6">
+						<div class="card">
+							<img class="card-img-top" src="data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%22286%22%20height%3D%22180%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20286%20180%22%20preserveAspectRatio%3D%22none%22%3E%3Cdefs%3E%3Cstyle%20type%3D%22text%2Fcss%22%3E%23holder_16c7e5ac360%20text%20%7B%20fill%3Argba(255%2C255%2C255%2C.75)%3Bfont-weight%3Anormal%3Bfont-family%3AHelvetica%2C%20monospace%3Bfont-size%3A14pt%20%7D%20%3C%2Fstyle%3E%3C%2Fdefs%3E%3Cg%20id%3D%22holder_16c7e5ac360%22%3E%3Crect%20width%3D%22286%22%20height%3D%22180%22%20fill%3D%22%23777%22%3E%3C%2Frect%3E%3Cg%3E%3Ctext%20x%3D%22107.0078125%22%20y%3D%2296.234375%22%3E286x180%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E" alt="Card image cap">
+						</div>
+					</div>
+					<div class="col-md-6">
+						<div class="card mt-3 mt-sm-3 mt-md-0 mt-lg-0">
+							<div class="card-body">
+								<h3 class="price mb-0 mr-4">{{$.Data.Shop.Product.PriceFormat "%.2f"}} {{$.Data.Shop.Product.Currency.Code}}</h3><a href="" class="btn btn-success btn-buy">Buy</a>
+							</div>
+						</div>
+						<div class="card mt-3">
+							<div class="card-header">Payment</div>
+							<div class="card-body">
+								<p class="card-text">Non-cash, Cash</p>
+							</div>
+						</div>
+					</div>
+				</div>
+				
+				{{if ne $.Data.Shop.Product.Content ""}}
+					<hr>
+					<h3>Description</h3>
+					<hr>
+					<div class="product-description">
+						{{$.Data.Shop.Product.Content}}
+					</div>
+				{{end}}
+				<hr>
+				<h3>Specifications</h3>
+				<hr>
+				<table class="table table-striped table-bordered mb-0 table-specifications">
+					<tbody>
+						<tr>
+							<td class="tcol-1">Диагональ экрана</td>
+							<td class="tcol-2">15.6" (1920x1080) Full HD</td>
+						</tr>
+						<tr>
+							<td class="tcol-1">Процессор</td>
+							<td class="tcol-2">Шестиядерный Intel Core i7-8750H (2.2 - 4.1 ГГц)</td>
+						</tr>
+						<tr>
+							<td class="tcol-1">Частота обновления экрана</td>
+							<td class="tcol-2">60 Гц</td>
+						</tr>
+						<tr>
+							<td class="tcol-1">Объем оперативной памяти</td>
+							<td class="tcol-2">8 ГБ</td>
+						</tr>
+						<tr>
+							<td class="tcol-1">Операционная система</td>
+							<td class="tcol-2">Windows 10 Home 64bit</td>
+						</tr>
+						<tr>
+							<td class="tcol-1">Цвет</td>
+							<td class="tcol-2">Черный</td>
+						</tr>
+						<tr>
+							<td class="tcol-1">Поколение процессора Intel</td>
+							<td class="tcol-2">8-ое Coffee Lake</td>
+						</tr>
+						<tr>
+							<td class="tcol-1">Объём накопителя</td>
+							<td class="tcol-2">1 ТБ + SSD 128 ГБ</td>
+						</tr>
+					</tbody>
+				</table>
+
+			</div>
+			<div class="tab-pane no-fade pt-3" id="specifications" role="tabpanel" aria-labelledby="specifications-tab">
+				<div class="row">
+					<div class="col-md-8">
+						
+						<table class="table table-striped table-bordered mb-0 table-specifications">
+							<tbody>
+								<tr>
+									<td class="tcol-1">Диагональ экрана</td>
+									<td class="tcol-2">15.6" (1920x1080) Full HD</td>
+								</tr>
+								<tr>
+									<td class="tcol-1">Процессор</td>
+									<td class="tcol-2">Шестиядерный Intel Core i7-8750H (2.2 - 4.1 ГГц)</td>
+								</tr>
+								<tr>
+									<td class="tcol-1">Частота обновления экрана</td>
+									<td class="tcol-2">60 Гц</td>
+								</tr>
+								<tr>
+									<td class="tcol-1">Объем оперативной памяти</td>
+									<td class="tcol-2">8 ГБ</td>
+								</tr>
+								<tr>
+									<td class="tcol-1">Операционная система</td>
+									<td class="tcol-2">Windows 10 Home 64bit</td>
+								</tr>
+								<tr>
+									<td class="tcol-1">Цвет</td>
+									<td class="tcol-2">Черный</td>
+								</tr>
+								<tr>
+									<td class="tcol-1">Поколение процессора Intel</td>
+									<td class="tcol-2">8-ое Coffee Lake</td>
+								</tr>
+								<tr>
+									<td class="tcol-1">Объём накопителя</td>
+									<td class="tcol-2">1 ТБ + SSD 128 ГБ</td>
+								</tr>
+							</tbody>
+						</table>
+
+					</div>
+					<div class="col-md-4">
+						<div class="card mt-3 mt-sm-3 mt-md-0 mt-lg-0">
+							<div class="card-body">
+								<img class="card-img-top" src="data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%22286%22%20height%3D%22180%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20286%20180%22%20preserveAspectRatio%3D%22none%22%3E%3Cdefs%3E%3Cstyle%20type%3D%22text%2Fcss%22%3E%23holder_16c7e5ac360%20text%20%7B%20fill%3Argba(255%2C255%2C255%2C.75)%3Bfont-weight%3Anormal%3Bfont-family%3AHelvetica%2C%20monospace%3Bfont-size%3A14pt%20%7D%20%3C%2Fstyle%3E%3C%2Fdefs%3E%3Cg%20id%3D%22holder_16c7e5ac360%22%3E%3Crect%20width%3D%22286%22%20height%3D%22180%22%20fill%3D%22%23777%22%3E%3C%2Frect%3E%3Cg%3E%3Ctext%20x%3D%22107.0078125%22%20y%3D%2296.234375%22%3E286x180%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E" alt="Card image cap">
+							</div>
+						</div>
+						<div class="card mt-3">
+							<div class="card-body">
+								<h3 class="price mb-0 mr-4">{{$.Data.Shop.Product.PriceFormat "%.2f"}} {{$.Data.Shop.Product.Currency.Code}}</h3><a href="" class="btn btn-success btn-buy">Buy</a>
+							</div>
+						</div>
+					</div>
+				</div>
+			</div>
 		</div>
 	</div>
-	<div class="card-footer text-muted">
-		<div>Price: {{$.Data.Shop.Product.PriceFormat "%.2f"}} {{$.Data.Shop.Product.Currency.Code}}</div>
-		<div>Published on {{$.Data.Shop.Product.DateTimeFormat "02/01/2006, 15:04:05"}}</div>
-		<div>Author: {{$.Data.Shop.Product.User.FirstName}} {{$.Data.Shop.Product.User.LastName}}</div>
-	</div>
 </div>
 {{template "footer.html" .}}

+ 22 - 17
hosts/localhost/template/shop.html

@@ -1,28 +1,33 @@
 {{template "header.html" .}}
-<div class="card mb-4">
+<div class="mb-4">
 	{{if $.Data.Shop.HaveProducts}}
-		{{range $.Data.Shop.Products}}
-			<div class="post">
-				<div class="card-body">
-					<h2 class="card-title">
+		<div class="grid-products">
+			{{range $.Data.Shop.Products}}
+				<div class="card card-product">
+					<div class="card-img-link">
 						<a href="{{.Permalink}}">
-							{{.Name}}
+							<img class="card-img-top" src="data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%22286%22%20height%3D%22180%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20286%20180%22%20preserveAspectRatio%3D%22none%22%3E%3Cdefs%3E%3Cstyle%20type%3D%22text%2Fcss%22%3E%23holder_16c7e5ac360%20text%20%7B%20fill%3Argba(255%2C255%2C255%2C.75)%3Bfont-weight%3Anormal%3Bfont-family%3AHelvetica%2C%20monospace%3Bfont-size%3A14pt%20%7D%20%3C%2Fstyle%3E%3C%2Fdefs%3E%3Cg%20id%3D%22holder_16c7e5ac360%22%3E%3Crect%20width%3D%22286%22%20height%3D%22180%22%20fill%3D%22%23777%22%3E%3C%2Frect%3E%3Cg%3E%3Ctext%20x%3D%22107.0078125%22%20y%3D%2296.234375%22%3E286x180%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E" alt="Card image cap">
 						</a>
-					</h2>
-					<div class="post-content">
-						{{.Briefly}}
 					</div>
-					<div class="post-date">
-						<div><small>Price: {{.PriceFormat "%.2f"}} {{.Currency.Code}}</small></div>
-						<div><small>Published on {{.DateTimeFormat "02/01/2006, 15:04:05"}}</small></div>
-						<div>Author: {{.User.FirstName}} {{.User.LastName}}</div>
+					<div class="card-body">
+						<h5 class="card-title">
+							<a href="{{.Permalink}}">
+								{{.Name}}
+							</a>
+						</h5>
+						<div class="card-text">{{.Briefly}}</div>
+					</div>
+					<div class="card-footer">
+						<span class="price">{{.PriceFormat "%.2f"}} {{.Currency.Code}}</span><a href="{{.Permalink}}" class="btn btn-primary">View</a>
 					</div>
 				</div>
-			</div>
-		{{end}}
+			{{end}}
+		</div>
 	{{else}}
-		<div class="card-body">
-			Sorry, no products matched your criteria
+		<div class="card">
+			<div class="card-body">
+				Sorry, no products matched your criteria
+			</div>
 		</div>
 	{{end}}
 </div>

+ 18 - 0
hosts/localhost/template/sidebar-left.html

@@ -0,0 +1,18 @@
+<div class="card mb-4">
+	<h5 class="card-header">Shop categories</h5>
+	<div class="card-body">
+		<ul class="m-0 p-0 pl-4">
+			{{range $.Data.Shop.Categories 0}}
+				<li class="{{if and $.Data.Shop.Category (eq $.Data.Shop.Category.Id .Id)}}active{{end}}">
+					<a href="{{.Permalink}}">{{.Name}}</a>
+				</li>
+			{{end}}
+		</ul>
+	</div>
+</div>
+<div class="card mb-4">
+	<h5 class="card-header">Shop filter</h5>
+	<div class="card-body">
+		Filter
+	</div>
+</div>

+ 2 - 14
hosts/localhost/template/sidebar-right.html

@@ -1,5 +1,5 @@
 <div class="card mb-4">
-	<h5 class="card-header">Blog Categories</h5>
+	<h5 class="card-header">Blog categories</h5>
 	<div class="card-body">
 		<ul class="m-0 p-0 pl-4">
 			{{range $.Data.Blog.Categories 0}}
@@ -11,19 +11,7 @@
 	</div>
 </div>
 <div class="card mb-4">
-	<h5 class="card-header">Shop Categories</h5>
-	<div class="card-body">
-		<ul class="m-0 p-0 pl-4">
-			{{range $.Data.Shop.Categories 0}}
-				<li class="{{if and $.Data.Shop.Category (eq $.Data.Shop.Category.Id .Id)}}active{{end}}">
-					<a href="{{.Permalink}}">{{.Name}}</a>
-				</li>
-			{{end}}
-		</ul>
-	</div>
-</div>
-<div class="card mb-4">
-	<h5 class="card-header">Useful Links</h5>
+	<h5 class="card-header">Useful links</h5>
 	<div class="card-body">
 		<ul class="m-0 p-0 pl-4">
 			<li><a href="https://github.com/vladimirok5959/golang-fave" target="_blank">Project on GitHub</a></li>

+ 135 - 2
hosts/localhost/template/styles.css

@@ -24,13 +24,18 @@
 /* Set base bootstrap width */
 @media (min-width: 1200px) {
 	.container {
-		max-width: 1000px;
+		 max-width: 1000px; 
+		/*background: red;*/
 	}
 	.navbar-expand-lg .navbar-nav {
 		margin-right: -.5rem;
 	}
 }
 
+/*@media (min-width: 1200px) { .container { max-width: 100%; } }
+@media (min-width: 992px) { .container { max-width: 100%; } }
+@media (min-width: 768px) { .container { max-width: 100%; } }*/
+
 /* Base font and colors */
 body {
 	color: #444;
@@ -114,4 +119,132 @@ footer {
 
 footer {
 	border-top: 1px solid rgba(0, 0, 0, .125);
-}
+}
+
+/* Shop */
+.grid-products {
+	display: flex;
+	flex-flow: row wrap;
+	padding-top: 1px;
+	padding-left: 1px;
+	margin-right: -4px;
+}
+
+.grid-products .card-product {
+	width: 100%;
+	border-radius: 0;
+	margin-top: -1px;
+	margin-left: -1px;
+}
+
+@media (min-width: 768px) { .grid-products .card-product { width: 50%; } }
+@media (min-width: 992px) { .grid-products .card-product { width: 33.33333%; } }
+@media (min-width: 1200px) { .grid-products .card-product { width: 33.33333%; } }
+
+.grid-products .card-product:hover {
+	background-color: #f2f4f6;
+}
+
+.grid-products .card-product .card-img-link {
+	display: block;
+	padding: 1.25rem;
+	padding-bottom: 0;
+}
+
+.grid-products .card-product .card-img-link img {
+	display: block;
+	border-radius: 0;
+	opacity: 0.8;
+}
+
+.grid-products .card-product .card-title {
+	font-size: 1rem;
+}
+
+.grid-products .card-product .card-text {
+	font-size: 0.7rem;
+}
+
+.grid-products .card-product .card-footer {
+	padding-top: 0;
+	border-radius: 0;
+	border-top: 0;
+	background: transparent;
+	padding-bottom: 1.25rem;
+}
+
+.grid-products .card-product .price {
+	font-weight: bold;
+}
+
+.grid-products .card-product .btn {
+	float: right;
+}
+
+.product-full .price {
+	display: inline-block;
+	vertical-align: middle;
+}
+
+.product-full .btn-buy {
+	display: inline-block;
+	vertical-align: middle;
+}
+
+.product-full .product-description {
+	font-size: 1rem;
+}
+
+.product-full .product-description p:last-child {
+	margin-bottom: 0px;
+}
+
+.table-specifications .tcol-1,
+.table-specifications .tcol-2 {
+	width: 100%;
+	display: block;
+}
+
+.table-specifications .tcol-1 {
+	font-weight: bold;
+	border-bottom: none;
+	padding-bottom: 0px;
+}
+
+.table-specifications .tcol-2 {
+	border-top: none;
+	padding-top: 0px;
+}
+
+@media (min-width: 768px) {
+	.table-specifications .tcol-1,
+	.table-specifications .tcol-2 {
+		width: 50%;
+		display: table-cell;
+		font-weight: normal;
+		border: 1px solid #dee2e6;
+		padding: .75rem;
+	}
+}
+
+@media (min-width: 992px) {
+	.table-specifications .tcol-1,
+	.table-specifications .tcol-2 {
+		width: 50%;
+		display: table-cell;
+		font-weight: normal;
+		border: 1px solid #dee2e6;
+		padding: .75rem;
+	}
+}
+
+@media (min-width: 1200px) {
+	.table-specifications .tcol-1,
+	.table-specifications .tcol-2 {
+		width: 50%;
+		display: table-cell;
+		font-weight: normal;
+		border: 1px solid #dee2e6;
+		padding: .75rem;
+	}
+}

+ 1 - 1
modules/module_index_act_mysql_setup.go

@@ -540,7 +540,7 @@ func (this *Modules) RegisterAction_IndexMysqlSetup() *Action {
 			1000.00,
 			"Samsung Galaxy S10",
 			"samsung-galaxy-s10",
-			"<p>Arcu ac tortor dignissim convallis aenean et tortor. Vitae auctor eu augue ut lectus arcu. Ac turpis egestas integer eget aliquet nibh praesent. Interdum velit euismod in pellentesque massa placerat duis. Vestibulum rhoncus est pellentesque elit ullamcorper dignissim cras tincidunt. Nisl rhoncus mattis rhoncus urna neque viverra justo. Odio ut enim blandit volutpat. Ac auctor augue mauris augue neque gravida. Ut lectus arcu bibendum at varius vel. Porttitor leo a diam sollicitudin tempor id eu nisl nunc. Dolor sit amet consectetur adipiscing elit duis tristique. Semper quis lectus nulla at volutpat diam ut. Sapien eget mi proin sed.</p>",
+			"<p>Arcu ac tortor dignissim convallis aenean et tortor. Vitae auctor eu augue ut lectus arcu. Ac turpis egestas integer eget aliquet nibh praesent.</p>",
 			"<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Feugiat in ante metus dictum at tempor commodo ullamcorper a. Et malesuada fames ac turpis egestas sed tempus urna et. Euismod elementum nisi quis eleifend. Nisi porta lorem mollis aliquam ut porttitor. Ac turpis egestas maecenas pharetra convallis posuere. Nunc non blandit massa enim nec dui. Commodo elit at imperdiet dui accumsan sit amet nulla. Viverra accumsan in nisl nisi scelerisque. Dui nunc mattis enim ut tellus. Molestie ac feugiat sed lectus vestibulum mattis ullamcorper. Faucibus ornare suspendisse sed nisi lacus. Nulla facilisi morbi tempus iaculis. Ut eu sem integer vitae justo eget magna fermentum iaculis. Ullamcorper sit amet risus nullam eget felis eget nunc. Volutpat sed cras ornare arcu dui vivamus. Eget magna fermentum iaculis eu non diam.</p><p>Arcu ac tortor dignissim convallis aenean et tortor. Vitae auctor eu augue ut lectus arcu. Ac turpis egestas integer eget aliquet nibh praesent. Interdum velit euismod in pellentesque massa placerat duis. Vestibulum rhoncus est pellentesque elit ullamcorper dignissim cras tincidunt. Nisl rhoncus mattis rhoncus urna neque viverra justo. Odio ut enim blandit volutpat. Ac auctor augue mauris augue neque gravida. Ut lectus arcu bibendum at varius vel. Porttitor leo a diam sollicitudin tempor id eu nisl nunc. Dolor sit amet consectetur adipiscing elit duis tristique. Semper quis lectus nulla at volutpat diam ut. Sapien eget mi proin sed.</p>",
 			utils.UnixTimestampToMySqlDateTime(utils.GetCurrentUnixTimestamp()),
 			1,

+ 1 - 1
support/migrate/000000003.go

@@ -190,7 +190,7 @@ func Migrate_000000003(db *sqlw.DB, host string) error {
 		1000.00,
 		"Samsung Galaxy S10",
 		"samsung-galaxy-s10",
-		"<p>Arcu ac tortor dignissim convallis aenean et tortor. Vitae auctor eu augue ut lectus arcu. Ac turpis egestas integer eget aliquet nibh praesent. Interdum velit euismod in pellentesque massa placerat duis. Vestibulum rhoncus est pellentesque elit ullamcorper dignissim cras tincidunt. Nisl rhoncus mattis rhoncus urna neque viverra justo. Odio ut enim blandit volutpat. Ac auctor augue mauris augue neque gravida. Ut lectus arcu bibendum at varius vel. Porttitor leo a diam sollicitudin tempor id eu nisl nunc. Dolor sit amet consectetur adipiscing elit duis tristique. Semper quis lectus nulla at volutpat diam ut. Sapien eget mi proin sed.</p>",
+		"<p>Arcu ac tortor dignissim convallis aenean et tortor. Vitae auctor eu augue ut lectus arcu. Ac turpis egestas integer eget aliquet nibh praesent.</p>",
 		"<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Feugiat in ante metus dictum at tempor commodo ullamcorper a. Et malesuada fames ac turpis egestas sed tempus urna et. Euismod elementum nisi quis eleifend. Nisi porta lorem mollis aliquam ut porttitor. Ac turpis egestas maecenas pharetra convallis posuere. Nunc non blandit massa enim nec dui. Commodo elit at imperdiet dui accumsan sit amet nulla. Viverra accumsan in nisl nisi scelerisque. Dui nunc mattis enim ut tellus. Molestie ac feugiat sed lectus vestibulum mattis ullamcorper. Faucibus ornare suspendisse sed nisi lacus. Nulla facilisi morbi tempus iaculis. Ut eu sem integer vitae justo eget magna fermentum iaculis. Ullamcorper sit amet risus nullam eget felis eget nunc. Volutpat sed cras ornare arcu dui vivamus. Eget magna fermentum iaculis eu non diam.</p><p>Arcu ac tortor dignissim convallis aenean et tortor. Vitae auctor eu augue ut lectus arcu. Ac turpis egestas integer eget aliquet nibh praesent. Interdum velit euismod in pellentesque massa placerat duis. Vestibulum rhoncus est pellentesque elit ullamcorper dignissim cras tincidunt. Nisl rhoncus mattis rhoncus urna neque viverra justo. Odio ut enim blandit volutpat. Ac auctor augue mauris augue neque gravida. Ut lectus arcu bibendum at varius vel. Porttitor leo a diam sollicitudin tempor id eu nisl nunc. Dolor sit amet consectetur adipiscing elit duis tristique. Semper quis lectus nulla at volutpat diam ut. Sapien eget mi proin sed.</p>",
 		utils.UnixTimestampToMySqlDateTime(utils.GetCurrentUnixTimestamp()),
 		1,