# fq class BidsController < ApplicationController #Added by young menu_item :respond menu_item :project, :only => :show_project #Ended by young before_filter :find_bid, :only => [:show, :show_project, :create, :destroy, :more, :back, :add, :new] helper :watchers def index # Modified by nie # @requirement_title = "4" @offset, @limit = api_offset_and_limit({:limit => 10}) @bids = Bid.visible @bids = @bids.like(params[:name]) if params[:name].present? @bid_count = @bids.count @bid_pages = Paginator.new @bid_count, @limit, params['page'] @offset ||= @bid_pages.reverse_offset #@bids = @bids.offset(@offset).limit(@limit).all.reverse # unless @offset == 0 # @bids = @bids.offset(@offset).limit(@limit).all.reverse # else # limit = @bid_count % @limit # @bids = @bids.offset(@offset).limit(limit).all.reverse # end #added by nie if params[:bid_sort_type].present? case params[:bid_sort_type] when '0' unless @offset == 0 @bids = @bids.offset(@offset).limit(@limit).all.reverse else limit = @bid_count % @limit @bids = @bids.offset(@offset).limit(limit).all.reverse end when '1' unless @offset == 0 @bids = @bids.reorder('bids.commit').offset(@offset).limit(@limit).all.reverse else limit = @bid_count % @limit @bids = @bids.reorder('bids.commit').offset(@offset).limit(limit).all.reverse end when '2' unless @offset == 0 @bids = @bids.offset(@offset).limit(@limit).all.reverse else limit = @bid_count % @limit @bids = @bids.offset(@offset).limit(@limit).all.reverse end end else unless @offset == 0 @bids = @bids.offset(@offset).limit(@limit).all.reverse else limit = @bid_count % @limit @bids = @bids.offset(@offset).limit(limit).all.reverse end end #end # @limit = api_offset_and_limit({:limit => 5}) # @bids = Bid.visible # @bids = @bids.like(params[:name]) if params[:name].present? # @bid_count = @bids.count # @bid_pages = Paginator.new @bid_count, @limit, params['page'] # @offset ||= @bid_pages.reverse_offset # #@bids = @bids.offset(@offset).limit(@limit).all.reverse # unless @offset == 0 # @bids = @bid_count.offset(@offset).limit(@limit).all.reverse # else # limit = @bid_count%@limit # @bids = @bid_count.offset(@offset).limit(limit).all.reverse # end # #end end def show @user = @bid.author @jours = @bid.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] @state = false # # @journals = @bid.journals.includes(:user, :details).reorder("#{Journal.table_name}.id ASC").all # @journals.each_with_index {|j,i| j.indice = i+1} respond_to do |format| format.html { render :layout => 'base_bids' } format.api end end def show_project # flash[:notice] = "" @membership = User.current.memberships.all(:conditions => Project.visible_condition(User.current)) @option = [] @membership.each do |membership| @option << membership.project end # a = [1] # @project = Project.where("id in []", a) @user = @bid.author @bidding_project = @bid.biding_projects respond_to do |format| format.html { render :layout => 'base_bids' } format.api end end ###添加应标项目 def add project = Project.where('name = ?', params[:bid]).first bid_message = params[:bid_for_save][:bid_message] if BidingProject.where("project_id = ? and bid_id = ?", project.id, @bid.id).size == 0 if BidingProject.cerate_bidding(@bid.id, project.id, bid_message) flash[:notice] = l(:label_bidding_succeed) end else flash[:error] = l(:label_bidding_fail) end @bidding_project = @bid.biding_projects respond_to do |format| # format.html { redirect_to_referer_or {render :text => 'Watcher added.', :layout => true}} # format.html format.html { redirect_to :back } format.js #format.api { render_api_ok } end end ## 新建留言 def create if params[:bid_message][:message].size>0 if params[:reference_content] message = params[:bid_message][:message] + "\n" + params[:reference_content] else message = params[:bid_message][:message] end refer_user_id = params[:bid_message][:reference_user_id].to_i @bid.add_jour(User.current, message, refer_user_id) # if a_message.size > 5 # @message = a_message[-5, 5] # else # @message = a_message # end # @message_count = a_message.count end @user = @bid.author @jours = @bid.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] @bid.set_commit(@feedback_count) respond_to do |format| format.js #format.api { render_api_ok } end end ##删除留言 def destroy @user = @bid.author if User.current.admin? || User.current.id == @user.id JournalsForMessage.delete_message(params[:object_id]) end @jours = @bid.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] @bid.set_commit(@feedback_count) # if a_message.size > 5 # @message = a_message[-5, 5] # else # @message = a_message # end # @message_count = a_message.count respond_to do |format| # format.html format.js #format.api { render_api_ok } end end ##引用 def new @jour = JournalsForMessage.find(params[:journal_id]) if params[:journal_id] if @jour user = @jour.user text = @jour.notes else user = @bid.author text = @bid.description end # Replaces pre blocks with [...] text = text.to_s.strip.gsub(%r{
((.|\s)*?)
}m, '[...]') @content = "> #{ll(Setting.default_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 new_bid @bid = Bid.new @bid.safe_attributes = params[:bid] # if params[:bid_title] # # if params[:bid_budget].to_s =~ /^(\d+)$|^(\d+).([0-9]{2})$/ # unless params[:bid_reward_type] == "0" # if params[:bid_deadline].to_s =~ /^[\d]{4}[-][\d]{1,2}[-][\d]{1,2}$/ # bid = Bid.creat_bids(params[:bid_budget], params[:bid_deadline], params[:bid_title] , params[:bid_description], params[:bid_reward_type].to_i) # unless bid.watched_by?(User.current) # if bid.add_watcher(User.current) # flash[:notice] = l(:label_bid_succeed) # end # end # else # flash[:error] = l(:label_wrong_date) # end # else # flash[:error] = "wrong" # end # # else # # flash[:error] = l(:label_wrong_budget) # # end # end # @limit = 5 # @bid_count = Bid.count # @bid_pages = Paginator.new @bid_count, @limit, params['page'] # @offset ||= @bid_pages.offset # @bids = Bid.offset(@offset).limit(@limit).all # respond_to do |format| # # format.html # format.html { redirect_to :back } # format.js # # format.api { render_api_ok } # end end def create_bid @bid = Bid.new @bid.name = params[:bid][:name] @bid.description = params[:bid][:description] @bid.reward_type = params[:bid_reward_type] @bid.budget = params[:bid][:budget] @bid.deadline = params[:bid][:deadline] @bid.author_id = User.current.id @bid.commit = 0 if @bid.save unless @bid.watched_by?(User.current) if @bid.add_watcher(User.current) flash[:notice] = l(:label_bid_succeed) end end redirect_to respond_path(@bid) else @bid.safe_attributes = params[:bid] render :action => 'new_bid' end end def more @jour = @bid.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 = @bid.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_bid if params[:id] @bid = Bid.find(params[:id]) end rescue render_404 end end