Here's the BBCode Cheatsheet I've been working on: <http://jsfiddle.net/danneu/er62ohnd/2/embedded/result/>
It's missing some things like the javascript that makes `[hider]`s work. It's also not a comprehensive list of all the tags I want to support.
But I'm pretty proud of the `[tabs]` BBCode. Ever since I heard of BBCode-supported tabs, it has been the first thing I attempt to implement in a BBCode parser since it's pretty much the upper-bound of complexity.
I'll post an update once I've added all the BBCode that I'm going to support at first.
> How do you plan to do unread notifications in threads? For example, my favorite forum software (SMF) has a topic log in its database with the member id, topic/thread id and the id of the last message id viewed (which I believe is an AJAX call for browsers with JS enabled, and a message included with POST when users access a new topic page for disabled JS browsers like WAP or Lynx). That makes it simple (relatively so) to handle indicators of new posts by comparing the topic's latest message id with the topic log.
Thanks for sharing. I hadn't pondered it much, but that's how I will do it (unless I can prove that it's insufficient).
IIRC, vBulletin 3.8 let me downgrade to a similar implementation that instead stores that data in the user's browser cookie instead of generating a database update per authenticated request. Of course, a database-backed solution will actually persist across devices/sessions at the expense of database resources, so it's a better user experience (unless you run out of database resources).
I already incur a database update every authenticated request by updating `user.last_online_at = NOW()` in the same query that I load a user given the `sessionId` in their cookie. (Source: <https://github.com/danneu/guild/blob/master/server/db.js#L407-L418>)
I could incur another update on every authenticated topic-/convo-view request to update some `latest_topic_views` table, but it can be done asynchronously.
I'll give it a shot.
> @The Nexerus: I would say my keyboard is a normal layout.
>
> @Shienvien: I agree, it's a habit I have that I never found as anything until now. I type that way because I've always typed that way since I learned how too. It won't be easy to break that habit now that this has come to my attention.
Don't worry about it too much since this behavior will go away once I roll out BBCode, a feature I'm wrapping up right now.