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.
		
		
		
		
		
			
		
			
				
					
					
						
							318 lines
						
					
					
						
							10 KiB
						
					
					
				
			
		
		
	
	
							318 lines
						
					
					
						
							10 KiB
						
					
					
				| 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
 | |
|         }
 | |
|       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
 |