diff --git a/awx/ui/client/src/job-templates/add/job-templates-add.controller.js b/awx/ui/client/src/job-templates/add/job-templates-add.controller.js index 5119ea8f42..3863a6fc84 100644 --- a/awx/ui/client/src/job-templates/add/job-templates-add.controller.js +++ b/awx/ui/client/src/job-templates/add/job-templates-add.controller.js @@ -323,95 +323,8 @@ // Save $scope.formSave = function () { + var fld, data = {}; $scope.invalid_survey = false; - if ($scope.removeGatherFormFields) { - $scope.removeGatherFormFields(); - } - $scope.removeGatherFormFields = $scope.$on('GatherFormFields', function(e, data) { - generator.clearApiErrors(); - Wait('start'); - data = {}; - var fld; - try { - for (fld in form.fields) { - if (form.fields[fld].type === 'select' && fld !== 'playbook') { - data[fld] = $scope[fld].value; - } else { - if (fld !== 'variables' && fld !== 'survey') { - data[fld] = $scope[fld]; - } - } - } - data.extra_vars = ToJSON($scope.parseType, $scope.variables, true); - if(data.job_type === 'scan' && $scope.default_scan === true){ - data.project = ""; - data.playbook = ""; - } - // We only want to set the survey_enabled flag to true for this job template if a survey exists - // and it's been enabled. By default, survey_enabled is explicitly set to true but if no survey - // is created then we don't want it enabled. - data.survey_enabled = ($scope.survey_enabled && $scope.survey_exists) ? $scope.survey_enabled : false; - Rest.setUrl(defaultUrl); - Rest.post(data) - .success(function(data) { - $scope.$emit('templateSaveSuccess', data); - - $scope.addedItem = data.id; - - Refresh({ - scope: $scope, - set: 'job_templates', - iterator: 'job_template', - url: $scope.current_url - }); - - if($scope.survey_questions && $scope.survey_questions.length > 0){ - //once the job template information is saved we submit the survey info to the correct endpoint - var url = data.url+ 'survey_spec/'; - Rest.setUrl(url); - Rest.post({ name: $scope.survey_name, description: $scope.survey_description, spec: $scope.survey_questions }) - .success(function () { - Wait('stop'); - - }) - .error(function (data, status) { - ProcessErrors($scope, data, status, form, { hdr: 'Error!', - msg: 'Failed to add new survey. Post returned status: ' + status }); - }); - } - - - }) - .error(function (data, status) { - ProcessErrors($scope, data, status, form, { hdr: 'Error!', - msg: 'Failed to add new job template. POST returned status: ' + status - }); - }); - - } catch (err) { - Wait('stop'); - Alert("Error", "Error parsing extra variables. Parser returned: " + err); - } - }); - - - if ($scope.removePromptForSurvey) { - $scope.removePromptForSurvey(); - } - $scope.removePromptForSurvey = $scope.$on('PromptForSurvey', function() { - var action = function () { - // $scope.$emit("GatherFormFields"); - Wait('start'); - $('#prompt-modal').modal('hide'); - $scope.addSurvey(); - - }; - Prompt({ - hdr: 'Incomplete Survey', - body: '
Do you want to create a survey before proceeding?
', - action: action - }); - }); // users can't save a survey with a scan job if($scope.job_type.value === "scan" && $scope.survey_enabled === true){ @@ -422,7 +335,70 @@ $scope.survey_enabled = false; } - $scope.$emit("GatherFormFields"); + generator.clearApiErrors(); + + Wait('start'); + + try { + for (fld in form.fields) { + if (form.fields[fld].type === 'select' && fld !== 'playbook') { + data[fld] = $scope[fld].value; + } else { + if (fld !== 'variables' && fld !== 'survey') { + data[fld] = $scope[fld]; + } + } + } + data.extra_vars = ToJSON($scope.parseType, $scope.variables, true); + if(data.job_type === 'scan' && $scope.default_scan === true){ + data.project = ""; + data.playbook = ""; + } + // We only want to set the survey_enabled flag to true for this job template if a survey exists + // and it's been enabled. By default, survey_enabled is explicitly set to true but if no survey + // is created then we don't want it enabled. + data.survey_enabled = ($scope.survey_enabled && $scope.survey_exists) ? $scope.survey_enabled : false; + Rest.setUrl(defaultUrl); + Rest.post(data) + .success(function(data) { + $scope.$emit('templateSaveSuccess', data); + + $scope.addedItem = data.id; + + Refresh({ + scope: $scope, + set: 'job_templates', + iterator: 'job_template', + url: $scope.current_url + }); + + if($scope.survey_questions && $scope.survey_questions.length > 0){ + //once the job template information is saved we submit the survey info to the correct endpoint + var url = data.url+ 'survey_spec/'; + Rest.setUrl(url); + Rest.post({ name: $scope.survey_name, description: $scope.survey_description, spec: $scope.survey_questions }) + .success(function () { + Wait('stop'); + + }) + .error(function (data, status) { + ProcessErrors($scope, data, status, form, { hdr: 'Error!', + msg: 'Failed to add new survey. Post returned status: ' + status }); + }); + } + + + }) + .error(function (data, status) { + ProcessErrors($scope, data, status, form, { hdr: 'Error!', + msg: 'Failed to add new job template. POST returned status: ' + status + }); + }); + + } catch (err) { + Wait('stop'); + Alert("Error", "Error parsing extra variables. Parser returned: " + err); + } }; diff --git a/awx/ui/client/src/job-templates/edit/job-templates-edit.controller.js b/awx/ui/client/src/job-templates/edit/job-templates-edit.controller.js index d268113366..c8a2bdcd95 100644 --- a/awx/ui/client/src/job-templates/edit/job-templates-edit.controller.js +++ b/awx/ui/client/src/job-templates/edit/job-templates-edit.controller.js @@ -420,80 +420,50 @@ export default // Save changes to the parent $scope.formSave = function () { + var fld, data = {}; $scope.invalid_survey = false; - if ($scope.removeGatherFormFields) { - $scope.removeGatherFormFields(); - } - $scope.removeGatherFormFields = $scope.$on('GatherFormFields', function(e, data) { - generator.clearApiErrors(); - Wait('start'); - data = {}; - var fld; - try { - // Make sure we have valid variable data - data.extra_vars = ToJSON($scope.parseType, $scope.variables, true); - if(data.extra_vars === undefined ){ - throw 'undefined variables'; - } - for (fld in form.fields) { - if (form.fields[fld].type === 'select' && fld !== 'playbook') { - data[fld] = $scope[fld].value; - } else { - if (fld !== 'variables' && fld !== 'callback_url') { - data[fld] = $scope[fld]; - } - } - } - Rest.setUrl(defaultUrl + id + '/'); - Rest.put(data) - .success(function (data) { - $scope.$emit('templateSaveSuccess', data); - }) - .error(function (data, status) { - ProcessErrors($scope, data, status, form, { hdr: 'Error!', - msg: 'Failed to update job template. PUT returned status: ' + status }); - }); - - } catch (err) { - Wait('stop'); - Alert("Error", "Error parsing extra variables. Parser returned: " + err); - } - }); - - - if ($scope.removePromptForSurvey) { - $scope.removePromptForSurvey(); - } - $scope.removePromptForSurvey = $scope.$on('PromptForSurvey', function() { - var action = function () { - // $scope.$emit("GatherFormFields"); - Wait('start'); - $('#prompt-modal').modal('hide'); - $scope.addSurvey(); - - }; - Prompt({ - hdr: 'Incomplete Survey', - body: '
Do you want to create a survey before proceeding?
', - action: action - }); - }); // users can't save a survey with a scan job if($scope.job_type.value === "scan" && $scope.survey_enabled === true){ $scope.survey_enabled = false; } + // Can't have a survey enabled without a survey if($scope.survey_enabled === true && $scope.survey_exists!==true){ - // $scope.$emit("PromptForSurvey"); + $scope.survey_enabled = false; + } - // The original design for this was a pop up that would prompt the user if they wanted to create a - // survey, because they had enabled one but not created it yet. We switched this for now so that - // an error message would be displayed by the survey buttons that tells the user to add a survey or disabled - // surveys. - $scope.invalid_survey = true; - return; - } else { - $scope.$emit("GatherFormFields"); + generator.clearApiErrors(); + + Wait('start'); + + try { + // Make sure we have valid variable data + data.extra_vars = ToJSON($scope.parseType, $scope.variables, true); + if(data.extra_vars === undefined ){ + throw 'undefined variables'; + } + for (fld in form.fields) { + if (form.fields[fld].type === 'select' && fld !== 'playbook') { + data[fld] = $scope[fld].value; + } else { + if (fld !== 'variables' && fld !== 'callback_url') { + data[fld] = $scope[fld]; + } + } + } + Rest.setUrl(defaultUrl + id + '/'); + Rest.put(data) + .success(function (data) { + $scope.$emit('templateSaveSuccess', data); + }) + .error(function (data, status) { + ProcessErrors($scope, data, status, form, { hdr: 'Error!', + msg: 'Failed to update job template. PUT returned status: ' + status }); + }); + + } catch (err) { + Wait('stop'); + Alert("Error", "Error parsing extra variables. Parser returned: " + err); } };