From d2b90b98cc73cd4d59fec8b4b4c1ae262a86c7a1 Mon Sep 17 00:00:00 2001 From: yanxd Date: Fri, 30 May 2014 15:52:34 +0800 Subject: [PATCH 1/5] =?UTF-8?q?1,=20=E8=B0=83=E6=95=B4=E4=BA=86settting?= =?UTF-8?q?=E4=B8=AD=E7=9A=84=E6=88=90=E5=91=98=E6=98=BE=E7=A4=BA=EF=BC=8C?= =?UTF-8?q?=E5=8E=BB=E6=8E=89=E4=BA=86=E5=86=97=E4=BD=99=E7=9A=84=E8=AE=A1?= =?UTF-8?q?=E7=AE=97=E9=80=BB=E8=BE=91=EF=BC=8C=E6=89=93=E5=BC=80=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E9=80=9F=E5=BA=A6=E5=BF=AB=E5=A4=9A=E4=BA=86=202,=20?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E5=91=98=E8=BA=AB=E4=BB=BD=E6=9F=A5=E7=9C=8B?= =?UTF-8?q?=E4=BD=9C=E4=B8=9A=E5=88=97=E8=A1=A8=20=3D=3D>=20true?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/bids_controller.rb | 1 + app/views/projects/settings/_members.html.erb | 225 ++++++++---------- 2 files changed, 95 insertions(+), 131 deletions(-) diff --git a/app/controllers/bids_controller.rb b/app/controllers/bids_controller.rb index d63f0cfbb..87b0d8dcf 100644 --- a/app/controllers/bids_controller.rb +++ b/app/controllers/bids_controller.rb @@ -881,6 +881,7 @@ class BidsController < ApplicationController def memberAccess # 是课程,则判断当前用户是否参加了课程 + return true if current_user.admin? return 0 if @bid.courses.first.project_type == Project::ProjectType_project currentUser = User.current render_403 unless currentUser.member_of?(@bid.courses.first) diff --git a/app/views/projects/settings/_members.html.erb b/app/views/projects/settings/_members.html.erb index f97e9d0f2..615bcc65a 100644 --- a/app/views/projects/settings/_members.html.erb +++ b/app/views/projects/settings/_members.html.erb @@ -1,125 +1,87 @@ <%= error_messages_for 'member' %> -<% roles = Role.find_all_givable - members = @project.member_principals.includes(:roles, :principal).all.sort %> +<% + if @project.project_type == Project::ProjectType_course + roles = Role.givable.all[3..5] + else + roles = Role.givable.all[0..2] + end + members = @project.member_principals.includes(:roles, :principal).all.sort +%> +
-<% if members.any? %> - - - - - + <% if members.any? %> +
<%= l(:label_user) %><%= l(:label_role_plural) %>
+ + + + + <%= call_hook(:view_projects_settings_members_table_header, :project => @project) %> - - - <% members.each do |member| %> - <% next if member.new_record? %> - - - + + + <% members.each do |member| %> + <% next if member.new_record? %> + + + - - <%= error_messages_for 'member' %> -<% roles = Role.find_all_givable - members = @project.member_principals.includes(:roles, :principal).all.sort %> - <% if @project.project_type == 1 %> - <%if member.roles.first.to_s == "Manager" %> - - <% else %> - - <% end %> - <% else %> - + <%= form_for(member, {:as => :membership, :remote => true, :url => membership_path(member), + :method => :put, + :html => {:id => "member-#{member.id}-roles-form", :class => 'hol'}} + ) do |f| %> + +

+ <% roles.each do |role| %> +
+ <% end %>

+ <%= hidden_field_tag 'membership[role_ids][]', '' %> +

<%= submit_tag l(:button_change), :class => "small" %> + <%= link_to_function l(:button_cancel), + "$('#member-#{member.id}-roles').show(); $('#member-#{member.id}-roles-form').hide(); return false;" + %>

+ <% end %> + + + <% if @project.project_type == 1 %> + <% if member.roles.first.to_s == "Manager" %> + + <% else %> + + <% end %> + <% else %> + + <% end %> + + <%= call_hook(:view_projects_settings_members_table_row, {:project => @project, :member => member}) %> + + <% end; reset_cycle %> + +
<%= l(:label_user) %><%= l(:label_role_plural) %>
<%= link_to_user member.principal %> - - - <% if @project.project_type == 1 %> - <% 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 %> +
<%= link_to_user member.principal %> + + <%= h member.roles.sort.collect(&:to_s).join(', ') %> - <%= form_for(member, {:as => :membership, :remote => true, :url => membership_path(member), - :method => :put, - :html => { :id => "member-#{member.id}-roles-form", :class => 'hol' }} - ) do |f| %> - -<%= 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 %> - -

<% r.each do |role| %> -
- <% end %>

- <%= hidden_field_tag 'membership[role_ids][]', '' %> -

<%= submit_tag l(:button_change), :class => "small" %> - <%= link_to_function l(:button_cancel), - "$('#member-#{member.id}-roles').show(); $('#member-#{member.id}-roles-form').hide(); return false;" - %>

- <% end %> -
- <%= 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? %> - - <%= 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? %> - + <%= 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? %> + + <%= 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? %> +
+ <% else %> +

<%= l(:label_no_data) %>

<% end %> - - <%= call_hook(:view_projects_settings_members_table_row, { :project => @project, :member => member}) %> - -<% end; reset_cycle %> - - -<% else %> -

<%= l(:label_no_data) %>

-<% end %>
- -<%= 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 %> - -
-<% if r.any? %> + <% if roles.any? %> <% if @project.applied_projects.any? %>
<%= form_for(@applied_members, {:as => :membership, :url => project_memberships_path(@project), :remote => true, :method => :post}) do |f| %> @@ -131,7 +93,7 @@

<%= l(:label_role_plural) %>: - <% r.each do |role| %> + <% roles.each do |role| %> <% end %>

@@ -144,24 +106,25 @@
<% end %> - <%= form_for(@member, {:as => :membership, :url => project_memberships_path(@project), :remote => true, :method => :post}) do |f| %> -
<%=l(:label_member_new)%> + <%= form_for(@member, {:as => :membership, :url => project_memberships_path(@project), :remote => true, :method => :post}) do |f| %> +
+ <%= l(:label_member_new) %> -

<%= label_tag "principal_search", l(:label_principal_search) %><%= text_field_tag 'principal_search', nil %>

- <%= javascript_tag "observeSearchfield('principal_search', null, '#{ escape_javascript autocomplete_project_memberships_path(@project, :format => 'js') }')" %> +

<%= label_tag "principal_search", l(:label_principal_search) %><%= text_field_tag 'principal_search', nil %>

+ <%= javascript_tag "observeSearchfield('principal_search', null, '#{ escape_javascript autocomplete_project_memberships_path(@project, :format => 'js') }')" %> -
- <%= render_principals_for_new_members(@project) %> -
- -

<%= l(:label_role_plural) %>: - <% r.each do |role| %> - - - <% end %>

+
+ <%= render_principals_for_new_members(@project) %> +
+ +

<%= l(:label_role_plural) %>: + <% roles.each do |role| %> -

<%= submit_tag l(:button_add), :id => 'member-add-submit' %>

-
+ + <% end %>

+ +

<%= submit_tag l(:button_add), :id => 'member-add-submit' %>

+
+ <% end %> <% end %> -<% end %> From bced2476cd31b58350faa4b7f41743e1e40da064 Mon Sep 17 00:00:00 2001 From: yanxd Date: Fri, 30 May 2014 16:05:42 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E5=9C=A8=E6=9B=B4=E6=96=B0=E4=B8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/projects/settings/_members.html.erb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/views/projects/settings/_members.html.erb b/app/views/projects/settings/_members.html.erb index 615bcc65a..f69f9edff 100644 --- a/app/views/projects/settings/_members.html.erb +++ b/app/views/projects/settings/_members.html.erb @@ -1,9 +1,10 @@ <%= error_messages_for 'member' %> <% + roles = Role.givable.all if @project.project_type == Project::ProjectType_course - roles = Role.givable.all[3..5] + roles = roles[3..5] else - roles = Role.givable.all[0..2] + roles = roles[0..2] end members = @project.member_principals.includes(:roles, :principal).all.sort %> From 789a8d139208ce9a30185620684893e622df0e34 Mon Sep 17 00:00:00 2001 From: yanxd Date: Tue, 3 Jun 2014 11:19:20 +0800 Subject: [PATCH 3/5] =?UTF-8?q?tag=5Fname=E4=BB=8EProjectInfo=E5=8F=96?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E6=8A=9B=E9=94=99=E7=9A=84=E9=97=AE=E9=A2=98?= =?UTF-8?q?=20=E4=B8=8D=E6=9F=A5=E8=AF=A2=E7=BD=91=E7=AB=99=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=EF=BC=88=E5=88=A0=E4=B8=9C=E8=A5=BF=20gemfile?= =?UTF-8?q?=E5=8A=A0pry=E5=88=A4=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Gemfile | 4 +++ app/controllers/welcome_controller.rb | 45 +++++++++++---------------- app/views/tags/_tag_name.html.erb | 4 +-- app/views/welcome/course.html.erb | 13 -------- app/views/welcome/index.html.erb | 12 ------- 5 files changed, 24 insertions(+), 54 deletions(-) diff --git a/Gemfile b/Gemfile index 1d8276799..3784e60d8 100644 --- a/Gemfile +++ b/Gemfile @@ -19,6 +19,10 @@ gem 'acts-as-taggable-on' group :development do gem 'better_errors', path: 'lib/better_errors' gem 'rack-mini-profiler', path: 'lib/rack-mini-profiler' + if ENV['PRY'] + gem 'pry' + gem 'pry-nav' + end end # Gems used only for assets and not required diff --git a/app/controllers/welcome_controller.rb b/app/controllers/welcome_controller.rb index c662c44f7..c92f39d34 100644 --- a/app/controllers/welcome_controller.rb +++ b/app/controllers/welcome_controller.rb @@ -21,13 +21,7 @@ class WelcomeController < ApplicationController before_filter :entry_select_course, :entry_select_contest, :entry_select_user, :only => [: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 def robots @@ -36,10 +30,7 @@ class WelcomeController < ApplicationController end def course - @courseCount = Project.course_entities.count - @teacherCount = User.teacher.count - @studentCount = User.student.count - @logoLink = logolink() + @logoLink ||= logolink() end @@ -121,25 +112,25 @@ class WelcomeController < ApplicationController end end - def render(*args) - _fake if @fake_filter - super - end + # def render(*args) + # _fake if @fake_filter + # super + # end - private + # private - def fake - @fake_filter = true - end + # def fake + # @fake_filter = true + # end - # 骗子方法 - def _fake - instance_variables.map { |variable| - if variable.to_s =~ /Count$/ - self.instance_variable_set(variable.to_sym, - ("1" + (self.instance_variable_get(variable.to_sym).to_s)).to_i) - end - } - end + # # 骗子方法 + # def _fake + # instance_variables.map { |variable| + # if variable.to_s =~ /Count$/ + # self.instance_variable_set(variable.to_sym, + # ("1" + (self.instance_variable_get(variable.to_sym).to_s)).to_i) + # end + # } + # end end diff --git a/app/views/tags/_tag_name.html.erb b/app/views/tags/_tag_name.html.erb index 4891cc233..dad5d53f7 100644 --- a/app/views/tags/_tag_name.html.erb +++ b/app/views/tags/_tag_name.html.erb @@ -51,14 +51,14 @@ <% 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 %> <%= link_to 'x', :controller => "tags", :action => "remove_tag", :remote => true, :tag_name => tag, :taggable_id => obj.id, :taggable_type => object_flag %> <% end %> <% 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 %> <%= link_to 'x', :controller => "tags", :action => "remove_tag", :remote => true, :tag_name => tag, :taggable_id => obj.id, :taggable_type => object_flag %> <% end %> diff --git a/app/views/welcome/course.html.erb b/app/views/welcome/course.html.erb index 88fd3bf4d..884962629 100644 --- a/app/views/welcome/course.html.erb +++ b/app/views/welcome/course.html.erb @@ -259,17 +259,4 @@
- <%= render partial: 'link_to_another' %> \ No newline at end of file diff --git a/app/views/welcome/index.html.erb b/app/views/welcome/index.html.erb index 6702f520c..ca99f33dc 100644 --- a/app/views/welcome/index.html.erb +++ b/app/views/welcome/index.html.erb @@ -137,16 +137,4 @@
- <%= render partial: 'link_to_another' %> \ No newline at end of file From 37232cd5b20c62cf87b8845927dbbc7c40c1a7a7 Mon Sep 17 00:00:00 2001 From: yanxd Date: Tue, 3 Jun 2014 16:41:12 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E6=8A=8A=E6=89=80=E6=9C=89user=5Fextension?= =?UTF-8?q?s=E7=9A=84=E9=80=BB=E8=BE=91=E7=A7=BB=E5=88=B0=E4=BA=86user?= =?UTF-8?q?=E4=B8=AD=EF=BC=8C=E4=B8=9A=E5=8A=A1=E4=BB=A3=E7=A0=81=E8=BF=98?= =?UTF-8?q?=E6=B2=A1=E6=9C=89=E4=BF=AE=E6=94=B9,=E4=B8=8B=E4=B8=80?= =?UTF-8?q?=E6=AD=A5=E6=98=AFuser=5Fscore=E5=92=8Cprojectxxx,=E5=85=88?= =?UTF-8?q?=E6=B5=8B=E6=B5=8B=E6=95=88=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Gemfile | 4 +++ ReadMe.txt | 7 ++++++ app/models/user.rb | 47 +++++++++++++++++++++++++++++++++++ app/views/my/account.html.erb | 1 - 4 files changed, 58 insertions(+), 1 deletion(-) diff --git a/Gemfile b/Gemfile index a04059bfa..a3cc7b68e 100644 --- a/Gemfile +++ b/Gemfile @@ -19,6 +19,10 @@ gem 'acts-as-taggable-on' group :development do gem 'better_errors', path: 'lib/better_errors' gem 'rack-mini-profiler', path: 'lib/rack-mini-profiler' + if ENV['PRY'] + gem 'pry' + gem 'pry-nav' + end end # Optional gem for LDAP authentication diff --git a/ReadMe.txt b/ReadMe.txt index e7444a6c5..ad9f0512d 100644 --- a/ReadMe.txt +++ b/ReadMe.txt @@ -6,6 +6,13 @@ alias name firstname+lastname login nickname xxx login realname xxx firstname+lastname + +User model޸ģѾȫuser_extensionsĹ + +user.gender=1 +user.save +user_extensionsֶλԶ +Ҫÿuser.user_extensions.xxxԼжǷΪ ================================================================================ app/models/setting.rb :165 # fixed domain url in development. tantantan's bug diff --git a/app/models/user.rb b/app/models/user.rb index edf703873..63e0b3837 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -199,6 +199,53 @@ class User < Principal 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 info=self.nickname + ' (' + self.realname + ')'; diff --git a/app/views/my/account.html.erb b/app/views/my/account.html.erb index 805545659..3853af34d 100644 --- a/app/views/my/account.html.erb +++ b/app/views/my/account.html.erb @@ -34,7 +34,6 @@

<%= l(:label_my_account) %>

<%= error_messages_for 'user' %> -<%= error_messages_for 'se' %>