import base html core + bootstrap from warren
After Width: | Height: | Size: 457 B |
After Width: | Height: | Size: 351 B |
After Width: | Height: | Size: 244 B |
After Width: | Height: | Size: 301 B |
After Width: | Height: | Size: 387 B |
After Width: | Height: | Size: 246 B |
After Width: | Height: | Size: 5.7 KiB |
After Width: | Height: | Size: 317 B |
After Width: | Height: | Size: 367 B |
After Width: | Height: | Size: 6.8 KiB |
After Width: | Height: | Size: 4.5 KiB |
After Width: | Height: | Size: 4.5 KiB |
After Width: | Height: | Size: 4.5 KiB |
After Width: | Height: | Size: 6.3 KiB |
|
@ -0,0 +1,40 @@
|
|||
body {
|
||||
padding-top: 40px;
|
||||
padding-bottom: 40px;
|
||||
background-color: #eee;
|
||||
}
|
||||
|
||||
.form-signin {
|
||||
max-width: 330px;
|
||||
padding: 15px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
.form-signin .form-signin-heading,
|
||||
.form-signin .checkbox {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.form-signin .checkbox {
|
||||
font-weight: normal;
|
||||
}
|
||||
.form-signin .form-control {
|
||||
position: relative;
|
||||
height: auto;
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
padding: 10px;
|
||||
font-size: 16px;
|
||||
}
|
||||
.form-signin .form-control:focus {
|
||||
z-index: 2;
|
||||
}
|
||||
.form-signin input[type="email"] {
|
||||
margin-bottom: -1px;
|
||||
border-bottom-right-radius: 0;
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
.form-signin input[type="password"] {
|
||||
margin-bottom: 10px;
|
||||
border-top-left-radius: 0;
|
||||
border-top-right-radius: 0;
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
body {
|
||||
padding-top: 50px;
|
||||
}
|
||||
.starter-template {
|
||||
padding: 40px 15px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.col-form .row .col-xs-2 {
|
||||
text-align: right;
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
$(document).ready( function () {
|
||||
$( "#datepicker" ).datepicker();
|
||||
});
|
|
@ -0,0 +1,14 @@
|
|||
/*!
|
||||
* jquery.confirm
|
||||
*
|
||||
* @version 2.3.1
|
||||
*
|
||||
* @author My C-Labs
|
||||
* @author Matthieu Napoli <matthieu@mnapoli.fr>
|
||||
* @author Russel Vela
|
||||
* @author Marcus Schwarz <msspamfang@gmx.de>
|
||||
*
|
||||
* @license MIT
|
||||
* @url http://myclabs.github.io/jquery.confirm/
|
||||
*/
|
||||
(function($){$.fn.confirm=function(options){if(typeof options==="undefined"){options={}}this.click(function(e){e.preventDefault();var newOptions=$.extend({button:$(this)},options);$.confirm(newOptions,e)});return this};$.confirm=function(options,e){if($(".confirmation-modal").length>0)return;var dataOptions={};if(options.button){var dataOptionsMapping={title:"title",text:"text","confirm-button":"confirmButton","cancel-button":"cancelButton","confirm-button-class":"confirmButtonClass"};$.each(dataOptionsMapping,function(attributeName,optionName){var value=options.button.data(attributeName);if(value){dataOptions[optionName]=value}})}var settings=$.extend({},$.confirm.options,{confirm:function(){var url=e&&("string"===typeof e&&e||e.currentTarget&&e.currentTarget.attributes["href"].value);if(url){if(options.post){var form=$('<form method="post" class="hide" action="'+url+'"></form>');$("body").append(form);form.submit()}else{window.location=url}}},cancel:function(o){},button:null},dataOptions,options);var modalHeader="";if(settings.title!==""){modalHeader="<div class=modal-header>"+'<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>'+'<h4 class="modal-title">'+settings.title+"</h4>"+"</div>"}var modalHTML='<div class="confirmation-modal modal fade" tabindex="-1" role="dialog">'+'<div class="modal-dialog">'+'<div class="modal-content">'+modalHeader+'<div class="modal-body">'+settings.text+"</div>"+'<div class="modal-footer">'+'<button class="confirm btn '+settings.confirmButtonClass+'" type="button" data-dismiss="modal">'+settings.confirmButton+"</button>"+'<button class="cancel btn btn-default" type="button" data-dismiss="modal">'+settings.cancelButton+"</div>"+"</div>"+"</div>"+"</div>"+"</div>";var modal=$(modalHTML);modal.on("shown.bs.modal",function(){modal.find(".btn-primary:first").focus()});modal.on("hidden.bs.modal",function(){modal.remove()});modal.find(".confirm").click(function(){settings.confirm(settings.button)});modal.find(".cancel").click(function(){settings.cancel(settings.button)});$("body").append(modal);modal.modal("show")};$.confirm.options={text:"Are you sure?",title:"",confirmButton:"Yes",cancelButton:"Cancel",post:false,confirmButtonClass:"btn-primary"}})(jQuery);
|
36
main.go
|
@ -4,6 +4,8 @@ import (
|
|||
"encoding/json"
|
||||
"fmt"
|
||||
"os"
|
||||
"database/sql"
|
||||
_ "github.com/lib/pq"
|
||||
)
|
||||
|
||||
const VERSION = "0.1"
|
||||
|
@ -19,6 +21,7 @@ type Config struct {
|
|||
|
||||
var (
|
||||
config Config
|
||||
db *sql.DB
|
||||
)
|
||||
|
||||
func loadConfig() {
|
||||
|
@ -31,10 +34,41 @@ func loadConfig() {
|
|||
decoder.Decode(&config)
|
||||
}
|
||||
|
||||
func dbConnect() {
|
||||
var err error
|
||||
db, err = sql.Open("postgres", fmt.Sprintf("postgres://%s:%s@%s/%s?sslmode=require", config.Sql.Username, config.Sql.Password, config.Sql.Host, config.Sql.Dbname))
|
||||
|
||||
if err != nil {
|
||||
fmt.Println("DB ERROR: ", err)
|
||||
}
|
||||
err = db.Ping()
|
||||
if err != nil {
|
||||
fmt.Println("DB Error on Ping(): ", err)
|
||||
os.Exit(-1)
|
||||
}
|
||||
}
|
||||
|
||||
func initTemplates() {
|
||||
files, _ := filepath.Glob("templates/pages/*.html")
|
||||
re := regexp.MustCompile("templates/pages/(.*).html")
|
||||
fmt.Println("Loading Templates:")
|
||||
for _, t := range files {
|
||||
name := re.FindStringSubmatch(t)
|
||||
fmt.Println(" ", name[1])
|
||||
var err error
|
||||
templates[name[1]], err = template.ParseFiles("templates/layout.html", t)
|
||||
if err != nil {
|
||||
fmt.Println("Template load error: ", err)
|
||||
os.Exit(-1)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func main() {
|
||||
fmt.Println("transmet ", VERSION)
|
||||
fmt.Println("Loading...")
|
||||
loadConfig()
|
||||
|
||||
|
||||
|
||||
db.Close()
|
||||
}
|
||||
|
|
|
@ -0,0 +1,73 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
<title>transmet</title>
|
||||
|
||||
<!-- Bootstrap -->
|
||||
<link href="/css/bootstrap.min.css" rel="stylesheet">
|
||||
<link href="/css/jquery-ui.min.css" rel="stylesheet">
|
||||
<link href="/css/template.css" rel="stylesheet">
|
||||
<link href="/css/signin.css" rel="stylesheet">
|
||||
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="navbar navbar-inverse navbar-fixed-top" role="navigation">
|
||||
<div class="container">
|
||||
<div class="navbar-header">
|
||||
|
||||
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target=".navbar-collapse">
|
||||
<span class="sr-only">Toggle navigation</span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
<a class="navbar-brand" href="/">MasterTracker</a>
|
||||
</div>
|
||||
<div class="collapse navbar-collapse">
|
||||
<ul class="nav navbar-nav">
|
||||
<!--<li class="active"><a href="#">Home</a></li>
|
||||
<li><a href="#about">About</a></li>
|
||||
<li><a href="#contact">Contact</a></li> -->
|
||||
</ul>
|
||||
<ul class="nav navbar-nav navbar-right">
|
||||
{{if .user}}
|
||||
<li><a href="/user/edit">{{.user.Displayname}}</a></li>
|
||||
<li><a href="/logout">Logout</a></li>
|
||||
{{else}}
|
||||
<li><a href="/signup">Sign up</a></li>
|
||||
<li><a href="/login">Log in</a></li>
|
||||
{{end}}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
{{template "body" .}}
|
||||
</div>
|
||||
|
||||
<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
|
||||
<script src="/js/jquery.min.js"></script>
|
||||
<!-- Include all compiled plugins (below), or include individual files as needed -->
|
||||
<script src="/js/bootstrap.min.js"></script>
|
||||
<script src="/js/jquery.confirm.min.js"></script>
|
||||
<script src="/js/jquery-ui.min.js"></script>
|
||||
<script src="/js/funcs.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
{{define "flashes"}}
|
||||
<div class="messages">
|
||||
{{range .flashes.info}}
|
||||
<div class="alert alert-success" role="alert">Info: {{.}}</div>
|
||||
{{end}}
|
||||
{{range .flashes.error}}
|
||||
<div class="alert alert-danger" role="alert">Error: {{.}}</div>
|
||||
{{end}}
|
||||
</div>
|
||||
{{end}}
|