You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
357 lines
12 KiB
357 lines
12 KiB
6 years ago
|
class SoftapplicationsController < ApplicationController
|
||
|
layout "contest_base"
|
||
|
before_filter :find_softapplication, only: [:edit, :update, :destroy]
|
||
|
before_filter :editable, only: [:edit, :update]
|
||
|
before_filter :destroyable, only: :destroy
|
||
|
|
||
|
# GET /softapplications
|
||
|
# GET /softapplications.json
|
||
|
def index
|
||
|
@softapplications = Softapplication.all
|
||
|
|
||
|
#new added fenyefunction
|
||
|
@limit = 5
|
||
|
@softapplication_count = @softapplications.count
|
||
|
@softapplication_pages = Paginator.new @softapplication_count, @limit, params['page']
|
||
|
@offset ||= @softapplication_pages.offset
|
||
|
#@softapplications = @softapplications[@offset,@limit]
|
||
|
#new added end
|
||
|
|
||
|
#new added sort
|
||
|
if params[:softapplication_sort_type].present?
|
||
|
case params[:softapplication_sort_type]
|
||
|
when '0'
|
||
|
@softapplications = @softapplications[@offset, @limit]
|
||
|
@s_state = 0
|
||
|
when '1'
|
||
|
@softapplications = @softapplications.sort { |x, y| y[:created_at] <=> x[:created_at]}[@offset, @limit]
|
||
|
@s_state = 1
|
||
|
end
|
||
|
else
|
||
|
@softapplications = @softapplications.sort { |x, y| y[:created_at] <=> x[:created_at]}[@offset, @limit]
|
||
|
@s_state = 1
|
||
|
end
|
||
|
#new added end
|
||
|
|
||
|
respond_to do |format|
|
||
|
format.html # index.html.erb
|
||
|
format.json { render json: @softapplications }
|
||
|
end
|
||
|
end
|
||
|
|
||
|
# GET /softapplications/1
|
||
|
# GET /softapplications/1.json
|
||
|
|
||
|
def percent_of(num, percent)
|
||
|
num.to_f / percent.to_f * 100.0
|
||
|
end
|
||
|
|
||
|
def show
|
||
|
@softapplication = Softapplication.find(params[:id])
|
||
|
#@project = @softapplication.project
|
||
|
# 打分统计
|
||
|
stars_reates = @softapplication.
|
||
|
rates(:quality)
|
||
|
stars_reates_count = stars_reates.count == 0 ? 1 : stars_reates.count
|
||
|
stars_status = stars_reates.select("stars, count(*) as scount").
|
||
|
group("stars")
|
||
|
|
||
|
@stars_status_map = Hash.new(0)
|
||
|
stars_status.each do |star_status|
|
||
|
percent = percent_of(star_status.scount, stars_reates_count).to_f
|
||
|
people = star_status.scount.to_i
|
||
|
@stars_status_map["star#{star_status.stars.to_i}".to_sym] =
|
||
|
people.to_s
|
||
|
end
|
||
|
@jours = @softapplication.journals_for_messages.order('created_on DESC')
|
||
|
@image_results = []
|
||
|
@softapplication.attachments.each do |f|
|
||
|
f.image? ? @image_results << f : @image_results
|
||
|
end
|
||
|
@app_items = []
|
||
|
@softapplication.attachments.each do |f|
|
||
|
f.pack? ? @app_items << f : @app_items
|
||
|
end
|
||
|
@limit = 10
|
||
|
@feedback_count = @jours.count
|
||
|
@feedback_pages = Paginator.new @feedback_count, @limit, params['page']
|
||
|
@offset ||= @feedback_pages.offset
|
||
|
@jour = @jours[@offset, @limit]
|
||
|
@state = false
|
||
|
respond_to do |format|
|
||
|
format.html # show.html.erb
|
||
|
format.json { render json: @softapplication }
|
||
|
end
|
||
|
end
|
||
|
|
||
|
# GET /softapplications/new
|
||
|
# GET /softapplications/new.json
|
||
|
def new
|
||
|
@softapplication = Softapplication.new
|
||
|
|
||
|
#添加当前用户创建过的项目作为托管项目(下拉项目列表)
|
||
|
project = Project.find(params[:user_id])
|
||
|
#end
|
||
|
|
||
|
respond_to do |format|
|
||
|
format.html # new.html.erb
|
||
|
format.json { render json: @softapplication }
|
||
|
end
|
||
|
end
|
||
|
|
||
|
# GET /softapplications/1/edit
|
||
|
def edit
|
||
|
@softapplication = Softapplication.find(params[:id])
|
||
|
|
||
|
@membership = User.current.memberships.all(:conditions => Project.visible_condition(User.current))
|
||
|
@option = []
|
||
|
# @contesting_project_count = @contesting_project_all.count
|
||
|
# @contesting_project_pages = Paginator.new @contesting_project_count, per_page_option, params['page']
|
||
|
@membership.each do |membership|
|
||
|
unless(membership.project.project_type==1)
|
||
|
#拥有编辑项目权限的可操作该项目
|
||
|
if User.current.allowed_to?(:quote_project,membership.project)
|
||
|
@option << membership.project
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
end
|
||
|
|
||
|
# 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
|
||
|
#options = params[:softapplication]
|
||
|
#options[:app_type_name] = params[:other_input] if options[:app_type_name] == "其他" && params[:other_input]
|
||
|
@softapplication = Softapplication.new(params[:softapplication])
|
||
|
@softapplication.user = User.current
|
||
|
#@softapplication.deposit_project = params[:project]
|
||
|
@softapplication.project = Project.find_by_id(params[:project])
|
||
|
@softapplication.app_type_name = params[:other_input] if params[:other_input] != ""
|
||
|
@softapplication.save_attachments(params[:attachments])
|
||
|
respond_to do |format|
|
||
|
if @softapplication.save
|
||
|
ContestingSoftapplication.create(:contest_id => params[:contest_id], :softapplication_id => @softapplication.id)
|
||
|
#ProjectingSoftapplication.create_softapplication_projecting(:project_id => params[:project_id], :softapplication_id => @softapplication.id)
|
||
|
#ProjectingSoftapplication.create_softapplication_projecting(@project.id, softapplication.id)
|
||
|
format.html { redirect_to show_attendingcontest_contest_url(:id => params[:contest_id]), notice: l(:notice_attendingcontest_work_successfully_created) }
|
||
|
# format.json { render json: @softapplication, status: :created, location: @softapplication }
|
||
|
else
|
||
|
#format.js { render status: 406 }
|
||
|
format.html { render action: "contests/show_attendingcontest" }
|
||
|
# 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
|
||
|
# @softapplication = Softapplication.find(params[:id])
|
||
|
#@softapplication.attachments.map{|attach| attach.destroy }
|
||
|
@softapplication.save_attachments(params[:attachments]) if params[:attachments]
|
||
|
#@softapplication.deposit_project = params[:project]
|
||
|
@softapplication.project = Project.find_by_id(params[:project])
|
||
|
|
||
|
@softapplication.name = params[:softapplication][:name]
|
||
|
@softapplication.android_min_version_available = params[:softapplication][:android_min_version_available]
|
||
|
@softapplication.app_type_name = params[:other_input] == "" ? params[:softapplication][:app_type_name] : params[:other_input]
|
||
|
@softapplication.description = params[:softapplication][:description]
|
||
|
@softapplication.application_developers = params[:softapplication][:application_developers]
|
||
|
#@softapplication.app_type_name = params[:other_input] if params[:other_input] != ""
|
||
|
respond_to do |format|
|
||
|
#if @softapplication.update_attributes(params[:softapplication])
|
||
|
if @softapplication.save
|
||
|
format.html { redirect_to @softapplication, notice: l(:notice_softapplication_was_successfully_updated) }
|
||
|
format.json { head :no_content }
|
||
|
else
|
||
|
format.html { render action: "edit" }
|
||
|
format.json { render json: @softapplication.errors, status: :unprocessable_entity }
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def add_attach
|
||
|
@softapplication = Softapplication.find(params[:id])
|
||
|
@softapplication.save_attachments(params[:attachments])
|
||
|
end
|
||
|
|
||
|
# DELETE /softapplications/1
|
||
|
# DELETE /softapplications/1.json
|
||
|
def destroy
|
||
|
# @softapplication = Softapplication.find(params[:id])
|
||
|
@softapplication.destroy
|
||
|
|
||
|
respond_to do |format|
|
||
|
format.html { redirect_to signin_path }
|
||
|
format.json { head :no_content }
|
||
|
end
|
||
|
end
|
||
|
|
||
|
#应用评价涉及到的方法
|
||
|
def new_message
|
||
|
@jour = JournalsForMessage.find(params[:journal_id]) if params[:journal_id]
|
||
|
if @jour
|
||
|
user = @jour.user
|
||
|
text = @jour.notes
|
||
|
else
|
||
|
user = @softapplication.user
|
||
|
text = @softapplication.description
|
||
|
end
|
||
|
text = text.to_s.strip.gsub(%r{<pre>((.|\s)*?)</pre>}m, '[...]')
|
||
|
@content = "> #{ll(User.current.language, :text_user_wrote, user)}\n> "
|
||
|
@content << text.gsub(/(\r?\n|\r\n?)/, "\n> ") + "\n\n"
|
||
|
@id = user.id
|
||
|
rescue ActiveRecord::RecordNotFound
|
||
|
render_404
|
||
|
end
|
||
|
|
||
|
#新建评价
|
||
|
def create_message
|
||
|
|
||
|
if params[:reference_content]
|
||
|
message = params[:softapplication_message][:message] + "\n" + params[:reference_content]
|
||
|
else
|
||
|
message = params[:softapplication_message][:message]
|
||
|
end
|
||
|
refer_user_id = params[:softapplication_message][:reference_user_id].to_i
|
||
|
@softapplication = Softapplication.find(params[:id])
|
||
|
@softapplication.add_jour(User.current, message, refer_user_id)
|
||
|
|
||
|
|
||
|
@user = @softapplication.user
|
||
|
@jours = @softapplication.journals_for_messages.where('m_parent_id IS NULL').order('created_on DESC')
|
||
|
|
||
|
@limit = 10
|
||
|
@feedback_count = @jours.count
|
||
|
@feedback_pages = Paginator.new @feedback_count, @limit, params['page']
|
||
|
@offset ||= @feedback_pages.offset
|
||
|
@jour = @jours[@offset, @limit]
|
||
|
#@softapplication.set_commit(@feedback_count)
|
||
|
|
||
|
respond_to do |format|
|
||
|
format.js
|
||
|
end
|
||
|
|
||
|
end
|
||
|
|
||
|
##删除评价
|
||
|
def destroy_message
|
||
|
@user = @softapplication.user
|
||
|
if User.current.admin? || User.current.id == @user.id
|
||
|
JournalsForMessage.delete_message(params[:object_id])
|
||
|
end
|
||
|
@jours = @softapplication.journals_for_messages.reverse
|
||
|
@limit = 10
|
||
|
@feedback_count = @jours.count
|
||
|
@feedback_pages = Paginator.new @feedback_count, @limit, params['page']
|
||
|
@offset ||= @feedback_pages.offset
|
||
|
@jour = @jours[@offset, @limit]
|
||
|
|
||
|
@softapplication.set_commit(@feedback_count)
|
||
|
respond_to do |format|
|
||
|
format.js
|
||
|
end
|
||
|
end
|
||
|
|
||
|
#
|
||
|
def more
|
||
|
@jour = @softapplication.journals_for_messages
|
||
|
@jour.each_with_index {|j,i| j.indice = i+1}
|
||
|
@state = true
|
||
|
|
||
|
respond_to do |format|
|
||
|
format.html { redirect_to :back }
|
||
|
format.js
|
||
|
#format.api { render_api_ok }
|
||
|
end
|
||
|
end
|
||
|
|
||
|
#
|
||
|
def back
|
||
|
@jour = @softapplication.journals_for_messages
|
||
|
@jour.each_with_index {|j,i| j.indice = i+1}
|
||
|
@state = false
|
||
|
|
||
|
respond_to do |format|
|
||
|
format.html { redirect_to :back }
|
||
|
format.js
|
||
|
#format.api { render_api_ok }
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def search
|
||
|
@softapplications = Softapplication.where("name like '%#{params[:name]}%'")
|
||
|
|
||
|
#new added fenyefunction
|
||
|
@limit = 5
|
||
|
@softapplication_count = @softapplications.count
|
||
|
@softapplication_pages = Paginator.new @softapplication_count, @limit, params['page']
|
||
|
@offset ||= @softapplication_pages.offset
|
||
|
|
||
|
#new added sort
|
||
|
if params[:softapplication_sort_type].present?
|
||
|
case params[:softapplication_sort_type]
|
||
|
when '0'
|
||
|
@softapplications = @softapplications[@offset, @limit]
|
||
|
@s_state = 0
|
||
|
when '1'
|
||
|
@softapplications = @softapplications.sort { |x, y| y[:created_at] <=> x[:created_at]}[@offset, @limit]
|
||
|
@s_state = 1
|
||
|
end
|
||
|
else
|
||
|
@softapplications = @softapplications.sort { |x, y| y[:created_at] <=> x[:created_at]}[@offset, @limit]
|
||
|
@s_state = 1
|
||
|
end
|
||
|
#new added end
|
||
|
|
||
|
respond_to do |format|
|
||
|
format.html
|
||
|
end
|
||
|
end
|
||
|
|
||
|
private
|
||
|
def find_softapplication
|
||
|
@softapplication = Softapplication.find_by_id(params[:id])
|
||
|
end
|
||
|
|
||
|
def editable
|
||
|
unless @softapplication.editable_by? User.current
|
||
|
render_403
|
||
|
return false
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def destroyable
|
||
|
unless @softapplication.destroyable_by? User.current
|
||
|
render_403
|
||
|
return false
|
||
|
end
|
||
|
end
|
||
|
|
||
|
end
|