socialforge/app/controllers/relative_memos_controller.rb

163 lines
5.2 KiB
Ruby
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

class RelativeMemosController < ApplicationController
helper :sort
include SortHelper
helper :apply_project_masters
include ApplyProjectMastersHelper
helper :no_uses
include NoUsesHelper
before_filter :find_memo, :except => [:new, :create]
before_filter :find_osp, :only => [:create]
before_filter :require_login, :only => [:new, :create]
layout 'base_opensource_p'
# GET /open_source_projects
# GET /open_source_projects.json
def index
# per_page_option = 10
#
# @open_source_projects = OpenSourceProject.all
#
# @os_project_count = @open_source_projects.count
# @os_project_pages = Paginator.new @os_project_count, per_page_option, params['page']
#
# @open_source_projects = OpenSourceProject.all
#
# respond_to do |format|
# format.html # index.html.erb
# format.json { render json: @open_source_projects }
# end
end
# GET /open_source_projects/1
# GET /open_source_projects/1.json
REPLIES_PER_PAGE = 10 unless const_defined?(:REPLIES_PER_PAGE)
def show
pre_count = REPLIES_PER_PAGE
# @memo = @memo.root # 取出楼主防止输入帖子id让回复作为主贴显示
@memo.update_column(:viewed_count_local, (@memo.viewed_count_local.to_i + 1))
page = params[:page]
if params[:r] && page.nil?
offset = @memo.children.where("#{Memo.table_name}.id < ?", params[:r].to_i).count
page = 1 + offset / pre_count
else
end
@reply_count = @memo.children.count
@reply_pages = Paginator.new @reply_count, pre_count, page
@replies = @memo.children.
includes(:author, :attachments).
reorder("#{RelativeMemo.table_name}.created_at ASC").
limit(@reply_pages.per_page).
offset(@reply_pages.offset).
all
@mome_new = RelativeMemo.new
# @memo = Memo.find_by_id(params[:id])
# @forum = Forum.find(params[:forum_id])
# @replies = @memo.replies
# @mome_new = Memo.new
respond_to do |format|
format.html # show.html.erb
format.json { render json: @memo }
end
end
# GET /open_source_projects/new
# GET /open_source_projects/new.json
def new
@open_source_project = OpenSourceProject.new
respond_to do |format|
format.html # new.html.erb
format.json { render json: @open_source_project }
end
end
# GET /open_source_projects/1/edit
def edit
@open_source_project = OpenSourceProject.find(params[:id])
end
# POST /open_source_projects
# POST /open_source_projects.json
def create
@memo = RelativeMemo.new(params[:relative_memo])
# @memo.url = "http://forge.trustie.net/open_source_projects"
# @memo.osp_id = params[:open_source_project_id]
@memo.author_id = User.current.id
@memo.save_attachments(params[:attachments] || (params[:relative_memo] && params[:relative_memo][:uploads]))
respond_to do |format|
if @memo.save
RelativeMemoToOpenSourceProject.create(:osp_id => params[:open_source_project_id], :relative_memo_id => @memo.id)
format.html { redirect_to back_memo_url, notice: "#{l :label_memo_create_succ}" }
format.json { render json: @memo, status: :created, location: @memo }
else
flash[:error] = "#{l :label_memo_create_fail}: #{@memo.errors.full_messages[0]}"
# back_error_page = @memo.parent_id.nil? ? forum_path(@forum) : forum_memo_path(@forum, @memo.parent_id)
format.html { redirect_to back_memo_url}#, error: "#{l :label_memo_create_fail}: #{@memo.errors.full_messages[0]}" }
format.json { render json: @memo.errors, status: :unprocessable_entity }
end
end
end
# PUT /open_source_projects/1
# PUT /open_source_projects/1.json
def update
@open_source_project = OpenSourceProject.find(params[:id])
respond_to do |format|
if @open_source_project.update_attributes(params[:open_source_project])
format.html { redirect_to @open_source_project, notice: 'Open source project was successfully updated.' }
format.json { head :no_content }
else
format.html { render action: "edit" }
format.json { render json: @open_source_project.errors, status: :unprocessable_entity }
end
end
end
# DELETE /open_source_projects/1
# DELETE /open_source_projects/1.json
def destroy
@open_source_project = OpenSourceProject.find(params[:id])
@open_source_project.destroy
respond_to do |format|
format.html { redirect_to open_source_projects_url }
format.json { head :no_content }
end
end
private
def find_memo
return unless find_osp
@memo = @open_source_project.topics.find(RelativeMemo.find(params[:id]).root.id)
rescue ActiveRecord::RecordNotFound
render_404
nil
end
def find_osp
@open_source_project = OpenSourceProject.find(params[:open_source_project_id])
rescue ActiveRecord::RecordNotFound
render_404
nil
end
def back_memo_url
open_source_project_relative_memo_path(@open_source_project, (@memo.parent_id.nil? ? @memo : @memo.parent_id))
end
end