diff --git a/src/sunstone/public/js/sunstone.js b/src/sunstone/public/js/sunstone.js
index a66b293a86..b97086c7a2 100644
--- a/src/sunstone/public/js/sunstone.js
+++ b/src/sunstone/public/js/sunstone.js
@@ -3167,8 +3167,8 @@ function insert_permissions_table(tab_name, resource_type, resource_id, owner, g
| \
'
- $(".permission_check").die();
- $(".permission_check").live('change',function(){
+ $(document).off('change', ".permission_check");
+ $(document).on('change', ".permission_check", function(){
var permissions_table = $("."+resource_type.toLowerCase()+"_permissions_table");
var permissions_octect = { octet : buildOctet(permissions_table) };
@@ -3176,6 +3176,8 @@ function insert_permissions_table(tab_name, resource_type, resource_id, owner, g
});
}
+ var context = '.'+resource_type.toLowerCase()+'_permissions_table';
+
if (Config.isTabActionEnabled(tab_name, resource_type+'.chgrp') || Config.isTabActionEnabled(tab_name, resource_type+'.chown')) {
str += ''+tr("Ownership")+' | \
'
@@ -3190,26 +3192,32 @@ function insert_permissions_table(tab_name, resource_type, resource_id, owner, g
'
// Handlers for chown
- $("#div_edit_chg_owner_link").die();
- $("#user_confirm_select").die();
+ $(document).off("click", context + " #div_edit_chg_owner_link");
+ $(document).off("change", context + " #user_confirm_select");
// Listener for key,value pair edit action
- $("#div_edit_chg_owner_link").live("click", function() {
- var value_str = $("#value_td_owner").text();
+ $(document).on("click", context + " #div_edit_chg_owner_link", function() {
+ var tr_context = $(this).parents("tr");
+
+ var value_str = $("#value_td_owner", tr_context).text();
var select_str='";
- $("#value_td_owner").html(select_str);
- $("select#user_confirm_select").val(vm_uid);
+ $("#value_td_owner", tr_context).html(select_str);
+ $("select#user_confirm_select", tr_context).val(vm_uid);
});
- $("#user_confirm_select").live("change", function() {
- var value_str = $('select#user_confirm_select').val();
+ $(document).on("change", context + " #user_confirm_select", function() {
+ var tr_context = $(this).parents("tr");
+
+ var value_str = $('select#user_confirm_select', tr_context).val();
if(value_str!="")
{
// Let OpenNebula know
var resource_struct = new Array();
resource_struct[0] = resource_id;
+
+ // TODO: race condition. Show can return before chown does
Sunstone.runAction(resource_type+".chown",resource_struct,value_str);
Sunstone.runAction(resource_type+".showinfo",resource_id);
}
@@ -3227,21 +3235,25 @@ function insert_permissions_table(tab_name, resource_type, resource_id, owner, g
'
// Handlers for chgrp
- $("#div_edit_chg_group_link").die();
- $("#group_confirm_select").die();
+ $(document).off("click", context + " #div_edit_chg_group_link");
+ $(document).off("change", context + " #group_confirm_select");
// Listener for key,value pair edit action
- $("#div_edit_chg_group_link").live("click", function() {
- var value_str = $("#value_td_group").text();
+ $(document).on("click", context + " #div_edit_chg_group_link", function() {
+ var tr_context = $(this).parents("tr");
+
+ var value_str = $("#value_td_group", tr_context).text();
var select_str='";
- $("#value_td_group").html(select_str);
- $("select#group_confirm_select").val(vm_gid);
+ $("#value_td_group", tr_context).html(select_str);
+ $("select#group_confirm_select", tr_context).val(vm_gid);
});
- $("#group_confirm_select").live("change", function() {
- var value_str = $('select#group_confirm_select').val();
+ $(document).on("change", context + " #group_confirm_select", function() {
+ var tr_context = $(this).parents("tr");
+
+ var value_str = $('select#group_confirm_select', tr_context).val();
if(value_str!="")
{
// Let OpenNebula know