orbit4-5/app/controllers/admin/module_store_controller.rb

164 lines
5.0 KiB
Ruby

class Admin::ModuleStoreController < OrbitAdminController
layout "structure"
include Admin::ModuleStoreHelper
def index
@extensions = []
# if current_site.site_token?
# if current_site.store_confirmation
# @extensions = get_extensions
# @store_confirmation = true
# else
# @extensions = []
# @store_confirmation = false
# end
# else
# @store_confirmation = true
# @extensions = []
# @downloaded_extensions = get_downloaded_extension
# end
end
def show
@extension = get_extension(params[:id]) rescue nil
end
def modules_to_update
@built_in_extensions = get_built_in_extensions
render :partial => "modules_to_update"
end
def download
#get extension related values
extension = get_extension(params[:id]) rescue nil
extension_name = extension["key"].to_s
git_repository_url = extension["git_url"]
tag = extension["tag"]
module_installed = File.read("downloaded_extensions.rb").include?(extension["key"])
if module_installed.eql?(false)
@download_link = "gem '#{extension_name}', :git => '#{git_repository_url}', :tag => '#{tag}'"
File.open("downloaded_extensions.rb", 'a') do |file|
file.puts @download_link
end
end
restart
redirect_to admin_module_store_path
end
def toggle_module
temp_extensions=File.open("#{Rails.root}/extensions.tmp.rb", 'w')
extensions = File.new("#{Rails.root}/downloaded_extensions.rb", "r")
while (extension = extensions.gets)
if params[:module].any? { |mod| extension.include?("gem '"+mod+"'")}
@mod = ModuleApp.where(key: extension.split("'")[1]).first
if extension.start_with?("# ")
temp_extensions << extension.gsub("# ","")
toggle_item(@mod , true)
else
temp_extensions << "# "+extension
toggle_item(@mod , false)
end
else
temp_extensions << extension
end
end
extensions.close
temp_extensions.close
FileUtils.mv("#{Rails.root}/extensions.tmp.rb","#{Rails.root}/downloaded_extensions.rb")
render text: "true"
end
def remove_module
temp_extensions=File.open("#{Rails.root}/extensions.tmp.rb", 'w')
extensions = File.new("#{Rails.root}/downloaded_extensions.rb", "r")
while (extension = extensions.gets)
if extension.include?("gem '"+params[:module]+"'")
@mod = ModuleApp.where(key: extension.split("'")[1]).first
toggle_item(@mod , false)
temp_extensions << ""
else
temp_extensions << extension
end
end
extensions.close
temp_extensions.close
FileUtils.mv("#{Rails.root}/extensions.tmp.rb","#{Rails.root}/downloaded_extensions.rb")
restart
render text: "true"
end
def restart_server
render text: "true"
end
def restart
Bundler.with_clean_env { `cd #{Rails.root} && BUNDLE_GEMFILE=built_in_extensions.rb bundle update && bundle` }
Bundler.with_clean_env { `cd #{Rails.root} && BUNDLE_GEMFILE=downloaded_extensions.rb bundle update && bundle` }
@built_in_extensions = get_built_in_extensions
render :partial => "modules_to_update"
%x(kill -s USR2 `cat tmp/pids/unicorn.pid`)
sleep 5
end
def update_module
key = params["key"]
type = params["type"]
# if type == "built_in"
# Bundler.with_clean_env { `cd #{Rails.root} && BUNDLE_GEMFILE=built_in_extensions.rb bundle update #{key}` }
# elsif type == "downloaded"
# Bundler.with_clean_env { `cd #{Rails.root} && BUNDLE_GEMFILE=downloaded_extensions.rb bundle update #{key}` }
# end
Bundler.with_clean_env { `cd #{Rails.root} && bundle update #{key}` }
render :nothing => true
%x(kill -s USR2 `cat tmp/pids/unicorn.pid`)
sleep 5
end
protected
def get_extensions
extensions = store_session.extensions
exist_exts = []
ext_file = File.new("#{Rails.root}/downloaded_extensions.rb", "r")
while (exist_ext = ext_file.gets)
status = !exist_ext.start_with?("# ")
exist_ext = exist_ext.split(',')
if !extensions.select{|ext| ext['key']==exist_ext[0].split(/[\'\"]/)[1]}.blank?
extensions.select{|ext| ext['key']==exist_ext[0].split(/[\'\"]/)[1]}[0]['installed']=true
extensions.select{|ext| ext['key']==exist_ext[0].split(/[\'\"]/)[1]}[0]['enabled']=status
extensions.select{|ext| ext['key']==exist_ext[0].split(/[\'\"]/)[1]}[0]['installed_version']=exist_ext[2].split(/[\'\"]/)[1]
if extensions.select{|ext| ext['key']==exist_ext[0].split(/[\'\"]/)[1]}[0]['tag'] != exist_ext[2].split(/[\'\"]/)[1]
extensions.select{|ext| ext['key']==exist_ext[0].split(/[\'\"]/)[1]}[0]['updated'] = false
else
extensions.select{|ext| ext['key']==exist_ext[0].split(/[\'\"]/)[1]}[0]['updated'] = true
end
end
end
ext_file.close
extensions
end
def get_extension(id)
store_session.get_extension(id)
end
def toggle_item(module_key, active)
if !module_key.nil?
end
end
end