diff --git a/ui/index.jsp b/ui/index.jsp index 7d918e1e1b4..2b1f52ecd88 100644 --- a/ui/index.jsp +++ b/ui/index.jsp @@ -251,6 +251,16 @@ +
+ - \ No newline at end of file + + + + + \ No newline at end of file diff --git a/ui/scripts/cloud.core.js b/ui/scripts/cloud.core.js index 724f3aafe8a..9acd3fa41ee 100644 --- a/ui/scripts/cloud.core.js +++ b/ui/scripts/cloud.core.js @@ -570,6 +570,7 @@ function clearAddButtonsOnTop() { $("#midmenu_add_secondarystorage_button").unbind("click").hide(); $("#midmenu_add_pod_button").unbind("click").hide(); $("#midmenu_add_vlan_button").unbind("click").hide(); + $("#midmenu_add_network_button").unbind("click").hide(); $("#midmenu_add_directIpRange_button").unbind("click").hide(); $("#midmenu_Update_SSL_Certificate_button").unbind("click").hide(); diff --git a/ui/scripts/cloud.core.network.js b/ui/scripts/cloud.core.network.js index 821acf2dd1b..326494349e1 100644 --- a/ui/scripts/cloud.core.network.js +++ b/ui/scripts/cloud.core.network.js @@ -24,6 +24,8 @@ function afterLoadNetworkJSP($leftmenuItem1) { showMiddleMenu(); disableMultipleSelectionInMidMenu(); + initAddNetworkButton($("#midmenu_add_network_button"), $leftmenuItem1); + //switch between different tabs - Public Network page var $publicNetworkPage = $("#public_network_page"); var tabArray = [$publicNetworkPage.find("#tab_details"), $publicNetworkPage.find("#tab_ipallocation"), $publicNetworkPage.find("#tab_firewall"), $publicNetworkPage.find("#tab_loadbalancer")]; @@ -81,6 +83,280 @@ function afterLoadNetworkJSP($leftmenuItem1) { }); } +function initAddNetworkButton($button, $leftmenuItem1) { + var zoneObj = $leftmenuItem1.data("jsonObj"); + + initDialog("dialog_add_network_for_zone"); + + var $dialogAddNetworkForZone = $("#dialog_add_network_for_zone"); + + //***** binding Event Handler (begin) ****** + //direct VLAN shows only "tagged" option while public VLAN shows both "tagged" and "untagged" option. + $dialogAddNetworkForZone.find("#add_publicip_vlan_type").change(function(event) { + var addPublicipVlanTagged = $dialogAddNetworkForZone.find("#add_publicip_vlan_tagged").empty(); + + if ($(this).val() == "false") { //direct VLAN (only tagged option) + addPublicipVlanTagged.append(''); + $dialogAddNetworkForZone.find("#add_publicip_vlan_network_name_container").show(); + $dialogAddNetworkForZone.find("#add_publicip_vlan_network_desc_container").show(); + $dialogAddNetworkForZone.find("#add_publicip_vlan_vlan_container").show(); + $dialogAddNetworkForZone.find("#add_publicip_vlan_pod_container").hide(); + + } + else if ($(this).val() == "true") { //public VLAN + $dialogAddNetworkForZone.find("#add_publicip_vlan_network_name_container").hide(); + $dialogAddNetworkForZone.find("#add_publicip_vlan_network_desc_container").hide(); + $dialogAddNetworkForZone.find("#add_publicip_vlan_cidr_container").hide(); + addPublicipVlanTagged.append('').append(''); + } + + $dialogAddNetworkForZone.find("#add_publicip_vlan_tagged").change(); + + // default value of "#add_publicip_vlan_scope" is "zone-wide". Calling change() will hide "#add_publicip_vlan_domain_container", "#add_publicip_vlan_account_container". + $dialogAddNetworkForZone.find("#add_publicip_vlan_scope").change(); + + return false; + }); + + if (zoneObj.networktype == "Advanced") { + $dialogAddNetworkForZone.find("#add_publicip_vlan_tagged").change(function(event) { + if ($(this).val() == "tagged") { + $dialogAddNetworkForZone.find("#add_publicip_vlan_vlan_container").show(); + $dialogAddNetworkForZone.find("#add_publicip_vlan_pod_container").hide(); + + $dialogAddNetworkForZone.find("#add_publicip_vlan_scope").empty().append('').append(''); + } + else if($(this).val() == "untagged") { + $dialogAddNetworkForZone.find("#add_publicip_vlan_vlan_container").hide(); + $dialogAddNetworkForZone.find("#add_publicip_vlan_pod_container").hide(); + + $dialogAddNetworkForZone.find("#add_publicip_vlan_scope").empty().append(''); + } + + // default value of "#add_publicip_vlan_scope" is "zone-wide". Calling change() will hide "#add_publicip_vlan_domain_container", "#add_publicip_vlan_account_container". + $dialogAddNetworkForZone.find("#add_publicip_vlan_scope").change(); + + return false; + }); + + $dialogAddNetworkForZone.find("#add_publicip_vlan_tagged").change(); + } + else { + $dialogAddNetworkForZone.find("#add_publicip_vlan_container").hide(); + } + + $dialogAddNetworkForZone.find("#add_publicip_vlan_scope").change(function(event) { + if($(this).val() == "zone-wide") { + $dialogAddNetworkForZone.find("#add_publicip_vlan_domain_container").hide(); + $dialogAddNetworkForZone.find("#add_publicip_vlan_account_container").hide(); + } + else if($(this).val() == "account-specific") { + $dialogAddNetworkForZone.find("#add_publicip_vlan_domain_container").show(); + $dialogAddNetworkForZone.find("#add_publicip_vlan_account_container").show(); + } + return false; + }); + //***** binding Event Handler (end) ****** + + $button.show(); + $button.unbind("click").bind("click", function(event) { + $dialogAddNetworkForZone.find("#info_container").hide(); + $dialogAddNetworkForZone.find("#zone_name").text(fromdb(zoneObj.name)); + $dialogAddNetworkForZone.find("#add_publicip_vlan_vlan_container, #add_publicip_vlan_domain_container, #add_publicip_vlan_account_container").hide(); + $dialogAddNetworkForZone.find("#add_publicip_vlan_tagged, #add_publicip_vlan_vlan, #add_publicip_vlan_gateway, #add_publicip_vlan_netmask, #add_publicip_vlan_startip, #add_publicip_vlan_endip, #add_publicip_vlan_account").val(""); + + if (zoneObj.networktype == 'Basic') { + $dialogAddNetworkForZone.find("#add_publicip_vlan_type_container").hide(); + } else { + $dialogAddNetworkForZone.find("#add_publicip_vlan_pod_container").show(); + $dialogAddNetworkForZone.find("#add_publicip_vlan_type").change(); + $dialogAddNetworkForZone.find("#add_publicip_vlan_type_container").show(); + var podSelect = $dialogAddNetworkForZone.find("#add_publicip_vlan_pod").empty(); + $.ajax({ + data: createURL("command=listPods&zoneId="+zoneObj.id), + dataType: "json", + async: false, + success: function(json) { + var pods = json.listpodsresponse.pod; + if (pods != null && pods.length > 0) { + for (var i = 0; i < pods.length; i++) { + podSelect.append(""); + } + } else { + podSelect.append(""); + } + } + }); + + var domainSelect = $dialogAddNetworkForZone.find("#add_publicip_vlan_domain").empty(); + if(zoneObj.domainid != null) { //list only domains under zoneObj.domainid + domainSelect.append(""); + + function populateDomainDropdown(id) { + $.ajax({ + data: createURL("command=listDomainChildren&id="+id), + dataType: "json", + async: false, + success: function(json) { + var domains = json.listdomainchildrenresponse.domain; + if (domains != null && domains.length > 0) { + for (var i = 0; i < domains.length; i++) { + domainSelect.append(""); + if(domains[i].haschild == true) + populateDomainDropdown(domains[i].id); + } + } + } + }); + } + + populateDomainDropdown(zoneObj.domainid); + } + else { //list all domains + $.ajax({ + data: createURL("command=listDomains"), + dataType: "json", + success: function(json) { + var items = json.listdomainsresponse.domain; + if(items != null && items.length > 0) { + for(var i=0; i