Skip to content

Commit 9a24d26

Browse files
committed
Allow category to auto-close topics in X hours instead of days. FIX: the system message that says a topic was automatically closed was only counting in days.
1 parent ec26063 commit 9a24d26

14 files changed

Lines changed: 68 additions & 41 deletions

File tree

app/assets/javascripts/discourse/models/category.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ Discourse.Category = Discourse.Model.extend({
6565
hotness: this.get('hotness'),
6666
secure: this.get('secure'),
6767
permissions: this.get('permissionsForUpdate'),
68-
auto_close_days: this.get('auto_close_days'),
68+
auto_close_hours: this.get('auto_close_hours'),
6969
position: this.get('position'),
7070
parent_category_id: this.get('parent_category_id')
7171
},

app/assets/javascripts/discourse/templates/modal/edit_category.js.handlebars

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@
9292
<div>
9393
<i class="icon icon-time"></i>
9494
{{i18n category.auto_close_label}}
95-
{{textField value=auto_close_days}}
95+
{{textField value=auto_close_hours}}
9696
{{i18n category.auto_close_units}}
9797
</div>
9898
</div>

app/controllers/categories_controller.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ def category_params
9090
end
9191
end
9292

93-
params.permit(*required_param_keys, :position, :hotness, :parent_category_id, :auto_close_days, :permissions => [*p.try(:keys)])
93+
params.permit(*required_param_keys, :position, :hotness, :parent_category_id, :auto_close_hours, :permissions => [*p.try(:keys)])
9494
end
9595
end
9696

app/models/category.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ def self.post_template
151151
def create_category_definition
152152
t = Topic.new(title: I18n.t("category.topic_prefix", category: name), user: user, pinned_at: Time.now, category_id: id)
153153
t.skip_callbacks = true
154-
t.auto_close_days = nil
154+
t.auto_close_hours = nil
155155
t.save!
156156
update_column(:topic_id, t.id)
157157
t.posts.create(raw: post_template, user: user)
@@ -309,7 +309,7 @@ def self.resolve_permissions(permissions)
309309
# text_color :string(6) default("FFFFFF"), not null
310310
# hotness :float default(5.0), not null
311311
# read_restricted :boolean default(FALSE), not null
312-
# auto_close_days :float
312+
# auto_close_hours :float
313313
# post_count :integer default(0), not null
314314
# latest_post_id :integer
315315
# latest_topic_id :integer

app/models/topic.rb

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -145,8 +145,8 @@ def initialize(user)
145145
before_create do
146146
self.bumped_at ||= Time.now
147147
self.last_post_user_id ||= user_id
148-
if !@ignore_category_auto_close and self.category and self.category.auto_close_days and self.auto_close_at.nil?
149-
set_auto_close(self.category.auto_close_days * 24)
148+
if !@ignore_category_auto_close and self.category and self.category.auto_close_hours and self.auto_close_at.nil?
149+
set_auto_close(self.category.auto_close_hours)
150150
end
151151
end
152152

@@ -268,8 +268,8 @@ def post_numbers
268268
@post_numbers ||= posts.order(:post_number).pluck(:post_number)
269269
end
270270

271-
def age_in_days
272-
((Time.zone.now - created_at) / 1.day).round
271+
def age_in_minutes
272+
((Time.zone.now - created_at) / 1.minute).round
273273
end
274274

275275
def has_meta_data_boolean?(key)
@@ -602,10 +602,9 @@ def muted?(user)
602602
end
603603
end
604604

605-
# TODO: change this method, along with category's auto_close_days. Use hours.
606-
def auto_close_days=(num_days)
605+
def auto_close_hours=(num_hours)
607606
@ignore_category_auto_close = true
608-
set_auto_close( num_days ? num_days * 24 : nil)
607+
set_auto_close( num_hours )
609608
end
610609

611610
def self.auto_close

app/models/topic_status_update.rb

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,17 @@ def update_read_state_for(status, old_highest_read)
4646

4747
def message_for(status)
4848
if status.autoclosed?
49-
num_days = topic.auto_close_started_at ? ((Time.zone.now - topic.auto_close_started_at) / 1.day).round : topic.age_in_days
50-
I18n.t status.locale_key, count: num_days
49+
num_minutes = topic.auto_close_started_at ? ((Time.zone.now - topic.auto_close_started_at) / 1.minute).round : topic.age_in_minutes
50+
if num_minutes.minutes >= 2.days
51+
I18n.t "#{status.locale_key}_days", count: (num_minutes.minutes / 1.day).round
52+
else
53+
num_hours = (num_minutes.minutes / 1.hour).round
54+
if num_hours >= 2
55+
I18n.t "#{status.locale_key}_hours", count: num_hours
56+
else
57+
I18n.t "#{status.locale_key}_minutes", count: num_minutes
58+
end
59+
end
5160
else
5261
I18n.t status.locale_key
5362
end

app/serializers/category_serializer.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
class CategorySerializer < BasicCategorySerializer
22

3-
attributes :read_restricted, :available_groups, :auto_close_days, :group_permissions, :position
3+
attributes :read_restricted, :available_groups, :auto_close_hours, :group_permissions, :position
44

55
def group_permissions
66
@group_permissions ||= begin

config/locales/client.en.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -977,7 +977,7 @@ en:
977977
already_used: 'This color has been used by another category'
978978
security: "Security"
979979
auto_close_label: "Auto-close topics after:"
980-
auto_close_units: "days"
980+
auto_close_units: "hours"
981981
edit_permissions: "Edit Permissions"
982982
add_permission: "Add Permission"
983983
this_year: "this year"

config/locales/server.en.yml

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -772,10 +772,18 @@ en:
772772
archived_disabled: "This topic is now unarchived. It is no longer frozen, and can be changed."
773773
closed_enabled: "This topic is now closed. New replies are no longer allowed."
774774
closed_disabled: "This topic is now opened. New replies are allowed."
775-
autoclosed_enabled:
775+
autoclosed_enabled_days:
776776
zero: "This topic was automatically closed after 1 day. New replies are no longer allowed."
777777
one: "This topic was automatically closed after 1 day. New replies are no longer allowed."
778778
other: "This topic was automatically closed after %{count} days. New replies are no longer allowed."
779+
autoclosed_enabled_hours:
780+
zero: "This topic was automatically closed after 1 hour. New replies are no longer allowed."
781+
one: "This topic was automatically closed after 1 hour. New replies are no longer allowed."
782+
other: "This topic was automatically closed after %{count} hours. New replies are no longer allowed."
783+
autoclosed_enabled_minutes:
784+
zero: "This topic was automatically closed after 1 minute. New replies are no longer allowed."
785+
one: "This topic was automatically closed after 1 minute. New replies are no longer allowed."
786+
other: "This topic was automatically closed after %{count} minutes. New replies are no longer allowed."
779787
autoclosed_disabled: "This topic is now opened. New replies are allowed."
780788
pinned_enabled: "This topic is now pinned. It will appear at the top of its category until it is either unpinned by a moderator, or the Clear Pin button is pressed."
781789
pinned_disabled: "This topic is now unpinned. It will no longer appear at the top of its category."
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
class RenameAutoCloseDaysToHours < ActiveRecord::Migration
2+
def up
3+
rename_column :categories, :auto_close_days, :auto_close_hours
4+
execute "update categories set auto_close_hours = auto_close_hours * 24"
5+
end
6+
7+
def down
8+
rename_column :categories, :auto_close_hours, :auto_close_days
9+
execute "update categories set auto_close_days = auto_close_days / 24"
10+
end
11+
end

0 commit comments

Comments
 (0)