Files
Umbraco-CMS/umbraco/presentation/umbraco_client/CodeArea/javascript.js
Shandem 40ee7aeae4 DO NOT DOWNLOAD, STABLE RELEASE AVAILABLE ON THE RELEASES TAB
Fixes more IE issues with code editor, streamline JS for editor.

[TFS Changeset #59401]
2009-09-23 15:37:06 +00:00

167 lines
5.3 KiB
JavaScript

function resizeTextArea(textEditor, offsetX, offsetY) {
var clientHeight = getViewportHeight();
var clientWidth = getViewportWidth();
if (textEditor != null) {
textEditor.style.width = (clientWidth - offsetX) + "px";
textEditor.style.height = (clientHeight - getY(textEditor) - offsetY) + "px";
}
}
// Ctrl + S support
var ctrlDown = false;
var shiftDown = false;
var keycode = 0
function shortcutCheckKeysDown(e) {
ctrlDown = e.ctrlKey;
shiftDown = e.shiftKey;
keycode = e.keyCode;
//save
if (ctrlDown && keycode == 83) {
doSubmit();
if (window.addEventListener) {
e.preventDefault();
} else
return false;
}
//load the insert value dialog: ctrl + g
if (ctrlDown && keycode == 71) {
umbracoInsertField('', 'xsltInsertValueOf', '', 'felt', 750, 230, '');
if (window.addEventListener) {
e.preventDefault();
} else
return false;
}
}
function shortcutCheckKeysUp(e) {
ctrlDown = e.ctrlKey;
shiftDown = e.shiftKey;
}
function shortcutCheckKeysPressFirefox(e) {
if (ctrlDown && keycode == 83)
e.preventDefault();
}
if (window.addEventListener) {
document.addEventListener('keyup', shortcutCheckKeysUp, false);
document.addEventListener('keydown', shortcutCheckKeysDown, false);
document.addEventListener('keypress', shortcutCheckKeysPressFirefox, false);
} else {
document.attachEvent("onkeyup", shortcutCheckKeysUp);
document.attachEvent("onkeydown", shortcutCheckKeysDown);
}
var tab = {
key: 9,
string: "\t",
nl2br: true,
tosp: true,
watching: {},
results: {},
$: function(id) {
return document.getElementById(id);
},
watch: function(obj) {
if (obj && this.$(obj)) {
this.watching["_" + obj] = this.$(obj);
this.addEvent(this.$(obj), "keydown", function(evt) {
var sct = tab.$(obj).scrollTop;
var l = tab.$(obj).value.length;
var evt = (evt) ? evt : ((window.event) ? event : null);
if (evt) {
var elem = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
if (elem) {
var char_code = (evt.charCode) ? evt.charCode : ((evt.which) ? evt.which : evt.keyCode);
if (char_code == tab.key) {
if (tab.$(obj).attachEvent) {
var range = document.selection.createRange();
range.text = tab.string;
range.moveStart("character", -1);
//range.select();
} else if (typeof tab.$(obj).selectionStart != "undefined") {
var start = tab.$(obj).value.substr(0, tab.$(obj).selectionStart);
var end = tab.$(obj).value.substr(tab.$(obj).selectionStart, l);
var selection = tab.$(obj).value.replace(start, "").replace(end, "")
tab.$(obj).value = start + tab.string + selection + end;
tab.$(obj).setSelectionRange(start.length + 1, start.length + 1);
tab.$(obj).scrollTop = sct;
} else {
tab.$(obj).value += tab.string;
}
if (evt.preventDefault) {
evt.preventDefault();
evt.stopPropagation();
} else {
evt.returnValue = false;
evt.cancelBubble = true;
}
return false;
}
}
}
});
}
},
click: function(obj, fn) {
if (obj && this.$(obj)) {
this.addEvent(this.$(obj), "click", function() {
tab.results["_" + this.id.split("_")[1]] = tab.parse(tab.watching["_" + this.id.split("_")[1]].value);
if (fn && fn.constructor == Function) {
fn();
}
});
}
},
get: function(obj) {
if (obj && this.$(obj)) {
return this.results["_" + obj];
}
},
parse: function(str) {
var str = (str) ? str : "";
if (str.length) {
if (this.tosp) {
str = str.replace(/\t/g, "   ");
}
if (this.nl2br) {
str = str.replace(/\r?\n/g, "<br />");
}
}
return str;
},
addEvent: function(obj, type, fn) {
if (obj.attachEvent) {
obj["e" + type + fn] = fn;
obj[type + fn] = function() {
obj["e" + type + fn](window.event);
}
obj.attachEvent("on" + type, obj[type + fn]);
} else {
obj.addEventListener(type, fn, false);
}
}
};