Topic list tabs for user-customizeable saved filters

rfc

(Dave McClure) #10

I think you can make a strong case for having Watched or Tracked be automatically added to this list.

But I would also like to be able to add categories I care more about without adding any more noise.

I don’t want to see every topic in these categories show up with little bubbles in my unread list and I don’t want to get notifications about them. I just want to be able to have a view like Latest that hides things I don’t care as much about.

So why not just Mute the other categories? Well, I’d still like to have access so something like Latest that does show all categories.

That makes complete sense.


#11

Thanks for RFC, it’s exactly a feature I’m lacking in Discourse when I start thinking about massive usage.

Approach #2 (as something that visible and editable in user settings) looks consistent with current approach at first but I guess it’s another feature. In User Settings we have several sets of categories to manage user’s track status. But here we’re talking about visibility of topics on home page. I think it’s ok to have a hidden category for home page but have it in “Tracked first post” set.
So I’d not mix these conceptions (I also at first came up with the idea to have additional settings for hiding category in user settings).

I like the idea to manage category visibility on the main page (Approach #1). But setting explicitly visible categories could be pretty limiting. Because it’s automatically leads to the fact that users will be missing all new categories (topics from them). So I’d suggest to exclude categories instead of to include.
Ideally it could be two modes in the dialog: choose what to exclude and choose what to include.

In anyway let me emphasis that from my point of view it’s a very important feature. Not particular implementation but conception of filter topics on main page. Because it’s the most often reasoning against Discourse I heard (“there’re a lot of unrelated stuff on main page!”) from (non-tech) people.


(Dave McClure) #12

Another observation here to consider when refining the proposed solution here:

I think this is problematic.

It would be preferable IMHO if the design encouraged those users could just “star” or “favorite” that one category, instead of having mute all the others.


(Leo McArdle) #13

I humbly propose an approach combining #2 with some ideas I’ve previously expressed, and these comments:

Approach #2½

  • Add a Favourites list to the Categories section on the User Preferences page
  • Add a ‘my categories’ option to the categories dropdown on all topic list pages
  • This behaves like the ‘all categories’ option, but only contains topics from categories (and categories, on the categories tab) that are tracked, watched or favourited

I think the advantage this has over approach #2 is that it keeps the current relationship between the categories dropdown and the tabs to the right:

Currently, the categories dropdown filters on a category level (between all, or one specific one), and the tabs further filter on a topic level (between different topic statuses and ordering).

Approach #2 proposes adding a category filter to an area which currently only holds topic filters, this approach puts that same category filter in the area which currently holds category filters. It could perhaps be called ‘favourites’ rather than ‘my categories’ - although I think ‘my categories’ better expresses that this contains watched/tracked categories as well.

Another advantage to this approach is that it allows you to filter by your favourite categories in tabs other than just “Latest”. Approach #2 essentially proposes a “Latest Favourites” tab. This approach essentially proposes the same “Latest Favourites” tab, along with a “New Favourites”, “Unread Favourites”, “Category Favourites” and “Top Favourites” tab - so users can consume their favourite categories in whatever way they want.

Mockups

Assuming the user is doing something like watching #feature, tracking #howto:admins and favouriting #plugin and #ux

my/latest

my/new

my/unread

my/categories


(Dave McClure) #14

Yep, looks good to me! I think this is an improvement over the original proposal #2.


(Dave McClure) #15

A few more related topics (original post is too old for me to edit):


(Dave McClure) #16

Has anyone explored the idea of having a persistent sidebar on the left for category navigation?

More and more, I’m finding myself wishing for something for navigation and filtering the topic list by category that follows the pattern used by Gmail (for labels) or Slack (for channels).

The “Category + Latest” style for the category page is a step in that direction, but once I choose the category, then I lose the sidebar navigation. I also think the style could be super simple, basically just a vertical list (a la Gmail labels or Slack channels):

All categories

Foo
Foo/Red
Foo/Blue
Bar
Bar/Green
Bar/Pink
Baz

All tags

ping
pong
pang

Selecting one category or tag would filter the list accordingly on the right. Selecting “All Categories” would show everything.


In addition, Gmail lets you determine which labels to show by default with the options (Show, Show if Unread or Hide). Similarly, Slack gives you the option to Star a channel, which makes it show up in a shorter, curated list.

I think something similar here would still help too:

Favorites

Categories
Foo
Bar/Pink

Tags
Ping

In addition to having easy navigation to any individual favorited category or tag, it’d be cool if selecting “Favorites” would filter the list to everything that matches any “favorited” category or tag.


(Evgeny) #17

If I understand correctly after translation, I did something similar. But I want to say, this plugin is not universal. It may not work. It was created only for one specific site. In the source code of the plugin, hard-coded a specific way, with the website address… But you can look at its code. To do something similar. Remove all unnecessary.

You can try to use another: discourse-sidebar-blocks
And just to write a widget for categories.

$.ajax({
          url: "/categories.json",
          dataType: 'json',
          async: false,
          success: function(data) {....

(Erlend Sogge Heggen) #18

Yes, but only in mock ups:


(Erlend Sogge Heggen) #20

We’re sponsoring a developer to work on this as a plugin. Approach #2 seems like the way to go for an MVP. I’ll post a final spec below based on @mcwumbly and @LeoMcA’s mockups.

Some modifications:

  • The primary place of interaction should be the /categories page, where a star can be clicked to favorite a category. (mockup below).
  • I don’t think it should be added to the Notifications page. Favorites will have no effect whatsoever on notifications. I’m opting for the Interface page instead.

SPEC: Favorite Categories

1. Expose a star button on the /categories page

Stars in /categories are /hidden with toggle same as we do with topics: 29

Categories

(Could also see how it looks with stars left-aligned on parent categories as well)

Sub-categories

2. Add a Favorites list to User Preferences : Interface page.

3. Show “Favorites” in category drop-down

If any categories are added to Favorites, a Favorites tab is visible on the topic list page.
If the list is blank, “My Favorites” won’t show.

Assuming the user is doing something like watching #feature, tracking #howto:admins and favouriting #plugin and #ux, user would see the following (shown here as “my categories”):

my/latest

my/new

my/unread

my/categories

(Clickable Stars missing in mockup. Also, this screen might not doable.)

Stretch goals:

  • Favourited categories should be listed at the top of /categories and in the categories drop-down.
  • User can set “My Categories” as their default index
  • Admins can define a “My Categories” preset, so registered users are already set up with some default Favorites.

Simplifying the top menu
Customizable Homepage or Discussion Feed?
Favorites - select your favorite categories
Building New Topic Lists
(Dave McClure) #21

So glad to hear this, @erlend_sh

I have a few thoughts, which may deserve mock ups, but I’m on my phone right now.

  1. We’ve hidden the category drop-down. Would really like a way to have a simple top menu tab for the favorites topic list rather than bringing back the whole drop-down.
  2. Perhaps, rather than a separate categories page for my/categories, the “starred/favorites” categories could be shown together as a separate group at the top of the existing categories page?
  3. Seems like it’d make sense and be consistent to be able to star/unstar a category from the category topic list page (next to the drop-down where I can watch/mute it, etc).

(Erlend Sogge Heggen) #22

Maybe achievable with a theme module? I’ve seen similar tricks: Adding Unsolved button to top menu using custom HTML

If not then you should probably roll your own extension or fork of this plugin, because hiding the category drop down is highly non-standard.

So basically the same as the “move favorited categories to top of categories list” stretch goal right?

That’s some prime real estate… I can support it as a stretch goal. I think it should be behind a setting, because this is more in your face than any of the other UI we’re adding. It adds a choice + unknown to what is currently a single option.


(Dave McClure) #23

The intersections for my/new and my/unread are not important to me, and I kind of doubt they are important to most. Stuff in /unread is likely of interest regardless of the category…

So, my preference would be to keep it simpler for starters and only have a tab for “my categories” that is equivalent to my/latest.

If we need to do this with further customization, that’s OK, but maybe this is an opportunity to reduce scope for this plugin.


(Leo McArdle) #24

I’d agree my/unread is of minimal importance, because as you say:

(but I included it in my mockups for consistency and completeness sake)

I wouldn’t agree that my/new was as unimportant - in fact, I think it’s the most important feature here, since nothing remotely like it exists already: “Show me stuff I haven’t seen, but you know I probably want to”.

This breaks the user expectation of what those tabs do (at least by default): the dropdown on the left filters what appears in the tabs on the right.

Implementing a link to my/latest as a tab through a plugin should be trivial.


(Dave McClure) #25

Cool. We can revisit how to tweak things to our particular needs at a later time through a plugin or other customization.

I certainly do not want to get in the way of more important progress here.


(Erlend Sogge Heggen) #26

@mcwumbly and @LeoMcA this is now available for testing.

To test it, please checkout the ‘favorites’ branch of Bianca’s fork of Discourse and the discourse-favorites plugin.


Mute/hide categories for a specific user from API?
(Dave McClure) #27

I haven’t been keeping up with a development environment recently. Is there any publicly accessible sandbox with this running? Or will this be enabled on meta at some point? (I can also reach out privately about trying this out on our hosted staging environment).


(Erlend Sogge Heggen) #28

I’ll try make that happen, but no promises! Everyone’s schedules are a bit more irregular than usual seeing as it’s Christmas.


(Dave McClure) #29

No rush on my end. I could just wait to try it out here on meta if that is going to happen at some point.


(Evgeny) #30

I tried to put the plug-in on the locale, the error is the white screen.
Only by removing the plugin was it possible to look at the logs.