2015-09-19 13:25:35 +00:00
|
|
|
$(document).ready(function() {
|
2015-09-20 10:03:17 +00:00
|
|
|
$(document).pjax('a[data-pjax]', '#content');
|
2015-09-19 13:25:35 +00:00
|
|
|
});
|
|
|
|
|
|
|
|
$(document).on('ready pjax:success', function() {
|
|
|
|
// Starts the perfect scroolbar plugin
|
|
|
|
$('.scroll').perfectScrollbar();
|
|
|
|
|
|
|
|
// Log out the user sending bad credentials to the server
|
2015-09-19 18:26:51 +00:00
|
|
|
$("#logout").click(function(event) {
|
|
|
|
event.preventDefault();
|
2015-09-19 13:25:35 +00:00
|
|
|
$.ajax({
|
|
|
|
type: "GET",
|
|
|
|
url: "/admin",
|
|
|
|
async: false,
|
|
|
|
username: "username",
|
|
|
|
password: "password",
|
|
|
|
headers: {
|
|
|
|
"Authorization": "Basic xxx"
|
|
|
|
}
|
|
|
|
}).fail(function() {
|
|
|
|
window.location = "/";
|
|
|
|
});
|
|
|
|
return false;
|
|
|
|
});
|
|
|
|
|
2015-09-20 10:29:31 +00:00
|
|
|
// Delete a file or a field in editor
|
2015-09-20 12:04:33 +00:00
|
|
|
$("body").on('click', '.delete', function(event) {
|
2015-09-20 10:29:31 +00:00
|
|
|
event.preventDefault();
|
|
|
|
button = $(this);
|
|
|
|
|
|
|
|
if (button.data("file") && confirm("Are you sure you want to delete this?")) {
|
|
|
|
$.ajax({
|
|
|
|
type: 'DELETE',
|
|
|
|
url: button.data("file")
|
|
|
|
}).done(function(data) {
|
|
|
|
button.parent().parent().fadeOut();
|
|
|
|
notification({
|
|
|
|
text: button.data("message"),
|
|
|
|
type: 'success',
|
|
|
|
timeout: 5000
|
|
|
|
});
|
|
|
|
}).fail(function(data) {
|
|
|
|
notification({
|
|
|
|
text: 'Something went wrong.',
|
|
|
|
type: 'error'
|
|
|
|
});
|
|
|
|
console.log(data);
|
|
|
|
});
|
|
|
|
} else {
|
2015-09-20 12:28:47 +00:00
|
|
|
name = button.parent().parent().attr("for") || button.parent().parent().attr("id") || button.parent().parent().parent().attr("id");
|
2015-09-20 12:04:33 +00:00
|
|
|
name = name.replace(/\[/, '\\[');
|
|
|
|
name = name.replace(/\]/, '\\]');
|
2015-09-20 10:29:31 +00:00
|
|
|
console.log(name)
|
|
|
|
|
|
|
|
$('label[for="' + name + '"]').fadeOut().remove();
|
2015-09-20 12:04:33 +00:00
|
|
|
$('#' + name).fadeOut().remove();
|
2015-09-20 10:29:31 +00:00
|
|
|
}
|
2015-09-20 12:04:33 +00:00
|
|
|
|
|
|
|
return false;
|
2015-09-20 10:29:31 +00:00
|
|
|
});
|
|
|
|
|
2015-09-19 13:25:35 +00:00
|
|
|
// If it's editor page
|
|
|
|
if ($(".editor")[0]) {
|
|
|
|
editor = false;
|
|
|
|
preview = $("#preview-area");
|
|
|
|
textarea = $("#content-area");
|
|
|
|
|
2015-09-20 12:04:33 +00:00
|
|
|
$('body').on('keypress', 'input', function(event) {
|
|
|
|
if (event.keyCode == 13) {
|
|
|
|
event.preventDefault();
|
|
|
|
$('input[value="Save"]').focus().click();
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2015-09-19 18:26:51 +00:00
|
|
|
// If it has a textarea
|
2015-09-19 13:25:35 +00:00
|
|
|
if (textarea[0]) {
|
|
|
|
options = {
|
2015-09-19 13:47:59 +00:00
|
|
|
mode: textarea.data("mode"),
|
2015-09-19 13:25:35 +00:00
|
|
|
theme: 'mdn-like',
|
|
|
|
lineWrapping: true,
|
|
|
|
lineNumbers: true,
|
|
|
|
scrollbarStyle: null
|
|
|
|
}
|
|
|
|
|
2015-09-19 13:47:59 +00:00
|
|
|
if (textarea.data("mode") == "markdown") {
|
2015-09-19 13:25:35 +00:00
|
|
|
options.lineNumbers = false
|
|
|
|
}
|
|
|
|
|
|
|
|
editor = CodeMirror.fromTextArea(textarea[0], options);
|
2015-09-19 18:26:51 +00:00
|
|
|
codemirror = $('.CodeMirror');
|
|
|
|
|
|
|
|
// Toggles between preview and editing mode
|
|
|
|
$("#preview").click(function(event) {
|
|
|
|
event.preventDefault();
|
|
|
|
|
|
|
|
// If it currently in the preview mode, hide the preview
|
|
|
|
// and show the editor
|
|
|
|
if ($(this).data("previewing") == "true") {
|
|
|
|
preview.hide();
|
|
|
|
codemirror.fadeIn();
|
|
|
|
$(this).data("previewing", "false");
|
|
|
|
notification({
|
|
|
|
text: "Think, relax and do the better you can!",
|
|
|
|
type: 'information',
|
|
|
|
timeout: 2000
|
|
|
|
});
|
|
|
|
} else {
|
|
|
|
// Copy the editor content to texteare
|
|
|
|
editor.save()
|
|
|
|
|
|
|
|
// If it's in editing mode, convert the markdown to html
|
|
|
|
// and show it
|
|
|
|
var converter = new showdown.Converter(),
|
|
|
|
text = textarea.val(),
|
|
|
|
html = converter.makeHtml(text);
|
|
|
|
|
|
|
|
// Hide the editor and show the preview
|
|
|
|
codemirror.hide();
|
|
|
|
preview.html(html).fadeIn();
|
2015-09-20 09:33:23 +00:00
|
|
|
$('pre code').each(function(i, block) {
|
|
|
|
hljs.highlightBlock(block);
|
|
|
|
return true;
|
|
|
|
});
|
|
|
|
|
2015-09-19 18:26:51 +00:00
|
|
|
$(this).data("previewing", "true");
|
|
|
|
notification({
|
|
|
|
text: "This is how your post looks like.",
|
|
|
|
type: 'information',
|
|
|
|
timeout: 2000
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
return false;
|
|
|
|
});
|
2015-09-19 13:25:35 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// Submites any form in the page in JSON format
|
|
|
|
$('form').submit(function(event) {
|
|
|
|
event.preventDefault();
|
|
|
|
var data = JSON.stringify($(this).serializeJSON()),
|
|
|
|
button = $(this).find("input[type=submit]:focus");
|
|
|
|
|
|
|
|
$.ajax({
|
|
|
|
type: 'POST',
|
|
|
|
url: window.location,
|
|
|
|
data: data,
|
|
|
|
headers: {
|
|
|
|
'X-Regenerate': button.data("regenerate"),
|
|
|
|
'X-Content-Type': button.data("type")
|
|
|
|
},
|
|
|
|
dataType: 'json',
|
|
|
|
encode: true,
|
|
|
|
}).done(function(data) {
|
|
|
|
notification({
|
|
|
|
text: button.data("message"),
|
|
|
|
type: 'success',
|
|
|
|
timeout: 5000
|
|
|
|
});
|
|
|
|
}).fail(function(data) {
|
|
|
|
notification({
|
|
|
|
text: 'Something went wrong.',
|
|
|
|
type: 'error'
|
|
|
|
});
|
|
|
|
console.log(data);
|
|
|
|
});
|
2015-09-19 18:26:51 +00:00
|
|
|
|
2015-09-20 12:04:33 +00:00
|
|
|
return false;
|
2015-09-19 13:25:35 +00:00
|
|
|
});
|
|
|
|
|
|
|
|
// Adds one more field to the current group
|
2015-09-20 12:04:33 +00:00
|
|
|
$("body").on('click', '.add', function(event) {
|
2015-09-19 18:26:51 +00:00
|
|
|
event.preventDefault();
|
|
|
|
|
|
|
|
if ($("#new").length) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
title = $(this).parent().parent();
|
|
|
|
fieldset = title.parent();
|
|
|
|
type = fieldset.data("type");
|
2015-09-20 12:04:33 +00:00
|
|
|
name = fieldset.attr("id");
|
2015-09-19 18:26:51 +00:00
|
|
|
|
|
|
|
if (title.is('h1')) {
|
2015-09-20 12:04:33 +00:00
|
|
|
fieldset = $('.frontmatter .container');
|
2015-09-19 18:26:51 +00:00
|
|
|
fieldset.prepend('<div id="ghost"></div>');
|
|
|
|
title = $('#ghost');
|
|
|
|
type = "object";
|
|
|
|
}
|
|
|
|
|
|
|
|
if (type == "object") {
|
|
|
|
title.after('<input id="new" placeholder="Write the field name and press enter..."></input>');
|
|
|
|
element = $("#new");
|
|
|
|
|
2015-09-20 12:04:33 +00:00
|
|
|
if (!Cookies.get('placeholdertip')) {
|
|
|
|
Cookies.set('placeholdertip', 'true', {
|
|
|
|
expires: 365
|
|
|
|
});
|
|
|
|
|
|
|
|
notification({
|
|
|
|
text: 'Write the field name and then press enter. If you want to create an array or an object, end the name with ":array" or ":object".',
|
|
|
|
type: 'information'
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2015-09-19 18:26:51 +00:00
|
|
|
$(element).keypress(function(event) {
|
|
|
|
if (event.which == 13) {
|
|
|
|
event.preventDefault();
|
|
|
|
value = element.val();
|
|
|
|
|
|
|
|
if (value == "") {
|
2015-09-20 12:04:33 +00:00
|
|
|
element.remove();
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
elements = value.split(":")
|
|
|
|
|
|
|
|
if (elements.length > 2) {
|
|
|
|
notification({
|
|
|
|
text: "Invalid syntax. It must be 'name[:type]'.",
|
|
|
|
type: 'error'
|
|
|
|
});
|
2015-09-19 18:26:51 +00:00
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
2015-09-20 12:04:33 +00:00
|
|
|
element.remove();
|
|
|
|
|
2015-09-19 18:26:51 +00:00
|
|
|
if (name == "undefined") {
|
2015-09-20 12:04:33 +00:00
|
|
|
name = elements[0]
|
2015-09-19 18:26:51 +00:00
|
|
|
} else {
|
2015-09-20 12:04:33 +00:00
|
|
|
name = name + '[' + elements[0] + ']';
|
2015-09-19 18:26:51 +00:00
|
|
|
}
|
|
|
|
|
2015-09-20 12:04:33 +00:00
|
|
|
if (elements.length == 1) {
|
|
|
|
title.after('<input name="' + name + ':auto" id="' + name + '"></input><br>');
|
|
|
|
title.after('<label for="' + name + '">' + value + ' <span class="actions"><button class="delete"><i class="fa fa-minus"></i></button></span></label>');
|
|
|
|
} else {
|
|
|
|
var fieldset = "<fieldset id=\"{{ $value.Name }}\" data-type=\"{{ $value.Type }}\">\r\n<h3>{{ $value.Title }}\r\n<span class=\"actions\">\r\n<button class=\"add\"><i class=\"fa fa-plus\"><\/i><\/button>\r\n<button class=\"delete\"><i class=\"fa fa-minus\"><\/i><\/button>\r\n<\/span>\r\n<\/h3>\r\n<\/fieldset>";
|
|
|
|
|
|
|
|
if (elements[1] == "array") {
|
|
|
|
fieldset = fieldset.replace("{{ $value.Type }}", "array");
|
|
|
|
} else {
|
|
|
|
fieldset = fieldset.replace("{{ $value.Type }}", "object");
|
|
|
|
}
|
|
|
|
|
|
|
|
fieldset = fieldset.replace("{{ $value.Title }}", elements[0]);
|
|
|
|
fieldset = fieldset.replace("{{ $value.Name }}", name);
|
|
|
|
title.after(fieldset);
|
|
|
|
}
|
2015-09-19 18:26:51 +00:00
|
|
|
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
if (type == "array") {
|
|
|
|
name = name + "[]";
|
2015-09-20 12:28:47 +00:00
|
|
|
input = name;
|
|
|
|
input = input.replace(/\[/, '\\[');
|
|
|
|
input = input.replace(/\]/, '\\]');
|
|
|
|
input = '#' + input;
|
|
|
|
|
|
|
|
title.after('<div id="' + name + '-' + $(input).length + '" data-type="array-item"><input name="' + name + ':auto" id="' + name + '"></input></div>');
|
2015-09-19 18:26:51 +00:00
|
|
|
}
|
|
|
|
|
2015-09-19 13:25:35 +00:00
|
|
|
return false;
|
|
|
|
});
|
|
|
|
}
|
2015-09-19 18:26:51 +00:00
|
|
|
});
|