发帖内容验证不通过不会丢失信息了,加上了所有验证
This commit is contained in:
parent
00ded2bc38
commit
4f5eff09c8
|
@ -12,6 +12,42 @@ class ForumsController < ApplicationController
|
||||||
|
|
||||||
PageLimit = 20
|
PageLimit = 20
|
||||||
|
|
||||||
|
def create_memo
|
||||||
|
@memo = Memo.new(params[:memo])
|
||||||
|
@memo.forum_id = @forum.id
|
||||||
|
@memo.author_id = User.current.id
|
||||||
|
|
||||||
|
@memo.save_attachments(params[:attachments] || (params[:memo] && params[:memo][:uploads]))
|
||||||
|
|
||||||
|
respond_to do |format|
|
||||||
|
if @memo.save
|
||||||
|
format.html { redirect_to (forum_memo_path(@forum, (@memo.parent_id.nil? ? @memo : @memo.parent_id))), notice: "#{l :label_memo_create_succ}" }
|
||||||
|
format.json { render json: @memo, status: :created, location: @memo }
|
||||||
|
else
|
||||||
|
sort_init 'updated_at', 'desc'
|
||||||
|
sort_update 'created_at' => "#{Memo.table_name}.created_at",
|
||||||
|
'replies' => "#{Memo.table_name}.replies_count",
|
||||||
|
'updated_at' => "COALESCE (last_replies_memos.created_at, #{Memo.table_name}.created_at)"
|
||||||
|
|
||||||
|
@topic_count = @forum.topics.count
|
||||||
|
@topic_pages = Paginator.new @topic_count, per_page_option, params['page']
|
||||||
|
@memos = @forum.topics.
|
||||||
|
reorder("#{Memo.table_name}.sticky DESC").
|
||||||
|
includes(:last_reply).
|
||||||
|
limit(@topic_pages.per_page).
|
||||||
|
offset(@topic_pages.offset).
|
||||||
|
order(sort_clause).
|
||||||
|
preload(:author, {:last_reply => :author}).
|
||||||
|
all
|
||||||
|
|
||||||
|
flash.now[: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 { render action: :show, layout: 'base_forums' }#, error: "#{l :label_memo_create_fail}: #{@memo.errors.full_messages[0]}" }
|
||||||
|
format.json { render json: @memo.errors, status: :unprocessable_entity }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def index
|
def index
|
||||||
@offset, @limit = api_offset_and_limit({:limit => 10})
|
@offset, @limit = api_offset_and_limit({:limit => 10})
|
||||||
@forums_all = Forum.all
|
@forums_all = Forum.all
|
||||||
|
|
|
@ -47,7 +47,30 @@ class MemosController < ApplicationController
|
||||||
else
|
else
|
||||||
flash[:error] = "#{l :label_memo_create_fail}: #{@memo.errors.full_messages[0]}"
|
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)
|
# back_error_page = @memo.parent_id.nil? ? forum_path(@forum) : forum_memo_path(@forum, @memo.parent_id)
|
||||||
format.html { redirect_to back_memo_or_forum_url}#, error: "#{l :label_memo_create_fail}: #{@memo.errors.full_messages[0]}" }
|
pre_count = REPLIES_PER_PAGE
|
||||||
|
|
||||||
|
@memo_new = @memo.dup
|
||||||
|
@memo = @memo.root # 取出楼主,防止输入帖子id让回复作为主贴显示
|
||||||
|
@memo.update_column(:viewed_count, (@memo.viewed_count.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("#{Memo.table_name}.created_at ASC").
|
||||||
|
limit(@reply_pages.per_page).
|
||||||
|
offset(@reply_pages.offset).
|
||||||
|
all
|
||||||
|
|
||||||
|
format.html { render action: :show }#, error: "#{l :label_memo_create_fail}: #{@memo.errors.full_messages[0]}" }
|
||||||
|
# format.html { redirect_to back_memo_or_forum_url}#, error: "#{l :label_memo_create_fail}: #{@memo.errors.full_messages[0]}" }
|
||||||
format.json { render json: @memo.errors, status: :unprocessable_entity }
|
format.json { render json: @memo.errors, status: :unprocessable_entity }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -76,7 +99,7 @@ class MemosController < ApplicationController
|
||||||
offset(@reply_pages.offset).
|
offset(@reply_pages.offset).
|
||||||
all
|
all
|
||||||
|
|
||||||
@mome_new = Memo.new
|
@memo_new = Memo.new
|
||||||
|
|
||||||
|
|
||||||
# @memo = Memo.find_by_id(params[:id])
|
# @memo = Memo.find_by_id(params[:id])
|
||||||
|
|
|
@ -4,9 +4,10 @@ class Memo < ActiveRecord::Base
|
||||||
belongs_to :author, :class_name => "User", :foreign_key => 'author_id'
|
belongs_to :author, :class_name => "User", :foreign_key => 'author_id'
|
||||||
|
|
||||||
validates_presence_of :author_id, :forum_id, :subject
|
validates_presence_of :author_id, :forum_id, :subject
|
||||||
#validates :content, presence: true
|
# 若是主题帖,则内容可以是空
|
||||||
|
validates :content, presence: true, if: Proc.new{|o| !o.parent_id.nil? }
|
||||||
validates_length_of :subject, maximum: 50
|
validates_length_of :subject, maximum: 50
|
||||||
#validates_length_of :content, maximum: 3072
|
validates_length_of :content, maximum: 3072
|
||||||
validate :cannot_reply_to_locked_topic, :on => :create
|
validate :cannot_reply_to_locked_topic, :on => :create
|
||||||
|
|
||||||
acts_as_tree :counter_cache => :replies_count, :order => "#{Memo.table_name}.created_at ASC"
|
acts_as_tree :counter_cache => :replies_count, :order => "#{Memo.table_name}.created_at ASC"
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<div id="add-memo" class='lz' style="display: none; padding: 20px;">
|
<div id="add-memo" class='lz' style="display: none; padding: 20px;">
|
||||||
<h3><%=l(:label_memo_new)%></h3>
|
<h3><%=l(:label_memo_new)%></h3>
|
||||||
<% if User.current.logged? %>
|
<% if User.current.logged? %>
|
||||||
<%= labelled_form_for(@memo, :url => forum_memos_path(@forum), :html => {:multipart => true} ) do |f| %>
|
<%= labelled_form_for(@memo, :url => create_memo_forum_path(@forum), :html => {:multipart => true} ) do |f| %>
|
||||||
<% if @memo.errors.any? %>
|
<% if @memo.errors.any? %>
|
||||||
<div id="error_explanation">
|
<div id="error_explanation">
|
||||||
<h2><%= pluralize(@memo.errors.count, "error") %> prohibited this memo from being saved:</h2>
|
<h2><%= pluralize(@memo.errors.count, "error") %> prohibited this memo from being saved:</h2>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<%= form_for(@mome_new, url: forum_memos_path, :html => {:multipart => true}) do |f| %>
|
<%= form_for(@memo_new, url: forum_memos_path, :html => {:multipart => true}) do |f| %>
|
||||||
<%= f.hidden_field :subject, :required => true, value: @memo.subject %>
|
<%= f.hidden_field :subject, :required => true, value: @memo.subject %>
|
||||||
<%= f.hidden_field :forum_id, :required => true, value: @memo.forum_id %>
|
<%= f.hidden_field :forum_id, :required => true, value: @memo.forum_id %>
|
||||||
<%= f.hidden_field :parent_id, :required => true, value: @memo.id %>
|
<%= f.hidden_field :parent_id, :required => true, value: @memo.id %>
|
||||||
|
|
|
@ -27,6 +27,7 @@ RedmineApp::Application.routes.draw do
|
||||||
match 'search_forum', :via => [:get, :post]
|
match 'search_forum', :via => [:get, :post]
|
||||||
end
|
end
|
||||||
member do
|
member do
|
||||||
|
post 'create_memo'
|
||||||
match 'search_memo', :via => [:get, :post]
|
match 'search_memo', :via => [:get, :post]
|
||||||
end
|
end
|
||||||
resources :memos do
|
resources :memos do
|
||||||
|
|
Loading…
Reference in New Issue