From 91edfb688f6480f54aac1bf20a881436d2014d92 Mon Sep 17 00:00:00 2001 From: Daniel Molina Date: Fri, 5 Sep 2014 15:38:42 +0200 Subject: [PATCH] bug #3154: Fix issues when the template contains single quotes --- .../public/js/plugins/provision-tab.js | 91 +++++++++++-------- 1 file changed, 55 insertions(+), 36 deletions(-) diff --git a/src/sunstone/public/js/plugins/provision-tab.js b/src/sunstone/public/js/plugins/provision-tab.js index 27b71b241b..369983f9ce 100644 --- a/src/sunstone/public/js/plugins/provision-tab.js +++ b/src/sunstone/public/js/plugins/provision-tab.js @@ -1498,7 +1498,7 @@ function provision_list_vms(opts_arg){ '
'+ '
'+ '
'+ - ''+ + '
'+ ''+ ''+ ''+ @@ -2092,8 +2092,8 @@ function generate_provision_instance_type_accordion(context, capacity) { "fnRowCallback": function( nRow, aData, iDisplayIndex, iDisplayIndexFull ) { var data = aData; - $(".provision_instance_types_ul", context).append('
  • '+ - '
      '+ + var li = $('
    • '+ + '
        '+ '
      • '+ data.name+ '
      • '+ @@ -2112,7 +2112,9 @@ function generate_provision_instance_type_accordion(context, capacity) { (data.description || '')+ ''+ '
      '+ - '
    • '); + '').appendTo($(".provision_instance_types_ul", context)); + + $(".provision-pricing-table", li).data("opennebula", data) return nRow; } @@ -3063,10 +3065,9 @@ function update_provision_vms_datatable(datatable, timeout) { ''+ ''); - if (datatable.attr('data')) { - fill_provision_vms_datatable( - datatable, - JSON.parse(datatable.attr('data'))) + var data = datatable.data('opennebula'); + if (data) { + fill_provision_vms_datatable(datatable, data) } else { setTimeout( function(){ OpenNebula.VM.list({ @@ -4066,6 +4067,11 @@ function setup_provision_vms_list(context, opts) { function generate_provision_vms_list(context, opts) { context.off(); context.html(provision_list_vms(opts)); + + if (opts.data) { + $(".provision_vms_table", context).data("opennebula", opts.data) + } + setup_provision_vms_list(context, opts); setup_info_vm(context); } @@ -4492,9 +4498,9 @@ function setup_info_flow(context) { percentage : Math.floor((role.nodes ? role.nodes.length : 0) / role.cardinality)*100 } - $(".provision_roles_ul", context).append( + var li = $( '
    • '+ - '
        '+ + '
          '+ '
        • '+ ' '+ role.name+ @@ -4522,7 +4528,9 @@ function setup_info_flow(context) { ''+ '
        • '+ '
        '+ - ''); + '').appendTo($(".provision_roles_ul", context)); + + $(".provision_role_ul", li).data("role", role); }); } @@ -4548,12 +4556,14 @@ function setup_info_flow(context) { ''+ ''); - var role_json = $(this).closest(".provision_role_ul").attr('role'); - var role = JSON.parse(role_json); + var role = $(this).closest(".provision_role_ul").data('role'); var vms = [] - $.each(role.nodes, function(index, node){ - vms.push(node.vm_info); - }) + + if (role.nodes.length > 0) { + $.each(role.nodes, function(index, node){ + vms.push(node.vm_info); + }) + } generate_provision_vms_list( $(".provision_role_vms_container", context), @@ -4568,8 +4578,7 @@ function setup_info_flow(context) { }) context.on("click", ".provision_role_cardinality_button", function(){ - var role_json = $(this).closest(".provision_role_ul").attr('role'); - var role = JSON.parse(role_json); + var role = $(this).closest(".provision_role_ul").data('role'); var min_vms = (role.min_vms||1); var max_vms = (role.max_vms||100); @@ -5910,8 +5919,8 @@ $(document).ready(function(){ ''; } - $("#provision_system_templates_ul").append('
      • '+ - '
          '+ + var li = $('
        • '+ + '
            '+ '
          • '+ data.NAME+ '
          • '+ @@ -5922,7 +5931,9 @@ $(document).ready(function(){ (data.TEMPLATE.DESCRIPTION || '...')+ ''+ '
          '+ - '
        • '); + '').appendTo($("#provision_system_templates_ul")); + + $(".provision-pricing-table", li).data("opennebula", aData); return nRow; } @@ -5976,8 +5987,8 @@ $(document).ready(function(){ ''; } - $("#provision_vdc_templates_ul").append('
        • '+ - '
            '+ + var li = ('
          • '+ + '
              '+ '
            • '+ data.NAME+ '
            • '+ @@ -5988,7 +5999,9 @@ $(document).ready(function(){ (data.TEMPLATE.DESCRIPTION || '...')+ ''+ '
            '+ - '
          • '); + '').appendTo($("#provision_vdc_templates_ul")); + + $(".provision-pricing-table", li).data("opennebula", aData); return nRow; } @@ -6043,8 +6056,8 @@ $(document).ready(function(){ ''; } - $("#provision_saved_templates_ul").append('
          • '+ - '
              '+ + var li = $('
            • '+ + '
                '+ '
              • '+ data.NAME+ '
              • '+ @@ -6055,7 +6068,9 @@ $(document).ready(function(){ (data.TEMPLATE.DESCRIPTION || '...')+ ''+ '
              '+ - '
            • '); + '').appendTo($("#provision_saved_templates_ul")); + + $(".provision-pricing-table", li).data("opennebula", aData); return nRow; } @@ -6093,7 +6108,7 @@ $(document).ready(function(){ $(".provision_accordion_template .select_template").show(); } else { var template_id = $(this).attr("opennebula_id"); - var template_json = JSON.parse($(this).attr("data")); + var template_json = $(this).data("opennebula"); var template_nic = template_json.VMTEMPLATE.TEMPLATE.NIC var nics = [] @@ -6180,10 +6195,10 @@ $(document).ready(function(){ } if (instance_type.length > 0) { - var instance_typa_data = instance_type.attr("data"); + var instance_typa_data = instance_type.data("opennebula"); delete instance_typa_data.name; - $.extend(extra_info.template, JSON.parse(instance_type.attr("data"))) + $.extend(extra_info.template, instance_typa_data) } var missing_attr = false; @@ -6283,8 +6298,8 @@ $(document).ready(function(){ ''; } - $("#provision_flow_templates_ul").append('
            • '+ - '
                '+ + var li = $('
              • '+ + '
                  '+ '
                • '+ data.NAME+ '
                • '+ @@ -6296,7 +6311,9 @@ $(document).ready(function(){ (data.TEMPLATE.DESCRIPTION || '')+ ''+ '
                '+ - '
              • '); + '').appendTo($("#provision_flow_templates_ul")); + + $(".provision-pricing-table", li).data("opennebula", aData); return nRow; } @@ -6331,7 +6348,7 @@ $(document).ready(function(){ $("#provision_customize_flow_template").show(); $("#provision_customize_flow_template").html(""); - var data = JSON.parse($(this).attr("data")); + var data = $(this).data("opennebula"); var body = data.DOCUMENT.TEMPLATE.BODY; $(".provision_accordion_flow_template .selected_template").show(); @@ -6392,7 +6409,7 @@ $(document).ready(function(){ } $.each(body.roles, function(index, role){ - var context = $('
                '+ + var context = $('
                '+ '
                '+ '
                '+ '

                '+ @@ -6415,6 +6432,8 @@ $(document).ready(function(){ '
                '+ '
                ').appendTo($("#provision_customize_flow_template")) + context.data("opennebula", role); + var template_id = role.vm_template; var role_html_id = "#provision_create_flow_role_"+index; @@ -6510,7 +6529,7 @@ $(document).ready(function(){ }) } - var role_template = JSON.parse($(this).attr("data")); + var role_template = $(this).data("opennebula"); roles.push($.extend(role_template, { "cardinality": $(".cardinality_value", $(this)).text(), "user_inputs_values": user_inputs_values