app/controllers/plugins_controller.rb
class PluginsController < ApplicationController
helper_method :plugins_json
def index
redirect_to installed_plugins_path
end
def installed
@plugins = PluginDecorator.decorate_collection(Plugin.installed.reject{|plugin| plugin.processing? })
end
def recommended
@plugins = PluginDecorator.decorate_collection(Plugin.recommended)
end
def updated
@plugins = PluginDecorator.decorate_collection(Plugin.installed.reject{|plugin| plugin.latest_version? })
end
def install
params[:plugins].each do |gem_name|
GemInstallerJob.perform_later(gem_name)
end
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
params[:plugins].each do |gem_name|
GemUninstallerJob.perform_later(gem_name)
end
redirect_to plugins_path
end
def upgrade
GemInstallerJob.perform_later(params[:plugins][:name], params[:plugins][:version])
redirect_to plugins_path
end
def bulk_upgrade
params[:plugins].each do |gem_name|
pl = Plugin.new(gem_name: gem_name)
GemInstallerJob.perform_later(gem_name, pl.latest_version)
end
redirect_to plugins_path
end
private
def plugins_json
JSON.pretty_generate(@plugins.map(&:to_hash))
end
end