diff --git a/src/sunstone/public/app/opennebula/servicetemplate.js b/src/sunstone/public/app/opennebula/servicetemplate.js index 7f05a399e7..bc5c045727 100644 --- a/src/sunstone/public/app/opennebula/servicetemplate.js +++ b/src/sunstone/public/app/opennebula/servicetemplate.js @@ -100,8 +100,9 @@ define(function(require) { OpenNebulaAction.simple_action(params, RESOURCE, "rename", action_obj, PATH); }, "clone" : function(params) { - var name = params.data.extra_param ? params.data.extra_param : ""; - var action_obj = {"name" : name}; + var name = params.data.extra_param ? params.data.extra_param.name : ""; + var mode = params.data.extra_param ? params.data.extra_param.mode : "none"; + var action_obj = {"name" : name, "recursive": mode}; OpenNebulaAction.simple_action(params, RESOURCE, "clone", action_obj, PATH); }, "getName": function(id){ diff --git a/src/sunstone/public/app/tabs/oneflow-templates-tab/dialogs/clone.js b/src/sunstone/public/app/tabs/oneflow-templates-tab/dialogs/clone.js index a023ea0d93..e0b72a4362 100644 --- a/src/sunstone/public/app/tabs/oneflow-templates-tab/dialogs/clone.js +++ b/src/sunstone/public/app/tabs/oneflow-templates-tab/dialogs/clone.js @@ -62,22 +62,29 @@ define(function(require) { } function _setup(context) { - var that = this; + var id_cb_clone_vms = "clone-vms"; + var id_cb_clone_images = "clone-images"; + + _drawCheckbox(context, id_cb_clone_vms, "Clone VM templates asssociated"); $("#" + DIALOG_ID + "Form", context).submit(function() { var extra_info; var name = $("input[name=\"name\"]", this).val(); + var mode = _getModeClone(context, id_cb_clone_vms, id_cb_clone_images); var sel_elems = Sunstone.getDataTable(ONEFLOW_TEMPLATES_TAB_ID).elements(); if (sel_elems.length > 1) { for (var i = 0; i < sel_elems.length; i++) { //If we are cloning several images we //use the name as prefix - extra_info = name + OpenNebulaServiceTemplate.getName(sel_elems[i]); + extra_info = { + name: name + OpenNebulaServiceTemplate.getName(sel_elems[i]), + mode: mode + }; Sunstone.runAction("ServiceTemplate.clone", sel_elems[i], extra_info); } } else { - extra_info = name; + extra_info = { name: name, mode: mode }; Sunstone.runAction("ServiceTemplate.clone", sel_elems[0], extra_info); } @@ -89,6 +96,12 @@ define(function(require) { return false; }); + $("#" + id_cb_clone_vms, context).on('change', function() { + this.checked + ? _drawCheckbox(context, id_cb_clone_images, "Clone images asssociated") + : _removeCheckbox(context, id_cb_clone_images); + }); + return false; } @@ -112,4 +125,26 @@ define(function(require) { return false; } + + function _drawCheckbox(context, id, text) { + $("#clone-options", context).append( + '
\ + \ + \ +
'); + } + + function _removeCheckbox(context, id) { + $("#" + id, context).parent().remove(); + } + + function _getModeClone(context, id_cb_clone_vms, id_cb_clone_images) { + return $("#" + id_cb_clone_images, context).is(":checked") + ? "all" + : $("#" + id_cb_clone_vms, context).is(":checked") + ? "templates" + : "none"; + } }); diff --git a/src/sunstone/public/app/tabs/oneflow-templates-tab/dialogs/clone/html.hbs b/src/sunstone/public/app/tabs/oneflow-templates-tab/dialogs/clone/html.hbs index 0939c862b4..a15375ee47 100644 --- a/src/sunstone/public/app/tabs/oneflow-templates-tab/dialogs/clone/html.hbs +++ b/src/sunstone/public/app/tabs/oneflow-templates-tab/dialogs/clone/html.hbs @@ -35,6 +35,7 @@ +