|
- class SoftapplicationsController < ApplicationController
- 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.0)
- stars_status.each do |star_status|
- percent = percent_of(star_status.scount, stars_reates_count).to_f
- percent_m = format("%.2f", percent)
- @stars_status_map["star#{star_status.stars.to_i}".to_sym] =
- percent_m.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)
- #membership.member_roles.each{|role|
- # if(role.role_id == 3)
- # @option << membership.project
- # end
- #}
-
- #拥有编辑项目权限的可操作该项目
- if User.current.allowed_to?({:controller => "projects", :action => "edit"}, membership.project, :global => false)
- @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
- @softapplication = Softapplication.new(params[:softapplication])
- @softapplication.user = User.current
- #@softapplication.deposit_project = params[:project]
- @softapplication.project = Project.find_by_id(params[:project])
-
- @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_path(: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: "new" }
- # 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])
- #@softapplication.deposit_project = params[:project]
- @softapplication.project = Project.find_by_id(params[:project])
- respond_to do |format|
- if @softapplication.update_attributes(params[:softapplication])
- 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 home_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
-
- 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
|