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{
((.|\s)*?)}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