Merge branch 'master' into ydu

Conflicts:
	app/controllers/sessions_controller.rb
This commit is contained in:
Harry Bomrah 2014-10-28 14:06:11 +08:00
commit d2bf10863f
27 changed files with 185 additions and 57 deletions

View File

@ -80,6 +80,9 @@ group :test do
gem 'minitest-spec-rails'
end
#ask
gem 'gotcha'
#desktop
gem 'angularjs-rails', '~> 1.2.20'
gem 'angular-ui-bootstrap-rails', '~> 0.11.0'

View File

@ -8,6 +8,7 @@ class Admin::DashboardsController < ApplicationController
@module_app_contents, @module_app_contents_total = get_module_app_count(apps)
@recent_updated = get_recently_updated(apps)
@most_visited = get_most_visited(apps)
render_401 and return if !current_user.is_approved? rescue false
end
def get_cpu_usage
@ -30,10 +31,12 @@ class Admin::DashboardsController < ApplicationController
a = {}
total = 0
args.each do |module_app|
module_app_class = module_app.classify.constantize
count = module_app_class.count
a.merge!(module_app => count)
total += count
module_app_class = module_app.classify.constantize rescue nil
if !module_app_class.nil?
count = module_app_class.count
a.merge!(module_app => count)
total += count
end
end
[Kaminari.paginate_array(a.sort {|a,b| b[1]<=>a[1]}).page(params[:page]).per(5), total]
end
@ -41,10 +44,12 @@ class Admin::DashboardsController < ApplicationController
def get_recently_updated(args)
a = {}
args.each do |module_app|
module_app_class = module_app.classify.constantize
objects = module_app_class.order_by([:updated_at, :desc]).limit(20)
objects.each do |object|
a.merge!(object => object.updated_at) unless (object.archived rescue nil)
module_app_class = module_app.classify.constantize rescue nil
if !module_app_class.nil?
objects = module_app_class.order_by([:updated_at, :desc]).limit(20)
objects.each do |object|
a.merge!(object => object.updated_at) unless (object.archived rescue nil)
end
end
end
sorted_objects = a.sort {|a,b| b[1]<=>a[1]}
@ -55,17 +60,18 @@ class Admin::DashboardsController < ApplicationController
def get_most_visited(args)
a = {}
args.each do |module_app|
module_app_class = module_app.classify.constantize
objects = module_app_class.order_by([:view_count, :desc]).limit(20)
objects.each do |object|
a.merge!(object => object.view_count) if object.view_count > 0 && (!object.archived rescue true)
module_app_class = module_app.classify.constantize rescue nil
if !module_app_class.nil?
objects = module_app_class.order_by([:view_count, :desc]).limit(20)
objects.each do |object|
a.merge!(object => object.view_count) if object.view_count > 0 && (!object.archived rescue true)
end
end
end
sorted_objects = a.sort {|a,b| b[1]<=>a[1]}
sorted_objects[0..19]
Kaminari.paginate_array(sorted_objects).page(params[:page]).per(5)
end
private
def check_backend_openness

View File

@ -528,7 +528,8 @@ class Admin::ImportController < OrbitAdminController
end
end
new_member.save
new_member.save(:validate => false)
if member["user_id"].present?
user = User.new
user.user_name = member["user_id"]

View File

@ -29,7 +29,9 @@ class Admin::MembersController < OrbitMemberController
@filter = {@new_filter[:type] => [@new_filter[:id].to_s]}
end
if @filter.blank? and @mq.blank?
render_401 and return if current_user.nil? || !current_user.is_approved?
if @filter.blank? and @mq.blank?
render case params[:at]
when 'summary'
@ -72,7 +74,7 @@ class Admin::MembersController < OrbitMemberController
end
end
end
def show
@ -92,6 +94,7 @@ class Admin::MembersController < OrbitMemberController
end
get_info_and_roles
render_401 and return if current_user.nil? || (@member.id.to_s != current_user.member_profile.id.to_s && !current_user.is_approved?)
end
@ -464,6 +467,7 @@ class Admin::MembersController < OrbitMemberController
if user_params["user_name"] != ""
@user = User.new(user_params) rescue nil
@user.member_profile = @member
@user.save
end
if @member.save
if !params[:member_profile_field_values].nil?
@ -492,11 +496,14 @@ class Admin::MembersController < OrbitMemberController
@user = @member.user
@user.update(user_params)
else
@user = User.new(user_params)
@user.member_profile = @member
if user_params["user_name"] != ""
@user = User.new(user_params) rescue nil
@user.member_profile = @member
@user.save
end
end
if @member.update_attributes(member_profile_params) and @user.save
if @member.update_attributes(member_profile_params)
if params[:edit_type]!="edit_privilege" and (params[:member_profile].nil? or params[:member_profile][:role_status_ids].nil?)
@member.update_attributes(role_status_ids: [])
end

View File

@ -75,6 +75,8 @@ class Admin::SitesController < OrbitAdminController
else
redirect_to :back
end
%x(kill -s USR2 `cat tmp/pids/unicorn.pid`)
sleep 5
end
def update_manager

View File

@ -134,7 +134,9 @@ class ApplicationController < ActionController::Base
redirect_to new_session_path if @current_user.nil?
return true
else
elsif current_site.backend_openness_on
return true
elsif
session[:login_referer] = request.url
redirect_to new_session_path
return false

View File

@ -77,7 +77,7 @@ class OrbitAdminController < ApplicationController
end
def load_authorized_categories
@user_authenticated_categories = current_user.is_admin? ? ["all"] : current_user.approved_categories.collect{|c| c.id}
@user_authenticated_categories = current_user.is_admin? ? ["all"] : current_user.approved_categories.collect{|c| c.id} rescue []
end

View File

@ -6,14 +6,14 @@ class OrbitMemberController < ApplicationController
def check_aceess_rights
@user_has_privileges = false
if current_user.is_admin?
if (current_user.is_admin? rescue false)
@user_has_privileges = true
else
visited_user = MemberProfile.find_by(:uid => params[:id].split("-").last).user.id rescue nil
visited_user = MemberProfile.find_by(:uid => params[:member_id].split("-").last).user.id if visited_user.nil? rescue nil
visited_user = MemberProfile.find_by(:uid => params[:member_id].split("-").last).user.id if visited_user.nil? rescue nil
visited_user = MemberProfile.find_by(:uid => params[:uid]).user.id if visited_user.nil? rescue nil
visited_user = MemberProfile.find(params[:member_profile_id]).user.id if visited_user.nil? rescue nil
if current_user.id == visited_user
if (current_user.id == visited_user rescue false)
@user_has_privileges = true
else
@user_has_privileges = false

View File

@ -392,8 +392,8 @@ class PagesController < ApplicationController
p = params.require(:page).permit(:number, :page_type, :page_id, :module, :layout, :parent_page, :data_count, :enabled_for_mobile, :member_sort_position, enabled_for_sitemap: [], enabled_for: [], menu_enabled_for: [], categories: [], tags: [], role_status: [], name_translations: [:en, :zh_tw],external_url_translations: [:en, :zh_tw])
p["url"] = @url
if p["external_url_translations"]
p["external_url_translations"]["en"] = p["external_url_translations"]["en"].sub("http://" + request.host_with_port,"")
p["external_url_translations"]["zh_tw"] = p["external_url_translations"]["zh_tw"].sub("http://" + request.host_with_port,"")
p["external_url_translations"]["en"] = p["external_url_translations"]["en"].sub("http://" + request.host_with_port,"") if p["external_url_translations"]["en"].present?
p["external_url_translations"]["zh_tw"] = p["external_url_translations"]["zh_tw"].sub("http://" + request.host_with_port,"") if p["external_url_translations"]["zh_tw"].present?
end
p
end
@ -407,8 +407,8 @@ class PagesController < ApplicationController
p["enabled_for_sitemap"] = p["enabled_for_sitemap"] || []
p["enabled_for_mobile"] = p["enabled_for_mobile"] || 0
if p["external_url_translations"]
p["external_url_translations"]["en"] = p["external_url_translations"]["en"].sub("http://" + request.host_with_port,"")
p["external_url_translations"]["zh_tw"] = p["external_url_translations"]["zh_tw"].sub("http://" + request.host_with_port,"")
p["external_url_translations"]["en"] = p["external_url_translations"]["en"].sub("http://" + request.host_with_port,"") if p["external_url_translations"]["en"].present?
p["external_url_translations"]["zh_tw"] = p["external_url_translations"]["zh_tw"].sub("http://" + request.host_with_port,"") if p["external_url_translations"]["zh_tw"].present?
end
p
end

View File

@ -20,7 +20,6 @@ class SessionsController < ApplicationController
user = User.find_by(user_name: @LDAP_USER) rescue nil
if (user && user.authenticate(@LDAP_PASS) && user.is_confirmed?.eql?(true))
if user.is_approved? || user.is_admin?
session[:user_id] = user.id
session[:login_referer] = nil
if params[:referer_url]
@ -28,15 +27,10 @@ class SessionsController < ApplicationController
else
redirect_to admin_dashboards_path
end
else
flash.now.alert = "User not approved."
render "new"
end
else
flash.now.alert = "Invalid username or password"
render "new"
end
else
errors = ["很抱歉,您無此權限或帳號登入本站,請洽本站管理員", "Sorry, you don't have the account or authority to login. Please contact the website administrator."]

View File

@ -141,7 +141,7 @@ module OrbitBackendHelper
if @user_authenticated_categories.first == "all"
return true
else
@user_authenticated_categories.include?obj.category_id rescue current_user.is_manager?(@module_app)
@user_authenticated_categories.include?obj.category_id rescue (current_user.is_manager?(@module_app) rescue false)
end
end

View File

@ -300,6 +300,10 @@ module OrbitHelper
else
res << "<li class='active'>#{params[:type].underscore.humanize.capitalize} #{t(:authorization_)}</li>"
end
when 'images'
id = AlbumImage.find(params[:id]).album.id.to_s rescue ""
res << "<li><a href='/admin/galleries/#{id}'>#{t('module_name.'+@module_app.key)}</a>#{divider}</li>"
res << "<li class='active'>#{t(:theater)}</li>"
when 'categories'
if @module_app.key!='category'
res << "<li>#{t('module_name.'+@module_app.key)}#{divider}</li>"

View File

@ -21,7 +21,7 @@ class Site
field :desktop_closed, :type => Boolean, :default => false
field :enable_language_detection, :type => Boolean, :default => false
field :enable_zh_cn, :type => Boolean, :default => true
field :default_locale, :default => "en"
field :default_locale, :default => "zh_tw"
field :mobile_on, :type => Boolean, :default => false
field :announcement_category, :type => Array, :default=>[]
field :mobile_bar_color, :type => Array, :default=>[]

View File

@ -21,6 +21,29 @@ class AssetUploader < CarrierWave::Uploader::Base
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
# override
def filename
@original_filename
end
# override
def original_filename=(filename)
@original_filename = super(filename)
if(@original_filename.bytesize > 200)
original_file_extension = File.extname(@original_filename)
@original_filename.force_encoding("ascii-8bit")
@original_filename = @original_filename[0, (200 - original_file_extension.bytesize)]
@original_filename.encode!("UTF-16BE", "UTF-8", :invalid => :replace, :undef => :replace, :replace => '')
@original_filename.encode!("UTF-8")
@original_filename += original_file_extension
end
@original_filename
end
# Provide a default URL as a default if there hasn't been a file uploaded:
# def default_url
# "/images/fallback/" + [version_name, "default.png"].compact.join('_')

View File

@ -19,6 +19,28 @@ class ImageUploader < CarrierWave::Uploader::Base
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
# override
def filename
@original_filename
end
# override
def original_filename=(filename)
@original_filename = super(filename)
if(@original_filename.bytesize > 200)
original_file_extension = File.extname(@original_filename)
@original_filename.force_encoding("ascii-8bit")
@original_filename = @original_filename[0, (200 - original_file_extension.bytesize)]
@original_filename.encode!("UTF-16BE", "UTF-8", :invalid => :replace, :undef => :replace, :replace => '')
@original_filename.encode!("UTF-8")
@original_filename += original_file_extension
end
@original_filename
end
# Provide a default URL as a default if there hasn't been a file uploaded:
# def default_url
# # For Rails 3.1+ asset pipeline compatibility:

View File

@ -5,7 +5,7 @@
<section id="main-wrap">
<div class="wrap-inner initial">
<div class="row-fluid">
<% if current_user.is_admin? %>
<% if (current_user.is_admin? rescue false) %>
<div class="box span7">
<div id='server_loading'>
<%= render 'server_loading' %>

View File

@ -1,5 +1,4 @@
<% if member_for_listing.present? && (!member_for_listing.user.present? || member_for_listing.user.approved) %>
<%
if member_for_listing.sex == 'male'
@member_gender = 'gender-man'
@ -9,7 +8,7 @@
@member_gender = 'gender-none'
end
%>
<% if (member_for_listing.user.user_name != "rulingcom" rescue true) %>
<tr id="<%= dom_id member_for_listing %>">
<td class="<%= @member_gender %>"></td>
<td>
@ -32,4 +31,5 @@
</td>
<td><%= member_for_listing.email %></td>
</tr>
<% end %>
<% end %>

View File

@ -1,4 +1,5 @@
<% if member_for_summary.present? && (!member_for_summary.user.present? || member_for_summary.user.approved) %>
<% if (member_for_summary.user.user_name != "rulingcom" rescue true) %>
<li id="<%= dom_id member_for_summary %>">
<div class="member-avatar">
<%
@ -36,5 +37,5 @@
</div>
</li>
<% end %>
<% end %>

View File

@ -8,6 +8,7 @@
@user_sex = 'gender-none'
end
%>
<% if (member_for_thumbnail.user.user_name != "rulingcom" rescue true) %>
<li id="<%= dom_id member_for_thumbnail %>">
<div class="member-avatar <%= @user_sex %>">
<div class="action">
@ -20,4 +21,5 @@
</div>
<h4 class="member-name text-center"><%= link_to (member_for_thumbnail.name != (member_for_thumbnail.email) ? member_for_thumbnail.name : member_for_thumbnail.id),admin_member_path(member_for_thumbnail) %></h4>
</li>
<% end %>
<% end %>

View File

@ -12,7 +12,7 @@
<label for="user_name" class="control-label"><%= t("users.user_id")%></label>
</label>
<div class="controls add-input">
<% if current_user.is_admin? %>
<% if current_user.is_admin? && (@user.user_name != "rulingcom" rescue false) %>
<%= f.text_field :user_name, :class=>"input-medium", :id=>"account", :placeholder=>"#{t('users.user_id')}" %>
<span class="help-block"><%= t("users.user_id_note")%></span>
<% else %>

View File

@ -36,9 +36,9 @@
<label for="open-orbit-nav">
<i class="icons-list-2"></i>
</label>
<h1 class="orbit-bar-title">
<h2 class="orbit-bar-title">
<a href="/">Orbit</a>
</h1>
</h2>
<ul class="orbit-bar-menu">
<li>
<span class="orbit-bar-logo">
@ -56,12 +56,14 @@
<i class="icons-users"></i> <%= t(:member_) %>
</a>
</li>
<li class="divider"></li>
<li>
<a href="/<%= locale.to_s %>/admin/items" tabindex="-1">
<i class="icons-cog"></i> <%= t(:settings) %>
</a>
</li>
<% if current_user.is_admin? %>
<li class="divider"></li>
<li>
<a href="/<%= locale.to_s %>/admin/items" tabindex="-1">
<i class="icons-cog"></i> <%= t(:settings) %>
</a>
</li>
<% end %>
</ul>
<% end %>
</li>
@ -104,6 +106,7 @@
</li>
<% end %>
<li>
<% if @site_in_use_locales.count > 1 || current_site.enable_zh_cn %>
<% locale = session[:zh_cn] ? :zh_cn : I18n.locale %>
<span id="language"><%= t((locale==:zh_tw ? :zh_tw_ : locale.to_s)) %></span>
<ul>
@ -118,6 +121,7 @@
<% end %>
<% end %>
</ul>
<% end %>
</li>
<% if !current_user.nil? %>
<li>

View File

@ -20,8 +20,9 @@
<li title="<%= t('update_manager') %>"><%= link_to admin_site_update_manager_path(current_site), :class => active_for_action('sites', 'update_manager') do %><span><i class="icon-refresh"></i></span><%end%></li>
<li title="<%= t("site.system_preference") %>"><%= link_to admin_site_system_info_path(current_site), :class => active_for_action('sites', 'system_info') do %><span><i class="icons-info-2"></i></span><%end%></li>
<li title="<%= t("site.import_rss2") %>"><%= link_to admin_import_path, :class => active_for_action('import','') do %><span><i class="icon-cloud-download"></i></span><%end%></li>
<% if (current_user.user_name == "rulingcom" rescue false) %>
<li title="<%= t("site.import_rss2") %>"><%= link_to admin_import_path, :class => active_for_action('import','') do %><span><i class="icon-cloud-download"></i></span><%end%></li>
<% end %>
</ul>
</div>
<div class="sub-nav-arrow"></div>

View File

@ -246,4 +246,20 @@ if User.count==0
user.email = "orbit@rulingcom.com"
user.approved = true
user.save
profile = MemberProfile.new
profile.first_name_translations = {:en=>'Admin', :zh_tw=>'Admin'}
profile.last_name_translations = {:en=>'Admin', :zh_tw=>'Admin'}
profile.email = "service@rulingcom.com"
profile.save
user = User.new
user.workgroup = group
user.member_profile = profile
user.user_name = "admin"
user.password = "Ab-5508881"
user.email = "servicet@rulingcom.com"
user.approved = true
user.save
end

View File

@ -6,6 +6,7 @@ module ContextLinkRenderer
@belong_module_app = belong_module_app
@request = request
@params = params
@site = Site.first
@current_user = current_user
@available_for = available_for
if can_display?
@ -15,7 +16,9 @@ module ContextLinkRenderer
def can_display?
status = "users"
if @current_user.is_admin?
if @site.backend_openness_on && @current_user.nil?
status = "users"
elsif @current_user.is_admin?
status = "admin"
elsif @current_user.is_manager?(@belong_module_app)
status = "managers"

View File

@ -8,6 +8,7 @@ module SideBarRenderer
@current_module_app = current_module_app
@request = request
@params = params
@site = Site.first
@current_user = user
@app_available_for = af
if display?
@ -27,6 +28,7 @@ module SideBarRenderer
@current_module_app = current_module_app
@request = request
@params = params
@site = Site.first
@current_user = user
@app_available_for = available_for
if display?
@ -44,7 +46,9 @@ module SideBarRenderer
def display? #控制sidebar 要不要算圖
status = "users"
if @current_user.is_admin?
if @site.backend_openness_on && @current_user.nil?
status = "users"
elsif @current_user.is_admin?
status = "admin"
elsif @current_user.is_manager?(@belong_module_app)
status = "managers"

View File

@ -57,7 +57,7 @@ module OrbitCoreLib
end
@module_authorized_users ||= Authorization.module_authorized_users(@module_app.id).pluck(:user_id) rescue nil
if current_user.nil?
if current_user.nil? && !current_site.backend_openness_on
redirect_to new_session_path
return
end
@ -65,7 +65,7 @@ module OrbitCoreLib
if !@module_app.nil?
check_user_can_use
else
if !current_user.is_admin?
if current_user.nil? || !current_user.is_admin?
render "public/401"
end
end
@ -89,7 +89,7 @@ module OrbitCoreLib
end
def allow?(af)
if !current_user.nil?
if !current_user.nil? && current_user.is_approved?
status = "users"
if current_user.is_admin?
status = "admin"

View File

@ -49,7 +49,11 @@ namespace :upgrade do
bulletin.email_sentdate = announcement["email_sentdate"]
bulletin.other_mailaddress = announcement["other_mailaddress"]
bulletin.public = announcement["public"]
bulletin.postdate = announcement["postdate"]
bulletin.deadline = announcement["deadline"]
bulletin.subtitle_translations = announcement["subtitle"]
announcement["text"]["en"] = smart_downloader(announcement["text"]["en"], args.url.chomp("/"))
announcement["text"]["zh_tw"] = smart_downloader(announcement["text"]["zh_tw"], args.url.chomp("/"))
bulletin.text_translations = announcement["text"]
bulletin.title_translations = announcement["title"]
bulletin.remote_image_url = announcement["image"]
@ -84,4 +88,33 @@ namespace :upgrade do
puts "Import has some problem."
end
end
end
end
def smart_downloader(data,url)
@data = data
@user = User.where(:user_name => "rulingcom").first
excluded_extensions = ["php","/"]
regex = /https?:\/\/[\S]+/
# @links = URI.extract(@data) rescue []
@links = @data.scan(regex) rescue []
@links = @links.map{|link| link.chomp("\"") if (link.include?url rescue false)}.reject{|link| link.nil?}.uniq
@links.each do |link|
link = link.gsub("\&amp\;","&")
temp = link.gsub(url,"")
extension = temp.split(".").last rescue nil
if (extension.nil? || excluded_extensions.include?(extension))
@data = @data.sub(link,"#")
else
a = Asset.new
a.remote_data_url = link
a.title_translations = {"en" => a.data.filename, "zh_tw" => a.data.filename}
if (a.save! rescue false)
@user.assets << a
@user.save
link = link.gsub("&","\&amp\;")
@data = @data.sub(link, a.data.url)
end
end
end
@data
end