2014-05-20 04:14:52 +00:00
|
|
|
class Admin::ModuleStoreController < OrbitAdminController
|
|
|
|
layout "structure"
|
2015-04-21 09:19:00 +00:00
|
|
|
include Admin::ModuleStoreHelper
|
2014-05-20 04:14:52 +00:00
|
|
|
def index
|
|
|
|
@extensions = []
|
2014-10-28 11:18:59 +00:00
|
|
|
# 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
|
2014-05-20 04:14:52 +00:00
|
|
|
end
|
2014-07-02 09:37:34 +00:00
|
|
|
|
|
|
|
def show
|
|
|
|
@extension = get_extension(params[:id]) rescue nil
|
|
|
|
end
|
|
|
|
|
2015-04-21 09:19:00 +00:00
|
|
|
def modules_to_update
|
|
|
|
@built_in_extensions = get_built_in_extensions
|
|
|
|
render :partial => "modules_to_update"
|
|
|
|
end
|
|
|
|
|
2014-07-02 09:37:34 +00:00
|
|
|
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
|
2015-04-21 09:19:00 +00:00
|
|
|
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"
|
2014-07-02 09:37:34 +00:00
|
|
|
%x(kill -s USR2 `cat tmp/pids/unicorn.pid`)
|
|
|
|
sleep 5
|
|
|
|
end
|
|
|
|
|
2015-04-21 09:19:00 +00:00
|
|
|
def update_module
|
|
|
|
key = params["key"]
|
|
|
|
type = params["type"]
|
2015-04-27 12:45:05 +00:00
|
|
|
# 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
|
2015-04-21 09:19:00 +00:00
|
|
|
%x(kill -s USR2 `cat tmp/pids/unicorn.pid`)
|
|
|
|
sleep 5
|
|
|
|
end
|
|
|
|
|
2014-07-02 09:37:34 +00:00
|
|
|
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
|
|
|
|
|
2015-04-21 09:19:00 +00:00
|
|
|
|
2014-07-02 09:37:34 +00:00
|
|
|
def toggle_item(module_key, active)
|
|
|
|
if !module_key.nil?
|
|
|
|
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2014-05-20 04:14:52 +00:00
|
|
|
end
|