Files
aportil/themes/sources/dhtmlxTree/codebase/ext/dhtmlxtree_li.js

194 lines
5.3 KiB
JavaScript

/*
Product Name: dhtmlxSuite
Version: 5.2.0
Edition: Professional
License: content of this file is covered by DHTMLX Commercial or Enterprise license. Usage without proper license is prohibited. To obtain it contact sales@dhtmlx.com
Copyright UAB Dinamenta http://www.dhtmlx.com
*/
/*
Purpose: locked item extension for dhtmlxTree
Last updated: 11.01.2006
*/
/**
* @desc: get locked state of item
* @param: itemId - id of item
* @returns: true/false - locked/unlocked
* @edition: Professional
* @type: public
* @topic: 4
*/
dhtmlXTreeObject.prototype.isLocked=function(itemId)
{
if (!this._locker) this._init_lock();
return (this._locker[itemId]==true);
};
dhtmlXTreeObject.prototype._lockItem=function(sNode,state,skipdraw){
if (!this._locker) this._init_lock();
if (state){
if (this._locker[sNode.id]==true) return;
this._locker[sNode.id]=true;
sNode.bIm0=sNode.images[0];
sNode.bIm1=sNode.images[1];
sNode.bIm2=sNode.images[2];
sNode.images[0]=this.lico0;
sNode.images[1]=this.lico1;
sNode.images[2]=this.lico2;
var z1=sNode.span.parentNode;
var z2=z1.previousSibling;
this.dragger.removeDraggableItem(z1);
this.dragger.removeDraggableItem(z2);
}
else{
if (this._locker[sNode.id]!=true) return;
this._locker[sNode.id]=false;
sNode.images[0]=sNode.bIm0;
sNode.images[1]=sNode.bIm1;
sNode.images[2]=sNode.bIm2;
var z1=sNode.span.parentNode;
var z2=z1.previousSibling;
this.dragger.addDraggableItem(z1,this);
this.dragger.addDraggableItem(z2,this);
}
if (!skipdraw) this._correctPlus(sNode);
}
/**
* @desc: lock/unlock item
* @param: itemId - id of item
* @param: state - true/false - lock/unlock item
* @edition: Professional
* @type: public
* @topic: 4
*/
dhtmlXTreeObject.prototype.lockItem=function(itemId,state)
{
if (!this._locker) this._init_lock();
this._lockOn=false;
var sNode=this._globalIdStorageFind(itemId);
this._lockOn=true;
this._lockItem(sNode,dhx4.s2b(state));
}
/**
* @desc: set icon for locked items
* @param: im0 - icon for locked leaf
* @param: im1 - icon for closed branch
* @param: im2 - icon for opened branch
* @edition: Professional
* @type: public
* @topic: 4
*/
dhtmlXTreeObject.prototype.setLockedIcons=function(im0,im1,im2)
{
if (!this._locker) this._init_lock();
this.lico0=im0;
this.lico1=im1;
this.lico2=im2;
};
dhtmlXTreeObject.prototype._init_lock=function()
{
this._locker=new Array();
this._locker_count="0";
this._lockOn=true;
this._globalIdStorageFindA=this._globalIdStorageFind;
this._globalIdStorageFind=this._lockIdFind;
if (this._serializeItem){
this._serializeItemA=this._serializeItem;
this._serializeItem=this._serializeLockItem;
this._serializeTreeA=this.serializeTree;
this.serializeTree=this._serializeLockTree;
}
this.setLockedIcons(this.imageArray[0],this.imageArray[1],this.imageArray[2]);
};
dhtmlXTreeObject.prototype._lockIdFind=function(itemId,skipXMLSearch,skipParsing)
{
if (!this.skipLock)
if ((!skipParsing)&&(this._lockOn==true)&&(this._locker[itemId]==true)) { return null; }
return this._globalIdStorageFindA(itemId,skipXMLSearch,skipParsing);
};
dhtmlXTreeObject.prototype._serializeLockItem=function(node)
{
if (this._locker[node.id]==true) return "";
return this._serializeItemA(node);
};
dhtmlXTreeObject.prototype._serializeLockTree=function()
{
var out=this._serializeTreeA();
return out.replace(/<item[^>]+locked\=\"1\"[^>]+\/>/g,"");
};
dhtmlXTreeObject.prototype._moveNodeToA=dhtmlXTreeObject.prototype._moveNodeTo;
dhtmlXTreeObject.prototype._moveNodeTo=function(itemObject,targetObject,beforeNode){
if ((targetObject.treeNod.isLocked)&&(targetObject.treeNod.isLocked(targetObject.id))) {
return false;
}
return this._moveNodeToA(itemObject,targetObject,beforeNode);
}
/**
* @desc: lock tree
* @param: isLock - bool value. True - lock, false - unlock
* @edition: Professional
* @type: public
* @topic: 4
*/
dhtmlXTreeObject.prototype.lockTree=function(isLock)
{
if (dhx4.s2b(isLock))
this._initTreeLocker();
else
if (this._TreeLocker) {
this._TreeLocker.parentNode.removeChild(this._TreeLocker);
this._TreeLocker=null;
}
};
dhtmlXTreeObject.prototype._initTreeLocker=function(isLock)
{
if (this._TreeLocker) return;
this.parentObject.style.overflow="hidden";
if (this.parentObject.style.position != 'absolute')
this.parentObject.style.position = 'relative';
var div = document.createElement('div');
div.style.position = 'absolute';
div.style.left = '0px';
div.style.top = '0px';
div.className = 'dhx_tree_opacity';
div.style.width = this.allTree.offsetWidth+'px';
div.style.backgroundColor = '#FFFFFF';
div.style.height = this.allTree.offsetHeight+'px';
//div.style.display = 'none';
this._TreeLocker = div;
this.parentObject.appendChild(this._TreeLocker);
};
//(c)dhtmlx ltd. www.dhtmlx.com