You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@vcl.apache.org by jf...@apache.org on 2016/12/20 17:56:15 UTC

svn commit: r1775330 - in /vcl/trunk/web: .ht-inc/privileges.php js/privileges.js

Author: jfthomps
Date: Tue Dec 20 17:56:14 2016
New Revision: 1775330

URL: http://svn.apache.org/viewvc?rev=1775330&view=rev
Log:
VCL-1003 - drag and drop support for moving privilege nodes

moved loading of nodedropdata global javascript variable to an AJAX call to speed up page load time

privilege.php:
-modified viewNodes: removed block of code that prints global variable nodedropdata; added div that displays that drag and drop data is loading; set Add Child button to be disabled by default (adding a child modifies nodedropdata)
-modified AJrefreshNodeDropData: added check for nodedropdata not being initialized; if not, call initDropData

privilege.js:
-added declaration of global variable nodedropdata
-modified mouseRelease: added return if nodedropdata not initialized
-added initDropData - enabled Add Node button if it exists, hides loading div
-modified checkCanMove and checkNodeDrop: return false if nodedropdata not initialized
-modified refreshNodeDropData: added timeout parameter to call to RPCwrapper

Modified:
    vcl/trunk/web/.ht-inc/privileges.php
    vcl/trunk/web/js/privileges.js

Modified: vcl/trunk/web/.ht-inc/privileges.php
URL: http://svn.apache.org/viewvc/vcl/trunk/web/.ht-inc/privileges.php?rev=1775330&r1=1775329&r2=1775330&view=diff
==============================================================================
--- vcl/trunk/web/.ht-inc/privileges.php (original)
+++ vcl/trunk/web/.ht-inc/privileges.php Tue Dec 20 17:56:14 2016
@@ -58,10 +58,6 @@ function viewNodes() {
 		print "<div id=\"privtreetab\" dojoType=\"dijit.layout.ContentPane\" title=\"Privilege Tree\">\n";
 	}
 	print "<H2>Privilege Tree</H2>\n";
-	print "<script type=\"text/javascript\">\n";
-	$nodedrop = nodeDropData();
-	print "var $nodedrop";
-	print "</script>\n";
 	$cont = addContinuationsEntry('AJrefreshNodeDropData');
 	print "<INPUT type=hidden id=refreshnodedropdatacont value=\"$cont\"\n>";
 	$cont = addContinuationsEntry('JSONprivnodelist');
@@ -123,12 +119,13 @@ function viewNodes() {
 	print "</div>\n";
 	print "</div>\n"; # privtreeparent
 	print "</div>\n";
+	print "<div id=ddloading>Loading Drag and Drop data...</div>\n";
 	print "<div id=treebuttons>\n";
 	print "<TABLE summary=\"\" cellspacing=\"\" cellpadding=\"\">\n";
 	print "  <TR valign=top>\n";
 	if($hasNodeAdmin) {
 		print "    <TD>\n";
-		print "    <button id=addNodeBtn dojoType=\"dijit.form.Button\">\n";
+		print "    <button id=addNodeBtn dojoType=\"dijit.form.Button\" disabled=\"true\">\n";
 		print "      Add Child\n";
 		print "      <script type=\"dojo/method\" event=onClick>\n";
 		print "        showPrivPane('addNodePane');\n";
@@ -1131,6 +1128,7 @@ function nodeDropData() {
 ///
 ////////////////////////////////////////////////////////////////////////////////
 function AJrefreshNodeDropData() {
+	print "if(typeof(nodedropdata) == 'number') {initDropData();}";
 	print nodeDropData();
 }
 

Modified: vcl/trunk/web/js/privileges.js
URL: http://svn.apache.org/viewvc/vcl/trunk/web/js/privileges.js?rev=1775330&r1=1775329&r2=1775330&view=diff
==============================================================================
--- vcl/trunk/web/js/privileges.js (original)
+++ vcl/trunk/web/js/privileges.js Tue Dec 20 17:56:14 2016
@@ -21,6 +21,7 @@ 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 = '';
@@ -83,6 +84,8 @@ function mouseDown(evt) {
 }
 
 function mouseRelease(evt) {
+	if(typeof nodedropdata == 'number')
+		return;
 	if(dragging == 0)
 		return;
 	dragging = 0;
@@ -92,6 +95,12 @@ function mouseRelease(evt) {
 		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>';
@@ -120,6 +129,7 @@ function showPrivPane(name) {
 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];
@@ -833,6 +843,8 @@ function setSelected(nodeid) {
 }
 
 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)
@@ -841,6 +853,8 @@ function checkCanMove(tree, domnodes) {
 }
 
 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)
@@ -850,5 +864,5 @@ function checkNodeDrop(domnode, tree, po
 
 function refreshNodeDropData() {
 	var data = {continuation: dojo.byId('refreshnodedropdatacont').value};
-	RPCwrapper(data, generalPrivCB, 0);
+	RPCwrapper(data, generalPrivCB, 0, 60000);
 }