mirror of
				https://github.com/gyurix1968/guacamole-client.git
				synced 2025-10-31 00:53:21 +00:00 
			
		
		
		
	Ticket #268: Partial cleanup. Remove old connection form, stub new.
This commit is contained in:
		| @@ -38,7 +38,14 @@ var GuacAdmin = { | |||||||
|         "connection_id" :  document.getElementById("connection-id"), |         "connection_id" :  document.getElementById("connection-id"), | ||||||
|         "protocol"      :  document.getElementById("protocol"), |         "protocol"      :  document.getElementById("protocol"), | ||||||
|         "username"      :  document.getElementById("username") |         "username"      :  document.getElementById("username") | ||||||
|     } |     }, | ||||||
|  |  | ||||||
|  |     "cached_permissions" : null, | ||||||
|  |     "cached_protocols"   : null, | ||||||
|  |     "cached_connections" : null, | ||||||
|  |  | ||||||
|  |     "selected_user"       : null, | ||||||
|  |     "selected_connection" : null | ||||||
|  |  | ||||||
| }; | }; | ||||||
|  |  | ||||||
| @@ -378,38 +385,250 @@ GuacAdmin.hasEntry = function(object) { | |||||||
|     return false; |     return false; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * Adds the user with the given name to the displayed user list. | ||||||
|  |  */ | ||||||
|  | GuacAdmin.addUser = function(name) { | ||||||
|  |  | ||||||
|  |     // Create user list item | ||||||
|  |     var item = new GuacAdmin.ListItem("user", name); | ||||||
|  |     var item_element = item.getElement(); | ||||||
|  |     GuacAdmin.lists.user_list.appendChild(item_element); | ||||||
|  |  | ||||||
|  |     // When clicked, build and display property form | ||||||
|  |     item_element.onclick = function() { | ||||||
|  |  | ||||||
|  |         // Ignore clicks if any item is selected | ||||||
|  |         if (GuacAdmin.selected_user) return; | ||||||
|  |         else GuacAdmin.selected_user = name; | ||||||
|  |  | ||||||
|  |         // Get user permissions | ||||||
|  |         var user_perms = GuacamoleService.Permissions.list(name); | ||||||
|  |  | ||||||
|  |         // Create form base elements | ||||||
|  |         var form_element = GuacUI.createElement("div", "form"); | ||||||
|  |         var user_header = GuacUI.createChildElement(form_element, "h2"); | ||||||
|  |         var sections = GuacUI.createChildElement( | ||||||
|  |             GuacUI.createChildElement(form_element, "div", "settings section"), | ||||||
|  |             "dl"); | ||||||
|  |  | ||||||
|  |         var field_header = GuacUI.createChildElement(sections, "dt"); | ||||||
|  |         var field_table  = GuacUI.createChildElement( | ||||||
|  |             GuacUI.createChildElement(sections, "dd"), | ||||||
|  |             "table", "fields section"); | ||||||
|  |  | ||||||
|  |         user_header.textContent = name; | ||||||
|  |         field_header.textContent = "Properties:"; | ||||||
|  |  | ||||||
|  |         // Deselect | ||||||
|  |         function deselect() { | ||||||
|  |             GuacUI.removeClass(GuacAdmin.lists.user_list, "disabled"); | ||||||
|  |             GuacUI.removeClass(item_element, "selected"); | ||||||
|  |             item_element.removeChild(form_element); | ||||||
|  |             GuacAdmin.selected_user = null; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         // Select | ||||||
|  |         function select() { | ||||||
|  |             GuacUI.addClass(GuacAdmin.lists.user_list, "disabled"); | ||||||
|  |             GuacUI.addClass(item_element, "selected"); | ||||||
|  |             item_element.appendChild(form_element); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         // Add password field | ||||||
|  |         var password_field = GuacUI.createChildElement( | ||||||
|  |                 GuacUI.createTabulatedContainer(field_table, "Password:"), | ||||||
|  |                 "input"); | ||||||
|  |         password_field.setAttribute("type",  "password"); | ||||||
|  |         password_field.setAttribute("value", "password"); | ||||||
|  |              | ||||||
|  |         // Add password re-entry field | ||||||
|  |         var reenter_password_field = GuacUI.createChildElement( | ||||||
|  |                 GuacUI.createTabulatedContainer(field_table, "Re-enter Password:"), | ||||||
|  |                 "input"); | ||||||
|  |         reenter_password_field.setAttribute("type",  "password"); | ||||||
|  |         reenter_password_field.setAttribute("value", "password"); | ||||||
|  |  | ||||||
|  |         // Update password if changed | ||||||
|  |         var password_modified = false; | ||||||
|  |         password_field.onchange = | ||||||
|  |         reenter_password_field.onchange = function() { | ||||||
|  |             password_modified = true; | ||||||
|  |         }; | ||||||
|  |  | ||||||
|  |         // If readable connections exist, list them | ||||||
|  |         var selected_connections = {}; | ||||||
|  |         if (GuacAdmin.hasEntry(GuacAdmin.cached_permissions.administer_connection)) { | ||||||
|  |  | ||||||
|  |             // Add fields for per-connection checkboxes | ||||||
|  |             var connections_header = GuacUI.createChildElement(sections, "dt"); | ||||||
|  |             connections_header.textContent = "Connections:"; | ||||||
|  |             var connections = GuacUI.createChildElement( | ||||||
|  |                 GuacUI.createChildElement(sections, "dd"), | ||||||
|  |                 "div", "list"); | ||||||
|  |  | ||||||
|  |             for (var conn in GuacAdmin.cached_permissions.administer_connection) { | ||||||
|  |  | ||||||
|  |                 var connection       = GuacUI.createChildElement(connections, "div", "connection"); | ||||||
|  |                 var connection_field = GuacUI.createChildElement(connection, "input"); | ||||||
|  |                 var connection_name  = GuacUI.createChildElement(connection, "span", "name"); | ||||||
|  |  | ||||||
|  |                 connection_field.setAttribute("type", "checkbox"); | ||||||
|  |                 connection_field.setAttribute("value", conn); | ||||||
|  |  | ||||||
|  |                 // Check checkbox if connection readable by selected user | ||||||
|  |                 if (conn in user_perms.read_connection) { | ||||||
|  |                     selected_connections[conn] = true; | ||||||
|  |                     connection_field.checked = true; | ||||||
|  |                 } | ||||||
|  |  | ||||||
|  |                 // Update selected connections when changed | ||||||
|  |                 connection_field.onclick = connection_field.onchange = function() { | ||||||
|  |                     if (this.checked) | ||||||
|  |                         selected_connections[this.value] = true; | ||||||
|  |                     else if (selected_connections[this.value]) | ||||||
|  |                         delete selected_connections[this.value]; | ||||||
|  |                 }; | ||||||
|  |  | ||||||
|  |                 connection_name.textContent = conn; | ||||||
|  |  | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         // Add buttons | ||||||
|  |         var button_div = GuacUI.createChildElement(form_element, "div", "object-buttons"); | ||||||
|  |  | ||||||
|  |         // Add save button | ||||||
|  |         var save_button = GuacUI.createChildElement(button_div, "button"); | ||||||
|  |         save_button.textContent = "Save"; | ||||||
|  |         save_button.onclick = function(e) { | ||||||
|  |  | ||||||
|  |             e.stopPropagation(); | ||||||
|  |  | ||||||
|  |             try { | ||||||
|  |  | ||||||
|  |                 // If password modified, use password given | ||||||
|  |                 var password; | ||||||
|  |                 if (password_modified) { | ||||||
|  |  | ||||||
|  |                     // Get passwords | ||||||
|  |                     password = password_field.value; | ||||||
|  |                     var reentered_password = reenter_password_field.value; | ||||||
|  |  | ||||||
|  |                     // Check that passwords match | ||||||
|  |                     if (password != reentered_password) | ||||||
|  |                         throw new Error("Passwords do not match."); | ||||||
|  |  | ||||||
|  |                 } | ||||||
|  |  | ||||||
|  |                 // Otherwise, do not change password | ||||||
|  |                 else | ||||||
|  |                     password = null; | ||||||
|  |  | ||||||
|  |                 // Set user permissions | ||||||
|  |                 user_perms.read_connection = selected_connections; | ||||||
|  |  | ||||||
|  |                 // Save user | ||||||
|  |                 GuacamoleService.Users.update( | ||||||
|  |                     GuacAdmin.selected_user, password, user_perms); | ||||||
|  |                 deselect(); | ||||||
|  |                 GuacAdmin.reset(); | ||||||
|  |  | ||||||
|  |             } | ||||||
|  |             catch (e) { | ||||||
|  |                 alert(e.message); | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |         }; | ||||||
|  |  | ||||||
|  |         // Add cancel button | ||||||
|  |         var cancel_button = GuacUI.createChildElement(button_div, "button"); | ||||||
|  |         cancel_button.textContent = "Cancel"; | ||||||
|  |         cancel_button.onclick = function(e) { | ||||||
|  |             e.stopPropagation(); | ||||||
|  |             deselect(); | ||||||
|  |         }; | ||||||
|  |  | ||||||
|  |         // Add delete button if permission available | ||||||
|  |         if (name in GuacAdmin.cached_permissions.remove_user) { | ||||||
|  |              | ||||||
|  |             // Create button | ||||||
|  |             var delete_button = GuacUI.createChildElement(button_div, "button"); | ||||||
|  |             delete_button.textContent = "Delete"; | ||||||
|  |              | ||||||
|  |             // Remove selected user when clicked | ||||||
|  |             delete_button.onclick = function(e) { | ||||||
|  |  | ||||||
|  |                 e.stopPropagation(); | ||||||
|  |  | ||||||
|  |                 GuacamoleService.Users.remove(GuacAdmin.selected_user); | ||||||
|  |                 deselect(); | ||||||
|  |                 GuacAdmin.reset(); | ||||||
|  |  | ||||||
|  |             }; | ||||||
|  |  | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         // Select item | ||||||
|  |         select(); | ||||||
|  |  | ||||||
|  |     }; | ||||||
|  |  | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * Adds the given connection to the displayed connection list. | ||||||
|  |  */ | ||||||
|  | GuacAdmin.addConnection = function(connection) { | ||||||
|  |  | ||||||
|  |     var item = new GuacAdmin.ListItem("connection", connection.id); | ||||||
|  |     var item_element = item.getElement(); | ||||||
|  |     GuacAdmin.lists.connection_list.appendChild(item_element); | ||||||
|  |  | ||||||
|  |     item_element.onclick = function() { | ||||||
|  |  | ||||||
|  |         // Ignore clicks if any item is selected | ||||||
|  |         if (GuacAdmin.selected_connection) return; | ||||||
|  |         else GuacAdmin.selected_connection = connection.id; | ||||||
|  |  | ||||||
|  |         /* STUB */ | ||||||
|  |  | ||||||
|  |     }; | ||||||
|  |  | ||||||
|  | }; | ||||||
|  |  | ||||||
| GuacAdmin.reset = function() { | GuacAdmin.reset = function() { | ||||||
|  |  | ||||||
|     /* |     /* | ||||||
|      * Show admin elements if admin permissions available |      * Show admin elements if admin permissions available | ||||||
|      */ |      */ | ||||||
|  |  | ||||||
|     // Get permissions |     // Query service for permissions, protocols, and connections | ||||||
|     var permissions = GuacamoleService.Permissions.list(); |     GuacAdmin.cached_permissions = GuacamoleService.Permissions.list(); | ||||||
|  |     GuacAdmin.cached_protocols   = GuacamoleService.Protocols.list(); | ||||||
|     // Get protocols |     GuacAdmin.cached_connections = GuacamoleService.Connections.list(); | ||||||
|     var protocols = GuacamoleService.Protocols.list(); |  | ||||||
|  |  | ||||||
|     // Connection management |     // Connection management | ||||||
|     if (permissions.create_connection |     if (GuacAdmin.cached_permissions.create_connection | ||||||
|         || GuacAdmin.hasEntry(permissions.update_connection) |         || GuacAdmin.hasEntry(GuacAdmin.cached_permissions.update_connection) | ||||||
|         || GuacAdmin.hasEntry(permissions.remove_connection) |         || GuacAdmin.hasEntry(GuacAdmin.cached_permissions.remove_connection) | ||||||
|         || GuacAdmin.hasEntry(permissions.administer_connection)) |         || GuacAdmin.hasEntry(GuacAdmin.cached_permissions.administer_connection)) | ||||||
|             GuacUI.addClass(document.body, "manage-connections"); |             GuacUI.addClass(document.body, "manage-connections"); | ||||||
|         else |         else | ||||||
|             GuacUI.removeClass(document.body, "manage-connections"); |             GuacUI.removeClass(document.body, "manage-connections"); | ||||||
|  |  | ||||||
|     // User management |     // User management | ||||||
|     if (permissions.create_user |     if (GuacAdmin.cached_permissions.create_user | ||||||
|         || GuacAdmin.hasEntry(permissions.update_user) |         || GuacAdmin.hasEntry(GuacAdmin.cached_permissions.update_user) | ||||||
|         || GuacAdmin.hasEntry(permissions.remove_user) |         || GuacAdmin.hasEntry(GuacAdmin.cached_permissions.remove_user) | ||||||
|         || GuacAdmin.hasEntry(permissions.administer_user)) |         || GuacAdmin.hasEntry(GuacAdmin.cached_permissions.administer_user)) | ||||||
|             GuacUI.addClass(document.body, "manage-users"); |             GuacUI.addClass(document.body, "manage-users"); | ||||||
|         else |         else | ||||||
|             GuacUI.removeClass(document.body, "manage-users"); |             GuacUI.removeClass(document.body, "manage-users"); | ||||||
|  |  | ||||||
|     // Connection creation  |     // Connection creation  | ||||||
|     if (permissions.create_connection) { |     if (GuacAdmin.cached_permissions.create_connection) { | ||||||
|         GuacUI.addClass(document.body, "add-connections"); |         GuacUI.addClass(document.body, "add-connections"); | ||||||
|  |  | ||||||
|         GuacAdmin.buttons.add_connection.onclick = function() { |         GuacAdmin.buttons.add_connection.onclick = function() { | ||||||
| @@ -433,7 +652,7 @@ GuacAdmin.reset = function() { | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     // User creation |     // User creation | ||||||
|     if (permissions.create_user) { |     if (GuacAdmin.cached_permissions.create_user) { | ||||||
|         GuacUI.addClass(document.body, "add-users"); |         GuacUI.addClass(document.body, "add-users"); | ||||||
|  |  | ||||||
|         GuacAdmin.buttons.add_user.onclick = function() { |         GuacAdmin.buttons.add_user.onclick = function() { | ||||||
| @@ -458,295 +677,17 @@ GuacAdmin.reset = function() { | |||||||
|      * Add readable users. |      * Add readable users. | ||||||
|      */ |      */ | ||||||
|  |  | ||||||
|     var name; |  | ||||||
|     var selected_user = null; |  | ||||||
|  |  | ||||||
|     // Add users to list |  | ||||||
|     GuacAdmin.lists.user_list.innerHTML = ""; |     GuacAdmin.lists.user_list.innerHTML = ""; | ||||||
|     for (name in permissions.read_user) {(function(name){ |     for (var name in GuacAdmin.cached_permissions.read_user) | ||||||
|  |         GuacAdmin.addUser(name) | ||||||
|         // Create user list item |  | ||||||
|         var item = new GuacAdmin.ListItem("user", name); |  | ||||||
|         var item_element = item.getElement(); |  | ||||||
|         GuacAdmin.lists.user_list.appendChild(item_element); |  | ||||||
|  |  | ||||||
|         // When clicked, build and display property form |  | ||||||
|         item_element.onclick = function() { |  | ||||||
|  |  | ||||||
|             // Ignore clicks if any item is selected |  | ||||||
|             if (selected_user) return; |  | ||||||
|             else selected_user = name; |  | ||||||
|  |  | ||||||
|             // Get user permissions |  | ||||||
|             var user_perms = GuacamoleService.Permissions.list(name); |  | ||||||
|  |  | ||||||
|             // Create form base elements |  | ||||||
|             var form_element = GuacUI.createElement("div", "form"); |  | ||||||
|             var user_header = GuacUI.createChildElement(form_element, "h2"); |  | ||||||
|             var sections = GuacUI.createChildElement( |  | ||||||
|                 GuacUI.createChildElement(form_element, "div", "settings section"), |  | ||||||
|                 "dl"); |  | ||||||
|  |  | ||||||
|             var field_header = GuacUI.createChildElement(sections, "dt"); |  | ||||||
|             var field_table  = GuacUI.createChildElement( |  | ||||||
|                 GuacUI.createChildElement(sections, "dd"), |  | ||||||
|                 "table", "fields section"); |  | ||||||
|  |  | ||||||
|             user_header.textContent = name; |  | ||||||
|             field_header.textContent = "Properties:"; |  | ||||||
|  |  | ||||||
|             // Deselect |  | ||||||
|             function deselect() { |  | ||||||
|                 GuacUI.removeClass(GuacAdmin.lists.user_list, "disabled"); |  | ||||||
|                 GuacUI.removeClass(item_element, "selected"); |  | ||||||
|                 item_element.removeChild(form_element); |  | ||||||
|                 selected_user = null; |  | ||||||
|             } |  | ||||||
|  |  | ||||||
|             // Select |  | ||||||
|             function select() { |  | ||||||
|                 GuacUI.addClass(GuacAdmin.lists.user_list, "disabled"); |  | ||||||
|                 GuacUI.addClass(item_element, "selected"); |  | ||||||
|                 item_element.appendChild(form_element); |  | ||||||
|             } |  | ||||||
|  |  | ||||||
|             // Add password field |  | ||||||
|             var password_field = GuacUI.createChildElement( |  | ||||||
|                     GuacUI.createTabulatedContainer(field_table, "Password:"), |  | ||||||
|                     "input"); |  | ||||||
|             password_field.setAttribute("type",  "password"); |  | ||||||
|             password_field.setAttribute("value", "password"); |  | ||||||
|                  |  | ||||||
|             // Add password re-entry field |  | ||||||
|             var reenter_password_field = GuacUI.createChildElement( |  | ||||||
|                     GuacUI.createTabulatedContainer(field_table, "Re-enter Password:"), |  | ||||||
|                     "input"); |  | ||||||
|             reenter_password_field.setAttribute("type",  "password"); |  | ||||||
|             reenter_password_field.setAttribute("value", "password"); |  | ||||||
|  |  | ||||||
|             // Update password if changed |  | ||||||
|             var password_modified = false; |  | ||||||
|             password_field.onchange = |  | ||||||
|             reenter_password_field.onchange = function() { |  | ||||||
|                 password_modified = true; |  | ||||||
|             }; |  | ||||||
|  |  | ||||||
|             // If readable connections exist, list them |  | ||||||
|             var selected_connections = {}; |  | ||||||
|             if (GuacAdmin.hasEntry(permissions.administer_connection)) { |  | ||||||
|  |  | ||||||
|                 // Add fields for per-connection checkboxes |  | ||||||
|                 var connections_header = GuacUI.createChildElement(sections, "dt"); |  | ||||||
|                 connections_header.textContent = "Connections:"; |  | ||||||
|                 var connections = GuacUI.createChildElement( |  | ||||||
|                     GuacUI.createChildElement(sections, "dd"), |  | ||||||
|                     "div", "list"); |  | ||||||
|  |  | ||||||
|                 for (var conn in permissions.administer_connection) { |  | ||||||
|  |  | ||||||
|                     var connection       = GuacUI.createChildElement(connections, "div", "connection"); |  | ||||||
|                     var connection_field = GuacUI.createChildElement(connection, "input"); |  | ||||||
|                     var connection_name  = GuacUI.createChildElement(connection, "span", "name"); |  | ||||||
|  |  | ||||||
|                     connection_field.setAttribute("type", "checkbox"); |  | ||||||
|                     connection_field.setAttribute("value", conn); |  | ||||||
|  |  | ||||||
|                     // Check checkbox if connection readable by selected user |  | ||||||
|                     if (conn in user_perms.read_connection) { |  | ||||||
|                         selected_connections[conn] = true; |  | ||||||
|                         connection_field.checked = true; |  | ||||||
|                     } |  | ||||||
|  |  | ||||||
|                     // Update selected connections when changed |  | ||||||
|                     connection_field.onclick = connection_field.onchange = function() { |  | ||||||
|                         if (this.checked) |  | ||||||
|                             selected_connections[this.value] = true; |  | ||||||
|                         else if (selected_connections[this.value]) |  | ||||||
|                             delete selected_connections[this.value]; |  | ||||||
|                     }; |  | ||||||
|  |  | ||||||
|                     connection_name.textContent = conn; |  | ||||||
|  |  | ||||||
|                 } |  | ||||||
|  |  | ||||||
|             } |  | ||||||
|  |  | ||||||
|             // Add buttons |  | ||||||
|             var button_div = GuacUI.createChildElement(form_element, "div", "object-buttons"); |  | ||||||
|  |  | ||||||
|             // Add save button |  | ||||||
|             var save_button = GuacUI.createChildElement(button_div, "button"); |  | ||||||
|             save_button.textContent = "Save"; |  | ||||||
|             save_button.onclick = function(e) { |  | ||||||
|  |  | ||||||
|                 e.stopPropagation(); |  | ||||||
|  |  | ||||||
|                 try { |  | ||||||
|  |  | ||||||
|                     // If password modified, use password given |  | ||||||
|                     var password; |  | ||||||
|                     if (password_modified) { |  | ||||||
|  |  | ||||||
|                         // Get passwords |  | ||||||
|                         password = password_field.value; |  | ||||||
|                         var reentered_password = reenter_password_field.value; |  | ||||||
|  |  | ||||||
|                         // Check that passwords match |  | ||||||
|                         if (password != reentered_password) |  | ||||||
|                             throw new Error("Passwords do not match."); |  | ||||||
|  |  | ||||||
|                     } |  | ||||||
|  |  | ||||||
|                     // Otherwise, do not change password |  | ||||||
|                     else |  | ||||||
|                         password = null; |  | ||||||
|  |  | ||||||
|                     // Set user permissions |  | ||||||
|                     user_perms.read_connection = selected_connections; |  | ||||||
|  |  | ||||||
|                     // Save user |  | ||||||
|                     GuacamoleService.Users.update( |  | ||||||
|                         selected_user, password, user_perms); |  | ||||||
|                     deselect(); |  | ||||||
|                     GuacAdmin.reset(); |  | ||||||
|  |  | ||||||
|                 } |  | ||||||
|                 catch (e) { |  | ||||||
|                     alert(e.message); |  | ||||||
|                 } |  | ||||||
|  |  | ||||||
|             }; |  | ||||||
|  |  | ||||||
|             // Add cancel button |  | ||||||
|             var cancel_button = GuacUI.createChildElement(button_div, "button"); |  | ||||||
|             cancel_button.textContent = "Cancel"; |  | ||||||
|             cancel_button.onclick = function(e) { |  | ||||||
|                 e.stopPropagation(); |  | ||||||
|                 deselect(); |  | ||||||
|             }; |  | ||||||
|  |  | ||||||
|             // Add delete button if permission available |  | ||||||
|             if (name in permissions.remove_user) { |  | ||||||
|                  |  | ||||||
|                 // Create button |  | ||||||
|                 var delete_button = GuacUI.createChildElement(button_div, "button"); |  | ||||||
|                 delete_button.textContent = "Delete"; |  | ||||||
|                  |  | ||||||
|                 // Remove selected user when clicked |  | ||||||
|                 delete_button.onclick = function(e) { |  | ||||||
|  |  | ||||||
|                     e.stopPropagation(); |  | ||||||
|  |  | ||||||
|                     GuacamoleService.Users.remove(selected_user); |  | ||||||
|                     deselect(); |  | ||||||
|                     GuacAdmin.reset(); |  | ||||||
|  |  | ||||||
|                 }; |  | ||||||
|  |  | ||||||
|             } |  | ||||||
|  |  | ||||||
|             // Select item |  | ||||||
|             select(); |  | ||||||
|  |  | ||||||
|         }; |  | ||||||
|  |  | ||||||
|     })(name)}; |  | ||||||
|  |  | ||||||
|     /* |     /* | ||||||
|      * Add readable connections. |      * Add readable connections. | ||||||
|      */ |      */ | ||||||
|  |  | ||||||
|     var selected_connection = null; |  | ||||||
|     var connections = GuacamoleService.Connections.list(); |  | ||||||
|  |  | ||||||
|     // Add connections to list |  | ||||||
|     GuacAdmin.lists.connection_list.innerHTML = ""; |     GuacAdmin.lists.connection_list.innerHTML = ""; | ||||||
|     for (i=0; i<connections.length; i++) {(function(connection){ |     for (var i=0; i<GuacAdmin.cached_connections.length; i++) | ||||||
|  |         GuacAdmin.addConnection(GuacAdmin.cached_connections[i]); | ||||||
|         var item = new GuacAdmin.ListItem("connection", connection.id); |  | ||||||
|         var item_element = item.getElement(); |  | ||||||
|         GuacAdmin.lists.connection_list.appendChild(item_element); |  | ||||||
|  |  | ||||||
|         item_element.onclick = function() { |  | ||||||
|  |  | ||||||
|             // Ignore clicks if any item is selected |  | ||||||
|             if (selected_connection) return; |  | ||||||
|             else selected_connection = connection.id; |  | ||||||
|  |  | ||||||
|             // Load buttons |  | ||||||
|             var buttons = [new GuacAdmin.Button("Save"), |  | ||||||
|                            new GuacAdmin.Button("Cancel")]; |  | ||||||
|  |  | ||||||
|             var fields = []; |  | ||||||
|  |  | ||||||
|             if (connection.id in permissions.remove_connection) |  | ||||||
|                 buttons.push(new GuacAdmin.Button("Delete")); |  | ||||||
|  |  | ||||||
|             // FIXME: Actually generate form from properties |  | ||||||
|  |  | ||||||
|             // Connection property form. |  | ||||||
|             var connection_properties = new GuacAdmin.Form( |  | ||||||
|  |  | ||||||
|                 /* Fields */ |  | ||||||
|                 [new GuacAdmin.Field.TEXT("Hostname:", [], |  | ||||||
|                      [connection.parameters.hostname || ""]), |  | ||||||
|  |  | ||||||
|                  new GuacAdmin.Field.TEXT("Port:", [], |  | ||||||
|                      [connection.parameters.port || ""])], |  | ||||||
|                  |  | ||||||
|                 /* Buttons */ |  | ||||||
|                 buttons |  | ||||||
|  |  | ||||||
|             ); |  | ||||||
|  |  | ||||||
|             // Select |  | ||||||
|             GuacUI.addClass(GuacAdmin.lists.connection_list, "disabled"); |  | ||||||
|             GuacUI.addClass(item_element, "selected"); |  | ||||||
|  |  | ||||||
|             // Handle buttons |  | ||||||
|             connection_properties.onaction = function(title, fields) { |  | ||||||
|                  |  | ||||||
|                 try { |  | ||||||
|  |  | ||||||
|                     if (title == "Save") { |  | ||||||
|  |  | ||||||
|                         // Get fields (FIXME: Actually implement)  |  | ||||||
|                         var hostname = fields[0][0]; |  | ||||||
|                         var port = fields[1][0]; |  | ||||||
|  |  | ||||||
|                         // Update fields |  | ||||||
|                         connection.parameters.hostname = hostname; |  | ||||||
|                         connection.parameters.port = port; |  | ||||||
|  |  | ||||||
|                         // Save connection |  | ||||||
|                         GuacamoleService.Connections.update(connection); |  | ||||||
|                         GuacAdmin.reset(); |  | ||||||
|  |  | ||||||
|                     } |  | ||||||
|                     else if (title == "Delete") { |  | ||||||
|                         GuacamoleService.Connections.remove(selected_connection); |  | ||||||
|                         GuacAdmin.reset(); |  | ||||||
|                     } |  | ||||||
|  |  | ||||||
|                     // Deselect |  | ||||||
|                     GuacUI.removeClass(GuacAdmin.lists.connection_list, "disabled"); |  | ||||||
|                     GuacUI.removeClass(item_element, "selected"); |  | ||||||
|                     item_element.removeChild(connection_properties.getElement()); |  | ||||||
|                     selected_connection = null; |  | ||||||
|  |  | ||||||
|                 } |  | ||||||
|                 catch (e) { |  | ||||||
|                     alert(e.message); |  | ||||||
|                 } |  | ||||||
|                      |  | ||||||
|             }; |  | ||||||
|  |  | ||||||
|             item_element.appendChild(connection_properties.getElement()); |  | ||||||
|  |  | ||||||
|         }; |  | ||||||
|  |  | ||||||
|  |  | ||||||
|     })(connections[i])}; |  | ||||||
|  |  | ||||||
| }; | }; | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user