diff --git a/app/controllers/contests_controller.rb b/app/controllers/contests_controller.rb
index 7741333a..debda938 100644
--- a/app/controllers/contests_controller.rb
+++ b/app/controllers/contests_controller.rb
@@ -5,7 +5,7 @@ class ContestsController < ApplicationController
menu_item :project, :only => :show_project
menu_item :application, :only => :show_softapplication
menu_item :attendingcontest, :only => :show_attendingcontest
- before_filter :find_contest, :only => [:show_contest, :show_project, :show_softapplication, :show_attendingcontest, :create,:destroy,:more,:back,:add,:add_softapplication,:new,:show_results, :set_reward,
+ before_filter :find_contest, :only => [:show_contest, :show_project, :show_softapplication, :show_attendingcontest, :set_reward_project, :set_reward_softapplication, :create,:destroy,:more,:back,:add,:add_softapplication,:new,:show_results, :set_reward,
:show_contest_project, :show_contest_user, :join_in_contest, :unjoin_in_contest, :new_join,:show_participator, :settings]
# added by fq
@@ -335,7 +335,12 @@ class ContestsController < ApplicationController
end
##取出参赛应用
@softapplication = Softapplication.all
- @contesting_softapplication = @contest.contesting_softapplications.reverse
+ @contesting_softapplication = @contest.contesting_softapplications.
+ joins("LEFT JOIN softapplications ON contesting_softapplications.softapplication_id=softapplications.id").
+ joins("LEFT JOIN (
+ SELECT * FROM seems_rateable_cached_ratings WHERE cacheable_type='Softapplication' AND DIMENSION = 'quality') AS cached
+ ON cached.cacheable_id=softapplications.id").
+ order("cached.avg").reverse_order
@contesting_softapplication = paginateHelper @contesting_softapplication, 10
@@ -350,6 +355,44 @@ class ContestsController < ApplicationController
end
###end
+
+ def set_reward_project
+ @c_p = nil
+ @contesting_project_id = nil
+
+ if params[:set_reward_project][:reward]&&((User.current.id==@contest.author_id)||User.current.admin)
+ # @bid_id = params[:id]
+ @contesting_project_id = params[:set_reward_project][:c_id]
+ @c_p = ContestingProject.find_by_id(@contesting_project_id)
+
+ # 把字段存进表中
+ @c_p.update_reward(params[:set_reward_project][:reward].to_s)
+ end
+
+ respond_to do |format|
+ format.js
+ end
+ end
+
+ def set_reward_softapplication
+ @c_sa = nil
+ @contesting_softapplication_id = nil
+
+ if params[:set_reward_softapplication][:reward]&&((User.current.id==@contest.author_id)||User.current.admin)
+ # @bid_id = params[:id]
+ @contesting_softapplication_id = params[:set_reward_softapplication][:c_id]
+ @c_sa = ContestingSoftapplication.find_by_id(@contesting_softapplication_id)
+
+ # 把字段存进表中
+ @c_sa.update_reward(params[:set_reward_softapplication][:reward].to_s)
+ end
+
+ respond_to do |format|
+ format.js
+ end
+ end
+
+
###添加已创建的参赛项目
def add
project = Project.find(params[:contest])
diff --git a/app/controllers/softapplications_controller.rb b/app/controllers/softapplications_controller.rb
index 9ede5248..6860bfa6 100644
--- a/app/controllers/softapplications_controller.rb
+++ b/app/controllers/softapplications_controller.rb
@@ -100,14 +100,34 @@ class SoftapplicationsController < ApplicationController
# POST /softapplications
# POST /softapplications.json
+ # def create
+ # @softapplication = Softapplication.new(params[:softapplication])
+ # @softapplication.user = User.current
+ # @softapplication.save_attachments(params[:attachments])
+ # respond_to do |format|
+ # if @softapplication.save
+ # format.js
+ # format.html { redirect_to @softapplication, notice: 'Softapplication was successfully created.' }
+ # # format.json { render json: @softapplication, status: :created, location: @softapplication }
+ # else
+ # format.js { render status: 406 }
+ # format.html { render action: "new" }
+ # # format.json { render json: @softapplication.errors, status: :unprocessable_entity }
+ # end
+ # end
+ # end
+
+
+#new changed created function
def create
@softapplication = Softapplication.new(params[:softapplication])
@softapplication.user = User.current
@softapplication.save_attachments(params[:attachments])
respond_to do |format|
if @softapplication.save
+ ContestingSoftapplication.create(:contest_id => params[:contest_id], :softapplication_id => @softapplication.id)
format.js
- format.html { redirect_to @softapplication, notice: 'Softapplication was successfully created.' }
+ format.html { redirect_to show_attendingcontest_contest_path(:id => params[:contest_id]) }
# format.json { render json: @softapplication, status: :created, location: @softapplication }
else
format.js { render status: 406 }
@@ -115,8 +135,13 @@ class SoftapplicationsController < ApplicationController
# format.json { render json: @softapplication.errors, status: :unprocessable_entity }
end
end
+ #关联新建的参赛作品
+
+ # @contesting_softapplication = paginateHelper @contest.contesting_softapplications
+
+
+
end
-
# PUT /softapplications/1
# PUT /softapplications/1.json
def update
diff --git a/app/helpers/contests_helper.rb b/app/helpers/contests_helper.rb
index 36f2351c..fff2f785 100644
--- a/app/helpers/contests_helper.rb
+++ b/app/helpers/contests_helper.rb
@@ -91,6 +91,10 @@ module ContestsHelper
def get_prize(c_project)
c_project.get_reward
end
+
+ def get_prize(c_softapplication)
+ c_softapplication.get_reward
+ end
def count_contest_project
contests = Contest.find(:id)
diff --git a/app/models/contesting_softapplication.rb b/app/models/contesting_softapplication.rb
index 93aea265..f880818d 100644
--- a/app/models/contesting_softapplication.rb
+++ b/app/models/contesting_softapplication.rb
@@ -11,5 +11,18 @@ class ContestingSoftapplication < ActiveRecord::Base
self.create(:user_id => User.current.id, :contest_id => contest_id,
:softapplication_id => softapplication_id, :description => description)
end
+
+ def self.create_work_contesting(contest_id, softapplication_id)
+ self.create(:user_id => User.current.id, :contest_id => contest_id,
+ :softapplication_id => softapplication_id)
+ end
+
+ def update_reward(which)
+ self.update_attribute(:reward,which)
+ end
+
+ def get_reward
+ self.reward
+ end
end
diff --git a/app/models/softapplication.rb b/app/models/softapplication.rb
index 6782b243..3911424e 100644
--- a/app/models/softapplication.rb
+++ b/app/models/softapplication.rb
@@ -1,5 +1,5 @@
class Softapplication < ActiveRecord::Base
- attr_accessible :android_min_version_available, :app_type_id, :app_type_name, :description, :name, :user_id, :contest_id, :application_developers
+ attr_accessible :android_min_version_available, :app_type_id, :app_type_name, :description, :name, :user_id, :contest_id, :application_developers, :deposit_project_url
acts_as_attachable
seems_rateable :allow_update => true, :dimensions => :quality
diff --git a/app/views/contests/set_reward.js.erb b/app/views/contests/set_reward_project.js.erb
similarity index 87%
rename from app/views/contests/set_reward.js.erb
rename to app/views/contests/set_reward_project.js.erb
index d6d8c4f9..c0de3e2e 100644
--- a/app/views/contests/set_reward.js.erb
+++ b/app/views/contests/set_reward_project.js.erb
@@ -1,15 +1,14 @@
$('#reward_result_<%= @contesting_project_id %>').html('<%= j(
-if get_prize(@b_p).nil? or get_prize(@b_p) == ""
+if get_prize(@c_p).nil? or get_prize(@c_p) == ""
if @contest.deadline < Date.today
puts '未评奖'
end
else
- case get_prize(@b_p)
+ case get_prize(@c_p)
when '-1'
image_tag("/images/bid/special_reward.png")
- when '1'
when '0'
image_tag("/images/bid/first_reward.png")
when '1'
@@ -22,7 +21,7 @@ else
image_tag("/images/bid/fifth_reward.png")
when '5'
image_tag("/images/bid/qualified.png")
- end
+ end
end
)
diff --git a/app/views/contests/set_reward_softapplication.js.erb b/app/views/contests/set_reward_softapplication.js.erb
new file mode 100644
index 00000000..a8cf0d48
--- /dev/null
+++ b/app/views/contests/set_reward_softapplication.js.erb
@@ -0,0 +1,30 @@
+$('#reward_result_<%= @contesting_softapplication_id %>').html('<%= j(
+
+if get_prize(@c_sa).nil? or get_prize(@c_sa) == ""
+ if @contest.deadline < Date.today
+ puts '未评奖'
+ end
+else
+
+ case get_prize(@c_sa)
+ when '-1'
+ image_tag("/images/bid/special_reward.png")
+ when '0'
+ image_tag("/images/bid/first_reward.png")
+ when '1'
+ image_tag("/images/bid/second_reward.png")
+ when '2'
+ image_tag("/images/bid/third_reward.png")
+ when '3'
+ image_tag("/images/bid/forth_reward.png")
+ when '4'
+ image_tag("/images/bid/fifth_reward.png")
+ when '5'
+ image_tag("/images/bid/qualified.png")
+ end
+
+end
+)
+%>')
+
+$('#<%= @contesting_softapplication_id %>').hide()
diff --git a/app/views/contests/show_attendingcontest.html.erb b/app/views/contests/show_attendingcontest.html.erb
index 8a00f12a..ad822222 100644
--- a/app/views/contests/show_attendingcontest.html.erb
+++ b/app/views/contests/show_attendingcontest.html.erb
@@ -61,61 +61,59 @@
-
- 温馨提示:如果您希望在我们平台托管参赛数据和代码,请按下面参赛步骤参赛!
+
+ 温馨提示:如果您准备参加竞赛,请点击下面的"新建参赛作品"!
<% if User.current.logged? %>
-
-
-
参赛步骤:
+
+
+ 参加竞赛:
+ <%= link_to '新建参赛作品', "javascript:void(0);", onclick: "$('#put-project-form').toggle();" %>
-
+
+
-
-
-
-
<% end %>
@@ -189,10 +166,63 @@
<% if c_project.project %>
-
- 参赛作品: |
- <%= link_to(c_project.project.name, project_path(c_project.project), :target => '_blank') %> |
-
+
+
参赛作品: <%= link_to(c_project.project.name, project_path(c_project.project), :target => '_blank') %>
+
+
+
+
+ <% if get_prize(c_project).nil? or get_prize(c_project) == "" %>
+ <% if @contest.deadline < Date.today %>
+ <%= l(:label_noawards)%>
+ <% else%>
+ <%= l(:label_noawards_current)%>
+ <% end %>
+ <% else %>
+ <% case get_prize(c_project) %>
+ <% when '-1' %>
+ <%= image_tag("/images/bid/special_reward.png")%>
+ <% when '0' %>
+ <%= image_tag("/images/bid/first_reward.png")%>
+ <% when '1' %>
+ <%= image_tag("/images/bid/second_reward.png")%>
+ <% when '2' %>
+ <%= image_tag("/images/bid/third_reward.png")%>
+ <% when '3' %>
+ <%= image_tag("/images/bid/forth_reward.png")%>
+ <% when '4' %>
+ <%= image_tag("/images/bid/fifth_reward.png")%>
+ <% when '5' %>
+ <%= image_tag("/images/bid/qualified.png")%>
+ <% end %>
+ <% end %>
+
+
+ |
+
+
+ <% if ((User.current.id == @contest.author_id) && (@contest.deadline > Date.today))||User.current.admin %>
+
+ <%= toggle_link '评奖', c_project.id.to_s %>
+
+
+ <%= form_for "set_reward_project",:remote=>true,:url=>set_reward_project_contest_path do |f| %>
+ <%= f.text_field :c_id,:style => "display:none",:value => c_project.id,:size=>"0" %>
+ <%= f.select :reward,"
+
+
+
+
+
+ ".html_safe %>
+ <%= f.submit "提交",:class=>"submit" %>
+ <% end %>
+
+ |
+ <% end %>
+
+
+
@@ -201,11 +231,12 @@
-
- 发布时间: |
- <%= format_time c_project.created_at%> |
+ 参赛时间:<%= format_time c_project.created_at%>
+ 参赛代表:<%= c_project.user.name %>
+
+
+
-
<% end %>
@@ -221,18 +252,75 @@
<%= link_to(c_softapplication.softapplication.name, softapplication_path(c_softapplication.softapplication), :target => '_blank') %> |
-
+
+
- 简介: |
+ 简介: |
<%= c_softapplication.softapplication.description.truncate(90, omission: '...') %> |
-
-
- 发布时间: |
- <%= format_time c_softapplication.created_at %> |
-
-
+
+
+ 参赛时间:<%= format_time c_softapplication.created_at %>
+ 参赛代表:<%= c_softapplication.softapplication.user.name %>
+
+
+
+
+
最终得分:<%= c_softapplication.softapplication.average(:quality).try(:avg).try(:round, 2).to_i.to_s%>分
+
+
+
+
+ <% if get_prize(c_softapplication).nil? or get_prize(c_softapplication) == "" %>
+ <% if @contest.deadline < Date.today %>
+ <%= l(:label_noawards)%>
+ <% else%>
+ <%= l(:label_noawards_current)%>
+ <% end %>
+ <% else %>
+ <% case get_prize(c_softapplication) %>
+ <% when '-1' %>
+ <%= image_tag("/images/bid/special_reward.png")%>
+ <% when '0' %>
+ <%= image_tag("/images/bid/first_reward.png")%>
+ <% when '1' %>
+ <%= image_tag("/images/bid/second_reward.png")%>
+ <% when '2' %>
+ <%= image_tag("/images/bid/third_reward.png")%>
+ <% when '3' %>
+ <%= image_tag("/images/bid/forth_reward.png")%>
+ <% when '4' %>
+ <%= image_tag("/images/bid/fifth_reward.png")%>
+ <% when '5' %>
+ <%= image_tag("/images/bid/qualified.png")%>
+ <% end %>
+ <% end %>
+
+
+ |
+
+
+ <% if ((User.current.id == @contest.author_id) && (@contest.deadline > Date.today))||User.current.admin %>
+
+ <%= toggle_link '评奖', c_softapplication.id.to_s %>
+
+
+ <%= form_for "set_reward_softapplication",:remote=>true,:url=>set_reward_softapplication_contest_path do |f| %>
+ <%= f.text_field :c_id,:style => "display:none",:value => c_softapplication.id,:size=>"0" %>
+ <%= f.select :reward,"
+
+
+
+
+
+ ".html_safe %>
+ <%= f.submit "提交",:class=>"submit" %>
+ <% end %>
+
+
+ <% end %>
+
<% end %>
diff --git a/app/views/softapplications/show.html.erb b/app/views/softapplications/show.html.erb
index 4bd6871a..c077bc82 100644
--- a/app/views/softapplications/show.html.erb
+++ b/app/views/softapplications/show.html.erb
@@ -10,7 +10,6 @@
<%= notice %>
-
@@ -44,8 +43,15 @@
| 开发人员:<%= @softapplication.application_developers %> |
- 平均评分: <%= rating_for @softapplication, :static => true, dimension: :quality, class: 'rateable div_inline' %> |
- 发布时间:<%=format_time @softapplication.created_at %> |
+ 平均评分: <%= rating_for @softapplication, :static => true, dimension: :quality, class: 'rateable div_inline' %> |
+ 发布时间:<%=format_time @softapplication.created_at %> |
+
+
+
+ <% unless @softapplication.deposit_project_url.nil? %>
+ <%= textilizable ("托管项目网址: " + @softapplication.deposit_project_url) %>
+ <% end %>
+ |
@@ -80,13 +86,14 @@
<% end %>
-
-
最终得分
-
<%= rating_for @softapplication, :static => true, dimension: :quality, class: 'rateable div_inline' %>
+
+
最终得分
+
<%=@softapplication.average(:quality).try(:avg).try(:round, 2).to_i.to_s%>分
+
<%= rating_for @softapplication, :static => true, dimension: :quality, class: 'rateable div_inline' %>
-
+
打分总人数
-
<%= @softapplication.raters(:quality).count%>
+
<%= @softapplication.raters(:quality).count%>
diff --git a/app/views/welcome/contest.html.erb b/app/views/welcome/contest.html.erb
index 65c96e4d..ede51bdb 100644
--- a/app/views/welcome/contest.html.erb
+++ b/app/views/welcome/contest.html.erb
@@ -155,7 +155,7 @@
<% if contest.id == 2 or contest.id == 3 or contest.id == 6 %>
(<%= link_to("含#{contest.projects.where('is_public=1').count}个作品", show_attendingcontest_contest_path(contest), :target => "_blank") %>)
<% else %>
-
(<%= link_to("含#{contest.contesting_softapplications.count}个app", show_attendingcontest_contest_path(contest), :target => "_blank") %>)
+
(<%= link_to("含#{contest.contesting_softapplications.count}个作品", show_attendingcontest_contest_path(contest), :target => "_blank") %>)
<% end %>
diff --git a/config/locales/zh.yml b/config/locales/zh.yml
index 219327f4..ffff3086 100644
--- a/config/locales/zh.yml
+++ b/config/locales/zh.yml
@@ -1854,15 +1854,20 @@ zh:
label_release_softapplication: 发布应用
label_upload_softapplication_packets: 上传应用软件包
label_upload_softapplication_photo: 上传产品截图
- label_upload_softapplication_packets_mustpacketed: 应用软件作品必须打包后以压缩包的形式上传,便于上传和下载 ;
- label_upload_softapplication_photo_condition: 应用软件截图需上传4张;格式为gif/jpg/png, 尺寸480*800, 每张小于2M
- label_updated_caution: 注意:若修改应用,则之前上传的软件包和截图都将被删除,请重新上传!
+ label_upload_softapplication_packets_mustpacketed: 作品相关代码及相关说明文件必须打包后以压缩包的形式上传,便于上传和下载 ;
+ label_upload_softapplication_photo_condition: 作品截图需上传0~4张;格式为gif/jpg/png, 每张小于5M
+ label_updated_caution: 注意:若参赛作品,则之前上传的软件包和截图都将被删除,请重新上传!
label_softapplication_name: 应用名称
+ label_work_name: 作品名称
label_softapplication_description: 应用简介
+ label_work_description: 作品简介
label_softapplication_type: 应用分类
+ label_work_type: 作品分类
label_softapplication_version_available: 适配版本
+ label_running_platform: 运行平台
label_softapplication_developer: 上传人员
label_softapplication_developers: 开发人员
+ label_work_deposit_project_url: 托管项目网址
label_softapplication_name_condition: 25个汉字以内(50个字符)
label_user_login_softapplication_board: 您还没有登录,请登录后参与应用评价。
label_contest_description_no: 暂无描述。
@@ -1892,6 +1897,7 @@ zh:
label_relation_files: 关联已有资源
label_contest_settings: 配置竞赛
label_contest_delete: 删除竞赛
+ label_noawards_current: 暂未评奖
# ajax异步验证
modal_valid_passing: 可以使用
diff --git a/config/routes.rb b/config/routes.rb
index 46d710b6..3982aa53 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -67,16 +67,18 @@ RedmineApp::Application.routes.draw do
end
member do
match 'add_softapplication'
- match 'update_contest' , via: [:put]
- match 'show_contest' , via: :get
- match 'show_project' , via: :get
- match 'show_softapplication' , via: :get
- match 'show_attendingcontest' , via: :get
- match 'show_participator' , via: :get
- match 'add' , via: [:get, :post]
- match 'add_softapplication' , via: [:get, :post]
- match 'create' , via: :post
- match 'settings' , via: [:get, :post]
+ match 'update_contest' , via: [:put]
+ match 'show_contest' , via: :get
+ match 'show_project' , via: :get
+ match 'show_softapplication' , via: :get
+ match 'show_attendingcontest' , via: :get
+ match 'show_participator' , via: :get
+ match 'set_reward_project' , via: [:get, :post]
+ match 'set_reward_softapplication' , via: [:get, :post]
+ match 'add' , via: [:get, :post]
+ match 'add_softapplication' , via: [:get, :post]
+ match 'create' , via: :post
+ match 'settings' , via: [:get, :post]
end
end
diff --git a/db/migrate/20140513073801_add_deposit_project_url_to_softapplications.rb b/db/migrate/20140513073801_add_deposit_project_url_to_softapplications.rb
new file mode 100644
index 00000000..dd01cdab
--- /dev/null
+++ b/db/migrate/20140513073801_add_deposit_project_url_to_softapplications.rb
@@ -0,0 +1,5 @@
+class AddDepositProjectUrlToSoftapplications < ActiveRecord::Migration
+ def change
+ add_column :softapplications, :deposit_project_url, :string
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index 74310a94..b5cabfa7 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -11,7 +11,7 @@
#
# It's strongly recommended to check this file into your version control system.
-ActiveRecord::Schema.define(:version => 20140509020307) do
+ActiveRecord::Schema.define(:version => 20140513073801) do
create_table "activities", :force => true do |t|
t.integer "act_id", :null => false
@@ -756,6 +756,7 @@ ActiveRecord::Schema.define(:version => 20140509020307) 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|
@@ -864,8 +865,10 @@ ActiveRecord::Schema.define(:version => 20140509020307) do
add_index "user_grades", ["user_id"], :name => "index_user_grades_on_user_id"
create_table "user_levels", :force => true do |t|
- t.integer "user_id"
- t.integer "level"
+ t.integer "user_id"
+ t.integer "level"
+ t.datetime "created_at", :null => false
+ t.datetime "updated_at", :null => false
end
create_table "user_preferences", :force => true do |t|