diff --git a/app/controllers/artists_controller.rb b/app/controllers/artists_controller.rb index c54d68754..4c707cf73 100644 --- a/app/controllers/artists_controller.rb +++ b/app/controllers/artists_controller.rb @@ -43,7 +43,7 @@ class ArtistsController < ApplicationController end def show - @artist = Artist.find(params[:id]) + @current_item = @artist = Artist.find(params[:id]) @post_set = PostSets::Artist.new(@artist) respond_with(@artist) end diff --git a/app/controllers/bans_controller.rb b/app/controllers/bans_controller.rb index 3a8b1645e..94db739e3 100644 --- a/app/controllers/bans_controller.rb +++ b/app/controllers/bans_controller.rb @@ -19,7 +19,7 @@ class BansController < ApplicationController end def show - @ban = Ban.find(params[:id]) + @current_item = @ban = Ban.find(params[:id]) respond_with(@ban) end diff --git a/app/controllers/bulk_update_requests_controller.rb b/app/controllers/bulk_update_requests_controller.rb index 0fcb3ff8d..0b982152a 100644 --- a/app/controllers/bulk_update_requests_controller.rb +++ b/app/controllers/bulk_update_requests_controller.rb @@ -15,7 +15,7 @@ class BulkUpdateRequestsController < ApplicationController end def show - @bulk_update_request = BulkUpdateRequest.find(params[:id]) + @current_item = @bulk_update_request = BulkUpdateRequest.find(params[:id]) respond_with(@bulk_update_request) end diff --git a/app/controllers/dmails_controller.rb b/app/controllers/dmails_controller.rb index d76e19985..ee72408de 100644 --- a/app/controllers/dmails_controller.rb +++ b/app/controllers/dmails_controller.rb @@ -24,7 +24,7 @@ class DmailsController < ApplicationController end def show - @dmail = Dmail.find(params[:id]) + @current_item = @dmail = Dmail.find(params[:id]) check_privilege(@dmail) @dmail.mark_as_read! respond_with(@dmail) diff --git a/app/controllers/favorite_groups_controller.rb b/app/controllers/favorite_groups_controller.rb index c7c5129d1..b7598a1be 100644 --- a/app/controllers/favorite_groups_controller.rb +++ b/app/controllers/favorite_groups_controller.rb @@ -8,7 +8,7 @@ class FavoriteGroupsController < ApplicationController end def show - @favorite_group = FavoriteGroup.find(params[:id]) + @current_item = @favorite_group = FavoriteGroup.find(params[:id]) check_read_privilege(@favorite_group) @post_set = PostSets::FavoriteGroup.new(@favorite_group, params[:page]) respond_with(@favorite_group) diff --git a/app/controllers/forum_topics_controller.rb b/app/controllers/forum_topics_controller.rb index 5a14f0880..248734d2b 100644 --- a/app/controllers/forum_topics_controller.rb +++ b/app/controllers/forum_topics_controller.rb @@ -24,7 +24,7 @@ class ForumTopicsController < ApplicationController params[:search][:order] ||= "sticky" if request.format == Mime::Type.lookup("text/html") params[:limit] ||= 40 - @forum_topics = ForumTopic.active.paginated_search(params) + @forum_topics = ForumTopic.paginated_search(params) @forum_topics = @forum_topics.includes(:creator, :updater).load if request.format.html? @forum_topics = @forum_topics.includes(:creator, :original_post).load if request.format.atom? @@ -32,6 +32,7 @@ class ForumTopicsController < ApplicationController end def show + @current_item = @forum_topic if request.format == Mime::Type.lookup("text/html") @forum_topic.mark_as_read!(CurrentUser.user) end diff --git a/app/controllers/pools_controller.rb b/app/controllers/pools_controller.rb index 9fdbf748f..ad2ec943c 100644 --- a/app/controllers/pools_controller.rb +++ b/app/controllers/pools_controller.rb @@ -37,7 +37,7 @@ class PoolsController < ApplicationController def show limit = params[:limit].presence || CurrentUser.user.per_page - @pool = Pool.find(params[:id]) + @current_item = @pool = Pool.find(params[:id]) @posts = @pool.posts.paginate(params[:page], limit: limit, count: @pool.post_count) respond_with(@pool) end diff --git a/app/controllers/posts_controller.rb b/app/controllers/posts_controller.rb index 2b0be440b..d1267d1db 100644 --- a/app/controllers/posts_controller.rb +++ b/app/controllers/posts_controller.rb @@ -19,7 +19,7 @@ class PostsController < ApplicationController end def show - @post = Post.find(params[:id]) + @current_item = @post = Post.find(params[:id]) @comments = @post.comments @comments = @comments.includes(:creator) diff --git a/app/controllers/tag_aliases_controller.rb b/app/controllers/tag_aliases_controller.rb index acc86b969..7f6ae076c 100644 --- a/app/controllers/tag_aliases_controller.rb +++ b/app/controllers/tag_aliases_controller.rb @@ -3,7 +3,7 @@ class TagAliasesController < ApplicationController respond_to :html, :xml, :json, :js def show - @tag_alias = TagAlias.find(params[:id]) + @current_item = @tag_alias = TagAlias.find(params[:id]) respond_with(@tag_alias) end diff --git a/app/controllers/tag_implications_controller.rb b/app/controllers/tag_implications_controller.rb index 0b3f1f077..fab6d579d 100644 --- a/app/controllers/tag_implications_controller.rb +++ b/app/controllers/tag_implications_controller.rb @@ -3,7 +3,7 @@ class TagImplicationsController < ApplicationController respond_to :html, :xml, :json, :js def show - @tag_implication = TagImplication.find(params[:id]) + @current_item = @tag_implication = TagImplication.find(params[:id]) respond_with(@tag_implication) end diff --git a/app/controllers/tags_controller.rb b/app/controllers/tags_controller.rb index 4a3cd5665..aac893786 100644 --- a/app/controllers/tags_controller.rb +++ b/app/controllers/tags_controller.rb @@ -3,7 +3,7 @@ class TagsController < ApplicationController respond_to :html, :xml, :json def edit - @tag = Tag.find(params[:id]) + @current_item = @tag = Tag.find(params[:id]) check_privilege(@tag) respond_with(@tag) end @@ -26,7 +26,7 @@ class TagsController < ApplicationController end def show - @tag = Tag.find(params[:id]) + @current_item = @tag = Tag.find(params[:id]) respond_with(@tag) end diff --git a/app/controllers/uploads_controller.rb b/app/controllers/uploads_controller.rb index 072e7341c..f3e772c24 100644 --- a/app/controllers/uploads_controller.rb +++ b/app/controllers/uploads_controller.rb @@ -29,7 +29,7 @@ class UploadsController < ApplicationController end def show - @upload = Upload.find(params[:id]) + @current_item = @upload = Upload.find(params[:id]) respond_with(@upload) do |format| format.html do if @upload.is_completed? && @upload.post_id diff --git a/app/controllers/user_feedbacks_controller.rb b/app/controllers/user_feedbacks_controller.rb index dfd9b94c9..3f77f00e1 100644 --- a/app/controllers/user_feedbacks_controller.rb +++ b/app/controllers/user_feedbacks_controller.rb @@ -14,7 +14,7 @@ class UserFeedbacksController < ApplicationController end def show - @user_feedback = UserFeedback.visible.find(params[:id]) + @current_item = @user_feedback = UserFeedback.visible.find(params[:id]) respond_with(@user_feedback) end diff --git a/app/controllers/user_name_change_requests_controller.rb b/app/controllers/user_name_change_requests_controller.rb index 40df71d1b..e4c58c699 100644 --- a/app/controllers/user_name_change_requests_controller.rb +++ b/app/controllers/user_name_change_requests_controller.rb @@ -14,7 +14,7 @@ class UserNameChangeRequestsController < ApplicationController end def show - @change_request = UserNameChangeRequest.find(params[:id]) + @current_item = @change_request = UserNameChangeRequest.find(params[:id]) check_privileges!(@change_request) respond_with(@change_request) end diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 66d524cfd..eea6fff76 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -43,7 +43,7 @@ class UsersController < ApplicationController end def show - @user = User.find(params[:id]) + @current_item = @user = User.find(params[:id]) respond_with(@user, methods: @user.full_attributes) end diff --git a/app/controllers/wiki_page_versions_controller.rb b/app/controllers/wiki_page_versions_controller.rb index 112960d2d..8a7fa7273 100644 --- a/app/controllers/wiki_page_versions_controller.rb +++ b/app/controllers/wiki_page_versions_controller.rb @@ -8,7 +8,7 @@ class WikiPageVersionsController < ApplicationController end def show - @wiki_page_version = WikiPageVersion.find(params[:id]) + @current_item = @wiki_page_version = WikiPageVersion.find(params[:id]) respond_with(@wiki_page_version) end diff --git a/app/controllers/wiki_pages_controller.rb b/app/controllers/wiki_pages_controller.rb index 10a50f0d3..34bc094e2 100644 --- a/app/controllers/wiki_pages_controller.rb +++ b/app/controllers/wiki_pages_controller.rb @@ -30,7 +30,7 @@ class WikiPagesController < ApplicationController def show @wiki_page, found_by = WikiPage.find_by_id_or_title(params[:id]) - + @current_item = @wiki_page if request.format.html? && @wiki_page.blank? && found_by == :title @wiki_page = WikiPage.new(title: params[:id]) respond_with @wiki_page, status: 404 diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index e9bf75873..d67633499 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -202,10 +202,13 @@ module ApplicationHelper render "table_builder/table", table: table end - def body_attributes(user = CurrentUser.user) - attributes = %i[id name level level_string theme] + User::BOOLEAN_ATTRIBUTES.map(&:to_sym) - attributes += User::Roles.map { |role| :"is_#{role}?" } - + def body_attributes(user = CurrentUser.user, current_item = nil) + user_attributes = %i[id name level level_string theme] + User::BOOLEAN_ATTRIBUTES.map(&:to_sym) + user_attributes += User::Roles.map { |role| :"is_#{role}?" } + mapped_user_attributes = data_attributes_for(user, "current-user", user_attributes) + model_attributes = (!current_item.nil? ? (!current_item.id.nil? ? [:id] : [] ) + current_item.html_data_attributes : []) + mapped_model_attributes = (!current_item.nil? ? data_attributes_for(current_item, current_item.model_name.singular.dasherize, model_attributes) : {} ) + all_mapped_attributes = mapped_user_attributes.merge(mapped_model_attributes) controller_param = params[:controller].parameterize.dasherize action_param = params[:action].parameterize.dasherize @@ -216,17 +219,34 @@ module ApplicationHelper controller: controller_param, action: action_param, layout: controller.class.send(:_layout), - **data_attributes_for(user, "user", attributes) + **all_mapped_attributes } } end def data_attributes_for(record, prefix, attributes) attributes.map do |attr| - name = attr.to_s.dasherize.delete("?") - value = record.send(attr) - - [:"#{prefix}-#{name}", value] + if attr.kind_of?(Array) + name = attr.map {|sym| sym.to_s.dasherize.delete("?")}.join('-') + value = record + attr.each do |sym| + value = value.send(sym) + if value.nil? + break + end + end + else + name = attr.to_s.dasherize.delete("?") + value = record.send(attr) + end + if value.nil? + value = "null" + end + if prefix.length == 0 + [:"#{name}", value] + else + [:"#{prefix}-#{name}", value] + end end.to_h end diff --git a/app/helpers/artist_commentary_versions_helper.rb b/app/helpers/artist_commentary_versions_helper.rb new file mode 100644 index 000000000..679cb991c --- /dev/null +++ b/app/helpers/artist_commentary_versions_helper.rb @@ -0,0 +1,6 @@ +module ArtistCommentaryVersionsHelper + def artist_commentary_versions_listing_type + params.dig(:search, :post_id).present? ? :revert : :standard + end + +end diff --git a/app/helpers/note_versions_helper.rb b/app/helpers/note_versions_helper.rb index e007faba1..0c3722c96 100644 --- a/app/helpers/note_versions_helper.rb +++ b/app/helpers/note_versions_helper.rb @@ -1,4 +1,8 @@ module NoteVersionsHelper + def note_versions_listing_type + (params.dig(:search, :post_id).present? || params.dig(:search, :note_id).present?) && CurrentUser.is_member? ? :revert : :standard + end + def note_version_body_diff_info(note_version) previous = note_version.previous if previous.nil? diff --git a/app/helpers/pool_versions_helper.rb b/app/helpers/pool_versions_helper.rb new file mode 100644 index 000000000..c52d6f44c --- /dev/null +++ b/app/helpers/pool_versions_helper.rb @@ -0,0 +1,6 @@ +module PoolVersionsHelper + def pool_versions_listing_type + params.dig(:search, :pool_id).present? ? :revert : :standard + end + +end diff --git a/app/helpers/post_versions_helper.rb b/app/helpers/post_versions_helper.rb index 685ca16aa..3e354f7c1 100644 --- a/app/helpers/post_versions_helper.rb +++ b/app/helpers/post_versions_helper.rb @@ -1,5 +1,5 @@ module PostVersionsHelper - def post_version_listing + def post_versions_listing_type params.dig(:search, :post_id).present? ? :revert : :standard end diff --git a/app/javascript/src/javascripts/current_user.js b/app/javascript/src/javascripts/current_user.js index 286253e03..e38ae191f 100644 --- a/app/javascript/src/javascripts/current_user.js +++ b/app/javascript/src/javascripts/current_user.js @@ -1,7 +1,7 @@ let CurrentUser = {}; CurrentUser.data = function(key) { - return $("body").data(`user-${key}`); + return $("body").data(`current-user-${key}`); }; CurrentUser.update = function(settings) { diff --git a/app/javascript/src/javascripts/post_version.js b/app/javascript/src/javascripts/post_version.js index 0125b693e..4a3a493cb 100644 --- a/app/javascript/src/javascripts/post_version.js +++ b/app/javascript/src/javascripts/post_version.js @@ -33,7 +33,7 @@ PostVersion.undo_selected = async function () { let selected_rows = $("td .post-version-select-checkbox:checked").parents("tr"); for (let row of selected_rows) { - let id = $(row).data("post-version-id"); + let id = $(row).data("id"); await $.ajax(`/post_versions/${id}/undo.json`, { method: "PUT" }); updated++; diff --git a/app/javascript/src/styles/specific/dmails.scss b/app/javascript/src/styles/specific/dmails.scss index 311e7d6ec..4154e9804 100644 --- a/app/javascript/src/styles/specific/dmails.scss +++ b/app/javascript/src/styles/specific/dmails.scss @@ -1,5 +1,5 @@ div#c-dmails { - tr.read-false { + tr[data-is-read="false"] { font-weight: bold; } } diff --git a/app/javascript/src/styles/specific/user_feedback.scss b/app/javascript/src/styles/specific/user_feedback.scss index bbaa86e52..5856cb9ca 100644 --- a/app/javascript/src/styles/specific/user_feedback.scss +++ b/app/javascript/src/styles/specific/user_feedback.scss @@ -1,9 +1,9 @@ div#c-user-feedbacks, div#c-moderator-dashboards div#col2 { - .feedback-category-positive { + [data-category="positive"] { background: var(--success-background-color); } - .feedback-category-negative { + [data-category="negative"] { background: var(--error-background-color); } } diff --git a/app/logical/table_builder.rb b/app/logical/table_builder.rb index 2dcc672cb..d9884cf8c 100644 --- a/app/logical/table_builder.rb +++ b/app/logical/table_builder.rb @@ -1,30 +1,34 @@ class TableBuilder class Column - attr_reader :attribute, :name, :block, :html_attributes + attr_reader :attribute, :name, :block, :header_attributes, :body_attributes, :is_html_safe - def initialize(attribute = nil, name: attribute.to_s.titleize, **html_attributes, &block) + def initialize(attribute = nil, header_attributes=nil, body_attributes=nil, is_html_safe=false, &block) @attribute = attribute - @html_attributes = html_attributes - @name = name + @header_attributes = header_attributes + @body_attributes = body_attributes + @name = attribute.kind_of?(String) ? attribute : attribute.to_s.titleize + @is_html_safe = is_html_safe @block = block end - def value(item) + def value(item, i, j) if block.present? - block.call(item, self) + block.call(item, i, j, self) nil - else + elsif attribute.kind_of?(Symbol) item.send(attribute) + else + "" end end end - attr_reader :columns, :html_attributes, :items + attr_reader :columns, :table_attributes, :items - def initialize(items, **html_attributes) + def initialize(items, table_attributes=nil) @items = items @columns = [] - @html_attributes = html_attributes + @table_attributes = table_attributes yield self if block_given? end @@ -32,7 +36,19 @@ class TableBuilder @columns << Column.new(*options, &block) end - def row_attributes(item) - { id: "#{item.model_name.singular}-#{item.id}", "data-id": item.id } + def all_row_attributes(item, i) + if !item.id.nil? + standard_attributes = { id: "#{item.model_name.singular.dasherize}-#{item.id}", "data-id": item.id } + else + standard_attributes = {} + end + + if item.html_data_attributes.length > 0 + class_attributes = ApplicationController.helpers.data_attributes_for(item, "data", item.html_data_attributes) + else + class_attributes = {} + end + + standard_attributes.merge(class_attributes) end end diff --git a/app/models/application_record.rb b/app/models/application_record.rb index 90378f8c5..0b7ad0e40 100644 --- a/app/models/application_record.rb +++ b/app/models/application_record.rb @@ -280,6 +280,10 @@ class ApplicationRecord < ActiveRecord::Base self.class.api_attributes end + def html_data_attributes + [] + end + def serializable_hash(options = {}) options ||= {} options[:only] ||= [] diff --git a/app/models/artist.rb b/app/models/artist.rb index 783c5f17c..a10390064 100644 --- a/app/models/artist.rb +++ b/app/models/artist.rb @@ -517,6 +517,12 @@ class Artist < ApplicationRecord end end + module ApiMethods + def html_data_attributes + [:creator_id] + end + end + include UrlMethods include NameMethods include VersionMethods @@ -525,6 +531,7 @@ class Artist < ApplicationRecord include TagMethods include BanMethods extend SearchMethods + include ApiMethods def status if is_banned? && is_active? diff --git a/app/models/artist_commentary.rb b/app/models/artist_commentary.rb index ed404a8aa..295675b5d 100644 --- a/app/models/artist_commentary.rb +++ b/app/models/artist_commentary.rb @@ -139,6 +139,13 @@ class ArtistCommentary < ApplicationRecord end end + module ApiMethods + def html_data_attributes + [:post_id] + end + end + extend SearchMethods include VersionMethods + include ApiMethods end diff --git a/app/models/artist_commentary_version.rb b/app/models/artist_commentary_version.rb index 0f90027d9..cda5d81a6 100644 --- a/app/models/artist_commentary_version.rb +++ b/app/models/artist_commentary_version.rb @@ -7,4 +7,12 @@ class ArtistCommentaryVersion < ApplicationRecord q = q.search_attributes(params, :post, :updater, :original_title, :original_description, :translated_title, :translated_description) q.apply_default_order(params) end + + module ApiMethods + def html_data_attributes + [:post_id, :updater_id] + end + end + + include ApiMethods end diff --git a/app/models/artist_version.rb b/app/models/artist_version.rb index 03bde80fa..e632f1807 100644 --- a/app/models/artist_version.rb +++ b/app/models/artist_version.rb @@ -23,7 +23,14 @@ class ArtistVersion < ApplicationRecord end end + module ApiMethods + def html_data_attributes + [:artist_id, :updater_id] + end + end + extend SearchMethods + include ApiMethods def previous ArtistVersion.where("artist_id = ? and created_at < ?", artist_id, created_at).order("created_at desc").first diff --git a/app/models/ban.rb b/app/models/ban.rb index 741a8815f..e88f7e17e 100644 --- a/app/models/ban.rb +++ b/app/models/ban.rb @@ -44,6 +44,14 @@ class Ban < ApplicationRecord q end + module ApiMethods + def html_data_attributes + [:user_id, :banner_id, :expired?] + end + end + + include ApiMethods + def self.prune! expired.includes(:user).find_each do |ban| ban.user.unban! if ban.user.ban_expired? diff --git a/app/models/bulk_update_request.rb b/app/models/bulk_update_request.rb index 04f1216ba..a1825b118 100644 --- a/app/models/bulk_update_request.rb +++ b/app/models/bulk_update_request.rb @@ -135,9 +135,16 @@ class BulkUpdateRequest < ApplicationRecord end end + module ApiMethods + def html_data_attributes + [:user_id, :approver_id, :forum_topic_id, :forum_post_id] + end + end + extend SearchMethods include ApprovalMethods include ValidationMethods + include ApiMethods concerning :EmbeddedText do class_methods do diff --git a/app/models/comment_vote.rb b/app/models/comment_vote.rb index 701eead15..b60079f20 100644 --- a/app/models/comment_vote.rb +++ b/app/models/comment_vote.rb @@ -51,4 +51,12 @@ class CommentVote < ApplicationRecord def initialize_user self.user_id = CurrentUser.user.id end + + module ApiMethods + def html_data_attributes + [:comment_id, :user_id] + end + end + + include ApiMethods end diff --git a/app/models/dmail.rb b/app/models/dmail.rb index 212426c4b..4b7ec5664 100644 --- a/app/models/dmail.rb +++ b/app/models/dmail.rb @@ -146,9 +146,16 @@ class Dmail < ApplicationRecord end end + module ApiMethods + def html_data_attributes + [:owner_id, :from_id, :to_id, :is_read?] + end + end + include AddressMethods include FactoryMethods extend SearchMethods + include ApiMethods def validate_sender_is_not_banned if from.try(:is_banned?) diff --git a/app/models/favorite_group.rb b/app/models/favorite_group.rb index a13003253..2660743a0 100644 --- a/app/models/favorite_group.rb +++ b/app/models/favorite_group.rb @@ -70,7 +70,14 @@ class FavoriteGroup < ApplicationRecord end end + module ApiMethods + def html_data_attributes + [:creator_id] + end + end + extend SearchMethods + include ApiMethods def self.name_to_id(name) if name =~ /^\d+$/ diff --git a/app/models/forum_post.rb b/app/models/forum_post.rb index 1f54f9149..f376564be 100644 --- a/app/models/forum_post.rb +++ b/app/models/forum_post.rb @@ -65,11 +65,22 @@ class ForumPost < ApplicationRecord q = q.joins(:topic).where("forum_topics.category_id = ?", params[:topic_category_id].to_i) end + unless params[:is_deleted].present? + q = q.active + end + q.apply_default_order(params) end end + module ApiMethods + def html_data_attributes + [:topic_id, :creator_id, :updater_id, :is_deleted?, [:topic, :is_deleted?]] + end + end + extend SearchMethods + include ApiMethods def self.new_reply(params) if params[:topic_id] diff --git a/app/models/forum_post_vote.rb b/app/models/forum_post_vote.rb index 9637aca8f..6c1778604 100644 --- a/app/models/forum_post_vote.rb +++ b/app/models/forum_post_vote.rb @@ -53,4 +53,12 @@ class ForumPostVote < ApplicationRecord raise end end + + module ApiMethods + def html_data_attributes + [:forum_post_id, :creator_id] + end + end + + include ApiMethods end diff --git a/app/models/forum_topic.rb b/app/models/forum_topic.rb index 9dd280be3..85b5f8185 100644 --- a/app/models/forum_topic.rb +++ b/app/models/forum_topic.rb @@ -80,6 +80,10 @@ class ForumTopic < ApplicationRecord q = q.apply_default_order(params) end + unless params[:is_deleted].present? + q = q.active + end + q end end @@ -127,10 +131,17 @@ class ForumTopic < ApplicationRecord end end + module ApiMethods + def html_data_attributes + [:creator_id, :updater_id, :category_id] + end + end + extend SearchMethods include CategoryMethods include VisitMethods include SubscriptionMethods + include ApiMethods def editable_by?(user) (creator_id == user.id || user.is_moderator?) && visible?(user) diff --git a/app/models/ip_address.rb b/app/models/ip_address.rb index add206bbc..816400ab5 100644 --- a/app/models/ip_address.rb +++ b/app/models/ip_address.rb @@ -42,4 +42,12 @@ class IpAddress < ApplicationRecord def readonly? true end + + module ApiMethods + def html_data_attributes + [:user_id] + end + end + + include ApiMethods end diff --git a/app/models/ip_ban.rb b/app/models/ip_ban.rb index 0da1a8838..d6fea18b9 100644 --- a/app/models/ip_ban.rb +++ b/app/models/ip_ban.rb @@ -42,4 +42,12 @@ class IpBan < ApplicationRecord str += "/" + ip_addr.prefix.to_s if has_subnet? str end + + module ApiMethods + def html_data_attributes + [:creator_id] + end + end + + include ApiMethods end diff --git a/app/models/mod_action.rb b/app/models/mod_action.rb index fc4534b49..66b413c0c 100644 --- a/app/models/mod_action.rb +++ b/app/models/mod_action.rb @@ -83,4 +83,12 @@ class ModAction < ApplicationRecord def initialize_creator self.creator_id = CurrentUser.id end + + module ApiMethods + def html_data_attributes + [:category_id, :creator_id] + end + end + + include ApiMethods end diff --git a/app/models/news_update.rb b/app/models/news_update.rb index 5e0fecb09..60a198bba 100644 --- a/app/models/news_update.rb +++ b/app/models/news_update.rb @@ -2,4 +2,12 @@ class NewsUpdate < ApplicationRecord belongs_to_creator belongs_to_updater scope :recent, -> {where("created_at >= ?", 2.weeks.ago).order("created_at desc").limit(5)} + + module ApiMethods + def html_data_attributes + [:creator_id, :updater_id] + end + end + + include ApiMethods end diff --git a/app/models/note.rb b/app/models/note.rb index 8402a850f..6a556160a 100644 --- a/app/models/note.rb +++ b/app/models/note.rb @@ -157,4 +157,12 @@ class Note < ApplicationRecord end end end + + module ApiMethods + def html_data_attributes + [:post_id, :creator_id, :version] + end + end + + include ApiMethods end diff --git a/app/models/note_version.rb b/app/models/note_version.rb index 231cb73f4..83aef1535 100644 --- a/app/models/note_version.rb +++ b/app/models/note_version.rb @@ -15,4 +15,12 @@ class NoteVersion < ApplicationRecord def previous NoteVersion.where("note_id = ? and updated_at < ?", note_id, updated_at).order("updated_at desc").first end + + module ApiMethods + def html_data_attributes + [:note_id, :post_id, :updater_id, :version] + end + end + + include ApiMethods end diff --git a/app/models/pool.rb b/app/models/pool.rb index 61a557521..dc9efd450 100644 --- a/app/models/pool.rb +++ b/app/models/pool.rb @@ -95,7 +95,14 @@ class Pool < ApplicationRecord end end + module ApiMethods + def html_data_attributes + [:creator_id] + end + end + extend SearchMethods + include ApiMethods def self.name_to_id(name) if name =~ /^\d+$/ diff --git a/app/models/pool_archive.rb b/app/models/pool_archive.rb index 288f12588..3ab57dc57 100644 --- a/app/models/pool_archive.rb +++ b/app/models/pool_archive.rb @@ -33,7 +33,14 @@ class PoolArchive < ApplicationRecord end end + module ApiMethods + def html_data_attributes + [:pool_id, :updater_id, :version] + end + end + extend SearchMethods + include ApiMethods def self.sqs_service SqsService.new(Danbooru.config.aws_sqs_archives_url) diff --git a/app/models/post.rb b/app/models/post.rb index ba1ece4c7..70f3e1038 100644 --- a/app/models/post.rb +++ b/app/models/post.rb @@ -1481,6 +1481,10 @@ class Post < ApplicationRecord hash end + def html_data_attributes + [:uploader_id, :approver_id] + end + def status if is_pending? "pending" diff --git a/app/models/post_appeal.rb b/app/models/post_appeal.rb index b4fea7607..7aaa6131c 100644 --- a/app/models/post_appeal.rb +++ b/app/models/post_appeal.rb @@ -36,7 +36,14 @@ class PostAppeal < ApplicationRecord end end + module ApiMethods + def html_data_attributes + [:post_id, :creator_id] + end + end + extend SearchMethods + include ApiMethods def resolved? post.present? && !post.is_deleted? && !post.is_flagged? diff --git a/app/models/post_approval.rb b/app/models/post_approval.rb index 1cb2d4654..83d1e4c9a 100644 --- a/app/models/post_approval.rb +++ b/app/models/post_approval.rb @@ -37,4 +37,12 @@ class PostApproval < ApplicationRecord q = q.search_attributes(params, :user, :post) q.apply_default_order(params) end + + module ApiMethods + def html_data_attributes + [:post_id, :user_id] + end + end + + include ApiMethods end diff --git a/app/models/post_archive.rb b/app/models/post_archive.rb index afc47e30e..fd332b2b7 100644 --- a/app/models/post_archive.rb +++ b/app/models/post_archive.rb @@ -75,8 +75,15 @@ class PostArchive < ApplicationRecord end end + module ApiMethods + def html_data_attributes + [:post_id, :updater_id, :version] + end + end + extend SearchMethods include ArchiveServiceMethods + include ApiMethods def tag_array tags.split diff --git a/app/models/post_disapproval.rb b/app/models/post_disapproval.rb index 427259896..a6aa8acc5 100644 --- a/app/models/post_disapproval.rb +++ b/app/models/post_disapproval.rb @@ -67,4 +67,12 @@ class PostDisapproval < ApplicationRecord end end end + + module ApiMethods + def html_data_attributes + [:post_id, :user_id] + end + end + + include ApiMethods end diff --git a/app/models/post_flag.rb b/app/models/post_flag.rb index e99affea4..aeacf4b39 100644 --- a/app/models/post_flag.rb +++ b/app/models/post_flag.rb @@ -94,13 +94,24 @@ class PostFlag < ApplicationRecord end end - def api_attributes - attributes = super + [:category] - attributes -= [:creator_id] unless CurrentUser.can_view_flagger_on_post?(self) - attributes + module ApiMethods + def api_attributes + attributes = super + [:category] + attributes -= [:creator_id] unless CurrentUser.can_view_flagger_on_post?(self) + attributes + end + + def html_data_attributes + attributes = [:post_id] + if CurrentUser.can_view_flagger_on_post?(self) + attributes += [:creator_id] + end + attributes + end end extend SearchMethods + include ApiMethods def category case reason diff --git a/app/models/post_replacement.rb b/app/models/post_replacement.rb index 49323bccc..cedfaaaa5 100644 --- a/app/models/post_replacement.rb +++ b/app/models/post_replacement.rb @@ -28,6 +28,14 @@ class PostReplacement < ApplicationRecord end end + module ApiMethods + def html_data_attributes + [:post_id, :creator_id] + end + end + + include ApiMethods + def suggested_tags_for_removal tags = post.tag_array.select { |tag| Danbooru.config.remove_tag_after_replacement?(tag) } tags = tags.map { |tag| "-#{tag}" } diff --git a/app/models/post_vote.rb b/app/models/post_vote.rb index cf91e3824..83f54f9ff 100644 --- a/app/models/post_vote.rb +++ b/app/models/post_vote.rb @@ -68,4 +68,12 @@ class PostVote < ApplicationRecord 1 end end + + module ApiMethods + def html_data_attributes + [:post_id, :user_id] + end + end + + include ApiMethods end diff --git a/app/models/saved_search.rb b/app/models/saved_search.rb index 87b093000..60e915da7 100644 --- a/app/models/saved_search.rb +++ b/app/models/saved_search.rb @@ -171,4 +171,12 @@ class SavedSearch < ApplicationRecord def disable_labels=(value) CurrentUser.update(disable_categorized_saved_searches: true) if value.to_s.truthy? end + + module ApiMethods + def html_data_attributes + [:user_id] + end + end + + include ApiMethods end diff --git a/app/models/tag.rb b/app/models/tag.rb index e2d4098e1..c8481c892 100644 --- a/app/models/tag.rb +++ b/app/models/tag.rb @@ -69,6 +69,10 @@ class Tag < ApplicationRecord "ambiguous" => false }.to_json end + + def html_data_attributes + [:category] + end end class CategoryMapping diff --git a/app/models/tag_relationship.rb b/app/models/tag_relationship.rb index 8a38995f3..bd5afe801 100644 --- a/app/models/tag_relationship.rb +++ b/app/models/tag_relationship.rb @@ -197,6 +197,12 @@ class TagRelationship < ApplicationRecord end end + module ApiMethods + def html_data_attributes + [:creator_id, :approver_id, :forum_topic_id, :forum_post_id] + end + end + concerning :EmbeddedText do class_methods do def embedded_pattern @@ -234,4 +240,5 @@ class TagRelationship < ApplicationRecord extend SearchMethods include MessageMethods + include ApiMethods end diff --git a/app/models/upload.rb b/app/models/upload.rb index aa210271b..f3fb8152e 100644 --- a/app/models/upload.rb +++ b/app/models/upload.rb @@ -228,12 +228,19 @@ class Upload < ApplicationRecord end end + module ApiMethods + def html_data_attributes + [:post_id, :uploader_id] + end + end + include FileMethods include StatusMethods include UploaderMethods include VideoMethods extend SearchMethods include SourceMethods + include ApiMethods def uploader_is_not_limited if !uploader.can_upload? diff --git a/app/models/user.rb b/app/models/user.rb index db59924e5..350b58f7f 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -614,6 +614,10 @@ class User < ApplicationRecord }.to_json end + def html_data_attributes + [:inviter_id] + end + def api_token api_key.try(:key) end diff --git a/app/models/user_feedback.rb b/app/models/user_feedback.rb index f90a99fe7..c1fde6ff3 100644 --- a/app/models/user_feedback.rb +++ b/app/models/user_feedback.rb @@ -40,7 +40,14 @@ class UserFeedback < ApplicationRecord end end + module ApiMethods + def html_data_attributes + [:user_id, :creator_id, :category] + end + end + extend SearchMethods + include ApiMethods def user_name=(name) self.user = User.find_by_name(name) diff --git a/app/models/user_name_change_request.rb b/app/models/user_name_change_request.rb index 655d30d14..b35691b4e 100644 --- a/app/models/user_name_change_request.rb +++ b/app/models/user_name_change_request.rb @@ -18,6 +18,14 @@ class UserNameChangeRequest < ApplicationRecord end end + module ApiMethods + def html_data_attributes + [:user_id] + end + end + + include ApiMethods + def update_name! user.update!(name: desired_name) end diff --git a/app/models/wiki_page.rb b/app/models/wiki_page.rb index ef88dea28..15b401548 100644 --- a/app/models/wiki_page.rb +++ b/app/models/wiki_page.rb @@ -115,7 +115,14 @@ class WikiPage < ApplicationRecord end end + module ApiMethods + def html_data_attributes + [:category_name] + end + end + extend SearchMethods + include ApiMethods def validate_not_locked if is_locked? && !CurrentUser.is_builder? diff --git a/app/models/wiki_page_version.rb b/app/models/wiki_page_version.rb index b0da8ffb3..29c6f5a11 100644 --- a/app/models/wiki_page_version.rb +++ b/app/models/wiki_page_version.rb @@ -17,7 +17,14 @@ class WikiPageVersion < ApplicationRecord end end + module ApiMethods + def html_data_attributes + [:wiki_page_id, :updater_id] + end + end + extend SearchMethods + include ApiMethods def pretty_title title.tr("_", " ") diff --git a/app/views/artist_commentaries/index.html.erb b/app/views/artist_commentaries/index.html.erb index 81fbd8ff9..ddb774837 100644 --- a/app/views/artist_commentaries/index.html.erb +++ b/app/views/artist_commentaries/index.html.erb @@ -4,30 +4,19 @@ <%= render "posts/partials/common/inline_blacklist" %> - - - - - - - - - - <% @commentaries.each do |commentary| %> - - - - - - <% end %> - -
PostOriginalTranslated
<%= PostPresenter.preview(commentary.post, :tags => "status:any") %> - <%= format_commentary_title(commentary.original_title) %> - <%= format_commentary_description(commentary.original_description) %> - - <%= format_commentary_title(commentary.translated_title) %> - <%= format_commentary_description(commentary.translated_description) %> -
+ <%= table_for @commentaries, {class: "striped", width: "100%"} do |t| %> + <% t.column "Post", {width: "1%"} do |commentary| %> + <%= PostPresenter.preview(commentary.post, :tags => "status:any") %> + <% end %> + <% t.column "Original" do |commentary| %> + <%= format_commentary_title(commentary.original_title) %> + <%= format_commentary_description(commentary.original_description) %> + <% end %> + <% t.column "Translated" do |commentary| %> + <%= format_commentary_title(commentary.translated_title) %> + <%= format_commentary_description(commentary.translated_description) %> + <% end %> + <% end %> <%= numbered_paginator(@commentaries) %> diff --git a/app/views/artist_commentary_versions/_listing.html.erb b/app/views/artist_commentary_versions/_listing.html.erb new file mode 100644 index 000000000..bf66b7786 --- /dev/null +++ b/app/views/artist_commentary_versions/_listing.html.erb @@ -0,0 +1,42 @@ +
+ + <%= table_for @commentary_versions, {class: "striped autofit", width: "100%"} do |t| %> + <% t.column "Post", {width: "5%"} do |commentary_version| %> + <% if artist_commentary_versions_listing_type == :revert %> + <%= link_to commentary_version.post_id, post_path(commentary_version.post_id) %> + <% else %> + <%= PostPresenter.preview(commentary_version.post, :tags => "status:any") %> + <% end %> + <% end %> + <% if artist_commentary_versions_listing_type == :standard %> + <% t.column "Version" do |commentary_version| %> + <%= link_to "#{commentary_version.post_id}.#{commentary_version.id}»", artist_commentary_versions_path(search: {post_id: commentary_version.post_id}) %> + <% end %> + <% end %> + <% t.column "Original" do |commentary_version| %> + <%= format_commentary_title(commentary_version.original_title) %> + <%= format_commentary_description(commentary_version.original_description) %> + <% end %> + <% t.column "Translated" do |commentary_version| %> + <%= format_commentary_title(commentary_version.translated_title) %> + <%= format_commentary_description(commentary_version.translated_description) %> + <% end %> + <% if CurrentUser.is_moderator? %> + <% t.column "IP Address", {width: "10%"} do |commentary_version| %> + <%= link_to_ip commentary_version.updater_ip_addr %> + <% end %> + <% end %> + <% t.column "Edited by", {width: "10%"} do |commentary_version| %> + <%= link_to_user commentary_version.updater %> + <% end %> + <% t.column "Date", {width: "10%"} do |commentary_version| %> + <%= compact_time commentary_version.updated_at %> + <% end %> + <% if artist_commentary_versions_listing_type == :revert %> + <% t.column "", {width: "7%"} do |commentary_version| %> + <%= link_to "Revert to", revert_artist_commentary_path(commentary_version.post_id, :version_id => commentary_version.id), :remote => true, :method => :put, :data => {:confirm => "Are you sure you want to revert to this version?"} %> + <% end %> + <% end %> + <% end %> + +
diff --git a/app/views/artist_commentary_versions/_revert_listing.html.erb b/app/views/artist_commentary_versions/_revert_listing.html.erb deleted file mode 100644 index 32570bffa..000000000 --- a/app/views/artist_commentary_versions/_revert_listing.html.erb +++ /dev/null @@ -1,46 +0,0 @@ -
- - - - - - - <% if CurrentUser.is_moderator? %> - - <% end %> - - - <% if CurrentUser.is_member? %> - - <% end %> - - - - <% @commentary_versions.each do |commentary_version| %> - - - - - <% if CurrentUser.is_moderator? %> - - <% end %> - - - <% if CurrentUser.is_member? %> - - <% end %> - - <% end %> - -
PostOriginalTranslatedIP AddressEdited ByDate
<%= link_to commentary_version.post_id, post_path(commentary_version.post_id) %> - <%= format_commentary_title(commentary_version.original_title) %> - <%= format_commentary_description(commentary_version.original_description) %> - - <%= format_commentary_title(commentary_version.translated_title) %> - <%= format_commentary_description(commentary_version.translated_description) %> - - <%= link_to_ip commentary_version.updater_ip_addr %> - <%= link_to_user commentary_version.updater %><%= compact_time commentary_version.updated_at %> - <%= link_to "Revert to", revert_artist_commentary_path(commentary_version.post_id, :version_id => commentary_version.id), :remote => true, :method => :put, :data => {:confirm => "Are you sure you want to revert to this version?"} %> -
-
diff --git a/app/views/artist_commentary_versions/_standard_listing.html.erb b/app/views/artist_commentary_versions/_standard_listing.html.erb deleted file mode 100644 index f9bc5824c..000000000 --- a/app/views/artist_commentary_versions/_standard_listing.html.erb +++ /dev/null @@ -1,40 +0,0 @@ -
- - - - - - - - <% if CurrentUser.is_moderator? %> - - <% end %> - - - - - - <% @commentary_versions.each do |commentary_version| %> - - - - - - <% if CurrentUser.is_moderator? %> - - <% end %> - - - - <% end %> - -
PostVersionOriginalTranslatedIP AddressEdited ByDate
<%= PostPresenter.preview(commentary_version.post, :tags => "status:any") %><%= link_to "#{commentary_version.post_id}.#{commentary_version.id}»", artist_commentary_versions_path(search: {post_id: commentary_version.post_id}) %> - <%= format_commentary_title(commentary_version.original_title) %> - <%= format_commentary_description(commentary_version.original_description) %> - - <%= format_commentary_title(commentary_version.translated_title) %> - <%= format_commentary_description(commentary_version.translated_description) %> - - <%= link_to_ip commentary_version.updater_ip_addr %> - <%= link_to_user commentary_version.updater %><%= compact_time commentary_version.updated_at %>
-
diff --git a/app/views/artist_commentary_versions/index.html.erb b/app/views/artist_commentary_versions/index.html.erb index 41c24cea5..573722507 100644 --- a/app/views/artist_commentary_versions/index.html.erb +++ b/app/views/artist_commentary_versions/index.html.erb @@ -4,11 +4,7 @@ <%= render "posts/partials/common/inline_blacklist" %> - <% if params.dig(:search, :post_id).present? %> - <%= render "revert_listing" %> - <% else %> - <%= render "standard_listing" %> - <% end %> + <%= render "listing" %> <%= numbered_paginator(@commentary_versions) %> diff --git a/app/views/artist_versions/_listing.html.erb b/app/views/artist_versions/_listing.html.erb new file mode 100644 index 000000000..9c8b67aa2 --- /dev/null +++ b/app/views/artist_versions/_listing.html.erb @@ -0,0 +1,43 @@ +
+ + <%= table_for @artist_versions, {class: "striped autofit", width: "100%"} do |t| %> + <% t.column "Name" do |artist_version| %> + <% if artist_version.visible? %> + <%= link_to artist_version.name, artist_path(artist_version.artist_id) %> + <%= link_to "»", artist_versions_path(search: {artist_id: artist_version.artist_id}) %> + + <% if !artist_version.is_active? %> + (deleted) + <% end %> + + <% if artist_version.group_name.present? %> +

(group: <%= artist_version.group_name %>)

+ <% end %> + <% end %> + <% end %> + <% t.column "Other Names" do |artist_version| %> + <% if artist_version.visible? %> + <%= artist_version_other_names_diff(artist_version) %> + <% end %> + <% end %> + <% t.column "URLs", nil, {class: "col-expand"} do |artist_version| %> + <%= artist_version_urls_diff(artist_version) if artist_version.visible? %> + <% end %> + <% t.column "Updated" do |artist_version| %> + <%= link_to_user artist_version.updater %> + <%= link_to "»", artist_versions_path(search: { updater_name: artist_version.updater.name }) %> +

+ <%= compact_time(artist_version.updated_at) %> + <% if CurrentUser.is_moderator? %> + (<%= link_to_ip artist_version.updater_ip_addr %>) + <% end %> +

+ <% end %> + <% if artist_versions_listing_type == :revert %> + <% t.column "" do |artist_version| %> + <%= link_to "Revert to", revert_artist_path(artist_version.artist_id, version_id: artist_version.id), method: :put, "data-confirm": "Are you sure you want to revert to this version?" %> + <% end %> + <% end %> + <% end %> + +
diff --git a/app/views/artist_versions/_standard_listing.html.erb b/app/views/artist_versions/_standard_listing.html.erb deleted file mode 100644 index 8c12d3cef..000000000 --- a/app/views/artist_versions/_standard_listing.html.erb +++ /dev/null @@ -1,55 +0,0 @@ -
- - - - - - - - <% if artist_versions_listing_type == :revert %> - - <% end %> - - - - <% @artist_versions.each do |artist_version| %> - - <% if artist_version.visible? %> - - - <% else %> - - - <% end %> - - - <% if artist_versions_listing_type == :revert %> - - <% end %> - - <% end %> - -
NameOther NamesURLsUpdated
- <%= link_to artist_version.name, artist_path(artist_version.artist_id) %> - <%= link_to "»", artist_versions_path(search: {artist_id: artist_version.artist_id}) %> - - <% if !artist_version.is_active? %> - (deleted) - <% end %> - - <% if artist_version.group_name.present? %> -

(group: <%= artist_version.group_name %>)

- <% end %> -
<%= artist_version_other_names_diff(artist_version) %> - <%= artist_version_urls_diff(artist_version) if artist_version.visible? %> - - <%= link_to_user artist_version.updater %> - <%= link_to "»", artist_versions_path(search: { updater_name: artist_version.updater.name }) %> -

- <%= compact_time(artist_version.updated_at) %> - <% if CurrentUser.is_moderator? %> - (<%= link_to_ip artist_version.updater_ip_addr %>) - <% end %> -

-
<%= link_to "Revert to", revert_artist_path(artist_version.artist_id, version_id: artist_version.id), method: :put, "data-confirm": "Are you sure you want to revert to this version?" %>
-
diff --git a/app/views/artist_versions/index.html.erb b/app/views/artist_versions/index.html.erb index 10b506e3c..61eddc430 100644 --- a/app/views/artist_versions/index.html.erb +++ b/app/views/artist_versions/index.html.erb @@ -2,8 +2,10 @@

Artist History

- <%= render "standard_listing" %> + <%= render "listing" %> + <%= numbered_paginator(@artist_versions, :search_count => params[:search]) %> +
diff --git a/app/views/artists/index.html.erb b/app/views/artists/index.html.erb index 0f4fc69ed..2c94a946c 100644 --- a/app/views/artists/index.html.erb +++ b/app/views/artists/index.html.erb @@ -2,58 +2,43 @@
<%= render "search" %> - - - - - - - - - - - - <% @artists.each do |artist| %> - <%= tag.tr id: "artist-#{artist.id}" do %> - - - - - + <% if artist.is_active? %> + | <%= link_to "Delete", artist_path(artist, artist: { is_active: false }), method: :put, remote: true %> + <% else %> + | <%= link_to "Undelete", artist_path(artist, artist: { is_active: true }), method: :put, remote: true %> <% end %> <% end %> - -
NameOther NamesStatusUpdated
- <%= link_to artist.name, artist, class: "tag-type-#{Tag.categories.artist}" %> - <%= artist.tag.try(:post_count) || 0 %> - <% if !artist.group_name.blank? %> - (group: <%= link_to artist.group_name, artist %>) - <% end %> - - <% artist.other_names.each do |name| %> - <%= link_to name, artists_path(search: { any_name_matches: name }), class: "artist-other-name" %> - <% end %> - - <% if !artist.is_active? %> - <%= link_to "Deleted", artists_path(search: { is_active: false }) %> - <% end %> + <%= table_for @artists, {class: "striped autofit"} do |t| %> + <% t.column "Name" do |artist| %> + <%= link_to artist.name, artist, class: "tag-type-#{Tag.categories.artist}" %> + <%= artist.tag.try(:post_count) || 0 %> + <% if !artist.group_name.blank? %> + (group: <%= link_to artist.group_name, artist %>) + <% end %> + <% end %> + <% t.column "Other Names", nil, {class: "col-expand"} do |artist| %> + <% artist.other_names.each do |name| %> + <%= link_to name, artists_path(search: { any_name_matches: name }), class: "artist-other-name" %> + <% end %> + <% end %> + <% t.column "Status" do |artist| %> + <% if !artist.is_active? %> + <%= link_to "Deleted", artists_path(search: { is_active: false }) %> + <% end %> - <% if artist.is_banned? %> - <%= link_to "Banned", artists_path(search: { is_banned: true }) %> - <% end %> - - <%= time_ago_in_words_tagged(artist.updated_at) %> - - <% if CurrentUser.is_member? %> - <%= link_to "Edit", edit_artist_path(artist) %> + <% if artist.is_banned? %> + <%= link_to "Banned", artists_path(search: { is_banned: true }) %> + <% end %> + <% end %> + <% t.column "Updated" do |artist| %> + <%= time_ago_in_words_tagged(artist.updated_at) %> + <% end %> + <% t.column "" do |artist| %> + <% if CurrentUser.is_member? %> + <%= link_to "Edit", edit_artist_path(artist) %> - <% if artist.is_active? %> - | <%= link_to "Delete", artist_path(artist, artist: { is_active: false }), method: :put, remote: true %> - <% else %> - | <%= link_to "Undelete", artist_path(artist, artist: { is_active: true }), method: :put, remote: true %> - <% end %> - <% end %> -
+ <% end %> + <% end %> <%= numbered_paginator(@artists) %>
diff --git a/app/views/bans/index.html.erb b/app/views/bans/index.html.erb index 9542f6d91..64e7609ee 100644 --- a/app/views/bans/index.html.erb +++ b/app/views/bans/index.html.erb @@ -4,44 +4,31 @@ <%= render "search" %> - - - - - - - - - - - - <% @bans.each do |ban| %> - - - - - - - + <%= table_for @bans, {class: "striped autofit"} do |t| %> + <% t.column "Banned User" do |ban| %> + <%= link_to_user(ban.user) %> + <%= link_to "»", bans_path(search: search_params.merge(user_name: ban.user.name)) %> + <% end %> + <% t.column "Duration" do |ban| %> + <%= humanized_duration(ban.created_at, ban.expires_at) %> + <% end %> + <% t.column "Reason", nil, {class: "col-expand"} do |ban| %> +
+ <%= format_text ban.reason %> +
+ <% end %> + <% t.column "Banner" do |ban| %> + <%= link_to_user ban.banner %> + <%= link_to "»", bans_path(search: { banner_name: ban.banner.name }) %> +
<%= time_ago_in_words_tagged(ban.created_at) %>
+ <% end %> + <% t.column "" do |ban| %> + <% if CurrentUser.is_moderator? %> + <%= link_to "Edit", edit_ban_path(ban) %> + | <%= link_to "Delete", ban_path(ban), :method => :delete, :remote => true %> <% end %> - -
Banned UserDurationReasonBanner
- <%= link_to_user(ban.user) %> - <%= link_to "»", bans_path(search: search_params.merge(user_name: ban.user.name)) %> - <%= humanized_duration(ban.created_at, ban.expires_at) %> -
- <%= format_text ban.reason %> -
-
- <%= link_to_user ban.banner %> - <%= link_to "»", bans_path(search: { banner_name: ban.banner.name }) %> -
<%= time_ago_in_words_tagged(ban.created_at) %>
-
- <% if CurrentUser.is_moderator? %> - <%= link_to "Edit", edit_ban_path(ban) %> - | <%= link_to "Delete", ban_path(ban), :method => :delete, :remote => true %> - <% end %> -
+ <% end %> + <% end %> <%= numbered_paginator(@bans) %> diff --git a/app/views/bulk_update_requests/_listing.html.erb b/app/views/bulk_update_requests/_listing.html.erb index a7bf9910f..f5ce9b4a7 100644 --- a/app/views/bulk_update_requests/_listing.html.erb +++ b/app/views/bulk_update_requests/_listing.html.erb @@ -1,49 +1,35 @@ - - - - - - - - - - - - <% bulk_update_requests.each do |request| %> - - - - - - - + <%= script_with_line_breaks(request.script) %> + <% end %> + <% t.column "Votes" do |request| %> + <% if request.forum_post.present? %> + <%= link_to forum_post_votes_path(search: { forum_post_id: request.forum_post_id }) do %> + +<%= request.forum_post.votes.select(&:up?).count %> / + -<%= request.forum_post.votes.select(&:down?).count %> + <% end %> <% end %> - -
RequestVotesStatusCreated
- <% if request.forum_post.present? %> -

<%= link_to "Topic ##{request.forum_topic_id}: #{request.forum_topic.title}", forum_topic_path(request.forum_topic_id, page: request.forum_post.forum_topic_page, anchor: "forum_post_#{request.forum_post_id}") %>

- <% elsif request.forum_topic.present? %> -

<%= link_to "Topic ##{request.forum_topic_id}: #{request.forum_topic.title}", request.forum_topic %>

- <% end %> +<%= table_for bulk_update_requests, {class: "striped", width: "100%"} do |t| %> + <% t.column "Request" do |request| %> + <% if request.forum_post.present? %> +

<%= link_to "Topic ##{request.forum_topic_id}: #{request.forum_topic.title}", forum_topic_path(request.forum_topic_id, page: request.forum_post.forum_topic_page, anchor: "forum_post_#{request.forum_post_id}") %>

+ <% elsif request.forum_topic.present? %> +

<%= link_to "Topic ##{request.forum_topic_id}: #{request.forum_topic.title}", request.forum_topic %>

+ <% end %> - <%= script_with_line_breaks(request.script) %> -
- <% if request.forum_post.present? %> - <%= link_to forum_post_votes_path(search: { forum_post_id: request.forum_post_id }) do %> - +<%= request.forum_post.votes.select(&:up?).count %> / - -<%= request.forum_post.votes.select(&:down?).count %> - <% end %> - <% end %> - - <%= request.status %> - <% if request.is_approved? %> -
by <%= link_to_user request.approver %> - <% end %> -
- <%= link_to_user request.user %> - <%= link_to "»", bulk_update_requests_path(search: { user_name: request.user.name }) %> -
<%= time_ago_in_words_tagged(request.created_at) %>
-
- <%= link_to "Show", bulk_update_request_path(request) %> | - <%= render "bulk_update_requests/bur_edit_links", bur: request %> -
+ <% end %> + <% t.column "Status" do |request| %> + <%= request.status %> + <% if request.is_approved? %> +
by <%= link_to_user request.approver %> + <% end %> + <% end %> + <% t.column "Created" do |request| %> + <%= link_to_user request.user %> + <%= link_to "»", bulk_update_requests_path(search: { user_name: request.user.name }) %> +
<%= time_ago_in_words_tagged(request.created_at) %>
+ <% end %> + <% t.column "" do |request| %> + <%= link_to "Show", bulk_update_request_path(request) %> | + <%= render "bulk_update_requests/bur_edit_links", bur: request %> + <% end %> +<% end %> + diff --git a/app/views/comment_votes/index.html.erb b/app/views/comment_votes/index.html.erb index d6f9e290c..a7ebd4246 100644 --- a/app/views/comment_votes/index.html.erb +++ b/app/views/comment_votes/index.html.erb @@ -10,48 +10,34 @@ <%= f.submit "Search" %> <% end %> - - - - - - - - - - - - - <% @comment_votes.each do |vote| %> - - - - - - - - + <%= table_for @comment_votes, {class: "striped autofit"} do |t| %> + <% t.column "Post" do |vote| %> + <%= PostPresenter.preview(vote.comment.post, show_deleted: true) %> + <% end %> + <% t.column "Comment", nil, {class: "col-expand"} do |vote| %> +
+ <%= format_text(vote.comment.body) %> +
+ <% end %> + <% t.column "Score" do |vote| %> + <%= link_to sprintf("%+d", vote.score), comment_votes_path(search: { score: vote.score }) %> + <% end %> + <% t.column "Commenter" do |vote| %> + <%= link_to_user vote.comment.creator %> + <%= link_to "»", comment_votes_path(search: { comment: { creator_name: vote.comment.creator_name }}) %> +
<%= time_ago_in_words_tagged(vote.comment.created_at) %>
+ <% end %> + <% t.column "Voter" do |vote| %> + <%= link_to_user vote.user %> + <%= link_to "»", comment_votes_path(search: { user_name: vote.user.name }) %> +
<%= time_ago_in_words_tagged(vote.created_at) %>
+ <% end %> + <% t.column "" do |vote| %> + <% if vote.user == CurrentUser.user %> + <%= link_to "unvote", comment_comment_votes_path(vote.comment), remote: true, method: :delete %> <% end %> - -
PostCommentScoreCommenterVoter
- <%= PostPresenter.preview(vote.comment.post, show_deleted: true) %> - -
- <%= format_text(vote.comment.body) %> -
-
<%= link_to sprintf("%+d", vote.score), comment_votes_path(search: { score: vote.score }) %> - <%= link_to_user vote.comment.creator %> - <%= link_to "»", comment_votes_path(search: { comment: { creator_name: vote.comment.creator_name }}) %> -
<%= time_ago_in_words_tagged(vote.comment.created_at) %>
-
- <%= link_to_user vote.user %> - <%= link_to "»", comment_votes_path(search: { user_name: vote.user.name }) %> -
<%= time_ago_in_words_tagged(vote.created_at) %>
-
- <% if vote.user == CurrentUser.user %> - <%= link_to "unvote", comment_comment_votes_path(vote.comment), remote: true, method: :delete %> - <% end %> -
+ <% end %> + <% end %> <%= numbered_paginator(@comment_votes) %> diff --git a/app/views/delayed_jobs/index.html.erb b/app/views/delayed_jobs/index.html.erb index 04610e1df..ef31dd4a3 100644 --- a/app/views/delayed_jobs/index.html.erb +++ b/app/views/delayed_jobs/index.html.erb @@ -2,55 +2,41 @@

Delayed Jobs

- - - - - - <% if CurrentUser.is_admin? %> - - <% end %> - - - - - - - - - <% @delayed_jobs.each do |job| %> - - - - <% if CurrentUser.is_admin? %> - - <% end %> - - - - - - + <%= table_for @delayed_jobs, {class: "striped autofit"} do |t| %> + <% t.column :queue %> + <% t.column "Name" do |job| %> + <%= raw print_name(job) %> + <% end %> + <% t.column "Handler", nil, {class: "col-expand"} do |job| %> + <%= raw print_handler(job) %> + <% end %> + <% t.column :attempts %> + <% t.column "Last error", nil, {class: "col-expand"} do |job| %> + <% if job.last_error %> + <%= job.last_error.split(/\n/)[0] %> + <%= job.last_error.split(/\n/)[1..-1].grep(/releases/).join("\n") %> <% end %> - -
QueueNameHandlerAttemptsLast errorFailed atRun at
<%= job.queue %><%= raw print_name(job) %><%= raw print_handler(job) %><%= job.attempts %> - <% if job.last_error %> - <%= job.last_error.split(/\n/)[0] %> - <%= job.last_error.split(/\n/)[1..-1].grep(/releases/).join("\n") %> - <% end %> - <%= time_ago_in_words_tagged(job.failed_at) if job.failed_at %><%= time_ago_in_words_tagged(job.run_at) %> - <% if CurrentUser.is_admin? %> - <% if job.locked_at? %> - Running - <% elsif job.failed? %> - <%= link_to "Retry", retry_delayed_job_path(job), method: :put, remote: true %> | - <%= link_to "Delete", delayed_job_path(job), method: :delete, remote: true %> - <% else %> - <%= link_to "Run", run_delayed_job_path(job), method: :put, remote: true %> | - <%= link_to "Cancel", cancel_delayed_job_path(job), method: :put, remote: true %> - <% end %> - <% end %> -
+ <% end %> + <% t.column "Failed at" do |job| %> + <%= time_ago_in_words_tagged(job.failed_at) if job.failed_at %> + <% end %> + <% t.column "Run at" do |job| %> + <%= time_ago_in_words_tagged(job.run_at) %> + <% end %> + <% t.column "" do |job| %> + <% if CurrentUser.is_admin? %> + <% if job.locked_at? %> + Running + <% elsif job.failed? %> + <%= link_to "Retry", retry_delayed_job_path(job), method: :put, remote: true %> | + <%= link_to "Delete", delayed_job_path(job), method: :delete, remote: true %> + <% else %> + <%= link_to "Run", run_delayed_job_path(job), method: :put, remote: true %> | + <%= link_to "Cancel", cancel_delayed_job_path(job), method: :put, remote: true %> + <% end %> + <% end %> + <% end %> + <% end %> <%= numbered_paginator(@delayed_jobs) %>
diff --git a/app/views/dmails/index.html.erb b/app/views/dmails/index.html.erb index eaaa09cce..10c7e8047 100644 --- a/app/views/dmails/index.html.erb +++ b/app/views/dmails/index.html.erb @@ -10,42 +10,31 @@ <%= render "search" %> - - - - - - - - - - - - <% @dmails.each do |dmail| %> - - - - - - - + <%= table_for @dmails, {class: "striped", width: "100%"} do |t| %> + <% t.column "Date" do |dmail| %> + <%= compact_time(dmail.created_at) %> + <% end %> + <% t.column "From" do |dmail| %> + <% if dmail.filtered? %> + <%= link_to "[filtered]", user_path(dmail.from) %> + <% else %> + <%= link_to_user dmail.from %> <% end %> - -
DateFromToSubject
<%= compact_time(dmail.created_at) %> - <% if dmail.filtered? %> - <%= link_to "[filtered]", user_path(dmail.from) %> - <% else %> - <%= link_to_user dmail.from %> - <% end %> - <%= link_to_user dmail.to %> - <% if dmail.filtered? %> - <%= link_to "[filtered]", dmail_path(dmail) %> - <% else %> - <%= link_to dmail.title, dmail_path(dmail) %> - <% end %> - - <%= link_to "delete", dmail_path(dmail), :method => :delete, :data => {:confirm => "Are you sure you want to delete this Dmail?"} %> -
+ <% end %> + <% t.column "To" do |dmail| %> + <%= link_to_user dmail.from %> + <% end %> + <% t.column "Subject" do |dmail| %> + <% if dmail.filtered? %> + <%= link_to "[filtered]", dmail_path(dmail) %> + <% else %> + <%= link_to dmail.title, dmail_path(dmail) %> + <% end %> + <% end %> + <% t.column "" do |dmail| %> + <%= link_to "delete", dmail_path(dmail), :method => :delete, :data => {:confirm => "Are you sure you want to delete this Dmail?"} %> + <% end %> + <% end %> <%= numbered_paginator(@dmails) %> diff --git a/app/views/favorite_groups/index.html.erb b/app/views/favorite_groups/index.html.erb index 65d8975f2..f3c83d406 100644 --- a/app/views/favorite_groups/index.html.erb +++ b/app/views/favorite_groups/index.html.erb @@ -1,33 +1,18 @@
- - - - - - - - - - <% @favorite_groups.each do |favgroup| %> - <%= content_tag(:tr, :id => "favorite-group-#{favgroup.id}") do %> - - - - <% end %> + <%= table_for @favorite_groups, {class: "striped", width: "100%"} do |t| %> + <% t.column nil, {width: "5%"} %> + <% t.column "Name", {width: "60%"} do |favgroup| %> + <%= link_to favgroup.pretty_name, favorite_group_path(favgroup) %> + <% if favgroup.post_count > CurrentUser.user.per_page %> + <%= link_to "page #{favgroup.last_page}", favorite_group_path(favgroup, :page => favgroup.last_page), :class => "last-page" %> <% end %> - -
NameCount
- - <%= link_to favgroup.pretty_name, favorite_group_path(favgroup) %> - - <% if favgroup.post_count > CurrentUser.user.per_page %> - <%= link_to "page #{favgroup.last_page}", favorite_group_path(favgroup, :page => favgroup.last_page), :class => "last-page" %> - <% end %> - - <%= favgroup.post_count %> -
+ <% end %> + <% t.column "Count", {width: "10%"} do |favgroup| %> + <%= favgroup.post_count %> + <% end %> + <% end %> <%= render "secondary_links" %>
diff --git a/app/views/forum_post_votes/index.html.erb b/app/views/forum_post_votes/index.html.erb index 51d732ca3..28693d79a 100644 --- a/app/views/forum_post_votes/index.html.erb +++ b/app/views/forum_post_votes/index.html.erb @@ -10,49 +10,33 @@ <%= f.submit "Search" %> <% end %> - - - - - - - - - - - - - <% @forum_post_votes.each do |forum_post_vote| %> - - - - - - - - + <%= table_for @forum_post_votes, {class: "striped autofit"} do |t| %> + <% t.column "Forum Post" do |forum_post_vote| %> + <%= link_to "Forum ##{forum_post_vote.forum_post_id}", forum_post_vote.forum_post %> + <%= link_to "»", forum_post_votes_path(search: { forum_post_id: forum_post_vote.forum_post_id }) %> + <% end %> + <% t.column "Forum Topic", nil, {class: "col-expand"} do |forum_post_vote| %> + <%= link_to forum_post_vote.forum_post.topic.title, forum_post_vote.forum_post.topic %> + <% end %> + <% t.column "Score" do |forum_post_vote| %> + <%= link_to sprintf("%+d", forum_post_vote.score), forum_post_votes_path(search: { score: forum_post_vote.score }) %> + <% end %> + <% t.column "Forum Poster" do |forum_post_vote| %> + <%= link_to_user forum_post_vote.forum_post.creator %> + <%= link_to "»", forum_post_votes_path(search: { forum_post: { creator_name: forum_post_vote.forum_post.creator.name }}) %> +
<%= time_ago_in_words_tagged(forum_post_vote.forum_post.created_at) %>
+ <% end %> + <% t.column "Voter" do |forum_post_vote| %> + <%= link_to_user forum_post_vote.creator %> + <%= link_to "»", forum_post_votes_path(search: { creator_name: forum_post_vote.creator.name }) %> +
<%= time_ago_in_words_tagged(forum_post_vote.created_at) %>
+ <% end %> + <% t.column "" do |forum_post_vote| %> + <% if forum_post_vote.creator == CurrentUser.user %> + <%= link_to "unvote", forum_post_vote_path(forum_post_vote, format: "js"), remote: true, method: :delete %> <% end %> - -
Forum PostForum TopicScoreForum PosterVoter
- <%= link_to "Forum ##{forum_post_vote.forum_post_id}", forum_post_vote.forum_post %> - <%= link_to "»", forum_post_votes_path(search: { forum_post_id: forum_post_vote.forum_post_id }) %> - - <%= link_to forum_post_vote.forum_post.topic.title, forum_post_vote.forum_post.topic %> - - <%= link_to sprintf("%+d", forum_post_vote.score), forum_post_votes_path(search: { score: forum_post_vote.score }) %> - - <%= link_to_user forum_post_vote.forum_post.creator %> - <%= link_to "»", forum_post_votes_path(search: { forum_post: { creator_name: forum_post_vote.forum_post.creator.name }}) %> -
<%= time_ago_in_words_tagged(forum_post_vote.forum_post.created_at) %>
-
- <%= link_to_user forum_post_vote.creator %> - <%= link_to "»", forum_post_votes_path(search: { creator_name: forum_post_vote.creator.name }) %> -
<%= time_ago_in_words_tagged(forum_post_vote.created_at) %>
-
- <% if forum_post_vote.creator == CurrentUser.user %> - <%= link_to "unvote", forum_post_vote_path(forum_post_vote, format: "js"), remote: true, method: :delete %> - <% end %> -
+ <% end %> + <% end %> <%= numbered_paginator(@forum_post_votes) %>
diff --git a/app/views/forum_posts/index.html.erb b/app/views/forum_posts/index.html.erb index 4743c127f..040f87155 100644 --- a/app/views/forum_posts/index.html.erb +++ b/app/views/forum_posts/index.html.erb @@ -1,29 +1,20 @@
- - - - - - - - - - - <% @forum_posts.each do |forum_post| %> - <% if CurrentUser.is_moderator? || !forum_post.is_deleted? %> - - - - - - - <% end %> - <% end %> - -
TopicExcerptCreatorDate
<%= link_to forum_post.topic.title, forum_topic_path(forum_post.topic) %> - <%= link_to truncate(forum_post.body, :length => 50), forum_post_path(forum_post) %> - <%= link_to_user forum_post.creator %><%= time_ago_in_words_tagged forum_post.created_at %>
+ + <%= table_for @forum_posts, {class: "striped", width: "100%"} do |t| %> + <% t.column "Topic", nil, {class: "forum-post-topic-title"} do |forum_post| %> + <%= link_to forum_post.topic.title, forum_topic_path(forum_post.topic) %> + <% end %> + <% t.column "Excerpt", nil, {class: "forum-post-excerpt"} do |forum_post| %> + <%= link_to truncate(forum_post.body, :length => 50), forum_post_path(forum_post) %> + <% end %> + <% t.column "Creator" do |forum_post| %> + <%= link_to_user forum_post.creator %> + <% end %> + <% t.column "Date" do |forum_post| %> + <%= time_ago_in_words_tagged forum_post.created_at %> + <% end %> + <% end %> <%= numbered_paginator(@forum_posts) %>
diff --git a/app/views/forum_topics/_listing.html.erb b/app/views/forum_topics/_listing.html.erb index bf0850176..8121940e4 100644 --- a/app/views/forum_topics/_listing.html.erb +++ b/app/views/forum_topics/_listing.html.erb @@ -1,47 +1,37 @@ - - - - - - - - - - - <% forum_topics.each do |topic| %> - <% if CurrentUser.user.level >= topic.min_level %> - - - - - - - <% end %> +<%= table_for forum_topics, {class: "striped", width: "100%"} do |t| %> + <% t.column "Title" do |topic| %> + <% if topic.is_sticky? %> + Sticky: <% end %> - -
TitleCreatorUpdated byUpdated at
- <% if topic.is_sticky? %> - Sticky: - <% end %> - - <% unless topic.read_by?(CurrentUser.user) %> - NEW - <% end %> - - <%= link_to topic.title, forum_topic_path(topic), class: "forum-post-link" %> - - <% if topic.response_count > Danbooru.config.posts_per_page %> - <%= link_to "page #{topic.last_page}", forum_topic_path(topic, :page => topic.last_page), :class => "last-page" %> - <% end %> - - <% if topic.is_locked? %> - (locked) - <% end %> - - <% if topic.min_level > 0 %> - (<%= User.level_string(topic.min_level).downcase %> only) - <% end %> - <%= link_to_user topic.creator %><%= link_to_user topic.updater %><%= compact_time topic.updated_at %>
+ + <% unless topic.read_by?(CurrentUser.user) %> + NEW + <% end %> + + <%= link_to topic.title, forum_topic_path(topic), class: "forum-post-link" %> + + <% if topic.response_count > Danbooru.config.posts_per_page %> + <%= link_to "page #{topic.last_page}", forum_topic_path(topic, :page => topic.last_page), :class => "last-page" %> + <% end %> + + <% if topic.is_locked? %> + (locked) + <% end %> + + <% if topic.min_level > 0 %> + (<%= User.level_string(topic.min_level).downcase %> only) + <% end %> + <% end %> + <% t.column "Creator" do |topic| %> + <%= link_to_user topic.creator %> + <% end %> + <% t.column "Updated by", {class: "updater"} do |topic| %> + <%= link_to_user topic.updater %> + <% end %> + <% t.column "Updated at", {class: "updated-at"} do |topic| %> + <%= compact_time topic.updated_at %> + <% end %> +<% end %> <% content_for(:html_header) do %>