humhub/js/markdownEditor.js
2015-10-06 18:52:25 +02:00

129 lines
5.9 KiB
JavaScript

// Newly uploaded file
var newFile = "";
function initMarkdownEditor(elementId) {
$("body").append($("#markdownEditor_dialogs_"+elementId).html());
$("#" + elementId).markdown({
iconlibrary: 'fa',
resize: 'vertical',
additionalButtons: [
[{
name: "groupCustom",
data: [{
name: "cmdLinkWiki",
title: "URL/Link",
icon: {glyph: 'glyphicon glyphicon-link', fa: 'fa fa-link', 'fa-3': 'icon-link'},
callback: function(e) {
addLinkModal = $('#addLinkModal_'+elementId);
linkTitleField = addLinkModal.find('.linkTitle');
linkTargetField = addLinkModal.find('.linkTarget');
addLinkModal.find(".close").off('click');
addLinkModal.modal('show');
linkTitleField.val(e.getSelection().text);
if (linkTitleField.val() == "") {
linkTitleField.focus();
} else {
linkTargetField.focus();
}
addLinkModal.find('.addLinkButton').off('click');
addLinkModal.find('.addLinkButton').on('click', function() {
chunk = "[" + linkTitleField.val() + "](" + linkTargetField.val() + ")";
selected = e.getSelection(), content = e.getContent(),
e.replaceSelection(chunk);
cursor = selected.start;
e.setSelection(cursor, cursor + chunk.length);
addLinkModal.modal('hide')
});
addLinkModal.on('hide.bs.modal', function(ee) {
linkTitleField.val("");
linkTargetField.val("");
})
}
},
{
name: "cmdImgWiki",
title: "Image/File",
icon: {glyph: 'glyphicon glyphicon-picture', fa: 'fa fa-picture-o', 'fa-3': 'icon-picture'},
callback: function(e) {
newFile = "";
addFileModal = $('#addFileModal_'+elementId);
addFileModal.modal('show');
addFileModal.find(".uploadForm").show();
addFileModal.find(".uploadProgress").hide();
addFileModal.on('hide.bs.modal', function(ee) {
if (newFile != "") {
if (newFile.mimeBaseType == "image") {
chunk = "![" + newFile.name + "](file-guid-" + newFile.guid + ")";
} else {
chunk = "[" + newFile.name + "](file-guid-" + newFile.guid + ")";
}
selected = e.getSelection(), content = e.getContent(),
e.replaceSelection(chunk);
cursor = selected.start;
e.setSelection(cursor, cursor + chunk.length);
}
})
}
},
]
}]
],
reorderButtonGroups: ["groupFont", "groupCustom", "groupMisc", "groupUtil"],
onPreview: function(e) {
$.ajax({
type: "POST",
url: markdownPreviewUrl,
data: {
markdown: e.getContent(),
}
}).done(function(previewHtml) {
$('#markdownpreview_'+elementId).html(previewHtml);
});
var previewContent = "<div id='markdownpreview_"+elementId+"'><div class='loader'></div></div>";
return previewContent;
}
});
$('#addFileModal_'+elementId).find(".uploadProgress").hide();
$('#addFileModal_'+elementId).find('.fileUploadButton').fileupload({
dataType: 'json',
done: function(e, data) {
$.each(data.result.files, function(index, file) {
addFileModal = $('#addFileModal_'+elementId);
if (!file.error) {
newFile = file;
hiddenValueField = $('#fileUploaderHiddenGuidField_'+elementId);
hiddenValueField.val(hiddenValueField.val() + "," + file.guid);
addFileModal.modal('hide');
} else {
alert("file upload error");
}
});
},
progressall: function(e, data) {
newFile = "";
addFileModal = $('#addFileModal_'+elementId);
var progress = parseInt(data.loaded / data.total * 100, 10);
addFileModal.find(".uploadForm").hide();
addFileModal.find(".uploadProgress").show();
if (progress == 100) {
addFileModal.find(".uploadProgress").hide();
addFileModal.find(".uploadForm").hide();
}
}
}).prop('disabled', !$.support.fileInput).parent().addClass($.support.fileInput ? undefined : 'disabled');
}