[cvs] [Wiki] created: Project/Agora

Wiki Guest wikiguest at horde.org
Mon Aug 16 21:50:23 UTC 2010


guest [94.139.23.80]  Mon, 16 Aug 2010 17:50:23 -0400

Created page: http://wiki.horde.org/Project/Agora

[[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.
<code>
  Categories
   + Boards
      + Threads
         + Thread pages
         + Posts
            + Attached files
</code>

* Pretty URLs
> Apart from being just "pretty", URLs should express is-a, has-a or  
> subset relations. Examples:
<code>
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           ----------´---´
</code>

> 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:
* Inspect links regarding availability. Examples:
<code>
www.example.com
</code>
> or
<code>
[url]http://www.example.com[/url]
</code>
> would be rendered as
<code>
<a href="http://www.example.com" title="Example Site" type="text/html"  
target="_blank">http://www.example.com</a>
</code>
> Unreachable links would be marked with ''rel="nofollow"'', so there  
> won't be an impact on search engine rating:
<code>
<a href="http://www.example.com" rel="nofollow"  
target="_blank">http://www.example.com</a>
</code>
> 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
<code>
[img]http://www.example.com/example.png[/img]
</code>
> would be rendered as
<code>
<img src="http://www.example.com/example.png"  
alt="http://www.example.com/example.png" title="example.png (65536  
bytes)" width="640" height="480" />
</code>

* 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:
<code>
[quote=http://www.horde.org]
Welcome to the home of the Horde Project.
[/quote]
</code>
> Will be rendered as:
<code>
<div class="quote">
Quote <cite class="via"  
id="cite-ef58e3aa-af7f-45ba-a17d-5192ffe883b7"><a  
href="http://www.horde.org" type="text/html" target="_blank">The Horde  
Project</a></cite>:
   <blockquote cite="#cite-ef58e3aa-af7f-45ba-a17d-5192ffe883b7">
     Welcome to the home of the Horde Project.
   </blockquote>
</div>
</code>
> 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
* H3: http://cvs.horde.org/agora
* H4: http://git.horde.org/browse/agora/browsedir.php?f=agora%2F&onb=master

++ Resources
* [http://dev.horde.org/api/agora/ API Documentation]


----
Back to the ((Projects|Project List))



More information about the cvs mailing list