Implemented Mark All Forums Read using What's New?

Despair

Active member
If you don't consider this a bug, can it be moved to suggestions?

This has been bugging me for a while. Currently when you mark all forums as read, it uses the current timestamp that you accessed the page. This is not good when you're marking the forums read after you've just viewed the "What's New?" if it has more than one page. If it takes you 30 minutes to view all the threads on the first page and then navigate to the second page, your timestamp will now change to the timestamp of accessing that second page. If you now click mark all forums read, you'll also be marking threads as read that were posted within the last 30 minutes that you didn't see or read and not realize it. Actually this can happen even if your what's new page only consists of one page. Assuming the user clicks mark all forums as read on the what's new page, they'll be fine, but not if they click it on another page since it'll take the timestamp of the newer accessed page.

One way to deal with this might be that after you've gone through a few pages of what's new and read all the threads you want, don't click mark forums as read yet, but rather click what's new again and see if there is anything that was posted within the time it took you to read those threads. Then clicking mark forums as read at this point will not result in you missing any recently posts assuming you're clicking mark forums as read from the what's new page instead of other pages such as a thread page. That is what I do. Another way may be to open a new tab for the additional pages of what's new and keep the original first page (or any other page) open then click mark forums as read on the original page you left open. In both cases it's always a bit of a hassle to do this though. Not to mention, not everybody knows to do this. For those who want to make sure they've read everything, there are probably users who have not knowingly missed certain posts due to this situation.

Maybe when the user clicks mark all forums read, you first look up the `xf_search` table and check if there is a `search_type` of new-threads for that `user_id` and use the timestamp of the newest `search_date` column as the timestamp. If it doesn't exist then fallback to using the timestamp originally provided in the query string? Although the what's new data is not cleared out immediately, so there would need to be an indicator after the forums have been marked as read...

Edit:
Actually after thinking about this a bit more, this might not make sense, depending on how some people use mark forums as read. It's possible some users may click what's new, check out the threads, but not click mark all forums read. After they may still navigate around the forum and see a new thread that was created after they viewed what's new. At that point let's say the title of the thread doesn't interest the user, so they don't click it and now click mark all forums as read. Since this user has a what's new search result with an older timestamp this thread would not be marked as read and the user may be confused as to why it didn't mark as read.

Another case may be (depending on how long the new-thread search result is stored) a user may view what's new, not click mark all forums read, come back in a few days without clicking what's new and then click mark all forums read. They would still have all the posts from the last few days in their what's new. Not sure if anyone does that, but it could be possible.

Maybe a better solution would be to have the newest `search_date` timestamp carried across all the pages on the what's new while regular forum pages would just use the current timestamp of accessing that page. This would fix weird situations like the above, but doing it this way, the user still needs to ensure they click mark all forums read from the what's new page instead of any random forum page if they don't want to miss any posts.
 
Upvote 0
This suggestion has been implemented. Votes are no longer accepted.
That link is independent from the what's new system - it's shown on every page and people don't have to hit what's new to use it. It doesn't make sense to tie it to what's new. A more specific link could be used to do that, but I'll move this to suggestions.
 
That link is independent from the what's new system - it's shown on every page and people don't have to hit what's new to use it. It doesn't make sense to tie it to what's new. A more specific link could be used to do that, but I'll move this to suggestions.
Sorry, I probably didn't explain well enough. I didn't mean you should have to click what's new to use it, rather that when on the what's new page the timestamp should carry across multiple pages of what's new instead of refreshing the timestamp with each page click while on the what's new page.

For example, say I click what's new, and the mark forums as read button links to:
http://xenforo.com/community/forums/-/mark-read?date=1302710460

Assuming my what's new has multiple pages and I navigate to the second page about 10 minutes later, the timestamp would now be:
http://xenforo.com/community/forums/-/mark-read?date=1302711060

I'm trying to say that the timestamp should use the initial timestamp when moving across pages, so even if 10 minutes later I navigate to the second page, it should still be 1302710460 and not 1302711060. However, regular forum pages aside from what's new should still always use the current timestamp in case a user decides to mark all forums read in other areas.

The reason I considered this a bug is because the result set is saved and as long as you don't click what's new again, the results on your what's new page do not change. Since the result set is saved from newest to oldest, if you click on the 2nd page and during that time someone posts new threads, and you click back on the first page you still won't see the new threads. With that said, it makes more sense to use the original timestamp that corresponds with the result set you have. With the current method you'll be potentially marking content you haven't read as read not knowingly. Some systems might not save/cache this result set meaning if you click back on the first page it would include the new content as well. In those cases it makes sense to use a more current timestamp as it'll also mark the new results during that time as read, but with XF I think it should use the initial timestamp of the result set you're viewing.

Hopefully that better clarifies what I meant.
 
The Mark Forums Read link on the http://xenforo.com/community/find-new/posts page now uses the original timestamp, so only content which shows on those pages since the search was performed.

The Mark Forums Read on the navigation bar still does all content.

I shall therefore mark this as implemented.
 
Last edited:
Nice to see this made it in. Now there is no need to click what's new again at the very end. And wow at the wall of the text I wrote over 2 years ago... Good job on finding this thread, I wouldn't even want to read that post again. :LOL:
 
Top Bottom