diff --git a/client/WEB-INF/classes/resources/resource.properties b/client/WEB-INF/classes/resources/resource.properties index 2b969d47afb..7ac988b0ee4 100644 --- a/client/WEB-INF/classes/resources/resource.properties +++ b/client/WEB-INF/classes/resources/resource.properties @@ -71,6 +71,6 @@ please.confirm.you.want.to.disable.account.that.will.prevent.account.access.to.t please.confirm.you.want.to.lock.account.that.will.prevent.account.access.to.the.cloud = Please confirm you want to lock account that will prevent account access to the cloud. please.confirm.you.want.to.enable.account = Please confirm you want to enable account. please.select.an.available.zone.to.associate.your.new.ip.with..acquiring.additional.ip.may.cost.you.an.additional.dollars.per.month. = Please select an availability zone to associate your new IP with. Acquiring additional IP may cost you an additional dollars per month. - +please.confirm.you.want.to.release.this.IP.address = Please confirm you want to release this IP address diff --git a/ui/new/jsp/ipaddress.jsp b/ui/new/jsp/ipaddress.jsp index 0f6a20481d2..7d8999398c9 100644 --- a/ui/new/jsp/ipaddress.jsp +++ b/ui/new/jsp/ipaddress.jsp @@ -435,6 +435,12 @@ +
+ <%=t.t("please.confirm.you.want.to.release.this.IP.address")%> +
+<%=t.t("please.select.an.available.zone.to.associate.your.new.ip.with..acquiring.additional.ip.may.cost.you.an.additional.dollars.per.month.")%> diff --git a/ui/new/scripts/cloud.core2.ipaddress.js b/ui/new/scripts/cloud.core2.ipaddress.js index 4dd54d9493e..fdb8c84fa75 100644 --- a/ui/new/scripts/cloud.core2.ipaddress.js +++ b/ui/new/scripts/cloud.core2.ipaddress.js @@ -1,30 +1,14 @@ //***** baseline (begin) ******************************************************************************************************************* function afterLoadIpJSP() { - //switch to different tab - $("#tab_details").bind("click", function(event){ - $(this).removeClass("off").addClass("on"); - $("#tab_port_forwarding, #tab_load_balancer").removeClass("on").addClass("off"); - $("#tab_content_details").show(); - $("#tab_content_port_forwarding, #tab_content_load_balancer").hide(); - return false; - }); - $("#tab_port_forwarding").bind("click", function(event){ - $(this).removeClass("off").addClass("on"); - $("#tab_details, #tab_load_balancer").removeClass("on").addClass("off"); - $("#tab_content_port_forwarding").show(); - $("#tab_content_details, #tab_content_load_balancer").hide(); - return false; - }); - $("#tab_load_balancer").bind("click", function(event){ - $(this).removeClass("off").addClass("on"); - $("#tab_details, #tab_port_forwarding").removeClass("on").addClass("off"); - $("#tab_content_load_balancer").show(); - $("#tab_content_details, #tab_content_port_forwarding").hide(); - return false; - }); - + //***** switch between different tabs (begin) ******************************************************************** + var tabArray = ["tab_details", "tab_port_forwarding", "tab_load_balancer"]; + var tabContentArray = ["tab_content_details", "tab_content_port_forwarding", "tab_content_load_balancer"]; + switchBetweenDifferentTabs(tabArray, tabContentArray); + //***** switch between different tabs (end) ********************************************************************** + //dialogs initDialog("dialog_acquire_public_ip", 325); + initDialog("dialog_confirmation_release_ip"); //*** Acquire New IP (begin) *** $.ajax({ @@ -224,23 +208,39 @@ function ipToRigntPanel($midmenuItem1) { } } -function ipJsonToDetailsTab(jsonObj) { - var $detailsTab = $("#right_panel_content #tab_content_details"); - $detailsTab.data("jsonObj", jsonObj); - - $detailsTab.find("#ipaddress").text(fromdb(jsonObj.ipaddress)); - $detailsTab.find("#zonename").text(fromdb(jsonObj.zonename)); - $detailsTab.find("#vlanname").text(fromdb(jsonObj.vlanname)); - setSourceNatField(jsonObj.issourcenat, $detailsTab.find("#source_nat")); - setNetworkTypeField(jsonObj.forvirtualnetwork, $detailsTab.find("#network_type")); - - $detailsTab.find("#domain").text(fromdb(jsonObj.domain)); - $detailsTab.find("#account").text(fromdb(jsonObj.account)); - $detailsTab.find("#allocated").text(fromdb(jsonObj.allocated)); -} //***** baseline (end) ********************************************************************************************************************* //***** Details tab (begin) **************************************************************************************************************** +function ipJsonToDetailsTab(ipObj) { + var $detailsTab = $("#right_panel_content #tab_content_details"); + $detailsTab.data("jsonObj", ipObj); + + $detailsTab.find("#ipaddress").text(fromdb(ipObj.ipaddress)); + $detailsTab.find("#zonename").text(fromdb(ipObj.zonename)); + $detailsTab.find("#vlanname").text(fromdb(ipObj.vlanname)); + setSourceNatField(ipObj.issourcenat, $detailsTab.find("#source_nat")); + setNetworkTypeField(ipObj.forvirtualnetwork, $detailsTab.find("#network_type")); + + $detailsTab.find("#domain").text(fromdb(ipObj.domain)); + $detailsTab.find("#account").text(fromdb(ipObj.account)); + $detailsTab.find("#allocated").text(fromdb(ipObj.allocated)); + + //actions *** + var $actionMenu = $("#right_panel_content #tab_content_details #action_link #action_menu"); + $actionMenu.find("#action_list").empty(); + var noAvailableActions = true; + + if(isIpManageable(ipObj.domainid, ipObj.account) == true) { + buildActionLinkForDetailsTab("Release IP", ipActionMap, $actionMenu, null); + noAvailableActions = false; + } + + // no available actions + if(noAvailableActions == true) { + $actionMenu.find("#action_list").append($("#no_available_actions").clone().show()); + } +} + function setSourceNatField(value, $field) { if(value == "true") $field.text("Yes"); @@ -258,6 +258,38 @@ function setNetworkTypeField(value, $field) { else $field.text(""); } + +var ipActionMap = { + "Release IP": { + isAsyncJob: false, + dialogBeforeActionFn : doReleaseIp, + inProcessText: "Releasing IP....", + afterActionSeccessFn: function(jsonObj) { + var $midmenuItem1 = $("#"+ipGetMidmenuId(jsonObj)); + $midmenuItem1.remove(); + clearRightPanel(); + //ipClearRightPanel(); + } + } +} + +function doReleaseIp($actionLink, listAPIMap, $detailsTab) { + var $detailsTab = $("#right_panel_content #tab_content_details"); + var jsonObj = $detailsTab.data("jsonObj"); + var ipaddress = jsonObj.ipaddress; + + $("#dialog_confirmation_release_ip") + .dialog('option', 'buttons', { + "Confirm": function() { + $(this).dialog("close"); + var apiCommand = "command=disassociateIpAddress&ipaddress="+ipaddress; + doActionToDetailsTab(null, $actionLink, apiCommand, listAPIMap); + }, + "Cancel": function() { + $(this).dialog("close"); + } + }).dialog("open"); +} //***** Details tab (end) ****************************************************************************************************************** //***** Port Forwarding tab (begin) ******************************************************************************************************** @@ -819,4 +851,4 @@ function refreshLbVmSelect($template, loadBalancerId) { }); } -//***** Load Balancer tab (end) ************************************************************************************************************ \ No newline at end of file +//***** Load Balancer tab (end) ************************************************************************************************************ diff --git a/ui/new/scripts/cloud.core2.js b/ui/new/scripts/cloud.core2.js index 28480ca29dc..8b11b3f8271 100644 --- a/ui/new/scripts/cloud.core2.js +++ b/ui/new/scripts/cloud.core2.js @@ -54,15 +54,17 @@ function buildActionLinkForDetailsTab(label, actionMap, $actionMenu, listAPIMap) }); } -function doActionToDetailsTab(id, $actionLink, apiCommand, listAPIMap) { +function doActionToDetailsTab(id, $actionLink, apiCommand, listAPIMap) { var label = $actionLink.data("label"); var inProcessText = $actionLink.data("inProcessText"); var isAsyncJob = $actionLink.data("isAsyncJob"); var asyncJobResponse = $actionLink.data("asyncJobResponse"); var afterActionSeccessFn = $actionLink.data("afterActionSeccessFn"); - var listAPI = listAPIMap["listAPI"]; - var listAPIResponse = listAPIMap["listAPIResponse"]; - var listAPIResponseObj = listAPIMap["listAPIResponseObj"]; + if(listAPIMap != null) { + var listAPI = listAPIMap["listAPI"]; + var listAPIResponse = listAPIMap["listAPIResponse"]; + var listAPIResponseObj = listAPIMap["listAPIResponseObj"]; + } var $detailsTab = $("#right_panel_content #tab_content_details"); var $spinningWheel = $detailsTab.find("#spinning_wheel"); @@ -135,17 +137,17 @@ function doActionToDetailsTab(id, $actionLink, apiCommand, listAPIMap) { //Async job (end) ***** //Sync job (begin) ***** - else { + else { $.ajax({ data: createURL(apiCommand), dataType: "json", async: false, - success: function(json) { + success: function(json) { $spinningWheel.hide(); $("#right_panel_content #after_action_info").text(label + " action succeeded."); $("#right_panel_content #after_action_info_container").removeClass("errorbox").show(); - if(apiCommand.indexOf("command=delete")!=0) { + if(apiCommand.indexOf("command=delete")!=0 && apiCommand.indexOf("command=disassociateIpAddress")!=0) { //RecoverVirtualMachine API doesn't return an embedded object on success (Bug 6037) //Before Bug 6037 get fixed, use the temporary solution below. $.ajax({