Forum OpenACS Development: Enhancing forums

Posted by Matthew Coupe on
I was wondering if anyone had done any work to Enhance to forums package.

The kind of enhancements I'm thinking of are:

Ability to make a post a 'sticky'
Allowing users to rank posts
Displaying more user information next to the posters name (such as number of posts and perhaps giving them a rating like 'Power Poster'.)
Showing an icon next to the posters name

I see these features on quite a few message board packages and think it would be good for OpenACS Forums to do similar things?


2: Re: Enhancing forums (response to 1)
Posted by Michael Cordova on
I'm working in a few enhancements of forums package, such as
* Navigation links (next/prev thread when viewing a message),
* Ability to expand threads in forum-view page,
* Showing user portraits...
* Mark messages as read/unread using views package

These features are almost done. But I have not found a simple way to sort all threads (maybe a few of them were expanded) by date, descendant. I mean, when using tree_sortkey, is not possible (in just one single sql query) to sort them by another criteria. The only way is doing 2 queries, one to get the message root id's with whatever criteria you want, and then, another query to get all messages...

Ranking posts is another idea I have, but the ratings package does not work for me right now. And also, tagging messages (automatically? depending on some rules).

BTW, I'm trying to do a 100% accesible forums enhancement, with "old-style" links (I mean, click to go to another page...), but I'd like to add a more usable one.

Is there any javascript/ajax version of forums, where were possible to expand threads? Thanks.

3: Re: Enhancing forums (response to 2)
Posted by Matthew Coupe on
I'm very excited to see this in action! Will you contribute to CVS?

I'm sure I saw something by Rocael at some point where he'd done a version of forums with different views? Maybe he could help?

4: Re: Enhancing forums (response to 3)
Posted by Don Baccus on
That code wasn't actually written by Rocael (someone else at Galileo did it IIRC), didn't work well, and wasn't easily salvagable, so it won't show up in an official release.

On the other hand, a more robust implementation of various good ideas are more than welcome, though inclusion in our official version of forums will require approval of the .LRN leadership team, since it's a crucial part of that product and is under the control of the .LRN project.

Inclusion in our CVS and therefore in .LRN requires

1. that the features be commonly thought to be useful.

2. that the new features be accessible (or turned off by default if not) - the decision was made last year that we'll require .LRN packages to be accessible (legal requirements for universities in the EU now, and growing pressure in that direction in the US, too).

3. stand up to testing and review, i.e. be reasonably well implemented and robust

Hopefully these requirements don't seem too stringent to people ...

5: Re: Enhancing forums (response to 4)
Posted by Michael Cordova on
What I have done is a non javacript version. So... I hope it was a fully accessible version.

I have been playing with sql for grabbing more data (a new view for adding a few columns), css for UI improvements. I've also made changes to tcl/adp to switch between threaded and non threaded html views (UNED requirements)
And I'd like to add a little of ajax in some simple actions (for instance: "mark this reply as unread"), without removing the accessible links.

I'd like to know where is the best place to write about my enhancements, with screenshots if possible, discuss about it, propose improvements, tips, share, etc.
Maybe I could became member of "Forum Facelift Project"

6: Re: Enhancing forums (response to 5)
Posted by Nima Mazloumi on
Is there a demo server to see your work or can you upload screenshots?
8: Re: Enhancing forums (response to 6)
Posted by Michael Cordova on
There is not yet a demo server, let me clean the code a little, and install it in a more stable server. Right now it's on an unstable development server we are constantly reseting...

I can capture a few screenshots, and publish them with a list of new features in a wiki, and post here a link.

Well, I can write now a list of features:

uForums (Forums enhancements for UNED)


  • expand node(s), so...
    • show expanded nodes
    • collapse node(s)
    • collapse all (button or list-template action)
  • show unthreaded version button (sort only by date)
  • "new message" highlight (using views package and/or a new table for read/unread feature)
  • show only new messages button
  • mark as read/unread (if views is available)
  • mark thread as read/unread button (bulk action)
  • mark all forum as read button
  • tooltips to show more info
    • preview content
    • authors information details (disabled right now)


  • Next thread /prev thread navigation links
  • User portrait
  • reply to author button (link to mail)
  • forward message button (email to...)
  • row.adp architecture reviewed

All new features check a package parameter (new for each feature) value to know if the new behavior is enabled or not, and if it's what kind of behavior is set. For instance,

  1. when marking a message as unread ¿should be marked as unread all the replies or only that message?,
  2. When expanding a node: ¿expand all levels, or just one?

<h2>In development</h2>
I'm working now in that points:

  • write tests
  • test when moderated forums
  • add return_url to some actions
  • simple admin page (with common parameters)

PS: I have to say that there have been 5 people involved in that develpoment during the last year at UNED: David Arroyo (First UNED requirements done), Raúl Morales (Portlet), Alberto Pesquera (DB and TCL API), Mario Aguado (data model modifications, and Team Leader/Supervisor), and Me: (Mostly User Interface changes)

10: Re: Enhancing forums (response to 8)
Posted by Michael Cordova on
I missed 2 features actually done:
* "switch to another group's forum" widget
* human friendly posting dates (13 minutes ago, 4 hours ago, sunday... and so on)
12: Re: Enhancing forums (response to 10)
Posted by Emmanuelle Raffenne on
Miguel Angel,

Is the "switch to another group's forum" based on "dotlrn communities" groups?

Posted by Raúl Morales Hidalgo on

it switches between the group forums, not to other forums in another groups :)

15: Re: Enhancing forums (response to 13)
Posted by Emmanuelle Raffenne on
oooh ok. That makes sense now.
11: Re: Enhancing forums (response to 5)
Posted by Emmanuelle Raffenne on
Hi Miguel Angel,

All those features sound great and I'm looking forward to seeing a demo.

Regarding including Ajax based code, I would not include it in the main package but rather write a ajax-forums-ui (ala ajax-filestorage-ui). In the near future, when ARIA become available and supported by main web browsers, it would allow us to have an aria-forum-ui for example so the user could choose which UI to use. Having separate packages for the UIs would ease extensibility and maintenance.

Also, I guess that writing separate package for UI will be easier when package types that Dave is working on (I hope so :-) will be available (see -btw, we should include that TIP in the agenda of the next OCT-

14: Re: Enhancing forums (response to 11)
Posted by Michael Cordova on
About a live demo, maybe in a few days it could be possible (not depending directly on me).

About Ajax, I agree with you about making a new package for a complete Ajax UI, but what I want to add are only simple actions, such as "click 'mark as read' button". If the browser is not javascript compilant, it has not enabled that feature, the current link will work as it actually does.

I'm thinking on a forums enhancing, not on a complete rewrite of forums using (almost only) Ajax, so I think a few Ajax requests should be too bad.

7: Re: Enhancing forums (response to 4)
Posted by Victor Guerra on
That code wasn't actually written by Rocael (someone else at Galileo did it IIRC), didn't work well, and wasn't easily salvagable, so it won't show up in an official release.

Nop.. no one at Galileo did that implementation.

9: Re: Enhancing forums (response to 1)
Posted by Nima Mazloumi on
We had two requirements here at our university which I wanted to share with you:

- sticky threads
- changing a message within a given timeframe (like 2 minutes).

The first one is to make sure some threads always stay on top. The second that users who accidently submitted the message or have forgotten something can make a change. Before changing is refused.

Has anyone implemented something like that?

16: Re: Enhancing forums (response to 1)
Posted by Michael Cordova on
I have found 2 issues about CLOSED posting policy forums:

1) that forums aren't listed on forums/index page. As if they were disabled
2) users are allowed to reply (I think they shouldn't be)

If I'm not wrong, a closed forum should be read-only for users (admins always can post).

I'm going to fix that bugs.

17: Re: Enhancing forums (response to 16)
Posted by Matthew Coupe on
Hey Miguel,

I was wondering if you managed to do a sticky thread implementation?

The features you listed sound great though, looking forward to seeing a demo.


18: Re: Enhancing forums (response to 1)
Posted by Michael Cordova on
I've just uploaded to file-storage a few screenshots of forums enhancements. If you miss something (i.ex. First Post column in forum, index a.k.a. threads-chunk), maybe is something I've hidden due to UNED requirements... (btw, First Post info is now showed as tooltip when mouse is over last update date)

I'm writing a list of new features and bugfix done

19: Re: Enhancing forums (response to 18)
Posted by Michael Cordova on
Sorry, the Forums enhancements link is wrong. The right one is that:
20: Re: Enhancing forums (response to 19)
Posted by Matthew Coupe on
I really like the look of the work you are doing here, well done!

How difficult would it be to implement an open all unread messages link?

21: Re: Enhancing forums (response to 20)
Posted by Michael Cordova on
I think it shouldn't be too difficult, but If you mean, using view-message page, we will need another page script, something like, view-messages to pass it all unread messages id's.

If you mean, expand unread messages on forum-view, there is actually a "show only unread" button.

22: Re: Enhancing forums (response to 1)
Posted by Michael Cordova on
In order to improve the usability of forum admin and forum privileges pages, It'd be good to add a lot of text in legend explaining what does mean some options.

Also, we are thinking about to add a simpler way to change options (drop down menus or something, instead of the current textbox), and move the "Grant permission" button to a "Super-advanced" section... due to it goes to a hard page. BTW: I think there is a mess about how is shown the permission hierarchy (for instance... cal_item_create depends on create that depends on forum_moderate, why?? maybe that create should be "forum_create").

We have found a bug about the "Users Can Create New Threads" option when creating or editing a forum (whose solution is not as trivial as it could seem). And another one about the use of "read_private_data" privilege on forums-portlet (.LRN) We are going to talk about that on a separate thread due to its importance.