Skip to content

Commit

Permalink
Merge pull request #9140 from GilbertCherrie/fix_embedded_page_toolbars
Browse files Browse the repository at this point in the history
Fix embedded page toolbars
  • Loading branch information
jeffibm authored Apr 1, 2024
2 parents 330d3dc + 7c44b02 commit 5a08c23
Show file tree
Hide file tree
Showing 8 changed files with 99 additions and 24 deletions.
38 changes: 34 additions & 4 deletions app/controllers/ansible_credential_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -30,17 +30,30 @@ def show_searchbar?

def button
case params[:pressed]
when 'embedded_automation_manager_credentials_add'
when "ansible_repositories_reload" # nested list reload
javascript_redirect(:action => 'show', :id => params[:id], :display => 'repositories')
when 'embedded_configuration_script_source_refresh' # refresh repositories from nested list
repository_refresh
when 'embedded_automation_manager_credentials_add' # add credential
javascript_redirect(:action => 'new')
when 'embedded_automation_manager_credentials_edit'
when 'embedded_configuration_script_source_add' # add repository from nested list
javascript_redirect(:controller => "ansible_repository", :action => 'new')
when 'embedded_automation_manager_credentials_edit' # edit credential
javascript_redirect(:action => 'edit', :id => params[:miq_grid_checks])
when 'ansible_credential_tag'
when 'embedded_configuration_script_source_edit' # edit repository from nested list
javascript_redirect(:controller => "ansible_repository", :action => 'edit', :id => params[:miq_grid_checks])
when 'ansible_credential_tag' # tag credentials
tag(self.class.model)
when "ansible_repository_tag" # repositories from nested list
when "ansible_repository_tag" # tag repositories from nested list
tag(ManageIQ::Providers::EmbeddedAnsible::AutomationManager::ConfigurationScriptSource)
end
end

def check_button_rbac
# Allow reload to skip RBAC check
%w[ansible_repositories_reload].include?(params[:pressed]) || super
end

def new
assert_privileges('embedded_automation_manager_credentials_add')
drop_breadcrumb(:name => _("Add a new Credential"), :url => "/ansible_credential/new")
Expand All @@ -57,6 +70,23 @@ def edit
@id = auth.id
end

def repository_refresh
assert_privileges("embedded_configuration_script_source_refresh")
checked = find_checked_items
checked[0] = params[:id] if checked.blank? && params[:id]

AnsibleRepositoryController.model.where(:id => checked).each do |repo|
repo.sync_queue
add_flash(_("Refresh of Repository \"%{name}\" was successfully initiated.") % {:name => repo.name})
rescue StandardError => ex
add_flash(_("Unable to refresh Repository \"%{name}\": %{details}") % {:name => repo.name,
:details => ex},
:error)
end

javascript_flash
end

def toolbar
return 'ansible_repositories_center' if %w[repositories].include?(@display) # for nested list screen

Expand Down
14 changes: 8 additions & 6 deletions app/controllers/ansible_repository_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -34,26 +34,28 @@ def title

def button
case params[:pressed]
when "embedded_configuration_script_source_edit"
when 'embedded_configuration_script_source_refresh' # refresh repositories
repository_refresh
when "embedded_configuration_script_source_edit" # edit repository
id = params[:miq_grid_checks]
javascript_redirect(:action => 'edit', :id => id)
when "embedded_configuration_script_source_add"
when "embedded_configuration_script_source_add" # add repository
javascript_redirect(:action => 'new')
when "ansible_repositories_reload"
when "ansible_repositories_reload" # repositories reload
show_list
render :update do |page|
page << javascript_prologue
page.replace("gtl_div", :partial => "layouts/gtl")
end
when "ansible_repository_reload"
when "ansible_repository_reload" # repository reload
show
render :update do |page|
page << javascript_prologue
page.replace("main_div", :template => "ansible_repository/show")
end
when "ansible_repository_tag"
when "ansible_repository_tag" # tag repositories
tag(self.class.model)
when "embedded_configuration_script_payload_tag" # playbooks from nested list
when "embedded_configuration_script_payload_tag" # tag playbooks from nested list
tag(ManageIQ::Providers::EmbeddedAnsible::AutomationManager::Playbook)
end
end
Expand Down
13 changes: 12 additions & 1 deletion app/controllers/application_controller/tags.rb
Original file line number Diff line number Diff line change
@@ -1,9 +1,20 @@
module ApplicationController::Tags
extend ActiveSupport::Concern

def nested_page?
(@display == "repositories" && params[:controller] == "ansible_credential") ||
(@display == "playbooks" && params[:controller] == "ansible_repository") ||
(@display == "repositories" && params[:controller] == "workflow_credential") ||
(@display == "workflows" && params[:controller] == "workflow_repository")
end

# Edit user, group or tenant tags
def tagging_edit(db = nil, assert = true)
assert_privileges("#{@display && @display != "main" ? @display.singularize : controller_for_common_methods}_tag") if assert
if nested_page?
assert_privileges("#{controller_for_common_methods}_tag")
else
assert_privileges("#{@display && @display != "main" ? @display.singularize : controller_for_common_methods}_tag") if assert
end
@explorer = true if request.xml_http_request? # Ajax request means in explorer

@tagging = session[:tag_db] = params[:db] || db if params[:db] || db
Expand Down
38 changes: 34 additions & 4 deletions app/controllers/workflow_credential_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -32,17 +32,30 @@ def show_searchbar?

def button
case params[:pressed]
when 'embedded_automation_manager_credentials_add'
when 'workflow_repositories_reload'
javascript_redirect(:action => 'show', :id => params[:id], :display => 'repositories')
when 'embedded_configuration_script_source_refresh' # refresh repositories from nested list
repository_refresh
when 'embedded_automation_manager_credentials_add' # add credential
javascript_redirect(:action => 'new')
when 'embedded_automation_manager_credentials_edit'
when 'embedded_configuration_script_source_add' # add repository from nested list
javascript_redirect(:controller => 'workflow_repository', :action => 'new')
when 'embedded_automation_manager_credentials_edit' # edit credential
javascript_redirect(:action => 'edit', :id => params[:miq_grid_checks])
when 'ansible_credential_tag'
when 'embedded_configuration_script_source_edit' # edit repository from nested list
javascript_redirect(:controller => 'workflow_repository', :action => 'edit', :id => params[:miq_grid_checks])
when 'ansible_credential_tag' # tag credentials
tag(self.class.model)
when "workflow_repository_tag" # repositories from nested list
when "ansible_repository_tag" # tag repositories from nested list
tag(ManageIQ::Providers::Workflows::AutomationManager::ConfigurationScriptSource)
end
end

def check_button_rbac
# Allow reload to skip RBAC check
%w[workflow_repositories_reload].include?(params[:pressed]) || super
end

def new
assert_privileges('embedded_automation_manager_credentials_add')
drop_breadcrumb(:name => _("Add a new Credential"), :url => "/workflow_credential/new")
Expand All @@ -59,6 +72,23 @@ def edit
@id = auth.id
end

def repository_refresh
assert_privileges("embedded_configuration_script_source_refresh")
checked = find_checked_items
checked[0] = params[:id] if checked.blank? && params[:id]

WorkflowRepositoryController.model.where(:id => checked).each do |repo|
repo.sync_queue
add_flash(_("Refresh of Repository \"%{name}\" was successfully initiated.") % {:name => repo.name})
rescue StandardError => ex
add_flash(_("Unable to refresh Repository \"%{name}\": %{details}") % {:name => repo.name,
:details => ex},
:error)
end

javascript_flash
end

def toolbar
return 'workflow_repositories_center' if %w[repositories].include?(@display) # for nested list screen

Expand Down
16 changes: 10 additions & 6 deletions app/controllers/workflow_repository_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -37,26 +37,30 @@ def title

def button
case params[:pressed]
when "embedded_configuration_script_source_edit"
when 'embedded_configuration_script_source_refresh' # refresh repositories
repository_refresh
when "embedded_configuration_script_source_edit" # edit repository
id = params[:miq_grid_checks]
javascript_redirect(:action => 'edit', :id => id)
when "embedded_configuration_script_source_add"
when "embedded_configuration_script_source_add" # add repository
javascript_redirect(:action => 'new')
when "workflow_repositories_reload"
when "embedded_configuration_script_payload_map_credentials" # map credentials from nested list
javascript_redirect(:controller => 'workflow', :action => 'map_credentials', :id => params[:miq_grid_checks])
when "workflow_repositories_reload" # repositories reload
show_list
render :update do |page|
page << javascript_prologue
page.replace("gtl_div", :partial => "layouts/gtl")
end
when "workflow_repository_reload"
when "workflow_repository_reload" # repository reload
show
render :update do |page|
page << javascript_prologue
page.replace("main_div", :template => "workflow_repository/show")
end
when "ansible_repository_tag"
when "ansible_repository_tag" # tag repositories
tag(self.class.model)
when "embedded_configuration_script_payload_tag" # workflows from nested list
when "embedded_configuration_script_payload_tag" # tag workflows from nested list
tag(ManageIQ::Providers::Workflows::AutomationManager::Workflow)
end
end
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ class ApplicationHelper::Toolbar::AnsibleRepositoriesCenter < ApplicationHelper:
N_('Refresh Selected Ansible Repositories'),
N_('Refresh Selected Ansible Repositories'),
:klass => ApplicationHelper::Button::EmbeddedAnsible,
:url => "repository_refresh",
:confirm => N_("Refresh selected Ansible Repositories?"),
:enabled => false,
:url_parms => 'unused_div',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ class ApplicationHelper::Toolbar::WorkflowRepositoriesCenter < ApplicationHelper
N_('Refresh Selected Workflow Repositories'),
N_('Refresh Selected Workflow Repositories'),
:klass => ApplicationHelper::Button::EmbeddedWorkflow,
:url => "repository_refresh",
:confirm => N_("Refresh selected Workflow Repositories?"),
:enabled => false,
:url_parms => 'unused_div',
Expand Down
2 changes: 1 addition & 1 deletion spec/controllers/workflow_credential_controller_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@
end

context 'tagging one or more workflow repositories from nested list' do
let(:params) { {:pressed => "workflow_repository_tag"} }
let(:params) { {:pressed => "ansible_repository_tag"} }

before do
controller.instance_variable_set(:@display, "repositories")
Expand Down

0 comments on commit 5a08c23

Please sign in to comment.