6.0.0-beta13
4/11/26

[[toc]]

  • Agora
    Agora is Horde's forum module, providing comments on user submitted content in e.g. ((Project/Ansel|Ansel)) or ((Project/Jonah|Jonah)).

++ Bugs

List any tickets on http://bugs.horde.org/ that cover this issue or are relevant to it.

++ People

  • Stephan (webmaster <ät> dasourcerer <döt> 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 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 [http://www.habariproject.org Habari Project] has got a system that might be a good start for this.

+++ BBCode
An advanced BBCode parser has been proposed a [http://bugs.horde.org/ticket/7285 long time ago]. Since then, a better one has been in the making. Features include:

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 [http://microformats.org/wiki/cite-rel 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

  • ((Project/Ansel|Ansel)) could be utilized to provide (more or less) one-click-hosting out of Agora, offering a convenient method to publish images within posts.
  • ((Project/Scry|Scry)). Create polls via API calls and tie them into Agora in an 1:1 relation (meaning there will be at most one poll per thread)
  • ((Project/Trean|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.
  • ((Project/Folks|Folks)). Link usernames to profiles in Folks accordingly.
  • Possibly provide comments functionality for ((Project/Whups|Whups)) and ((Project/Wicked|Wicked))

++ Code

++ Resources

  • [http://dev.horde.org/api/agora/ API Documentation]

Back to the ((Projects|Project List))