Add detect site mode.
This commit is contained in:
parent
fd8ee8bd0e
commit
aa574f7808
|
@ -174,11 +174,21 @@ class Admin::SitePanelController < OrbitAdminController
|
||||||
def sites_list
|
def sites_list
|
||||||
@module_app = ModuleApp.where(:title=>@app_title).first
|
@module_app = ModuleApp.where(:title=>@app_title).first
|
||||||
@categories = @module_app.categories
|
@categories = @module_app.categories
|
||||||
|
@filter_fields = filter_fields(@categories, [])
|
||||||
|
site_modes = ["development","production"]
|
||||||
|
@filter_fields["client_management.site_mode"] = site_modes.map{|mode| {:title=>I18n.t("client_management.#{mode}"), :id=>mode}}
|
||||||
@sites = SiteConstruct.any_in(:hidden=>[false,nil]).desc(:id)
|
@sites = SiteConstruct.any_in(:hidden=>[false,nil]).desc(:id)
|
||||||
@site_servers = SiteServer.all.with_categories(filters("category"))
|
@site_servers = SiteServer.all.with_categories(filters("category"))
|
||||||
@sites = (params[:server_name].blank? ? @sites : @sites.where(:server_type=>params[:server_name]))
|
@sites = (params[:server_name].blank? ? @sites : @sites.where(:server_type=>params[:server_name]))
|
||||||
@sites = @sites.any_in(:server_type => @site_servers.map{|s| s.server_name})
|
@sites = @sites.any_in(:server_type => @site_servers.map{|s| s.server_name})
|
||||||
@sites = search_data(@sites,[:domain_name,:site_name,:school_name,:status]).page(params[:page].to_i).per(10)
|
@sites = search_data(@sites,[:domain_name,:site_name,:school_name,:status]).page(params[:page].to_i).per(10)
|
||||||
|
if (params[:filters][:site_mode].present? rescue false)
|
||||||
|
site_modes = params[:filters][:site_mode]
|
||||||
|
if site_modes.include?("development")
|
||||||
|
site_modes << nil
|
||||||
|
end
|
||||||
|
@sites = @sites.where(:rails_env.in=>site_modes,:status=>"finish")
|
||||||
|
end
|
||||||
if request.xhr?
|
if request.xhr?
|
||||||
render :partial => "sites_list_table"
|
render :partial => "sites_list_table"
|
||||||
end
|
end
|
||||||
|
|
|
@ -5,7 +5,7 @@ class SiteConstruct
|
||||||
SiteServer.all.map{|s| s.server_name}
|
SiteServer.all.map{|s| s.server_name}
|
||||||
end
|
end
|
||||||
SITE_TYPES = ["School","Gravity"]
|
SITE_TYPES = ["School","Gravity"]
|
||||||
|
field :rails_env, type: String, :default => "development"
|
||||||
field :server_type
|
field :server_type
|
||||||
field :site_name
|
field :site_name
|
||||||
field :domain_name
|
field :domain_name
|
||||||
|
|
|
@ -15,6 +15,8 @@
|
||||||
Active: <%=SiteConstruct.where(:server_type => site_server.server_name,:status=>"finish").count %><br>
|
Active: <%=SiteConstruct.where(:server_type => site_server.server_name,:status=>"finish").count %><br>
|
||||||
Closed: <%=SiteConstruct.where(:server_type => site_server.server_name,:status=>"closed").count %><br>
|
Closed: <%=SiteConstruct.where(:server_type => site_server.server_name,:status=>"closed").count %><br>
|
||||||
Not yet installed: <%=SiteConstruct.where(:server_type => site_server.server_name,:status=>"").count %><br>
|
Not yet installed: <%=SiteConstruct.where(:server_type => site_server.server_name,:status=>"").count %><br>
|
||||||
|
Production: <%=SiteConstruct.where(:server_type => site_server.server_name,:rails_env=>"production",:status=>"finish").count %><br>
|
||||||
|
Development: <%=SiteConstruct.where(:server_type => site_server.server_name,:rails_env.in=>["development",nil],:status=>"finish").count %><br>
|
||||||
</p>
|
</p>
|
||||||
</td>
|
</td>
|
||||||
<td><%=site_server.server_name%></td>
|
<td><%=site_server.server_name%></td>
|
||||||
|
@ -51,6 +53,9 @@
|
||||||
maxHeight: 400,
|
maxHeight: 400,
|
||||||
modal: true,
|
modal: true,
|
||||||
width: '80%',
|
width: '80%',
|
||||||
|
open: function(){
|
||||||
|
$(this).parent().css("top",$(document).height() - $(window).height() + "px");
|
||||||
|
},
|
||||||
close: function(){$( this ).dialog( "close" );},
|
close: function(){$( this ).dialog( "close" );},
|
||||||
buttons: {
|
buttons: {
|
||||||
"<%= t(:submit) %>": function(){$( this ).dialog( "close" );exec_commands()},
|
"<%= t(:submit) %>": function(){$( this ).dialog( "close" );exec_commands()},
|
||||||
|
@ -113,6 +118,9 @@
|
||||||
maxHeight: 400,
|
maxHeight: 400,
|
||||||
width: '80%',
|
width: '80%',
|
||||||
modal: true,
|
modal: true,
|
||||||
|
open: function(){
|
||||||
|
$(this).parent().css("top",$(document).height() - $(window).height() + "px");
|
||||||
|
},
|
||||||
close: function(){close_info = true;},
|
close: function(){close_info = true;},
|
||||||
buttons: {
|
buttons: {
|
||||||
"<%= t('client_management.confirm') %>": function(){$( this ).dialog( "close" );close_info = true;},
|
"<%= t('client_management.confirm') %>": function(){$( this ).dialog( "close" );close_info = true;},
|
||||||
|
|
|
@ -1,46 +1,49 @@
|
||||||
<div id="filter" class="topnav clearfix open">
|
<% content_for :right_nav do %>
|
||||||
<ul class="breadcrumb text-info pull-left">
|
<% if !search_dom_id.nil?%>
|
||||||
<li><a href="/zh_tw/admin/dashboards">網站內容</a><span class="divider">/</span></li><li><a href="/admin/site_panel"><span class="translation_missing" title="translation missing: zh_tw.module_name.client_management">Client Management</span></a><span class="divider">/</span></li><li class="active"><span class="translation_missing" title="translation missing: zh_tw.restful_actions.server_manager">Server Manager</span></li>
|
<% if quick_new %>
|
||||||
</ul>
|
<%= link_to content_tag(:i, nil, class: "icons-plus") + " " + t(:add), request.original_fullpath + '/new', class: "btn btn-primary pull-left", style: "clear: left;"%>
|
||||||
<div class="searchClear pull-left" style="clear: left;">
|
<% end %>
|
||||||
|
<div class="searchClear pull-left" <% if !quick_new %>style="clear: left;"<% end %>>
|
||||||
<form id="module-search-form">
|
<form id="module-search-form">
|
||||||
<div class="sc-field"><i class="icon-search"></i><i class="icons-cross-3 search-clear" style="display: none;"></i><input type="text" id="filter-input" class="search-query input-medium" placeholder="搜尋" value=""></div>
|
<input type="text" id="filter-input" class="search-query input-medium" placeholder="<%= t(:search_) %>" value="<%=params[:keywords]%>">
|
||||||
</form>
|
</form>
|
||||||
<img id="search-preloader" src="/assets/preloader.gif" style="height: 40px; position: absolute; left: 220px; top: -5px; display:none;">
|
<img id="search-preloader" src="/assets/preloader.gif" style="height: 40px; position: absolute; left: 220px; top: -5px; display:none;">
|
||||||
</div>
|
</div>
|
||||||
|
<% end %>
|
||||||
<ul class="nav nav-pills filter-nav pull-right">
|
<ul class="nav nav-pills filter-nav pull-right">
|
||||||
|
<% fields.keys.each do |field| %>
|
||||||
|
<% org_field = field %>
|
||||||
|
<% field = field.to_s.split(".").last %>
|
||||||
<li class="accordion-group">
|
<li class="accordion-group">
|
||||||
<div class="accordion-heading">
|
<div class="accordion-heading">
|
||||||
<a href="#collapse-category" data-toggle="collapse" data-parent="#filter" class="accordion-toggle"><%=t(:category)%></a>
|
<a href="#collapse-<%= field %>" data-toggle="collapse" data-parent="#filter" class="accordion-toggle"><%= t(org_field) %></a>
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
<li class="accordion-group">
|
|
||||||
<div class="accordion-heading">
|
|
||||||
<a href="#collapse-tags" data-toggle="collapse" data-parent="#filter" class="accordion-toggle"><%=t(:tags)%></a>
|
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
|
<% end %>
|
||||||
</ul>
|
</ul>
|
||||||
<div class="filter-group accordion-group">
|
<div class="filter-group accordion-group">
|
||||||
<div class="accordion-body in collapse" id="collapse-category" style="height: auto;">
|
<% fields.keys.each do |field| %>
|
||||||
|
<% org_field = field %>
|
||||||
|
<% field = field.to_s.split(".").last %>
|
||||||
|
<div class="accordion-body collapse" id="collapse-<%= field %>">
|
||||||
<div class="accordion-inner pagination-right" >
|
<div class="accordion-inner pagination-right" >
|
||||||
<% @categories.each do |category|%>
|
<% if fields[org_field].class == String %>
|
||||||
<a class="btn btn-small " href="#" id="filter_<%=category.id%>" onclick="filter.addFilter('filters[category][]=<%=category.id%>');$(this).toggleClass('active');return false;"><%=category.title%></a>
|
<%= fields[org_field].html_safe %>
|
||||||
|
<% else %>
|
||||||
|
<% fields[org_field].each do |val| %>
|
||||||
|
<%= link_to (val[:title].blank? ? "" : t(val[:title])), "#", :onclick => "filter.addFilter('filters[#{field}][]=#{val[:id]}');$(this).toggleClass('active');return false;", :class => "btn btn-small #{is_filter_active?(field, val[:id])}", :id => "filter_#{val[:id]}" %>
|
||||||
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
<div class="filter-clear">
|
<div class="filter-clear">
|
||||||
<a href="#" onclick="filter.clearFilter();" class="btn btn-link btn-small"><i class="icons-cycle"></i> 清除</a>
|
<a href="#" onclick="filter.clearFilter();" class="btn btn-link btn-small"><i class="icons-cycle"></i> <%= t(:clear) %></a>
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="accordion-body collapse" id="collapse-tags">
|
|
||||||
<div class="accordion-inner pagination-right">
|
|
||||||
</div>
|
|
||||||
<div class="filter-clear">
|
|
||||||
<a href="#" onclick="filter.clearFilter();" class="btn btn-link btn-small"><i class="icons-cycle"></i> 清除</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
|
<% end %>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
|
<% if !search_dom_id.nil?%>
|
||||||
var interval = 0;
|
var interval = 0;
|
||||||
var keyword;
|
var keyword;
|
||||||
var searchLock=false;
|
var searchLock=false;
|
||||||
|
@ -99,7 +102,7 @@
|
||||||
history.pushState(null, null, url);
|
history.pushState(null, null, url);
|
||||||
$.get(url,function(data){
|
$.get(url,function(data){
|
||||||
searchLock = false;
|
searchLock = false;
|
||||||
$("#index_table").html(data);
|
$("#<%= search_dom_id %>").html(data);
|
||||||
bindPagination();
|
bindPagination();
|
||||||
$("#search-preloader").fadeOut();
|
$("#search-preloader").fadeOut();
|
||||||
});
|
});
|
||||||
|
@ -108,6 +111,7 @@
|
||||||
setTimeout(moduleSearch,100);
|
setTimeout(moduleSearch,100);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
<% end %>
|
||||||
|
|
||||||
var bindPagination = function(){
|
var bindPagination = function(){
|
||||||
$(".pagination a").click(function(){
|
$(".pagination a").click(function(){
|
||||||
|
@ -186,7 +190,7 @@
|
||||||
var update = false;
|
var update = false;
|
||||||
var filter;
|
var filter;
|
||||||
$(document).ready(function(){
|
$(document).ready(function(){
|
||||||
filter = new Filter("#index_table");
|
filter = new Filter("#<%= search_dom_id %>");
|
||||||
bindPagination();
|
bindPagination();
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
|
@ -19,7 +19,7 @@
|
||||||
<div id='info_texts'></div>
|
<div id='info_texts'></div>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
<%= render :partial => "sites_list_filter" %>
|
<%= render :partial => "sites_list_filter", :locals =>{:fields => @filter_fields, :search_dom_id=>"index_table", :quick_new=>false} %>
|
||||||
<span id="index_table">
|
<span id="index_table">
|
||||||
<%=render :partial=>'sites_list_table',:locals=>{:@sites=>@sites}%>
|
<%=render :partial=>'sites_list_table',:locals=>{:@sites=>@sites}%>
|
||||||
</span>
|
</span>
|
|
@ -1,5 +1,13 @@
|
||||||
en:
|
en:
|
||||||
|
module_name:
|
||||||
|
client_management: Client Management
|
||||||
|
restful_actions:
|
||||||
|
server_manager: Server Manager
|
||||||
|
site_list: Site List
|
||||||
client_management:
|
client_management:
|
||||||
|
development: Development
|
||||||
|
production: Production
|
||||||
|
site_mode: Site mode
|
||||||
only_copy_installed_module: Only copy installed modules
|
only_copy_installed_module: Only copy installed modules
|
||||||
copy_source: Copy Source
|
copy_source: Copy Source
|
||||||
see_sites: See sites on the server
|
see_sites: See sites on the server
|
||||||
|
|
|
@ -1,5 +1,13 @@
|
||||||
zh_tw:
|
zh_tw:
|
||||||
|
module_name:
|
||||||
|
client_management: 網站管理系統
|
||||||
|
restful_actions:
|
||||||
|
server_manager: 伺服器管理
|
||||||
|
site_list: 網站列表
|
||||||
client_management:
|
client_management:
|
||||||
|
development: 開發者模式
|
||||||
|
production: 產品模式
|
||||||
|
site_mode: 網站模式
|
||||||
only_copy_installed_module: 只複製安裝的模組
|
only_copy_installed_module: 只複製安裝的模組
|
||||||
copy_source: 複製來源
|
copy_source: 複製來源
|
||||||
see_sites: 查看主機上的網站
|
see_sites: 查看主機上的網站
|
||||||
|
|
|
@ -89,6 +89,20 @@ namespace :create_site do
|
||||||
else
|
else
|
||||||
site_construct.update(:server_type=>server_type,:site_name=>site_name,:domain_name=>server_name,:nginx_file=>nginx_file,:db_name=>db_name,:port=>port,:path=>path,:site_type=>site_type,:school_name=>school_name,:user_id=>User.first.id,:status=>status,:cert_ver_added_text=>cert_ver_added_text)
|
site_construct.update(:server_type=>server_type,:site_name=>site_name,:domain_name=>server_name,:nginx_file=>nginx_file,:db_name=>db_name,:port=>port,:path=>path,:site_type=>site_type,:school_name=>school_name,:user_id=>User.first.id,:status=>status,:cert_ver_added_text=>cert_ver_added_text)
|
||||||
end
|
end
|
||||||
|
default_rails_env = 'development'
|
||||||
|
enable_rails_env = ['development','production']
|
||||||
|
rails_env = default_rails_env
|
||||||
|
cmd_output = exec_ssh_command_by_sudo_and_see_output(ssh,"ps -o args= -p `cat #{site_construct.path}/#{site_construct.site_name}/tmp/pids/unicorn.pid`",false) rescue []
|
||||||
|
enable_rails_env.each do |env|
|
||||||
|
if( cmd_output[0].include?(env) rescue false)
|
||||||
|
rails_env = env
|
||||||
|
break
|
||||||
|
elsif( cmd_output[0].include?("No such file or directory") rescue false)
|
||||||
|
site_construct.update(:status => "closed")
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
site_construct.update(:rails_env => rails_env)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -47,10 +47,13 @@ namespace :exec_commands do
|
||||||
default_rails_env = 'development'
|
default_rails_env = 'development'
|
||||||
enable_rails_env = ['development','production']
|
enable_rails_env = ['development','production']
|
||||||
rails_env = default_rails_env
|
rails_env = default_rails_env
|
||||||
log_files = exec_ssh_command_by_sudo_and_see_output(ssh,"ls -t '#{@site_construct.path}/#{@site_construct.site_name}/log'",false).flat_map{|output| output.split(/(\r\n|\t|\n|\s+)/)}.select{|output| output.present? && /(\r\n|\t|\n|\s+)/.match(output).nil?} rescue []
|
cmd_output = exec_ssh_command_by_sudo_and_see_output(ssh,"ps -o args= -p `cat #{@site_construct.path}/#{@site_construct.site_name}/tmp/pids/unicorn.pid`",false) rescue []
|
||||||
log_files.each do |log_file|
|
enable_rails_env.each do |env|
|
||||||
if( enable_rails_env.include?(log_file.sub('.log','')) rescue false)
|
if( cmd_output[0].include?(env) rescue false)
|
||||||
rails_env = log_file.sub('.log','')
|
rails_env = env
|
||||||
|
break
|
||||||
|
elsif( cmd_output[0].include?("No such file or directory") rescue false)
|
||||||
|
site_construct.update(:status => "closed")
|
||||||
break
|
break
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue