48 lines
1.4 KiB
Ruby
48 lines
1.4 KiB
Ruby
|
class Admin::ModuleStoreController < OrbitBackendController
|
||
|
|
||
|
@@store = STORE_CONFIG[:store_settings]["url"]
|
||
|
|
||
|
def index
|
||
|
@extensions = get_extensions
|
||
|
end
|
||
|
|
||
|
def show
|
||
|
@extension = get_extension(params[:id]) rescue nil
|
||
|
end
|
||
|
|
||
|
def download
|
||
|
#get extension related values
|
||
|
extension = get_extension(params[:id]) rescue nil
|
||
|
download_link = @@store + "/"+ extension["extension"]["extension"]["url"]
|
||
|
downloaded_file_name = extension["extension_filename"]
|
||
|
module_app_name = downloaded_file_name.split(/(.zip)/).first
|
||
|
|
||
|
#check if the directory exists or not
|
||
|
@module_status = Dir.exists?("#{Rails.root}/vendor/built_in_modules/#{module_app_name}")
|
||
|
if @module_status.eql?(true)
|
||
|
flash[:notice] = "This module is already installed"
|
||
|
else
|
||
|
download_extension(download_link, downloaded_file_name,module_app_name)
|
||
|
flash[:notice] = "This module has been successfully installed"
|
||
|
end
|
||
|
redirect_to admin_module_store_path
|
||
|
end
|
||
|
|
||
|
protected
|
||
|
|
||
|
def get_extensions
|
||
|
JSON.parse(open("#{@@store}/api/extensions").read)
|
||
|
end
|
||
|
|
||
|
def get_extension(id)
|
||
|
JSON.parse(open("#{@@store}/api/extensions/#{id}").read)
|
||
|
end
|
||
|
|
||
|
def download_extension(download_link, downloaded_file_name,module_app_name)
|
||
|
puts %x(wget "#{download_link}")
|
||
|
puts %x(unzip "#{downloaded_file_name}")
|
||
|
puts %x(mv #{module_app_name} "#{Rails.root}/vendor/built_in_modules/")
|
||
|
puts %x(rm "#{downloaded_file_name}")
|
||
|
site_restart
|
||
|
end
|
||
|
end
|