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? %>
-
-
- <%= l(:label_user) %> |
- <%= l(:label_role_plural) %> |
- |
+ <% 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? %>
-
- <%= 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 %>
+ |
+
+
+ <% members.each do |member| %>
+ <% next if member.new_record? %>
+
+ <%= 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 %>
- |
-
- <%= 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 %>
-
- <%= 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? %>
- |
- <% end %>
- <% else %>
-
- <%= 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? %>
- |
+ <%= 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 %>
+
+ <%= 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? %>
+ |
+ <% end %>
+ <% else %>
+
+ <%= 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? %>
+ |
+ <% end %>
+
+ <%= call_hook(:view_projects_settings_members_table_row, {:project => @project, :member => member}) %>
+
+ <% end; reset_cycle %>
+
+
+ <% 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| %>
-
+
+ <%= 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 @@
-
-
-
-
- 当前网站状态 |
- 活跃课程: <%=@courseCount%> |
- 高校: 2个 |
- 教师: <%=@teacherCount%> 名 |
- 学生: <%=@studentCount%> 名 |
- |
-
-
-
<%= 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 @@
-
-
-
-
- 当前网站状态 |
- 活跃项目:<%=@projectCount%>个 |
- 私有项目: <%=@projectHidenCount%>个 |
- 开发者:<%=@allUsercount%>个 |
-
-
-
-
<%= 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' %>
From 3e92281f283fac046baa06907d5ad6d7e5a3509a Mon Sep 17 00:00:00 2001
From: yanxd
Date: Tue, 3 Jun 2014 16:42:55 +0800
Subject: [PATCH 5/5] readme.txt gbk ==> utf-8
---
ReadMe.txt | 28 ++++++++++++++--------------
1 file changed, 14 insertions(+), 14 deletions(-)
diff --git a/ReadMe.txt b/ReadMe.txt
index ad9f0512d..9d223259a 100644
--- a/ReadMe.txt
+++ b/ReadMe.txt
@@ -1,18 +1,18 @@
patch:
-ûIJ֣issues#655
-Ϊķ
-alias
- ֮ǰʾ ֮
+用户姓名的部分,根据issues#655。
+为了修改方便
+alias:
+方法 之前显示 调整之后
name firstname+lastname login
nickname xxx login
realname xxx firstname+lastname
-User modelģѾȫuser_extensionsĹ
-
+User model经过修改,已经完全集成了user_extensions的功能
+例如
user.gender=1
user.save
-user_extensionsֶλԶ
-Ҫÿuser.user_extensions.xxxԼжǷΪ
+user_extensions字段会自动保存
+不必要每次user.user_extensions.xxx以及判断是否为空
================================================================================
app/models/setting.rb :165
# fixed domain url in development. tantantan's bug
@@ -21,22 +21,22 @@ app/models/setting.rb :165
define_singleton_method m do; nil; end if m.to_s =~ /([a-zA-Z]+_domain)$/
end
end
- ƶsubdomainʹڶת
- Ϊ˿㣬ʹ֮developmentģʽʧЧ
+ 程序部分链接中制定了subdomain参数,使链接在二级域名中来回跳转。
+ 为了开发方便,使之功能在development模式下失效。
# => nyan
================================================================================
app/controller/projects_controller.rb ===> projects#fake
- fake filter: ˴ҳеCount
- Ϊȷɾfake
+ fake filter: 修改了传到页面中的Count后缀的数量
+ 改为正确的数量,删掉fake过滤器即可
================================================================================
-#ƥʾı
+#导航栏匹配域名显示和改变
app\helper\application_helper.rb
# rewrite navigation
app\views\layouts\_base_header.html.erb
# reset navigation by domain name and url through regular match
================================================================================
-#ҳƥ벻ͬҳ
+#首页根据域名匹配进入不同的页面
app\controller\welcome_controller.rb
def entry_select_user
if request.original_url.match(/user\.trustie\.net/)