diff --git a/announcement.gemspec b/announcement.gemspec
index db70b58..e51eb90 100644
--- a/announcement.gemspec
+++ b/announcement.gemspec
@@ -76,7 +76,7 @@ if old_gemfile_text != new_gemfile_text
Bundler.with_clean_env{%x[screen -ls | grep auto_reopen_#{dir_name} | cut -d. -f1 | awk '{print $1}' | xargs kill]}
end
if files.count ==0
- command1 = "cd #{env_pwd} && gem install bundler -v 1.17.3 && bundle update"
+ command1 = "cd #{env_pwd} && gem install bundler -v 1.17.3 && bundle update"
else
command1 = "cd #{env_pwd} && gem install bundler -v 1.17.3 && mv -f Gemfile.lock Gemfile.lock.bak123 && bundle update"
end
@@ -92,11 +92,15 @@ if old_gemfile_text != new_gemfile_text
}
end
all_command = "#{command1} && cd #{env_pwd} && #{command2} #{command3} #{command4} && kill -s TERM `cat tmp/pids/unicorn.pid` && unset UNICORN_FD && bundle exec #{unicorn_rails} -c config/unicorn.rb -D -E #{mode}|at now"
+ file = File.new(File.join(env_pwd,'bundle_update_background.sh'),"w")
+ file.write(all_command)
+ file.chmod(0755)
+ file.close
a = Thread.start do
Bundler.with_clean_env do
puts env_pwd
puts mode
- exec(all_command)
+ exec("cd #{env_pwd} && screen -d -m -S bundle_update_#{dir_name} ./bundle_update_background.sh")
end
end
now_priority = Thread.current.priority.to_i
diff --git a/app/controllers/admin/sites_controller.rb b/app/controllers/admin/sites_controller.rb
new file mode 100644
index 0000000..1dd57ac
--- /dev/null
+++ b/app/controllers/admin/sites_controller.rb
@@ -0,0 +1,243 @@
+class Admin::SitesController < OrbitAdminController
+ before_filter :get_site
+ before_filter :set_git_branch, :only=>[:check_updates, :update_orbit]
+ before_action :create_page_set
+ def create_page_set
+ @site = @current_site.nil? ? Site.first : @current_site
+ if( @site.page_sets.count==0 rescue false)
+ @site.page_sets.create()
+ elsif @site.page_sets.count>1
+ @site.page_sets.each_with_index do |i,v|
+ if i!=0
+ v.delete
+ end
+ end
+ end
+ end
+ layout "structure"
+ def send_email
+ params_to_send = {'store_token' => current_site.store_token}
+ uri = URI.parse(OrbitStore::URL)
+ http = Net::HTTP.new(uri.host,uri.port)
+ request = Net::HTTP::Get.new("/site/send_email")
+ request.body = params_to_send.to_query
+ response = http.request(request)
+ data = JSON.parse(response.body)
+ %x(kill -s USR2 `cat tmp/pids/unicorn.pid`)
+ sleep 5
+ end
+ def index
+ @first_run = dashboard_is_first_run?
+ @registered = !@site.store_token.nil?
+ @store_permissions = check_store_permissions
+ if @store_permissions["error"] == "SITE_NOT_REGISTERED"
+ if @registered
+ @registered = false
+ @site.store_token = nil
+ @site.save
+ end
+ end
+ if @registered
+ network = ONetwork.new(OrbitStore::URL,"get")
+ response = network.request("/xhr/ticket/types",{"store_token" => @site.store_token})
+ data = JSON.parse(response.body) rescue {}
+ @types = []
+ locale = I18n.locale.to_s
+ if data["success"] == true
+ data["ticket_types"].each do |tt|
+ @types << [tt["title_translations"][locale],tt["id"]]
+ end
+ end
+ send_email if !@store_permissions["permission_granted"] rescue nil #Resend confirmation email if not confirmed
+ end
+ user_name = current_user.user_name rescue ''
+ network = ONetwork.new(OrbitStore::URL,"post")
+ response = network.request("/xhr/site/re_register_url",{"store_token" => current_site.store_token, 'site_domain' => request.host_with_port,'user' => user_name})
+ @data = JSON.parse(response.body) rescue {}
+ end
+
+
+ def mail_setting
+ end
+
+ def site_info
+ @pages = Page.where(:module=>"page_content")
+ end
+
+ def responsive_setting
+ @module = ModuleApp.find_by_key("announcement")
+ end
+
+ def search_engine
+ end
+
+ def sitemap
+ end
+
+ def change_design
+ @site.template = params[:design_key]
+ @site.save
+ restart_server
+ end
+
+ def system_info
+ @disk_free = `df -h /`.gsub("\n","
").html_safe
+ @nginx_version = %x[/usr/sbin/nginx -v 2>&1].gsub("\n","
").html_safe
+ @mongo_version = `mongod --version`.split("\n")[0].html_safe
+ @linux_version = `lsb_release -d`.split(":")[1].html_safe rescue "Not Applicable"
+
+ @user_actions = UserAction.all.desc(:created_at).page(params[:page]).per(10)
+
+ @mail_crons = Email.can_deliver.desc(:created_at)
+
+ @mail_cron_logs = EmailLog.desc(:created_at).page(params[:mail_log_page]).per(10)
+
+ respond_to do |format|
+ format.html
+ format.js
+ end
+ end
+
+ def delete_mail_log
+ if params[:ids]
+ EmailLog.any_in(:_id => params[:ids]).destroy
+ end
+ render :nothing => true
+ end
+
+ def preference
+ end
+
+ def update_orbit
+ end
+
+ def update
+ @site.update_attributes(site_params)
+
+ if params[:site][:enable_language_detection].eql?("0")
+ Site.update_all({:enable_language_detection => false})
+ elsif params[:site][:enable_language_detection].eql?("1")
+ Site.update_all({:default_locale => nil})
+ end
+ if !@site.in_use_locales.include?I18n.locale
+ I18n.locale = @site.in_use_locales.first
+ redirect_to admin_site_preference_path(current_site)
+ else
+ redirect_to :back
+ end
+ %x(kill -s USR2 `cat tmp/pids/unicorn.pid`)
+ sleep 5
+ end
+
+ def update_manager
+ @store_permissions = check_store_permissions
+ end
+
+ def get_update_history
+ @update_log = %x{git log --pretty=format:"%H','%ad','%s" --date=short}.split("\n").map{|log| log.gsub("'","").split(",")}.to_json
+ render :json => @update_log
+ end
+
+ def check_updates
+ %x(git fetch origin)
+ @new_updates = %x(git log #{@branch}..origin/#{@branch} --pretty=format:"%ad','%s" --date=short).split("\n").map{|log| log.gsub("'","").split(",")}.to_json
+ render :json => @new_updates
+ end
+ def git_reset(commit,type)
+ mul = Multithread.where(key: 'update_manager').first
+ mul = Multithread.create(key: 'update_manager') if mul.nil?
+ mul.update_attributes(status: 'waiting')
+ Thread.new do
+ ubuntu_version = %x[lsb_release -a | grep Release].scan(/\d.*\d/)[0]
+ git = 'git'
+ if Float(ubuntu_version) <= 14.04 && Float(%x[git --version].scan(/\d.\d/)[0]) < 1.9
+ if %x[uname -m].scan('64').count !=0
+ cmd0 = system("wget https://ruling.digital/uploads/asset/git_1.9.1-1_amd64.deb && dpkg -x git_1.9.1-1_amd64.deb ./git_1.9.1")
+ else
+ cmd0 = system("wget https://ruling.digital/uploads/asset/git_1.9.1-1_i386.deb && dpkg -x git_1.9.1-1_i386.deb ./git_1.9.1")
+ end
+ git = 'git_1.9.1/usr/bin/git'
+ end
+ git_add_except_public = Dir['*'].select{|v| v!= 'public'}.collect do |v|
+ "#{git} add -f '#{v}'"
+ end.join(' && ')
+ git_add_all_program = (Dir['app/*'].select{|v| !v.include? 'templates'} + Dir['lib/*'] + Dir['config/*'].select{|v| !v.include? 'mongoid.yml'}).collect do |v|
+ "#{git} add -f '#{v}'"
+ end.join(' && ')
+ time_now = Time.now.strftime('%Y_%m_%d_%H_%M')
+ Bundler.with_clean_env{system("#{git_add_except_public} && #{git} commit -m auto_backup_before_#{type}_#{time_now} && #{git} reset #{commit} --mixed && #{git_add_all_program} && #{git} reset #{commit} --merge && #{git} commit -m complete_#{type}_#{time_now}")}
+ mul.update_attributes(status: 'finish')
+ end
+ end
+ def update_orbit
+ store_permissions = check_store_permissions
+ if params['type'] == 'update'
+ if store_permissions["permission_granted"]
+ git_reset('origin','update')
+ render :text => 'waiting'
+ else
+ render :json => store_permissions.to_json
+ end
+ elsif params['type'] == 'restore'
+ git_reset(params['id'],'restore')
+ render :text => 'waiting'
+ elsif params['type'] == 'get_result'
+ render :text => Multithread.where(key: 'update_manager').first.status rescue 'running'
+ end
+ end
+
+ def bundle_install
+ Bundler.with_clean_env { system("cd #{Rails.root} && bundle update") }
+ %x(kill -s USR2 `cat tmp/pids/unicorn.pid`)
+ sleep 2
+ render :nothing => true
+ end
+
+ def restart_server
+ mode = Rails.env
+ unicorn_rails = %x[which unicorn_rails].sub("\n",'')
+ Bundler.with_clean_env{system("kill -s TERM `cat tmp/pids/unicorn.pid` && unset UNICORN_FD && bundle exec #{unicorn_rails} -c config/unicorn.rb -D -E #{mode}")}
+ sleep 2
+ render :nothing => true
+ end
+
+ private
+ def get_site
+ @site = @current_site.nil? ? Site.first : @current_site
+ end
+
+ def dashboard_is_first_run?
+ !current_user.is_tour_completed?("tickets")
+ end
+
+ def site_params
+ if params[:site][:default_bar_color]
+ params[:site][:mobile_bar_color] = []
+ end
+ # if params[:site][:enable_language_detection]
+ # Site.update_all({:default_locale => nil})
+ # end
+
+ unless params[:site][:in_use_locales].nil?
+ in_user_locales = []
+ I18n.available_locales.each do |locale|
+ in_user_locales << locale if params[:site][:in_use_locales][locale].eql?("1")
+ end
+ params[:site][:in_use_locales] = in_user_locales
+ end
+
+ if params[:site][:phone_number].nil?
+ params[:site][:phone_number] = []
+ # else
+ # params[:site][:phone_number] = params[:site][:phone_number]
+ end
+ params[:site][:sign_up_roles] = [] if !params[:site][:sign_up_roles].present?
+ params.require(:site).permit!
+
+ end
+
+
+ def set_git_branch
+ @branch = %x(git rev-parse --abbrev-ref HEAD).gsub("\n","")
+ end
+end
diff --git a/temp_file/Gemfile b/temp_file/Gemfile
index f94c875..41e0b2a 100644
--- a/temp_file/Gemfile
+++ b/temp_file/Gemfile
@@ -1,5 +1,5 @@
source 'https://rubygems.org'
-#test1!!!!!!!!
+#complete!!!!!!!!
#social gems
gem "omniauth-google-oauth2"
diff --git a/temp_file/app/views/admin/sites/update_manager.erb b/temp_file/app/views/admin/sites/update_manager.erb
new file mode 100644
index 0000000..cbbb90b
--- /dev/null
+++ b/temp_file/app/views/admin/sites/update_manager.erb
@@ -0,0 +1,312 @@
+
+
+