Added Markdown editor and Javascript code refactoring

This commit is contained in:
Frederic Guillot
2016-03-20 15:45:02 -04:00
parent 787e91ca41
commit f77d6c590b
64 changed files with 1154 additions and 3644 deletions

View File

@@ -1,48 +1,59 @@
function Markdown() {
}
Kanboard.Markdown = function(app) {
this.app = app;
this.editor = null;
};
Markdown.prototype.showPreview = function(e) {
e.preventDefault();
Kanboard.Markdown.prototype.onPopoverOpened = function() {
this.listen();
};
var write = $(".write-area");
var preview = $(".preview-area");
var textarea = $("textarea");
Kanboard.Markdown.prototype.onPopoverClosed = function() {
this.listen();
};
$("#markdown-write").parent().removeClass("form-tab-selected");
$("#markdown-preview").parent().addClass("form-tab-selected");
Kanboard.Markdown.prototype.listen = function() {
var editors = $(".markdown-editor");
var request = $.ajax({
url: $("body").data("markdown-preview-url"),
contentType: "application/json",
type: "POST",
processData: false,
dataType: "html",
data: JSON.stringify({
"text": textarea.val()
})
});
if (this.editor) {
this.destroy();
}
request.done(function(data) {
preview.find(".markdown").html(data)
preview.css("height", textarea.css("height"));
preview.css("width", textarea.css("width"));
if (editors.length > 0) {
this.show(editors[0]);
}
};
write.hide();
preview.show();
Kanboard.Markdown.prototype.destroy = function() {
var cm = this.editor.codemirror;
var wrapper = cm.getWrapperElement();
for (var item in ["toolbar", "statusbar", "sideBySide"]) {
if (this.editor.gui[item]) {
wrapper.parentNode.removeChild(this.editor.gui[item]);
}
}
cm.toTextArea();
this.editor = null;
};
Kanboard.Markdown.prototype.show = function(textarea) {
var toolbar = ["bold", "italic", "strikethrough", "heading", "|", "unordered-list", "ordered-list", "link", "|", "code", "table"];
this.editor = new SimpleMDE({
element: textarea,
status: false,
toolbarTips: false,
autoDownloadFontAwesome: false,
spellChecker: false,
autosave: {
enabled: false
},
forceSync: true,
blockStyles: {
italic: "_"
},
toolbar: textarea.hasAttribute("data-markdown-editor-disable-toolbar") ? false : toolbar,
placeholder: textarea.getAttribute("placeholder")
});
};
Markdown.prototype.showWriter = function(e) {
e.preventDefault();
$("#markdown-write").parent().addClass("form-tab-selected");
$("#markdown-preview").parent().removeClass("form-tab-selected");
$(".write-area").show();
$(".preview-area").hide();
};
Markdown.prototype.listen = function() {
$(document).on("click", "#markdown-preview", this.showPreview.bind(this));
$(document).on("click", "#markdown-write", this.showWriter.bind(this));
};