initial commit
This commit is contained in:
commit
3f79fc8e6c
527 changed files with 373170 additions and 0 deletions
16
templates/all.html
Normal file
16
templates/all.html
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
{{define "body"}}
|
||||
<div class="page-header">
|
||||
<div class="row">
|
||||
<h2>{{.BodyTitle}}</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<ul type="circle">
|
||||
{{if .Data}}
|
||||
{{range $item := .Data}}
|
||||
<li><h5><a href="/wiki/{{$item.LinkTitle}}">{{$item.Title}}</a></h5></li>
|
||||
{{end}}
|
||||
{{end}}
|
||||
</ul>
|
||||
</div>
|
||||
{{end}}
|
||||
11
templates/bootstrap.css
vendored
Normal file
11
templates/bootstrap.css
vendored
Normal file
File diff suppressed because one or more lines are too long
86
templates/custom.css
Normal file
86
templates/custom.css
Normal file
|
|
@ -0,0 +1,86 @@
|
|||
@media (min-width: 768px) {
|
||||
.sm-pull-right {
|
||||
float: right !important;
|
||||
}
|
||||
.sm-pull-left {
|
||||
float: left !important;
|
||||
}
|
||||
}
|
||||
@media (min-width: 992px) {
|
||||
.md-pull-right {
|
||||
float: right !important;
|
||||
}
|
||||
.md-pull-left {
|
||||
float: left !important;
|
||||
}
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
.lg-pull-right {
|
||||
float: right !important;
|
||||
}
|
||||
.lg-pull-left {
|
||||
float: left !important;
|
||||
}
|
||||
}
|
||||
|
||||
a.dark {
|
||||
color: #222222;
|
||||
}
|
||||
a.para {
|
||||
text-decoration: none;
|
||||
font-size: 18px;
|
||||
}
|
||||
.alert-primary {
|
||||
background-color: #375a7f;
|
||||
border-color: #375a7f;
|
||||
color: #ffffff;
|
||||
}
|
||||
h1,h2,h3,h4,h5,h6 {
|
||||
font-weight: bold;
|
||||
}
|
||||
h1 {
|
||||
font-size: 2em;
|
||||
}
|
||||
h2 {
|
||||
font-size: 1.75em;
|
||||
}
|
||||
h3 {
|
||||
font-size: 1.5em;
|
||||
}
|
||||
h4 {
|
||||
font-size: 1.25em;
|
||||
}
|
||||
h5 {
|
||||
font-size: 1em;
|
||||
}
|
||||
h6 {
|
||||
font-size: 1em;
|
||||
}
|
||||
.md-text {
|
||||
font-family: 'Courier New';
|
||||
font-size: 14;
|
||||
}
|
||||
pre {
|
||||
display: block;
|
||||
padding: 10px;
|
||||
margin: 0 0 10.5px;
|
||||
font-size: 14px;
|
||||
line-height: 1.42857143;
|
||||
word-break: break-all;
|
||||
word-wrap: break-word;
|
||||
color: #0cdba6;
|
||||
background-color: #444444;
|
||||
border: 1px solid #444444;
|
||||
border-radius: 2px;
|
||||
}
|
||||
code {
|
||||
padding: 3px 3px 1px 3px;
|
||||
font-size: 90%;
|
||||
color: #0cdba6;
|
||||
background-color: #444444;
|
||||
border-radius: 2px;
|
||||
}
|
||||
textarea,input {
|
||||
color: #e2e2e2 !important;
|
||||
background-color: #444444 !important;
|
||||
}
|
||||
29
templates/index.html
Normal file
29
templates/index.html
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>GoWiki | {{.Title}}</title>
|
||||
<link rel="stylesheet" type="text/css" href="/bootstrap.css" mdeia="screen" integrity="sha256-KC5lAzGRWwscU0sTmXtd8ka5mt7Vk8a0L5JqOhwA28s="></link>
|
||||
<link rel="stylesheet" type="text/css" href="/custom.css" integrity="sha256-s5f4HosKrvdPfxqPtKG5e6/T9h+NFZ8kBnCXArk83zw="></link>
|
||||
</head>
|
||||
<body style="padding-top:50px">
|
||||
<div class="navbar navbar-default navbar-fixed-top">
|
||||
<div class="container">
|
||||
<div class="navbar-header">
|
||||
<a href="/" class="navbar-brand">GoWiki</a>
|
||||
</div>
|
||||
<div class="navbar-collapse collapse">
|
||||
{{template "menu" .}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="container">
|
||||
{{if .Msg}}
|
||||
<div class="alert alert-danger" style="margin-top:20px">
|
||||
<h4>Error!</h4>
|
||||
<p>{{.Msg}}</p>
|
||||
</div>
|
||||
{{end}}
|
||||
{{template "body" .}}
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
37
templates/login.html
Normal file
37
templates/login.html
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
{{define "body"}}
|
||||
<div class="page-header">
|
||||
<div class="row">
|
||||
<div class="col-xs-6 col-xs-offset-3">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">{{.BodyTitle}}</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form class="form-horizontal" action="/login" method="post">
|
||||
<input type="hidden" name="token" value="{{.Token}}">
|
||||
<fieldset>
|
||||
<div class="form-group">
|
||||
<label class="col-lg-4 control-label">Username</label>
|
||||
<div class="col-lg-6">
|
||||
<input class="form-control input-sm" type="text" name="user" autofocus required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-lg-4 control-label">Password</label>
|
||||
<div class="col-lg-6">
|
||||
<input class="form-control input-sm" type="password" name="password" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="col-lg-6 col-lg-offset-4">
|
||||
<button class="btn btn-sm btn-primary" type="submit" name="submit" value="Login">Login</button>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{end}}
|
||||
49
templates/menu.html
Normal file
49
templates/menu.html
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
{{define "menu"}}
|
||||
{{if .Login}}
|
||||
<ul class="nav navbar-nav">
|
||||
<li><a href="/wiki/Index">
|
||||
Index
|
||||
</a></li>
|
||||
<li><a href="/search">
|
||||
Search
|
||||
</a></li>
|
||||
<li><a href="/all">
|
||||
All
|
||||
</a></li>
|
||||
<li><a href="/new">
|
||||
New
|
||||
</a></li>
|
||||
</ul>
|
||||
<ul class="nav navbar-nav navbar-right">
|
||||
{{if .Admin}}
|
||||
<li><a href="/users">
|
||||
Users
|
||||
</a></li>
|
||||
{{else}}
|
||||
<li><a href="/user/edit/{{.User}}">
|
||||
Profile
|
||||
</a></li>
|
||||
{{end}}
|
||||
<li><a href="/logout">
|
||||
Logout
|
||||
</a></li>
|
||||
</ul>
|
||||
{{else}}
|
||||
<ul class="nav navbar-nav">
|
||||
<li><a href="/wiki/Index">
|
||||
Index
|
||||
</a></li>
|
||||
<li><a href="/search">
|
||||
Search
|
||||
</a></li>
|
||||
<li><a href="/all">
|
||||
All
|
||||
</a></li>
|
||||
</ul>
|
||||
<ul class="nav navbar-nav navbar-right">
|
||||
<li><a href="/login">
|
||||
Login
|
||||
</a></li>
|
||||
</ul>
|
||||
{{end}}
|
||||
{{end}}
|
||||
17
templates/notFound.html
Normal file
17
templates/notFound.html
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
{{define "body"}}
|
||||
<div class="page-header">
|
||||
<div class="row">
|
||||
<div class="col-xs-4 col-xs-offset-4">
|
||||
<div class="panel panel-danger">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">404</h3>
|
||||
</div>
|
||||
<div class="panel-body text-center">
|
||||
<h4>Page not found</h4>
|
||||
<a href="/"><b>Back</b></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{end}}
|
||||
27
templates/search.html
Normal file
27
templates/search.html
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
{{define "body"}}
|
||||
<div class="page-header">
|
||||
<div class="row">
|
||||
<h2>{{.BodyTitle}}</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row col-xs-6">
|
||||
<form class="form-horizontal" role="search" method="post" action="/search">
|
||||
<input type="hidden" name="token" value="{{.Token}}">
|
||||
<fieldset>
|
||||
<div class="form-group">
|
||||
<div class="col-lg-8">
|
||||
<input type="text" class="form-control input-sm" placeholder="Search" name="search" value="{{.Search}}" autofocus>
|
||||
</div>
|
||||
<div class="col-lg-4">
|
||||
<button class="btn btn-sm btn-primary" type="submit" name="submit" value="Search">Search</button>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
<div class="row col-xs-12">
|
||||
{{if .Data}}
|
||||
{{.Data}}
|
||||
{{end}}
|
||||
</div>
|
||||
{{end}}
|
||||
19
templates/userDel.html
Normal file
19
templates/userDel.html
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
{{define "body"}}
|
||||
<div class="page-header">
|
||||
<div class="row">
|
||||
<h2>{{.BodyTitle}}</h2>
|
||||
</div>
|
||||
</div>
|
||||
{{if .Data}}
|
||||
<div class="alert alert-danger">
|
||||
<h4>Delete?</h4>
|
||||
<p>You are about to delete the user <a class="dark" href="/user/edit/{{.Data.Username}}">{{.Data.Username}}</a></p>
|
||||
</div>
|
||||
<form class="form-horizontal" action="/user/del/{{.Data.Username}}" method="post">
|
||||
<input type="hidden" name="token" value="{{.Token}}">
|
||||
<fieldset>
|
||||
<button class="btn btn-sm btn-danger" type="submit" name="submit" value="Delete">Delete</button>
|
||||
</fieldset>
|
||||
</form>
|
||||
{{end}}
|
||||
{{end}}
|
||||
68
templates/userEdit.html
Normal file
68
templates/userEdit.html
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
{{define "body"}}
|
||||
<div class="page-header">
|
||||
<div class="row">
|
||||
<h2>{{.BodyTitle}}</h2>
|
||||
</div>
|
||||
</div>
|
||||
{{if .Data}}
|
||||
<div class="row">
|
||||
<form class="form-horizontal" action="/user/edit/{{.Data.Username}}" method="post">
|
||||
<input type="hidden" name="token" value="{{.Token}}">
|
||||
<fieldset>
|
||||
<div class="form-group">
|
||||
<label class="col-lg-3 control-label">Username</label>
|
||||
<div class="col-lg-6">
|
||||
<input class="form-control input-sm" type="text" value="{{.Data.Username}}" disabled>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-lg-3 control-label">Password</label>
|
||||
<div class="col-lg-6">
|
||||
<input class="form-control input-sm" type="password" name="password">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-lg-3 control-label">Repeat</label>
|
||||
<div class="col-lg-6">
|
||||
<input class="form-control input-sm" type="password" name="repeat">
|
||||
</div>
|
||||
</div>
|
||||
{{if .Admin}}
|
||||
<div class="form-group">
|
||||
<label class="col-lg-3 control-label">Admin Privileges</label>
|
||||
<div class="col-lg-6">
|
||||
{{if .Data.Admin}}
|
||||
<input type="checkbox" name="admin" value="0" checked>
|
||||
{{else}}
|
||||
<input type="checkbox" name="admin" value="0">
|
||||
{{end}}
|
||||
</div>
|
||||
</div>
|
||||
{{end}}
|
||||
<div class="form-group">
|
||||
<div class="col-lg-6 col-lg-offset-3">
|
||||
<button class="btn btn-sm btn-primary" type="submit" name="submit" value="Submit">Submit</button>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
{{if .Admin}}
|
||||
{{if eq .Data.Locked 3}}
|
||||
<div class="row">
|
||||
<form class="form-horizontal" action="/user/unlock/{{.Data.Username}}" method="post">
|
||||
<fieldset>
|
||||
<input type="hidden" name="token" value="{{.Token}}">
|
||||
<div class="form-group">
|
||||
<label class="col-lg-3 control-label">User is locked</label>
|
||||
<div class="col-lg-6">
|
||||
<button class="btn btn-sm btn-primary" type="submit" name="submit" value="Unlock">Unlock</button>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
{{end}}
|
||||
{{end}}
|
||||
{{end}}
|
||||
{{end}}
|
||||
41
templates/userNew.html
Normal file
41
templates/userNew.html
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
{{define "body"}}
|
||||
<div class="page-header">
|
||||
<div class="row">
|
||||
<h2>{{.BodyTitle}}</h2>
|
||||
</div>
|
||||
</div>
|
||||
<form class="form-horizontal" action="/user/new" method="post">
|
||||
<input type="hidden" name="token" value="{{.Token}}">
|
||||
<fieldset>
|
||||
<div class="form-group">
|
||||
<label class="col-lg-3 control-label">Username</label>
|
||||
<div class="col-lg-6">
|
||||
<input class="form-control input-sm" type="text" name="user" value required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-lg-3 control-label">Password</label>
|
||||
<div class="col-lg-6">
|
||||
<input class="form-control input-sm" type="password" name="password" value required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-lg-3 control-label">Repeat</label>
|
||||
<div class="col-lg-6">
|
||||
<input class="form-control input-sm" type="password" name="repeat" value required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-lg-3 control-label">Admin Privileges</label>
|
||||
<div class="col-lg-6">
|
||||
<input type="checkbox" name="admin" value="0">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="col-lg-6 col-lg-offset-3">
|
||||
<button class="btn btn-sm btn-primary" type="submit" name="submit" value="Submit">Submit</button>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
{{end}}
|
||||
51
templates/users.html
Normal file
51
templates/users.html
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
{{define "body"}}
|
||||
<div class="page-header">
|
||||
<div class="row">
|
||||
<h2>{{.BodyTitle}}</h2>
|
||||
</div>
|
||||
</div>
|
||||
{{if .Admin}}
|
||||
<div class="row">
|
||||
<div class="col-lg-5">
|
||||
<a href="/user/new"><b>New User</b></a>
|
||||
</div>
|
||||
</div>
|
||||
{{end}}
|
||||
<div class="row">
|
||||
{{if .Data}}
|
||||
<table class="table table-stripped table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Username</th>
|
||||
<th>Admin</th>
|
||||
<th>Options</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{{$user := .User}}
|
||||
{{$admin := .Admin}}
|
||||
{{range $item := .Data}}
|
||||
<tr>
|
||||
<td>{{$item.Username}}</td>
|
||||
{{if $item.Admin}}
|
||||
<td>yes</td>
|
||||
{{else}}
|
||||
<td>no</td>
|
||||
{{end}}
|
||||
{{if $admin}}
|
||||
<td><a href="/user/edit/{{$item.Username}}">Edit</a>
|
||||
<a href="/user/del/{{$item.Username}}">Delete</a></td>
|
||||
{{else}}
|
||||
{{if eq $item.Username $user}}
|
||||
<td><a href="/user/edit/{{$item.Username}}">Edit</a></td>
|
||||
{{else}}
|
||||
<td></td>
|
||||
{{end}}
|
||||
{{end}}
|
||||
</tr>
|
||||
{{end}}
|
||||
</tbody>
|
||||
</table>
|
||||
{{end}}
|
||||
</div>
|
||||
{{end}}
|
||||
41
templates/wiki.html
Normal file
41
templates/wiki.html
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
{{define "body"}}
|
||||
<div class="page-header">
|
||||
<div class="row">
|
||||
<h2>{{.BodyTitle}}</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<strong>Created by:</strong> {{.Data.Created}}<br>
|
||||
{{if .Data.Updated}}
|
||||
<strong>Updated by:</strong> {{.Data.Updated}}{{end}}
|
||||
<br><br>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-6">
|
||||
{{.Data.Index}}
|
||||
</div>
|
||||
<div class="col-xs-6">
|
||||
{{if .Login}}
|
||||
<div class="row" style="padding-bottom: 14px">
|
||||
<div class="col-xs-6 {{if ne .Data.LinkTitle "Index"}}col-xs-offset-4{{else}}col-xs-offset-6{{end}}">
|
||||
<a href="/wiki/{{.Data.LinkTitle}}/edit" class="btn btn-sm btn-primary lg-pull-right">Edit</a>
|
||||
</div>
|
||||
{{if ne .Data.LinkTitle "Index"}}
|
||||
<div class="col-xs-2">
|
||||
<form class="form-horizontal" action="/wiki/{{.Data.LinkTitle}}/del" method="post">
|
||||
<input type="hidden" name="token" value="{{.Token}}">
|
||||
<button class="btn btn-sm btn-danger lg-pull-right" type="submit" name="submit" value="Delete">Delete</button>
|
||||
</form>
|
||||
</div>
|
||||
{{end}}
|
||||
</div>
|
||||
{{end}}
|
||||
<div class="row">
|
||||
<div class="col-xs-6 col-xs-offset-6">
|
||||
<a href="/wiki/{{.Data.LinkTitle}}/md" class="btn btn-sm btn-primary lg-pull-right">Markdown</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{.Data.Text}}
|
||||
{{end}}
|
||||
41
templates/wikiEdit.html
Normal file
41
templates/wikiEdit.html
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
{{define "body"}}
|
||||
<div class="page-header">
|
||||
<div class="row">
|
||||
<h2>{{.BodyTitle}}</h2>
|
||||
</div>
|
||||
</div>
|
||||
<form class="form-horizontal" action="/wiki/{{.Data.LinkTitle}}/edit" method="post">
|
||||
<input type="hidden" name="token" value="{{.Token}}">
|
||||
<input type="hidden" name="title" value="{{if .Data}}{{.Data.Title}}{{end}}">
|
||||
<fieldset>
|
||||
<div class="form-group">
|
||||
<label class="col-xs-1 control-label">Title</label>
|
||||
<div class="col-xs-11">
|
||||
<input class="form-control input-sm" type="text" value="{{if .Data}}{{.Data.Title}}{{end}}" spellcheck="false" disabled>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-xs-1 control-label">Text</label>
|
||||
<div class="col-xs-11">
|
||||
<textarea class="form-control input-sm md-text" rows="30" name="text" spellcheck="false" autofocus>{{if .Data}}{{.Data.MD}}{{end}}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-xs-1 control-label">Public</label>
|
||||
<div class="col-xs-11">
|
||||
{{if .Data.Public}}
|
||||
<input type="checkbox" name="public" value="0" checked>
|
||||
{{else}}
|
||||
<input type="checkbox" name="public" value="0">
|
||||
{{end}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="col-xs-11 col-xs-offset-1">
|
||||
<button class="btn btn-sm btn-primary" type="submit" name="submit" value="Submit">Submit</button>
|
||||
<a href="/wiki/{{.Data.LinkTitle}}" class="btn btn-sm btn-default">Back</a>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
{{end}}
|
||||
8
templates/wikiMD.html
Normal file
8
templates/wikiMD.html
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
{{define "body"}}
|
||||
<div class="page-header">
|
||||
<div class="row">
|
||||
<h2>{{.BodyTitle}}</h2>
|
||||
</div>
|
||||
</div>
|
||||
<textarea class="form-control input-sm md-text" rows="30" spellcheck="false" autofocus>{{if .Data}}{{.Data.MD}}{{end}}</textarea>
|
||||
{{end}}
|
||||
35
templates/wikiNew.html
Normal file
35
templates/wikiNew.html
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
{{define "body"}}
|
||||
<div class="page-header">
|
||||
<div class="row">
|
||||
<h2>{{.BodyTitle}}</h2>
|
||||
</div>
|
||||
</div>
|
||||
<form class="form-horizontal" action="/new" method="post">
|
||||
<input type="hidden" name="token" value="{{.Token}}">
|
||||
<fieldset>
|
||||
<div class="form-group">
|
||||
<label class="col-xs-1 control-label">Title</label>
|
||||
<div class="col-xs-11">
|
||||
<input class="form-control input-sm" type="text" placeholder="Title" name="title" value="{{if .Data}}{{.Data.Title}}{{end}}" spellcheck="false" autofocus required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-xs-1 control-label">Text</label>
|
||||
<div class="col-xs-11">
|
||||
<textarea class="form-control input-sm md-text" rows="30" name="text" spellcheck="false">{{if .Data}}{{.Data.MD}}{{end}}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-xs-1 control-label">Public</label>
|
||||
<div class="col-xs-11">
|
||||
<input type="checkbox" name="public" value="0">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="col-xs-11 col-xs-offset-1">
|
||||
<button class="btn btn-sm btn-primary" type="submit" name="submit" value="Submit">Submit</button>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
{{end}}
|
||||
Loading…
Add table
Add a link
Reference in a new issue