From 80436105909f1128aa323cfdc26eccb9c263566f Mon Sep 17 00:00:00 2001
From: Henrique Dias
'),newItem.prepend(' ')):(type="","array"==elements[1]?type="array":type="object",template='',template=template.replace("${blockID}",blockID),template=template.replace("${elements[0]}",elements[0]),template=template.replace("${type}",type),newItem.after(template),newItem.remove(),console.log('"'+blockID+'" block of type "'+type+'" added.')),!1))):void 0})}return!1}),$("#content").on("click",".delete",function(a){return a.preventDefault(),button=$(this),name=button.parent().parent().attr("for")||button.parent().parent().attr("id")||button.parent().parent().parent().attr("id"),name=name.replace(/\[/,"\\["),name=name.replace(/\]/,"\\]"),console.log(name),$('label[for="'+name+'"]').fadeOut().remove(),$("#"+name).fadeOut().remove(),!1})}),$.noty.themes.admin={name:"admin",helpers:{},modal:{css:{position:"fixed",width:"100%",height:"100%",backgroundColor:"#000",zIndex:1e4,opacity:.6,display:"none",left:0,top:0}}},$.noty.defaults={layout:"topRight",theme:"admin",dismissQueue:!0,animation:{open:"animated bounceInRight",close:"animated fadeOut",easing:"swing",speed:500},timeout:!1,force:!1,modal:!1,maxVisible:5,killer:!1,closeWith:["click"],callback:{onShow:function(){},afterShow:function(){},onClose:function(){},afterClose:function(){},onCloseClick:function(){}},buttons:!1},notification=function(a){var b;switch(a.type){case"success":b='';break;case"error":b='';break;case"warning":b='';break;case"information":b='';break;default:b=''}var c={template:' '};if(a=$.extend({},c,a),noty(a),!document.cookie.replace(/(?:(?:^|.*;\s*)stickynoties\s*\=\s*([^;]*).*$)|^.*$/,"$1")&&!a.timeout){var d=new Date;d.setDate(d.getDate()+365),document.cookie="stickynoties=true; expires="+d.toUTCString+"; path=/",notification({text:"Some notifications are sticky. If it doesn't go away, click to dismiss it.",type:"information"})}};
\ No newline at end of file
+$(document).ready(function(){$("#logout").click(function(a){return a.preventDefault(),$.ajax({type:"GET",url:"/admin",async:!1,username:"username",password:"password",headers:{Authorization:"Basic xxx"}}).fail(function(){window.location="/"}),!1}),$(document).pjax("a[data-pjax]","#content")}),$(document).on("ready pjax:end",function(){function a(){this.style.height="5px",this.style.height=this.scrollHeight+"px"}return $("#content").off(),document.title=document.getElementById("site-title").innerHTML,$("textarea").each(a),$("textarea").keyup(a),$(window).resize(function(){$("textarea").each(a)}),$("main").hasClass("browse")&&$(document).trigger("page:browse"),$(".editor")[0]&&$(document).trigger("page:editor"),!1}),$(document).on("page:browse",function(){var a="#foreground",b=new Object;b.selector="form#delete",b.form=$(b.selector),b.row="",b.button="",b.url="",$("#content").on("click",".delete",function(c){return c.preventDefault(),b.button=$(this),b.row=$(this).parent().parent(),$(a).fadeIn(200),b.url=b.row.find(".filename").text(),b.form.find("span").text(b.url),b.form.fadeIn(200),!1}),$("#content").on("submit",b.selector,function(c){c.preventDefault();var d=new XMLHttpRequest;return d.open("DELETE",b.button.data("file")),d.send(),d.onreadystatechange=function(){4==d.readyState&&(200==d.status?($(a).fadeOut(200),b.form.fadeOut(200),b.row.fadeOut(200),notification({text:b.button.data("message"),type:"success",timeout:5e3})):(notification({text:"Something went wrong.",type:"error"}),console.log(d.responseText)))},!1}),$("#content").on("change",'input[type="file"]',function(a){a.preventDefault(),files=a.target.files;var b=new FormData;return $.each(files,function(a,c){b.append(a,c)}),$.ajax({url:window.location.pathname,type:"POST",data:b,cache:!1,dataType:"json",headers:{"X-Upload":"true"},processData:!1,contentType:!1}).done(function(a){notification({text:"File(s) uploaded successfully.",type:"success",timeout:5e3}),$.pjax({url:window.location.pathname,container:"#content"})}).fail(function(a){notification({text:"Something went wrong.",type:"error"}),console.log(a)}),!1}),$("#content").on("click","#upload",function(a){return a.preventDefault(),$('.actions input[type="file"]').click(),!1});var c=new Object;c.selector="form#new",c.form=$(c.selector),c.input=c.selector+' input[type="text"]',c.button="",c.url="",$("#content").on("click",".new",function(b){return b.preventDefault(),c.button=$(this),$(a).fadeIn(200),c.form.fadeIn(200),!1}),$("#content").on("keypress",c.input,function(a){return 13==a.keyCode?(a.preventDefault(),$(c.form).submit(),!1):void 0}),$("#content").on("submit",c.selector,function(a){a.preventDefault();var b=c.form.find('input[type="text"]').val(),d=b.split(":"),e="",f="";if(""==b)return notification({text:"You have to write something. If you want to close the box, click the button again.",type:"warning",timeout:5e3}),!1;if(1==d.length)e=b;else{if(2!=d.length)return notification({text:"Hmm... I don't understand you. Try writing something like 'name[:archetype]'.",type:"error"}),!1;e=d[0],f=d[1]}var g={filename:e,archetype:f},h=new XMLHttpRequest;return h.open("POST",window.location.pathname),h.setRequestHeader("Content-Type","application/json;charset=UTF-8"),h.send(JSON.stringify(g)),h.onreadystatechange=function(){if(4==h.readyState)if(200==h.status){var a=JSON.parse(h.responseText);notification({text:"File created successfully.",type:"success",timeout:5e3}),$.pjax({url:a.Location,container:"#content"})}else notification({text:"Something went wrong.",type:"error"}),console.log(h.responseText)},!1});var d=new Object;d.selector="form#rename",d.form=$(d.selector),d.input=d.selector+' input[type="text"]',d.button="",d.url="",$("#content").on("click",".rename",function(b){return b.preventDefault(),d.button=$(this),$(a).fadeIn(200),d.url=$(this).parent().parent().find(".filename").text(),d.form.fadeIn(200),d.form.find("span").text(d.url),d.form.find('input[type="text"]').val(d.url),!1}),$("#content").on("keypress",d.input,function(a){return 13==a.keyCode?(a.preventDefault(),$(d.form).submit(),!1):void 0}),$("#content").on("submit",d.selector,function(a){a.preventDefault();var b=d.form.find('input[type="text"]').val();if(""===b)return!1;"/"!=b.substring(0,1)&&(b=window.location.pathname.replace("/admin/browse/","")+"/"+b);var c='{"filename": "'+b+'"}';return $.ajax({type:"PUT",url:d.url,data:c,dataType:"json",encode:!0}).done(function(a){$.pjax({url:window.location.pathname,container:"#content"}),notification({text:d.button.data("message"),type:"success",timeout:5e3})}).fail(function(a){notification({text:"Something went wrong.",type:"error"}),console.log(a)}),!1});var e=new Object;e.selector="form#git",e.form=$(e.selector),e.input=e.selector+' input[type="text"]',$("#content").on("click","button.git",function(b){return b.preventDefault(),$(a).fadeIn(200),e.form.fadeIn(200),!1}),$("#content").on("keypress",e.input,function(a){return 13==a.keyCode?(a.preventDefault(),$(e.form).submit(),!1):void 0}),$("#content").on("submit",e.selector,function(a){a.preventDefault();var b=e.form.find('input[type="text"]').val();if(""==b)return notification({text:"You have to write something. If you want to close the box, click outside of the box.",type:"warning",timeout:5e3}),!1;var c=new XMLHttpRequest;return c.open("POST","/admin/git"),c.setRequestHeader("Content-Type","application/json;charset=UTF-8"),c.send(JSON.stringify({command:b})),!1}),$("#content").on("click",".close",function(b){return b.preventDefault(),$(this).parent().parent().fadeOut(200),$(a).click(),!1}),$("#content").on("click",a,function(f){return f.preventDefault(),$(a).fadeOut(200),c.form.fadeOut(200),d.form.fadeOut(200),b.form.fadeOut(200),e.form.fadeOut(200),!1})}),$(document).on("page:editor",function(){var a=$(".editor"),b=$("#editor-preview"),c=$("#editor-source");if(a.hasClass("complete")&&$("#content").on("keyup","#site-title",function(){$(".frontmatter #title").val($(this).val())}),!a.hasClass("frontmatter-only")){var d=$("#editor-source").data("mode"),e=$('textarea[name="content"]').hide(),f=ace.edit("editor-source");f.getSession().setMode("ace/mode/"+d),f.getSession().setValue(e.val()),f.getSession().on("change",function(){e.val(f.getSession().getValue())}),f.setOptions({wrap:!0,maxLines:1/0,theme:"ace/theme/github",showPrintMargin:!1,fontSize:"1em",minLines:20}),$("#content").on("click","#see-source",function(a){a.preventDefault(),b.hide(),c.fadeIn(),$(this).addClass("active"),$("#see-preview").removeClass("active"),$("#see-preview").data("previewing","false")}),$("#content").on("click","#see-preview",function(a){if(a.preventDefault(),"true"==$(this).data("previewing"))b.hide(),c.fadeIn(),$(this).removeClass("active"),$("#see-source").addClass("active"),$(this).data("previewing","false");else{var d=new showdown.Converter,e=f.getValue(),g=d.makeHtml(e);c.hide(),b.html(g).fadeIn(),$(this).addClass("active"),$("#see-source").removeClass("active"),$(this).data("previewing","true")}return!1})}$("#content").on("keypress","input",function(a){return 13==a.keyCode?(a.preventDefault(),$('input[value="Save"]').focus().click(),!1):void 0}),$("#content").on("submit","form",function(d){d.preventDefault(),a.hasClass("frontmatter-only")||(b.html("").fadeOut(),$("#see-preview").data("previewing","false"),c.fadeIn());var e=JSON.stringify($(this).serializeJSON()),f=$(this).find("input[type=submit]:focus");return $.ajax({type:"POST",url:window.location,data:e,headers:{"X-Regenerate":f.data("regenerate"),"X-Schedule":f.data("schedule"),"X-Content-Type":f.data("type")},dataType:"json",encode:!0,contentType:"application/json; charset=utf-8"}).done(function(a){notification({text:f.data("message"),type:"success",timeout:5e3})}).fail(function(a){notification({text:"Something went wrong.",type:"error"}),console.log(a)}),!1}),$("#content").on("click",".add",function(a){if(a.preventDefault(),defaultID="lorem-ipsum-sin-dolor-amet",newItem=$("#"+defaultID),newItem.length&&newItem.remove(),block=$(this).parent().parent(),blockType=block.data("type"),blockID=block.attr("id"),"array"==blockType&&(newID=blockID+"[]",input=blockID,input=input.replace(/\[/,"\\["),input=input.replace(/\]/,"\\]"),block.append('
'),newItem.prepend(' ')):(type="","array"==elements[1]?type="array":type="object",template='',template=template.replace("${blockID}",blockID),template=template.replace("${elements[0]}",elements[0]),template=template.replace("${type}",type),newItem.after(template),newItem.remove(),console.log('"'+blockID+'" block of type "'+type+'" added.')),!1))):void 0})}return!1}),$("#content").on("click",".delete",function(a){return a.preventDefault(),button=$(this),name=button.parent().parent().attr("for")||button.parent().parent().attr("id")||button.parent().parent().parent().attr("id"),name=name.replace(/\[/,"\\["),name=name.replace(/\]/,"\\]"),console.log(name),$('label[for="'+name+'"]').fadeOut().remove(),$("#"+name).fadeOut().remove(),!1})}),$.noty.themes.admin={name:"admin",helpers:{},modal:{css:{position:"fixed",width:"100%",height:"100%",backgroundColor:"#000",zIndex:1e4,opacity:.6,display:"none",left:0,top:0}}},$.noty.defaults={layout:"topRight",theme:"admin",dismissQueue:!0,animation:{open:"animated bounceInRight",close:"animated fadeOut",easing:"swing",speed:500},timeout:!1,force:!1,modal:!1,maxVisible:5,killer:!1,closeWith:["click"],callback:{onShow:function(){},afterShow:function(){},onClose:function(){},afterClose:function(){},onCloseClick:function(){}},buttons:!1},notification=function(a){var b;switch(a.type){case"success":b='';break;case"error":b='';break;case"warning":b='';break;case"information":b='';break;default:b=''}var c={template:' '};if(a=$.extend({},c,a),noty(a),!document.cookie.replace(/(?:(?:^|.*;\s*)stickynoties\s*\=\s*([^;]*).*$)|^.*$/,"$1")&&!a.timeout){var d=new Date;d.setDate(d.getDate()+365),document.cookie="stickynoties=true; expires="+d.toUTCString+"; path=/",notification({text:"Some notifications are sticky. If it doesn't go away, click to dismiss it.",type:"information"})}};
\ No newline at end of file
diff --git a/assets/src/js/browse.js b/assets/src/js/browse.js
index c4841dfd..b646af5e 100644
--- a/assets/src/js/browse.js
+++ b/assets/src/js/browse.js
@@ -24,25 +24,29 @@ $(document).on('page:browse', function() {
$('#content').on('submit', remove.selector, function(event) {
event.preventDefault();
- $.ajax({
- type: 'DELETE',
- url: remove.button.data("file")
- }).done(function(data) {
- $(foreground).fadeOut(200);
- remove.form.fadeOut(200);
- remove.row.fadeOut(200);
- notification({
- text: remove.button.data("message"),
- type: 'success',
- timeout: 5000
- });
- }).fail(function(data) {
- notification({
- text: 'Something went wrong.',
- type: 'error'
- });
- console.log(data);
- });
+ var request = new XMLHttpRequest();
+ request.open("DELETE", remove.button.data("file"));
+ request.send();
+ request.onreadystatechange = function() {
+ if (request.readyState == 4) {
+ if (request.status == 200) {
+ $(foreground).fadeOut(200);
+ remove.form.fadeOut(200);
+ remove.row.fadeOut(200);
+ notification({
+ text: remove.button.data("message"),
+ type: 'success',
+ timeout: 5000
+ });
+ } else {
+ notification({
+ text: 'Something went wrong.',
+ type: 'error'
+ });
+ console.log(request.responseText);
+ }
+ }
+ }
return false;
});
@@ -152,32 +156,38 @@ $(document).on('page:browse', function() {
return false;
}
- var content = '{"filename": "' + filename + '", "archetype": "' + archetype + '"}';
+ var content = {
+ filename: filename,
+ archetype: archetype
+ }
- $.ajax({
- type: 'POST',
- url: window.location.pathname,
- data: content,
- dataType: 'json',
- encode: true,
- }).done(function(data) {
- notification({
- text: "File created successfully.",
- type: 'success',
- timeout: 5000
- });
+ var request = new XMLHttpRequest();
+ request.open("POST", window.location.pathname);
+ request.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
+ request.send(JSON.stringify(content));
+ request.onreadystatechange = function() {
+ if (request.readyState == 4) {
+ if (request.status == 200) {
+ var data = JSON.parse(request.responseText);
- $.pjax({
- url: data.Location,
- container: '#content'
- })
- }).fail(function(data) {
- notification({
- text: 'Something went wrong.',
- type: 'error'
- });
- console.log(data);
- });
+ notification({
+ text: "File created successfully.",
+ type: 'success',
+ timeout: 5000
+ });
+ $.pjax({
+ url: data.Location,
+ container: '#content'
+ })
+ } else {
+ notification({
+ text: 'Something went wrong.',
+ type: 'error'
+ });
+ console.log(request.responseText);
+ }
+ }
+ }
return false;
});
@@ -253,6 +263,78 @@ $(document).on('page:browse', function() {
return false;
});
+ /* GIT ACTIONS */
+
+ var git = new Object();
+ git.selector = 'form#git';
+ git.form = $(git.selector);
+ git.input = git.selector + ' input[type="text"]';
+
+ $('#content').on('click', 'button.git', function(event) {
+ event.preventDefault();
+ $(foreground).fadeIn(200);
+ git.form.fadeIn(200);
+ return false;
+ });
+
+ $('#content').on('keypress', git.input, function(event) {
+ if (event.keyCode == 13) {
+ event.preventDefault();
+ $(git.form).submit();
+ return false;
+ }
+ });
+
+ $('#content').on('submit', git.selector, function(event) {
+ event.preventDefault();
+
+ var value = git.form.find('input[type="text"]').val();
+
+ if (value == "") {
+ notification({
+ text: "You have to write something. If you want to close the box, click outside of the box.",
+ type: 'warning',
+ timeout: 5000
+ });
+
+ return false;
+ }
+
+ var request = new XMLHttpRequest();
+ request.open("POST", "/admin/git");
+ request.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
+ request.send(JSON.stringify({
+ command: value
+ }));
+
+ /*$.ajax({
+ type: 'POST',
+ url: window.location.pathname,
+ data: content,
+ dataType: 'json',
+ encode: true,
+ }).done(function(data) {
+ notification({
+ text: "File created successfully.",
+ type: 'success',
+ timeout: 5000
+ });
+
+ $.pjax({
+ url: data.Location,
+ container: '#content'
+ })
+ }).fail(function(data) {
+ notification({
+ text: 'Something went wrong.',
+ type: 'error'
+ });
+ console.log(data);
+ }); */
+
+ return false;
+ });
+
/* $(foreground) AND STUFF */
$('#content').on('click', '.close', function(event) {
@@ -268,6 +350,7 @@ $(document).on('page:browse', function() {
create.form.fadeOut(200);
rename.form.fadeOut(200);
remove.form.fadeOut(200);
+ git.form.fadeOut(200);
return false;
});
});
diff --git a/config/config.go b/config/config.go
index 60273c50..38f2d9e3 100644
--- a/config/config.go
+++ b/config/config.go
@@ -1,6 +1,8 @@
package config
import (
+ "os"
+ "path/filepath"
"strings"
"github.com/hacdias/caddy-hugo/hugo"
@@ -14,6 +16,7 @@ type Config struct {
Styles string // Admin styles path
Args []string // Hugo arguments
Hugo string // Hugo executable path
+ Git bool // Is this site a git repository
}
// ParseHugo parses the configuration file
@@ -21,6 +24,7 @@ func ParseHugo(c *setup.Controller) (*Config, error) {
conf := &Config{
Public: strings.Replace(c.Root, "./", "", -1),
Path: "./",
+ Git: false,
}
conf.Hugo = hugo.GetPath()
@@ -59,5 +63,9 @@ func ParseHugo(c *setup.Controller) (*Config, error) {
}
}
+ if _, err := os.Stat(filepath.Join(conf.Path, ".git")); err == nil {
+ conf.Git = true
+ }
+
return conf, nil
}
diff --git a/hugo.go b/hugo.go
index 001d0cb5..79ba7c72 100644
--- a/hugo.go
+++ b/hugo.go
@@ -1,6 +1,6 @@
//go:generate go get github.com/jteeuwen/go-bindata
//go:generate go install github.com/jteeuwen/go-bindata/go-bindata
-//go:generate go-bindata -pkg assets -o assets/assets.go templates/ assets/css/ assets/js/ assets/fonts/
+//go:generate go-bindata -debug -pkg assets -o assets/assets.go templates/ assets/css/ assets/js/ assets/fonts/
// Package hugo makes the bridge between the static website generator Hugo
// and the webserver Caddy, also providing an administrative user interface.
diff --git a/templates/browse.tmpl b/templates/browse.tmpl
index 70cf06fb..b496595a 100644
--- a/templates/browse.tmpl
+++ b/templates/browse.tmpl
@@ -7,9 +7,9 @@
Path: {{ $path }}