mirror of
https://github.com/ansible/awx.git
synced 2026-03-25 21:05:03 -02:30
Merge pull request #5433 from jlmitch5/fixWorkflowJobTemplatePermHiding
fix permissions workflow job weirdness
This commit is contained in:
@@ -34,7 +34,7 @@ export default
|
|||||||
label: i18n._('Type'),
|
label: i18n._('Type'),
|
||||||
type: 'radio_group',
|
type: 'radio_group',
|
||||||
ngShow: 'selectedTemplate && edgeFlags.showTypeOptions',
|
ngShow: 'selectedTemplate && edgeFlags.showTypeOptions',
|
||||||
ngDisabled: '!canAddWorkflowJobTemplate',
|
ngDisabled: '!(workflowJobTemplateObj.summary_fields.user_capabilities.edit || canAddWorkflowJobTemplate)',
|
||||||
options: [
|
options: [
|
||||||
{
|
{
|
||||||
label: i18n._('On Success'),
|
label: i18n._('On Success'),
|
||||||
@@ -70,7 +70,7 @@ export default
|
|||||||
dataPlacement: 'right',
|
dataPlacement: 'right',
|
||||||
dataContainer: "body",
|
dataContainer: "body",
|
||||||
ngShow: "selectedTemplate.ask_credential_on_launch",
|
ngShow: "selectedTemplate.ask_credential_on_launch",
|
||||||
ngDisabled: '!canAddWorkflowJobTemplate',
|
ngDisabled: '!(workflowJobTemplateObj.summary_fields.user_capabilities.edit || canAddWorkflowJobTemplate)',
|
||||||
awRequiredWhen: {
|
awRequiredWhen: {
|
||||||
reqExpression: 'selectedTemplate && selectedTemplate.ask_credential_on_launch'
|
reqExpression: 'selectedTemplate && selectedTemplate.ask_credential_on_launch'
|
||||||
}
|
}
|
||||||
@@ -90,7 +90,7 @@ export default
|
|||||||
dataPlacement: 'right',
|
dataPlacement: 'right',
|
||||||
dataContainer: "body",
|
dataContainer: "body",
|
||||||
ngShow: "selectedTemplate.ask_inventory_on_launch",
|
ngShow: "selectedTemplate.ask_inventory_on_launch",
|
||||||
ngDisabled: '!canAddWorkflowJobTemplate',
|
ngDisabled: '!(workflowJobTemplateObj.summary_fields.user_capabilities.edit || canAddWorkflowJobTemplate)',
|
||||||
awRequiredWhen: {
|
awRequiredWhen: {
|
||||||
reqExpression: 'selectedTemplate && selectedTemplate.ask_inventory_on_launch'
|
reqExpression: 'selectedTemplate && selectedTemplate.ask_inventory_on_launch'
|
||||||
}
|
}
|
||||||
@@ -111,7 +111,7 @@ export default
|
|||||||
dataPlacement: 'right',
|
dataPlacement: 'right',
|
||||||
dataContainer: "body",
|
dataContainer: "body",
|
||||||
ngShow: "selectedTemplate.ask_job_type_on_launch",
|
ngShow: "selectedTemplate.ask_job_type_on_launch",
|
||||||
ngDisabled: '!canAddWorkflowJobTemplate',
|
ngDisabled: '!(workflowJobTemplateObj.summary_fields.user_capabilities.edit || canAddWorkflowJobTemplate)',
|
||||||
awRequiredWhen: {
|
awRequiredWhen: {
|
||||||
reqExpression: 'selectedTemplate && selectedTemplate.ask_job_type_on_launch'
|
reqExpression: 'selectedTemplate && selectedTemplate.ask_job_type_on_launch'
|
||||||
}
|
}
|
||||||
@@ -128,7 +128,7 @@ export default
|
|||||||
dataPlacement: 'right',
|
dataPlacement: 'right',
|
||||||
dataContainer: "body",
|
dataContainer: "body",
|
||||||
ngShow: "selectedTemplate.ask_limit_on_launch",
|
ngShow: "selectedTemplate.ask_limit_on_launch",
|
||||||
ngDisabled: '!canAddWorkflowJobTemplate'
|
ngDisabled: '!(workflowJobTemplateObj.summary_fields.user_capabilities.edit || canAddWorkflowJobTemplate)'
|
||||||
},
|
},
|
||||||
job_tags: {
|
job_tags: {
|
||||||
label: i18n._('Job Tags'),
|
label: i18n._('Job Tags'),
|
||||||
@@ -143,7 +143,7 @@ export default
|
|||||||
dataPlacement: "right",
|
dataPlacement: "right",
|
||||||
dataContainer: "body",
|
dataContainer: "body",
|
||||||
ngShow: "selectedTemplate.ask_tags_on_launch",
|
ngShow: "selectedTemplate.ask_tags_on_launch",
|
||||||
ngDisabled: '!canAddWorkflowJobTemplate'
|
ngDisabled: '!(workflowJobTemplateObj.summary_fields.user_capabilities.edit || canAddWorkflowJobTemplate)'
|
||||||
},
|
},
|
||||||
skip_tags: {
|
skip_tags: {
|
||||||
label: i18n._('Skip Tags'),
|
label: i18n._('Skip Tags'),
|
||||||
@@ -158,22 +158,22 @@ export default
|
|||||||
dataPlacement: "right",
|
dataPlacement: "right",
|
||||||
dataContainer: "body",
|
dataContainer: "body",
|
||||||
ngShow: "selectedTemplate.ask_skip_tags_on_launch",
|
ngShow: "selectedTemplate.ask_skip_tags_on_launch",
|
||||||
ngDisabled: '!canAddWorkflowJobTemplate'
|
ngDisabled: '!(workflowJobTemplateObj.summary_fields.user_capabilities.edit || canAddWorkflowJobTemplate)'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
buttons: {
|
buttons: {
|
||||||
cancel: {
|
cancel: {
|
||||||
ngClick: 'cancelNodeForm()',
|
ngClick: 'cancelNodeForm()',
|
||||||
ngShow: 'canAddWorkflowJobTemplate'
|
ngShow: '(workflowJobTemplateObj.summary_fields.user_capabilities.edit || canAddWorkflowJobTemplate)'
|
||||||
},
|
},
|
||||||
close: {
|
close: {
|
||||||
ngClick: 'cancelNodeForm()',
|
ngClick: 'cancelNodeForm()',
|
||||||
ngShow: '!canAddWorkflowJobTemplate'
|
ngShow: '!(workflowJobTemplateObj.summary_fields.user_capabilities.edit || canAddWorkflowJobTemplate)'
|
||||||
},
|
},
|
||||||
select: {
|
select: {
|
||||||
ngClick: 'saveNodeForm()',
|
ngClick: 'saveNodeForm()',
|
||||||
ngDisabled: "workflow_maker_form.$invalid || !selectedTemplate",
|
ngDisabled: "workflow_maker_form.$invalid || !selectedTemplate",
|
||||||
ngShow: 'canAddWorkflowJobTemplate'
|
ngShow: '(workflowJobTemplateObj.summary_fields.user_capabilities.edit || canAddWorkflowJobTemplate)'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};}])
|
};}])
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ export default [ '$state','moment', '$timeout', '$window',
|
|||||||
scope: {
|
scope: {
|
||||||
treeData: '=',
|
treeData: '=',
|
||||||
canAddWorkflowJobTemplate: '=',
|
canAddWorkflowJobTemplate: '=',
|
||||||
|
workflowJobTemplateObj: '=',
|
||||||
addNode: '&',
|
addNode: '&',
|
||||||
editNode: '&',
|
editNode: '&',
|
||||||
deleteNode: '&',
|
deleteNode: '&',
|
||||||
@@ -370,7 +371,7 @@ export default [ '$state','moment', '$timeout', '$window',
|
|||||||
.attr("cx", nodeW)
|
.attr("cx", nodeW)
|
||||||
.attr("r", 10)
|
.attr("r", 10)
|
||||||
.attr("class", "addCircle nodeCircle")
|
.attr("class", "addCircle nodeCircle")
|
||||||
.style("display", function(d) { return d.placeholder || scope.canAddWorkflowJobTemplate === false ? "none" : null; })
|
.style("display", function(d) { return d.placeholder || !(scope.workflowJobTemplateObj.summary_fields.user_capabilities.edit || scope.canAddWorkflowJobTemplate) ? "none" : null; })
|
||||||
.call(add_node)
|
.call(add_node)
|
||||||
.on("mouseover", function(d) {
|
.on("mouseover", function(d) {
|
||||||
d3.select("#node-" + d.id)
|
d3.select("#node-" + d.id)
|
||||||
@@ -392,7 +393,7 @@ export default [ '$state','moment', '$timeout', '$window',
|
|||||||
.size(60)
|
.size(60)
|
||||||
.type("cross")
|
.type("cross")
|
||||||
)
|
)
|
||||||
.style("display", function(d) { return d.placeholder || scope.canAddWorkflowJobTemplate === false ? "none" : null; })
|
.style("display", function(d) { return d.placeholder || !(scope.workflowJobTemplateObj.summary_fields.user_capabilities.edit || scope.canAddWorkflowJobTemplate) ? "none" : null; })
|
||||||
.call(add_node)
|
.call(add_node)
|
||||||
.on("mouseover", function(d) {
|
.on("mouseover", function(d) {
|
||||||
d3.select("#node-" + d.id)
|
d3.select("#node-" + d.id)
|
||||||
@@ -412,7 +413,7 @@ export default [ '$state','moment', '$timeout', '$window',
|
|||||||
.attr("cy", nodeH)
|
.attr("cy", nodeH)
|
||||||
.attr("r", 10)
|
.attr("r", 10)
|
||||||
.attr("class", "removeCircle")
|
.attr("class", "removeCircle")
|
||||||
.style("display", function(d) { return (d.canDelete === false || d.placeholder || scope.canAddWorkflowJobTemplate === false) ? "none" : null; })
|
.style("display", function(d) { return (d.canDelete === false || d.placeholder || !(scope.workflowJobTemplateObj.summary_fields.user_capabilities.edit || scope.canAddWorkflowJobTemplate)) ? "none" : null; })
|
||||||
.call(remove_node)
|
.call(remove_node)
|
||||||
.on("mouseover", function(d) {
|
.on("mouseover", function(d) {
|
||||||
d3.select("#node-" + d.id)
|
d3.select("#node-" + d.id)
|
||||||
@@ -434,7 +435,7 @@ export default [ '$state','moment', '$timeout', '$window',
|
|||||||
.size(60)
|
.size(60)
|
||||||
.type("cross")
|
.type("cross")
|
||||||
)
|
)
|
||||||
.style("display", function(d) { return (d.canDelete === false || d.placeholder || scope.canAddWorkflowJobTemplate === false) ? "none" : null; })
|
.style("display", function(d) { return (d.canDelete === false || d.placeholder || !(scope.workflowJobTemplateObj.summary_fields.user_capabilities.edit || scope.canAddWorkflowJobTemplate)) ? "none" : null; })
|
||||||
.call(remove_node)
|
.call(remove_node)
|
||||||
.on("mouseover", function(d) {
|
.on("mouseover", function(d) {
|
||||||
d3.select("#node-" + d.id)
|
d3.select("#node-" + d.id)
|
||||||
@@ -549,7 +550,7 @@ export default [ '$state','moment', '$timeout', '$window',
|
|||||||
})
|
})
|
||||||
.attr("r", 10)
|
.attr("r", 10)
|
||||||
.attr("class", "addCircle linkCircle")
|
.attr("class", "addCircle linkCircle")
|
||||||
.style("display", function(d) { return (d.source.placeholder || d.target.placeholder || scope.canAddWorkflowJobTemplate === false) ? "none" : null; })
|
.style("display", function(d) { return (d.source.placeholder || d.target.placeholder || !(scope.workflowJobTemplateObj.summary_fields.user_capabilities.edit || scope.canAddWorkflowJobTemplate)) ? "none" : null; })
|
||||||
.call(add_node_between)
|
.call(add_node_between)
|
||||||
.on("mouseover", function(d) {
|
.on("mouseover", function(d) {
|
||||||
d3.select("#link-" + d.source.id + "-" + d.target.id)
|
d3.select("#link-" + d.source.id + "-" + d.target.id)
|
||||||
@@ -581,7 +582,7 @@ export default [ '$state','moment', '$timeout', '$window',
|
|||||||
.size(60)
|
.size(60)
|
||||||
.type("cross")
|
.type("cross")
|
||||||
)
|
)
|
||||||
.style("display", function(d) { return (d.source.placeholder || d.target.placeholder || scope.canAddWorkflowJobTemplate === false) ? "none" : null; })
|
.style("display", function(d) { return (d.source.placeholder || d.target.placeholder || !(scope.workflowJobTemplateObj.summary_fields.user_capabilities.edit || scope.canAddWorkflowJobTemplate)) ? "none" : null; })
|
||||||
.call(add_node_between)
|
.call(add_node_between)
|
||||||
.on("mouseover", function(d) {
|
.on("mouseover", function(d) {
|
||||||
d3.select("#link-" + d.source.id + "-" + d.target.id)
|
d3.select("#link-" + d.source.id + "-" + d.target.id)
|
||||||
@@ -602,16 +603,16 @@ export default [ '$state','moment', '$timeout', '$window',
|
|||||||
let t = baseSvg.transition();
|
let t = baseSvg.transition();
|
||||||
|
|
||||||
t.selectAll(".nodeCircle")
|
t.selectAll(".nodeCircle")
|
||||||
.style("display", function(d) { return d.placeholder || scope.canAddWorkflowJobTemplate === false ? "none" : null; });
|
.style("display", function(d) { return d.placeholder || !(scope.workflowJobTemplateObj.summary_fields.user_capabilities.edit || scope.canAddWorkflowJobTemplate) ? "none" : null; });
|
||||||
|
|
||||||
t.selectAll(".nodeAddCross")
|
t.selectAll(".nodeAddCross")
|
||||||
.style("display", function(d) { return d.placeholder || scope.canAddWorkflowJobTemplate === false ? "none" : null; });
|
.style("display", function(d) { return d.placeholder || !(scope.workflowJobTemplateObj.summary_fields.user_capabilities.edit || scope.canAddWorkflowJobTemplate) ? "none" : null; });
|
||||||
|
|
||||||
t.selectAll(".removeCircle")
|
t.selectAll(".removeCircle")
|
||||||
.style("display", function(d) { return (d.canDelete === false || d.placeholder || scope.canAddWorkflowJobTemplate === false) ? "none" : null; });
|
.style("display", function(d) { return (d.canDelete === false || d.placeholder || !(scope.workflowJobTemplateObj.summary_fields.user_capabilities.edit || scope.canAddWorkflowJobTemplate)) ? "none" : null; });
|
||||||
|
|
||||||
t.selectAll(".nodeRemoveCross")
|
t.selectAll(".nodeRemoveCross")
|
||||||
.style("display", function(d) { return (d.canDelete === false || d.placeholder || scope.canAddWorkflowJobTemplate === false) ? "none" : null; });
|
.style("display", function(d) { return (d.canDelete === false || d.placeholder || !(scope.workflowJobTemplateObj.summary_fields.user_capabilities.edit || scope.canAddWorkflowJobTemplate)) ? "none" : null; });
|
||||||
|
|
||||||
t.selectAll(".linkPath")
|
t.selectAll(".linkPath")
|
||||||
.attr("class", function(d) {
|
.attr("class", function(d) {
|
||||||
@@ -636,7 +637,7 @@ export default [ '$state','moment', '$timeout', '$window',
|
|||||||
});
|
});
|
||||||
|
|
||||||
t.selectAll(".linkCircle")
|
t.selectAll(".linkCircle")
|
||||||
.style("display", function(d) { return (d.source.placeholder || d.target.placeholder || scope.canAddWorkflowJobTemplate === false) ? "none" : null; })
|
.style("display", function(d) { return (d.source.placeholder || d.target.placeholder || !(scope.workflowJobTemplateObj.summary_fields.user_capabilities.edit || scope.canAddWorkflowJobTemplate)) ? "none" : null; })
|
||||||
.attr("cx", function(d) {
|
.attr("cx", function(d) {
|
||||||
return (d.source.isStartNode) ? (d.target.y + d.source.y + rootW) / 2 : (d.target.y + d.source.y + nodeW) / 2;
|
return (d.source.isStartNode) ? (d.target.y + d.source.y + rootW) / 2 : (d.target.y + d.source.y + nodeW) / 2;
|
||||||
})
|
})
|
||||||
@@ -645,7 +646,7 @@ export default [ '$state','moment', '$timeout', '$window',
|
|||||||
});
|
});
|
||||||
|
|
||||||
t.selectAll(".linkCross")
|
t.selectAll(".linkCross")
|
||||||
.style("display", function(d) { return (d.source.placeholder || d.target.placeholder || scope.canAddWorkflowJobTemplate === false) ? "none" : null; })
|
.style("display", function(d) { return (d.source.placeholder || d.target.placeholder || !(scope.workflowJobTemplateObj.summary_fields.user_capabilities.edit || scope.canAddWorkflowJobTemplate)) ? "none" : null; })
|
||||||
.attr("transform", function(d) {
|
.attr("transform", function(d) {
|
||||||
let translate;
|
let translate;
|
||||||
if(d.source.isStartNode) {
|
if(d.source.isStartNode) {
|
||||||
@@ -778,7 +779,7 @@ export default [ '$state','moment', '$timeout', '$window',
|
|||||||
|
|
||||||
function add_node() {
|
function add_node() {
|
||||||
this.on("click", function(d) {
|
this.on("click", function(d) {
|
||||||
if(scope.canAddWorkflowJobTemplate !== false) {
|
if(scope.workflowJobTemplateObj.summary_fields.user_capabilities.edit || scope.canAddWorkflowJobTemplate) {
|
||||||
scope.addNode({
|
scope.addNode({
|
||||||
parent: d,
|
parent: d,
|
||||||
betweenTwoNodes: false
|
betweenTwoNodes: false
|
||||||
@@ -789,7 +790,7 @@ export default [ '$state','moment', '$timeout', '$window',
|
|||||||
|
|
||||||
function add_node_between() {
|
function add_node_between() {
|
||||||
this.on("click", function(d) {
|
this.on("click", function(d) {
|
||||||
if(scope.canAddWorkflowJobTemplate !== false) {
|
if(scope.workflowJobTemplateObj.summary_fields.user_capabilities.edit || scope.canAddWorkflowJobTemplate) {
|
||||||
scope.addNode({
|
scope.addNode({
|
||||||
parent: d,
|
parent: d,
|
||||||
betweenTwoNodes: true
|
betweenTwoNodes: true
|
||||||
@@ -800,7 +801,7 @@ export default [ '$state','moment', '$timeout', '$window',
|
|||||||
|
|
||||||
function remove_node() {
|
function remove_node() {
|
||||||
this.on("click", function(d) {
|
this.on("click", function(d) {
|
||||||
if(scope.canAddWorkflowJobTemplate !== false) {
|
if(scope.workflowJobTemplateObj.summary_fields.user_capabilities.edit || scope.canAddWorkflowJobTemplate) {
|
||||||
scope.deleteNode({
|
scope.deleteNode({
|
||||||
nodeToDelete: d
|
nodeToDelete: d
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -64,7 +64,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<workflow-chart ng-if="modalOpen" tree-data="treeData.data" add-node="startAddNode(parent, betweenTwoNodes)" edit-node="startEditNode(nodeToEdit)" delete-node="startDeleteNode(nodeToDelete)" workflow-zoomed="workflowZoomed(zoom)" can-add-workflow-job-template="canAddWorkflowJobTemplate" mode="edit" class="WorkflowMaker-chart"></workflow-chart>
|
<workflow-chart ng-if="modalOpen" tree-data="treeData.data" add-node="startAddNode(parent, betweenTwoNodes)" edit-node="startEditNode(nodeToEdit)" delete-node="startDeleteNode(nodeToDelete)" workflow-zoomed="workflowZoomed(zoom)" can-add-workflow-job-template="canAddWorkflowJobTemplate" workflow-job-template-obj="workflowJobTemplateObj" mode="edit" class="WorkflowMaker-chart"></workflow-chart>
|
||||||
</div>
|
</div>
|
||||||
<div class="WorkflowMaker-contentRight">
|
<div class="WorkflowMaker-contentRight">
|
||||||
<div class="WorkflowMaker-formTitle">{{(workflowMakerFormConfig.nodeMode === 'edit' && nodeBeingEdited) ? ((nodeBeingEdited.unifiedJobTemplate && nodeBeingEdited.unifiedJobTemplate.name) ? nodeBeingEdited.unifiedJobTemplate.name : "EDIT TEMPLATE") : "ADD A TEMPLATE"}}</div>
|
<div class="WorkflowMaker-formTitle">{{(workflowMakerFormConfig.nodeMode === 'edit' && nodeBeingEdited) ? ((nodeBeingEdited.unifiedJobTemplate && nodeBeingEdited.unifiedJobTemplate.name) ? nodeBeingEdited.unifiedJobTemplate.name : "EDIT TEMPLATE") : "ADD A TEMPLATE"}}</div>
|
||||||
@@ -86,6 +86,6 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="WorkflowMaker-buttonHolder">
|
<div class="WorkflowMaker-buttonHolder">
|
||||||
<button type="button" class="btn btn-sm WorkflowMaker-cancelButton" ng-click="closeWorkflowMaker()"> Close</button>
|
<button type="button" class="btn btn-sm WorkflowMaker-cancelButton" ng-click="closeWorkflowMaker()"> Close</button>
|
||||||
<button type="button" class="btn btn-sm WorkflowMaker-saveButton" ng-click="saveWorkflowMaker()" ng-show="workflow_job_template_obj.summary_fields.user_capabilities.edit || canAddWorkflowJobTemplate" ng-disabled="edgeFlags.conflict || workflowMakerFormConfig.nodeMode === 'add'"> Save</button>
|
<button type="button" class="btn btn-sm WorkflowMaker-saveButton" ng-click="saveWorkflowMaker()" ng-show="workflowJobTemplateObj.summary_fields.user_capabilities.edit || canAddWorkflowJobTemplate" ng-disabled="edgeFlags.conflict || workflowMakerFormConfig.nodeMode === 'add'"> Save</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user