diff --git a/app/controllers/attachments_controller.rb b/app/controllers/attachments_controller.rb index ee953e913..2c48857a2 100644 --- a/app/controllers/attachments_controller.rb +++ b/app/controllers/attachments_controller.rb @@ -227,6 +227,8 @@ class AttachmentsController < ApplicationController format.js elsif @attachment.container.is_a?(Message) format.html { redirect_to_referer_or new_board_message_path(@attachment.container) } + elseif @attachment.container.is_a?(BlogComment) + format.html { redirect_to_referer_or user_blog_blog_comment_path(:user_id=>@attachment.container.author.id,:blog_id=>@attachment.container.blog_id,:id=>@attachment.container.id)} elsif @course.nil? format.html { redirect_to_referer_or forum_memo_path(@attachment.container.forum, @attachment.container) } else diff --git a/app/controllers/blog_comments_controller.rb b/app/controllers/blog_comments_controller.rb new file mode 100644 index 000000000..54def4c1a --- /dev/null +++ b/app/controllers/blog_comments_controller.rb @@ -0,0 +1,121 @@ +class BlogCommentsController < ApplicationController + include ApplicationHelper + before_filter :find_user + def index + + end + def create + if User.current.logged? + @article = BlogComment.new + @article.author = User.current + @article.blog_id = params[:blog_id] + @article.safe_attributes = params[:blog_comment] + if request.post? + @article.save_attachments(params[:attachments]) + if @article.save + # 更新kindeditor上传的图片资源所有者 + # if params[:asset_id] + # ids = params[:asset_id].split(',') + # update_kindeditor_assets_owner ids,@article.id,OwnerTypeHelper::BLOGCOMMENT + # end + render_attachment_warning_if_needed(@article) + else + end + redirect_to user_blogs_path(:user_id=>params[:user_id]) + else + respond_to do |format| + format.html { + render :layout => 'new_base_user' + } + end + end + else + redirect_to signin_path + end + end + def new + respond_to do |format| + format.html {render :layout=>'new_base_user'} + end + end + def show + @article = BlogComment.find(params[:id]) + respond_to do |format| + format.html {render :layout=>'new_base_user'} + end + end + def update + @article = BlogComment.find(params[:id]) + @article.safe_attributes = params[:blog_comment] + @article.save_attachments(params[:attachments]) + if @article.save + render_attachment_warning_if_needed(@article) + else + end + redirect_to user_blog_blog_comment_path(:user_id=>params[:user_id],:blog_id=>params[:blog_id],:id=>params[:id]) + end + def destroy + @article = BlogComment.find(params[:id]) + unless @article.children.empty? #如果是文章被删,那么跳转到用户博客界面 + @article.children.delete + @article.delete + redirect_to user_blogs_path(:user_id=>User.current) + else + root = @article.root + @article.delete + redirect_to user_blog_blog_comment_path(:user_id=>root.author_id,:blog_id=>root.blog_id,:id=>root.id) + end + end + + def edit + @article = BlogComment.find(params[:id]) + respond_to do |format| + format.html {render :layout=>'new_base_user'} + end + end + + def quote + @blogComment = BlogComment.find(params[:id]) + @subject = @blogComment.title + @subject = "RE: #{@subject}" unless @subject.starts_with?('RE:') + + @content = "> #{ll(Setting.default_language, :text_user_wrote, @blogComment.author.realname)}\n> " + @temp = BlogComment.new + @temp.content = "
#{ll(Setting.default_language, :text_user_wrote, @blogComment.author.realname)}".html_safe + respond_to do | format| + format.js + end + end + + #回复 + def reply + @article = BlogComment.find(params[:id]).root + @quote = params[:quote][:quote] + @blogComment = BlogComment.new + @blogComment.author = User.current + @blogComment.blog = Blog.find(params[:blog_id]) + params[:blog_comment][:sticky] = params[:blog_comment][:sticky] || 0 + params[:blog_comment][:locked] = params[:blog_comment][:locked] || 0 + @blogComment.safe_attributes = params[:blog_comment] + @blogComment.content = @quote + @blogComment.content + @blogComment.title = "RE: #{@article.title}" unless params[:blog_comment][:title] + @article.children << @blogComment + @user_activity_id = params[:user_activity_id] + + attachments = Attachment.attach_files(@blogComment, params[:attachments]) + render_attachment_warning_if_needed(@blogComment) + #@article.save + # redirect_to user_blogs_path(:user_id=>params[:user_id]) + respond_to do |format| + format.html { redirect_to user_blog_blog_comment_path(:user_id=>@article.author_id,:blog_id=>@article.blog_id,:id=>@article)} + format.js + end + rescue Exception => e #如果上面的代码执行发生异常就捕获 + flash[:notice] = e.message + end + + private + def find_user + @user = User.find(params[:user_id]) + end +end diff --git a/app/controllers/blogs_controller.rb b/app/controllers/blogs_controller.rb new file mode 100644 index 000000000..6be17f1d3 --- /dev/null +++ b/app/controllers/blogs_controller.rb @@ -0,0 +1,43 @@ +class BlogsController < ApplicationController + before_filter :find_blog,:except => [:index,:create,:new] + before_filter :find_user + def index + @articls = @user.blog.articles + @article = BlogComment.new + respond_to do |format| + format.html {render :layout=>'new_base_user'} + end + end + def create + + end + def new + + end + def show + + end + def update + + end + def destory + + end + def edit + + end + private + def find_blog + @blog = Blog.find(params[:blog_id]) + if @blog.nil? + #如果某个user的blog不存在,那么就创建一条 + @blog = Blog.create(:name=>User.find(params[:id]).realname , + :description=>'', + :author_id=>params[:id]) + end + end + + def find_user + @user = User.find(params[:user_id]) + end +end diff --git a/app/helpers/blog_comments_helper.rb b/app/helpers/blog_comments_helper.rb new file mode 100644 index 000000000..2b0c3e5bd --- /dev/null +++ b/app/helpers/blog_comments_helper.rb @@ -0,0 +1,2 @@ +module BlogCommentsHelper +end diff --git a/app/helpers/blogs_helper.rb b/app/helpers/blogs_helper.rb new file mode 100644 index 000000000..cc0dbd200 --- /dev/null +++ b/app/helpers/blogs_helper.rb @@ -0,0 +1,2 @@ +module BlogsHelper +end diff --git a/app/helpers/owner_type_helper.rb b/app/helpers/owner_type_helper.rb index c03f2d19e..7119d4f60 100644 --- a/app/helpers/owner_type_helper.rb +++ b/app/helpers/owner_type_helper.rb @@ -7,4 +7,5 @@ module OwnerTypeHelper BID = 6 JOURNALSFORMESSAGE = 7 HOMEWORKCOMMON = 8 + BLOGCOMMENT=9 end \ No newline at end of file diff --git a/app/models/blog.rb b/app/models/blog.rb new file mode 100644 index 000000000..bd338cdad --- /dev/null +++ b/app/models/blog.rb @@ -0,0 +1,16 @@ +class Blog < ActiveRecord::Base + # attr_accessible :title, :body + include Redmine::SafeAttributes + belongs_to :user + has_many :articles, :class_name => 'BlogComment', :conditions => "#{BlogComment.table_name}.parent_id IS NULL ", :order => "#{BlogComment.table_name}.created_on DESC" + has_many :blog_comments, :dependent => :destroy, :order => "#{BlogComment.table_name}.created_on DESC" + belongs_to :last_comment, :class_name => 'BlogComment', :foreign_key => :last_comment_id + acts_as_tree :dependent => :nullify + #acts_as_list :scope => '(user_id = #{user_id} AND parent_id #{user_id ? = "#{parent_id}" : "IS NULL"})' + acts_as_watchable + + validates :name, presence: true, length: {maximum: 30} + validates :description, length: {maximum: 255} + + safe_attributes 'name', 'description' +end diff --git a/app/models/blog_comment.rb b/app/models/blog_comment.rb new file mode 100644 index 000000000..92970b663 --- /dev/null +++ b/app/models/blog_comment.rb @@ -0,0 +1,24 @@ +class BlogComment < ActiveRecord::Base + # attr_accessible :title, :body + include Redmine::SafeAttributes + belongs_to :blog + belongs_to :author, :class_name => 'User', :foreign_key => 'author_id' + + acts_as_tree :counter_cache => :comments_count, :order => "#{BlogComment.table_name}.sticky desc ,#{BlogComment.table_name}.created_on ASC" + acts_as_attachable + belongs_to :last_reply, :class_name => 'BlogComment', :foreign_key => 'last_comment_id' + + acts_as_watchable + + validates_presence_of :title, :content + validates_length_of :title, :maximum => 255 + #validate :cannot_reply_to_locked_comment, :on => :create + safe_attributes 'title', 'content',"sticky", "locked" + + def deleted_attach_able_by? user + (user && user.logged? && (self.author == user) ) || user.admin? + end + + def project + end +end diff --git a/app/models/user.rb b/app/models/user.rb index d66785460..7aaae3492 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -93,6 +93,7 @@ class User < Principal has_many :changesets, :dependent => :nullify has_one :preference, :dependent => :destroy, :class_name => 'UserPreference' has_one :rss_token, :class_name => 'Token', :conditions => "action='feeds'" + has_one :blog, :class_name => 'Blog', :foreign_key => "author_id" has_one :api_token, :class_name => 'Token', :conditions => "action='api'" belongs_to :auth_source belongs_to :ucourse, :class_name => 'Course', :foreign_key => :id #huang @@ -255,6 +256,18 @@ class User < Principal # count = self.journals_for_messages(:conditions => ["status=? and is_readed = ? " ,1, 0]).count end + def blog + @blog = Blog.where("author_id = #{self.id}").all[0] + if @blog.nil? + #如果某个user的blog不存在,那么就创建一条,并且跳转 + @blog = Blog.create(:name=>(User.find(self.id).realname), + :description=>'', + :author_id=>self.id) + @blog.save + end + @blog + end + # 查询指派给我的缺陷记录 def count_new_issue_assign_to self.issue_assigns diff --git a/app/views/blog_comments/_attachments_links.html.erb b/app/views/blog_comments/_attachments_links.html.erb new file mode 100644 index 000000000..ca0f41d16 --- /dev/null +++ b/app/views/blog_comments/_attachments_links.html.erb @@ -0,0 +1,41 @@ +
#{@blogComment.content.html_safe}