Working on CMS
This commit is contained in:
parent
e7457819b5
commit
8d6c4add54
@ -4,25 +4,23 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
|
"github.com/gorilla/mux"
|
||||||
"github.com/gorilla/sessions"
|
"github.com/gorilla/sessions"
|
||||||
)
|
)
|
||||||
|
|
||||||
func initAdminRequest(w http.ResponseWriter, req *http.Request) *pageData {
|
func initAdminRequest(w http.ResponseWriter, req *http.Request) *pageData {
|
||||||
p := InitPageData(w, req)
|
p := InitPageData(w, req)
|
||||||
|
|
||||||
return p
|
return p
|
||||||
}
|
}
|
||||||
|
|
||||||
// Main admin handler, routes the request based on the category
|
// Main admin handler, routes the request based on the category
|
||||||
func AdminHandler(w http.ResponseWriter, req *http.Request) {
|
func handleAdmin(w http.ResponseWriter, req *http.Request) {
|
||||||
fmt.Println("Admin Handler")
|
|
||||||
page := initAdminRequest(w, req)
|
page := initAdminRequest(w, req)
|
||||||
//vars := mux.Vars(req)
|
|
||||||
vars := make(map[string]string)
|
|
||||||
if !page.LoggedIn {
|
if !page.LoggedIn {
|
||||||
page.SubTitle = "Admin Login"
|
page.SubTitle = "Admin Login"
|
||||||
page.show("admin-login.html", w)
|
page.show("admin-login.html", w)
|
||||||
} else {
|
} else {
|
||||||
|
vars := mux.Vars(req)
|
||||||
adminCategory := vars["category"]
|
adminCategory := vars["category"]
|
||||||
switch adminCategory {
|
switch adminCategory {
|
||||||
case "users":
|
case "users":
|
||||||
@ -78,10 +76,6 @@ func InitPageData(w http.ResponseWriter, req *http.Request) *pageData {
|
|||||||
// Build the menu
|
// Build the menu
|
||||||
if p.LoggedIn {
|
if p.LoggedIn {
|
||||||
p.Menu = append(p.Menu, menuItem{"Admin", "/admin", "fa-key"})
|
p.Menu = append(p.Menu, menuItem{"Admin", "/admin", "fa-key"})
|
||||||
p.Menu = append(p.Menu, menuItem{"Teams", "/admin/teams", "fa-users"})
|
|
||||||
p.Menu = append(p.Menu, menuItem{"Games", "/admin/games", "fa-gamepad"})
|
|
||||||
p.Menu = append(p.Menu, menuItem{"Votes", "/admin/votes", "fa-sticky-note"})
|
|
||||||
p.Menu = append(p.Menu, menuItem{"Clients", "/admin/clients", "fa-desktop"})
|
|
||||||
|
|
||||||
p.BottomMenu = append(p.BottomMenu, menuItem{"Users", "/admin/users", "fa-user"})
|
p.BottomMenu = append(p.BottomMenu, menuItem{"Users", "/admin/users", "fa-user"})
|
||||||
p.BottomMenu = append(p.BottomMenu, menuItem{"Logout", "/admin/dologout", "fa-sign-out"})
|
p.BottomMenu = append(p.BottomMenu, menuItem{"Logout", "/admin/dologout", "fa-sign-out"})
|
||||||
|
@ -4,6 +4,8 @@ import (
|
|||||||
"errors"
|
"errors"
|
||||||
"net/http"
|
"net/http"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"github.com/gorilla/mux"
|
||||||
)
|
)
|
||||||
|
|
||||||
// handleAdminDoLogin
|
// handleAdminDoLogin
|
||||||
@ -44,8 +46,7 @@ func handleAdminDoLogout(w http.ResponseWriter, req *http.Request) {
|
|||||||
|
|
||||||
// handleAdminUsers
|
// handleAdminUsers
|
||||||
func handleAdminUsers(w http.ResponseWriter, req *http.Request, page *pageData) {
|
func handleAdminUsers(w http.ResponseWriter, req *http.Request, page *pageData) {
|
||||||
//vars := mux.Vars(req)
|
vars := mux.Vars(req)
|
||||||
vars := make(map[string]string)
|
|
||||||
page.SubTitle = "Admin Users"
|
page.SubTitle = "Admin Users"
|
||||||
email := vars["id"]
|
email := vars["id"]
|
||||||
if email == "new" {
|
if email == "new" {
|
||||||
|
449
assets.go
449
assets.go
@ -190,236 +190,156 @@ var _escData = map[string]*_escFile{
|
|||||||
|
|
||||||
"/assets/css/main.css": {
|
"/assets/css/main.css": {
|
||||||
local: "assets/css/main.css",
|
local: "assets/css/main.css",
|
||||||
size: 52020,
|
size: 52173,
|
||||||
modtime: 1503876786,
|
modtime: 1504035117,
|
||||||
compressed: `
|
compressed: `
|
||||||
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
|
||||||
hpROZOUncgVTSqe39NO7gjGl01v00LvQnNKJzP1ErmBQ6fRmfnpXMKl0eqmf3qVGlU4k8RO5glllzmf/
|
uaP74kC9OFAePl8cqBcH6qs6UFRLHXeuB6XSL+RC2XTSIJ1LOFE2xSRI8QJulElQ2VE4vXMdKZPIKkzk
|
||||||
dL6KYSVxQ5YVnGuLGcC2gjKBuQxYV1AmMEsA+wrKBIYiYGFBmUB/AzaWljnAyDI6c6iV5SvmNrN8pSA7
|
Aq6USe8mTO8CzpRJb9lD70x3yiSyCBO5gENl0puH6V3ApTLpzcL0znWqTCLTMJELuFX2eA4P54s4Vho3
|
||||||
ywfvNrR8pdyWlrcUYGr54N22lq+U29jylYKsLR+829zy9uloe0tzDPXaW0OtrRG2Fre0BtpZqpU13sZK
|
5lnhua6aQXwrLBMZy4h3hWUiowTxr7BMpCsiHhaWibQ34mMZmQOcLKsxh3pZoWJ+NytUCvOzQvB+RytU
|
||||||
RttYVokhNlbCbY+xNlaiWh3jbSzQ7uwxsdwmrpfgEBvZaV8NsJZ7rasLjKvLbCtpaoy3rHQz4xK7CrI8
|
yu9pBUshrlYI3u9rhUr5na1QKczbCsH73a1gm472t4zA0KC/NdTbGuFrSU9roJ8FvazxPtZ0tI/llBji
|
||||||
+8wqn8HrsaoSWdMBGMyqJnpdE9iiIrfJbIOKJ1/JnjKoxD4q17CmDHqRj94VbCmNnFCbQGqXWlIaiZWX
|
Y02l7zHWx5pCr2O8j4X6nT0ult/FDRIc4iN7/asB3nKvd3WGc3Web6VdjfGelelmnONXYZ5nn1sVcngD
|
||||||
xBXsKI3a0kvtClaURm3hp3ahDaWRmHtJXMGC0qjNvNSuYD9p1FIvtUutJ41E4iVxBdvJmL3eyXsVy0mg
|
XtVUSzoAgy3q1JR1intU7LSe61DJ5Av5UxaVNETlEt6URS8J0buAL2WQU2YTSu1cT8ogsQqSuIAfZVC7
|
||||||
hgwnMNOSKIDZBOTZExcwmoA8e1IAJhOQZ489wGAC8uwuBswlNW+AtaT331BjyVPKbSt5CkGmkgfcbSl5
|
CVK7gBdlUFuGqZ3pQxkkFkESF/CgDGrzILUL+E8GtVmQ2rnek0FiGiRxAd/JGr3BwXsRz0mhxhwnNNPR
|
||||||
CrkNJV8hwE7ygLvNJE8ht5XkKQQZSR5wt43k68rRJtJs8JHUi4n0YiK9mEgvJtLFJtLZYSOdr2wkmXRi
|
KIjbhOS5AxdxmpA8d1AgLhOS5/Y9xGFC8twmRtwlmDfAWzLbb6izFCjl95UChTBXKQDu95QChfyOUqgQ
|
||||||
L51rmEkmxchL8QqG0hm2lGB6l5pKZ9hWgolcwVg6w9YSTO8K5tIZtpcc9C40mM6wxQQTuYLJdIZtJpje
|
4icFwP1uUqCQ30sKFMKcpAC430cKNeVoF2k+eEvqxUV6cZFeXKQXF+lsF+nk8ZFOF3aSbDppkM4l3CSb
|
||||||
FYymM2w1wfQuNZvOsN3kEBzPN5zM+eyfzlcxnc5e2wnOtcUMYD1BmcBcBuwnKBOYJYAFBWUCQxGwoaBM
|
YhKkeAFH6YR7Sji9c12lE+4r4UQu4CydcG8Jp3cBd+mE+0seemc6TCfcY8KJXMBlOuE+E07vAk7TCfea
|
||||||
oL8BK+o80ow6X2ZH+Yq5DSlfKciS8sG7TSlfKbct5S0FGFM+eLc15SvlNqd8pSB7ygfvNqi8fWpbVDiA
|
cHrnuk0n3G/yKI7nO072eA4P54u4Tqeg74TnumoG8Z6wTGQsI/4TlomMEsSDwjKRroj4UFgm0t6IF3Ua
|
||||||
UdaWGxn2jJRbZ5sPONbUIcexlmo08L5I4zRL83s9M+u6bLPbk0gK2/Jc5JMb8kO+G7DlPnso7mgIOfK9
|
6UadzvOjQsX8jlSoFOZJheD9rlSolN+XCpZCnKkQvN+bCpXyu1OhUpg/FYL3O1TBNnU9KnozUtaWG32t
|
||||||
fV8/Fk2VPYXHw8PrtxMta/0Qfn98wFHiNCTHui1xvKu7oKuPZDZQijSaGQtqZpRpimOBo07Qv4xDLtAU
|
HCuHXO40S2fZLL83M7OuyzbbHbtJ4aE8Ffn1Ffth3y1YffVTVx9YR+bA/KI3cd+bVaYpDgW9MIL/Fcil
|
||||||
OBrYC0dBYjAbzN89tTxx04RlO63qDOuZJDYcmrgBnC4iQDmyjbBQ2QHVmlYL8xX8PxpuL2PxOVgYjB6o
|
LgJw/M4zeoGRgNnUTwzZFyFVXLaTqs6oiciuzSNjLsLT1a1QnmzrqqhsX+4yLhblK/p//Pq/TFytIW6w
|
||||||
fdsD0VceMUIig5S9nPSBIVZ6QPzZaoN39WmzI00lYpdF0SMJyoG7Z1vVH++CXZnnxYGVNIp+8bHJjkce
|
6IHatT0QfeUJI+xSj7KXkz4wwkoPSDgbVnhXHzdbVlXqWrckeWL3adDmeajqT3fRtszzYi9KWkXffGqy
|
||||||
QEXEFEH9vs02xfSxbMt1WZXdk4JGwnEa03bT1FVFTAyCV4Mi1cF2xR0NrlJlXZHmb6JJgP+TQWyzr/DP
|
w0HefaKuAyHt/pBtislT2Zbrsiq7zwCNhpM0Ju2mqauKeQcMrwHFxKEuwR2/F6XKumKWv02uI/r/HYN1
|
||||||
A3Jh9mkgvfJAwtm1RUUiDeKQZVlTZKQSfEoutsv5conLkcB0NOziXfCaBV58PQlef1tUjwWOR/cahwo8
|
2Af8y7u0KPv8jsFyz276a4uKXcJIb3PLmiJjQsjRtHy4Wdzc0HLszj5+DeRd9FpcBPn6Onr956J6KuhV
|
||||||
tNO2aMqtKMJi2c2PnUj6yNicRWR116PGKYEHgmAXf4X5wQHSjFAzdHLhDBJqLS82daOMPBY87SaTM0Ad
|
fa/pLYr7dtIWTfmgiohr/haHTiV9EmzOEzYxmxfqgTsDomibfkv54TevGbfEyLvVIsb3JC82dQN6nrh2
|
||||||
D6R62HhrgyJriymSXzVuC43IFIZyjdJn4zSG9HPxXROX0fg5+luQQD/3ylhZbfI4WxHScJfQqZPd7fCo
|
7SrTIwD2ByYe9bvaqMjaYkJUT03rwiAywaF8vfTZOK0u/Vx8l8RlVX5O/hbsjp570FdWmzzNVow03iR8
|
||||||
pHMFYOBODR5kzGmDlpnroksI84iVa32Ax4vVYm0NzWXE75WTsJikCB3ONHohjTTKQI4kW91eIJtTXMqA
|
6GR3W9or+VhBGLiD9/5YY9qiZef66DLC8jLPtdnB0+VquXa65k0ij4SzG0NZEd6d+dV+/OZTAXJg2XBl
|
||||||
kTuHMLFi86NAra0GHQwj7qeqTx0WGk/hI2Z80JZRRMgJi6tN1ope2cU4bOguIZ8p+ZyRzzn5XAQZUxIp
|
gK0rSS2DXmo6hImVGB8FqW14H2OcyBBTc+jAG/Tu5CofN35ZzQAVcqTqapO1qlW2Kb1RdTtlnzP2OWef
|
||||||
y0o0Sn+rI4w/GaIghLlXIuEgBsxCfSVmZokovO0rM7fLrPrKLOwyy54y7WntJCSVjaZAEr18JA1H4zlp
|
C/a5jDJh33GWwUWd4VonGH+0VEGMcw8usSEM2IX6SsztEkl821dm4ZZZ9ZVZumVuesq0x7WXkDY2moJo
|
||||||
KI6XoJiqOHZ0ymnRRp3xu77IyY86ntQxjZCF++z7utH3tlI+3MgiI6JzKnSZmkgJLXRC4PwCpxWw50j+
|
9PKJVRy/islAcTgHxQTi2PIhZ1zE6r16603OfmB/gn2aIIt32T/rxlyWmsnuxiYZdXEpoCssPE5oaRJC
|
||||||
qq2Ow9saiiZqoYd19iaeoVkoP8h0emsvcd/Up6ZEcuo/i49oZdvXhxrPwOLeMcwUPsWOnrVjGC4kg0cW
|
xxc6rJDlQvYX1jq9+deyEcVFlemcjEL9wYbTO3eK+0N9bEqip/6z+ERmtl29r+kILO493QzwqRbjnMW+
|
||||||
J2yQGnAt1vRexCyIdgIilDmWZuNMQmxKC21jetb1jZAEquXhTpnEYMFr1VgXFIwp2iagULwVUBJW1IIk
|
eKkZPIgrvgaZAZdizWxFyoKqJ+RyMc/UbG0nqPVkZW1MTqa9EbM7fOVNsEJjiHt94TUVHEwY2jagMrwB
|
||||||
qffc+PhzjSPbUuvja6IJfCieSFTlNmiP5eGAZeuOndBEv6FtUWNhi/U1uf+Ad1iNzJhm0nMj3o+fCDvS
|
KLsR1IFkqffSb/hLTS/95Y7Db5kl8LH4zC6cbqP2UO73VLduxeZK8iteFzVVttRe00sHdHHUykx5Jt/y
|
||||||
Dj4N5k/FL9jQSP0tNNR8CZzNZ/mcoL/5ESkeeXEmamwUUyVYKHB0+Wo3SP98E78NmrpDevCbKC8e3rrU
|
ke34lbAT6+DrYP5a/KIVTczfwkAtp8D5Yp4vGPqrH4jhkRcnZsYmKTeClQHHp692Q+zPt+m7qKk7Yge/
|
||||||
ZQ8wV7n6AIcAkWa5vTXqJW3a4fVCwkygTxcD6uYsANXPBTwU0Oh+X0Wn3lqOrOOIGg6sH1y7vtn8MoRf
|
TfLi8Z3PXA4AS5OrD3AIEKuW21tLLu2ODpeLKDOFfrYcIJu3ACafD3gooNX8IUEnQSlHyjhCwoHy4dL1
|
||||||
hvAvYwiDS8bL8H0Zvr+I4fsydF+G7i906DqUX1pAG8G/mLEp+6yP5UEd4gD3s+3tEBCsX5t76ZN/WZ+A
|
jeaXLvzShX8eXRidMl6670v3/Vl035eu+9J1f6Zd12P88gJGD/7Z9E3dZn0sD2oQD3iY7WCDoGD91txL
|
||||||
6slLf/yr+uOlL/59+sJYQNghtq0A6XsvupKg7NXMR4ELNUTf9nFit3eCImgld8viX1f1NLH2q6rar7Na
|
m/zL2gQ1T17a41/VHi9t8e/TFtYEQtfVquyzawCZay+mkQDWahajwJUZYi77eLG7K0EJNpP7dfEvSzxD
|
||||||
xCNFvMDLe3QpQNX3fFABU7fnKd1739d1tyOb4w9N9kQmuyZbTKjs0JVZVWYtdWfRt/r/iB5+T1+WKDPF
|
rf2iRPtlisWCSdS7zYJblwoUvqKDK5i6PU342vuurrstWxx/bLLPbLAbusWGyvZdmVVl1vJIFHOp/4/k
|
||||||
G9SafVbJZH5sqKSbx36Am0RfxRSXDm1/OA7nbRCTkw16XIxf4vcxa3L8xkDVYJMQ7EBZAJrHt4AXyicn
|
4Xf85Y06U71erNlllU6W24Yg3d72Q8Ik+gQDIR3G+nAaL9ooZTsbfLuYvt/wU9bk9GWK0GHTEGJDWQHa
|
||||||
qbu0fGpyn7Vm6rI3rZuSnAHN0dzgzrnWagdDqYscCOHPBYx0+Wqc77bxpviSJp6aFgPmxTY7VbQSwJGU
|
27dIFMpXJ2mGtHxtcj+pZHDam9RNyfaAFmRsyLhaZ7bDoeAkh0KEcxEnXb/V5ruHdFN8wxOPTUsB8+Ih
|
||||||
csDFrn0Itxf+rDnjmUJAO9LiJYxLM5G4MaOcrgqHM/hUih25cqrchZehsUSPNumkr5Y15zRJG4uuHzOH
|
O1ZcCGRLCmxwiRMbKuxFPhtxdLYSMLa0ZAnrvEuiDruA3VUVK4bvSoktV0lVRt8KNI7qMQadjtVyxpyh
|
||||||
RqPQ58TY4s8oqh7VqnsCxquUoGGhuD79RhkEETQEwD7lr1Cyb1QAfQf53Kmi89mSk6neOAhbG5SHbXko
|
aVPV9GPG0GgU5pgYW/wZReFWLVwTsN6ChHULEPr0K9AJEqwLoG0q337kHoZA2g6LuYOq89maU5je9P60
|
||||||
0SMeu1nT77v3Sck9U2KOIPWZyFhba84e/jf0qdQ1KEsjUm40vuEM4ZfR5cVjuSmmRzT+qylRdZCsYvca
|
Nir3D+W+JI+072ZNf+zeVyX3TI05gtRPRMZZWvO28L9hTKVpQTkWETiM+FYyRN8jlxdP5aaYHEj/rybM
|
||||||
YWVAl5thlOgvZ3z/Lvg7fU/s+9/T98/SE3f28tiwPRb45cniJb08wX/MT99KGxw1b6lstY7WKaYNeEYx
|
1CG6ShxJxI0BU2/GydR8r+KH99Hf+TtOP/yOv5qX77jLF5+2h2JDzBz1/mKZEN7m5y/sjQ5GtFS2Wifr
|
||||||
rvr8nRjiXRz8NlDdt+ir1Jj0VwGToYApDMjddVRQ/N6P40Q+z43nhUAF+f0Y6BcGesU/x9m8OihxVNMS
|
GaWNREYJrvrinQTibRr9OoLhW/wtaEL7Q8DpUMAZDijDdSAofWXH4Vo/L6znpUKFxf1Y6JcWehCf461e
|
||||||
EjMhNRNmZsLcTKAOUw4vJcKEyQV/oZ7BC5ycwskzOHkOJy/UFVhfhaR7kr0MQeuQVEaoc6TifUPja2K/
|
E5QFqhkJUzthZifM7YSFncADpjxRSowJmwv5LjyLFzx5hifP8eQFnryEM7A5C+nwJHcawuYhbYzw4EgQ
|
||||||
GKRgcPcYV8vIS05Mg7D766j538sFjM7GP+IbwWQKirvBLj8g8t5th0OiXUXIwwjwnQT9EDE14nb8P93T
|
fcOvxqRxMcTAkOExvprR55OEBeG218EIndcTGB+Nf6SHedkQVMd6fXFA7JXknoBEV0QswgiJnUTjECk1
|
||||||
sfjdazwyX/9zoices7b9WDe5lVHss7Iiqcxn+dWN5rRMhTKa6Rma+Bv5jmkpiqE8LICBdCit35Uspp5k
|
Fnb8v93nQ/Gb17Rnvv7HtZl4yNr2U93kTkaxy8qKpYqY5VdXRtAyV8pkpGdk4G/067e1KsbyqAJG0rG0
|
||||||
zNmtQWvHqb3TX/PNkdmelHZbIwUfy9070+uN+0M6XS91HYaMHbvd78rDIxIL+cTIlR3ggmA9oWbTLlFT
|
/lCylEeSiWC3hswdx/bOfAO6ROZGUrp1TQx8qnfv7Kg3GQ/pDb00bBjwDmYZ6af1FtIed+X+iaiL/NrK
|
||||||
eN/wNO7xe0areJZjn3TVURTib1tvTq2HOzCf8yYyGWfiWfBFUmyuygN+ST+7BY9dFKVjM3E9o/imqs+/
|
1Q3jgxAtBLN5U8EU2WYyTUYCn8jsnuU0Vh0GkGL8PdSbYxvgDs2XvKlMwZl6VnyxFJerct8WnTzYTkMX
|
||||||
sx/sLgWnO71foyP+te0x+KpnL+2ajRgtV72Kf8qNP1VPSYUVV+Jlb1o8IpStctdQ9ka2buvq1NHkRr6K
|
dcAzC0nj+CbwLIC3fdymRtUAPzJjIv6lrT2ExHOnfMN3TG5WvQ7BTDqF0H6ZKe+upNPhpHgiKFtwfBB7
|
||||||
1W/uaRaDFg3bGCVsEN5hcVOcjziuxE9ajdS5cD0Rqd1qke/l1MSmGT9a6jQq5s2u2HxA08QiiYVc/fqf
|
/ztJbvTbVcNuoOFJGBdcW71EdMI7qoaK04FeFfGjIREcC5dTncZpF/2qTUOd2ldCa50BMW+2xeYjGSYO
|
||||||
n0cCA8uR/r5fthqyDuSRIXQDkAtHmqebd5YokvVG2hhZKU2BwxuAZdN+dUoE4GqN2Ppgw1Qf6uWBDGlw
|
Sar86tf/+Gk0MzJNma/wFfpPNKC87MF0DKXS5Hmm2+eoIi03sdLYDGorHFkBIpu3q1cjIEdu1JKI6KZm
|
||||||
B4TvUkDXani/8vt/4dzw3uWNFCl+vR4tzd8o/DqaCWk0jjbrh0q1wWLNL9dcgs0p2YaItk/XOIOVDZ9i
|
Vy/3rEujKyNy9QI7biPbVR7pixdWVK+spATE+wast3ClyGNqNqRVOcaoH6rVBqu1sF7zKTavZhui2r5e
|
||||||
ag0euVHC7Qh9q8Ry+eZ2nlNWuuSjKiDFlBNEPfPsjnwtcqD1gMZzQLNl3bmhROfglvzY6020+RLUSxQm
|
5Qw2QkIGq9N59AKK9C/MJRQnFFz6f15d6dOPUEGqIaeIBsbZHfta5EjtIZXngRbTunehiY/BB/bjzjfJ
|
||||||
qfIwjEUIdrTeMXDgGKqnogGixYfNI4JqikbIptjVVc6UGH0Rdu4zhFyRvyPT99lYroQGryLXqVeIJzvS
|
5hvULgFMcuNhGIsY7Gi7Y2DHsUxSsbpFEZDJR4wjhmpCesim2NZVLowYcxL2rj/E0sC/Y8P32VguhIbO
|
||||||
yX8snosKX32uz+yd+airtQs49A5MAl22ERdyEuMeiXrBhWLUXu4+AVPHwwCvjDc5U+IyIGRhVnXqhT4+
|
IpeRK6aDndjqPxTPRUVPM9cn8Rp80tTGwRx+NmaKHcJR5vvUOl8CD75wjMb72q/R1PEwyFvgbc7AVQsE
|
||||||
7yE7SNE3pLX6H2j6sXYq8VevUg1eBfVq1hjnr06fJg31VRAqWgeoTVJI9b4WoEaDtwbp2qYU11co9ShG
|
WZxVHTzoJ8c95h8Be0N7sf9Bhp+op5J+DRrV6BHRoGVNcf7i7GlWUd9GMbA6UGuSQ8JzXIgZjZ4m5HMb
|
||||||
3AFi/Ymv2PMOJd/VoR9pqpy5Rvn6kVzwd0l4571/Q8BfdojgWP7cBwcKy0G5f3A1vQIWihtSplqr9A+N
|
KG7OUHCLRp0NEu25yx4L2aDsO+z6iWHK2XNUqB0pKstzeN6WgWdS828TAEaicvfoq1AAFqvzULaxCmqd
|
||||||
CCb6iF8W1KNIUXTyehTHx69G2R0ub3F5EJJoCIGNXY2Qp1ReqxZqAqOoaBTryEWluS27QaNWXA4E+0HF
|
X92lal4eDTSve+Lo9GEoiU8ehHKbUZ/ZCiBkdx9ELnZ4lR0Q3hCLVIFVVFWKs8ECaT6U3aC+qI4Cou0A
|
||||||
5qWLb4yVbUfHbk3nVYUS+AxGAqlkU9V3NZFH0eDNSJhA6KqS7YdqYHprnwCqZdt7G5KTlPRObnpq554q
|
sQXp0vNhZdvxHlnz0VKRBDkuiZopxQAMHUSU113AN/pTdFUpVj8NMLO2jwjVsu09+yhJanpHPz3YuMdK
|
||||||
Kb9VotJK1gvLRmUlOREumckIAi+T2lc3FSVaorvblo2+/Oi4mVYpGFMTeZWw1GK7O9DR8uiKUnyiqh4V
|
a2VIVPu+ZmFdqaKkJCL1LetB6NFR96AmMI01uruHsjEnFRO3sBUVYzBRikR1kVizwTaSRwvK8SlRA4Yz
|
||||||
W92n4/dTjWpyZNYya1tnSq10PuxVzbhnLTR3rUmmDw3fi/O1gS32bJNQR2k3jdImpjwzXkSmWQlzVQoA
|
XJWTp1EtMSUyZ/J0fS4glcmHO1dZp6qVPW5UyeSxkStsoTpw1Z7r6Jko3aoBdWLrM+uNYYbtv4BaAKEi
|
||||||
VNj1cHX+g43EC9wduh1t4zfJAenM8Vs5pkz1mwTlozo4G7aTwEoaRS19a/SR83zBtuPAprSPGPSzIL7p
|
DoPD8Y9Wkixwt++2vI7fTvfEEk7f6T5lG9Xs9jxuWYtuex05SaOozd5ZbeTdTXC9M7Qq3Q0Fc+dHLmX5
|
||||||
5bbYLLkH9ad2JsJiQyGVi8YVGXQWIoQLOQK85lzkGMfORmUu3iAFAUctqbjpui/znKl9ijgShEbOVFk2
|
/TBH72HtaeyAiEuciCHFbxEZtPOhlAvb8LvkWJQYx45GMBavngq675hV0iHdlXkujDmgjhShkSNVl43Z
|
||||||
JOGSJKtq3EpAOigFOYf+mWXFh7VEqo0Okq9OWerkSUTGhK0DT43cbSJjiPbUQqAYVxcFk1AsZLN22Zrv
|
vUaaVXjBJKIdQEHJYXhkORe5OirVRYfpV68u9fKkrrDEbf6ARP460Zd99kihUIyTBWBShoWu1i5by5Uk
|
||||||
OWlhrYQ7kCkdb0iJKSpcnzrVn4RPMcTp5g3xSPwt7qC3jlphXkRrGPxMN0VV6QueEWVYYARQKp3k6CWU
|
4/4pFfxja8crVmJCCtfHDkaPyCFGON28ZfGHv6YN9M4jFeVF1YbFz2RTVJU54VnXASuMCErQSJ5WIukk
|
||||||
jhIZvzwNZJG1ud7nrIUiudxAdSfZb33MmmPCHciWocgr36km0uP+gVuPGSG0JdUzm0FxF4CIBmT/nGB2
|
UfAr01AWRZ2bbS5qKNHTDSY7y34XYtbuE/4bZwWKvArtYRI77r9p7QnXgtck3IkZdMsCcn8BWxVnmH3U
|
||||||
UYdO32iJjviZdo1uK8OakhYwQzenFXlD21LH7lzv7Jhr/oAYGuu5pkiK0wLjPZEMeKef68jzZPD4GDw/
|
LfXKxOUlOhZV2jWmB4xbSsb1GKaTDPQNr0sTu3e+cy9HC19/YbCeG4ak2gOwXugogLfmbo3ePUY3i9Hd
|
||||||
1gWlQkvdsAYiSeh8FFmuNrYR6sTYfVFLbpGxr5VUlFpnMXMfBDdzlR1bVNm2OGZN1hVGp5ESYljwRu4Z
|
YlNRAlpwGRq5N8Lko8hyWNnWxSbWmgos+UBceKMkMGq9xezVDVrNVXZoibBtcciarCusRmMlVLeQldzT
|
||||||
GurYMCauZFbPYHMOpOnRtlUKMVc3XOxreIyqqBxxRBYe2Vtmd0VwAdlJgHnANuBOCAPbW1K3UNvTel/a
|
NWDfsAauZtbMEGMOpRmwtiGFVJobPvYNPJYokCOJyMGjW8turgQvoBsJcQ/EstqRYBArRnBhtD2ud6W7
|
||||||
J2tNgbRAK3VNkJBk+nWCN/QoZiJLPvW5lxXBzJzKQHCvceHLnofQiF32LGRXQ2SLOyWyGAHwuGmwB8/2
|
X9YUxAp0UtcMCUvmX6/pMh3HzHTJ197Ncu4rs4cycpXXuMvKnofQuqnsWcguhshVd+AeMQYQCMoQD4FF
|
||||||
vJyQupgzNuuAwz2ntgrJQeMs2+3zpp98h7EVhIhvJ8MHNs7tVp8v3c3HXdkVhBsyWvECew+covLZRmO/
|
dz0gTTVnLcEhW3ZeaxXTg9YOtT/CzdzPjlPnyiG5SIxvw3gXUUORc1eftmVXMG5Yb6UT7D2yNypHG7/p
|
||||||
WeckdNLBmXzuyVyaIp9DNcHcFhy40nm70F0drL882uc+rD5wrqiQzGYVkAmhljKuTvGzqkQsQEeFwDxe
|
zdn94IMOz5RjT+fyFP0cwwR7O2fgTBdsQr841H55cndzhDx4rhJIZwsBdEJspIyTKX2WSMwD9AiE5klx
|
||||||
HZFJE8RjqDxDe1FxmKoKhJsp5ymqwpwLRmNSBVKYU5NDO51bwrariuF0EKl74Y76IH3X1cZAluCe5THm
|
VCZPUI8xeMbWotJ4Bg0IP1PevVHAnA/GYBICAeZgcuymS0/YDUCxQgkSuMLtkYfYu746RrIU9yJPMCee
|
||||||
2FMoH8dt74MbpSC7RDV3MQxmCpZFLuNSPIdqAtukBtxc3UytywcXS0CWYIjlMersKZSPFivGAIUbiLk3
|
Yv04btEeXShF2WWmuY9hNFOxrHIFl+o5hglikRoJavUztS4ffSwhWYohkSeoi6dYPzqsWB0UryARzOyr
|
||||||
u5oIzpaNJPN5q8iUUE9yCQPluNg6hbNd7owjcEg6eGsqpa+vwg4os94KmF5XJSOEcpx2zRe3Rb5aLxSt
|
IjxbV5LOl7WiU2IzyacMwCaws7fmBtJZG9uYdghKqrVvSGAPlC03ADNlBRkxluP1a97cFvlqvQRWY1AY
|
||||||
0VsZKXi9tXGAWdVR4AyulRyzQqqoh2q0zDbZbTawRoME5hBYs24uAerKDt35hkDN42KTb3rkJhJtWPvP
|
rXiD0njAHHEAnMU1yLEFgqoek+gm22S32UCJBinMIbC2bD4F6suO/fmWQs3TYpNvevQmUW3U+s/FXcX2
|
||||||
WfRiczkW2Y552JPvLC9aoQ9Aw8CqbidpUCEAFhpwzjlPncise1TGhHdF0bUnPrg9K73nwmTOxAOyrP6S
|
dKyyPeOwJ99bXtVCH4CBQYjuJhlQMQIWW3DeMc9Dw5xTU9aA992Z6w58dHlWx8TF04VQD8Sz+mtW7qPf
|
||||||
lYfgD39iGyz7DO8sPUhzSFXjGQa8NDIt3WOJuIENK8MJOAhoQIx5MMi8Kz78+ADxgyLEixDx1um0sjOk
|
/0kssOwyurL0qN0haMYLDHRqFFZ6wBPxA1tehhdwENCAy+BH3QY//jr4QffBqwvhnd1psDJkRi0ip9m0
|
||||||
+zcC99ukWWys+YD3I+/KUJVIZpRHMQBk71NnUvfhPYFhx7DHBv1tnrxeCxQeHzSgL1zWC2sGbwQRr4Ng
|
W2zN+UhMo2zKGGok+05H1QF06/MQUf+WPIMR27CHhvxtPgdjETg83WggX6SuV94MXQhisQTRSn27N0eJ
|
||||||
Jb7d67OEKcjJfD4J5EcU3jIFGbLu+FmPub1jsaMLMdQaeBOVdxHZ+aRh2INpEOMjrrf3uKlohw731vMc
|
MJCni8V1pD+S+FYYyJh3J/d67OUdhx1TiZHaoIuosonYyie/dD2aRCnd4np3T6uKN+jwGLzAJsUVupri
|
||||||
UtyAuylWq4WMXP9Bia7Fit2eASzIjV5UWfyCPMkQ4+eh7urpARmSivvNKDufYLxo34KWHLtBQXcXR5cY
|
1FosyPVvlJhWrFrtGcCCXuglwtI32WmGBD+PdVdP9sSRBEE1o/x8hvGsdQtecuwCBV9dHF1itN8JCvCQ
|
||||||
bXf6316RNfiFYu0j92EBxZAldyDBc6jZV0U/NJ0Ebb2Rbr7xA0WPx8wMvHqt7UjMtLvW/NggMUIHa29I
|
lejYVG9fs+/th6yhb/5qnx5fO9B6oDl6B1M8+1p8BfahHfrn2o188U1uKAYiZuboQWtjRWJunKyW2wZT
|
||||||
cLnc4A0JLLYOClp4I8K8RqVNEjEoe5RJv5lNZeG3hYwy/AW7wPeTIrRX7I0Mjmjdzht6DJd6GOt0ZLKm
|
66Jg430IvpAbuiBB1dYeoMUXIuxDU8YgUZ2yx5gMu9lcF/650HcKvxHH9X4ESnsl3r/guZvbex5P4IKb
|
||||||
tP0+CPdkVqkFSgVu1EawRClrAzcL3NbnY4n7//YwYnKC7yaaSYmdlNpJMztpbictrCT+ugAjeW1orYoH
|
sd5AJmdIu29/8A9mSC0CAlzBSnBUqagDPwvS15d9SUb19jBic0JPItpJUzdp5ibN3aSFm7R0kuTLAazk
|
||||||
Mch4psOrcfPZlrxZQBuMfjPN2Vi2g55wCjD8u6V7t+5LATPHL2caR4BavHoXV0d3y8HnP4KjGDoU5thN
|
tWW1grhglPHMhIe35IslebuA0RnDbpq3stywOxUUYEVt66BtM5YCZ04exbS2AI3b6X1cHfw1h+//KI5S
|
||||||
BWHM8q+eLeiSyzj9XYZW5HPp8QhLKb0NFC4B31r4YNaJQT150A5v40RzwvzrDgm44E9ZVaExV7RYOAXB
|
bFNYYrcNhDHTP9xbMDWXtft7Ezv3nOs4RlxLmXUAuEQiZvGNWS8GuPNgbN6mUyO08r+2RMFFf8qqivS5
|
||||||
Fw/kGate+O0pkDwSb1UxJBJ+pQrOEyhOVdjtTvv1ISur1uVShEv8/EovqBaj3ngB+VH8CEnrsrK4GWCa
|
oqXKKYrePLJnanrRU4CYPlLvULE0En2BCs1TKI5V3G2Pu/U+K6vWF1JES3x5ZRaExXg0XhTxM4kqjpDV
|
||||||
5LQ4YD+GFKKDaICSZ80q5qwk9kqUO7xz2xFApoFujB7e4YM3v+0GXPi9cTqB9HMwyDVKNsRYfJbzk6Xr
|
rihLqwGnyXaLI/FjaSHeiQYYec6oEsFKaq0EnNhduIEAOg0NYwzwjm+8hX035HjvlTcIpJ+DQaFRuiLG
|
||||||
y/vKdScW0C19wGVUtVqsY5pnQCwdIccurozOACMj/RxGBudHqf6NcRVg0HI8xG0ZvrQDus4abJG12EhK
|
4nOCnxxbX59Orjs1gT7wB1oGmtVqHjMiA1IdCDl2chV0BjgZs5/CyZD8APGvrAD/QdPxkLBl/CgOGjpr
|
||||||
7KTUTprZSXM7aWElibVYT+5fi3X4AWuxUeCStVhHgYbW8UnxlAb3uOEX+VjORjCTCgXpOwO8bQUPOnjU
|
scXmYitp6ibN3KS5m7Rwk5ZOkpqLzeT+udiEHzAXWwXOmYtNFKRrHT6DSGl0jRt/bY8TbIQzCSjo2Bnk
|
||||||
JMwvx2ccaicIiuNRr0eSj1tI/kF+L+aCLFIBH0EhUP6MSjDvH/873eOF8lJ3/W2FNwNelaafFSRHOaDY
|
3Sq00+G9ZirickLOobGDAAKPeiOSQtxi+g+Le7EnZJWKxAgqhfIXUkJE/4Rfvp4uwdvXzdcKXg14MZq5
|
||||||
LgmifdoPYeRW50PbX7vRd9ggQfqzWk4tBG66gL6EaifPDO9seD9G9+NN2XZMyuUkGwX+zRPHokAqo9pV
|
VzA96A4lVkkI7eNuCCO3Jh/G+tqVucKGKdIvsBwshC66oLGEsJHnVnQ2vh5jxvHOxHLMTOpJ0QvCiyee
|
||||||
sH1imRi3xnK80lZjl95oqHwz7hmr1k9rZnXButGWLH3RiobMZYsbu11jtV0dsmBYWbGmyCAkzigkchz/
|
SYEJA/0q3D9xXIxbazpeGbOxz260TL65jIyF8hnVDCesK2PKMietZMhYdrhx6zWF9erRBcPKqjlFXzni
|
||||||
nZzTDRjGy3ThnE7sdWCO8zXfEPaOO3knJpZrtGPsGbMBkkHW2/cT5a6CYw+hd1rCI5mWMncJDPNLN7os
|
vXNE9+O/s326Ad34Zrb0Difx8i/P/lqoCwf7nT4Tk+o52tP3rNGA6SDnNflTcFbBs4bQOyzxnsxL2asE
|
||||||
YIexpg8G2DfXbTuCkfacxY6mjynRTmOzmHPy+UQAPNEuHBB0LP/34ME886wNOFDWRIYO1UyxNInUfVnt
|
lvtlOl0OsMdZMzsDHpvr9x3Re/W8xQ52jCmzTlO7mHfwhVQAPtDO7BC8L//P4M48D8wN9Fqsa31RqOGK
|
||||||
VpHtFO+4yAT5oVsNpi7SLjPAeUfbdRPAdH6HFmrIyRouDjgh46palo3NDeCHbLoJO33HIT9jn9O4r0KO
|
zaYJXJc1ThW5QfGeg0xYHLpTYXCS9rkB3pPXvpMAdvA7NlFjQdZ4cSQImYrqeDYuN0gcsh0m7I0dx+KM
|
||||||
my5XNS4TnXu506CnO4xM6xrK57ItL7ttY5mUo6/ReCSG6vMJHyS7zsSd59/KWbd6rm3dX1C7xOte5Xew
|
Q0HjIYE8J10u6lxOTe71SoOZ7nEynWMoP5Vved5pG8elHH2MJqAxYMwnvpHs2xP37n+DvW64r+2cX4BN
|
||||||
6nGxspysIDcrh3p88Rqr/F5rfU0cq+ulUh9msc8k04yvfquw3+CKTHsKNKQsA0rVuP4vAAD//zTWk240
|
EgyvCgdY9YRYOUFWWJiVxzw+e44Fv5eaX6ee2fVcrY+z2OeSGc5Xv1fY73Altj+FOlKOAwUtrv8LAAD/
|
||||||
ywAA
|
/4QynrDNywAA
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
|
|
||||||
"/assets/js/main.js": {
|
"/assets/js/main.js": {
|
||||||
local: "assets/js/main.js",
|
local: "assets/js/main.js",
|
||||||
size: 4426,
|
size: 0,
|
||||||
modtime: 1490366569,
|
modtime: 1504030875,
|
||||||
compressed: `
|
compressed: `
|
||||||
H4sIAAAJbogA/6RXWXPbvhF/pj7FRlWHZGJRchyniRO7h5uMPVM37sTpU2Y6EAmRqEmAQ0Cy1FTfvYuL
|
H4sIAAAJbogA/wEAAP//AAAAAAAAAAA=
|
||||||
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
|
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
|
|
||||||
"/assets/js/util.js": {
|
"/assets/js/util.js": {
|
||||||
local: "assets/js/util.js",
|
local: "assets/js/util.js",
|
||||||
size: 11847,
|
size: 1,
|
||||||
modtime: 1490366569,
|
modtime: 1504030883,
|
||||||
compressed: `
|
compressed: `
|
||||||
H4sIAAAJbogA/9Qaa28ct/Hz+VfQqpDdjaWVEqAooGcd2U0C1I1bK6kFQwh4u7w7RnvLxZKnOzW+/94Z
|
H4sIAAAJbogA/+ICBAAA//+TBtcyAQAAAA==
|
||||||
vpb7uIcNo0Ff1h7JGc57hkPGk0WZKS7K+DAhvz97Njr5+utnI/I1+Z6VrKaKEVoSXuasVCwnBZeKiAn8
|
|
||||||
LR8kmdRiTigp6WNK3jBaKjIRNVlIRpZczUhFS1bESarR/bVmalGX5Pff/rlg9dOamL9EjH9jmdJrTp6N
|
|
||||||
DtNJmQK+v+M+l8TTZkgbPdJ6dKhmXMLcYYwfyTkMjw4pDuDvdAK0xhGNkiOcGMP4h/tzhD2kKaPZLO7i
|
|
||||||
HEKqYUeGaxh9Q9UsndNVfHpkd6loDVMyjgoeJWnByinwe0y+sZCzmk08RVSpOo5wyBI1UrSeMtVZYAaj
|
|
||||||
RBM7GqfVQs5ivTy6oCQiL/T3KMoKKuXlAWqA5KxSs2OYsxqCj+jAL41JrJ4qBuqyGz6/vCTRAlaCkFge
|
|
||||||
ka++amZIFCXkGvYxI5eIxs0arGd6SQ+35nUAsx33ePG3wapn+jijq4bJCwnGQyyrhrcum1cXJ7ioATLC
|
|
||||||
VGylYo/y4oReRfhpxLo2f6wpjtPfBC/jyMh8fR4Y/1s03WM+eULrZwWbw67WjkH1dE5+N3a7Rmuvb0Q5
|
|
||||||
4VPyM3ySTH9/ss1rXwktvsFr7fTkhPxDOFrkNTLFJ0TbqzNAUMJpohm3G2uRnFvoN4tC8apg23FcgRFb
|
|
||||||
xxihN8fgHoRfnp4TTi5IsBIGXrxIrOg1ig/8PjGMhNQbe+5TNFpbun6htUy3OuLhWORPejDCL+dGh0sw
|
|
||||||
B7HUE+bTOW7e8S2eOxijHieSG6csN4FwKVgQgyBihQDLXrGCPqWG1Ry/z8jpkZ/9gefMxDoiSh0ZwXB5
|
|
||||||
9mABZjD9U3mDI2dkQgvJNoEymdGKkQf2VNVMyhb8az23A4Fc8oq1wN7hSA/qX0yCV8usFkVBKiE5Whwi
|
|
||||||
QCALX+Oad3rJBniwjrkcgvobTvSA3iGpEC8eOVtWolZgS470JQc6aFUxWls8EhafkXJRFA2CWxOMrPXq
|
|
||||||
VHOgI8SBBTLR6sxovoG7wTVECfjfdFo4Sh+55OOC6UmIQvZnZCzziPQMGBC9XgG5OTkw+xwQcB2uIklK
|
|
||||||
oSALtnyb0KJmNLdGo33MREsbHoKwa+Ai60ntebTs1kjiLFcHqNRR9oapmcitxRjD/xW1EgYU9ghS866N
|
|
||||||
UC8Njag/iKrX5DvKCysdTfLz1tbpjEotLUdRKMHEku/8/LzZ5ceJjqG4O1lSSapaPAJp+RHJaJmB9rkK
|
|
||||||
N+2QORrpgRQ8Av++YhMKYSw2ab+ZlkpUb2tR0Sk1ud0RYKJM4yxuqzZrNZuLR7aZu4Cdt0KqYy1bqRaT
|
|
||||||
icNn4k8K1n/L50wsVL/O2OZ8Do2RgSUhcEEvXqdeA38rqvi04bXjm5uRag/t4TSlE4JCTdOvlfzqkV6t
|
|
||||||
EQWK8Nl1ZDzI7qfjpZtYe1/6BSIsOPCEr1hotgY8zUAP0fFcHoNW6kkhlsdSPYF3HhE9ShdKgAp4OT02
|
|
||||||
chjT2jmQhV2y8QNXAbxeBxCIQ4lFNosax9ZRVJRh2A4kFgTwRpWdYtOy3d5c0QosZTor4P/qOBOFqHH3
|
|
||||||
ejqmUEnq/yaRl1nA/ygFkUeaGgSg8M8mN9ZZk5j6N0yZ+B9XhdKBElSr0QcZOliDOjk814g+fjSFG1Z6
|
|
||||||
f4paP6PuJBRqeWNe7ZBgYrJxfVHzKS9pYcJDY687fH6n07dTY4M3CI1x121yXmPghjyBnDQwe3q2jfJW
|
|
||||||
pCCGX8cFLR+iwMscKlGxMsZNQudhkCz7SwuRad5Sq0v809DddTOQ+zdBOPD+uPYZDOV2Rm7R/sP4ZeSC
|
|
||||||
RqddQwIbaovR2Uobl0I4fA90GYU4deptzDyTH07voSicsvfnQ8B3+wHfOU6SZ0MEY/TeQi9qpkcz6Ajr
|
|
||||||
C7Pi48c+XXaBU2DbirFWzflk8t5Xmg3q473E4fwQsdz1sNzth+XOYcHq36IAE2X1DwyDTuy9XWFRbYUA
|
|
||||||
FgpZw6YQsxB26+aVJMx6LkLqCvM6SNetGKmrzW5sgjwB3ouViKkHne2OBZwXaY11/benzTAYssJo9ufT
|
|
||||||
xs5hVwUG6zbD4rDlehmVjEQFm6jorPEhv3FsRHxB/JZwPDVjVyQ+/gZOam4mSXAuNpq9IpqY0EvHUDE9
|
|
||||||
nHd3rlGEX3TrCztpCNhNAUTCzfu/H9j//bb97/ZnfSyUEvMvuvf+vOcmM5xtXLFu5TFDWcty+pEMXf58
|
|
||||||
w/zdhvleQnGnXW3yA+QERelbk+QIFCqKZ5AKfaUCyUuaUxJoF1IlMbIOi+W457QgvdPGxi5cPwAjHGQn
|
|
||||||
iZLXnapvtcRh4EIPvLADTvunyZcvwdfBScrkIcd7BrxTbg8JkvASPTw4H+o+43gxHqNYuhlLl0nExEU4
|
|
||||||
nTUJjGxPDdtJHyY4OG6D+CnJZrzI4XiTzUA9ioLKBC8V6g7KCA6s/PiKcGnqSpYPUq4LvA+mOWYrJ93e
|
|
||||||
ut+Sz7bqY4c2Puvgs/bnzu8EHmo3SgVShO7VaNZOoAC2POPggLY2KyZ0LDOzSSe3wam+s88fK1vTbvgE
|
|
||||||
2f7b1HxD0gW5vn53s+FoYnpDrhXnikwQwgN7gs9y2/HBH7lTWHwjsGUA+fgvvmod0oOZa/dSfV+v1UZ9
|
|
||||||
WVXFEzmoCpqxmShyVh8QPGnwMdQo4CzF0wRbP+AsomQY4uaiZv7w+okd1GaTgZsDNN1aLLFDW4LWHhnQ
|
|
||||||
JRcVNqIkCUBl0AYJ2jZxLrKFbgJnkGEUe22aUHHEy2oBB6aktf3zVjO83ZF1txbP/n86ug1n8ad1c0nv
|
|
||||||
rsasuWUrdaT/fQnS1KvD87SW6QeU/CV28++P8F8KK60oN9zjmC15ZzsrEJ4+0gKW6uOqq/kJCYa5PQMH
|
|
||||||
7Ea+rcWdP6Q0z41LR858j1sQfiEiHsbZnGX0QvTUcbGoQzfdkyeDvaRzFiXpnEKRHJ8ce7omnBX54Uky
|
|
||||||
fILpSeV/xesEXEn+sczuqeswO+4jgijqB/W3ALwUdb7Nyiu75v6TDdyPrvRoU5fG0UXOH6/C9kOKHXbY
|
|
||||||
madZAeE2TsI5w2ocDs3UvIjbazTr8Ykm+sBRfXDCsaemx9BTD6LNQA6mAUEIBzCocLy7sfeIFu2qmTki
|
|
||||||
rWWQ3DsWEW0xomGseq7Ba5duw7za11G0kawGbS+Foheq4JcTOLvHfHPo8kaaujOH/hl0j1Zp+zTizHkw
|
|
||||||
zuzdbXfzzta4vQKPk5Y5o7QudaW1S3z33S5jm83wkNbhVfMoZ2IZ0rXuNb1Gq5DxXtD5LM7R91Y7OF+1
|
|
||||||
A5Wz/575HJmrbxK1JNHVXhCORpbp5rdmKjxoJSHL7h7xs7j25LTjWthU9CFOF6qyCXBNqJeL8Zyr4Vi/
|
|
||||||
NeMPBcduGdCLk4Ot8YF08nkJBe2wFSGiLRY8nGDaRr1HdjkPlncVMWDyYZbV1zOfcc7pK0dCdZmpdhCD
|
|
||||||
/CIqRHs24bWEScP6ILzW5U7lbdFb0xxcBQLfT35uuWshmn7OUzXUQLTWetYZNpLc3GSyy5ydhit5qzKy
|
|
||||||
7apfaLFgTWlkGPviIXVDUB0FtHWjahhX/dC6+cQk00HRWx4EsADFLtllM5Y9jMWqL3uac9GWqBGChmBh
|
|
||||||
AdCT7o49deHR3c9b6ecocafAd5UJ563V24rqvWTbb4/uYGUTpvWG2L/17P8GnFP6kymc8U90Gw+7ejpm
|
|
||||||
+Ltvia9CYJjru4IKYg0cz4l9Ydd+dOW6AIce7Wv3EcPJ1kQqUSfYUcDg0IYeC1Gs8cIsNw9efoRt6wU7
|
|
||||||
0ktbpLqua0p+gq96yWV/1ZjqRpal3N9kuhs72TQnqprDtOL/ab3H8DwcNSQ1zxzxFRDBW8RfG+jIJ1zz
|
|
||||||
EKWRQuslin3VQXu9klZHowHuPUJppjAE+18+379TrAK2a7GYzrw8TPr3vzYEd/3EiwWhnRxWNrwfGo3j
|
|
||||||
HPOR0Nqb6ZSYwdY7FX2zZ8b7LZPOIVAjUVqN+bU2z+bpib7mhn1zqmgMog9ztXknZm2GS9PUb7+W8c9l
|
|
||||||
rBq9J3WuvgHV90yF/SYSL2ccEpN+AgUnACCKgkMsatNKRteo2YQBg5lujJHljJW6aeMfQpWM5dJZvDbL
|
|
||||||
xNN1WFl5Qp7v3HjfiEWRl5EimGwILZ8AaTm91g95ZWsHMCxvVP5C4ohIAZsFMrDKGNLDoCS0BhwT+nlW
|
|
||||||
hexabXoONPF4cL0VTtVJCw2tHzwakJ3WbwjudIq21nQvvU0gGblj8Lo5Tm02AAwaA/rfrX6nDW9lG8Xh
|
|
||||||
ggveIfRCC4kXEu8YtJU0ppSETIfHyYBt3Ojncr5LZKa0etUl0wht7Z/LrpPYBI7k/L8BAAD//3lkblNH
|
|
||||||
LgAA
|
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -12460,58 +12380,74 @@ lY3tMICOnnX8Awz2vM6lVuNVnm2WLCqmCXaoUGbgP44xzSS2SeTwR1ZE2IejL/4/AAD//2qGqimCIwAA
|
|||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
"/templates/admin-adduser.html": {
|
||||||
|
local: "templates/admin-adduser.html",
|
||||||
|
size: 918,
|
||||||
|
modtime: 1504035138,
|
||||||
|
compressed: `
|
||||||
|
H4sIAAAJbogA/7STyWozMQzH73kKo/vgF5gZ+A7fuaHLuThjJTF4w5aT5u2reJZkcgiU0pOt7S/9QGoz
|
||||||
|
DmSCF4NVOXegtDMe+o0QrTan2TsET8p4TDXCsX1Ibg7GkrCpjuXXKGsOHjUIVdU7kFVYlowpS49nmdUJ
|
||||||
|
QTikY9AdbF/e3iftq7pBqzPS7FgPU7tcJ0rBNocUSoRbIqdatUMreIwO0Cljof9/fcQ/rRPm3MqasCox
|
||||||
|
PhYSRs8VwiuHi0GXyAbhF4GIVg14DFYjy690QZyULZzI0IXCPgwl3wFIJug3vwWKXHAOSUO/nX7PcZb8
|
||||||
|
iehmj1A3ewW2Xdr8FcBnigT9K0ZUJH7GUksfeEbfU6aHXs/QdoWIT2KUy2XnDIvfs04Jd/8mJuNUukDP
|
||||||
|
6yA+eM1bOUaWrZbrtWabL6Ve2ti/ldMt9pvvAAAA//9Vt8D7lgMAAA==
|
||||||
|
`,
|
||||||
|
},
|
||||||
|
|
||||||
"/templates/admin-edituser.html": {
|
"/templates/admin-edituser.html": {
|
||||||
local: "templates/admin-edituser.html",
|
local: "templates/admin-edituser.html",
|
||||||
size: 984,
|
size: 1078,
|
||||||
modtime: 1503931050,
|
modtime: 1504035141,
|
||||||
compressed: `
|
compressed: `
|
||||||
H4sIAAAJbogA/6STS27cMAyG93MKQZski7EOUNuLJl101QGaHECWaFuoXpCoFIPB3L2MHwM7aIEi2ekn
|
H4sIAAAJbogA/6xTzW7bMAy+5ykEXdoeEj3AbB/W7rDTAqx9AEViHGH6g0Q3KIK8+2jZamIsy2HYySL5
|
||||||
aX58mLU2r0xZmXPDFXiExNsDY3UfklvtQ8hZuXycbFtxlNYMHjRnUqEJvuFCame8KBlSFpcLq57BRSsR
|
6fv40VSTQaEJnikrc2651M543q0Ya7R5r1knDSGCR/pCKmUC7ENyFdGHnJXL65K7DtbSmt6D5kwWoZaL
|
||||||
niRKdr2KLF+BMwc4Bt3w04+fzxPvjWjA6gw4SzJsKluhKnhMwR6HFErkayTF5ih9+xdeLSbPmlJQzvbw
|
oiGGDCmL04ltXsFFKxFeJEp2Poss34EzB3gIuuXbHz9fZ8VR04DVGbAmln1W4bHVFOy6T2GI/IIldI7S
|
||||||
EYCVHdjboJaoycgZjaLhkTy/Q9K8PS2vWkz+TRLjY0Fm9Caaeelgq/Ecd5q6UTAGq4Egpxvk8x1JNibo
|
dzdUG1EqF1pBvN3qX2Ws3IGt+IorSc5oLC2PVDmGpHm3nU+NKPUFjfFxQGb0FZ556eA6xo+4iMmVgkOw
|
||||||
9yvj69exWGoPemQ0PwW3rXcFMfh38kg1Gs/bR+kV2FrIDWX5YO4ql84Z3EOSGcb/pCTjZDrz9iVq2nAt
|
Gkhm+ynzv5ztBkTal7GnHfpn6RV5OiTYL/8sr5RxsOQc9showArYdJ93081GyFvsk6c87JzBJVMy/WGm
|
||||||
Zvu/YLPg07g79E9gAeGFuvwoH1IKdB1zovf0ZRHzc/srk6JLaQ9LQJ1VMpE8Oqji6OCqAfCbhbfn1/N3
|
4t1b1PQHGzHd+jvRrFmbfgELCG/U5h3uCfQn9zy+GiwXkmLa+fJ8Jhit1fTA6JhVMpGAOqjBgcdND/jN
|
||||||
fX+3q/XuoQr+0Rr1izWsL346s3t4YBdKTavNwUJlw0CmL4crQdb0fwIAAP//Ct4Th9gDAAA=
|
wnj8+vFdPz58zvPhaRP8szXqF2vZfvCF4RGe2ImYj8brcNzYoGR5uS1bDv7L6nxX4uL+rgytQA4WSKen
|
||||||
|
1EhKXmYHvwMAAP//al2wqTYEAAA=
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
|
|
||||||
"/templates/admin-login.html": {
|
"/templates/admin-login.html": {
|
||||||
local: "templates/admin-login.html",
|
local: "templates/admin-login.html",
|
||||||
size: 830,
|
size: 996,
|
||||||
modtime: 1503933436,
|
modtime: 1504035122,
|
||||||
compressed: `
|
compressed: `
|
||||||
H4sIAAAJbogA/6RSy26DMBC85yusvSN+AJB66LFq1PQHjL0hVm0vspc2+fs6YF6KWqnqCWaZmZ1BW2nz
|
H4sIAAAJbogA/6yTTW7zIBCG9zkFYm9xAdvSt/iWVaOmF8AwcVCBsQC3ye078T9x1S5aNsn8vPPOE2UY
|
||||||
KZSVMdag0DMGaA5CVGcKbp53FKNysRhnW1BIazqPGoRUbMjXUErtjC81WeqMB+GQL6RrOL6e3kfju7VB
|
vTKCSgY9U1bGWHGpnfG8PrDhldq8zxWFPknjISxVqp8xuLmhxRiVi8WQ2waFtKb1oDmTg1fFxWAjNFps
|
||||||
qyPyBNNgE2F2V+Q5kC26QEMPMzNxrWzRirS8BnTSWGie7w/xpHXAGKtyJGwExvcDC6NnvvDS4QL41ifA
|
yY45SBfUFT8+n1434+8GBqyOkLbJfK/Z6b5fQFu0AfuO5/2ksLIBy2idioOTxvL6//2D/dM6QIylGBp2
|
||||||
eGUQvZUKL2Q1JvOda+o3MJ1JDXEJXabUzeGfFfqk+KKgoTnmt98KLOzcYcVTjRXvqhyXJX/NHn+IHdCh
|
MuO7PjGjZxXz0sESpFtHQYJr4qyzUsEFrQayyGYTd5/wjKqPDxiCOOrDH6J1pPvAoHl9nL79DLZoJrY1
|
||||||
a9OpPOguqD5aum50uwarcGqw4qnBqhdv+ZN4wTXD/ufkHhm0AzP5bBSH1hl+yJc5e1j0wTgZbtCcRlVV
|
HvHWOEM8Lla/YYrf4gRw4Br6y+3UF1BvDV536oxslY9kazySrVPYy1RiT/C4z1c/4ESZpZo+JTqkcXTs
|
||||||
TvN8ruX2XhNKd98c8urvAAAA//9n3CmxPgMAAA==
|
G2fSbu+pJw+LLhgnw43Xp0FVijGfHYLYXwLl6LqWW11XKsV01fXhMwAA///j14z35AMAAA==
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
|
|
||||||
"/templates/admin-main.html": {
|
"/templates/admin-main.html": {
|
||||||
local: "templates/admin-main.html",
|
local: "templates/admin-main.html",
|
||||||
size: 433,
|
size: 488,
|
||||||
modtime: 1503934405,
|
modtime: 1504035131,
|
||||||
compressed: `
|
compressed: `
|
||||||
H4sIAAAJbogA/5SQz0rEQAzG732KMJdtD7YHj7YFFVm8iOATdGfG7uA0WZpUEfHdzUypCP4BTwn5Jr98
|
H4sIAAAJbogA/5SQQUvEMBCF7/srhly2vbQHj6YBFVm8iOAvyCazbTCdWZpUEfG/m6TtXhYUb4+Zl+/N
|
||||||
37QuPIONA3NnLKF4FNMXAGmeqnbH8/7STQHhwVsJhNw2Olq1wyJCCMF15iB4fyQhNhtvJGY78dn6yPRZ
|
iwxoomMC43UIndB2dCTUDkBa975NDVPUjnAqm2W3qKSHG3WXX8HrggqyTaNtq8HZThwjvQwcOYgNeZxj
|
||||||
hv0Qo5+DV8wq/Ii68y+/g5L4dbttstutsJ3DSfrCkV0mDVSPXm6iT+3V660rd59Wd1VNeB2DfYIOHhfM
|
ZBIwTHjqRFty2/PiUcULB+09Tg4TUF/znvHjDxplh8q+C0C26+WrkO3aP8lgJneOamfZzCNSbHqMjx6z
|
||||||
+coK3hSqv8EUfR1pLM2eQK2fcoBpwGHMNFNdFO9/nklO/3kEdeXbjbbZQn0EAAD//79zcTmxAQAA
|
vP98stX+UmJfN0wP3pk36OA0UyFUNXwlcPqqwB4bz30lDgypR2kFoybdF5qob3ffv8bkm/8ZksteZaR6
|
||||||
|
a6mfAAAA///M9xBo6AEAAA==
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
|
|
||||||
"/templates/admin-users.html": {
|
"/templates/admin-users.html": {
|
||||||
local: "templates/admin-users.html",
|
local: "templates/admin-users.html",
|
||||||
size: 736,
|
size: 809,
|
||||||
modtime: 1503930325,
|
modtime: 1504035147,
|
||||||
compressed: `
|
compressed: `
|
||||||
H4sIAAAJbogA/6RRwY7qMAy88xVWxfGV3J9KpCe9/YPdD3BjA5HSFMUpqxXqv6+b0gUEB6Q9ZTyJPc5M
|
H4sIAAAJbogA/4xT226rMBB8z1esUB4P8fsRQTrS6R+0H7DgTbBkbGQvqaqIf+/icAlpqvaN8czOmB0o
|
||||||
Q/4ELqDItmr7nPuuliM6Bscxc6rsCqBB8KTXOf4j+hBll459L+I6qdtBOyPcl7UMzrFIBYfEu21lkDof
|
ItVsvIPaYozHDHVrXFbuAAptLvNp7R2jcRQSs+Uqz+zbPHZYE3S9tXkw54YnpWgRjBYZu39av0XxWCZ7
|
||||||
zaADxET+rGzjl0E7hB3WxzCIssZbUCWYpBqDdtUY3VKPjG3gsksZUpf6Zxnp0/xgWeNJVbd9Ik5Md//L
|
mXQZNIFOx0ylaNWLIipH71lZmFl5Qjhh3tk+yqkyJYgVjF6FwulGSq40PTJWllJoMssTXlKjDzfB2cdY
|
||||||
B0aa0ITTDApt3zr0oTGKbshrrag8n5jLiCa3PX3N1+czJIx7hrX/A+sT/N3C5p27Y8DM/zHjZvqhwDg+
|
txO9RXnlg6ZAGmpyvLz26N0Q6hmNOKwg0eVLi8YWSp4eiO2ZoGV0ZO5sC668/lil1ysEdGeCvfkD+wv8
|
||||||
SpPVZm0ZR51Nt/wFllieGLu0GSafXwxKF/LxSRwcnQ9zICWHF5WJA2f+nXZOKIcH6asXi/PFZI40m6js
|
PcLhldrOItN/ZDyMm4gwDN9fS5diIqPDIFn6kbuDqa8nhczjirThxwa/NkWuNvbW1VLRLwM0WWL6MYID
|
||||||
7L6CKW67+g4AAP//VmB35uACAAA=
|
xuZpwvYN7/ecVklOr6sSdt21gLH89PHfPqdCTb9HufsMAAD//yHvDFMpAwAA
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -12551,14 +12487,17 @@ pn8AAAA=
|
|||||||
|
|
||||||
"/templates/htmlheader.html": {
|
"/templates/htmlheader.html": {
|
||||||
local: "templates/htmlheader.html",
|
local: "templates/htmlheader.html",
|
||||||
size: 515,
|
size: 1021,
|
||||||
modtime: 1503934576,
|
modtime: 1504026676,
|
||||||
compressed: `
|
compressed: `
|
||||||
H4sIAAAJbogA/5xRvW7zMAzc8xSM5k/2160FrCxphi5tgWYpggyKTEdEZUm1aAdBkHevfxDARTt10vHu
|
H4sIAAAJbogA/6yTT2vcMBDF7/kUE5FjZNFDYVtsQ0gXmlMLSaEl7EErj1eTyn8qjR2WsN+9sp3sunFz
|
||||||
eCLBYvn4st6+v27Acu1Wi2J6AAqLuhxAD2tkDcbqJiEr0XIl78Vc8rpGJTrCUwwNCzDBM/reeqKSrSqx
|
KT3Z1sz7PfmNlJ5/+nJ99+PrGixXLj9LpwdAalEXw0t8rZA1GKt9QM5Ex6VcCVDzomVuJf7qqM/Ed/nt
|
||||||
I4NyLP4BeWLSTiajHaq77P8vUSUm01BkCn6W9s1omaPEz5Y6JdbaWJTr3tcEN2t4DnKUbo2O/Ac06JTQ
|
Sl43VauZtg4FmKZmrKPyZp1hsUMxV9a6wkz0hI9t43nW/EgF26zAngzK8eMSqCYm7WQw2mH27tUmJlSB
|
||||||
MTqUHFpjJZnhF9tgpUSuU79jyqnWR0x5pbtBzaI/CuBz7EcblXwgfoQm229vWoa/J06RTOxwdblA9kaM
|
wXhqmZp6RvuLp+7YNn7W8/QEyS0xJnfEDuFwgKuiipaBvR5xz4xzKeGeSnCMcLOGFWw2OaSTKwRvMqF0
|
||||||
2XYo4XoFCSPXHm5MkU/WRbGUckcVOIanDTzsB2aHvqRqL+V4zvx2z+IQyvNETegrAAD//+z3Cy4DAgAA
|
iFEF1WNdNF49BEWohmTfB0t98hBEnqpJkKfn97GLyg1IeTKY8zd56qj+CR5dJgLvHQaLGLOyHsuFmQmD
|
||||||
|
2yqJzyGfI/5/0j+8TT+xdNs6lNx0xkoywzT+JFKldxhUqfuhmrT1TgDv2ziZsaKGhQU0xJGx6Rj+nTgh
|
||||||
|
eZhxvhy5hHGt276spGpqnXSx6HW9Q7igS7jo4WMWm4+hhdi/2PEi0siIysPh+e/iZ8xwUL7p8DneRfS3
|
||||||
|
44E5ecxP3Il5PFiv4FGgXu50um2KfX72OwAA//9qqXRZ/QMAAA==
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -1,12 +1,6 @@
|
|||||||
@import url("font-awesome.min.css");
|
@import url("../vendor/font-awesome/css/font-awesome.min.css");
|
||||||
@import url("https://fonts.googleapis.com/css?family=Raleway:400,400italic,700,800");
|
@import url("https://fonts.googleapis.com/css?family=Raleway:400,400italic,700,800");
|
||||||
|
|
||||||
/*
|
|
||||||
Highlights by HTML5 UP
|
|
||||||
html5up.net | @n33co
|
|
||||||
Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Reset */
|
/* Reset */
|
||||||
|
|
||||||
html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video {
|
html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video {
|
||||||
@ -52,6 +46,29 @@
|
|||||||
margin-left: 0.5em;
|
margin-left: 0.5em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Menu */
|
||||||
|
#menu {
|
||||||
|
width: 8em;
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
background-color: #000;
|
||||||
|
}
|
||||||
|
|
||||||
|
#menu .menu-bottom {
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#menu ul {
|
||||||
|
list-style: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
section.admin {
|
||||||
|
margin-top: 5em;
|
||||||
|
}
|
||||||
|
|
||||||
/* Box Model */
|
/* Box Model */
|
||||||
|
|
||||||
*, *:before, *:after {
|
*, *:before, *:after {
|
||||||
@ -63,6 +80,9 @@
|
|||||||
/* Containers */
|
/* Containers */
|
||||||
|
|
||||||
.container {
|
.container {
|
||||||
|
background: rgba(255, 255, 255, 0.95);
|
||||||
|
margin-left: -17.5em;
|
||||||
|
padding: 2.5em;
|
||||||
margin-left: auto;
|
margin-left: auto;
|
||||||
margin-right: auto;
|
margin-right: auto;
|
||||||
}
|
}
|
||||||
@ -1316,7 +1336,6 @@
|
|||||||
html {
|
html {
|
||||||
background-color: #313a3d;
|
background-color: #313a3d;
|
||||||
background-attachment: fixed, fixed;
|
background-attachment: fixed, fixed;
|
||||||
background-image: url("images/overlay.png"), url("images/bg.jpg");
|
|
||||||
background-position: top left, center center;
|
background-position: top left, center center;
|
||||||
background-repeat: repeat, none;
|
background-repeat: repeat, none;
|
||||||
background-size: auto, cover;
|
background-size: auto, cover;
|
||||||
@ -1966,6 +1985,7 @@
|
|||||||
padding: 0 1em;
|
padding: 0 1em;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
margin-bottom: 1em;
|
||||||
}
|
}
|
||||||
|
|
||||||
input[type="text"]:invalid,
|
input[type="text"]:invalid,
|
||||||
@ -2179,7 +2199,6 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.image:before {
|
.image:before {
|
||||||
background: url("images/overlay.png");
|
|
||||||
content: '';
|
content: '';
|
||||||
display: block;
|
display: block;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
@ -1,219 +0,0 @@
|
|||||||
/*
|
|
||||||
Highlights by HTML5 UP
|
|
||||||
html5up.net | @n33co
|
|
||||||
Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
|
|
||||||
*/
|
|
||||||
|
|
||||||
(function($) {
|
|
||||||
|
|
||||||
skel.breakpoints({
|
|
||||||
large: '(max-width: 1680px)',
|
|
||||||
medium: '(max-width: 980px)',
|
|
||||||
small: '(max-width: 736px)',
|
|
||||||
xsmall: '(max-width: 480px)'
|
|
||||||
});
|
|
||||||
|
|
||||||
$(function() {
|
|
||||||
|
|
||||||
var $window = $(window),
|
|
||||||
$body = $('body'),
|
|
||||||
$html = $('html');
|
|
||||||
|
|
||||||
// Disable animations/transitions until the page has loaded.
|
|
||||||
$html.addClass('is-loading');
|
|
||||||
|
|
||||||
$window.on('load', function() {
|
|
||||||
window.setTimeout(function() {
|
|
||||||
$html.removeClass('is-loading');
|
|
||||||
}, 0);
|
|
||||||
});
|
|
||||||
|
|
||||||
// Touch mode.
|
|
||||||
if (skel.vars.mobile) {
|
|
||||||
|
|
||||||
var $wrapper;
|
|
||||||
|
|
||||||
// Create wrapper.
|
|
||||||
$body.wrapInner('<div id="wrapper" />');
|
|
||||||
$wrapper = $('#wrapper');
|
|
||||||
|
|
||||||
// Hack: iOS vh bug.
|
|
||||||
if (skel.vars.os == 'ios')
|
|
||||||
$wrapper
|
|
||||||
.css('margin-top', -25)
|
|
||||||
.css('padding-bottom', 25);
|
|
||||||
|
|
||||||
// Pass scroll event to window.
|
|
||||||
$wrapper.on('scroll', function() {
|
|
||||||
$window.trigger('scroll');
|
|
||||||
});
|
|
||||||
|
|
||||||
// Scrolly.
|
|
||||||
$window.on('load.hl_scrolly', function() {
|
|
||||||
|
|
||||||
$('.scrolly').scrolly({
|
|
||||||
speed: 1500,
|
|
||||||
parent: $wrapper,
|
|
||||||
pollOnce: true
|
|
||||||
});
|
|
||||||
|
|
||||||
$window.off('load.hl_scrolly');
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
// Enable touch mode.
|
|
||||||
$html.addClass('is-touch');
|
|
||||||
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
|
|
||||||
// Scrolly.
|
|
||||||
$('.scrolly').scrolly({
|
|
||||||
speed: 1500
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// Fix: Placeholder polyfill.
|
|
||||||
$('form').placeholder();
|
|
||||||
|
|
||||||
// Prioritize "important" elements on medium.
|
|
||||||
skel.on('+medium -medium', function() {
|
|
||||||
$.prioritize(
|
|
||||||
'.important\\28 medium\\29',
|
|
||||||
skel.breakpoint('medium').active
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
// Header.
|
|
||||||
var $header = $('#header'),
|
|
||||||
$headerTitle = $header.find('header'),
|
|
||||||
$headerContainer = $header.find('.container');
|
|
||||||
|
|
||||||
// Make title fixed.
|
|
||||||
if (!skel.vars.mobile) {
|
|
||||||
|
|
||||||
$window.on('load.hl_headerTitle', function() {
|
|
||||||
|
|
||||||
skel.on('-medium !medium', function() {
|
|
||||||
|
|
||||||
$headerTitle
|
|
||||||
.css('position', 'fixed')
|
|
||||||
.css('height', 'auto')
|
|
||||||
.css('top', '50%')
|
|
||||||
.css('left', '0')
|
|
||||||
.css('width', '100%')
|
|
||||||
.css('margin-top', ($headerTitle.outerHeight() / -2));
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
skel.on('+medium', function() {
|
|
||||||
|
|
||||||
$headerTitle
|
|
||||||
.css('position', '')
|
|
||||||
.css('height', '')
|
|
||||||
.css('top', '')
|
|
||||||
.css('left', '')
|
|
||||||
.css('width', '')
|
|
||||||
.css('margin-top', '');
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
$window.off('load.hl_headerTitle');
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// Scrollex.
|
|
||||||
skel.on('-small !small', function() {
|
|
||||||
$header.scrollex({
|
|
||||||
terminate: function() {
|
|
||||||
|
|
||||||
$headerTitle.css('opacity', '');
|
|
||||||
|
|
||||||
},
|
|
||||||
scroll: function(progress) {
|
|
||||||
|
|
||||||
// Fade out title as user scrolls down.
|
|
||||||
if (progress > 0.5)
|
|
||||||
x = 1 - progress;
|
|
||||||
else
|
|
||||||
x = progress;
|
|
||||||
|
|
||||||
$headerTitle.css('opacity', Math.max(0, Math.min(1, x * 2)));
|
|
||||||
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
skel.on('+small', function() {
|
|
||||||
|
|
||||||
$header.unscrollex();
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
// Main sections.
|
|
||||||
$('.main').each(function() {
|
|
||||||
|
|
||||||
var $this = $(this),
|
|
||||||
$primaryImg = $this.find('.image.primary > img'),
|
|
||||||
$bg,
|
|
||||||
options;
|
|
||||||
|
|
||||||
// No primary image? Bail.
|
|
||||||
if ($primaryImg.length == 0)
|
|
||||||
return;
|
|
||||||
|
|
||||||
// Hack: IE8 fallback.
|
|
||||||
if (skel.vars.IEVersion < 9) {
|
|
||||||
|
|
||||||
$this
|
|
||||||
.css('background-image', 'url("' + $primaryImg.attr('src') + '")')
|
|
||||||
.css('-ms-behavior', 'url("css/ie/backgroundsize.min.htc")');
|
|
||||||
|
|
||||||
return;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create bg and append it to body.
|
|
||||||
$bg = $('<div class="main-bg" id="' + $this.attr('id') + '-bg"></div>')
|
|
||||||
.css('background-image', (
|
|
||||||
'url("css/images/overlay.png"), url("' + $primaryImg.attr('src') + '")'
|
|
||||||
))
|
|
||||||
.appendTo($body);
|
|
||||||
|
|
||||||
// Scrollex.
|
|
||||||
options = {
|
|
||||||
mode: 'middle',
|
|
||||||
delay: 200,
|
|
||||||
top: '-10vh',
|
|
||||||
bottom: '-10vh'
|
|
||||||
};
|
|
||||||
|
|
||||||
if (skel.canUse('transition')) {
|
|
||||||
|
|
||||||
options.init = function() { $bg.removeClass('active'); };
|
|
||||||
options.enter = function() { $bg.addClass('active'); };
|
|
||||||
options.leave = function() { $bg.removeClass('active'); };
|
|
||||||
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
|
|
||||||
$bg
|
|
||||||
.css('opacity', 1)
|
|
||||||
.hide();
|
|
||||||
|
|
||||||
options.init = function() { $bg.fadeOut(0); };
|
|
||||||
options.enter = function() { $bg.fadeIn(400); };
|
|
||||||
options.leave = function() { $bg.fadeOut(400); };
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
$this.scrollex(options);
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
})(jQuery);
|
|
@ -1,587 +1 @@
|
|||||||
(function($) {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Generate an indented list of links from a nav. Meant for use with panel().
|
|
||||||
* @return {jQuery} jQuery object.
|
|
||||||
*/
|
|
||||||
$.fn.navList = function() {
|
|
||||||
|
|
||||||
var $this = $(this);
|
|
||||||
$a = $this.find('a'),
|
|
||||||
b = [];
|
|
||||||
|
|
||||||
$a.each(function() {
|
|
||||||
|
|
||||||
var $this = $(this),
|
|
||||||
indent = Math.max(0, $this.parents('li').length - 1),
|
|
||||||
href = $this.attr('href'),
|
|
||||||
target = $this.attr('target');
|
|
||||||
|
|
||||||
b.push(
|
|
||||||
'<a ' +
|
|
||||||
'class="link depth-' + indent + '"' +
|
|
||||||
( (typeof target !== 'undefined' && target != '') ? ' target="' + target + '"' : '') +
|
|
||||||
( (typeof href !== 'undefined' && href != '') ? ' href="' + href + '"' : '') +
|
|
||||||
'>' +
|
|
||||||
'<span class="indent-' + indent + '"></span>' +
|
|
||||||
$this.text() +
|
|
||||||
'</a>'
|
|
||||||
);
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
return b.join('');
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Panel-ify an element.
|
|
||||||
* @param {object} userConfig User config.
|
|
||||||
* @return {jQuery} jQuery object.
|
|
||||||
*/
|
|
||||||
$.fn.panel = function(userConfig) {
|
|
||||||
|
|
||||||
// No elements?
|
|
||||||
if (this.length == 0)
|
|
||||||
return $this;
|
|
||||||
|
|
||||||
// Multiple elements?
|
|
||||||
if (this.length > 1) {
|
|
||||||
|
|
||||||
for (var i=0; i < this.length; i++)
|
|
||||||
$(this[i]).panel(userConfig);
|
|
||||||
|
|
||||||
return $this;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// Vars.
|
|
||||||
var $this = $(this),
|
|
||||||
$body = $('body'),
|
|
||||||
$window = $(window),
|
|
||||||
id = $this.attr('id'),
|
|
||||||
config;
|
|
||||||
|
|
||||||
// Config.
|
|
||||||
config = $.extend({
|
|
||||||
|
|
||||||
// Delay.
|
|
||||||
delay: 0,
|
|
||||||
|
|
||||||
// Hide panel on link click.
|
|
||||||
hideOnClick: false,
|
|
||||||
|
|
||||||
// Hide panel on escape keypress.
|
|
||||||
hideOnEscape: false,
|
|
||||||
|
|
||||||
// Hide panel on swipe.
|
|
||||||
hideOnSwipe: false,
|
|
||||||
|
|
||||||
// Reset scroll position on hide.
|
|
||||||
resetScroll: false,
|
|
||||||
|
|
||||||
// Reset forms on hide.
|
|
||||||
resetForms: false,
|
|
||||||
|
|
||||||
// Side of viewport the panel will appear.
|
|
||||||
side: null,
|
|
||||||
|
|
||||||
// Target element for "class".
|
|
||||||
target: $this,
|
|
||||||
|
|
||||||
// Class to toggle.
|
|
||||||
visibleClass: 'visible'
|
|
||||||
|
|
||||||
}, userConfig);
|
|
||||||
|
|
||||||
// Expand "target" if it's not a jQuery object already.
|
|
||||||
if (typeof config.target != 'jQuery')
|
|
||||||
config.target = $(config.target);
|
|
||||||
|
|
||||||
// Panel.
|
|
||||||
|
|
||||||
// Methods.
|
|
||||||
$this._hide = function(event) {
|
|
||||||
|
|
||||||
// Already hidden? Bail.
|
|
||||||
if (!config.target.hasClass(config.visibleClass))
|
|
||||||
return;
|
|
||||||
|
|
||||||
// If an event was provided, cancel it.
|
|
||||||
if (event) {
|
|
||||||
|
|
||||||
event.preventDefault();
|
|
||||||
event.stopPropagation();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// Hide.
|
|
||||||
config.target.removeClass(config.visibleClass);
|
|
||||||
|
|
||||||
// Post-hide stuff.
|
|
||||||
window.setTimeout(function() {
|
|
||||||
|
|
||||||
// Reset scroll position.
|
|
||||||
if (config.resetScroll)
|
|
||||||
$this.scrollTop(0);
|
|
||||||
|
|
||||||
// Reset forms.
|
|
||||||
if (config.resetForms)
|
|
||||||
$this.find('form').each(function() {
|
|
||||||
this.reset();
|
|
||||||
});
|
|
||||||
|
|
||||||
}, config.delay);
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
// Vendor fixes.
|
|
||||||
$this
|
|
||||||
.css('-ms-overflow-style', '-ms-autohiding-scrollbar')
|
|
||||||
.css('-webkit-overflow-scrolling', 'touch');
|
|
||||||
|
|
||||||
// Hide on click.
|
|
||||||
if (config.hideOnClick) {
|
|
||||||
|
|
||||||
$this.find('a')
|
|
||||||
.css('-webkit-tap-highlight-color', 'rgba(0,0,0,0)');
|
|
||||||
|
|
||||||
$this
|
|
||||||
.on('click', 'a', function(event) {
|
|
||||||
|
|
||||||
var $a = $(this),
|
|
||||||
href = $a.attr('href'),
|
|
||||||
target = $a.attr('target');
|
|
||||||
|
|
||||||
if (!href || href == '#' || href == '' || href == '#' + id)
|
|
||||||
return;
|
|
||||||
|
|
||||||
// Cancel original event.
|
|
||||||
event.preventDefault();
|
|
||||||
event.stopPropagation();
|
|
||||||
|
|
||||||
// Hide panel.
|
|
||||||
$this._hide();
|
|
||||||
|
|
||||||
// Redirect to href.
|
|
||||||
window.setTimeout(function() {
|
|
||||||
|
|
||||||
if (target == '_blank')
|
|
||||||
window.open(href);
|
|
||||||
else
|
|
||||||
window.location.href = href;
|
|
||||||
|
|
||||||
}, config.delay + 10);
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// Event: Touch stuff.
|
|
||||||
$this.on('touchstart', function(event) {
|
|
||||||
|
|
||||||
$this.touchPosX = event.originalEvent.touches[0].pageX;
|
|
||||||
$this.touchPosY = event.originalEvent.touches[0].pageY;
|
|
||||||
|
|
||||||
})
|
|
||||||
|
|
||||||
$this.on('touchmove', function(event) {
|
|
||||||
|
|
||||||
if ($this.touchPosX === null
|
|
||||||
|| $this.touchPosY === null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
var diffX = $this.touchPosX - event.originalEvent.touches[0].pageX,
|
|
||||||
diffY = $this.touchPosY - event.originalEvent.touches[0].pageY,
|
|
||||||
th = $this.outerHeight(),
|
|
||||||
ts = ($this.get(0).scrollHeight - $this.scrollTop());
|
|
||||||
|
|
||||||
// Hide on swipe?
|
|
||||||
if (config.hideOnSwipe) {
|
|
||||||
|
|
||||||
var result = false,
|
|
||||||
boundary = 20,
|
|
||||||
delta = 50;
|
|
||||||
|
|
||||||
switch (config.side) {
|
|
||||||
|
|
||||||
case 'left':
|
|
||||||
result = (diffY < boundary && diffY > (-1 * boundary)) && (diffX > delta);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'right':
|
|
||||||
result = (diffY < boundary && diffY > (-1 * boundary)) && (diffX < (-1 * delta));
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'top':
|
|
||||||
result = (diffX < boundary && diffX > (-1 * boundary)) && (diffY > delta);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'bottom':
|
|
||||||
result = (diffX < boundary && diffX > (-1 * boundary)) && (diffY < (-1 * delta));
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
if (result) {
|
|
||||||
|
|
||||||
$this.touchPosX = null;
|
|
||||||
$this.touchPosY = null;
|
|
||||||
$this._hide();
|
|
||||||
|
|
||||||
return false;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// Prevent vertical scrolling past the top or bottom.
|
|
||||||
if (($this.scrollTop() < 0 && diffY < 0)
|
|
||||||
|| (ts > (th - 2) && ts < (th + 2) && diffY > 0)) {
|
|
||||||
|
|
||||||
event.preventDefault();
|
|
||||||
event.stopPropagation();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
// Event: Prevent certain events inside the panel from bubbling.
|
|
||||||
$this.on('click touchend touchstart touchmove', function(event) {
|
|
||||||
event.stopPropagation();
|
|
||||||
});
|
|
||||||
|
|
||||||
// Event: Hide panel if a child anchor tag pointing to its ID is clicked.
|
|
||||||
$this.on('click', 'a[href="#' + id + '"]', function(event) {
|
|
||||||
|
|
||||||
event.preventDefault();
|
|
||||||
event.stopPropagation();
|
|
||||||
|
|
||||||
config.target.removeClass(config.visibleClass);
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
// Body.
|
|
||||||
|
|
||||||
// Event: Hide panel on body click/tap.
|
|
||||||
$body.on('click touchend', function(event) {
|
|
||||||
$this._hide(event);
|
|
||||||
});
|
|
||||||
|
|
||||||
// Event: Toggle.
|
|
||||||
$body.on('click', 'a[href="#' + id + '"]', function(event) {
|
|
||||||
|
|
||||||
event.preventDefault();
|
|
||||||
event.stopPropagation();
|
|
||||||
|
|
||||||
config.target.toggleClass(config.visibleClass);
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
// Window.
|
|
||||||
|
|
||||||
// Event: Hide on ESC.
|
|
||||||
if (config.hideOnEscape)
|
|
||||||
$window.on('keydown', function(event) {
|
|
||||||
|
|
||||||
if (event.keyCode == 27)
|
|
||||||
$this._hide(event);
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
return $this;
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Apply "placeholder" attribute polyfill to one or more forms.
|
|
||||||
* @return {jQuery} jQuery object.
|
|
||||||
*/
|
|
||||||
$.fn.placeholder = function() {
|
|
||||||
|
|
||||||
// Browser natively supports placeholders? Bail.
|
|
||||||
if (typeof (document.createElement('input')).placeholder != 'undefined')
|
|
||||||
return $(this);
|
|
||||||
|
|
||||||
// No elements?
|
|
||||||
if (this.length == 0)
|
|
||||||
return $this;
|
|
||||||
|
|
||||||
// Multiple elements?
|
|
||||||
if (this.length > 1) {
|
|
||||||
|
|
||||||
for (var i=0; i < this.length; i++)
|
|
||||||
$(this[i]).placeholder();
|
|
||||||
|
|
||||||
return $this;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// Vars.
|
|
||||||
var $this = $(this);
|
|
||||||
|
|
||||||
// Text, TextArea.
|
|
||||||
$this.find('input[type=text],textarea')
|
|
||||||
.each(function() {
|
|
||||||
|
|
||||||
var i = $(this);
|
|
||||||
|
|
||||||
if (i.val() == ''
|
|
||||||
|| i.val() == i.attr('placeholder'))
|
|
||||||
i
|
|
||||||
.addClass('polyfill-placeholder')
|
|
||||||
.val(i.attr('placeholder'));
|
|
||||||
|
|
||||||
})
|
|
||||||
.on('blur', function() {
|
|
||||||
|
|
||||||
var i = $(this);
|
|
||||||
|
|
||||||
if (i.attr('name').match(/-polyfill-field$/))
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (i.val() == '')
|
|
||||||
i
|
|
||||||
.addClass('polyfill-placeholder')
|
|
||||||
.val(i.attr('placeholder'));
|
|
||||||
|
|
||||||
})
|
|
||||||
.on('focus', function() {
|
|
||||||
|
|
||||||
var i = $(this);
|
|
||||||
|
|
||||||
if (i.attr('name').match(/-polyfill-field$/))
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (i.val() == i.attr('placeholder'))
|
|
||||||
i
|
|
||||||
.removeClass('polyfill-placeholder')
|
|
||||||
.val('');
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
// Password.
|
|
||||||
$this.find('input[type=password]')
|
|
||||||
.each(function() {
|
|
||||||
|
|
||||||
var i = $(this);
|
|
||||||
var x = $(
|
|
||||||
$('<div>')
|
|
||||||
.append(i.clone())
|
|
||||||
.remove()
|
|
||||||
.html()
|
|
||||||
.replace(/type="password"/i, 'type="text"')
|
|
||||||
.replace(/type=password/i, 'type=text')
|
|
||||||
);
|
|
||||||
|
|
||||||
if (i.attr('id') != '')
|
|
||||||
x.attr('id', i.attr('id') + '-polyfill-field');
|
|
||||||
|
|
||||||
if (i.attr('name') != '')
|
|
||||||
x.attr('name', i.attr('name') + '-polyfill-field');
|
|
||||||
|
|
||||||
x.addClass('polyfill-placeholder')
|
|
||||||
.val(x.attr('placeholder')).insertAfter(i);
|
|
||||||
|
|
||||||
if (i.val() == '')
|
|
||||||
i.hide();
|
|
||||||
else
|
|
||||||
x.hide();
|
|
||||||
|
|
||||||
i
|
|
||||||
.on('blur', function(event) {
|
|
||||||
|
|
||||||
event.preventDefault();
|
|
||||||
|
|
||||||
var x = i.parent().find('input[name=' + i.attr('name') + '-polyfill-field]');
|
|
||||||
|
|
||||||
if (i.val() == '') {
|
|
||||||
|
|
||||||
i.hide();
|
|
||||||
x.show();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
x
|
|
||||||
.on('focus', function(event) {
|
|
||||||
|
|
||||||
event.preventDefault();
|
|
||||||
|
|
||||||
var i = x.parent().find('input[name=' + x.attr('name').replace('-polyfill-field', '') + ']');
|
|
||||||
|
|
||||||
x.hide();
|
|
||||||
|
|
||||||
i
|
|
||||||
.show()
|
|
||||||
.focus();
|
|
||||||
|
|
||||||
})
|
|
||||||
.on('keypress', function(event) {
|
|
||||||
|
|
||||||
event.preventDefault();
|
|
||||||
x.val('');
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
// Events.
|
|
||||||
$this
|
|
||||||
.on('submit', function() {
|
|
||||||
|
|
||||||
$this.find('input[type=text],input[type=password],textarea')
|
|
||||||
.each(function(event) {
|
|
||||||
|
|
||||||
var i = $(this);
|
|
||||||
|
|
||||||
if (i.attr('name').match(/-polyfill-field$/))
|
|
||||||
i.attr('name', '');
|
|
||||||
|
|
||||||
if (i.val() == i.attr('placeholder')) {
|
|
||||||
|
|
||||||
i.removeClass('polyfill-placeholder');
|
|
||||||
i.val('');
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
})
|
|
||||||
.on('reset', function(event) {
|
|
||||||
|
|
||||||
event.preventDefault();
|
|
||||||
|
|
||||||
$this.find('select')
|
|
||||||
.val($('option:first').val());
|
|
||||||
|
|
||||||
$this.find('input,textarea')
|
|
||||||
.each(function() {
|
|
||||||
|
|
||||||
var i = $(this),
|
|
||||||
x;
|
|
||||||
|
|
||||||
i.removeClass('polyfill-placeholder');
|
|
||||||
|
|
||||||
switch (this.type) {
|
|
||||||
|
|
||||||
case 'submit':
|
|
||||||
case 'reset':
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'password':
|
|
||||||
i.val(i.attr('defaultValue'));
|
|
||||||
|
|
||||||
x = i.parent().find('input[name=' + i.attr('name') + '-polyfill-field]');
|
|
||||||
|
|
||||||
if (i.val() == '') {
|
|
||||||
i.hide();
|
|
||||||
x.show();
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
i.show();
|
|
||||||
x.hide();
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'checkbox':
|
|
||||||
case 'radio':
|
|
||||||
i.attr('checked', i.attr('defaultValue'));
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'text':
|
|
||||||
case 'textarea':
|
|
||||||
i.val(i.attr('defaultValue'));
|
|
||||||
|
|
||||||
if (i.val() == '') {
|
|
||||||
i.addClass('polyfill-placeholder');
|
|
||||||
i.val(i.attr('placeholder'));
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
i.val(i.attr('defaultValue'));
|
|
||||||
break;
|
|
||||||
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
return $this;
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Moves elements to/from the first positions of their respective parents.
|
|
||||||
* @param {jQuery} $elements Elements (or selector) to move.
|
|
||||||
* @param {bool} condition If true, moves elements to the top. Otherwise, moves elements back to their original locations.
|
|
||||||
*/
|
|
||||||
$.prioritize = function($elements, condition) {
|
|
||||||
|
|
||||||
var key = '__prioritize';
|
|
||||||
|
|
||||||
// Expand $elements if it's not already a jQuery object.
|
|
||||||
if (typeof $elements != 'jQuery')
|
|
||||||
$elements = $($elements);
|
|
||||||
|
|
||||||
// Step through elements.
|
|
||||||
$elements.each(function() {
|
|
||||||
|
|
||||||
var $e = $(this), $p,
|
|
||||||
$parent = $e.parent();
|
|
||||||
|
|
||||||
// No parent? Bail.
|
|
||||||
if ($parent.length == 0)
|
|
||||||
return;
|
|
||||||
|
|
||||||
// Not moved? Move it.
|
|
||||||
if (!$e.data(key)) {
|
|
||||||
|
|
||||||
// Condition is false? Bail.
|
|
||||||
if (!condition)
|
|
||||||
return;
|
|
||||||
|
|
||||||
// Get placeholder (which will serve as our point of reference for when this element needs to move back).
|
|
||||||
$p = $e.prev();
|
|
||||||
|
|
||||||
// Couldn't find anything? Means this element's already at the top, so bail.
|
|
||||||
if ($p.length == 0)
|
|
||||||
return;
|
|
||||||
|
|
||||||
// Move element to top of parent.
|
|
||||||
$e.prependTo($parent);
|
|
||||||
|
|
||||||
// Mark element as moved.
|
|
||||||
$e.data(key, $p);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// Moved already?
|
|
||||||
else {
|
|
||||||
|
|
||||||
// Condition is true? Bail.
|
|
||||||
if (condition)
|
|
||||||
return;
|
|
||||||
|
|
||||||
$p = $e.data(key);
|
|
||||||
|
|
||||||
// Move element back to its original location (using our placeholder).
|
|
||||||
$e.insertAfter($p);
|
|
||||||
|
|
||||||
// Unmark element as moved.
|
|
||||||
$e.removeData(key);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
})(jQuery);
|
|
28
main.go
28
main.go
@ -15,7 +15,9 @@ import (
|
|||||||
"golang.org/x/crypto/ssh/terminal"
|
"golang.org/x/crypto/ssh/terminal"
|
||||||
|
|
||||||
"github.com/gorilla/handlers"
|
"github.com/gorilla/handlers"
|
||||||
|
"github.com/gorilla/mux"
|
||||||
"github.com/gorilla/sessions"
|
"github.com/gorilla/sessions"
|
||||||
|
"github.com/justinas/alice"
|
||||||
)
|
)
|
||||||
|
|
||||||
const AppName = "gosscms"
|
const AppName = "gosscms"
|
||||||
@ -57,6 +59,7 @@ type Routes map[string]http.HandlerFunc
|
|||||||
var sessionSecret = "JCOP5e8ohkTcOzcSMe74"
|
var sessionSecret = "JCOP5e8ohkTcOzcSMe74"
|
||||||
var sessionStore = sessions.NewCookieStore([]byte(sessionSecret))
|
var sessionStore = sessions.NewCookieStore([]byte(sessionSecret))
|
||||||
var site *siteData
|
var site *siteData
|
||||||
|
var r *mux.Router
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
loadConfig()
|
loadConfig()
|
||||||
@ -67,36 +70,26 @@ func main() {
|
|||||||
fmt.Println("Operating in Development Mode")
|
fmt.Println("Operating in Development Mode")
|
||||||
}
|
}
|
||||||
|
|
||||||
routes := Routes{
|
r = mux.NewRouter()
|
||||||
"/": PublicHandler,
|
r.StrictSlash(true)
|
||||||
"/admin": AdminHandler,
|
|
||||||
"/admin/assets": AdminAssetHandler,
|
|
||||||
}
|
|
||||||
mux := http.DefaultServeMux
|
|
||||||
loggingHandler := NewApacheLoggingHandler(mux, os.Stderr)
|
|
||||||
for route, fn := range routes {
|
|
||||||
mux.Handle(route, fn)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Admin Subrouter
|
r.PathPrefix("/admin/assets").Handler(http.StripPrefix("/admin/", http.FileServer(FS(site.DevMode))))
|
||||||
/*
|
|
||||||
admin := r.PathPrefix("/admin").Subrouter()
|
admin := r.PathPrefix("/admin").Subrouter()
|
||||||
admin.Handle("/assets", http.FileServer(FS(site.DevMode)))
|
|
||||||
admin.HandleFunc("/", handleAdmin)
|
admin.HandleFunc("/", handleAdmin)
|
||||||
admin.HandleFunc("/dologin", handleAdminDoLogin)
|
admin.HandleFunc("/dologin", handleAdminDoLogin)
|
||||||
admin.HandleFunc("/dologout", handleAdminDoLogout)
|
admin.HandleFunc("/dologout", handleAdminDoLogout)
|
||||||
admin.HandleFunc("/{category}", handleAdmin)
|
admin.HandleFunc("/{category}", handleAdmin)
|
||||||
admin.HandleFunc("/{category}/{id}", handleAdmin)
|
admin.HandleFunc("/{category}/{id}", handleAdmin)
|
||||||
admin.HandleFunc("/{category}/{id}/{function}", handleAdmin)
|
admin.HandleFunc("/{category}/{id}/{function}", handleAdmin)
|
||||||
admin.HandleFunc("/{category}/{id}/{function}/{subid}", handleAdmin)
|
|
||||||
|
r.PathPrefix("/").Handler(http.FileServer(http.Dir("public")))
|
||||||
|
|
||||||
http.Handle("/", r)
|
http.Handle("/", r)
|
||||||
|
|
||||||
*/
|
chain := alice.New(loggingHandler).Then(r)
|
||||||
server := &http.Server{Addr: "127.0.0.1:" + strconv.Itoa(site.Port), Handler: loggingHandler}
|
|
||||||
|
|
||||||
fmt.Printf("Listening on port %d\n", site.Port)
|
fmt.Printf("Listening on port %d\n", site.Port)
|
||||||
log.Fatal(server.ListenAndServe())
|
log.Fatal(http.ListenAndServe("127.0.0.1:"+strconv.Itoa(site.Port), chain))
|
||||||
}
|
}
|
||||||
|
|
||||||
func PublicHandler(w http.ResponseWriter, r *http.Request) {
|
func PublicHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
@ -240,7 +233,6 @@ func redirect(url string, w http.ResponseWriter, req *http.Request) {
|
|||||||
// outputTemplate
|
// outputTemplate
|
||||||
// Spit out a template
|
// Spit out a template
|
||||||
func outputTemplate(tmplName string, tmplData interface{}, w http.ResponseWriter) error {
|
func outputTemplate(tmplName string, tmplData interface{}, w http.ResponseWriter) error {
|
||||||
fmt.Println(tmplName)
|
|
||||||
n := "/templates/" + tmplName
|
n := "/templates/" + tmplName
|
||||||
l := template.Must(template.New("layout").Parse(FSMustString(site.DevMode, n)))
|
l := template.Must(template.New("layout").Parse(FSMustString(site.DevMode, n)))
|
||||||
t := template.Must(l.Parse(FSMustString(site.DevMode, n)))
|
t := template.Must(l.Parse(FSMustString(site.DevMode, n)))
|
||||||
|
24
templates/admin-adduser.html
Normal file
24
templates/admin-adduser.html
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
<section class="admin">
|
||||||
|
<div class="container">
|
||||||
|
<form class="pure-form pure-form-aligned" action="/admin/users/new/save" method="POST">
|
||||||
|
<fieldset>
|
||||||
|
<div class="pure-control-group">
|
||||||
|
<label for="email">Email Address</label>
|
||||||
|
<input id="email" name="email" type="text" placeholder="Email Address" value="" autofocus>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="pure-control-group">
|
||||||
|
<label for="password">Password</label>
|
||||||
|
<input id="password" name="password" type="password" placeholder="Password">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="pure-control-group">
|
||||||
|
<label for="password_rpt">Repeat Password</label>
|
||||||
|
<input id="password_rpt" name="password_rpt" type="password" placeholder="Repeat Password">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<button type="submit" class="pure-button pure-button-primary">Add User</button>
|
||||||
|
</fieldset>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</section>
|
@ -1,4 +1,5 @@
|
|||||||
<div class="center">
|
<section class="admin">
|
||||||
|
<div class="main container">
|
||||||
<form class="gosscms-form gosscms-form-aligned" action="/admin/users/{{ .TemplateData }}/save" method="POST">
|
<form class="gosscms-form gosscms-form-aligned" action="/admin/users/{{ .TemplateData }}/save" method="POST">
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<div class="gosscms-control-group">
|
<div class="gosscms-control-group">
|
||||||
@ -11,14 +12,18 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="gosscms-control-group">
|
<div class="gosscms-control-group">
|
||||||
<a href="/admin/users" class="pull-left space gosscms-button gosscms-button-plain">Cancel</a>
|
<button id="btnCancel"href="/admin/users" class="pull-left space button">Cancel</a>
|
||||||
<button type="submit" class="pull-right space gosscms-button gosscms-button-primary">Update</button>
|
<button type="submit" class="pull-right space">Update</button>
|
||||||
<button type="button" id="btnDeleteUser" class="pull-right space gosscms-button gosscms-button-error">Delete</button>
|
<button type="button" id="btnDeleteUser" class="pull-right space">Delete</button>
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
</section>
|
||||||
<script>
|
<script>
|
||||||
|
document.getElementById('btnCancel').onClick = function(e) {
|
||||||
|
window.location = "/admin/users";
|
||||||
|
}
|
||||||
document.getElementById('btnDeleteUser').onClick = function(e) {
|
document.getElementById('btnDeleteUser').onClick = function(e) {
|
||||||
console.log(e);
|
console.log(e);
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
<div class="center">
|
<section class="admin">
|
||||||
|
<div class="container">
|
||||||
<form class="gosscms-form gosscms-form-aligned" action="/admin/dologin" method="POST">
|
<form class="gosscms-form gosscms-form-aligned" action="/admin/dologin" method="POST">
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<div class="gosscms-control-group">
|
<div class="gosscms-control-group">
|
||||||
@ -19,4 +20,5 @@
|
|||||||
<button type="submit" class="gosscms-button gosscms-button-primary">Submit</button>
|
<button type="submit" class="gosscms-button gosscms-button-primary">Submit</button>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
</section>
|
||||||
|
@ -1,10 +1,12 @@
|
|||||||
<div class="content">
|
<section class="admin">
|
||||||
|
<div class="container">
|
||||||
<div>
|
<div>
|
||||||
<h3>Admin Sections</h3>
|
<h3>Admin Sections</h3>
|
||||||
<button id="btnPhotos" class="gosscms-button">Photo Galleries</button>
|
<a id="btnPhotos" class="button" href="/admin/photos">Photo Galleries</a>
|
||||||
<button id="btnNews" class="gosscms-button">News</button>
|
<a id="btnNews" class="button" href="/admin/news">News</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</section>
|
||||||
<script>
|
<script>
|
||||||
document.getElementById('btnPhotos').onClick = function() {
|
document.getElementById('btnPhotos').onClick = function() {
|
||||||
console.log("Go to photo management");
|
console.log("Go to photo management");
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
<div class="bottom-space center">
|
<section class="admin">
|
||||||
<a id="btnAddUser" class="gosscms-button gosscms-button-success" href="/admin/users/new"><i class="fa fa-plus"></i> Add User</a>
|
<div class="container">
|
||||||
</div>
|
<div class="bottom-space pull-right">
|
||||||
<table id="users-table" class="sortable gosscms-table gosscms-table-bordered center">
|
<a id="btnAddUser" class="button" href="/admin/users/new"><i class="fa fa-plus"></i> Add User</a>
|
||||||
|
</div>
|
||||||
|
<table id="users-table" class="sortable gosscms-table gosscms-table-bordered center">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>Email</th>
|
<th>Email</th>
|
||||||
@ -13,10 +15,12 @@
|
|||||||
<tr>
|
<tr>
|
||||||
<td>{{ $v }}</td>
|
<td>{{ $v }}</td>
|
||||||
<td>
|
<td>
|
||||||
<a href="/admin/users/{{ $v }}/edit" class="gosscms-button gosscms-button-plain"><i class="fa fa-pencil"></i></a>
|
<a href="/admin/users/{{ $v }}/edit" class="button"><i class="fa fa-pencil"></i></a>
|
||||||
<a href="/admin/users/{{ $v }}/delete" class="gosscms-button gosscms-button-plain"><i class="fa fa-trash"></i></a>
|
<a href="/admin/users/{{ $v }}/delete" class="button"><i class="fa fa-trash"></i></a>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
@ -1,16 +1,25 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
<meta name="description" content="">
|
<meta name="description" content="">
|
||||||
<meta http-equiv="Cache-Control" content="No-Cache">
|
<meta name="author" content="{{ .Site.Title }} Administration">
|
||||||
|
<!-- [if lte IE 8 ]]> <script src="/assets/vendor/js/ie/html5shiv.js"></script><![endif] -->
|
||||||
|
<!--[if lte IE 8]><link rel="stylesheet" href="/assets/vendor/css/ie8.css" /><![endif]-->
|
||||||
|
<!--[if lte IE 8]><link rel="stylesheet" href="/assets/vendor/css/ie9.css" /><![endif]-->
|
||||||
<link rel="apple-touch-icon" href="/assets/images/favicon.png" type="image/png">
|
<link rel="apple-touch-icon" href="/assets/images/favicon.png" type="image/png">
|
||||||
<link rel="shortcut icon" href="/assets/images/favicon.png" type="image/png">
|
<link rel="shortcut icon" href="/assets/images/favicon.png" type="image/png">
|
||||||
|
|
||||||
<title>{{ .Site.Title }} - {{ .SubTitle }}</title>
|
<title>{{ .Site.Title }} - {{ .SubTitle }}</title>
|
||||||
<!--[if lt IE 9]>
|
|
||||||
<![endif]-->
|
{{ range $i, $v := .Stylesheets }}
|
||||||
|
<link rel="stylesheet" href="{{ $v }}">
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ range $i, $v := .HeaderScripts }}
|
||||||
|
<script src="{{ $v }}"></script>
|
||||||
|
{{ end }}
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
</body>
|
|
||||||
|
Loading…
Reference in New Issue
Block a user