president
z9hang 11 years ago
commit 3a80a80841

@ -19,6 +19,10 @@ gem 'acts-as-taggable-on'
group :development do group :development do
gem 'better_errors', path: 'lib/better_errors' gem 'better_errors', path: 'lib/better_errors'
gem 'rack-mini-profiler', path: 'lib/rack-mini-profiler' gem 'rack-mini-profiler', path: 'lib/rack-mini-profiler'
if ENV['PRY']
gem 'pry'
gem 'pry-nav'
end
end end
# Gems used only for assets and not required # Gems used only for assets and not required

@ -1,11 +1,18 @@
patch: patch:
用户姓名的部分根据issues#655。 用户姓名的部分根据issues#655。
为了修改方便 为了修改方便
alias alias
方法 之前显示 调整之后 方法 之前显示 调整之后
name firstname+lastname login name firstname+lastname login
nickname xxx login nickname xxx login
realname xxx firstname+lastname realname xxx firstname+lastname
User model经过修改已经完全集成了user_extensions的功能
例如
user.gender=1
user.save
user_extensions字段会自动保存
不必要每次user.user_extensions.xxx以及判断是否为空
================================================================================ ================================================================================
app/models/setting.rb :165 app/models/setting.rb :165
# fixed domain url in development. tantantan's bug # fixed domain url in development. tantantan's bug
@ -14,22 +21,22 @@ app/models/setting.rb :165
define_singleton_method m do; nil; end if m.to_s =~ /([a-zA-Z]+_domain)$/ define_singleton_method m do; nil; end if m.to_s =~ /([a-zA-Z]+_domain)$/
end end
end end
程序部分链接中制定了subdomain参数使链接在二级域名中来回跳转。 程序部分链接中制定了subdomain参数使链接在二级域名中来回跳转。
为了开发方便使之功能在development模式下失效。 为了开发方便使之功能在development模式下失效。
# => nyan # => nyan
================================================================================ ================================================================================
app/controller/projects_controller.rb ===> projects#fake app/controller/projects_controller.rb ===> projects#fake
fake filter: 修改了传到页面中的Count后缀的数量 fake filter: 修改了传到页面中的Count后缀的数量
改为正确的数量删掉fake过滤器即可 改为正确的数量删掉fake过滤器即可
================================================================================ ================================================================================
#导航栏匹配域名显示和改变 #导航栏匹配域名显示和改变
app\helper\application_helper.rb app\helper\application_helper.rb
# rewrite navigation # rewrite navigation
app\views\layouts\_base_header.html.erb app\views\layouts\_base_header.html.erb
# reset navigation by domain name and url through regular match # reset navigation by domain name and url through regular match
================================================================================ ================================================================================
#首页根据域名匹配进入不同的页面 #首页根据域名匹配进入不同的页面
app\controller\welcome_controller.rb app\controller\welcome_controller.rb
def entry_select_user def entry_select_user
if request.original_url.match(/user\.trustie\.net/) if request.original_url.match(/user\.trustie\.net/)

@ -881,6 +881,7 @@ class BidsController < ApplicationController
def memberAccess def memberAccess
# 是课程,则判断当前用户是否参加了课程 # 是课程,则判断当前用户是否参加了课程
return true if current_user.admin?
return 0 if @bid.courses.first.project_type == Project::ProjectType_project return 0 if @bid.courses.first.project_type == Project::ProjectType_project
currentUser = User.current currentUser = User.current
render_403 unless currentUser.member_of?(@bid.courses.first) render_403 unless currentUser.member_of?(@bid.courses.first)

@ -21,13 +21,7 @@ class WelcomeController < ApplicationController
before_filter :entry_select_course, :entry_select_contest, :entry_select_user, :only => [:index] before_filter :entry_select_course, :entry_select_contest, :entry_select_user, :only => [:index]
def index def index
projectActive = Project.project_entities.active
@projectCount = projectActive.count
@projectPublicCount = projectActive.all_public.count
@projectHidenCount = @projectCount - @projectPublicCount
@developerCount = User.developer.count
@allUsercount = User.count
end end
def robots def robots
@ -36,10 +30,7 @@ class WelcomeController < ApplicationController
end end
def course def course
@courseCount = Project.course_entities.count @logoLink ||= logolink()
@teacherCount = User.teacher.count
@studentCount = User.student.count
@logoLink = logolink()
end end
@ -121,25 +112,25 @@ class WelcomeController < ApplicationController
end end
end end
def render(*args) # def render(*args)
_fake if @fake_filter # _fake if @fake_filter
super # super
end # end
private # private
def fake # def fake
@fake_filter = true # @fake_filter = true
end # end
# 骗子方法 # # 骗子方法
def _fake # def _fake
instance_variables.map { |variable| # instance_variables.map { |variable|
if variable.to_s =~ /Count$/ # if variable.to_s =~ /Count$/
self.instance_variable_set(variable.to_sym, # self.instance_variable_set(variable.to_sym,
("1" + (self.instance_variable_get(variable.to_sym).to_s)).to_i) # ("1" + (self.instance_variable_get(variable.to_sym).to_s)).to_i)
end # end
} # }
end # end
end end

@ -199,6 +199,53 @@ class User < Principal
end end
} }
# ======================================================================
# 集中处理 User 扩展表为空的问题
validate :valid_user_extensions
before_save :save_user_extensions
def extensions
self.user_extensions ||= self.create_user_extensions
end
def respond_to?(m, include_private = false)
flag = extensions.respond_to? m.to_sym
if flag
flag
else
super
end
end
def method_missing m, *args, &block
if extensions.respond_to? m.to_sym
self.class.send :define_method, m.to_sym, *args do
self.extensions.__send__ m.to_sym, *args
end
__send__ m.to_sym, *args, &block
else
super
end
end
def valid_user_extensions
if !self.extensions.valid?
self.extensions.errors.messages.each do |key, values|
values.each do |value|
self.errors.add key, value
end
end
end
end
def save_user_extensions
self.extensions.save
end
# 集中处理 User 扩展表为空的问题 < end
# ======================================================================
#选择项目成员时显示的用户信息文字 #选择项目成员时显示的用户信息文字
def userInfo def userInfo
info=self.nickname + ' (' + self.realname + ')'; info=self.nickname + ' (' + self.realname + ')';

@ -34,7 +34,6 @@
<h3 style="padding-left: 10px;"><%= l(:label_my_account) %></h3> <h3 style="padding-left: 10px;"><%= l(:label_my_account) %></h3>
<%= error_messages_for 'user' %> <%= error_messages_for 'user' %>
<%= error_messages_for 'se' %>
<fieldset class="box" style="margin:10px;"> <fieldset class="box" style="margin:10px;">
<fieldset class="collapsible collapsed" style="width:800px;margin-left: 10px;"> <fieldset class="collapsible collapsed" style="width:800px;margin-left: 10px;">

@ -1,125 +1,88 @@
<%= error_messages_for 'member' %> <%= error_messages_for 'member' %>
<% roles = Role.find_all_givable <%
members = @project.member_principals.includes(:roles, :principal).all.sort %> roles = Role.givable.all
if @project.project_type == Project::ProjectType_course
roles = roles[3..5]
else
roles = roles[0..2]
end
members = @project.member_principals.includes(:roles, :principal).all.sort
%>
<div class="splitcontentleft"> <div class="splitcontentleft">
<% if members.any? %> <% if members.any? %>
<table class="list members"> <table class="list members">
<thead><tr> <thead>
<th><%= l(:label_user) %></th> <tr>
<th><%= l(:label_role_plural) %></th> <th><%= l(:label_user) %></th>
<th style="width:15%"></th> <th><%= l(:label_role_plural) %></th>
<th style="width:15%"></th>
<%= call_hook(:view_projects_settings_members_table_header, :project => @project) %> <%= call_hook(:view_projects_settings_members_table_header, :project => @project) %>
</tr></thead> </tr>
<tbody> </thead>
<% members.each do |member| %> <tbody>
<% next if member.new_record? %> <% members.each do |member| %>
<tr id="member-<%= member.id %>" class="<%= cycle 'odd', 'even' %> member"> <% next if member.new_record? %>
<td class="<%= member.principal.class.name.downcase %>"><%= link_to_user member.principal %></td> <tr id="member-<%= member.id %>" class="<%= cycle 'odd', 'even' %> member">
<td class="roles"> <td class="<%= member.principal.class.name.downcase %>"><%= link_to_user member.principal %></td>
<span id="member-<%= member.id %>-roles"><!-- <%=h member.roles.sort.collect(&:to_s).join(', ') %> --> <td class="roles">
<!--modified by huang for: --> <span id="member-<%= member.id %>-roles">
<% if @project.project_type == 1 %> <%= h member.roles.sort.collect(&:to_s).join(', ') %>
<% if member.roles.sort.collect(&:to_s).join(', ') =='Manager' %>
老师
<% else %>
<%=h member.roles.sort.collect(&:to_s).join(', ') %>
<% end %>
<% else %>
<%=h member.roles.sort.collect(&:to_s).join(', ') %>
<% end %>
</span> </span>
<%= form_for(member, {:as => :membership, :remote => true, :url => membership_path(member), <%= form_for(member, {:as => :membership, :remote => true, :url => membership_path(member),
:method => :put, :method => :put,
:html => { :id => "member-#{member.id}-roles-form", :class => 'hol' }} :html => {:id => "member-#{member.id}-roles-form", :class => 'hol'}}
) do |f| %> ) do |f| %>
<!--added by huang for: filer the roles-->
<%= error_messages_for 'member' %> <p>
<% if @project.project_type == 1 %> <% roles.each do |role| %>
<% r = [] %> <label><%= check_box_tag 'membership[role_ids][]', role.id, member.roles.include?(role),
<% for i in 3..5 %> :disabled => member.member_roles.detect { |mr| mr.role_id == role.id && !mr.inherited_from.nil? } %> <%= h role %></label><br/>
<% roles = Role.givable.all[i] <% end %></p>
members = @project.member_principals.includes(:roles, :principal).all.sort %> <%= hidden_field_tag 'membership[role_ids][]', '' %>
<% r << roles %> <p><%= submit_tag l(:button_change), :class => "small" %>
<% end %> <%= link_to_function l(:button_cancel),
<% else %> "$('#member-#{member.id}-roles').show(); $('#member-#{member.id}-roles-form').hide(); return false;"
<% r = [] %> %></p>
<% for i in 0..2 %> <% end %>
<% roles = Role.givable.all[i] </td>
members = @project.member_principals.includes(:roles, :principal).all.sort %> <!--modified by huang for: if the user'roles is Manager that he will can't modified himself-->
<% r << roles %> <% if @project.project_type == 1 %>
<% end %> <% if member.roles.first.to_s == "Manager" %>
<% end %> <td class="buttons"></td>
<!--end--> <% else %>
<p><% r.each do |role| %> <td class="buttons">
<label><%= check_box_tag 'membership[role_ids][]', role.id, member.roles.include?(role), <%= link_to_function l(:button_edit),
:disabled => member.member_roles.detect {|mr| mr.role_id == role.id && !mr.inherited_from.nil?} %> <%=h role %></label><br /> "$('#member-#{member.id}-roles').hide(); $('#member-#{member.id}-roles-form').show(); return false;",
<% end %></p> :class => 'icon icon-edit' %>
<%= hidden_field_tag 'membership[role_ids][]', '' %> <%= delete_link membership_path(member),
<p><%= submit_tag l(:button_change), :class => "small" %> :remote => true,
<%= link_to_function l(:button_cancel), :data => (!User.current.admin? && member.include?(User.current) ? {:confirm => l(:text_own_membership_delete_confirmation)} : {}) if member.deletable? %>
"$('#member-#{member.id}-roles').show(); $('#member-#{member.id}-roles-form').hide(); return false;" </td>
%></p> <% end %>
<% end %> <% else %>
</td> <td class="buttons">
<!--modified by huang for: if the user'roles is Manager that he will can't modified himself--> <%= link_to_function l(:button_edit),
<%= error_messages_for 'member' %> "$('#member-#{member.id}-roles').hide(); $('#member-#{member.id}-roles-form').show(); return false;",
<% roles = Role.find_all_givable :class => 'icon icon-edit' %>
members = @project.member_principals.includes(:roles, :principal).all.sort %> <%= delete_link membership_path(member),
<% if @project.project_type == 1 %> :remote => true,
<%if member.roles.first.to_s == "Manager" %> :data => (!User.current.admin? && member.include?(User.current) ? {:confirm => l(:text_own_membership_delete_confirmation)} : {}) if member.deletable? %>
<td class="buttons"></td> </td>
<% else %> <% end %>
<td class="buttons"> <!--end-->
<%= link_to_function l(:button_edit), <%= call_hook(:view_projects_settings_members_table_row, {:project => @project, :member => member}) %>
"$('#member-#{member.id}-roles').hide(); $('#member-#{member.id}-roles-form').show(); return false;", </tr>
:class => 'icon icon-edit' %> <% end; reset_cycle %>
<%= delete_link membership_path(member), </tbody>
:remote => true, </table>
:data => (!User.current.admin? && member.include?(User.current) ? {:confirm => l(:text_own_membership_delete_confirmation)} : {}) if member.deletable? %> <% else %>
</td> <p class="nodata"><%= l(:label_no_data) %></p>
<% end %>
<% else %>
<td class="buttons">
<%= link_to_function l(:button_edit),
"$('#member-#{member.id}-roles').hide(); $('#member-#{member.id}-roles-form').show(); return false;",
:class => 'icon icon-edit' %>
<%= delete_link membership_path(member),
:remote => true,
:data => (!User.current.admin? && member.include?(User.current) ? {:confirm => l(:text_own_membership_delete_confirmation)} : {}) if member.deletable? %>
</td>
<% end %> <% end %>
<!--end-->
<%= call_hook(:view_projects_settings_members_table_row, { :project => @project, :member => member}) %>
</tr>
<% end; reset_cycle %>
</tbody>
</table>
<% else %>
<p class="nodata"><%= l(:label_no_data) %></p>
<% end %>
</div> </div>
<!--added by huang for: filer the roles-->
<%= error_messages_for 'member' %>
<% if @project.project_type == 1 %>
<% r = [] %>
<% for i in 3..5 %>
<% roles = Role.givable.all[i]
members = @project.member_principals.includes(:roles, :principal).all.sort %>
<% r << roles %>
<% end %>
<% else %>
<% r = [] %>
<% for i in 0..2 %>
<% roles = Role.givable.all[i]
members = @project.member_principals.includes(:roles, :principal).all.sort %>
<% r << roles %>
<% end %>
<% end %>
<!--end-->
<div class="splitcontentright"> <div class="splitcontentright">
<% if r.any? %> <% if roles.any? %>
<% if @project.applied_projects.any? %> <% if @project.applied_projects.any? %>
<div id="applied_project_block"> <div id="applied_project_block">
<%= form_for(@applied_members, {:as => :membership, :url => project_memberships_path(@project), :remote => true, :method => :post}) do |f| %> <%= form_for(@applied_members, {:as => :membership, :url => project_memberships_path(@project), :remote => true, :method => :post}) do |f| %>
@ -131,7 +94,7 @@
</div> </div>
<!--show the roles which will select--> <!--show the roles which will select-->
<p style="padding-top: 5px"><%= l(:label_role_plural) %>: <p style="padding-top: 5px"><%= l(:label_role_plural) %>:
<% r.each do |role| %> <% roles.each do |role| %>
<label><%= check_box_tag 'membership[role_ids][]', role.id %> <%= h role %></label> <label><%= check_box_tag 'membership[role_ids][]', role.id %> <%= h role %></label>
<% end %></p> <% end %></p>
@ -144,24 +107,25 @@
</div> </div>
<% end %> <% end %>
<%= form_for(@member, {:as => :membership, :url => project_memberships_path(@project), :remote => true, :method => :post}) do |f| %> <%= form_for(@member, {:as => :membership, :url => project_memberships_path(@project), :remote => true, :method => :post}) do |f| %>
<fieldset><legend><%=l(:label_member_new)%></legend> <fieldset>
<legend><%= l(:label_member_new) %></legend>
<p><%= label_tag "principal_search", l(:label_principal_search) %><%= text_field_tag 'principal_search', nil %></p> <p><%= label_tag "principal_search", l(:label_principal_search) %><%= text_field_tag 'principal_search', nil %></p>
<%= javascript_tag "observeSearchfield('principal_search', null, '#{ escape_javascript autocomplete_project_memberships_path(@project, :format => 'js') }')" %> <%= javascript_tag "observeSearchfield('principal_search', null, '#{ escape_javascript autocomplete_project_memberships_path(@project, :format => 'js') }')" %>
<div id="principals_for_new_member"> <div id="principals_for_new_member">
<%= render_principals_for_new_members(@project) %> <%= render_principals_for_new_members(@project) %>
</div> </div>
<!--show the roles which will select--> <!--show the roles which will select-->
<p style="padding-top: 5px"><%= l(:label_role_plural) %>: <p style="padding-top: 5px"><%= l(:label_role_plural) %>:
<% r.each do |role| %> <% roles.each do |role| %>
<label><%= check_box_tag 'membership[role_ids][]', role.id %> <%=h role %></label>
<% end %></p>
<p><%= submit_tag l(:button_add), :id => 'member-add-submit' %></p> <label><%= check_box_tag 'membership[role_ids][]', role.id %> <%= h role %></label>
</fieldset> <% end %></p>
<p><%= submit_tag l(:button_add), :id => 'member-add-submit' %></p>
</fieldset>
<% end %>
<% end %> <% end %>
<% end %>
</div> </div>

@ -51,14 +51,14 @@
<% when '2' %> <% when '2' %>
<% if (ProjectInfo.find_by_project_id(obj.id)).user_id == User.current.id %> <% if (ProjectInfo.find_by_project_id(obj.id)).try(:user_id) == User.current.id %>
<span class='del'> <%= link_to 'x', :controller => "tags", :action => "remove_tag", :remote => true, :tag_name => tag, <span class='del'> <%= link_to 'x', :controller => "tags", :action => "remove_tag", :remote => true, :tag_name => tag,
:taggable_id => obj.id, :taggable_type => object_flag %> </span> :taggable_id => obj.id, :taggable_type => object_flag %> </span>
<% end %> <% end %>
<% when '3' %> <% when '3' %>
<% if (ProjectInfo.find_by_project_id(obj.project_id)).user_id == User.current.id %> <% if (ProjectInfo.find_by_project_id(obj.project_id)).try(:user_id) == User.current.id %>
<span class='del'> <%= link_to 'x', :controller => "tags", :action => "remove_tag", :remote => true, :tag_name => tag, <span class='del'> <%= link_to 'x', :controller => "tags", :action => "remove_tag", :remote => true, :tag_name => tag,
:taggable_id => obj.id, :taggable_type => object_flag %> </span> :taggable_id => obj.id, :taggable_type => object_flag %> </span>
<% end %> <% end %>

@ -259,17 +259,4 @@
</div> </div>
<div class="clearfix"></div> <div class="clearfix"></div>
<div class="hidden" style="width:100%;">
<div style="width:600px;margin:0px auto;margin-top:80px;">
<table style="width:600px;font-size:15px; color: #e8770d;">
<tr>
<td><strong>当前网站状态</strong></td>
<td>活跃课程: <%=@courseCount%></td>
<td>高校: 2个</td>
<td>教师: <%=@teacherCount%> 名</td>
<td>学生: <%=@studentCount%> 名<td>
</tr>
</table>
</div>
</div>
<%= render partial: 'link_to_another' %> <%= render partial: 'link_to_another' %>

@ -137,16 +137,4 @@
<div class="clearfix"></div> <div class="clearfix"></div>
<div class="hidden" style="width:100%;">
<div style="width:600px;margin:0px auto;margin-top:180px;">
<table style="width:600px;font-size:15px; color: gray;">
<tr>
<td><strong>当前网站状态</strong></td>
<td>活跃项目:<%=@projectCount%>个</td>
<td>私有项目: <%=@projectHidenCount%>个</td>
<td>开发者:<%=@allUsercount%>个 </td>
</tr>
</table>
</div>
</div>
<%= render partial: 'link_to_another' %> <%= render partial: 'link_to_another' %>
Loading…
Cancel
Save