SELF Platform is a web based, collaborative and distributed authoring system for learning materials following open standards. SELF Platform is free software application. More details from SELF Platform.
A pictorial representation of the SELF Platform is as follows:
The installation procedure is still not automated. Currently the following procedure helps technically savvy to install and inspect the software. RPM and Deb based packaging will be done shortly.
As and when the procedure advances this documentation will be updated.
You can check out the most upto date versions from cvs.
"cvs -z3 -d:pserver:anonymous@cvs.savannah.nongnu.org:/sources/self-platform co selfApp"
The following are the dependencies of selfApp
version 8.1 or above.
If you are using debian based GNU/Linux, 'apt-get install postgresql' will do.
After installing postgresql, create an account using 'createuser -s <username> -P'
Zope2.9 or above (not tested or ported to Zope3.0 or above).
Plone2.5 or above should work.
If you are using Debian based GNU/Linux, 'apt-get install plone-site' will do. This will also install Zope2.9 and other dependencies.
These two wrapper libraries required for interfacing Python with Postgresql.
If you are using Debian based GNU/Linux, 'apt-get install python-psycopg2 zope-psycopgda2'
We often find that the zope-psycopgda2 is installed in 'usr/share/zope/Products/ZPsycopgDA:2'. This some how does not work in our systems. So, we have a workaround: make a link as follows: ln -s /usr/share/zope/Products/ZPsycopgDA\:2 /var/lib/zope2.9/instance/plone-site/Products/ZPsycopgDA'
Please do an appropriate installatiion on your system depending on your system. When you restart Zope, you should be able to see the product 'ZPsycopgDA' in the ZMI:/ControlPanel/Products/'.
Download LocalFS product from: http://www.easyleading.org/Downloads/LocalFS-1.7rc1-andreas.tar.gz
We use LocalFS to access filesystem at the CLIENT_HOME, where pickled views of each node of GNOWSYS is stored in separate folders for each node. We also use this for uploading files such as images, and other files that are used as resources in the platform.
The storage of SELF Platform is managed by GNOWSYS. All components of GNOWSYS are distributed as a part of the selfApp.
check out the latest version of gnowsys-pg by giving the following command
cvs -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/gnowsys co gnowsys-pg
and then change directory to gnowsys-pg/ and give the following command
python genSchema.py -g <databasename> <hostname or ip> <username> <password>
for example
python genSchema.py -g gb localhost username password
This command will work only if you have a postgresql server running and you have provided the account details properly in the above command.
This will result in creating about 147 tables, 10 views, and authentication schema etc. This is the generic GNOWSYS schema.
The next step is to install selfApp in Plone, and create a database connection from the Plone instance and create the schema required for the selfApp.
Inside the plone instance click on the 'Add' button and select 'Z Psycopg 2 Database Connection' then give the id as 'auth_db' and put in the connection string as 'dbname=<databasename> user=<username> password=<password> host=<localhost> port=<port no>' keep the rest as defaults and press 'Add'
This plugin stores all the user details in the postgresql, and is an extension to the Plone/Zope authentication.
You can obtain this from http://plone.org/products/sqlpasplugin
SQLPASPlugin is a Plone Archetype product. Therefore, its installation can be done by first copying the folder 'SQLPASPlugin' in the Products folder. Then change the ownership of the SQLPASPlugin folder to plone:users. Restart Zope, and view the Plone site; goto Preferences; select "Add/Remove Products"; select 'SQLPASPlugin' and click 'install' button.
Next step is to perform some configuration of the Plugin.
fullname/fullname email/email
Now the site is configured for registration of users. The customized Plone site now transparently uses gnowsys-pg for authentication. However, follow the instructions below for building the storage schema.
This is supplied with selfApp.
dbname=<databasename>:user=<username in database>gnowsys:<password=<password of database>:host=localhost:port=5432
These steps will extend the Plone site and mutate it to behave like a self-platform. After this step, you can use the self-platform from the http://localhost:8080/self-platform.
Gnowledge Query Library (gnowQL) is used to add, retrieve and edit the content. All the ZPT (Zope Page Templates) of the self-platform use mostly the gnowQL.
You may see an object by name gnowQL in the self-platform instance. This is the main connection service agent to the knowledge base providing agent oriented (distributed) access to the data. You can access this object using xmlrpc protocol using any of the language libraries. We mostly use Python.
Please configure the zope-psycopgDA object to point to the correct GNOWSYS database with all the details. To configure this, you need to know the user name, password, port number where Postgresql is running, and the database name where the GNOWSYS schema was built as described in the above section titled "Build the storage schema for the knowledge base"
The methods start by the name 'manageAdd<NodeType>(dictionary)' If the nodetype is an object, the method will be 'manageAddObject(dictionary)'
The method takes only one parameter as a Python dictionary object.
The structure of the dictionary object can be as follows:
{'nid'='gnu emacs','title'=['GNU Emacs','Emacs'],'description':'An extendable macro editor', 'uid':35}
Where 'nid' is nodeid, and 'uid' is user id. The order of the items in the dictionary do not matter. If any of the mandatory keys in the dictionary are not supplied the system will raise an appropriate error.
Currently the knowledge base has the following nodetypes:
A complete list of the fields will be documented here. Meanwhile you may refer to the Autogenerated HTML schema of GNOWSYS storage schema. Each node will have a prefix 'gb' in the schema, and suffixed by 's'. e.g., Object node will be described as 'gbobjects'.
SELF Platform is built to conform to SCORM (Shareable Content Object Reference Model)
The link below is a representation of the various attributes a learning object will have. These are mostly adopted from Dublin Core Metadata.
Metadata of a course is captured by the 'manifest' specification in SCORM. The link below is a representation of the manifest metadata. This metadata is attached to a course object.
SCORM 2004 specifies more than the above set of metadata for finer control of course delivery to learners. This set of metadata is useful for a run time enviornment like Moodle to deliver to learners.
For internationalization of selfApp this web page was referred. The pot file was generated using the following command
i18ndude rebuild-pot –pot selfApp.pot –create selfApp –exclude="global_searchbox.pt" .
All the files related to internationalization are located inside selfApp/i18n/ .It basically consists of selfApp.pot and the po files of the languages whose translation are supported inside the platform.
To modify the translations of various languages it is recommended that an application called poedit is used it is available in the software repositories and can be obtained by
sudo apt-get install poedit
The directory contains a template po file called default.po which can be used to add support for languages which are already not supported in selfApp. To edit the po file open it with poedit and add the translated strings to the same, once the translation is over go to Catalog-> Settings and add the Language and Country values save the file as selfApp-xx.po where xx is the language code.
While installing selfApp if you get an error 'cant set encoding to' then do the following go to the following directory
/var/lib/zope2.9/instance/plone-site/Products/ZPsycopgDA
and edit the file DA.py, in line number 82 put encoding='UTF-8'
If any errors related to LocalFS are encountered please check if it has been correctly installed. If not please make the following changes in line number 52 of LocalFS.py
#from OFS.content_types import find_binary #It was replaced with the following line from zope.app.content_types import find_binary
Date: 2008/05/02 11:23:13 IST