mirror of
https://github.com/gyurix1968/guacamole-client.git
synced 2025-09-07 21:51:23 +00:00
Ticket #268: Stubbed connection editing, per-protocol fields.
This commit is contained in:
@@ -592,7 +592,143 @@ GuacAdmin.addConnection = function(connection) {
|
|||||||
if (GuacAdmin.selected_connection) return;
|
if (GuacAdmin.selected_connection) return;
|
||||||
else GuacAdmin.selected_connection = connection.id;
|
else GuacAdmin.selected_connection = connection.id;
|
||||||
|
|
||||||
/* STUB */
|
// Create form base elements
|
||||||
|
var form_element = GuacUI.createElement("div", "form");
|
||||||
|
var connection_header = GuacUI.createChildElement(form_element, "h2");
|
||||||
|
connection_header.textContent = connection.id;
|
||||||
|
|
||||||
|
var sections = GuacUI.createChildElement(
|
||||||
|
GuacUI.createChildElement(form_element, "div", "settings section"),
|
||||||
|
"dl");
|
||||||
|
|
||||||
|
// Parameter header
|
||||||
|
var protocol_header = GuacUI.createChildElement(sections, "dt")
|
||||||
|
protocol_header.textContent = "Protocol:";
|
||||||
|
|
||||||
|
var protocol_field = GuacUI.createChildElement(protocol_header, "select");
|
||||||
|
|
||||||
|
// Associative set of protocols
|
||||||
|
var available_protocols = {};
|
||||||
|
|
||||||
|
// Add protocols
|
||||||
|
for (var i=0; i<GuacAdmin.cached_protocols.length; i++) {
|
||||||
|
|
||||||
|
// Get protocol and store in associative set
|
||||||
|
var protocol = GuacAdmin.cached_protocols[i];
|
||||||
|
available_protocols[protocol.name] = protocol;
|
||||||
|
|
||||||
|
// List protocol in select
|
||||||
|
var protocol_title = GuacUI.createChildElement(protocol_field, "option");
|
||||||
|
protocol_title.textContent = protocol.title;
|
||||||
|
protocol_title.value = protocol.name;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// Parameter section
|
||||||
|
var field_table = GuacUI.createChildElement(
|
||||||
|
GuacUI.createChildElement(sections, "dd"),
|
||||||
|
"table", "fields section");
|
||||||
|
|
||||||
|
// Deselect
|
||||||
|
function deselect() {
|
||||||
|
GuacUI.removeClass(GuacAdmin.lists.connection_list, "disabled");
|
||||||
|
GuacUI.removeClass(item_element, "selected");
|
||||||
|
item_element.removeChild(form_element);
|
||||||
|
GuacAdmin.selected_connection = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Select
|
||||||
|
function select() {
|
||||||
|
GuacUI.addClass(GuacAdmin.lists.connection_list, "disabled");
|
||||||
|
GuacUI.addClass(item_element, "selected");
|
||||||
|
item_element.appendChild(form_element);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Display fields for the given protocol name
|
||||||
|
function setFields(protocol_name) {
|
||||||
|
|
||||||
|
// Clear fields
|
||||||
|
field_table.innerHTML = "";
|
||||||
|
|
||||||
|
// Get protocol
|
||||||
|
var protocol = available_protocols[protocol_name];
|
||||||
|
|
||||||
|
// For each parameter
|
||||||
|
for (var name in protocol.parameters) {
|
||||||
|
|
||||||
|
// Get parameter
|
||||||
|
var parameter = protocol.parameters[name];
|
||||||
|
|
||||||
|
// Create corresponding field
|
||||||
|
var field = GuacUI.createChildElement(
|
||||||
|
GuacUI.createTabulatedContainer(field_table, parameter.title + ":"),
|
||||||
|
"input");
|
||||||
|
|
||||||
|
field.setAttribute("type", "text");
|
||||||
|
field.value = connection.parameters[name];
|
||||||
|
|
||||||
|
// FIXME: Handle field types
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set initially selected protocol
|
||||||
|
protocol_field.value = connection.protocol;
|
||||||
|
setFields(connection.protocol);
|
||||||
|
|
||||||
|
// 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 {
|
||||||
|
|
||||||
|
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 (connection.id in GuacAdmin.cached_permissions.remove_connection) {
|
||||||
|
|
||||||
|
// Create button
|
||||||
|
var delete_button = GuacUI.createChildElement(button_div, "button");
|
||||||
|
delete_button.textContent = "Delete";
|
||||||
|
|
||||||
|
// Remove selected connection when clicked
|
||||||
|
delete_button.onclick = function(e) {
|
||||||
|
|
||||||
|
e.stopPropagation();
|
||||||
|
|
||||||
|
GuacamoleService.Connections.remove(GuacAdmin.selected_connection);
|
||||||
|
deselect();
|
||||||
|
GuacAdmin.reset();
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// Select item
|
||||||
|
select();
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -143,10 +143,28 @@ GuacamoleService.Connections = {
|
|||||||
|
|
||||||
var connectionElements = xhr.responseXML.getElementsByTagName("connection");
|
var connectionElements = xhr.responseXML.getElementsByTagName("connection");
|
||||||
for (var i=0; i<connectionElements.length; i++) {
|
for (var i=0; i<connectionElements.length; i++) {
|
||||||
connections.push(new GuacamoleService.Connection(
|
|
||||||
connectionElements[i].getAttribute("protocol"),
|
// Create connection for each connection element
|
||||||
connectionElements[i].getAttribute("id")
|
var connectionElement = connectionElements[i];
|
||||||
));
|
var connection = new GuacamoleService.Connection(
|
||||||
|
connectionElement.getAttribute("protocol"),
|
||||||
|
connectionElement.getAttribute("id")
|
||||||
|
)
|
||||||
|
|
||||||
|
// Add parameter values for each pameter received
|
||||||
|
var paramElements = connectionElement.getElementsByTagName("param");
|
||||||
|
for (var j=0; j<paramElements.length; j++) {
|
||||||
|
|
||||||
|
var paramElement = paramElements[j];
|
||||||
|
var name = paramElement.getAttribute("name");
|
||||||
|
|
||||||
|
connection.parameters[name] = paramElement.textContent;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add connection
|
||||||
|
connections.push(connection);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return connections;
|
return connections;
|
||||||
|
Reference in New Issue
Block a user