Skip to content

Commit ffe6dab

Browse files
authored
Merge pull request #1848 from codidact/0valt/assorted
Assorted fixes
2 parents 2dfc168 + 45f70b0 commit ffe6dab

11 files changed

Lines changed: 47 additions & 37 deletions

File tree

app/controllers/users_controller.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ class UsersController < ApplicationController
66

77
before_action :authenticate_user!, only: [:edit_profile, :update_profile, :stack_redirect, :transfer_se_content,
88
:qr_login_code, :me, :preferences, :set_preference, :my_vote_summary,
9-
:disconnect_sso, :confirm_disconnect_sso, :filters]
9+
:disconnect_sso, :confirm_disconnect_sso]
1010
before_action :verify_moderator, only: [:mod, :destroy, :soft_delete, :role_toggle, :full_log,
1111
:annotate, :annotations, :mod_privileges, :mod_privilege_action]
1212
before_action :set_user, only: [:show, :mod, :destroy, :soft_delete, :posts, :role_toggle, :full_log, :activity,

app/models/user.rb

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ class User < ApplicationRecord
3838

3939
validates :login_token, uniqueness: { allow_blank: true, case_sensitive: false }
4040

41-
delegate :reputation, :reputation=, :privilege?, :privilege, to: :community_user
41+
delegate :reputation, :reputation=, :privilege?, :privilege, to: :community_user, allow_nil: true
4242

4343
alias_attribute :name, :username
4444

@@ -57,6 +57,12 @@ def self.search(term)
5757
where('username LIKE ?', "%#{sanitize_sql_like(term)}%")
5858
end
5959

60+
# Safely gets the user's reputation even if they don't have a community user
61+
# @return [Integer] user's reputation
62+
def reputation
63+
community_user&.reputation || 1
64+
end
65+
6066
# Safely gets the user's trust level even if they don't have a community user
6167
# @return [Integer] user's trust level
6268
def trust_level
@@ -208,6 +214,8 @@ def can_update?(post, post_type)
208214
end
209215

210216
def metric(key)
217+
return 0 unless community_user
218+
211219
Rails.cache.fetch("community_user/#{community_user.id}/metric/#{key}", expires_in: 24.hours) do
212220
case key
213221
when 'p'

app/views/admin/_error_report.html.erb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
<% if report.version? %>
2929
<br/>
3030
<strong>Version:</strong>
31-
<%= report.version %>
31+
<%= link_to report.version, query_url(version: report.version) %>
3232
<% end %>
3333
</p>
3434

app/views/admin/audit_log.html.erb

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,15 +35,15 @@
3535

3636
<div class="button-list is-gutterless">
3737
<% classes = 'button is-outlined is-muted' %>
38-
<%= link_to t('g.age'), request.params.merge(sort: 'age'),
38+
<%= link_to t('g.age'), query_url(sort: 'age'),
3939
class: "#{classes} #{params[:sort] == 'age' || params[:sort].nil? ? 'is-active' : ''}" %>
40-
<%= link_to t('g.type'), request.params.merge(sort: 'type'),
40+
<%= link_to t('g.type'), query_url(sort: 'type'),
4141
class: "#{classes} #{params[:sort] == 'type' ? 'is-active' : ''}" %>
42-
<%= link_to t('g.event'), request.params.merge(sort: 'event'),
42+
<%= link_to t('g.event'), query_url(sort: 'event'),
4343
class: "#{classes} #{params[:sort] == 'event' ? 'is-active' : ''}" %>
44-
<%= link_to t('g.related'), request.params.merge(sort: 'related'),
44+
<%= link_to t('g.related'), query_url(sort: 'related'),
4545
class: "#{classes} #{params[:sort] == 'related' ? 'is-active' : ''}" %>
46-
<%= link_to t('g.user'), request.params.merge(sort: 'user'),
46+
<%= link_to t('g.user'), query_url(sort: 'user'),
4747
class: "#{classes} #{params[:sort] == 'user' ? 'is-active' : ''}" %>
4848
</div>
4949
</div>

app/views/categories/show.html.erb

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,29 +26,29 @@
2626
</span>
2727

2828
<div class="button-list is-gutterless has-margin-2">
29-
<%= link_to 'Activity', request.params.merge(sort: 'activity'),
29+
<%= link_to 'Activity', query_url(sort: 'activity'),
3030
class: "button is-muted is-outlined #{(params[:sort].nil?) && !current_page?(questions_lottery_path) ||
3131
params[:sort] == 'activity' ? 'is-active' : ''}",
3232
title: 'most recent changes: new posts, edits, close/open, delete/undelete' %>
33-
<%= link_to 'Age', request.params.merge(sort: 'age'),
33+
<%= link_to 'Age', query_url(sort: 'age'),
3434
class: "button is-muted is-outlined #{params[:sort] == 'age' ? 'is-active' : ''}",
3535
title: 'newest posts (ignores other activity)' %>
36-
<%= link_to 'Score', request.params.merge(sort: 'score'),
36+
<%= link_to 'Score', query_url(sort: 'score'),
3737
class: "button is-muted is-outlined #{params[:sort] == 'score' ? 'is-active' : ''}",
3838
title: 'highest score first (not the same as net votes)' %>
3939
<% if SiteSetting['AllowContentTransfer'] %>
40-
<%= link_to 'Native', request.params.merge(sort: 'native'),
40+
<%= link_to 'Native', query_url(sort: 'native'),
4141
class: "button is-muted is-outlined #{params[:sort] == 'native' ? 'is-active' : ''}",
4242
title: 'exclude imported posts' %>
4343
<% end %>
44-
<%= link_to 'Random', request.params.merge(sort: 'lottery'),
44+
<%= link_to 'Random', query_url(sort: 'lottery'),
4545
class: "button is-muted is-outlined #{params[:sort] == 'lottery' ? 'is-active' : ''}",
4646
title: 'random set of questions, usually older ones' %>
4747
</div>
4848
</div>
4949

5050
<details class="category-filters">
51-
<summary>Filters (<%= @filtered ? @active_filter[:name].empty? ? 'Custom' : @active_filter[:name] : 'None' %>)</summary>
51+
<summary>Filters (<%= @filtered ? @active_filter[:name].blank? ? 'Custom' : @active_filter[:name] : 'None' %>)</summary>
5252
<% if @active_filter[:default] == :user %>
5353
<div class="notice is-info">
5454
You are currently filtering by <strong><%= @active_filter[:name] %></strong> because it is set as your default for this category

app/views/posts/_expanded.html.erb

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@
3333
(post.closed && !post.duplicate_post ? " [closed]" : "") +
3434
(post.duplicate_post ? " [duplicate]" : "") %>
3535
<a href="<%= generic_share_link(post) %>" class="post--title-text"><%= title %></a>
36-
<% if category.display_post_types.reject { |e| e.to_s.empty? }.size > 1 %>
36+
<% post_types = category&.display_post_types || [] %>
37+
<% if post_types.reject(&:blank?).size > 1 %>
3738
<%= post_type_badge(post_type) %>
3839
<% end %>
3940
</h1>
@@ -125,7 +126,7 @@
125126
<% end %>
126127
<% elsif current_user.present? %>
127128
<% if post.pending_suggested_edit? %>
128-
<%= link_to 'suggested edit pending...',
129+
<%= link_to 'suggested edit pending...',
129130
suggested_edit_url(post.pending_suggested_edit.id),
130131
class: "tools--item" %>
131132
<% elsif post_type.is_freely_editable %>
@@ -254,12 +255,12 @@
254255
<% available_count = current_user&.post_privilege?('flag_curate', post) ?
255256
post.comment_threads.count : post.comment_threads.publicly_available.count %>
256257
<div class="post--comments-header">
257-
<h4 class="has-margin-0">
258-
<%= pluralize(public_count, 'comment thread') %>
259-
</h4>
260-
<% if user_signed_in? %>
261-
<%= render 'posts/follow_comments_link', post: post, user: current_user %>
262-
<% end %>
258+
<h4 class="has-margin-0">
259+
<%= pluralize(public_count, 'comment thread') %>
260+
</h4>
261+
<% if user_signed_in? %>
262+
<%= render 'posts/follow_comments_link', post: post, user: current_user %>
263+
<% end %>
263264
</div>
264265
<div class="post--comments-container" role="list">
265266
<%= render 'comments/threads_list', comment_threads: comment_threads.first(5),

app/views/posts/show.html.erb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,13 @@
2727
<% end %>
2828
<% if num_answers > 1 %>
2929
<div class="button-list is-gutterless has-float-right">
30-
<%= link_to 'Score', request.params.merge(sort: 'score'),
30+
<%= link_to 'Score', query_url(sort: 'score'),
3131
class: "button is-muted is-outlined #{params[:sort].nil? || params[:sort] == 'score' ? 'is-active' : ''}",
3232
title: 'highest score first (not the same as net votes)' %>
33-
<%= link_to 'Active', request.params.merge(sort: 'active'),
33+
<%= link_to 'Active', query_url(sort: 'active'),
3434
class: "button is-muted is-outlined #{params[:sort] == 'active' ? 'is-active' : ''}",
3535
title: 'most recent changes first: new answers, edits, delete/undelete' %>
36-
<%= link_to 'Age', request.params.merge(sort: 'age'),
36+
<%= link_to 'Age', query_url(sort: 'age'),
3737
class: "button is-muted is-outlined #{params[:sort] == 'age' ? 'is-active' : ''}",
3838
title: 'newest posts first (ignores other activity)' %>
3939
</div>

app/views/search/search.html.erb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,19 +14,19 @@
1414
</span>
1515
<div class="search-sorting-types button-list is-gutterless">
1616
<%= link_to 'Relevance',
17-
request.params.merge(sort: 'relevance'),
17+
query_url(sort: 'relevance'),
1818
class: "button is-outlined is-muted #{'is-active' if params[:sort] == 'relevance' || params[:sort].nil?}",
1919
role: 'button', 'aria-label': 'Sort by relevance' %>
2020
<%= link_to 'Activity',
21-
request.params.merge(sort: 'activity'),
21+
query_url(sort: 'activity'),
2222
class: "button is-outlined is-muted #{'is-active' if params[:sort] == 'activity'}",
2323
role: 'button', 'aria-label': 'Sort by activity' %>
2424
<%= link_to 'Age',
25-
request.params.merge(sort: 'age'),
25+
query_url(sort: 'age'),
2626
class: "button is-outlined is-muted #{'is-active' if params[:sort] == 'age'}",
2727
role: 'button', 'aria-label': 'Sort by age' %>
2828
<%= link_to 'Score',
29-
request.params.merge(sort: 'score'),
29+
query_url(sort: 'score'),
3030
class: "button is-outlined is-muted #{'is-active' if params[:sort] == 'score'}",
3131
role: 'button', 'aria-label': 'Sort by score' %>
3232
</div>

app/views/shared/_sorting.html.erb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
<% type = option.is_a?(String) ? option : option[:type] %>
2121
<% title = "Sort by #{option.is_a?(String) ? option.humanize.downcase : option[:title]}" %>
2222
<% is_active = params[:sort] == type || (params[:sort].nil? && default_type.to_s == type) %>
23-
<%= link_to request.params.merge(sort: type, order: is_active ? reverse_order : nil),
23+
<%= link_to query_url(sort: type, order: is_active ? reverse_order : nil),
2424
class: "button is-muted is-outlined #{'is-active' if is_active}",
2525
role: 'button',
2626
title: title,

app/views/users/index.html.erb

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,18 @@
99
<%= text_field_tag :search, params[:search], class: 'form-element' %>
1010
<%= hidden_field_tag :sort, params[:sort] || @sort_param %>
1111
</div>
12-
<div class="actions has-padding-bottom-1">
12+
<div class="actions">
1313
<button type="submit" class="button is-filled is-medium"><i class="fas fa-search"></i><span class="sr-only">Search</span></button>
1414
</div>
1515
</div>
1616
<% end %>
1717

1818
<div class="button-list is-gutterless has-margin-bottom-4">
19-
<%= link_to 'Reputation', request.params.merge(sort: 'reputation'),
19+
<%= link_to 'Reputation', query_url(sort: 'reputation'),
2020
class: "button is-muted is-outlined #{params[:sort] == 'reputation' || (params[:sort].nil? && params[:search].nil?) ? 'is-active' : ''}",
2121
role: 'button', 'aria-label': 'Sort by reputation' %>
22-
<%= link_to 'Age', request.params.merge(sort: 'age'), class: "button is-muted is-outlined #{params[:sort] == 'age' ? 'is-active' : ''}",
22+
<%= link_to 'Age', query_url(sort: 'age'),
23+
class: "button is-muted is-outlined #{params[:sort] == 'age' ? 'is-active' : ''}",
2324
role: 'button', 'aria-label': 'Sort by age' %>
2425
</div>
2526

0 commit comments

Comments
 (0)