diff --git a/app/controllers/bids_controller.rb b/app/controllers/bids_controller.rb
index 2273de4e4..d63f0cfbb 100644
--- a/app/controllers/bids_controller.rb
+++ b/app/controllers/bids_controller.rb
@@ -14,6 +14,8 @@ class BidsController < ApplicationController
# end
before_filter :require_login,:only => [:set_reward, :destroy, :add, :new, ]
+ before_filter :memberAccess, only: :show_project
+
helper :watchers
helper :attachments
include AttachmentsHelper
@@ -875,7 +877,14 @@ class BidsController < ApplicationController
end
rescue
render_404
- end
+ end
+
+ def memberAccess
+ # 是课程,则判断当前用户是否参加了课程
+ return 0 if @bid.courses.first.project_type == Project::ProjectType_project
+ currentUser = User.current
+ render_403 unless currentUser.member_of?(@bid.courses.first)
+ end
end
diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb
index 7365e4048..6174e2124 100644
--- a/app/controllers/users_controller.rb
+++ b/app/controllers/users_controller.rb
@@ -209,8 +209,6 @@ class UsersController < ApplicationController
## 判断课程是否过期 [需封装]
@memberships_doing = []
@memberships_done = []
- @OwningCouses =[]
- @JoinCouses=[]
now_time = Time.now.year
@memberships.map { |e|
end_time = e.project.course_extra.get_time.year
@@ -220,12 +218,6 @@ class UsersController < ApplicationController
else
@memberships_doing.push e
end
-
- if e.project.course_extra.tea_id == User.current.id
- @OwningCouses.push e
- else
- @JoinCouses.push e
- end
}
# respond_to do |format|
# format.html
diff --git a/app/models/course.rb b/app/models/course.rb
index 0420b1744..de383a1f5 100644
--- a/app/models/course.rb
+++ b/app/models/course.rb
@@ -2,7 +2,7 @@ class Course < ActiveRecord::Base
include Redmine::SafeAttributes
attr_accessible :code, :extra, :name, :state, :tea_id, :time , :location, :state, :term, :password
- belongs_to :project, :class_name => 'Project', :foreign_key => :extra # 定义一个project方法, 该方法通过extra来调用project表
+ belongs_to :project, :class_name => 'Project', :foreign_key => :extra, primary_key: :identifier
belongs_to :teacher, :class_name => 'User', :foreign_key => :tea_id # 定义一个方法teacher,该方法通过tea_id来调用User表
belongs_to :school, :class_name => 'School', :foreign_key => :school_id #定义一个方法school,该方法通过school_id来调用School表
has_many :bid
diff --git a/app/models/user.rb b/app/models/user.rb
index 840275794..8017ed5f8 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -18,6 +18,11 @@
require "digest/sha1"
class User < Principal
+ TEACHER = 0
+ STUDENT = 1
+ ENTERPRISE = 2
+ DEVELOPER = 3
+
include Redmine::SafeAttributes
# Different ways of displaying/sorting users
diff --git a/app/views/forums/_forum_list.html.erb b/app/views/forums/_forum_list.html.erb
index faf1cbe5e..0bbb0ddd4 100644
--- a/app/views/forums/_forum_list.html.erb
+++ b/app/views/forums/_forum_list.html.erb
@@ -7,7 +7,7 @@
<%= link_to h(forum.name), forum_path(forum) %>
<%= forum.description%>
-
<%= authoring forum.created_at, forum.creator %>
+ <%= authoring forum.created_at, forum.creator %>
<%= link_to (forum.memo_count), forum_path(forum) %> | <%= link_to (forum.topic_count), forum_path(forum) %> |
回答 | 帖子 |
diff --git a/app/views/forums/_show_topics.html.erb b/app/views/forums/_show_topics.html.erb
index 057d6a258..7a9eb4316 100644
--- a/app/views/forums/_show_topics.html.erb
+++ b/app/views/forums/_show_topics.html.erb
@@ -25,6 +25,9 @@
<%= authoring topic.created_at, topic.author %>
+
+ 最后回复:<%=link_to_user topic.last_reply.try(:author) %>
+
|
diff --git a/app/views/layouts/base_courses.html.erb b/app/views/layouts/base_courses.html.erb
index 785479bd5..4e0135eaa 100644
--- a/app/views/layouts/base_courses.html.erb
+++ b/app/views/layouts/base_courses.html.erb
@@ -114,10 +114,18 @@
- <%= link_to "#{teacherCount(@project)}", project_member_path(@project, :role => 1), :course => '1' %>
+ <% if User.current.member_of?(@project) %>
+ <%= link_to "#{teacherCount(@project)}", project_member_path(@project, :role => 1), :course => '1' %>
+ <% else %>
+ <%= teacherCount(@project)%>
+ <% end%>
|
- <%= link_to "#{studentCount(@project)}", project_member_path(@project, :role => 2), :course => '1' %>
+ <% if User.current.member_of?(@project) %>
+ <%= link_to "#{studentCount(@project)}", project_member_path(@project, :role => 2), :course => '1' %>
+ <% else %>
+ <%= studentCount(@project)%>
+ <% end %>
|
<%= link_to files_count, project_files_path(@project) %> |
diff --git a/app/views/layouts/base_homework.html.erb b/app/views/layouts/base_homework.html.erb
index aa60f3645..cfdea4a5e 100644
--- a/app/views/layouts/base_homework.html.erb
+++ b/app/views/layouts/base_homework.html.erb
@@ -151,6 +151,7 @@
<%= link_to l(:label_question_student), {:controller => 'bids', :action => 'show' },:class => link_class(:respond)%>
+ <% if User.current.member_of? @bid.courses.first%>
<% if User.current.logged? && @bid.courses.first && (!Member.where('user_id = ? and project_id = ?', User.current.id, @bid.courses.first.id).first.nil? && (Member.where('user_id = ? and project_id = ?', User.current.id, @bid.courses.first.id).first.roles&Role.where('id = ? or id = ? or id =?',5, 10, 7)).size >0) %>
<%= link_to l(:label_homework_commit), {:controller => 'bids', :action => 'show_project' },:class => link_class(:project)%>
@@ -159,9 +160,10 @@
<% end %>
+ <% end %>
<%= yield %>
diff --git a/app/views/projects/_course.html.erb b/app/views/projects/_course.html.erb
index adc7c9306..6ea802037 100644
--- a/app/views/projects/_course.html.erb
+++ b/app/views/projects/_course.html.erb
@@ -45,7 +45,7 @@
<%= content_tag('span', l(:label_x_data,:count => files_count)) %>
- <%= content_tag('span', "#{@project.members.count}", :class => "info") %>
+ <%= content_tag('span', "#{garble @project.members.count}", :class => "info") %>
<%= content_tag('span', l(:label_x_member, :count => @project.members.count)) %>
diff --git a/app/views/users/_course_list_have_entity.html.erb b/app/views/users/_course_list_have_entity.html.erb
new file mode 100644
index 000000000..87dd52635
--- /dev/null
+++ b/app/views/users/_course_list_have_entity.html.erb
@@ -0,0 +1,22 @@
+
+
+
+
+
+ <%= render :partial => 'course_form', :locals => {:memberships => @memberships_doing} %>
+
+
+
+
+
+ <%= render :partial => 'course_form', :locals => {:memberships => @memberships_done} %>
+
+
+
+
diff --git a/app/views/users/_my_course.html.erb b/app/views/users/_my_course.html.erb
index 8feb0ecca..26cfd48e0 100644
--- a/app/views/users/_my_course.html.erb
+++ b/app/views/users/_my_course.html.erb
@@ -1,38 +1,16 @@
-<% if @memberships.empty? %>
- <% if @user != User.current %>
-
- <%= l(:label_project_course_un) %>
-
- <% else %>
-
-
- <%= l(:label_project_course_unadd) %><%= link_to"#{l(:label_course_new)}",{:controller=>'projects',:action=>'new', :course => 1, :project_type => 1}, :class => 'icon icon-add' %>
-
- <% end %>
-<% else %>
-
- <%=l(:label_course_doing)%>(<%=@memberships_doing.count%>)
- <%= link_to"#{l(:label_course_new)}",{:controller=>'projects',:action=>'new', :course => 1, :project_type => 1}, :class => 'icon icon-add' if @user == User.current %>
-
-
- <%= l(:label_created_course) %>
-
<%= render :partial => 'course_form', :locals => {:memberships => @OwningCouses}%>
-
-
-
<%= l(:label_joined_course) %>
-
<%= render :partial => 'course_form', :locals => {:memberships => @JoinCouses}%>
-
-
-
-
-
- <%= link_to l(:label_course_done)+"("+@memberships_done.count.to_s+")", 'javascript:void(0);', :onclick => '$("#courses_history_block").slideToggle(400);' , style:"color:#666666" if User.current.logged? %>
-
-
-
- <%= render :partial => 'course_form', :locals => {:memberships => @memberships_done}%>
-
-
-<% end %>
+ <% if @memberships.empty? %>
+ <% if @user != User.current %>
+
+ <%= l(:label_project_course_un) %>
+
+ <% else %>
+
+
+ <%= l(:label_project_course_unadd) %><%= link_to "#{l(:label_course_new)}", {:controller => 'projects', :action => 'new', :course => 1, :project_type => 1}, :class => 'icon icon-add' %>
+
+ <% end %>
+ <% else %>
+ <%= render partial: 'course_list_have_entity' %>
+ <% end %>
diff --git a/app/views/users/_my_joinedcourse.html.erb b/app/views/users/_my_joinedcourse.html.erb
index dc759a809..31780e301 100644
--- a/app/views/users/_my_joinedcourse.html.erb
+++ b/app/views/users/_my_joinedcourse.html.erb
@@ -11,23 +11,27 @@
<% end %>
<% else %>
-
- <%=l(:label_course_doing)%>(<%=@memberships_doing.count%>)
- <%= link_to"#{l(:label_course_view_student)}",{:controller=>'projects',:action=>'course', :course => 1}, :class => 'icon icon-add' %>
-
-
- <%= render :partial => 'course_form', :locals => {:memberships => @memberships_doing}%>
-
+
+
-
+
+
+ <%= render :partial => 'course_form', :locals => {:memberships => @memberships_doing} %>
+
+
-
- <%= link_to l(:label_course_done)+"("+@memberships_done.count.to_s+")", 'javascript:void(0);', :onclick => '$("#courses_history_block").slideToggle(400); ', style:"color:#666666" if User.current.logged? %>
-
-
-
- <%= render :partial => 'course_form', :locals => {:memberships => @memberships_done}%>
-
+
+
+ <%= render :partial => 'course_form', :locals => {:memberships => @memberships_done} %>
+
+
+
<% end %>
diff --git a/app/views/users/user_courses.html.erb b/app/views/users/user_courses.html.erb
index aa4a366fc..6a4d7afdd 100644
--- a/app/views/users/user_courses.html.erb
+++ b/app/views/users/user_courses.html.erb
@@ -12,3 +12,22 @@
});
+
+
\ No newline at end of file
diff --git a/app/views/welcome/contest.html.erb b/app/views/welcome/contest.html.erb
index 65238110b..3e0fecceb 100644
--- a/app/views/welcome/contest.html.erb
+++ b/app/views/welcome/contest.html.erb
@@ -192,13 +192,21 @@
<%= link_to '['+topic.forum.name + ']',forum_path(topic.forum),:class => 'memo_Bar_title' %><%= link_to topic.subject.truncate(30, omission: '...'), topic.event_url, :class => "gray" , :style => "font-size: 10pt !important;" %>
-
- <%= l(:field_updated_on) %><%=time_tag_welcome(topic_last_time topic)%>前
-
- 由 <%= link_to topic.author ? topic.author : 'Anonymous', user_path(topic.author_id), :style => "font-size: 9pt !important; color: rgb(17, 102, 173);" %> 发表
-
- 回复(<%= link_to (topic.parent ? topic.parent.replies_count : topic.replies_count), topic.event_url %>)
-
+
+
+ <%= "#{l(:label_updated_time, value: time_tag_welcome(topic_last_time topic))}".html_safe %>
+
+
+ 楼主: <%= link_to_user(topic.author) %>
+
+
+ 最后回复:<%=link_to_user topic.last_reply.try(:author) %>
+
+
+ 回复(<%= link_to topic.try(:replies_count), topic.event_url %>)
+
+
+
<% end %>
diff --git a/app/views/welcome/course.html.erb b/app/views/welcome/course.html.erb
index 06269665e..c4a091299 100644
--- a/app/views/welcome/course.html.erb
+++ b/app/views/welcome/course.html.erb
@@ -239,12 +239,20 @@
<%= link_to '['+topic.forum.name + ']',forum_path(topic.forum),:class => 'memo_Bar_title' %><%= link_to topic.subject.truncate(30, omission: '...'), topic.event_url, :class => "gray" , :style => "font-size: 10pt !important;" %>
-
- <%= l(:field_updated_on) %><%=time_tag_welcome(topic_last_time topic)%>前
-
- 由 <%= link_to topic.author ? topic.author : 'Anonymous', user_path(topic.author_id), :style => "font-size: 9pt !important; color: rgb(17, 102, 173);" %> 发表
-
- 回复(<%= link_to (topic.parent ? topic.parent.replies_count : topic.replies_count), topic.event_url %>)
+
+
+ <%= "#{l(:label_updated_time, value: time_tag_welcome(topic_last_time topic))}".html_safe %>
+
+
+ 楼主: <%= link_to_user(topic.author) %>
+
+
+ 最后回复:<%=link_to_user topic.last_reply.try(:author) %>
+
+
+ 回复(<%= link_to topic.try(:replies_count), topic.event_url %>)
+
+
<% end %>
diff --git a/public/stylesheets/application.css b/public/stylesheets/application.css
index 8e0a81cf6..977aef8fe 100644
--- a/public/stylesheets/application.css
+++ b/public/stylesheets/application.css
@@ -493,7 +493,6 @@ a.bids_user {
}
.line{
- width: 905px;
height: 1px;
margin: 0px;
background-color: #cacaca;
diff --git a/public/stylesheets/nyan.css b/public/stylesheets/nyan.css
index 0135b1e46..7910c2a64 100644
--- a/public/stylesheets/nyan.css
+++ b/public/stylesheets/nyan.css
@@ -1,14 +1,17 @@
/* TODO: base/common/page 准备封装一些基本样式组合调用 参考YUI
*******************************************************************************/
-span[id^=valid_user]{
- padding-left: 10px;
+span[id^=valid_user] {
+ padding-left: 10px;
}
-.red{
- color: red;
+
+.red {
+ color: red;
}
-.green{
- color: green;
+
+.green {
+ color: green;
}
+
.border_box {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
@@ -1007,7 +1010,7 @@ div.issue {
}
#ver-zebra1 td {
- padding: 8px ;
+ padding: 8px;
border-right: 1px solid #fff;
border-left: 1px solid #fff;
color: #669;
@@ -1133,11 +1136,13 @@ div.pagination {
-o-transition: 1s width;
transition: 1s width;
}
-.all_browse_div table .description{
- border-bottom: 1px solid #efffff;
+
+.all_browse_div table .description {
+ border-bottom: 1px solid #efffff;
}
-.all_browse_div table td{
- vertical-align: middle;
+
+.all_browse_div table td {
+ vertical-align: middle;
}
/* softapplication show
@@ -1146,6 +1151,7 @@ div.pagination {
margin: 0;
padding: 0;
}
+
.softapplication-img {
margin: 5px auto;
width: 860px;
@@ -1154,25 +1160,29 @@ div.pagination {
box-shadow: 5px 5px 20px 5px #ccc;
border-radius: 5px;
}
+
.soft-application {
width: 326px;
height: 580px;
}
-.softapplication-img .title{
+
+.softapplication-img .title {
width: 326px;
position: absolute;
left: 0;
bottom: 0;
}
-.softapplication-img .title a{
+
+.softapplication-img .title a {
display: block;
text-decoration: none;
color: #fff;
font-size: 20px;
padding: 20px;
- background: rgba(0,0,0,0.5);
+ background: rgba(0, 0, 0, 0.5);
}
-.softapplication-img li{
+
+.softapplication-img li {
list-style-type: none;
position: relative;
float: left;
@@ -1182,11 +1192,97 @@ div.pagination {
-ms-transition: all 0.5s;
-o-transition: all 0.5s;
transition: all 0.5s;
- box-shadow: -1px 0 3px 1px rgba(0,0,0,0.3);
+ box-shadow: -1px 0 3px 1px rgba(0, 0, 0, 0.3);
}
-.softapplication-img ul:hover li{
+
+.softapplication-img ul:hover li {
width: 160px;
}
-.softapplication-img ul li:hover{
+
+.softapplication-img ul li:hover {
width: 326px;
}
+
+/* user_courses
+*******************************************************************************/
+.user_course_list {
+ margin: 0;
+ padding: 0;
+ position: relative;
+ margin-top: -15px;
+}
+
+.user_course_list .menu{
+ display: block;
+ background-color: #f9f9f9;
+ border-radius: 2px 2px 0 0;
+ position: relative;
+ height: 40px;
+ line-height: 40px;
+ border-bottom: 1px solid #ddd;
+ text-align: left;
+ margin-left: -10px;
+ padding-left: 15px;
+}
+
+.user_course_list .menu:after {
+ content: ".";
+ visibility: hidden;
+ display: block;
+ height: 0;
+ clear: both;
+}
+
+.user_course_list .menu ul {
+ margin: 0;
+ padding: 0;
+ float: right;
+ margin-right: 30px;
+}
+.user_course_list .menu ul {
+}
+
+.user_course_list .menu li {
+ display: inline-block;
+ position: relative;
+ height: 40px;
+ line-height: 40px;
+ cursor: pointer;
+}
+
+.user_course_list .menu li:hover {
+ color: #00a1d6;
+}
+
+.user_course_list .menu li.on {
+ color: #00a1d6;
+ font-weight: bold;
+}
+
+
+.user_course_list .list_top {
+ margin: 20px auto 0px;
+}
+
+.user_course_list .created_course {
+ position: relative;
+ display: block;
+ padding-top: 20px;
+}
+
+.user_course_list .created_course:after {
+ content: ".";
+ visibility: hidden;
+ display: block;
+ height: 0;
+ clear: both;
+}
+
+.user_course_list .created_course .field {
+ position: absolute;
+ display: inline-block;
+ color: rgb(213, 213, 213);
+ top: 0;
+ right: 5%;
+}
+