diff --git a/app/controllers/plugins_controller.rb b/app/controllers/plugins_controller.rb index 59b0513..189b035 100644 --- a/app/controllers/plugins_controller.rb +++ b/app/controllers/plugins_controller.rb @@ -1,4 +1,6 @@ class PluginsController < ApplicationController + helper_method :plugins_json + def index redirect_to installed_plugins_path end @@ -19,7 +21,16 @@ class PluginsController < ApplicationController params[:plugins].each do |gem_name| GemInstallerJob.perform_later(gem_name) end - redirect_to plugins_path + respond_to do |format| + format.html do + redirect_to plugins_path + end + format.json do + plugins = PluginDecorator.decorate_collection(Plugin.recommended.select {|item| params[:plugins].include?(item.gem_name)}) + render json: plugins.map(&:to_hash).to_json + end + end + end def uninstall @@ -41,4 +52,10 @@ class PluginsController < ApplicationController end redirect_to plugins_path end + + private + + def plugins_json + JSON.pretty_generate(@plugins.map(&:to_hash)) + end end diff --git a/app/decorators/plugin_decorator.rb b/app/decorators/plugin_decorator.rb index 0ed1b65..2768ac8 100644 --- a/app/decorators/plugin_decorator.rb +++ b/app/decorators/plugin_decorator.rb @@ -10,4 +10,22 @@ class PluginDecorator < Draper::Decorator I18n.t("terms.not_installed") end end + + def to_hash + { + is_installed: installed?, + is_processing: processing?, + uninstall_button: "#plugin-modal-#{gem_name}", + name: gem_name, + authors: authors, + summary: summary, + api_version: api_version, + category: category, + status: status, + installed_version: installed_version, + latest_version: latest_version, + is_latest_version: latest_version?, + rubygems_org_page: rubygems_org_page + } + end end