socialforge/app/controllers/bids_controller.rb

251 lines
6.9 KiB
Ruby
Raw Normal View History

2013-08-04 10:59:25 +08:00
# fq
2013-08-01 10:33:49 +08:00
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]
2013-08-01 10:33:49 +08:00
helper :watchers
def index
2013-08-06 21:43:06 +08:00
# Modified by nie
# @requirement_title = "4"
2013-08-15 18:50:44 +08:00
@offset, @limit = api_offset_and_limit({:limit => 10})
2013-08-06 21:43:06 +08:00
@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']
2013-08-19 17:28:59 +08:00
@offset ||= @bid_pages.reverse_offset
2013-08-06 21:43:06 +08:00
#@bids = @bids.offset(@offset).limit(@limit).all.reverse
unless @offset == 0
2013-08-06 21:43:06 +08:00
@bids = @bids.offset(@offset).limit(@limit).all.reverse
else
2013-08-06 21:43:06 +08:00
limit = @bid_count % @limit
@bids = @bids.offset(@offset).limit(limit).all.reverse
end
2013-08-08 10:04:44 +08:00
# @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
2013-08-01 10:33:49 +08:00
end
def show
@user = @bid.author
2013-08-15 09:54:08 +08:00
@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
2013-08-01 10:33:49 +08:00
#
# @journals = @bid.journals.includes(:user, :details).reorder("#{Journal.table_name}.id ASC").all
2013-08-15 09:54:08 +08:00
# @journals.each_with_index {|j,i| j.indice = i+1}
2013-08-01 10:33:49 +08:00
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)
2013-08-01 10:33:49 +08:00
@user = @bid.author
@bidding_project = @bid.biding_projects
respond_to do |format|
format.html {
render :layout => 'base_bids'
}
format.api
end
end
2013-08-08 10:04:44 +08:00
###添加应标项目
2013-08-01 10:33:49 +08:00
def add
project = Project.where('name = ?', params[:bid]).first
2013-08-01 10:33:49 +08:00
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
2013-08-01 10:33:49 +08:00
@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 }
2013-08-01 10:33:49 +08:00
format.js
#format.api { render_api_ok }
end
end
2013-08-08 10:04:44 +08:00
## 新建留言
2013-08-01 10:33:49 +08:00
def create
2013-08-08 10:04:44 +08:00
2013-08-15 09:54:08 +08:00
if params[:bid_message][:message].size>0
if params[:reference_content]
message = params[:reference_content] + params[:bid_message][:message]
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)
2013-08-01 10:33:49 +08:00
# if a_message.size > 5
# @message = a_message[-5, 5]
# else
# @message = a_message
# end
# @message_count = a_message.count
end
2013-08-15 09:54:08 +08:00
@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)
2013-08-01 10:33:49 +08:00
respond_to do |format|
format.js
#format.api { render_api_ok }
end
2013-08-08 10:04:44 +08:00
2013-08-01 10:33:49 +08:00
end
2013-08-08 10:04:44 +08:00
##删除留言
2013-08-01 10:33:49 +08:00
def destroy
JournalsForMessage.delete_message(params[:object_id])
2013-08-15 09:54:08 +08:00
@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)
2013-08-01 10:33:49 +08:00
# 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
2013-08-01 10:33:49 +08:00
format.js
#format.api { render_api_ok }
end
end
2013-08-08 10:04:44 +08:00
##引用
2013-08-01 10:33:49 +08:00
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{<pre>((.|\s)*?)</pre>}m, '[...]')
2013-08-15 09:54:08 +08:00
@content = "> #{ll(Setting.default_language, :text_user_wrote, user)}\n> "
2013-08-01 10:33:49 +08:00
@content << text.gsub(/(\r?\n|\r\n?)/, "\n> ") + "\n\n"
@id = user.id
2013-08-01 10:33:49 +08:00
rescue ActiveRecord::RecordNotFound
render_404
end
2013-08-08 10:04:44 +08:00
##新建需求
2013-08-01 10:33:49 +08:00
def new_bid
if params[:bid_title]
if params[:bid_budget].to_s =~ /^(\d+)$|^(\d+).([0-9]{2})$/
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])
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] = 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
2013-08-01 10:33:49 +08:00
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])
2013-08-01 10:33:49 +08:00
end
rescue
render_404
end
end