1
1
mirror of https://github.com/aelve/guide.git synced 2024-11-27 10:10:50 +03:00
guide/templates/utils/editors.widget
2016-08-19 04:07:45 +03:00

55 lines
1.8 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Description
============================================================
Javascript functions for creating editing widgets.
The “settings” object must have the following fields:
* rows number of rows the text field must have by default
* text initial text in the text field
* hint the instruction below the editor (like “press Ctrl+Enter to save”)
* saveAction(text) a function to be executed on Save or Ctrl+Enter
* cancelAction a function to be executed on Cancel or Escape
JS
============================================================
// Returns a list of elements.
function bigEditor(settings) {
var template =
'<textarea class="big fullwidth editor-area"\
autocomplete="off">\
</textarea>\
<input type="button" value="Save" style="right-margin:6px">\
<input type="button" value="Cancel" style="right-margin:6px">\
<span class="edit-field-instruction"></span>\
<a href="/markdown" target="_blank">Markdown</a>';
var editor = $('<div>').html(template);
var editorArea = $(editor).find(".editor-area")[0];
$(editorArea).attr("rows", settings.rows);
editorArea.value = settings.text;
editorArea.onkeydown = function (event) {
// Ctrl+Enter
if ((event.keyCode == 13 || event.keyCode == 10) &&
(event.metaKey || event.ctrlKey)) {
settings.saveAction(editorArea.value);
return false; }
// Escape
if (event.keyCode == 27) {
settings.cancelAction();
return false; }
};
$(editor).find("[type=button]")[0].onclick = function () {
settings.saveAction(editorArea.value); };
$(editor).find("[type=button]")[1].onclick = function () {
settings.cancelAction(); };
$(editor).find(".edit-field-instruction").text(settings.hint);
return editor.contents();
}