From af25507480938f1612fe91fab68c68d2d56389b5 Mon Sep 17 00:00:00 2001 From: r888888888 Date: Mon, 10 Jun 2013 16:33:26 -0700 Subject: [PATCH] fixes #813 --- app/assets/javascripts/related_tag.js | 29 +++++++-------------------- app/controllers/posts_controller.rb | 2 +- app/controllers/uploads_controller.rb | 2 +- app/controllers/users_controller.rb | 1 + app/logical/session_loader.rb | 7 +++++++ app/views/posts/show.html.erb | 2 +- app/views/uploads/new.html.erb | 2 +- 7 files changed, 19 insertions(+), 26 deletions(-) diff --git a/app/assets/javascripts/related_tag.js b/app/assets/javascripts/related_tag.js index 8e299a295..620537857 100644 --- a/app/assets/javascripts/related_tag.js +++ b/app/assets/javascripts/related_tag.js @@ -105,13 +105,9 @@ var $dest = $("#related-tags"); $dest.empty(); - if (Danbooru.Cookie.get("recent_tags")) { - $dest.append(Danbooru.RelatedTag.build_html("recent", Danbooru.RelatedTag.recent_tags())); - } - if (Danbooru.RelatedTag.favorite_tags().length) { - $dest.append(Danbooru.RelatedTag.build_html("frequent", Danbooru.RelatedTag.favorite_tags())); - } - $dest.append(Danbooru.RelatedTag.build_html(query, related_tags)); + $dest.append(this.build_html("recent", this.other_tags(Danbooru.Cookie.get("recent_tags")))); + $dest.append(this.build_html("frequent", this.other_tags(Danbooru.meta("favorite-tags")))); + $dest.append(this.build_html(query, related_tags)); if (wiki_page_tags.length) { $dest.append(Danbooru.RelatedTag.build_html("wiki:" + query, wiki_page_tags)); } @@ -138,22 +134,11 @@ } } - Danbooru.RelatedTag.favorite_tags = function() { - var string = Danbooru.meta("favorite-tags"); - if (string) { - return $.map(string.match(/\S+/g), function(x, i) { - return [[x, 0]]; - }); - } else { - return []; - } - } - - Danbooru.RelatedTag.recent_tags = function() { - var string = Danbooru.Cookie.get("recent_tags"); + Danbooru.RelatedTag.other_tags = function(string) { if (string && string.length) { - return $.map(string.match(/\S+/g), function(x, i) { - return [[x, 0]]; + return $.map(string.match(/\S+ \d+/g), function(x, i) { + var submatch = x.match(/(\S+) (\d+)/); + return [[submatch[1], submatch[2]]]; }); } else { return []; diff --git a/app/controllers/posts_controller.rb b/app/controllers/posts_controller.rb index 5ac7ba684..030b6a288 100644 --- a/app/controllers/posts_controller.rb +++ b/app/controllers/posts_controller.rb @@ -93,7 +93,7 @@ private if @post tags = Tag.scan_tags(@post.tag_string) tags = TagAlias.to_aliased(tags) + Tag.scan_tags(cookies[:recent_tags]) - cookies[:recent_tags] = tags.uniq.slice(0, 40).join(" ") + cookies[:recent_tags] = Tag.categories_for(tags.uniq.slice(0, 30)).to_a.flatten.join(" ") end end end diff --git a/app/controllers/uploads_controller.rb b/app/controllers/uploads_controller.rb index 6f9716922..5992db37f 100644 --- a/app/controllers/uploads_controller.rb +++ b/app/controllers/uploads_controller.rb @@ -54,7 +54,7 @@ protected if @upload tags = Tag.scan_tags(@upload.tag_string) tags = TagAlias.to_aliased(tags) + Tag.scan_tags(cookies[:recent_tags]) - cookies[:recent_tags] = tags.uniq.slice(0, 40).join(" ") + cookies[:recent_tags] = Tag.categories_for(tags.uniq.slice(0, 30).join(" ")).to_a.flatten.join(" ") end end end diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 4bc03021b..4f6f09de5 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -51,6 +51,7 @@ class UsersController < ApplicationController check_privilege(@user) sanitize_params! @user.update_attributes(params[:user], :as => CurrentUser.role) + cookies.delete(:favorite_tags) respond_with(@user) end diff --git a/app/logical/session_loader.rb b/app/logical/session_loader.rb index c8d321ee8..c57196421 100644 --- a/app/logical/session_loader.rb +++ b/app/logical/session_loader.rb @@ -25,6 +25,7 @@ class SessionLoader update_last_logged_in_at set_time_zone + store_favorite_tags_in_cookies set_statement_timeout end @@ -81,6 +82,12 @@ private cookies[:password_hash] && cookies.signed[:user_name] && User.authenticate_cookie_hash(cookies.signed[:user_name], cookies[:password_hash]) end + def store_favorite_tags_in_cookies + if cookies[:favorite_tags].blank? && CurrentUser.user.favorite_tags.present? + cookies[:favorite_tags] = Tag.categories_for(CurrentUser.user.favorite_tags.scan(/\S+/)).to_a.flatten.join(" ") + end + end + def update_last_logged_in_at return if CurrentUser.is_anonymous? return if CurrentUser.last_logged_in_at && CurrentUser.last_logged_in_at > 1.week.ago diff --git a/app/views/posts/show.html.erb b/app/views/posts/show.html.erb index 11291031b..ccf2a3446 100644 --- a/app/views/posts/show.html.erb +++ b/app/views/posts/show.html.erb @@ -107,7 +107,7 @@ - + diff --git a/app/views/uploads/new.html.erb b/app/views/uploads/new.html.erb index 00ca3fbb0..d6b04568f 100644 --- a/app/views/uploads/new.html.erb +++ b/app/views/uploads/new.html.erb @@ -90,7 +90,7 @@ <% end %> <% content_for(:html_header) do %> - + <% end %> <%= render "posts/partials/common/secondary_links" %>