git-svn-id: https://192.168.0.254/svn/Proyectos.Incam_SGD/tags/3.7.0.2_original@1 eb19766c-00d9-a042-a3a0-45cb8ec72764
116 lines
2.7 KiB
JavaScript
116 lines
2.7 KiB
JavaScript
/*
|
|
* general utility functions for KT
|
|
*/
|
|
|
|
var clientHas = {
|
|
'Event' : window.Event ? true : false,
|
|
'addEventListener' : window.addEventListener ? true : false
|
|
}
|
|
|
|
var message;
|
|
|
|
function addEvent(obj, event, func, capture) {
|
|
if (obj.attachEvent) { obj.attachEvent('on'+event, func); }
|
|
else { obj.addEventListener(event, func, capture); }
|
|
}
|
|
|
|
function getTarget() {
|
|
if(clientHas['Event'])
|
|
return getTarget.caller.arguments[0].target;
|
|
else
|
|
return event.srcElement;
|
|
}
|
|
|
|
|
|
|
|
function confirmDelete(e) {
|
|
var target = getTarget();
|
|
if(!isUndefinedOrNull(target)) {
|
|
var msg = target.getAttribute('kt:deleteMessage');
|
|
}
|
|
|
|
if(!isUndefinedOrNull(msg)) {
|
|
var v = confirm(msg);
|
|
} else {
|
|
var v = confirm(message);
|
|
}
|
|
|
|
if (v == false) {
|
|
if (e.stopPropagation) {
|
|
e.stopPropagation();
|
|
e.preventDefault();
|
|
}
|
|
else if (window.event)
|
|
return false;
|
|
}
|
|
return v;
|
|
}
|
|
|
|
function initDeleteProtection(m) {
|
|
function setClickFunction(fn, node) {
|
|
// addToCallStack(node,'onClick',fn);
|
|
if (node.tagName == 'SPAN') {
|
|
var ahrefs = node.getElementsByTagName('A');
|
|
if (ahrefs.length == 1) { node = ahrefs[0]; }
|
|
else { return null; }
|
|
}
|
|
|
|
addEvent(node, 'click', fn, true);
|
|
}
|
|
|
|
var fn = confirmDelete;
|
|
message = m;
|
|
|
|
var elements = getElementsByTagAndClassName(null,'ktDelete');
|
|
forEach(elements, partial(setClickFunction, fn));
|
|
|
|
elements = getElementsByTagAndClassName(null,'ktLinkDelete');
|
|
forEach(elements, partial(setClickFunction, fn));
|
|
}
|
|
|
|
// quick and dirty helper - find the nearest parent item matching tagName.
|
|
// FIXME steal the klass or tagName logic from MochiK.
|
|
// FIXME add to a core js-lib, and add some unit-tests.
|
|
function breadcrumbFind(elem, tagName) {
|
|
var stopTag = 'BODY';
|
|
var currentTag = elem.tagName;
|
|
var currentElem = elem;
|
|
while ((currentTag != stopTag) && (currentTag != tagName)) {
|
|
currentElem = currentElem.parentNode;
|
|
currentTag = currentElem.tagName;
|
|
}
|
|
if (currentTag == tagName) {
|
|
return currentElem;
|
|
} else {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// JSON stuff
|
|
|
|
// callback to check for not_logged_in error, throw
|
|
function checkKTError(res) {
|
|
if(res.error) {
|
|
if(res.alert) {
|
|
alert(res.message);
|
|
}
|
|
throw new NamedError(res.type);
|
|
}
|
|
return res;
|
|
}
|
|
|
|
// Sets
|
|
function Set() {
|
|
var set = {};
|
|
forEach(arguments, function(k) { set[k] = 1; });
|
|
return set;
|
|
}
|
|
|
|
// Disable DnD on element
|
|
// Element has to have a readOnly status set to readonly
|
|
function disableDnd(el_id){
|
|
el = document.getElementById(el_id);
|
|
el.removeAttribute('readOnly');
|
|
} |