Created by Tracy Adams and Carl Blesius, last modified by Gustaf Neumann 20 Apr 2017, at 06:00 PM
Project Initiation: Tracy Adams and Carl Blesius
Project Team: Don Baccus, Dave Bauer, Ishir Bhan, Andrew P, Rob, Alfred Essa
Key: (1) high priority, (2) medium priority, (3) will do it if we have extra time
Development to be done on HEAD
History
Our forums have been good for years, let's make them great!
Goals
- Expand Forums to make it serve as mailing list software
- Give forums a facelift with a focus on improved usability
- Make OpenACS forums best in class
Package Design Notes
A given forum package instance supports multiple individual forums, each of which supports forum threads and then messages. This is a bit a-typical of OpenACS packages, which each forum would be it’s own package instance. That bears to question – should the forum package instance be one and only one forum? This might save work as we could use package-level services like parameters for each forum. After some discussion, we decided to keep the design as is, that is, each forum instance will have multiple forums as there will be extensive forum-level functionality.
Bugs to fix
#2880 - "Anonymous Post" options sends out notification from poster's email pending DONE(Tracy)
#2733 - "Subscribe Others" in Forums Broken: pending…. (just block it out as it is very broken) DONE (Tracy)
#2704 - message posting broken if javascript disabled: ??...
After you post, you see a view that is in the middle of a thread. You should be scrolled down to where you post is, but you shouldn’t loose the context. DONE (TRACY)
The project will do these bugs first and then check them into the 5.2 branch.
Attachments
- See Site Wide Image Upload Widget
- Adding attachments is currently complicated and requires mounting an extra attachments and file storage packages and intricate setup.
- (1) Modify forum attachments the use content repository directly (and require no setup)
- (1) Modify the user interface to allow for attachment to be uploaded with the initial post.
- (1) For gif, jpg, png attachments, have them appear inline. (resized if too big)
- (2) Have the use of attachments a property of a given forum.
- (2) Have the use of attachments in the forums of a package instance a property of the forum package.
- (3) Have maximum file size a parameter of the forum packages.
Portraits
- (2) Users should be able to upload their portrait (if it doesn’t exist) when they submit a post.
- (1) The user’s portrait should be displayed (with an appropriate size) along with their post.
- (3) Use of portraits should be configurable at the forum level and the forum package instance level.
- (1) (investigate) – Is image magic quick enough to resize on the fly or do we have to store an appropriate size. Or is it easy to store a series of sizes right away? DAVEB-Two options, 1) generate thumbnail, medium, full size when uploaded like photo-album. 2) lazily generate the sizes and store them in the file system when they are requested. For portraits I think it make sense to just generate the right sizes, its also easier to code.
- DAVEB: Solution Grove has code for displaying portraits along with posts. It uses the acs-subsite portrait for this. This is committed to HEAD in CONTRIB (1-23-07)
Categories
- (1) When a thread is started, the user can choose relevant categories.
- (1) User should (parameterized) be able to add a new category.
- (2) Use of categories should be parameterized at the forum and forum package instance level.
- (1) View of threads in a given category in a given forum.
- (2) View of thread in a given category in a given forum package instance.
- (2) Forum administrator should be able to pick which categories are used.
Ratings
- A registered user must be able to rate a comment.
- A forum must can be configured to allow (or not) ratings.
Consolidated Views
- View of all threads in a forum package instance.
- View of all threads in forums where you are a member.
Forum Membership
- Add ability to have forums where there is a group of official members.
- (2) Users can join in the following ways
- Open (will inherit from the site map, and therefore the permissions from the package instance)
- Approval Process (break inheritance)
- Closed (must be added by admin) (break inheritance)
- (2) When users join (either by themselves or admin), an option to sign up for notifications is given.
- (1) Pages to view forum members
- (1) Admins can mass add people or mass invite people (optionally adding them to email notification)
- (1) Admins can remove people
- (1) Members (configurable) can see member list
Administrators
- Each forum should support a list of administrators
- If you have admin on the forum instance, you should be able to administrate each forum (later feature)
- Administrators of a forum should be able to add other administrators.
- Support Anonymous postings. DAVEB please clarify, I am guessing this means, allow users with permission to post, to post without revealing their identity, as opposed to letting the public post without logging in.
Notifications
- Users can sign up to notifications for a forum or thread.
- Users should have a consolidated page where they can control all their notifications.
- Users should be able to turn off all notifications (ideally for a given period of time)
BroadCasts
- (1) Administrators should be able to send out a broadcast to all forum members (messages that are sent by email regardless of notification setting)
Incoming Email (Dependent on OCT)
Should support the following
- (1) Respond to post (using the message_id of the post)
- (1) Starting new threads (using the forum_id of the forum)
- (2) Subscribing to forum (maltes: Isn't this notifications?)
- (2) Unsubscribing from a forum (maltes: Isn't this notifications?)
Parameters
- Each forum should have a way to configure parameters. Additional ones:
- From address – do you show the person’s email or specific a default email (maltes: we have this already)
- Configuring subject and footer and header
- New subscriber welcome message
Moderation
- In a moderated forum, posts must be approved before they are sent
- There is a selected list of moderators
- There can be a selected list of people whose posts are not moderated
- Moderators can ask for notifications on new submitted posts
Blocking
- Users can be marked to be blocked. These users will not get links to reply or post.
Posting and Viewing
- (1) View count (maltes: we have this already using the views package).
- (1) Items you haven’t viewed (what's new package)
- (1) Option to force preview (instead of post/preview)
- (1) (Configurable) Time to edit the post (this is a feature in Moodle that is nice... e.g. you have 5 min to edit this post)
- (2) maltes: Time to be allowed to edit a post. E.g. you should only be allowed to edit and delete your posting for the first 24 hours.
Spam/Bounce filters
- Regular expressions can isolate potential spam and bounced post for moderation (we might be able to package the code in the mailing list manager for this). maltes: there is a suggestion to base this on procmail.
Search before post (MS)
Related items
- (1) This post is related to this document. This post is related to this user.
Import/Export (Dependent on Don/Jeff)
- (1) Importing/Export Mailing list archive (don? jeff?)
- (3) UseNet?
- (1) Fixing issues with Merging users
- (2) Check for duplicate posts and remove
Templates
- (1) Provide a way to change the template for a post, thread and the forum (either easily understood and/or way to upload)
Search (Dave)
- (1) 1 forum
- (1) All forums you are in
- (1) All forums you have access too
Calendar View (Don)
- Provide calendar view (Don)
Created by OpenACS community, last modified by Gustaf Neumann 14 Apr 2017, at 11:06 AM
Get AOLserver and modules Download AOLserver and modules from CVS. Install Tcl if it is not installed yet.
Comments:
- one should base the documentation on releases, not on head versions. So, just relying on the head version of github is not recommended for beginners.
- newer versions of aolserver have ns_cache included (4.5.1 or newer). no need for the extra module listed below.
- using "aolserver40r10" as name for the install directory is strange, especially, when the release is not 4.0.10
[root root]# mkdir -p /usr/local/src/aolserver40r10/
[root root]# git clone git://github.com/aolserver/aolserver.git /usr/local/src/aolserver40r10/aolserver/
[root root]# git clone git://github.com/aolserver/nssha1.git /usr/local/src/aolserver40r10/nssha1/
[root root]# git clone git://github.com/aolserver/nspostgres.git /usr/local/src/aolserver40r10/nspostgres/
[root root]# git clone git://github.com/aolserver/nsoracle.git /usr/local/src/aolserver40r10/nsoracle/
[root root]# cd /usr/local/src/aolserver40r10
[root root]# cvs -z3 -d:pserver:anonymous@aolserver.cvs.sourceforge.net:/cvsroot/aolserver co nscache
Download en:tdom, tcllib, and XOTcl.
[root aolserver]# cvs -z3 -d:pserver:anonymous@cvs.tdom.org:/usr/local/pubcvs co tdom
[root aolserver]# wget http://heanet.dl.sourceforge.net/sourceforge/tcllib/tcllib-1.10.tar.bz2
[root aolserver]# wget http://media.wu-wien.ac.at/download/xotcl-1.6.7.tar.gz
Configure, compile and install AOLserver. Many people need to run more than one version of AOLserver in parallel. This section accommodates future upgrades by installing AOLserver 4 in /usr/local/aolserver40r10.
[root aolserver]# cd /usr/local/src/aolserver40r10/aolserver
[root aolserver]# ./configure --prefix=/usr/local/aolserver40r10 \
--with-tcl=/usr/local/lib/ \
--enable-threads
[root aolserver]# make
[root aolserver]# make install
If this is the only version of AOLserver in use, or is the default version, create a symlink. If not, then be sure to use /usr/local/aolserver40r10 instead of /usr/local/aolserver in future steps and check any scripts and makefiles you run to ensure they use the correct path.
[root aolserver]# ln -s /usr/local/aolserver40r10 /usr/local/aolserver
Configure, compile and install the modules.
OpenACS looks for the Oracle driver at /usr/local/aolserver/bin/ora8.so, but some versions of nsoracle may create nsoracle.so instead. In that case, you can symlink (ln -s nsoracle.so ora8.so) to fix it.
-
Install nscache
[root aolserver]# cd /usr/local/src/aolserver40r10/nscache
[root nscache]# make install AOLSERVER=/usr/local/aolserver40r10
-
Install nsoracle (if you want to use Oracle)
[root nscache]# cd ../nsoracle
[root nsoracle]# make install AOLSERVER=/usr/local/aolserver40r10
-
Install nspostgres (if you want to use Postgres)
[root nscache]# cd ../nspostgres
[root nspostgres]# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/pgsql/lib
[root nspostgres]# make install POSTGRES=LSB \
ACS=1 \
INST=/usr/local/aolserver40r10 \
AOLSERVER=/usr/local/aolserver40r10
You might try POSTGRES=PG_CONFIG if that does not work.
If you get errors like:
nspostgres.c: In function `Ns_PgTableList':
nspostgres.c:679: warning: passing arg 3 of `Tcl_DStringAppend' as signed due to prototype
then PostGreSQL is probably not in the standard location.
[jiml at cvs openacs here.] There are -new- (as of within 2nd quarter 2007) changes to nspostgres, there have been expansions of the ways to locate postgres, and changes to some error reporting. Please read the README and the Makefile. The nspostgres build can now use postgres's pg_config to locate a particular postgres installation. [jiml out]
The location of PostGreSQL is very dependent on which method was used to install it. To correct the problem, replace LSB with the path to the path to your PostGreSQL installation. Often this is /usr/local/pgsql.
Another possibility is that you may need to set the LD_LIBRARY_PATH environmental variable. You may still get warnings, but sometimes this will fix things enough to work.
[root nspostgres]# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/pgsql/lib
You can use the ldd command to verify that all libraries are linked in: ldd /usr/local/src/aolserver40r10/nspostgres/nspostgres.so
If you run into problems with libpq.a do the following (and repeat the step above)
[root nspostgres]# ranlib /usr/local/pgsql/lib/libpq.a
If you run into problems with the linker, edit the Makefile. Add -lnsdb to the MODLIBS var.
MODLIBS = -L$(PGLIB) -lpq -lnsdb
-
Install nssha1
[root nspostgres]# cd ../nssha1
Now install nssha1:
[root nssha1]# make install NSHOME=/usr/local/aolserver40r10
If the make fails you will have to edit nssha1.c. Comment out the following 2 lines (lines 139-140):
// typedef unsigned int u_int32_t;
// typedef unsigned char u_int8_t;
-
Install tDOM Note, if you use bash31 you need to apply a patch, see https://openacs.org/forums/message-view?message_id=369867 for details.
[root nssha1]# cd ../tDOM-0.8.0/unix
Edit the CONFIG file. Uncomment the instructions meant for AOLserver 4, but edit it to look like this:
../configure --enable-threads --disable-tdomalloc --prefix=/usr/local/aolserver40r10 --with-tcl=/usr/local/src/aolserver40r10/tcl-8.4.14/unix
Now you can compile and configure tDOM
[root unix]# sh CONFIG
[root unix]# make install
-
Install tcllib
[root aolserver]# cd /usr/local/src/aolserver40r10
[root aolserver]# tar xvfj tcllib-1.10.tar.bz2
[root aolserver]# cd tcllib-1.10
[root aolserver]# ./configure --prefix=/usr/local/aolserver40r10
[root aolserver]# make install
-
Install XOTcl
[root aolserver]# cd /usr/local/src/aolserver40r10
[root aolserver]# tar xvfz xotcl-1.6.7.tar.gz
[root aolserver]# cd xotcl-1.6.7/
[root aolserver]# export CC=gcc
[root aolserver]# ./configure --enable-threads --enable-symbols \
--prefix=/usr/local/aolserver40r10 \
--exec-prefix=/usr/local/aolserver40r10 \
--with-tcl=/usr/local/src/aolserver40r10/tcl8.4.14/unix
[root aolserver]# make
[root aolserver]# make install-aol
Add a database-specific wrapper script. This script sets database environment variables before starting AOLserver; this allows the AOLserver instance can communicate with the database. There is one script each for Oracle and PostgreSQL. They don't conflict, so if you plan to use both databases, install both. Note that this section requires you to have the OpenACS, which you can get through CVS, through a tarball, or by other means. You can come back to this section after you acquire the OpenACS code, but don't forget to come back. (Note to maintainers: this should be moved to the next page and integrated into the text there)
-
Oracle
[root aolserver]# cd /usr/local/aolserver40r10/bin
[root bin]# cp /tmp/openacs-5.2.0d1/packages/acs-core-docs/www/files/nsd-oracle.txt ./nsd-oracle
[root bin]# chmod 750 nsd-oracle
[root bin]#
-
PostgreSQL
[root aolserver]# cd /usr/local/aolserver40r10/bin
[root bin]# cp /var/tmp/openacs-5.2.0d1/packages/acs-core-docs/www/files/nsd-postgres.txt ./nsd-postgres
[root bin]# chmod 755 nsd-postgres
[root bin]#
You may need to edit these scripts if you are not using /usr/local/aolserver as the directory of Aolserver4.
Test AOLserver. We will use the sample-config.tcl file provided in the AOLserver distribution to test AOLserver. This test will use the nobody user and web group. The sample-config.tcl configuration writes to the default log locations, so we need to give it permission to do so or it will fail. Grant the web group permission to write to /usr/local/aolserver/log and /usr/local/aolserver/servers.
[root root]# cd /usr/local/aolserver
[root aolserver]# chown -R root.web log servers
[root aolserver]# chmod -R g+w log servers
[root aolserver]# ls -l
total 32
drwxr-sr-x 2 root root 4096 Mar 8 12:57 bin
drwxr-xr-x 3 root root 4096 Mar 8 10:34 include
drwxr-sr-x 3 root root 4096 Mar 8 10:34 lib
drwxrwsr-x 2 root web 4096 Mar 8 10:31 log
drwxr-sr-x 3 root root 4096 Mar 8 10:31 modules
-rw-r--r-- 1 root root 7320 Mar 31 2001 sample-config.tcl
drwxrwsr-x 3 root web 4096 Mar 8 10:31 servers
[root aolserver]#
Note: AOLserver4.x does not include a default start page, so we create one for this test. Type echo "Welcome to AOLserver" > /usr/local/aolserver40r10/servers/server1/pages/index.html
Now, run AOLserver using the sample configuration to verify it runs without errors. This configuration attempts to automatically get the machine's IP address and hostname. It will then start up the server at port 8000 of that IP address.
[root aolserver]# ./bin/nsd -t sample-config.tcl -u nobody -g web
[root aolserver]# [08/Mar/2003:15:07:18][31175.8192][-main-] Notice: config.tcl: starting to read config file...
[08/Mar/2003:15:07:18][31175.8192][-main-] Warning: config.tcl: nsssl not loaded -- key/cert files do not exist.
[08/Mar/2003:15:07:18][31175.8192][-main-] Warning: config.tcl: nscp not loaded
-- user/password is not set.
[08/Mar/2003:15:07:18][31175.8192][-main-] Notice: config.tcl: finished reading
config file.
The first warning, about nsssl, can be ignored. We will not be using nsssl; we will be using nsopenssl instead. The nssl error happens because we have not fully configured secure connections to use nsopenssl. The nscp warning means that without a user and password in the sample-config.tcl file, the administrative panel of AOLserver will not load. We do not plan to use it and can ignore that error as well. Any other warning or error is unexpected and probably indicates a problem.
Test to see if AOLserver is working by starting Mozilla or Lynx on the same computer and surfing over to your web page. If you browse from another computer and the sample config file didn't guess your hostname or ip correctly, you will get a false negative test.
[root aolserver]# lynx localhost:8000
You should see a "Welcome to AOLserver" page. If this does not work, try browsing to http://127.0.0.1:8000/. If this still does not work, read the en:aolserver-admin section on "Troubleshooting AOLserver". Note that you will not be able to browse to the web page from another machine, because AOLserver is only listening to the local address.
Shutdown the test server:
[root aolserver]# killall nsd
[root aolserver]#
The killall command will kill all processes with the name nsd, but clearly this is not a good tool to use for managing your services in general. We cover this topic in en:aolserver-admin section.
Set up the file system for one or more OpenACS Sites
This should already have been done, according to the instructions at the bottom of this page: en:Get_the_Code
Set up a user account for each site.
AOLserver needs to be started as the root user if you want to use port 80. Once it starts, though, it will drop the root privileges and run as another user, which you must specify on the command line. This user should have as few privileges as possible, because if an intruder somehow breaks in through AOLserver, you do not want the intruder to have any ability to do damage to the rest of your server.
At the same time, AOLserver needs to have write access to some files on your system in order for OpenACS to function properly. So, we run AOLserver with a different user account for each different service. Create the username as $OPENACS_SERVICE_NAME.
The password should be blank, to prevent login by password, for increased security. The only way to log in will be with ssh certificates. The only people who should log in are developers for that specific instance. Add this user, and put it in the $OPENACS_SERVICE_NAME group so that it can use database and server commands associated with that group. (If you don't know how to do this, type man usermod. You can type groups to find out which groups a user is a part of)
[root root]# useradd $OPENACS_SERVICE_NAME
You also need to set up a group called web.
[root root]# groupadd web
Then change the user to be a part of this group:
[root root]# usermod -g web $OPENACS_SERVICE_NAME
ref: https://openacs.org/doc/aolserver4.html
Created by OpenACS community and package contributors, last modified by Benjamin Brink 15 Feb 2017, at 10:55 AM
Introduction
ecommerce-g2 is an initiative to adapt OpenACS's heritage of en:ecommerce and related packages to meet newer ecommerce related objectives and values.
ecommerce-g2 packages use a blend of current OpenACS coding, ecommerce and security standards, and are built to offer low overall cost for code maintenance.
Project is currently led by Benjamin Brink in the open and cooperative spirit of the OpenACS community.
Stable versions are available at: https://github.com/openacs-ecg2
All are welcome to participate.
page information
- Last modified: 2017-02-15 10:55:33.681706+01
Created by Lee Denison, last modified by Gustaf Neumann 16 Jan 2017, at 08:27 AM
OpenACS object types are the basic building block of the OpenACS psuedo object oriented datamodel. They are largely analogous to Classes in OO languages such as C++ and Java.
An object type typically has a set of static metadata and a set of object data for the actual instances.
Static Metadata
Mainly found in the acs_object_types table and the acs_attributes table.
Instance Data
The instance data of a type is typically spread over several tables, each of which represents a level in the inheritance hierarchy. acs-object is the most fundamental supertype from which all types inherit.