diff --git a/app/controllers/artists_controller.rb b/app/controllers/artists_controller.rb index 883e7de43..1bdef22c1 100644 --- a/app/controllers/artists_controller.rb +++ b/app/controllers/artists_controller.rb @@ -1,16 +1,20 @@ class ArtistsController < ApplicationController + respond_to :html, :xml, :json before_filter :member_only, :except => [:index, :show] def new @artist = Artist.new_with_defaults(params) + respond_with(@artist) end def edit @artist = Artist.find(params[:id]) + respond_with(@artist) end def index @artists = Artist.build_relation(params).paginate(:per_page => 25, :page => params[:page]) + respond_with(@artists) end def show @@ -18,38 +22,26 @@ class ArtistsController < ApplicationController if @artist @posts = Danbooru.config.select_posts_visible_to_user(CurrentUser.user, Post.find_by_tags(@artist.name, :limit => 6)) - else - redirect_to new_artist_path(params[:name]) end + + respond_with(@artist) end def create @artist = Artist.create(params[:artist]) - - if @artist.errors.empty? - redirect_to artist_path(@artist), :notice => "Artist created" - else - flash[:notice] = "There were errors" - render :action => "new" - end + respond_with(@artist) end def update @artist = Artist.find(params[:id]) @artist.update_attributes(params[:artist]) - - if @artist.errors.empty? - redirect_to artist_path(@artist), :notice => "Artist updated" - else - flash[:notice] = "There were errors" - render :action => "edit" - end + respond_with(@artist) end def revert @artist = Artist.find(params[:id]) @version = ArtistVersion.find(params[:version_id]) @artist.revert_to!(@version) - redirect_to artist_path(@artist), :notice => "Artist updated" + respond_with(@artist) end end diff --git a/app/controllers/comments_controller.rb b/app/controllers/comments_controller.rb index 3de1d1d15..5c83f3d84 100644 --- a/app/controllers/comments_controller.rb +++ b/app/controllers/comments_controller.rb @@ -3,7 +3,11 @@ class CommentsController < ApplicationController before_filter :member_only, :only => [:update, :create] def index - @posts = Post.commented_before(params[:before_date] || Time.now).limit(8) + if params[:group_by] == "post" + index_by_post + else + index_by_comment + end end def update @@ -21,8 +25,22 @@ class CommentsController < ApplicationController format.html do redirect_to post_path(@comment.post), :notice => "Comment posted" end - - format.js + end + end + +private + def index_by_post + @posts = Post.find_by_tags(params[:tags]).commented_before(params[:before_date] || Time.now).limit(8) + respond_with(@posts) do |format| + format.html {render :action => "index_by_post"} + end + end + + def index_by_comment + @search = Comment.search(params[:search]) + @comments = @search.paginate(:page => params[:page]) + respond_with(@comments) do |format| + format.html {render :action => "index_by_comment"} end end end diff --git a/app/controllers/forum_posts_controller.rb b/app/controllers/forum_posts_controller.rb index f57d74714..8c7b87779 100644 --- a/app/controllers/forum_posts_controller.rb +++ b/app/controllers/forum_posts_controller.rb @@ -15,7 +15,8 @@ class ForumPostsController < ApplicationController end def index - @forum_posts = ForumPost.search(params[:search]) + @search = ForumPost.search(params[:search]) + @forum_posts = @search.paginate(:page => params[:page], :order => "id DESC") respond_with(@forum_posts) end @@ -25,7 +26,7 @@ class ForumPostsController < ApplicationController end def create - @forum_post = ForumPost.new(params[:forum_post]) + @forum_post = ForumPost.create(params[:forum_post]) respond_with(@forum_post) end diff --git a/app/models/forum_post.rb b/app/models/forum_post.rb index 16c4a8484..8428b41b4 100644 --- a/app/models/forum_post.rb +++ b/app/models/forum_post.rb @@ -7,7 +7,7 @@ class ForumPost < ActiveRecord::Base after_save :update_topic_updated_at validates_presence_of :body, :creator_id scope :body_matches, lambda {|body| where(["text_index @@ plainto_tsquery(?)", body])} - search_methods :body_matches + search_method :body_matches def editable_by?(user) creator_id == user.id || user.is_moderator? diff --git a/app/models/user.rb b/app/models/user.rb index 7b38b1ecf..60bf8532b 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -186,7 +186,8 @@ class User < ActiveRecord::Base return false unless is_privileged? newest_topic = ForumPost.first(:order => "updated_at desc", :select => "updated_at") return false if newest_topic.nil? - return newest_topic.updated_at > user.last_forum_read_at + return true if last_forum_read_at.nil? + return newest_topic.updated_at > last_forum_read_at end end diff --git a/app/views/comments/index_by_comment.html.erb b/app/views/comments/index_by_comment.html.erb new file mode 100644 index 000000000..d55ac72d7 --- /dev/null +++ b/app/views/comments/index_by_comment.html.erb @@ -0,0 +1,7 @@ +
| Topic | +Excerpt | +Creator | +Date | +
|---|---|---|---|
| <%= forum_post.topic.title %> | +<%= truncate forum_post.body, :length => 50 %> | +<%= forum_post.creator.name %> | +<%= forum_post.created_at %> | +