Agora Bugs People Features BBCode Features touching other modules Code Resources Agora Agora is Horde's forum module, providing comments on user submitted content in e.g. Ansel or Jonah. Bugs List any tickets on http://bugs.horde.org/ that cover this issue or are relevant to it. People Stephan (webmaster <ät> dasourcerer net) Almost certainly others Features Structure Introduce categories for boards as an additional means organization. For larger installations, boards alone might be insufficient. Categories + Boards + Threads + Thread pages + Posts + Attached files Pretty URLs Apart from being just "pretty", URLs should express is-a, has-a or subset relations. Examples: http://example.com/horde/agora/main/testboard/testthread/page/3#post-9365 Category titled "Main" --´ | | | | | Board titled "Testboard" -------´ | | | | Thread titled "Testthread" -----------------´ | | | Show page 3 of the thread ----------------------------´---´ | Jump directly to post #9365 ----------------------------------´ http://example.com/horde/agora/main/testboard/testthread/9365/edit Category titled "Main" --´ | | | | Board titled "Testboard" -------´ | | | Thread titled "Testthread" -----------------´ | | Post with the id 9365 ----------------------------´ | (there is little sense in naming individual posts) | Action: Edit post #9365 ---------------------------------´ http://example.com/horde/agora/recent/page/3 List threads that got ----´ | | recent replies | | Show page three ----------´---´ In order to create a named URL part, the following operations should be performed: Strip trailing or leading whitespaces Transform all letters into lower case Translate all letters not within a-z into their phonetic equivalents. Examples: ||~ Original Letter || ä || ß || ø || ð || +----------+--+--+--+--+ |Equivalent|ae|ss|oe|th| +==========+==+==+==+==+ * Turn everything except a-z and 0-9 into a dash ("-") Merge multiple dashes into one In case of a collision: Append a dash followed by the number of colliding strings + 1 (should result into "foobar", "foobar-2", "foobar-3", etc.) Statistics People *love* statistics. Providing them also seems to encourage user participation. In particular, provide a publicly available stats page featuring: Top n most active users (by post count) Top n most popular boards (by post count or by views) Top n most popular threads (by post count or by views) Last n threads (possibly drop this in favour of /recent) Generic stats like: >>* Total number of threads >>* Total number of posts >>* Average number of posts per thread (bonus: Use this to determine "hot threads" instead of a fixed value) >>* Average number of posts per day and per hour (seems to be bogus, but people like it. And it is cheap to generate: Take the first and devide by 24) * Overview over the number of posts on each of the last n days Possibly provide all of these via blocks as well. Syndication Provide RSS and Atom feeds (c.f. Project/FeedEverything). In particular: Feed solely for threads (e.g. newly created threads will be announced in here, showing the content of the very first post in the feed entry.) Full content feed (All new posts go in here) Both again for specific boards (this is excellent for larger installations with high traffic) Moderation Currently, there can be only one moderator per board. Add an extra table to allow for an n:n (n:n) boards-to-moderators relation. Also: Allow moderators to perform reversive actions in boards not assigned to them, tying them closer to their assigned boards. Linkback Enable threads to accept ping- and trackbacks. In addition, catch refbacks. Plugin Infrastructure Forums are often subjects to heavy modifications in an effort to appease users. A powerful plugin infrastructure might help to keep the installed software maintainable while allowing the desired modifications. The Habari Project has got a system that might be a good start for this. BBCode An advanced BBCode parser has been proposed a long time ago. Since then, a better one has been in the making. Features include: Inspect links regarding availability. Examples: www.example.com or [url]http://www.example.com[/url] would be rendered as http://www.example.com Unreachable links would be marked with rel="nofollow", so there won't be an impact on search engine rating: http://www.example.com Additionally, CSS selectors could be used to give users an immediate feedback on broken links. Inspect embedded images Check if: an [img] tag is pointing to a reachable destination if the destination is actually an image (the rise of one-click-image-hosters seems to entice users to c&p the URLs of result pages rather than the URLs of the actual images) Eventually, retrieve the image dimensions. As an example [img]http://www.example.com/example.png[/img] would be rendered as http://www.example.com/example.png Enhanced quotes The [quote] tag has got an optional parameter that can hold three different kinds of values: A quoted string, the id of a post or an URL. The last two will be using the cite-rel microformat in the rendered output. Example: [quote=http://www.horde.org] Welcome to the home of the Horde Project. [/quote] Will be rendered as:
Quote The Horde Project:
Welcome to the home of the Horde Project.
Using a post id will in addition show the username of the original poster Features touching other modules Ansel could be utilized to provide (more or less) one-click-hosting out of Agora, offering a convenient method to publish images within posts. Scry. Create polls via API calls and tie them into Agora in an 1:1 (1:1) relation (meaning there will be at most one poll per thread) Trean. Keeping track of larger forums is hard. Allow users to bookmark threads via Trean. Preserve Agora's logical structure (categories, boards) when displaying them. Bonus: Provide an Atom/RSS feed for bookmarked threads only. Folks. Link usernames to profiles in Folks accordingly. Possibly provide comments functionality for Whups and Wicked Code H3: http://cvs.horde.org/agora H4: http://git.horde.org/browse/agora/browsedir.php?f=agora%2F&onb=master Resources API Documentation Back to the Project List