Visiting User visiting Top, shorten time frame shown by default


(cpradio) #1

Okay, so Sitepoint just had a big internal discussion over what page the user should see when they first visit your community, and we primarily are interested in Top except for one glaring problem.

Top seems to default to Year for the time frame when not logged in. The results of which are less than thrilling. If it defaulted to the past week or past month, this would be very meaningful, as it would show relevant semi current data, instead of showing topics that were closed and things that were said nearly a year ago!

It also seems to default to Year for a New User (registered immediately).

Has anyone else come across this? Does anyone else find that Month or Week would provide a better idea of what is popular/hot as far as discussions go in your community, than showing Year?

Feel free to visit The SitePoint Forums in private browsing to see the difference between Year and Month and Week. The more interesting things really do seem to exist in Month and Week and are not well represented in Year.


Change the first view for newly invited users?
#2

Is that what we’re calling them nowadays? :laughing:

No but really, this is a good idea. It’d give people a good glance at current, popular topics - without the sometimes-trash-or-confusing-mess that is Latest (although a lot of forums mods/actives/etc are bound to prefer that personally) and without the impersonal wall that is Categories.


(Mittineague) #3

Hmmm, I’ve not noticed that there is a difference as I always log in.

Maybe an alternative would be to have it be Year but sorted by Activity descending?


(Kane York) #4

I seem to remember some logic about picking the “best” timeframe for top - e.g. meta should use weekly, hello foros should use daily, and Let’s Encrypt should use monthly.

However, these are all using year. Did something break?


(cpradio) #5

Yes, but I think that logic only applies to a logged in user who hasn’t come back for a while. Which is an entirely different scenario. We’re talking about new visitors, or just registered users, not those who were active and then went awol for a few weeks.


#6

And the reason for that is that we’re trying to think of the best landing page for new users, who are either here to browse, get help, etc etc. And while the Categories page isn’t the ideal for those people, neither would the Top page with a year-long time frame. But the Top page with a short time frame might be kind of nice for this purpose.


(Kane York) #7

Idea: what happens if you put top/weekly in the top menu?

Okay that looks a bit weird.

edit: And making it the first option results in a 404 on /.


(Jeff Atwood) #8

That logic is only based on the last time we’ve seen the user.

For a new user we have never seen them so we show them best all time. There is no known last seen date.

For a returning user we haven’t seen for a few months, it should default to quarter, for a returing user we haven’t seen in a week, it should use week, etcetera.


(cpradio) #9

Right, that was my understanding as well.

This is the part we’d like to change, as our Yearly view isn’t nearly as helpful for our community as our Monthly and Weekly views for Top.


(Sam Saffron) #10

I think it’s fine to add a site setting for this for super active sites perhaps


(cpradio) #11

Just to make sure the rules are defined right.

  1. Site Setting named default top view for top page, default to Yearly.
  2. Site Setting should not break users returning after a hiatus from the site.

I may have time to look into this over the next week or two. :smile:


(cpradio) #12

Okay, I’m running into an issue and I haven’t a clue how to resolve it.

require_dependency 'enum_site_setting'

class TopPeriodSetting < EnumSiteSetting

  def self.valid_value?(val)
    valid_values.any? { |v| v[:value] == val }
  end

  def self.values
    @values ||= valid_values.map { |x| { name: x.to_s, value: x } }
  end

  def self.valid_values
    TopTopic.periods.to_a
  end

  private_class_method :valid_values
end

I’ve got the site setting showing correctly, it seems to validate the value, but it throws a 500 Server Error when saving

Error: Sorry, an error has occurred.

Message

TypeError (no implicit conversion of Symbol into Integer)
/home/discourse/discourse/app/models/top_period_setting.rb:8:in `[]'

Backtrace

/home/discourse/discourse/app/models/top_period_setting.rb:8:in `[]'
/home/discourse/discourse/app/models/top_period_setting.rb:8:in `block in valid_value?'
/home/discourse/discourse/app/models/top_period_setting.rb:8:in `each'
/home/discourse/discourse/app/models/top_period_setting.rb:8:in `any?'
/home/discourse/discourse/app/models/top_period_setting.rb:8:in `valid_value?'
/home/discourse/discourse/lib/site_setting_extension.rb:298:in `add_override!'
/home/discourse/discourse/lib/site_setting_extension.rb:467:in `block in setup_methods'
/home/discourse/discourse/lib/site_setting_extension.rb:364:in `set'
/home/discourse/discourse/app/controllers/admin/site_settings_controller.rb:14:in `update'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/actionpack-4.2.4/lib/action_controller/metal/implicit_render.rb:4:in `send_action'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/actionpack-4.2.4/lib/abstract_controller/base.rb:198:in `process_action'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/actionpack-4.2.4/lib/action_controller/metal/rendering.rb:10:in `process_action'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/actionpack-4.2.4/lib/abstract_controller/callbacks.rb:20:in `block in process_action'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/activesupport-4.2.4/lib/active_support/callbacks.rb:117:in `call'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/activesupport-4.2.4/lib/active_support/callbacks.rb:117:in `call'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/activesupport-4.2.4/lib/active_support/callbacks.rb:555:in `block (2 levels) in compile'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/activesupport-4.2.4/lib/active_support/callbacks.rb:505:in `call'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/activesupport-4.2.4/lib/active_support/callbacks.rb:505:in `call'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/activesupport-4.2.4/lib/active_support/callbacks.rb:92:in `__run_callbacks__'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/activesupport-4.2.4/lib/active_support/callbacks.rb:778:in `_run_process_action_callbacks'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/activesupport-4.2.4/lib/active_support/callbacks.rb:81:in `run_callbacks'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/actionpack-4.2.4/lib/abstract_controller/callbacks.rb:19:in `process_action'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/actionpack-4.2.4/lib/action_controller/metal/rescue.rb:29:in `process_action'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/actionpack-4.2.4/lib/action_controller/metal/instrumentation.rb:32:in `block in process_action'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/activesupport-4.2.4/lib/active_support/notifications.rb:164:in `block in instrument'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/activesupport-4.2.4/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/activesupport-4.2.4/lib/active_support/notifications.rb:164:in `instrument'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/actionpack-4.2.4/lib/action_controller/metal/instrumentation.rb:30:in `process_action'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/actionpack-4.2.4/lib/action_controller/metal/params_wrapper.rb:250:in `process_action'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/activerecord-4.2.4/lib/active_record/railties/controller_runtime.rb:18:in `process_action'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/actionpack-4.2.4/lib/abstract_controller/base.rb:137:in `process'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/actionview-4.2.4/lib/action_view/rendering.rb:30:in `process'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/rack-mini-profiler-0.9.7/lib/mini_profiler/profiling_methods.rb:106:in `block in profile_method'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/actionpack-4.2.4/lib/action_controller/metal.rb:196:in `dispatch'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/actionpack-4.2.4/lib/action_controller/metal/rack_delegation.rb:13:in `dispatch'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/actionpack-4.2.4/lib/action_controller/metal.rb:237:in `block in action'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/actionpack-4.2.4/lib/action_dispatch/routing/route_set.rb:76:in `call'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/actionpack-4.2.4/lib/action_dispatch/routing/route_set.rb:76:in `dispatch'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/actionpack-4.2.4/lib/action_dispatch/routing/route_set.rb:45:in `serve'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/actionpack-4.2.4/lib/action_dispatch/routing/mapper.rb:49:in `serve'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/actionpack-4.2.4/lib/action_dispatch/journey/router.rb:43:in `block in serve'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/actionpack-4.2.4/lib/action_dispatch/journey/router.rb:30:in `each'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/actionpack-4.2.4/lib/action_dispatch/journey/router.rb:30:in `serve'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/actionpack-4.2.4/lib/action_dispatch/routing/route_set.rb:821:in `call'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/rack-protection-1.5.3/lib/rack/protection/frame_options.rb:31:in `call'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/omniauth-1.2.2/lib/omniauth/strategy.rb:186:in `call!'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/omniauth-1.2.2/lib/omniauth/strategy.rb:164:in `call'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/omniauth-1.2.2/lib/omniauth/strategy.rb:186:in `call!'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/omniauth-1.2.2/lib/omniauth/strategy.rb:164:in `call'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/omniauth-1.2.2/lib/omniauth/strategy.rb:186:in `call!'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/omniauth-1.2.2/lib/omniauth/strategy.rb:164:in `call'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/omniauth-1.2.2/lib/omniauth/strategy.rb:186:in `call!'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/omniauth-1.2.2/lib/omniauth/strategy.rb:164:in `call'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/omniauth-1.2.2/lib/omniauth/strategy.rb:186:in `call!'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/omniauth-1.2.2/lib/omniauth/strategy.rb:164:in `call'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/omniauth-1.2.2/lib/omniauth/builder.rb:59:in `call'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/rack-1.6.4/lib/rack/conditionalget.rb:38:in `call'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/rack-1.6.4/lib/rack/head.rb:13:in `call'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/actionpack-4.2.4/lib/action_dispatch/middleware/params_parser.rb:27:in `call'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/actionpack-4.2.4/lib/action_dispatch/middleware/flash.rb:260:in `call'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/message_bus-1.0.16/lib/message_bus/rack/middleware.rb:60:in `call'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/rack-1.6.4/lib/rack/session/abstract/id.rb:225:in `context'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/rack-1.6.4/lib/rack/session/abstract/id.rb:220:in `call'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/actionpack-4.2.4/lib/action_dispatch/middleware/cookies.rb:560:in `call'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/activerecord-4.2.4/lib/active_record/query_cache.rb:36:in `call'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/activerecord-4.2.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:653:in `call'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/activerecord-4.2.4/lib/active_record/migration.rb:377:in `call'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/actionpack-4.2.4/lib/action_dispatch/middleware/callbacks.rb:29:in `block in call'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/activesupport-4.2.4/lib/active_support/callbacks.rb:88:in `__run_callbacks__'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/activesupport-4.2.4/lib/active_support/callbacks.rb:778:in `_run_call_callbacks'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/activesupport-4.2.4/lib/active_support/callbacks.rb:81:in `run_callbacks'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/actionpack-4.2.4/lib/action_dispatch/middleware/callbacks.rb:27:in `call'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/actionpack-4.2.4/lib/action_dispatch/middleware/reloader.rb:73:in `call'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/actionpack-4.2.4/lib/action_dispatch/middleware/remote_ip.rb:78:in `call'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/better_errors-2.1.1/lib/better_errors/middleware.rb:59:in `call'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/actionpack-4.2.4/lib/action_dispatch/middleware/debug_exceptions.rb:17:in `call'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/actionpack-4.2.4/lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/logster-1.0.0.3.pre/lib/logster/middleware/reporter.rb:31:in `call'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/railties-4.2.4/lib/rails/rack/logger.rb:38:in `call_app'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/railties-4.2.4/lib/rails/rack/logger.rb:22:in `call'
/home/discourse/discourse/config/initializers/quiet_logger.rb:10:in `call_with_quiet_assets'
/home/discourse/discourse/config/initializers/silence_logger.rb:26:in `call'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/actionpack-4.2.4/lib/action_dispatch/middleware/request_id.rb:21:in `call'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/rack-1.6.4/lib/rack/methodoverride.rb:22:in `call'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/rack-1.6.4/lib/rack/runtime.rb:18:in `call'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/actionpack-4.2.4/lib/action_dispatch/middleware/static.rb:116:in `call'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/rack-1.6.4/lib/rack/sendfile.rb:113:in `call'
/home/discourse/discourse/lib/middleware/missing_avatars.rb:21:in `call'
/home/discourse/discourse/lib/middleware/turbo_dev.rb:33:in `call'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/rack-mini-profiler-0.9.7/lib/mini_profiler/profiler.rb:276:in `call'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/railties-4.2.4/lib/rails/engine.rb:518:in `call'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/railties-4.2.4/lib/rails/application.rb:165:in `call'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/railties-4.2.4/lib/rails/railtie.rb:194:in `public_send'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/railties-4.2.4/lib/rails/railtie.rb:194:in `method_missing'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/rack-1.6.4/lib/rack/urlmap.rb:66:in `block in call'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/rack-1.6.4/lib/rack/urlmap.rb:50:in `each'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/rack-1.6.4/lib/rack/urlmap.rb:50:in `call'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/rack-1.6.4/lib/rack/content_length.rb:15:in `call'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/thin-1.6.4/lib/thin/connection.rb:86:in `block in pre_process'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/thin-1.6.4/lib/thin/connection.rb:84:in `catch'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/thin-1.6.4/lib/thin/connection.rb:84:in `pre_process'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/thin-1.6.4/lib/thin/connection.rb:53:in `process'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/thin-1.6.4/lib/thin/connection.rb:39:in `receive_data'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/eventmachine-1.0.8/lib/eventmachine.rb:193:in `run_machine'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/eventmachine-1.0.8/lib/eventmachine.rb:193:in `run'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/thin-1.6.4/lib/thin/backends/base.rb:73:in `start'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/thin-1.6.4/lib/thin/server.rb:162:in `start'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/rack-1.6.4/lib/rack/handler/thin.rb:19:in `run'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/rack-1.6.4/lib/rack/server.rb:286:in `start'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/railties-4.2.4/lib/rails/commands/server.rb:80:in `start'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/railties-4.2.4/lib/rails/commands/commands_tasks.rb:80:in `block in server'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/railties-4.2.4/lib/rails/commands/commands_tasks.rb:75:in `tap'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/railties-4.2.4/lib/rails/commands/commands_tasks.rb:75:in `server'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/railties-4.2.4/lib/rails/commands/commands_tasks.rb:39:in `run_command!'
/home/discourse/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/railties-4.2.4/lib/rails/commands.rb:17:in `<top (required)>'
bin/rails:4:in `require'
bin/rails:4:in `<main>'

Env

hostname	discourse
process_id	9805
application_version	af7d51e9233527544dda2fe4254ef5cd87de0c22
HTTP_HOST	localhost:3000
REQUEST_URI	/admin/site_settings/top_page_default_timeframe
REQUEST_METHOD	PUT
HTTP_USER_AGENT	Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36
HTTP_ACCEPT	*/*
HTTP_REFERER	http://localhost:3000/admin/site_settings/category/all_results
username	admin
params	
top_page_default_timeframe	quarterly

branch with commit showing changes to produce the above errors:
https://github.com/cpradio/discourse/commit/5e7a84626c6b78c2ee7fa6dadb8cb7606cfaad6f


(cpradio) #13

Maybe I’m over complicating this. As it seems I can get it to work properly by using

  top_page_default_timeframe:
    default: 'yearly'
    type: enum
    choices:
      - all
      - yearly
      - quarterly
      - monthly
      - weekly
      - daily

And that doesn’t require the top_period_setting.rb file which avoids the enum validation/saving issue I was experiencing using that method.

That method was being attempted with

  top_page_default_timeframe:
    default: 'yearly'
    enum: 'TopPeriodSetting'

Will a PR that isn’t using a enum setting be accepted? (as I have that working)

https://github.com/discourse/discourse/pull/3837


(Sam Saffron) #14

Sure, just :bear: with us, we are on a team meetup at the moment, struggling to have my backlog not eat me.


(cpradio) #15

No sweat, I made huge strides, I just can’t seem to figure out the enum setting process. I must be missing something silly, just not sure what.

Both sets of commits are there, the second actually works, the first throws an error when saving.


(Sam Saffron) #16

The enum class really is not necessary. If you can get away without it its better anyway, less code to carry around.


(cpradio) #17

Okay, then my PR works. It doesn’t use an enum setting class. I simply was considering that option to make it have less areas to support All, Yearly, Quarterly, Monthly, Weekly, and Daily.

So the PR is there, review it when you guys have time, no rush. :smile:


(Régis Hanol) #18

Thanks @cpradio, I just merged your PR :+1:


(Régis Hanol) #19