Merge remote-tracking branch 'origin/szzh' into szzh
This commit is contained in:
commit
7748704c3a
|
@ -0,0 +1,29 @@
|
|||
class AppliedProjectController < ApplicationController
|
||||
|
||||
#申请加入项目
|
||||
def applied_join_project
|
||||
@user_id = params[:user_id]
|
||||
@project = Project.find(params[:project_id])
|
||||
AppliedProject.create(:user_id => params[:user_id], :project_id => params[:project_id])
|
||||
#redirect_to project_path(params[:project_id])
|
||||
#redirect_to_referer_or {render :text => ( 'applied success.'), :layout => true}
|
||||
respond_to do |format|
|
||||
format.html { redirect_to_referer_or {render :text => (watching ? 'Watcher added.' : 'Watcher removed.'), :layout => true}}
|
||||
format.js { render :partial => 'set_applied'}
|
||||
end
|
||||
end
|
||||
|
||||
#取消申请
|
||||
def unapplied_join_project
|
||||
@project = Project.find(params[:project_id])
|
||||
@applied = AppliedProject.find(params[:id])
|
||||
@applied.destroy
|
||||
#redirect_to project_path(params[:project_id])
|
||||
#redirect_to_referer_or {render :text => ( 'unsubscribe success.'), :layout => true}
|
||||
respond_to do |format|
|
||||
format.html { redirect_to_referer_or {render :text => (watching ? 'Watcher added.' : 'Watcher removed.'), :layout => true}}
|
||||
format.js { render :partial => 'set_applied' }
|
||||
end
|
||||
end
|
||||
|
||||
end
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -158,6 +158,6 @@ class WatchersController < ApplicationController
|
|||
respond_to do |format|
|
||||
format.html { redirect_to_referer_or {render :text => (watching ? 'Watcher added.' : 'Watcher removed.'), :layout => true}}
|
||||
format.js { render :partial => 'set_watcher', :locals => {:user => user, :watched => watchables} }
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -0,0 +1,28 @@
|
|||
module AppliedProjectHelper
|
||||
|
||||
def applied_css(project)
|
||||
id = project.id
|
||||
"#{project.class.to_s.underscore}-#{id}-applied"
|
||||
end
|
||||
|
||||
def applied_link(project, user, options=[])
|
||||
return '' unless user && user.logged?
|
||||
applied = project.applied_projects.find_by_user_id(user.id)
|
||||
text = applied ? l(:label_unapply_project) : l(:label_apply_project)
|
||||
|
||||
@applied_flag = project.instance_of?(Project)
|
||||
css = @applied_flag ? ([applied_css(project), applied ? 'icon ' : 'icon '].join(' ') << options[0].to_s) :
|
||||
([applied_css(project), applied ? 'icon icon-applied ' : 'icon icon-applied-off '].join(' ') << options[0].to_s)
|
||||
if applied
|
||||
appliedid = applied.id
|
||||
end
|
||||
url = appliedproject_path(
|
||||
:id=>appliedid,
|
||||
:user_id => user.id,
|
||||
:project_id => project.id
|
||||
)
|
||||
method = applied ? 'delete' : 'post'
|
||||
|
||||
link_to text, url, :remote => true, :method => method ,:class=>css
|
||||
end
|
||||
end
|
|
@ -30,7 +30,7 @@ module WatchersHelper
|
|||
objects = Array.wrap(objects)
|
||||
|
||||
watched = objects.any? {|object| object.watched_by?(user)}
|
||||
@watch_flag = (objects.first.instance_of?(User) or objects.first.instance_of?(Project) or objects.first.instance_of?(Contest) or (objects.first.instance_of?(Bid)))
|
||||
@watch_flag = (objects.first.instance_of?(User) or objects.first.instance_of?(Project) or objects.first.instance_of?(Contest) or (objects.first.instance_of?(Bid)))
|
||||
css = @watch_flag ? ([watcher_css(objects), watched ? 'icon ' : 'icon '].join(' ') << options[0].to_s) :
|
||||
([watcher_css(objects), watched ? 'icon icon-fav ' : 'icon icon-fav-off '].join(' ') << options[0].to_s)
|
||||
|
||||
|
@ -187,4 +187,31 @@ module WatchersHelper
|
|||
:class => "floating"
|
||||
end.join.html_safe
|
||||
end
|
||||
end
|
||||
|
||||
def applied_css(project)
|
||||
id = project.id
|
||||
"#{project.class.to_s.underscore}-#{id}-applied"
|
||||
end
|
||||
|
||||
def applied_link(project, user, options=[])
|
||||
return '' unless user && user.logged?
|
||||
applied = project.applied_projects.find_by_user_id(user.id)
|
||||
text = applied ? l(:label_unapply_project) : l(:label_apply_project)
|
||||
|
||||
@applied_flag = project.instance_of?(Project)
|
||||
css = @applied_flag ? ([applied_css(project), applied ? 'icon ' : 'icon '].join(' ') << options[0].to_s) :
|
||||
([applied_css(project), applied ? 'icon icon-applied ' : 'icon icon-applied-off '].join(' ') << options[0].to_s)
|
||||
if applied
|
||||
appliedid = applied.id
|
||||
end
|
||||
url = appliedproject_path(
|
||||
:id=>appliedid,
|
||||
:user_id => user.id,
|
||||
:project_id => project.id
|
||||
)
|
||||
method = applied ? 'delete' : 'post'
|
||||
|
||||
link_to text, url, :remote => true, :method => method ,:class=>css
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
class AppliedProject < ActiveRecord::Base
|
||||
attr_accessible :project_id, :user_id
|
||||
|
||||
belongs_to :user
|
||||
belongs_to :project
|
||||
end
|
|
@ -64,7 +64,8 @@ class Project < ActiveRecord::Base
|
|||
# has_many :students_for_courses, :dependent => :destroy
|
||||
has_many :student, :through => :students_for_courses, :source => :user
|
||||
has_one :course_extra, :class_name => 'Course', :foreign_key => :extra,:primary_key => :identifier, :dependent => :destroy
|
||||
|
||||
has_many :applied_projects
|
||||
|
||||
# end
|
||||
#ADDED BY NIE
|
||||
has_many :project_infos, :dependent => :destroy
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
<% selector = ".#{applied_css(@project)}" %>
|
||||
$("<%= selector %>").each(function(){$(this).replaceWith("<%= escape_javascript applied_link(@project, User.current) %>")});
|
||||
|
||||
|
|
@ -7,7 +7,7 @@
|
|||
<div class="forums-index-content">
|
||||
<p ><%= link_to h(forum.name), forum_path(forum) %></p>
|
||||
<p ><%= forum.description%></p>
|
||||
<p ><%= authoring forum.created_at, forum.creator %></p></div>
|
||||
<p ><%= authoring forum.created_at, forum.creator %></p></div>
|
||||
<div class="forums-index-count">
|
||||
<table class="forums-count-color"><tr class="forums-count-color" align="center"><td><%= link_to (forum.memo_count), forum_path(forum) %></td><td><%= link_to (forum.topic_count), forum_path(forum) %></td></tr>
|
||||
<tr align="center"><td>回答</td><td>帖子</td></tr></table></div>
|
||||
|
|
|
@ -25,6 +25,9 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td align="left" colspan="2" ><span class="font_lighter"><%= authoring topic.created_at, topic.author %>
|
||||
<span class="font_description2">
|
||||
最后回复:<%=link_to_user topic.last_reply.try(:author) %>
|
||||
</span>
|
||||
<br />
|
||||
</span></td>
|
||||
</tr>
|
||||
|
|
|
@ -114,10 +114,18 @@
|
|||
|
||||
<td class="font_index">
|
||||
<!-- 1 教师; 2 学生;0 全部-->
|
||||
<%= 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 %>
|
||||
<span><%= teacherCount(@project)%></span> <!--<%= link_to "#{teacherCount(@project)}", "javascript:void(0)", :course => '1' %>-->
|
||||
<% end%>
|
||||
</td>
|
||||
<td class="font_index">
|
||||
<%= 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 %>
|
||||
<span><%= studentCount(@project)%></span>
|
||||
<% end %>
|
||||
</td>
|
||||
<td class="font_index"><%= link_to files_count, project_files_path(@project) %></td>
|
||||
<tr class="font_aram">
|
||||
|
|
|
@ -151,6 +151,7 @@
|
|||
<li>
|
||||
<%= link_to l(:label_question_student), {:controller => 'bids', :action => 'show' },:class => link_class(:respond)%>
|
||||
</li>
|
||||
<% if User.current.member_of? @bid.courses.first%>
|
||||
<li>
|
||||
<% 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 %>
|
||||
</li>
|
||||
<% end %>
|
||||
<!-- <li><%= link_to l(:label_homework_statistics), { :controller => 'bids', :action => 'homework_statistics' },:class => link_class(:homework_statistics)%></li> -->
|
||||
<!-- <li><%= link_to l(:label_homework_respond), { :controller => 'bids', :action => 'homework_respond' },:class => link_class(:homework_respond)%></li>
|
||||
--><ul>
|
||||
--></ul>
|
||||
</div>
|
||||
|
||||
<%= yield %>
|
||||
|
|
|
@ -103,6 +103,14 @@
|
|||
<span class="icon-fav icon"></span><%= watcher_link(@project, User.current) %>
|
||||
<% end %>
|
||||
</div>
|
||||
<!--添加项目申请-->
|
||||
<div style="margin-left: 20px;">
|
||||
<% if ( !(User.current.member_of? @project) && User.current.login?) %>
|
||||
<span class="icon-fav icon"></span>
|
||||
<%= applied_link(@project, User.current) %>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -45,7 +45,7 @@
|
|||
<%= content_tag('span', l(:label_x_data,:count => files_count)) %>
|
||||
</p>
|
||||
<p class="stats">
|
||||
<%= 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)) %>
|
||||
</p>
|
||||
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
<div class="user_course_list">
|
||||
<div class="menu">
|
||||
<%= link_to "#{l(:label_course_new)}", new_project_path(course: 1, project_type: 1), class: 'icon icon-add' if @user == User.current %>
|
||||
<ul>
|
||||
<li mode='doing' class="on">进行中</li>
|
||||
<li mode='end'>已完结</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="dyn_list_wrapper" mode='doing'>
|
||||
<div class='created_course'>
|
||||
<%= render :partial => 'course_form', :locals => {:memberships => @memberships_doing} %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="dyn_list_wrapper hidden" mode='end'>
|
||||
<div class="created_course ">
|
||||
<%= render :partial => 'course_form', :locals => {:memberships => @memberships_done} %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -1,38 +1,16 @@
|
|||
<div class="content-title-top">
|
||||
<% if @memberships.empty? %>
|
||||
<% if @user != User.current %>
|
||||
<p class="font_description">
|
||||
<%= l(:label_project_course_un) %>
|
||||
</p>
|
||||
<% else %>
|
||||
<p class="font_description">
|
||||
<!--teacher could create the course directly-->
|
||||
<%= l(:label_project_course_unadd) %><%= link_to"#{l(:label_course_new)}",{:controller=>'projects',:action=>'new', :course => 1, :project_type => 1}, :class => 'icon icon-add' %>
|
||||
</p>
|
||||
<% end %>
|
||||
<% else %>
|
||||
<p>
|
||||
<span><%=l(:label_course_doing)%>(<%=@memberships_doing.count%>)</span>
|
||||
<%= link_to"#{l(:label_course_new)}",{:controller=>'projects',:action=>'new', :course => 1, :project_type => 1}, :class => 'icon icon-add' if @user == User.current %>
|
||||
</p>
|
||||
<p>
|
||||
<%= l(:label_created_course) %>
|
||||
<div> <%= render :partial => 'course_form', :locals => {:memberships => @OwningCouses}%>
|
||||
</div> </p>
|
||||
<div style="clear:both;"></div>
|
||||
<p> <%= l(:label_joined_course) %>
|
||||
<div> <%= render :partial => 'course_form', :locals => {:memberships => @JoinCouses}%>
|
||||
</div> </p>
|
||||
|
||||
<div style="clear:both;"></div>
|
||||
|
||||
<p>
|
||||
<%= 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? %>
|
||||
</p>
|
||||
|
||||
<div id="courses_history_block" class="courses_history hidden" >
|
||||
<%= render :partial => 'course_form', :locals => {:memberships => @memberships_done}%>
|
||||
</div>
|
||||
|
||||
<% end %>
|
||||
<% if @memberships.empty? %>
|
||||
<% if @user != User.current %>
|
||||
<p class="font_description">
|
||||
<%= l(:label_project_course_un) %>
|
||||
</p>
|
||||
<% else %>
|
||||
<p class="font_description">
|
||||
<!--teacher could create the course directly-->
|
||||
<%= l(:label_project_course_unadd) %><%= link_to "#{l(:label_course_new)}", {:controller => 'projects', :action => 'new', :course => 1, :project_type => 1}, :class => 'icon icon-add' %>
|
||||
</p>
|
||||
<% end %>
|
||||
<% else %>
|
||||
<%= render partial: 'course_list_have_entity' %>
|
||||
<% end %>
|
||||
</div>
|
||||
|
|
|
@ -11,23 +11,27 @@
|
|||
</p>
|
||||
<% end %>
|
||||
<% else %>
|
||||
<p>
|
||||
<span><%=l(:label_course_doing)%>(<%=@memberships_doing.count%>)</span>
|
||||
<%= link_to"#{l(:label_course_view_student)}",{:controller=>'projects',:action=>'course', :course => 1}, :class => 'icon icon-add' %>
|
||||
</p>
|
||||
<div>
|
||||
<%= render :partial => 'course_form', :locals => {:memberships => @memberships_doing}%>
|
||||
</div>
|
||||
<div class="user_course_list">
|
||||
<div class="menu">
|
||||
<%= link_to"#{l(:label_course_view_student)}",course_path(course: 1), :class => 'icon icon-add' %>
|
||||
<ul>
|
||||
<li mode='doing' class="on">进行中</li>
|
||||
<li mode='end'>已完结</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div style="clear:both;"></div>
|
||||
<div class="dyn_list_wrapper" mode='doing'>
|
||||
<div class='created_course'>
|
||||
<%= render :partial => 'course_form', :locals => {:memberships => @memberships_doing} %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
<%= 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? %>
|
||||
</p>
|
||||
|
||||
<div id="courses_history_block" class="courses_history hidden" >
|
||||
<%= render :partial => 'course_form', :locals => {:memberships => @memberships_done}%>
|
||||
</div>
|
||||
<div class="dyn_list_wrapper hidden" mode='end'>
|
||||
<div class="created_course ">
|
||||
<%= render :partial => 'course_form', :locals => {:memberships => @memberships_done} %>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<% end %>
|
||||
|
||||
|
|
|
@ -12,3 +12,22 @@
|
|||
|
||||
});
|
||||
</script>
|
||||
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
var $menu = $('.user_course_list .menu');
|
||||
var $li_tags = $menu.find('[mode]');
|
||||
var $dyn_list = $('.dyn_list_wrapper');
|
||||
|
||||
$menu.find('[mode]').each(function(index, el) {
|
||||
$(el).click(function() {
|
||||
mode = $(el).attr('mode');
|
||||
$menu.find('[mode]').removeClass( "on" );
|
||||
$( this ).addClass( "on" );
|
||||
var wrapper = $('[mode='+mode+']')
|
||||
$dyn_list.addClass( "hidden" );
|
||||
wrapper.removeClass('hidden')
|
||||
})
|
||||
});
|
||||
});
|
||||
</script>
|
|
@ -192,13 +192,21 @@
|
|||
<span class="memo_activity" style="color:gray; display: inline-block; margin-bottom:6px; background: url('/images/list-icon.png') no-repeat scroll ;background-position: left center;">
|
||||
<%= 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;" %>
|
||||
</span>
|
||||
<br>
|
||||
<span style="margin-left: 24px; color: rgb(172, 174, 177); white-space: nowrap; font-size: 9pt !important;;"><%= l(:field_updated_on) %><%=time_tag_welcome(topic_last_time topic)%>前</span>
|
||||
<span style="margin-left: 8px; margin-bottom: 0px; color: rgb(172, 174, 177) !important; white-space: nowrap;">
|
||||
由 <%= link_to topic.author ? topic.author : 'Anonymous', user_path(topic.author_id), :style => "font-size: 9pt !important; color: rgb(17, 102, 173);" %> 发表
|
||||
</span>
|
||||
<span style="float: right; color: rgb(172, 174, 177); white-space: nowrap; font-size: 9pt !important;;">回复(<%= link_to (topic.parent ? topic.parent.replies_count : topic.replies_count), topic.event_url %>)</span>
|
||||
</div>
|
||||
<div class='memo_activity memo_attr'>
|
||||
<span class='memo_timestamp'>
|
||||
<%= "#{l(:label_updated_time, value: time_tag_welcome(topic_last_time topic))}".html_safe %>
|
||||
</span>
|
||||
<span class="memo_author">
|
||||
楼主: <%= link_to_user(topic.author) %>
|
||||
</span>
|
||||
<span class="memo_last_person">
|
||||
最后回复:<%=link_to_user topic.last_reply.try(:author) %>
|
||||
</span>
|
||||
<span class="memo_reply">
|
||||
回复(<%= link_to topic.try(:replies_count), topic.event_url %>)
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<% end %>
|
||||
</ul>
|
||||
|
|
|
@ -239,12 +239,20 @@
|
|||
<span class="memo_activity" style="color:gray; display: inline-block; margin-bottom:6px; background: url('/images/list-icon.png') no-repeat scroll ;background-position: left center;">
|
||||
<%= 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;" %>
|
||||
</span>
|
||||
<br>
|
||||
<span style="margin-left: 24px; color: rgb(172, 174, 177); white-space: nowrap; font-size:9pt !important;;"><%= l(:field_updated_on) %><%=time_tag_welcome(topic_last_time topic)%>前</span>
|
||||
<span style="margin-left: 8px; margin-bottom: 0px; color: rgb(172, 174, 177) !important; white-space: nowrap;">
|
||||
由 <%= link_to topic.author ? topic.author : 'Anonymous', user_path(topic.author_id), :style => "font-size: 9pt !important; color: rgb(17, 102, 173);" %> 发表
|
||||
</span>
|
||||
<span style="float: right; color: rgb(172, 174, 177); white-space: nowrap; font-size:9pt !important;;">回复(<%= link_to (topic.parent ? topic.parent.replies_count : topic.replies_count), topic.event_url %>)</span>
|
||||
<div class='memo_activity memo_attr'>
|
||||
<span class='memo_timestamp'>
|
||||
<%= "#{l(:label_updated_time, value: time_tag_welcome(topic_last_time topic))}".html_safe %>
|
||||
</span>
|
||||
<span class="memo_author">
|
||||
楼主: <%= link_to_user(topic.author) %>
|
||||
</span>
|
||||
<span class="memo_last_person">
|
||||
最后回复:<%=link_to_user topic.last_reply.try(:author) %>
|
||||
</span>
|
||||
<span class="memo_reply">
|
||||
回复(<%= link_to topic.try(:replies_count), topic.event_url %>)
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<% end %>
|
||||
|
|
|
@ -1165,6 +1165,8 @@ en:
|
|||
label_tags_bid_description: call description
|
||||
label_tags_issue_description: issue description
|
||||
label_tags_all_objects: all objects
|
||||
label_apply_project: Apply Project
|
||||
label_unapply_project: Unsubscribe
|
||||
|
||||
#fq
|
||||
button_leave_meassge: Submit
|
||||
|
|
|
@ -1331,7 +1331,8 @@ zh:
|
|||
label_tags_bid_description: 需求描述
|
||||
label_tags_issue_description: 问题描述
|
||||
label_tags_all_objects: 所有
|
||||
|
||||
label_apply_project: 申请加入
|
||||
label_unapply_project: 取消申请
|
||||
|
||||
#fq
|
||||
button_leave_meassge: 留言
|
||||
|
|
|
@ -248,6 +248,9 @@ RedmineApp::Application.routes.draw do
|
|||
post 'issues/:object_id/watchers', :to => 'watchers#create', :object_type => 'issue'
|
||||
delete 'issues/:object_id/watchers/:user_id' => 'watchers#destroy', :object_type => 'issue'
|
||||
|
||||
post 'appliedproject/applied', :to => 'applied_project#applied_join_project', :as => 'appliedproject'
|
||||
delete 'appliedproject/applied', :to => 'applied_project#unapplied_join_project'
|
||||
|
||||
resources :bids, :only=>[:edit,:update,:show] do
|
||||
member do
|
||||
match 'homework_ajax_modal'
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
class CreateAppliedProjects < ActiveRecord::Migration
|
||||
def self.up
|
||||
create_table :applied_projects do |t|
|
||||
t.column :project_id, :integer, :null => false
|
||||
t.column :user_id, :integer, :null => false
|
||||
end
|
||||
end
|
||||
|
||||
def self.down
|
||||
drop_table :applied_projects
|
||||
end
|
||||
end
|
18
db/schema.rb
18
db/schema.rb
|
@ -11,7 +11,7 @@
|
|||
#
|
||||
# It's strongly recommended to check this file into your version control system.
|
||||
|
||||
ActiveRecord::Schema.define(:version => 20140519070751) do
|
||||
ActiveRecord::Schema.define(:version => 20140521072851) do
|
||||
|
||||
create_table "activities", :force => true do |t|
|
||||
t.integer "act_id", :null => false
|
||||
|
@ -23,6 +23,11 @@ ActiveRecord::Schema.define(:version => 20140519070751) do
|
|||
add_index "activities", ["user_id", "act_type"], :name => "index_activities_on_user_id_and_act_type"
|
||||
add_index "activities", ["user_id"], :name => "index_activities_on_user_id"
|
||||
|
||||
create_table "applied_projects", :force => true do |t|
|
||||
t.integer "project_id", :null => false
|
||||
t.integer "user_id", :null => false
|
||||
end
|
||||
|
||||
create_table "apply_project_masters", :force => true do |t|
|
||||
t.integer "user_id"
|
||||
t.string "apply_type"
|
||||
|
@ -52,11 +57,14 @@ ActiveRecord::Schema.define(:version => 20140519070751) do
|
|||
add_index "attachments", ["container_id", "container_type"], :name => "index_attachments_on_container_id_and_container_type"
|
||||
add_index "attachments", ["created_on"], :name => "index_attachments_on_created_on"
|
||||
|
||||
create_table "attachmentstypes", :force => true do |t|
|
||||
t.integer "typeId", :null => false
|
||||
create_table "attachmentstypes", :id => false, :force => true do |t|
|
||||
t.integer "id", :null => false
|
||||
t.integer "typeId"
|
||||
t.string "typeName", :limit => 50
|
||||
end
|
||||
|
||||
add_index "attachmentstypes", ["id"], :name => "id"
|
||||
|
||||
create_table "auth_sources", :force => true do |t|
|
||||
t.string "type", :limit => 30, :default => "", :null => false
|
||||
t.string "name", :limit => 60, :default => "", :null => false
|
||||
|
@ -675,6 +683,9 @@ ActiveRecord::Schema.define(:version => 20140519070751) do
|
|||
t.integer "viewed_count_crawl", :default => 0
|
||||
t.integer "viewed_count_local", :default => 0
|
||||
t.string "url"
|
||||
t.string "username"
|
||||
t.string "userhomeurl"
|
||||
t.date "date_collected"
|
||||
end
|
||||
|
||||
create_table "repositories", :force => true do |t|
|
||||
|
@ -763,6 +774,7 @@ ActiveRecord::Schema.define(:version => 20140519070751) do
|
|||
t.integer "softapplication_id"
|
||||
t.integer "is_public"
|
||||
t.string "application_developers"
|
||||
t.string "deposit_project_url"
|
||||
end
|
||||
|
||||
create_table "students_for_courses", :force => true do |t|
|
||||
|
|
|
@ -493,7 +493,6 @@ a.bids_user {
|
|||
}
|
||||
|
||||
.line{
|
||||
width: 905px;
|
||||
height: 1px;
|
||||
margin: 0px;
|
||||
background-color: #cacaca;
|
||||
|
|
|
@ -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%;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue