This commit is contained in:
huangjingquan 2013-10-08 22:12:17 +08:00
parent 8e51ea7327
commit 2c45fb8760
11 changed files with 210 additions and 13 deletions

View File

@ -24,7 +24,7 @@ class BidsController < ApplicationController
# elsif # elsif
# @bids = Bid.visible.where('reward_type = ? or reward_type = ?', 4) # @bids = Bid.visible.where('reward_type = ? or reward_type = ?', 4)
else else
@bids = Bid.visible.where('reward_type = ? or reward_type = ?', 1, 2) @bids = Bid.visible.where('reward_type = ?', 1)
end end
@bids = @bids.like(params[:name]) if params[:name].present? @bids = @bids.like(params[:name]) if params[:name].present?
@ -76,6 +76,64 @@ class BidsController < ApplicationController
#end #end
end end
def contest
@project_type = params[:project_type]
# Modified by nie
# @requirement_title = "4"
@offset, @limit = api_offset_and_limit({:limit => 10})
@bids = Bid.visible.where('reward_type = ?', 2)
# elsif
# @bids = Bid.visible.where('reward_type = ? or reward_type = ?', 4)
@bids = @bids.like(params[:name]) if params[:name].present?
@bid_count = @bids.count
@bid_pages = Paginator.new @bid_count, @limit, params['page']
@offset ||= @bid_pages.reverse_offset
#added by nie
if params[:bid_sort_type].present?
case params[:bid_sort_type]
when '0'
unless @offset == 0
@bids = @bids.offset(@offset).limit(@limit).all.reverse
else
limit = @bid_count % @limit
limit = @limit if limit == 0
@bids = @bids.offset(@offset).limit(limit).all.reverse
end
@s_state = 0
when '1'
unless @offset == 0
@bids = @bids.reorder('bids.commit').offset(@offset).limit(@limit).all.reverse
else
limit = @bid_count % @limit
limit = @limit if limit == 0
@bids = @bids.reorder('bids.commit').offset(@offset).limit(limit).all.reverse
end
@s_state = 1
when '2'
unless @offset == 0
@bids = @bids.offset(@offset).limit(@limit).all.reverse
else
limit = @bid_count % @limit
limit = @limit if limit == 0
@bids = @bids.offset(@offset).limit(@limit).all.reverse
end
@s_state = 0
end
else
unless @offset == 0
@bids = @bids.reorder('bids.commit').offset(@offset).limit(@limit).all.reverse
else
limit = @bid_count % @limit
limit = @limit if limit == 0
@bids = @bids.reorder('bids.commit').offset(@offset).limit(limit).all.reverse
end
@s_state = 1
end
end
def fork def fork
@courses = [] @courses = []
@membership = User.current.memberships.all(:conditions => Project.visible_condition(User.current)) @membership = User.current.memberships.all(:conditions => Project.visible_condition(User.current))
@ -307,6 +365,36 @@ class BidsController < ApplicationController
@bid = Bid.new @bid = Bid.new
@bid.safe_attributes = params[:bid] @bid.safe_attributes = params[:bid]
end end
#huang
def create_contest
@bid = Bid.new
@bid.name = params[:bid][:name]
@bid.description = params[:bid][:description]
@bid.reward_type = params[:bid_reward_type]
@bid.budget = params[:bid][:budget]
@bid.deadline = params[:bid][:deadline]
@bid.author_id = User.current.id
@bid.commit = 0
if @bid.save
unless @bid.watched_by?(User.current)
if @bid.add_watcher(User.current)
flash[:notice] = l(:label_bid_succeed)
end
end
redirect_to respond_path(@bid)
else
@bid.safe_attributes = params[:bid]
render :action => 'new_bid'
end
end
#huang
def new_contest
@bid = Bid.new
@bid.safe_attributes = params[:bid]
end
def create_bid def create_bid
@bid = Bid.new @bid = Bid.new

View File

@ -1,5 +1,5 @@
<!-- fq --> <!-- fq -->
<% else %>
<script type="text/javascript" language="javascript"> <script type="text/javascript" language="javascript">
function show(id, id_t, label_reward, label_money, label_credit, label_content) { function show(id, id_t, label_reward, label_money, label_credit, label_content) {
var text = $('#' + id); var text = $('#' + id);
@ -19,7 +19,6 @@
return content; return content;
} }
</script> </script>
<%= error_messages_for 'bid' %> <%= error_messages_for 'bid' %>
<!--[form:project]--> <!--[form:project]-->
<p style="width:500px;"><%= l(:label_bids_form_new_description) %></p> <p style="width:500px;"><%= l(:label_bids_form_new_description) %></p>
@ -34,4 +33,5 @@
</p> </p>
<p><%= f.text_field :deadline, :required => true, :size => 60, :style => "width:150px;", :placeholder => "#{l(:label_deadline)}" %><%= calendar_for('bid_deadline')%> <p><%= f.text_field :deadline, :required => true, :size => 60, :style => "width:150px;", :placeholder => "#{l(:label_deadline)}" %><%= calendar_for('bid_deadline')%>
</p> </p>

View File

@ -0,0 +1,34 @@
<!-- huang -->
<script type="text/javascript" language="javascript">
function show(id, id_t, label_reward, label_money, label_credit, label_content) {
var text = $('#' + id);
var text_t = $('#' + id_t);
if (text.val() == 0) {
text_t.attr("placeholder", label_reward);
}
if (text.val() == 1) {
text_t.attr("placeholder", label_money);
}
if (text.val() == 3) {
text_t.attr("placeholder", label_credit);
}
if (text.val() == 2) {
text_t.attr("placeholder", label_content);
}
return content;
}
</script>
<%= error_messages_for 'bid' %>
<!--[form:project]-->
<p style="width:500px;"><%= l(:label_bids_form_contest_new_description) %></p>
<p><%= f.text_field :name, :required => true, :size => 60, :style => "width:490px;", :maxlength => Bid::NAME_LENGTH_LIMIT, :placeholder => "#{l(:label_contest_name)}" %></p>
<p style="margin-left:-10px;padding-right: 20px;"><%= f.text_area :description, :rows => 8, :class => 'wiki-edit', :style => "font-size:small;width:490px;margin-left:10px;", :maxlength => Bid::DESCRIPTION_LENGTH_LIMIT, :placeholder => "#{l(:label_contest_description)}" %></p>
<p><%= select_tag 'bid_reward_type', "<option value = '0'>#{l(:label_choose_reward)}</option><option value = '1'>#{l(:label_money)}</option><option value = '2'>#{l(:label_reward_1)}</option>".html_safe,
:onChange => "show('bid_reward_type', 'bid_budget', '"+l(:label_bids_reward_what)+"','"+l(:label_bids_new_money)+"','"+l(:label_bids_new_credit)+"','"+l(:label_bids_new_content)+"')" %>
<%= f.text_field :budget, :required => true, :size => 60, :style => "width:350px;", :placeholder => l(:label_bids_reward_what) %>
<!-- 设置奖项设置的打开 关闭开关-->
</p>
<!-- <em class="info" style="margin-left:95px;"><%= l(:text_contest_reward) %></em> -->
<p><%= f.text_field :deadline, :required => true, :size => 60, :style => "width:150px;", :placeholder => "#{l(:label_deadline)}" %><%= calendar_for('bid_deadline')%></p>

View File

@ -0,0 +1,53 @@
<!-- fq -->
<%= form_tag(calls_path, :method => :get) do %>
<div class="project-search-block">
<table width="100%" valign="center">
<tr>
<td width="16%"><span style="margin-left:0px">
竞赛列表
</span></td>
<td valign="center"><% if User.current.logged? %>
<!-- <div class='icon icon-add'> -->
<%= link_to(l(:label_newtype_contest), {:controller => 'bids', :action => 'new_contest'}, :class => 'icon icon-add') %>
<!-- <%= toggle_link l(:label_new_call), 'put-bid-form', {:focus => 'project_id'} %> -->
<!-- </div> -->
<% end %></td>
<td align="right">
<div class="project-search">
<%= text_field_tag 'name', params[:name], :size => 30 %>
<%= submit_tag l(:label_search), :class => "small", :name => nil %>
</div></td>
</tr></table>
</div>
<%end%>
<% if User.current.logged? %>
<div id="put-bid-form" style="display: none">
<%= render :partial => 'new_bid' %>
</div>
<% end %>
<%= sort_bid(@s_state, @project_type)%>
<!-- <div class="pagination" style="border-bottom: 1px solid rgb(223,223,223); width: 95%; margin-left: 2%; margin-top: 15px" >
<ul style="margin-right:0px">
<li>
<%= link_to l(:label_sort_by_time), calls_path(:bid_sort_type => '0') %>
</li>
<li>
<%= link_to l(:label_sort_by_active), calls_path(:bid_sort_type => '1') %>
</li>
<!-- <li>
<%= link_to l(:label_sort_by_influence), calls_path(:bid_sort_type => '2') %>
</li> -->
<!-- </ul>
</div> -->
<div id="bid-show">
<%= render :partial => 'contest_show', :locals => {:bids => @bids, :bid_pages => @bid_pages} %>
</div>

View File

@ -0,0 +1,10 @@
<!-- huang -->
<h3><%=l(:label_newtype_contest)%></h3>
<%= labelled_form_for @bid, :url => {:controller => 'bids', :action => 'create_bid'} do |f| %>
<div class="box tabular">
<%= render :partial => 'form_contest', :locals => { :f => f } %>
<%= submit_tag l(:button_create) %>
<%= javascript_tag "$('#bid_name').focus();" %>
<% end %>
</div>

View File

@ -87,13 +87,10 @@
<tr> <tr>
<td valign="top" style="padding-left: 8px;"><%= l(:label_main_teacher) %></td><td class="font_lighter_sidebar"><%= @course.teacher.lastname+@course.teacher.firstname %></td> <td valign="top" style="padding-left: 8px;"><%= l(:label_main_teacher) %></td><td class="font_lighter_sidebar"><%= @course.teacher.lastname+@course.teacher.firstname %></td>
</tr> </tr>
<!-- added by bai -->
<tr> <tr>
<td valign="top" style="padding-left: 8px;"><%= l(:label_course_time) %></td><td class="font_lighter_sidebar"><%= @course.time %></td> <td valign="top" style="padding-left: 8px;"><%= l(:label_main_term) %></td><td class="font_lighter_sidebar"><%= @course.time %> -- <%= @course.term %></td>
</tr>
<tr>
<td valign="top" style="padding-left: 8px;"><%= l(:label_main_term) %></td><td class="font_lighter_sidebar"><%= @course.term %></td>
</tr> </tr>
<!-- end --> <!-- end -->

View File

@ -11,7 +11,9 @@
<td> <td>
<table width="100%" border="0"> <table width="100%" border="0">
<tr> <tr>
<td colspan="2" valign="top"><strong><%= link_to(bid.author.lastname+bid.author.firstname, user_path(bid.author), :class => 'bid_user') %>: &nbsp;<%= link_to(bid.name, respond_path(bid), :class => 'bid_path') %></strong></td> <td colspan="2" valign="top"><strong><%= link_to(bid.author.lastname+bid.author.firstname, user_path(bid.author), :class => 'bid_user') %>: &nbsp;
<%= link_to(bid.name, respond_path(bid), :class => 'bid_path') %>&nbsp;&nbsp;&nbsp;
<%= l(:label_course_homework) %> : <%= link_to(bid.courses.first.name, project_path(bid.courses.first)) %></strong></td>
</tr> </tr>
<tr> <tr>
<td width="500"> <td width="500">

View File

@ -11,7 +11,10 @@
<td> <td>
<table width="100%" border="0"> <table width="100%" border="0">
<tr> <tr>
<td colspan="2" valign="top"><strong><%= link_to(bid.author.lastname+bid.author.firstname, user_path(bid.author), :class => 'bid_user') %>: &nbsp;<%= link_to(bid.name, respond_path(bid), :class => 'bid_path') %></strong></td> <td colspan="2" valign="top"><strong><%= link_to(bid.author.lastname+bid.author.firstname, user_path(bid.author), :class => 'bid_user') %>: &nbsp;<%= link_to(bid.name, respond_path(bid), :class => 'bid_path') %>
&nbsp;&nbsp;&nbsp;
<%= l(:label_course_homework) %> : <%= link_to(bid.courses.first.name, project_path(bid.courses.first)) %>
</strong></td>
</tr> </tr>
<tr> <tr>
<td width="500"> <td width="500">

View File

@ -741,6 +741,7 @@ zh:
label_time_tracking: 时间跟踪 label_time_tracking: 时间跟踪
label_change_plural: 变更 label_change_plural: 变更
label_statistics: 统计 label_statistics: 统计
label_contest: 竞赛
label_commits_per_month: 每月提交次数 label_commits_per_month: 每月提交次数
label_commits_per_author: 每用户提交次数 label_commits_per_author: 每用户提交次数
label_view_diff: 查看差别 label_view_diff: 查看差别
@ -972,6 +973,7 @@ zh:
text_caracters_minimum: "至少需要 %{count} 个字符。" text_caracters_minimum: "至少需要 %{count} 个字符。"
text_length_between: "长度必须在 %{min} 到 %{max} 个字符之间。" text_length_between: "长度必须在 %{min} 到 %{max} 个字符之间。"
text_command: 学生或其他成员申请加入课程时候需要使用该口令,该口令可以由老师在课堂上公布。 text_command: 学生或其他成员申请加入课程时候需要使用该口令,该口令可以由老师在课堂上公布。
text_contest_reward: 选择奖励后输入描述。
text_tracker_no_workflow: 此跟踪标签未定义工作流程 text_tracker_no_workflow: 此跟踪标签未定义工作流程
text_unallowed_characters: 非法字符 text_unallowed_characters: 非法字符
text_comma_separated: 可以使用多个值(用逗号,分开)。 text_comma_separated: 可以使用多个值(用逗号,分开)。
@ -1287,6 +1289,8 @@ zh:
label_bid_me: 我要应标 label_bid_me: 我要应标
label_new_call: 发布需求 label_new_call: 发布需求
label_newtype_contest: 发布竞赛
label_user_information: "与我相关" label_user_information: "与我相关"
label_bid_succeed: "需求发布成功" label_bid_succeed: "需求发布成功"
label_wrong_budget: 错误的金额格式 label_wrong_budget: 错误的金额格式
@ -1337,7 +1341,9 @@ zh:
label_question_requirement: 对作业提出了问题! label_question_requirement: 对作业提出了问题!
label_deadline: 投资时限yyyy-mm-dd label_deadline: 投资时限yyyy-mm-dd
label_requirement_name: 在此输入需求名称 label_requirement_name: 在此输入需求名称
label_contest_name: 在此输入竞赛名称
label_requirement_description: 内容:对你的需求进行描述 label_requirement_description: 内容:对你的需求进行描述
label_contest_description: 内容:对你的竞赛进行描述
label_requirement_bargain_money: 输入具体奖励方式(如金钱、奖项、学分) label_requirement_bargain_money: 输入具体奖励方式(如金钱、奖项、学分)
button_upload_photo: 上传图片 button_upload_photo: 上传图片
label_leave_me_message: 给我留言了 label_leave_me_message: 给我留言了
@ -1466,6 +1472,7 @@ zh:
label_bids_reward_what: 输入奖励内容 label_bids_reward_what: 输入奖励内容
label_call_bonus: 奖金 label_call_bonus: 奖金
label_bids_form_new_description: 企业可以在此发布一个软件开发任务或者一个技术方案需求1获得价廉物美的解决方案2发现对此项任务有贡献的大学生获得可以招聘的人才。 label_bids_form_new_description: 企业可以在此发布一个软件开发任务或者一个技术方案需求1获得价廉物美的解决方案2发现对此项任务有贡献的大学生获得可以招聘的人才。
label_bids_form_contest_new_description: 企业或者高校可以在此发布一个竞赛。
label_homeworks_form_new_description: 发布一个作业,作业提交方式可以是附件或者项目形式,在作业类型里面设置。 label_homeworks_form_new_description: 发布一个作业,作业提交方式可以是附件或者项目形式,在作业类型里面设置。
label_fork_form_new_description: 该需求将作为某课程的作业被发布,作业提交方式可以使附件或者项目形式,在作业类型里面设置。 label_fork_form_new_description: 该需求将作为某课程的作业被发布,作业提交方式可以使附件或者项目形式,在作业类型里面设置。
label_bids_new_money: 输入奖励金额,如 500,2.5等 label_bids_new_money: 输入奖励金额,如 500,2.5等

View File

@ -437,6 +437,7 @@ RedmineApp::Application.routes.draw do
get 'calls/more', :to => 'bids#more' get 'calls/more', :to => 'bids#more'
get 'calls/back', :to=> 'bids#back' get 'calls/back', :to=> 'bids#back'
match 'calls/new_bid', :controller => 'bids', :action => 'new_bid' match 'calls/new_bid', :controller => 'bids', :action => 'new_bid'
match 'contest/new_contest', :controller => 'bids', :action => 'new_contest' #huang
match 'calls/:id/show_project', :controller => 'bids', :action => 'show_project', :as => 'project_for_bid' match 'calls/:id/show_project', :controller => 'bids', :action => 'show_project', :as => 'project_for_bid'
match 'calls/:id/show_project_homework', :controller => 'bids', :action => 'show_project_homework', :as => 'project_for_bid_homework' # by huang match 'calls/:id/show_project_homework', :controller => 'bids', :action => 'show_project_homework', :as => 'project_for_bid_homework' # by huang
match 'calls/:id/add', :controller => 'bids', :action => 'add' match 'calls/:id/add', :controller => 'bids', :action => 'add'
@ -444,6 +445,7 @@ RedmineApp::Application.routes.draw do
match 'words/add_project_respond', :controller => 'words', :action => 'add_project_respond' match 'words/add_project_respond', :controller => 'words', :action => 'add_project_respond'
match 'projects/:id/feedback', :to => 'projects#feedback', :via => :get, :as => 'project_feedback' match 'projects/:id/feedback', :to => 'projects#feedback', :via => :get, :as => 'project_feedback'
match 'calls/create_bid', :to => 'bids#create_bid' match 'calls/create_bid', :to => 'bids#create_bid'
match 'contest/create_contest', :to => 'bids#create_contest' #huang
match 'calls/create_homework', :to => 'bids#create_homework' match 'calls/create_homework', :to => 'bids#create_homework'
match 'calls/:id/homework_respond', :to => 'bids#homework_respond' match 'calls/:id/homework_respond', :to => 'bids#homework_respond'
match 'calls/:id/homework_statistics', :to => 'bids#homework_statistics' match 'calls/:id/homework_statistics', :to => 'bids#homework_statistics'
@ -471,6 +473,7 @@ RedmineApp::Application.routes.draw do
match 'calls', :controller => 'bids', :action => 'index' match 'calls', :controller => 'bids', :action => 'index'
match 'calls/:id', :controller => 'bids', :action => 'show', :as => 'respond' match 'calls/:id', :controller => 'bids', :action => 'show', :as => 'respond'
match 'contest', :controller => 'bids', :action => 'contest'
######added by nie ######added by nie
match 'tags/show_projects_tags',:to => 'tags#show_projects_tags' match 'tags/show_projects_tags',:to => 'tags#show_projects_tags'

View File

@ -239,7 +239,7 @@ Redmine::MenuManager.map :top_college_menu do |menu|
menu.push :home, :home_path menu.push :home, :home_path
menu.push :new_course, {:controller => 'projects', :action => 'course', :project_type => 1 } menu.push :new_course, {:controller => 'projects', :action => 'course', :project_type => 1 }
menu.push :new_homework, {:controller => 'bids', :action => 'index', :project_type => 1 } menu.push :new_homework, {:controller => 'bids', :action => 'index', :project_type => 1 }
# menu.push :new_contest, {:controller => 'bids', :action => 'index', :project_type => 1 } menu.push :new_contest, {:controller => 'bids', :action => 'contest', :project_type => 1}
menu.push :projects, { :controller => 'projects', :action => 'index', :project_type => 1 }, :caption => :label_project_plural menu.push :projects, { :controller => 'projects', :action => 'index', :project_type => 1 }, :caption => :label_project_plural
menu.push :developer, {:controller => 'users', :action => 'index', :project_type => 1 } menu.push :developer, {:controller => 'users', :action => 'index', :project_type => 1 }
menu.push :enterprise_into, {:controller=>'projects', :action=>'enterprise_course', :project_type => 0 } menu.push :enterprise_into, {:controller=>'projects', :action=>'enterprise_course', :project_type => 0 }