blob: d9403a9382a04067765add6cf764c20df13782b4 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
var currentOver = '';
var saveMoveNode = 0;
var moveitem;
var nomove = 0;
var dragnode = {hoverid: 0, dragid: 0, startX: 0, startY: 0};
var mouseontree = 0;
var dragging = 0;
var nodedropdata = 0;
function moveData() {
this.oldparentid = '';
this.oldparentobj = '';
this.oldparentset = 0;
this.newparentid = '';
this.newparentobj = '';
this.newparentset = 0;
this.moveid = '';
this.moveobj = '';
this.moveset = 0;
}
function generalPrivCB(data, ioArgs) {
eval(data);
unsetLoading2();
}
function setLoading2(duration) {
dijit.byId('workingDialog').duration = duration;
document.body.style.cursor = 'wait';
if(dijit.byId('workingDialog')) {
var obj = dijit.byId('workingDialog');
obj.show();
}
}
function unsetLoading2() {
document.body.style.cursor = 'default';
if(dijit.byId('workingDialog'))
dijit.byId('workingDialog').hide();
}
function nodeSelect(node) {
/* for some reason, _onLabelFocus does not get set up for tree nodes by
* Safari; so, we perform the same operations here */
if(dojo.isSafari) {
node.tree._onNodeFocus(node);
}
var nodeid = node.item.name;
if(nodeid != parseInt(nodeid))
return;
var nodename = node.item.display;
var tree = dijit.byId('privtree');
tree.lastFocused = node;
updateNodeLabels(nodename);
setLoading2(250);
dojo.cookie('VCLACTIVENODE', nodeid, {expires: 365, path: '/', domain: cookiedomain});
var obj = dojo.byId('nodecont');
var data = {continuation: obj.value,
node: nodeid};
RPCwrapper(data, generalPrivCB, 0);
}
function mouseDown(evt) {
dragging = 1;
dragnode.dragid = dragnode.hoverid;
dragnode.startX = mouseX;
dragnode.startY = mouseY;
}
function mouseRelease(evt) {
if(typeof nodedropdata == 'number')
return;
if(dragging == 0)
return;
dragging = 0;
if(mouseX == dragnode.startX && mouseY == dragnode.startY)
return;
if(nodedropdata[dragnode.dragid] == 0 || nodedropdata[dragnode.hoverid] == 0 || mouseontree == 0)
setSelected(dijit.byId('privtree').lastFocused.item.name[0]);
}
function initDropData() {
if(dijit.byId('addNodeBtn'))
dijit.byId('addNodeBtn').set('disabled', false);
dojo.addClass('ddloading', 'hidden');
}
function updateNodeLabels(nodename) {
dojo.byId('addPaneNodeName').innerHTML = 'Node: <strong>' + nodename + '</strong>';
dojo.byId('addGroupPaneNodeName').innerHTML = 'Node: <strong>' + nodename + '</strong>';
dojo.byId('addResourceGroupPaneNodeName').innerHTML = 'Node: <strong>' + nodename + '</strong>';
dojo.byId('addChildNodeName').innerHTML = 'Node: <strong>' + nodename + '</strong>';
dojo.byId('deleteNodeName').innerHTML = 'Node: <strong>' + nodename + '</strong>';
dojo.byId('renameNodeName').innerHTML = 'Node: <strong>' + nodename + '</strong>';
dijit.byId('newNodeName').set('value', nodename);
}
function isChildFocused(focusid, nodes) {
for(var i in nodes) {
if(nodes[i].name == focusid)
return 1;
else if(nodes[i].children)
if(isChildFocused(focusid, nodes[i].children))
return 1;
}
return 0;
}
function showPrivPane(name) {
dijit.byId(name).show();
}
function focusFirstNode(id) {
var tree = dijit.byId('privtree');
if(tree._itemNodesMap && tree._itemNodesMap[id]) {
refreshNodeDropData();
setSelected(id);
updateNodeLabels(tree._itemNodesMap[id][0].label);
tree.lastFocused = tree._itemNodesMap[id][0];
}
else if(tree._itemNodesMap &&
tree.model.root.children &&
tree._itemNodesMap[tree.model.root.children[0].name[0]]) {
var pnodeids = new Array();
var node = tree.model.store._itemsByIdentity[id];
while(node._RRM) {
for(var pid in node._RRM) {
pnodeids.push(pid);
node = tree.model.store._itemsByIdentity[pid];
}
}
var pid;
while(pid = pnodeids.pop()) {
var pnode = tree._itemNodesMap[pid][0];
tree._expandNode(pnode);
}
setTimeout(function() {focusFirstNode(id);}, 10);
}
else {
setTimeout(function() {focusFirstNode(id);}, 500);
}
}
function submitAddChildNode() {
dojo.byId('addChildNodeStatus').innerHTML = '';
var obj = dojo.byId('childNodeName');
var newnode = obj.value;
if(! newnode.length)
return;
var contid = dojo.byId('addchildcont').value;
var tree = dijit.byId('privtree');
var data = {continuation: contid,
newnode: newnode,
activeNode: tree.lastFocused.item.name[0]};
setLoading2(150);
RPCwrapper(data, generalPrivCB, 0);
}
function addChildNode(name, id, parentid) {
var tree = dijit.byId('privtree');
var store = tree.model.store;
// determine selected node
var parentnode = tree.lastFocused.item;
// add new node to selected node
var nodedata = {name: id, display: name, parent: parentid};
var parentdata = {parent: parentnode, attribute: 'children'};
var newnode = store.newItem(nodedata, parentdata);
var parentitem = tree._itemNodesMap[parentid][0].item;
positionNode(newnode, parentitem);
// hide addNodePane
dojo.byId('childNodeName').value = '';
dojo.byId('addChildNodeStatus').innerHTML = '';
setTimeout(function() {dijit.byId('addNodePane').hide();}, 100);
nodedropdata[id] = 1;
}
function positionNode(node, parent) {
var index = 0;
var decr = 0;
for(var i = 0; i < parent.children.length; i++) {
if(node.display[0].localeCompare(parent.children[i].display[0]) == 0)
decr = 1;
if(node.display[0].localeCompare(parent.children[i].display[0]) == -1)
break;
}
index = i;
if(decr)
index--;
nomove = 1;
nodemodel.pasteItem(node, parent, parent, 0, index);
nomove = 0;
}
function deleteNodes() {
var tree = dijit.byId('privtree');
var contid = dojo.byId('delchildcont').value;
var data = {continuation: contid,
activeNode: tree.lastFocused.item.name[0]};
RPCwrapper(data, generalPrivCB, 0);
}
function setSelectedPrivNode(nodeid) {
var tree = dijit.byId('privtree');
var store = tree.model.store;
setSelected(nodeid);
tree.lastFocused = tree._itemNodesMap[nodeid][0];
updateNodeLabels(tree.lastFocused.label);
setLoading2(250);
dojo.cookie('VCLACTIVENODE', nodeid, {expires: 365, path: '/', domain: cookiedomain});
var obj = dojo.byId('nodecont');
var nodeid = tree.lastFocused.item.name;
var data = {continuation: obj.value,
node: nodeid};
RPCwrapper(data, generalPrivCB, 0);
}
function removeNodesFromTree(idlist, deleteid) {
var tree = dijit.byId('privtree');
var ids = idlist.split(',');
for(var i in ids) {
if(typeof(moveitem) !== 'undefined' &&
ids[i] == moveitem.oldparentid) {
moveitem = undefined;
dijit.byId('revertMoveNodeBtn').set('disabled', true);
}
}
tree.model.store.fetchItemByIdentity({
identity: deleteid,
onItem: removeNodesFromTreeCB
});
}
function removeNodesFromTreeCB(item, request) {
if(item) {
var tree = dijit.byId('privtree');
nomove = 1;
tree.model.store.deleteItem(item);
nomove = 0;
}
}
function renameNode() {
var tree = dijit.byId('privtree');
var contid = dojo.byId('renamecont').value;
dijit.byId('submitRenameNodeBtn').focus();
var newname = dijit.byId('newNodeName').value;
var curname = tree.lastFocused.item.display[0];
if(! newname.length)
return;
if(newname == curname) {
dijit.byId('newNodeName').focus();
dojo.byId('renameNodeStatus').innerHTML = 'You must enter a different name';
return;
}
var data = {continuation: contid,
newname: newname,
activeNode: tree.lastFocused.item.name[0]};
RPCwrapper(data, renameNodeCB, 1);
}
function renameNodeCB(data, ioArgs) {
if(data.items.error) {
if(data.items.error == 1) {
alert(data.items.message);
clearRenameBox();
return;
}
else if(data.items.error == 2) {
dojo.byId('renameNodeStatus').innerHTML = data.items.message;
return;
}
}
var newname = data.items.newname;
var nodeid = data.items.node;
var tree = dijit.byId('privtree');
tree.model.store.fetchItemByIdentity({
identity: nodeid,
onItem: function(item, request) {
var tree = dijit.byId('privtree');
var store = tree.model.store;
nomove = 1;
store.setValue(item, 'display', newname);
nomove = 0;
setTimeout(function() {
var parentitem = tree._itemNodesMap[item.parent[0]][0].item;
positionNode(item, parentitem);
}, 500);
}
});
clearRenameBox();
updateNodeLabels(newname);
}
function clearRenameBox() {
dojo.byId('newNodeName').value = '';
dojo.byId('renameNodeStatus').innerHTML = '';
dijit.byId('renameDialog').hide();
}
function refreshPerms() {
setLoading2(250);
var tree = dijit.byId('privtree');
var cont = dojo.byId('nodecont').value;
var data = {continuation: cont,
node: tree.lastFocused.item.name[0]};
RPCwrapper(data, generalPrivCB, 0);
}
function privChange(checked, row, col, type) {
var objname = 'ck' + row + ':' + col;
var obj = dijit.byId(objname);
if(obj.disabled)
return;
var nameArr = obj.name.split('[');
nameArr = nameArr[1].split(']');
nameArr = nameArr[0].split(':');
if(! checked && obj.value == 'single')
obj.value = '';
if(! checked && obj.value == 'cascadesingle')
obj.value = 'cascade';
else if(checked && obj.value == '')
obj.value = 'single';
else if(checked && obj.value == 'cascade')
obj.value = 'cascadesingle';
if(type == 1)
var contid = dojo.byId('changeuserprivcont').value;
else if(type == 2)
var contid = dojo.byId('changeusergroupprivcont').value;
else if(type == 3)
var contid = dojo.byId('changeresourceprivcont').value;
var tree = dijit.byId('privtree');
var data = {continuation: contid,
activeNode: tree.lastFocused.item.name[0],
item: nameArr[0],
priv: nameArr[1],
value: checked};
setLoading2(50);
RPCwrapper(data, generalPrivCB, 0);
}
function nodeCheck(checked, row, col, type) {
var objname = "cell" + row + ":" + col;
if(dojo.hasClass(objname, 'privCascade')) {
objname = "ck" + row + ":" + col;
var obj = dijit.byId(objname);
obj.setAttribute('checked', true);
}
else {
privChange(checked, row, col, type);
}
}
function changeCascadedRights(checked, row, count, fromclick, type) {
var i;
var objname;
var value;
var obj;
var obj2;
for(i = 1; i < count; i++) {
objname = "ck" + row + ":" + i;
obj = dijit.byId(objname);
if(! obj)
continue;
value = obj.value;
if(checked) {
if(value != 'single') {
objname = "cell" + row + ":" + i;
obj2 = dojo.byId(objname);
if(! obj2)
continue;
dojo.removeClass(objname, 'privCascade');
if(value == 'cascade') {
objname = "ck" + row + ":" + i;
obj = dijit.byId(objname)
obj.setAttribute('checked', false);
}
}
}
else {
if(value == 'single')
obj.setAttribute('checked', true);
else if(value == 'cascadesingle' || value == 'cascade') {
obj.setAttribute('checked', true);
objname = "cell" + row + ":" + i;
obj2 = dojo.byId(objname);
if(! obj2)
continue;
dojo.addClass(objname, 'privCascade');
}
}
}
if(fromclick)
privChange(checked, row, 'block', type);
}
function addUserPaneHide() {
dijit.byId('addUserPane').hide();
var workingobj = dijit.byId('workingDialog');
dojo.connect(workingobj._fadeOut, 'onEnd', dijit.byId('addUserPane'), 'hide');
dojo.byId('addUserPrivStatus').innerHTML = '';
dojo.byId('newuser').value = '';
var obj = dijit.byId('blockchk');
if(obj.checked)
obj.setAttribute('checked', false);
for(var i = 0; obj = dijit.byId('userck0:' + i); i++) {
if(obj.checked)
obj.setAttribute('checked', false);
}
}
function submitAddUser() {
dojo.byId('addUserPrivStatus').innerHTML = '';
var userid = dojo.byId('newuser').value;
if(! userid.length)
return;
var perms = new Array();
var obj = dijit.byId('blockchk');
if(obj.checked)
perms.push('block');
for(var i = 0; obj = dijit.byId('userck0:' + i); i++) {
if(obj.checked)
perms.push(obj.name);
}
var perms2 = perms.join(':', perms);
var contid = dojo.byId('addusercont').value;
var tree = dijit.byId('privtree');
var data = {continuation: contid,
perms: perms2,
newuser: userid,
activeNode: tree.lastFocused.item.name[0]};
setLoading2(250);
RPCwrapper(data, generalPrivCB, 0);
}
function addUserGroupPaneHide() {
dijit.byId('addUserGroupPane').hide();
var workingobj = dijit.byId('workingDialog');
dojo.connect(workingobj._fadeOut, 'onEnd', dijit.byId('addUserGroupPane'), 'hide');
dojo.byId('addUserGroupPrivStatus').innerHTML = '';
dojo.byId('newgroupid').value = '';
var obj = dijit.byId('blockgrpchk');
if(obj.checked)
obj.setAttribute('checked', false);
for(var i = 0; obj = dijit.byId('usergrpck0:' + i); i++) {
if(obj.checked)
obj.setAttribute('checked', false);
}
}
function submitAddUserGroup() {
dojo.byId('addUserGroupPrivStatus').innerHTML = '';
var groupid = dojo.byId('newgroupid').value;
if(! groupid.length)
return;
var perms = new Array();
var obj = dijit.byId('blockgrpchk');
if(obj.checked)
perms.push('block');
obj = dijit.byId('usergrpck0:0');
if(obj.checked)
perms.push('cascade');
for(var i = 1; obj = dijit.byId('usergrpck0:' + i); i++) {
if(obj.checked)
perms.push(obj.name);
}
var perms2 = perms.join(':', perms);
var contid = dojo.byId('addusergroupcont').value;
var tree = dijit.byId('privtree');
var data = {continuation: contid,
perms: perms2,
newgroupid: groupid,
activeNode: tree.lastFocused.item.name[0]};
setLoading2(250);
RPCwrapper(data, generalPrivCB, 0);
}
function addResourceGroupPaneHide() {
dijit.byId('addResourceGroupPane').hide();
var workingobj = dijit.byId('workingDialog');
dojo.connect(workingobj._fadeOut, 'onEnd', dijit.byId('addResourceGroupPane'), 'hide');
dojo.byId('addResourceGroupPrivStatus').innerHTML = '';
dojo.byId('newresourcegroupid').value = '';
var obj = dijit.byId('blockresgrpck');
if(obj.checked)
obj.setAttribute('checked', false);
for(var i = 0; obj = dijit.byId('resgrpck0:' + i); i++) {
if(obj.checked)
obj.setAttribute('checked', false);
}
}
function submitAddResourceGroup() {
dojo.byId('addResourceGroupPrivStatus').innerHTML = '';
var groupid = dojo.byId('newresourcegroupid').value;
if(! groupid.length)
return;
var perms = new Array();
var obj = dijit.byId('blockresgrpck');
if(obj.checked)
perms.push('block');
obj = dijit.byId('resgrpck0:0');
if(obj.checked)
perms.push('cascade');
for(var i = 1; obj = dijit.byId('resgrpck0:' + i); i++) {
if(obj.checked)
perms.push(obj.name);
}
var perms2 = perms.join(':', perms);
var contid = dojo.byId('addresourcegroupcont').value;
var tree = dijit.byId('privtree');
var data = {continuation: contid,
perms: perms2,
newgroupid: groupid,
activeNode: tree.lastFocused.item.name[0]};
setLoading2(250);
RPCwrapper(data, generalPrivCB, 0);
}
function getGroupMembers(resid, domid, cont) {
currentOver = domid;
dojo.byId(domid).onmouseover = '';
var contid = dojo.byId(cont).value;
var data = {continuation: contid,
groupid: resid,
domid: domid};
RPCwrapper(data, groupMembersCB, 1);
}
function getGroupMembersCancel(domid) {
currentOver = '';
dojo.byId(domid).onmouseout = '';
}
function groupMembersCB(data, ioArgs) {
var members = data.items.members;
var domid = data.items.domid;
var tt = new dijit.Tooltip({
connectId: [domid],
label: members
});
if(currentOver == domid)
tt.open(dojo.byId(domid));
}
function selectUserGroup(cont) {
var data = {continuation: cont,
groupid: dojo.byId('editusergroupid').value};
RPCwrapper(data, selectUserGroupCB, 1);
}
function selectUserGroupCB(data, ioArgs) {
if(data.items.failed) {
alert('You are not authorized to manage this group');
return;
}
dojo.removeClass('usergroupprivs', 'groupprivshidden');
dijit.byId('usergroupcopyprivsbtn').setAttribute('disabled', false);
dijit.byId('usergroupsaveprivsbtn').setAttribute('disabled', false);
var items = dojo.query('#usergroupprivs input[type=checkbox]');
for(var i = 0; i < items.length; i++) {
dijit.byId(items[i].id).setAttribute('checked', false);
}
for(var i = 0; i < data.items.perms.length; i++) {
obj = dijit.byId('grouptype' + data.items.perms[i]);
obj.setAttribute('checked', true);
}
}
function showUserGroupPrivHelp(help, id) {
dojo.byId('groupprivhelp').innerHTML = help;
dojo.addClass('grouptypespan' + id, 'hlperm');
}
function clearUserGroupPrivHelp(id) {
dojo.byId('groupprivhelp').innerHTML = '';
dojo.removeClass('grouptypespan' + id, 'hlperm');
}
function copyUserGroupPrivs(cont) {
var data = {continuation: cont,
groupid: dojo.byId('copyusergroupid').value};
RPCwrapper(data, copyUserGroupPrivsCB, 1);
}
function copyUserGroupPrivsCB(data, ioArgs) {
if(data.items.failed) {
alert('You are not authorized to manage this group');
return;
}
var items = dojo.query('#usergroupprivs input[type=checkbox]');
for(var i = 0; i < items.length; i++) {
dijit.byId(items[i].id).setAttribute('checked', false);
}
for(var i = 0; i < data.items.perms.length; i++) {
obj = dijit.byId('grouptype' + data.items.perms[i]);
obj.setAttribute('checked', true);
}
}
function saveUserGroupPrivs(cont) {
var permids = new Array();
var items = dojo.query('#usergroupprivs input[type=checkbox]:checked');
for(var i = 0; i < items.length; i++) {
permids.push(items[i].name);
}
var permids2 = permids.join(',');
var data = {continuation: cont,
permids: permids2,
groupid: dojo.byId('editusergroupid').value};
RPCwrapper(data, saveUserGroupPrivsCB, 1);
}
function saveUserGroupPrivsCB(data, ioArgs) {
if(data.items.failed) {
dojo.byId('userpermsubmitstatus').innerHTML = "Failed to save permissions: " + data.items.failed;
dojo.addClass('userpermsubmitstatus', 'statusfailed');
}
else if(data.items.success) {
dojo.byId('userpermsubmitstatus').innerHTML = "Permissions successfully saved";
dojo.addClass('userpermsubmitstatus', 'statussuccess');
}
setTimeout(clearUserPrivStatus, 10000);
}
function clearUserPrivStatus() {
dojo.byId('userpermsubmitstatus').innerHTML = "";
dojo.removeClass('userpermsubmitstatus', 'statussuccess');
dojo.removeClass('userpermsubmitstatus', 'statusfailed');
}
function hideUserGroupPrivs() {
dojo.addClass('usergroupprivs', 'groupprivshidden');
dijit.byId('usergroupcopyprivsbtn').setAttribute('disabled', true);
dijit.byId('usergroupsaveprivsbtn').setAttribute('disabled', true);
}
function moveNode(node) {
if(nomove)
return;
if(saveMoveNode == 0) {
saveMoveNode = node.name[0];
return;
}
var node1 = saveMoveNode;
var node2 = node.name[0];
if(node1 == node2) {
var tree = dijit.byId('privtree');
var nodeitem = tree._itemNodesMap[dragnode.dragid][0].item;
var parentid = nodeitem.parent[0];
var parentitem = tree._itemNodesMap[parentid][0].item;
positionNode(nodeitem, parentitem);
if(nodeitem != tree.lastFocused.item)
setSelected(tree.lastFocused.item.name[0]);
saveMoveNode = 0;
return;
}
var tree = dijit.byId('privtree');
var moveid = dragnode.dragid;
var oldparentid = tree._itemNodesMap[dragnode.dragid][0].item.parent[0];
if(oldparentid == node1)
var newparentid = node2;
else
var newparentid = node1;
var nodeitem = tree._itemNodesMap[moveid][0].item;
var parentitem = tree._itemNodesMap[newparentid][0].item;
positionNode(nodeitem, parentitem);
var movename = nodeitem.display[0];
for(var i = 0; i < parentitem.children.length; i++) {
var child = parentitem.children[i];
if(movename == child.display[0] && newparentid == child.parent[0]) {
var oldparentitem = tree._itemNodesMap[oldparentid][0].item;
nomove = 1;
nodemodel.pasteItem(nodeitem, parentitem, oldparentitem, 0, 0);
positionNode(nodeitem, oldparentitem);
nomove = 0;
alert('Another node with the same name and parent as the node being moved already exists.');
saveMoveNode = 0;
return;
}
}
var data = {continuation: dojo.byId('movenodecont').value,
moveid: moveid,
oldparentid: oldparentid,
newparentid: newparentid}
RPCwrapper(data, moveNodeCB, 1);
saveMoveNode = 0;
}
function moveNodeCB(data, ioArgs) {
moveitem = new moveData();
moveitem.moveid = data.items.moveid;
moveitem.oldparentid = data.items.oldparentid;
moveitem.newparentid = data.items.newparentid;
if(data.items.status == 'invaliddata') {
alert('Error: invalid data submitted');
revertNodeMove();
return;
}
else if(data.items.status == 'noaccess') {
alert('You do not have access to move the selected nodes to the selected location.');
revertNodeMove();
return;
}
else if(data.items.status == 'collision') {
alert('Another node with the same name and parent as the node being moved already exists.');
revertNodeMove();
return;
}
else if(data.items.status == 'nochange') {
return;
}
dojo.byId('revertmovenodecont').value = data.items.revertcont;
dojo.byId('moveNodeName').innerHTML = data.items.movename;
dojo.byId('moveNodeOldParentName').innerHTML = data.items.oldparent;
dojo.byId('moveNodeNewParentName').innerHTML = data.items.newparent;
dojo.byId('movenodesubmitcont').value = data.items.continuation;
dijit.byId('moveDialog').show();
}
function submitMoveNode() {
var data = {continuation: dojo.byId('movenodesubmitcont').value};
RPCwrapper(data, submitMoveNodeCB, 1);
}
function submitMoveNodeCB(data, ioArgs) {
dijit.byId('moveDialog').hide();
dijit.byId('revertMoveNodeBtn').set('disabled', false);
nodestore.fetchItemByIdentity({
identity: moveitem.moveid,
onItem: function(item, request) {
nomove = 1;
dijit.byId('privtree').model.store.setValue(item, 'parent', data.items.newparentid);
nomove = 0;
var selnode = dijit.byId('privtree').selectedNode;
if(selnode.item == item) {
nodeSelect(selnode);
}
}
});
refreshNodeDropData();
}
function submitRevertMoveNode() {
var data = {continuation: dojo.byId('revertmovenodecont').value};
RPCwrapper(data, submitRevertMoveNodeCB, 1);
}
function submitRevertMoveNodeCB(data, ioArgs) {
revertNodeMove();
dijit.byId('revertMoveNodeDlg').hide();
dijit.byId('revertMoveNodeBtn').set('disabled', true);
moveitem = undefined;
refreshNodeDropData();
}
function revertNodeMove() {
nodestore.fetchItemByIdentity({
identity: moveitem.moveid,
onItem: function(item, request) {
revertNodeMoveCB('movenode', item);
}
});
nodestore.fetchItemByIdentity({
identity: moveitem.oldparentid,
onItem: function(item, request) {
revertNodeMoveCB('oldparent', item);
}
});
nodestore.fetchItemByIdentity({
identity: moveitem.newparentid,
onItem: function(item, request) {
revertNodeMoveCB('newparent', item);
}
});
}
function revertNodeMoveCB(type, item) {
if(type == 'movenode') {
moveitem.moveobj = item;
moveitem.moveset = 1;
}
else if(type == 'oldparent') {
moveitem.oldparentobj = item;
moveitem.oldparentset = 1;
}
else if(type == 'newparent') {
moveitem.newparentobj = item;
moveitem.newparentset = 1;
}
if(moveitem.oldparentset == 1 &&
moveitem.newparentset == 1 &&
moveitem.moveset == 1) {
var index = -1;
if('children' in moveitem.oldparentobj) {
for(var i = 0; i < moveitem.oldparentobj.children.length; i++) {
if(moveitem.moveobj.display[0].localeCompare(moveitem.oldparentobj.children[i].display[0]) == -1) {
break;
}
}
}
index = i;
nomove = 1;
nodemodel.pasteItem(moveitem.moveobj, moveitem.newparentobj, moveitem.oldparentobj, 0, index);
dijit.byId('privtree').model.store.setValue(moveitem.moveobj, 'parent', moveitem.oldparentobj.name[0]);
nodeSelect(dijit.byId('privtree')._itemNodesMap[moveitem.moveobj.name[0]][0]);
nomove = 0;
}
}
function setSelected(nodeid) {
var tree = dijit.byId('privtree');
var selpath = [];
while(typeof(tree._itemNodesMap[nodeid]) !== 'undefined') {
selpath.unshift(tree._itemNodesMap[nodeid][0].item);
nodeid = tree._itemNodesMap[nodeid][0].item.parent[0];
}
selpath.unshift(tree.model.root);
tree.attr('path', selpath);
}
function checkCanMove(tree, domnodes) {
if(typeof nodedropdata == 'number')
return false;
var node = dijit.getEnclosingWidget(domnodes[0]);
var nodeid = node.item.name[0];
if(nodedropdata[nodeid] == 0)
return false;
return true;
}
function checkNodeDrop(domnode, tree, position) {
if(typeof nodedropdata == 'number')
return false;
var node = dijit.getEnclosingWidget(domnode);
var nodeid = node.item.name[0];
if(nodedropdata[nodeid] == 0)
return false;
return true;
}
function refreshNodeDropData() {
var data = {continuation: dojo.byId('refreshnodedropdatacont').value};
RPCwrapper(data, generalPrivCB, 0, 60000);
}