| Home | Podcasts | 

Facebook, Chisimba, and the Personal Learning Environment Derek Keats has made an interesting blog post
816 days ago

Today on the Chisimba developer mailing list, one of the developers in Kenya asked about creating a Facebook application. Another replied and suggested that the question was off the topic.

This got me thinking about Education 3.0, and the paper i gave in Tokyo last year, where I presented a mockup of a Facebook application as an example of how social networking technologies could be used to make personal learning environments. This presentation is shown below, and I think it is worth Chisimba developers having a look at it.

We already have Brent working on the Personal Learning Desktop in XUL for the IADP project, so the notion of Personal Learning Envirnoment is not outside the scope of our current activities. It is also an area that we are exploring with some of the Sakai people.



There is lots of Chisimba functionality that could become a Facebook application, not just for PLE but for any use to which Chsisimba is put. It would be good to have that capability in the framework, perhaps even a means to generate Facebook applications from an API. In particular, I think that while Facebook is widely used, it can be a connector of people and courses, or people and X where X is any aspect of Chisimba. The wonderful API created by Paul Scott makes this feasible and relatively easy.

So I would say if someone wants to work on Facebook and Chisimba integration, then it would be AWESOME! Step one would be figuring out how to get an application into facebook. Step two would be to make a really cool Facebook app from Chisimba that allows for interesting things to happen in the PLE space.  I have thrown this idea out to the Kenyan Facebook developer community, lets see if there are any takers.

But there is more to this idea than just Facebook. Widgets are all the rage nowadays. We could also look at how we can implement the W3C Widget specification, and allow Chisimba to both generate and consume W3C compliant widgets. Not that would be cool! But I will write about that another time.

Given the increasing prevalence of widgets, I have decided to devote a few blog posts to widgets and how they might be used in eLearning to achive some of the goals inherent in the idea of personal learning spaces.

Adapted from a post originally made on http://ics.uwc.ac.za on Fri, 02 May 2008 11:19:22



Tags for this post

       
Bookmark this post Trackback URL  No trackbacks were found for this post Attribution Share Alike

Moodle plugin for Chisimba Webpresenter Derek Keats has made an interesting blog post
789 days ago

Today I wrote a Moodle plugin for Chisimba webPresent. It was my first attempt to write a Moodle plugin since I have never used Moodle before.

Chisimba webPresent is a presentation conversion and sharing module, with an integrated set of realtime online presentation tools. You can upload a PowerPoint or Open Office presentation, and it gets converted to the other format, plus PDF, flash, and images. A transcript is extracted from it, and an autoplay slideshow is created from the images using Ajax.

It also provides a filter that can be cut and pasted into any of the Chisimba based content tools, but need not be limited to the same aplication, or even to PHP applicatoins, as long as the application can handle filters and someone writes one for it.

Webpresenter also includes social networking tools including tagging of presentations, blogging, etc. Indeed, being a Chisimba application, it can use any of the Chisimba modules. While it is designed to run as a stand alone site, providing functionality for other sites to use, you can also integrate it into KEWL3 (eLearning application) as well.

Moodle is one of the most popular eLearning applications. Creating a plugin for Moodle seemed like a good idea since Chisimba does some things very well that Moodle doesn't do at all, and vice versa. With this plugin, a Moodle site could set up a Webpresenter instance, or share one with another organization. Then presentations could be used, for example, to build tutorials in Moodle using Open Office or PowerPoint.

If you are a Moodler, you can download the plugin here. Unzip it into the Moodle filters directory, and enable it using the Moodle filter manager. You can test it by going to http://chameleon.uwc.ac.za and either uploading a presentation or using one of the presentations that you will find there.

Click on a presentation thumbnail in Chameleon, and in the right panel of the presentation you will see two filters. Paste one of those filters into a moodle page after you have enabled the wpresent filter, and you will see your presentation in Moodle. Pretty cool huh?

[ALERT: url=http://www.dkeats.com/usrfiles/users/1563080430/filters/moodle/moodle1.jpg]Webpresent showing slides[/ALERT]
webPresent with tags (red arrow) and presentations (blue arrows). Clicking
the presentation will open it for playing in a web browser.. Click the image for
larger view.

[ALERT: url=http://www.dkeats.com/usrfiles/users/1563080430/filters/moodle/moodle2_detail.jpg]Presentation view[/ALERT]
Select the second filter and copy it to the clipboard. Then paste it into your Moodle page. Click image to zoom in
on the filter text.

Remote presentation playing in Moodle
Remote presentation playin in Moodle.

Check out chameleon at http://chameleon.uwc.ac.za



Tags for this post

       
Bookmark this post Trackback URL  No trackbacks were found for this post Attribution Share Alike

Web 2.0 commenting with Disqus Derek Keats has made an interesting blog post
773 days ago

Disqus is a Web 2.0 commenting system. I am just experimenting with it to see how it works. Disqus claims that it makes your comments more interactive for readers and easier to manage for you — all while connecting your community with other blogs. Well, lets see how it works.

If it works well, perhaps I will make a Chisimba filter for it so that it can replace the Chisimba commenting system if the user wishes to be more Web 2.0 in their approach to comments on Chisimba pages. From what I have seen so far, it works pretty well.

Update: Disqus needs a permalink to work. That makes it not too useful on a dynamic system such as this. I have lodged a support request with Disqus to see if we can have some kind of  alternative to using the permalink as an index. I think so, but I am too dumb to figuer it out. Awaiting reply...

Update 2: Thanks to the help from Daniel Ha and Jason Yan, I got it to work. Now to make it a filter in Chisimba.  I like this tool because it is elegantly simple. There are other things that do similar jobs, but are much more complicated to set up.
 

 

 

 

 

blog comments powered by Disqus

 

 



Tags for this post

       
Bookmark this post Trackback URL  No trackbacks were found for this post Attribution Share Alike

Chismiba development with Eclipse Ganymede (3.4) Derek Keats has made an interesting blog post
713 days ago

To do Chisimba development with Eclipse 3.4, you need to do some manual work to get it installed. The version in the Ubuntu repositories is the way outdated ersion 3.2. The current version is 3.4, called Ganymede. These instructions are for using Ganymede on Ubuntu Hardy Heronm which is available from  http://www.eclipse.org/ganymede/">http://www.eclipse.org/ganymede/ .

The version you need is Eclipse Classic 3.4 (151 MB), unless you intend doing Java EE development as well. 

1. Download Eclipse from the Eclipse website or mirror, and move it to a temporary directory.

You can use wget to download it from the Open Source Lab at Oregon State University if you want:


Move it to a temporary directory. For example,
cd ~
mkdir ganymede
cd ganymede

Then using the Nautilus file manager or the mv terminal command, move the eclipse download to that directory. I used the terminal because it is faster:
mv /home/dkeats/Desktop/eclipse-java-ganymede-linux-gtk.tar.gz  /home/dkeats/ganymede/

2. Unzip the file using Nautilus file manager or the tar command on a terminal.

To use Nautilus, right click the file, and select Extract here from the menu. Alternatively, in a terminal type:

tar -xzvf eclipse-java-ganymede-linux-gtk.tar.gz

Either way, you will end up with a directory called 'eclipse'. If you do not, then something went wrong.

3. Create a home for eclipse on your system.

I keep eclipse in /usr/local/opt/eclipse/ as this seems to be a fairly standard place for manual install of eclipse. On a fairly fresh install, the opt/ directory may not exist, so in a terminal type

cd /usr/local/
sudo mkdir opt
cd opt

4. Move eclipse to /usr/local/opt/

In a terminal, type

sudo mv /home/dkeats/ganymede/eclipse/ /usr/local/opt/

Yes, I know, you could just put it there in the first place, but I prefer to download and extract in my home directory.

5. Grant Eclipse execute permissions

Go into the eclipse directory

cd cd /usr/local/opt/eclipse/

and give execute permissions
chmod +x eclipse

6. You need a JDK to use eclipse

Get the Sun Open JDK either by installing from the Synaptic package manager or a terminal. In a terminal type:

sudo apt-get install openjdk-6-jdk

Make sure that this is the version used by configuring its settings:
sudo update-java-alternatives -s java-6-sun

Edit the JVM configuration file
gksu gedit /etc/jvm

and add the following line at the top of the file:
/usr/lib/jvm/java-6-sun

There is a bug that causes Eclipse to ignore the default java setings in Ubuntu, so it is necessary to ensure that Eclipse uses the JVM that you  installed.
gksu gedit /usr/local/opt/eclipse/java_home

and add the following to the top of the file:
/usr/lib/jvm/java-6-sun

7. Start Eclipse and configure workspace

You should now be able to start Eclipse using the command

/usr/local/opt/eclipse/eclipse

When Eclipse first starts, it will present a dialogue box for you to input your workspace. It defaults to /home/dkeats/workspace but I prefer to use /home/dkeats/eclipse-workspace just so I know what application owns the workspace. You may configure it to be whatever you want it to be, but eclipse-workspace is an unambiguous name.
Eclipse dialogue
You should also check 'Use this as the default and do not ask again'.

8. Create a menu entry

Menu editing
Right click on the Gnome Ubuntu icon on the top left of the Gnome toolbar, the icon to the left of 'Applications' and select 'Edit menus' from the menu that appears.

Click on Programming in the left pane of the resulting dialogue, and on the right pane click New Item (the one with the plus sign).
Menu editor
In the dialogue that appears, select or enter

Type: Application
Name: Eclipse IDE
Command: /usr/local/opt/eclipse/eclipse
Comment: The Eclipse integrated development engironment

and click OK. You now have Eclipse on the Pogramming menu.

You can also provide an icon for it if you want. To do so, if you have saved already, right click on Eclipse IDE in the menu editor, and click the Icon button (the one that is unlabelled, that looks like a platform atop a spring). And brows to the icon that you want to use. You can download an Eclipse icon from the web. Use a search engine to find one. I use the icon from:

Eclipse iconhttp://www.iconlet.com/download_32x32_/vistainspirate/32x32/apps/eclipse.png

I made a directory in my home directory, under Pictures, called icons and put it there.

 Eclipse running

9. Install a subversion plugin for Eclipse

Previously, I used the Subclipse subversion plugin with Eclipse, but Subclipse 1.4.x requires Subversion 1.5.0 version but the Ubuntu repository contains Subversion 1.5.0.  Installing this version of Subversion might break your operating system, so it is better to work with the Subversive plugin rather than Subclipse when using Eclipse Ganymede.

Instead of using Subversion, Subversive uses a native Java implementation of the Subversion protocol. You need to install the Java HL API:

sudo apt-get install libsvn-javahl

Then you need to add this to the eclipse.ini file located in
/usr/local/opt/eclipse/eclipse.ini

In a terminal, type
gksu gedit /usr/local/opt/eclipse/eclipse.ini

and then add the line below to the end of the file and save
 
-Djava.library.path=/usr/lib/jni

Now you can install Subversive. The subversive installation includes Subversive team provider and Subversive Team Provider Sources. In order to start work with Subversive you should install both of them. This is now part of the Ganymede update site so you can access it from Eclipse using:
Help > Software Updates... > Available Software > Ganymede > Collaboration Tools

And install them in the normal Eclipse way.
SVN Connectors

You also need to add

and install the connectors. License incompatibility prevents them from being distributed together, so you have to live with this inconvenience.

10. Install a PHP plugin

I prefer PHPEclipse, rather that PDT, but either should work. The instructions below are for PHPEclipse.

From the Eclipse menu choose Help -> Software Updates and switch to the tab named 'Available Software'.

On the bottom of the dialog, make sure 'Show only the latest versions of available software' is checked, and 'Include items that have already been installed' is unchecked.

Click the 'Add site' button to open the 'Add site' dialog.

Enter the URL http://update.phpeclipse.net/update/nightly and click 'OK'.

Highlight the new entry 'Update site: http://update.phpeclipse.net/update/nightly' and drop it down using the little arrow handler left to the checkbox.

The sub-entry 'PHP Eclipse Nightly Builds' should appear. There may be others as well, but make sure you check the Nightley Builds one by selecting the appropriate checkbox.

Make sure that none of the other checkboxes are selected and click the 'Install' button.

After the despendencies have been successfully resolved, a confirmation screen is displayed. Click the 'Next' button.

On the license dialog, select 'I accept the terms of the license agreements' and click 'Finish'.

When prompted to do so, restart Eclipse.

After installation, the PHP perspective needs to be activated by going to Window -> Open Perspective -> Other -> Select PHP -> OK.

----

Thats it, you now have an Eclipse based development environment for Chisimba development.

Sources of information used in setting up my eclipse setup:


 



Tags for this post

       
Bookmark this post Trackback URL  No trackbacks were found for this post Attribution Share Alike

New version of Chisimba released Derek Keats has made an interesting blog post
693 days ago

Chisimba logo
The next release of the Chisimba PHP5 framework is now available.

Major enhancements included in this release are:

 - PDO and MDB2 support
 - Improved database performance
 - Bug fixes
 - Better code documentation
 - API integration for many more modules
 - Remote downloads of modules (apt like module installations)

and, of course, new modules to add onto your installation!

Please take a look, download it and give it a test drive!
 
Chisimba, for those that don't know it already, is a PHP5 framework made in Africa, for Africa and the world. It is a collaboration between around 13 African Universities, as well as around 35 active developers from around the continent.
 
It can be downloaded from AVOIR at:
 
http://trac.uwc.ac.za/trac/chisimba/downloader/download/release/5

and the docs can be found at:
 
http://avoir.uwc.ac.za/

There are server setup instructions, as well as installation walkthroughs available linking from the main AVOIR site:
 
For those interested in developing a module, or just getting some additional info please join our mailing list and ask some questions:
 
http://mailman.uwc.ac.za/mailman/listinfo/nextgen-online
 



Tags for this post

       
Bookmark this post Trackback URL  No trackbacks were found for this post Attribution Share Alike

Our chisimba twittering Derek Keats has made an interesting blog post
689 days ago

This is a chisimba RSS feed of all mentions of Chisimba on Twitter. It was created using the RSS filter:
[RSS:limit=5]http://search.twitter.com/search.atom?q=chisimba[/RSS]
which demonstrates the power of Chisimba filters.

chisimba - Twitter Search


 avoir:   Changeset [18540]: Hello chisimba code for use with JSON blocks: Hello chisimba code for use with JSON blocks http://bit.ly/cx2MjZ
>30 minutes ago

 chisimba_svn:   dkeats: Hello chisimba code for use with JSON blocks http://trac.uwc.ac.za/trac/chisimba/changeset/18540
>1 hour, 30 minutes ago

 chisimba_svn:   charlvn: Replaced gradient background images with CSS. http://trac.uwc.ac.za/trac/chisimba/changeset/18539
>4 hours, 27 minutes ago

 chisimba_list:   Re: [Chisimba-dev] Icon request module http://bit.ly/bFB3hj
>4 hours, 31 minutes ago

 avoir:   Changeset [18537]: increaseversion, insert new entry: increaseversion, insert new entry http://bit.ly/bff0Mo
>4 hours, 34 minutes ago



Tags for this post

       
Bookmark this post Trackback URL  No trackbacks were found for this post Attribution Share Alike

Testing the Flock Blog editor Derek Keats has made an interesting blog post
575 days ago

Having just reinstalled Flock, I thought I should play around with some of its features. One of them is a blog editor, so I am trying it out here with the CHisimba implementation of the Metaweb API. This post started out being just the first two paragraphs, but 'stuff' intervened.

I like the editor because it is a tool icon in Flock, and it gives me a nice fat, full-screen, desktop-like editing experience, at lease when it does not crash. It also allows source inserts, which is vital for inserting widgets and snippets (like the Get Flock) button below.

Get Flock

One of the problems with using a browser based blog editor, however, is that it is dependent on the browser. And new browsers are nortorious for crashing. In my case, I typed all of this once, and was busy editing while uploading some pictures to Flickr. The Flickr uploader is about as stable as an insane person on a bad day, so it naturally crashed the browser, and brought down my editing session.

I was left with no option but to open a text editor and retype what I had already typed, by reading the greyed out text from the crashed screen. This is of course one of the annoying 'features' of browsers that Google is trying to fix with its Chrome browser, the tendency of one crashed site to bring down the entire browser and all other sites in other tabs. Hopefully, they will eventually succeed, and other browsers can do likewise.

When I restarted Flock, I was presented with a dialogue asking if I wanted to recover the post that I was typing when it crashed. I did this, but the resulting content was not editable, indeed, Flock appeared to have crashed despite the fact that I had chosen a new session. I closed Flock, and tried to reopen it, but it said it was already running.

Running ps -ax | grep flock showed a whole bunch of running processes, but no Flock on my desktop. I killed all four Flock processes, and this time Flock opened again.  It still gave me the option to recover the dead file. Should I or shouldn't I? I decided to let it recover, and this time it worked. So, here I am testing it at last!

Yes, it worked but I had to go to the site to edit it because:

  1. It does not have a Creative Commons chooser.
  2. It doesn't insert the tags into the tags field in the blog.

So, for me, it is not very useful. It also failed to find any categories, but I suspect that might be a bug on our side as none of the blog posters I have tried found categories either.

Blogged with the Flock Browser

Tags: , ,



Tags for this post

       
Bookmark this post Trackback URL  No trackbacks were found for this post Attribution Share Alike PDF of this post email this post to a friend

New release of Chisimba out Derek Keats has made an interesting blog post
560 days ago

The next release of the Chisimba PHP5 framework (Chisimba-2.1.0) is now available. Chisimba is the application that is used to power this site, and it is pretty awesome, being able to be almost any Web 2.0 enabled system you can imagine from eLearning (Learning Management System) platform, to blog, to content management system, to MXit interface, presentation sharing, to realtime presentation tools, to wiki, etc. With lots of filters for external content, and running in the Amazon Cloud it is infinitely scalable.

Major enhancements included in this release are:

 - Numerous enhancements to the database abstraction layer for increased
performance
 - Numerous core bugfixes and enhancements
 - Patch descriptions added in module catalogue
 - Layout and skin enhancements
 - Increased security and RC4 encryption of session data
 - Complete authentication system overhaul
 - "Remember me" functionality added
 - URL rewriting
 - Remote popularity contest module
 - Additional filters for rich content
 - Some installer fixes
 
and, of course, new modules to add onto your installation!

Please take a look, download it and give it a test drive!
 
Chisimba, for those that don't know it already, is a PHP5 framework made
in Africa, for Africa. It is a collaboration between around 16 African
Universities, as well as around 35 active developers from around the
continent.
 
It can be downloaded from AVOIR at:
 
http://avoir.uwc.ac.za/

and the documentation can be found at:
 
http://avoir.uwc.ac.za/index.php?module=news&action=viewcategory&id=gen14Srv6Nme27_7167_1219410313

There are server setup instructions, as well as installation
walkthroughs available linking from the main AVOIR site:
 
http://avoir.uwc.ac.za/index.php?module=news&action=viewcategory&id=gen14Srv6Nme27_2077_1219410069
 
For those interested in developing a module, or just getting some
additional info please take a look at:
 
http://avoir.uwc.ac.za/index.php?module=news&action=viewcategory&id=gen14Srv6Nme27_6705_1226737050



Tags for this post

       
Bookmark this post Trackback URL  No trackbacks were found for this post Copyright

A #Chisimba developer and demonstration installation and a Bash script to automate it Derek Keats has made an interesting blog post
405 days ago

When I set up the PHP5 development framework, Chisimba, on my laptop, I always follow a practice that I have used for development and demonstration purposes since we first created Chisimba. I have written about it before on the nextgen-online mailing list, and David Wafula published this on the AVOIR site. Hence, this has been published before, but what I am going to do here is to provide a bash script that automates most of this process.

The install takes advantage of the soft linking capabilities of GNU/Linux to allow multiple installations to run from the same code base. In that way, you can develop different functionality with different installs but you only need to maintain a single code base. In addition, you can run demonstration sites on your laptop without having to deal with the confusion of maintaining multiple checkouts or copies of the Chisimba code. This basic setup can also be used to create multiple live sites, and I use this on http://kim.wits.ac.za for my test and play sites.

I use Eclipse for development, so I check out the code using the Subversive plugin. However, here I will give the instructions for command line checkout. You can adapt them if you use a GUI for interacting with Subversion.

Firstly, I always do my Chisimba checkouts in my home directory. The reason for that is that I use RSYNC to back up my home directory quite often, so if I have done some editing and not committed the code to subversion yet, the chances are it will be in my backup. Of course, the only reason not to commit code to subversion is if it is a core module that will break everything. Since I work mainly on filters, this is the case, so I need them to be working properly before I commit. Normally, youwould just commit your code to subversion and not worry about backups.

I create a directory called chisimba in my home directory, so when I begin, I have

/home/dkeats/chisimba

I am using Ubuntu (Jaunty at the time of writing), so my webserver root is in

/var/www

So, with that bit of background, lets get on with it.

Step 1: Check out Chisimba from subversion

There are three separate sets of code to check out, the framework core, the modules and the skins (if you need them).

svn co https://cvs2.uwc.ac.za/chisimba/framework/trunk/ framework
svn co https://cvs2.uwc.ac.za/chisimba/modules/trunk/ modules
svn co https://cvs2.uwc.ac.za/chisimba/skins/trunk/ skins

This will leave you with three directories

/home/dkeats/chisimba/framework
/home/dkeats/chisimba/modules
/home/dkeats/chisimba/skins

The next step is to create the web directory, and build the symbolic links.

Step 2: Create web location and make symbolic links

First we are going to enter the webroot directory, and make a directory for our instance of Chisimba. It might be chisimba, or you might name it for the type of instance you are going to install. In this case, I am going to install a content management system (CMS) demonstration, so I call the directory cms.  I chmod the directory to 777 so I can write to it, and so can the webserver. You should not do that on a real web server that is accessible on the Internet, rather use the production settings.

cd /var/www
sudo mkdir cms
chmod 777 cms -R

Now we can change to the cms directory, and create symlinks to the appropriate parts of the framework. We do the files and directories individually this way so that we do not create links that will mess up the subversion repository. This keeps the repository clean and means we can commit back code from our code base without worrying about the repository structure.

cd cms
ln -s /home/dkeats/chisimba/framework/app/*.php .
ln -s /home/dkeats/chisimba/framework/app/*.php .
ln -s /home/dkeats/chisimba/framework/app/classes/ .
ln -s /home/dkeats/chisimba/framework/app/core_modules/ .
ln -s /home/dkeats/chisimba/framework/app/cron/ .
ln -s /home/dkeats/chisimba/framework/app/installer/ .
ln -s /home/dkeats/chisimba/framework/app/lib/ .

Now we need to make a directory for the skins. While we could symlink the skins directory as above, it would create problems if we wanted to add skins from the skins repository later. Therefore, each instance of Chisimba should have its own skins directory that links to the root skins and any skins from the skins repository that you want to use. Here we only link back to the core skins, but adding other skins from the skins repository could be done the same way.

mkdir skins
cd skins
ln -s /home/dkeats/chisimba/framework/app/skins/* .
cd ..

We need to create a separate user_images directory for each instance for the same reasons. Each instance will have different user images, and also, we do not want user_images getting back into subversion. This keeps our subversion checkout clean. Therefore, we create a directory, and link in the default images from the framework core.

mkdir user_images
cd user_images/
ln -s /home/dkeats/chisimba/framework/app/user_images/* .
cd ..

Chisimba expects to find the modules that are outside of the core in the directory packages. Therefore, we create this directory, and symlink all the modules into it. Once again, we do it this way to keep the subversion repository clean, and avoid accidental contamination.

mkdir packages
cd packages
ln -s /home/dkeats/chisimba/modules/* .
cd ..

Lastly, we chmod the installation directory to 777 so that you and the webserver have write access to it, keeping in mind that using 777 on any machine on the Internet as a webserver is a recipe for getting hacked. Rather use the production settings as recommended in the Chisimba installation guide for production servers.

sudo chmod 777 cms -R

Thats it, you now have a fully operational Chisimba instance, and you can repeat this procedure for as many Chisimba instances as you would like to have on your developer machine. Now you can proceed with the install.

Step 3: Install your instance

You can now install your instance of Chisimba by opening http://yourserver.yourdomain/yourinstancename/ in the usual way. For example, in my case, I would open http://localhost/cms/ and run the installer. Before you use my automated script, you should do this manually at least once, so you have an understanding of how it works.

Automating the process

Having just done this process for the umteenth time, I decided to make  very simple bash script to automate it. To make it work, you first need to edit the script and change some settings as indicated in the script itself. The lines that you need to edit are:

CHISIMBA_SVN="/home/dkeats/chisimba/framework"
MODULES_SVN="/home/dkeats/chisimba/modules"
SKINS_SVN=="/home/dkeats/chisimba/skins"
SERVER_ROOT="/var/www"

Change the above lines to correspond to your setup. If you have followed the checkout instructions, and you are running Ubuntu, you should not need to change anything.

The script is as follows:

#!/bin/bash
#  This script creates a developer clone of a chisimba
#  subversion checkout. Do not use this on a production
#  server. It is for setting up a developer machine only.
#  Author: Derek Keats
#  License: GPL 2

#  Set the chisimba base directories for core, modules
#   and skins (this assumes that all Chisimba
#   files follow standard naming protocol in that directory)
#   IMPORTANT: Note that there is no trailing /
CHISIMBA_SVN="/home/dkeats/chisimba/framework"
MODULES_SVN="/home/dkeats/chisimba/modules"
SKINS_SVN=="/home/dkeats/chisimba/skins"

#  Set the webserver root location. This is usually /var/www
SERVER_ROOT="/var/www"

#Check if there is a supplied $1 input
if [$1 = ]; then
   echo "You did not supply a directory name to create."
   exit 0
fi


#Change to the server root directory
cd $SERVER_ROOT
echo "In $SERVER_ROOT, which contains"
ls -l
echo
echo

#Create the Chisimba instance directory
sudo mkdir $1
chmod 777 $1 -R
cd $1
echo "Created $1 directory"

# Create the symlinks to things that can be safely linked
ln -s $CHISIMBA_SVN/app/index.php .
ln -s $CHISIMBA_SVN/app/gateway.php .
ln -s $CHISIMBA_SVN/app/classes/ .
ln -s $CHISIMBA_SVN/app/core_modules/ .
ln -s $CHISIMBA_SVN/app/cron/ .
ln -s $CHISIMBA_SVN/app/installer/ .
ln -s $CHISIMBA_SVN/app/lib/ .
echo "Linked the core into $1, which now contains"
ls -l
echo

#Create a directory for skins and link it in
mkdir skins
cd skins
ln -s $CHISIMBA_SVN/app/skins/* .
echo "Created skins directory and linked core skins"
ls -l
cd ..

#Create a directory for user_images and link it in
mkdir user_images
cd user_images/
ln -s $CHISIMBA_SVN/app/user_images/* .
echo "Created user images directory and linked default images"
ls -l
cd ..

#Create a directory for modules and link it in
mkdir packages
cd packages
ln -s $MODULES_SVN/* .
echo "Created packages directory and linked to modules"
ls
cd ../..

#Make it all writeable and horribly insecure
sudo chmod 777 $1 -R
echo "Chmodded it all to VERY INSECURE."
echo "All done. Bye....."

You can download the script from here.

You need to run it as root, so put it somewhere, change to that directory, and run it as:

sudo sh clone-chisimba.sh DIRECTORY

where DIRECTORY is the name of the directory you want to create. For example

sudo sh clone-chisimba.sh cms

Using this script, you can have a new Chisimba demo installed and up and running in less than 3 minutes. As I have been writing this, it has just occurred to me that I could actually turn it into a full install by adding the SVN checkout to it. I will do that another time, test it and make another blog post about it.

 



Tags for this post

       
Bookmark this post Trackback URL  No trackbacks were found for this post Attribution Share Alike

Google SMS services: a good thing for 'Africa'? Derek Keats has made an interesting blog post
395 days ago

A blog post appeared yesterday on the official Google Blog entitled Extending Google services in Africa ( http://googleblog.blogspot.com/2009/06/extending-google-services-in-africa.html). The post talks about one-third of the population owning a mobile phone and many more having access to one, but that most only have voice and SMS capabilities. Google has therefore focused on SMS, and has a number of SMS based applications, including Google Trader and Google SMS Tips. The blog post talks about information poverty.

The story is reiterated on the official Google Afirca Blog under the title Google SMS to serve needs of poor in Uganda. The focus of that article is on the SMS marketplace application, which is probably one area where SMS can be useful, in that there is a business need,  and the cost can be passed on to the customer through normal business practices. However, I am worried that Google seems to be suggesting that 'the poor' can be made information rich by buying prepaid SMS bundles from MTN (MTN in Uganda is currently the only service provider supporting the service).

Interstingly, while it is true that a lot of current phones only support voice and SMS, what the Google blog post fails to point out, SMS is still very expensive in most African countries. Indeed, extensive use of any of these SMS services, apparently available only in Uganda right now, is likely to cost quite a lot of money. With many African countries dealing in prepaid services at higher rates, the people who are information poor will pay significantly to alleviate their information poverty using SMS.

Indeed, I can easily imagine running up an SMS bill that would exceed the cost of a low-end phone that can do basic web browsing and run XMPP based services. This is a bit of a Catch-22 type of situation in that spending money on SMS might prevent people from accessing cheaper sources of information by keeping them from getting a better phone. For example, a phone that can support XMPP messages (most modern phones) can retrieve text based information for about 1/2000th the cost of sending an SMS. That means you can do around 2000 searches for the price of a single SMS search.

XMPP based communication is widespread in Africa, particularly in South Africa where the MXiT application is extremely popular among young people, with about 11 million subscribers. Other XMPP applications that can run on phones work just as well, you do not need to subscribe to the MXiT service.

Paul Scott of the University of the Western Cape's (UWC) Free Software Innovation Unit (FSIU) has developed some innovative services based on XMPP messages, and thanks to his work and that of Wesley Nitsckie, adding new ones within the Chisimba framework is very simple to do. The framework was developed in the African Virtual Open Initiatives and Resources (AVOIR) project to foster collaboration in Software Engineering in African institutions using Free Software (Open Source) as the vehicle. The UWC XMPP based tools in Chisimba have already been used extensively in drug counselling. Paul has built some of this into a XMPP based social networking service at http://www.peeps.co.za. For example, you can send a dictionary lookup or a Wikipedia request to Paul's service and get the results back on your phone for a tiny fraction of the cost of sending an SMS.

So the question is, are SMS-based services going to contribute to information wealth, or further entrench information poverty. The answer is probably somewhere in between, but certainly not in the space the Google marketing hype would have us believe. And I am a big fan of Google!

[COLORBOX:boxtype=bluebox] Links

More on Google SMS services http://www.google.co.ug/mobile/sms/
Paul Scott's XMPP based social network http://wwww.peeps.co.za
African Virtual Open Initiatives and Resources http://avoir.uwc.ac.za
Business Times article on drug advice services http://www.thetimes.co.za/Business/BusinessTimes/Article1.aspx?id=1017017
[/COLORBOX]



Tags for this post

       
Bookmark this post Trackback URL  No trackbacks were found for this post Attribution Share Alike

New module for #Chisimba: Apture integration Derek Keats has made an interesting blog post
386 days ago

In my minute little bit of spare time, I created a module for Apture use in Chisimba. Apture is a Web 2.0 site that allows you to build multimedia content into your content by providing drag and drop for video, audio, media from hundreds of sites. Its pretty cool stuff. You don't use it in edit  mode, you edit it after saving in the live page! Check out some of the links in this page that have little icons next to them to see Apture in action.

The module is still pretty alpha, but it is stable enough for me to risk installing it on the KIM site, as well as to use it here on dkeats.com. To use it, you need to add some code to the page template of the skin you are using. The code goes into your page template before the </body> tag, and if you have any scripts at the end of your page, you need to put this code BEFORE those scripts. The code you add is:

    // Insert the apture module code for see www.apture.com
    $objModule = $this->getObject('modules','modulecatalogue');
    // See if the apture module is registered and set a param
    $isRegistered = $objModule->checkIfRegistered('apture');
    if ($isRegistered){
        if (!isset($suppressApture)) {
            $objApture = $this->getObject('apturecode','apture');
            echo $objApture->getAptureScript();
        }
    }

You can see this functionality in the kim_wits skin, which is in the skins repository. The module will be added to the User menu, so on a live site, you should use Configure module links to remove it. I will fix this in the next version in a day or so.

To use it you need to go to [LINK] http://www.apture.com[/LINK] and click the button "Download Apture Plugin". choose "Other Platform" and then "Get started now". Go through the registration and add your site to the list of sites you are installing apture on. You can use http://localhost on a test site - it seems to work OK.

When you have saved your site, you will get a code snippet of the type

<script id="aptureScript" type="text/javascript"
src="http://www.apture.com/js/apture.js?siteToken=6Bs4YyH";
charset="utf-8"></script>

If you don't see it, click installation instructions. The token is the bit after the equal sign in the siteToken=6Bs4YyH part of the script, and in this case it is 6Bs4YyH. Copy this.

Go to User parameters on the user menu in your chisimba site (requires Userparamsadmin), and add a parameter 'apturetoken' and make its value the token as noted above, in this case '6Bs4YyH'.

Once you have done this, and the apture module is installed, you should see a howto video popup the first time you open your enabled site. To activate it, hit the letter e (on a saved page, not in the FCKeditor).  Select some text, and see what happens! Its pretty cool, no?

UPDATE: Because it is quite tricky to decide whose Apture Token to use for any given page, I have enabled this feature only in the blog module. If you are a developer, and you want to add this feature to another module, you need to add username detection to the bestguess class in the utilities module. Then you need to edit the apturecode class in the apture module, and add the module code for your module to the array that limits access. That is, change:
  $permittedModules=array('blog');
to
  $permittedModules=array('blog', 'yourmodule');

UPDATE: It is really hard to get this kind of application working without access to the back end or some kind of support. The Apture support people don't seem to respond much to ordinary requests. I guess they are swamped with requests for support from more significant players. I am not sure that it is possible to use Apture properly with a dynamic application such as Chisimba.



Tags for this post

       
Bookmark this post Trackback URL  No trackbacks were found for this post Attribution Share Alike

Trying out my new skin Derek Keats has made an interesting blog post
358 days ago

I am trying out my new Chisimba skin here. It still needs a bit of work, but I think it looks better than the old one. I can see a few problems that I didn't notice when I made the skin, so I will fix them over the next little while. This is still based on the original Chisimba skin engine.



Tags for this post

       
Bookmark this post Trackback URL  No trackbacks were found for this post Attribution Share Alike

Version 3.1.1 of the Chisimba Framework core available Derek Keats has made an interesting blog post
332 days ago

Version 3.1.1 of the Chisimba Framework is now available for download on
the AVOIR downloads page and the OSUSL mirror for those off UWC campus ( http://ftp.osuosl.org/pub/chisimba/ )



Tags for this post

       
Bookmark this post Trackback URL  No trackbacks were found for this post Attribution Share Alike

Changing OpenZoom Nano so it can work with the flash player in an arbitrary location (e.g. as a Chisimba plugin) Derek Keats has made an interesting blog post
311 days ago

I have been experimenting with OpenZoom, and with writing a Chisimba wrapper for it so it can be a Chisimba plugin.  The OpenZoom Project promotes and supports the use of high-resolution images and Zoomable User Interfaces (ZUIs) on the web. OpenZoom provides frameworks, tools and documentation to enable you to create great user experiences.

The OpenZoom SDK is a free & open source toolkit for delivering high-resolution images and Zoomable User Interfaces (ZUIs) to the web and desktop. It is built on top of the Adobe Flash Platform and was developed by Daniel Gasienica, a Computer Science student in Zürich, Switzerland. The kit consists of some python tools for producing the zoomable images, as well as a jQuery plugin to render a flash applet (OpenZoom Nano) in a web page. This should make it easy to build a Chisimba wrapper, and a Chisimba filter for it.

When getting started, I hit a known issue, in that the flash player has to be in the same directory as the source image and the HTML file that makes it viewable. This would be impossible for writing a Chisimba plugin, so I posed the question on the Chisimba developer's mailing list. A solution was suggested by one of the developers there, and I merely implemented his idea and it worked.

It was necessary to change the openzoom run function as follows to read an openzoom:viewerpat parameter from the image tag, specifically:

appletFile = $(this).attr("openzoom:viewerpath") + "OpenZoomViewer.swf",

Note that I put my viewer in a directory called tmp, below the directory with the source image. You also need to change the image tag attributes to add this viewerpath as follows:

<img src="me/me-500x375.jpg" width="500" height="375" openzoom:source="../me/image.xml" openzoom:viewerpath="tmp/">

Note also that the openzoom:source now points to the image via a realative path, and the path is relative to the actual location of the viewer. In this case it is one up (../) and down in the directory 'me'. This is a limitation that makes this a bit of a dirty hack. It would be better if the image path could be absolute, but that will probably require an actionscript hero to look at the source of the player. For now, this at least works, and I can start playing with a filter for Chisimba.

The full code then looks as follows, with the changed lines indicated in red.

/*
 * OpenZoom Endo 0.4
 * http://openzoom.org/
 *
 * Copyright (c) 2007-2009, Daniel Gasienica <daniel@gasienica.ch>
 * License: GNU General Public License v3
 * <http://www.gnu.org/licenses/gpl.html>;
 */
(function($) {
    $.openzoom = {};
    $.openzoom.run = function ()
The display method is not set.
{
        $("img").each(function() {
            var width = $(this).attr("width"),
                height = $(this).attr("height"),
                source = $(this).attr("openzoom:source"),
                appletFile = $(this).attr("openzoom:viewerpath") + "OpenZoomViewer.swf",
                alternate = "<img src="" + $(this).attr("src") + "" width="" + width + "" height="" + height + "">",
                viewerId = "viewer" + Math.floor(Math.random() * 0x424f),
                defaults = {
                    viewer: appletFile,
                    background: "#111111"
                }
,
            viewer = getEmbedHTML(source, width, height, alternate, viewerId, defaults);
           
            if (source != null && source != "")
                $(this).replaceWith(viewer);
        });
       
        function getEmbedHTML(source, width, height, alternate, id, options)
The display method is not set.
{
            return "<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" " +
                    "width=""+ width +"" height=""+ height +"" id="" + id + "" name="" + id + "">" +
                     "<param name="movie" value="" + options.viewer + ""/>" +
                     "<param name="scale" value="noscale" />" +
                     "<param name="bgcolor" value="" + options.background + "" />" +
                     "<param name="allowfullscreen" value="true"/>" +
                     "<param name="allowscriptaccess" value="always" />" +
                     "<param name="flashvars" value="source=" + source + ""/>" +
                     "<!--[if !IE]>-->" +
                     "<object type="application/x-shockwave-flash" data="" + options.viewer + "" " +
                      "width=""+ width +"" height=""+ height +"" name="" + id + "">" +
                       "<param name="scale" value="noscale" />" +
                       "<param name="bgcolor" value="" + options.background + "" />" +
                       "<param name="allowfullscreen" value="true" />" +
                       "<param name="allowscriptaccess" value="always" />" +
                       "<param name="flashvars" value="source=" + source + ""/>" +
                     "<!--<![endif]-->" +
                           alternate +
                     "<!--[if !IE]>--> " +
                     "</object>" +
                     "<!--<![endif]-->" +
                   "</object>";
        }

    }
})(jQuery);
jQuery.noConflict();jQuery(document).ready(function(){jquery.openzoom.run()});

You can download Daniel's simple example with the altered code.



Tags for this post

       
Bookmark this post Trackback URL  No trackbacks were found for this post Attribution Share Alike

Installing the OpenZoom Endo python tools for making multiscale images for use in #Chisimba Derek Keats has made an interesting blog post
307 days ago

This video describes how to install the multiscale python tools from the OpenZoom project Endo so that you can produce multiscale images for use in Chisimba with the OPENZOOM filter.



Tags for this post

       
Bookmark this post Trackback URL  No trackbacks were found for this post Attribution Share Alike

Creating multiscale images using them with the #Chisimba OpenZoom filter Derek Keats has made an interesting blog post
307 days ago

This video is a screen recording showing how to create multiscale images using some simple python tools from OpenZoom Endo. It also shows how to use them with the #Chisimba OpenZoom filter. 



Tags for this post

       
Bookmark this post Trackback URL  No trackbacks were found for this post Attribution Share Alike

The Malta Moon file I used for the OpenZoom / #Chisimba tutorial Derek Keats has made an interesting blog post
306 days ago

These are the Malta Moon files that I used for the tutorial on building multiscale images and using them with the OpenZoom Chisimba filter.


Moon over Malta

You can download this whole set as a zip file if you want to explore it.

 



Tags for this post

       
Bookmark this post Trackback URL  No trackbacks were found for this post Attribution Share Alike

How to create content with dashboard gages in #Chisimba content Derek Keats has made an interesting blog post
275 days ago

Have you ever wanted to produce a report that has dashboard gages in it? You can now do this in any Chisimba content tool that supports filters. These include the content management system (CMS), news, blog, discussion forum, course and group content, blocks, etc.

The GAGE filter implements these dashboard gages using google graph API. Use it as

[GAGE:actual=percentage,label=percentage,colors=start-finish,size=size]Your caption here[/GAGE]

For example, to produce the gage below:
Half way there
Half way there

use the code:

[GAGE:actual=50,label=50,colors=red-green,size=150x100]Half way there[/GAGE]

Here is an example of useage:

Progress in making the muffins
Step Progress
Purchase the ingredients Purchase
Purchase
Place ingredients on counter top Where are the rest
Where are the rest
Heat the oven Oven
Oven
Mix the ingredients Dry ingredients
Dry ingredients

I am sure you can think of other uses!

NOTES:
the numbers should always be percentages;
colors can only be red-green or green-red;
the x in the size must be lower case;
only a white background at present.



Tags for this post

       
Bookmark this post Trackback URL  No trackbacks were found for this post Attribution Share Alike

Using web widgets in content on a #Chisimba based site Derek Keats has made an interesting blog post
274 days ago

Chisimba can be used to build all kinds of different sites, ranging from an academic programme registration system, through a content management system or an eLearning system (so-called learning management system), to a blog or wiki and lots more.

All the content tools and most of the blocks can take filters. For text blocks, you do not need this filter, since text blocks do not have  a  WYSWYG editor. The filter that I am going to describe here is just a shortcut to avoid the need for people who are not comfortable with messing around in the source code of the page in the editor. It allows you to paste a web widget directly into the WYSWYG editor, right in the content of the page.

Many sites give you code snippets, which are used as widgets to create some kind of mashup. For example, TeacherTube (http://teachertube.com/) is a good source of educational videos, many of which you will not find on YouTube. There is no specific filter for TeacherTube because the site's player does not lend itself to filter creation, but you can copy the embeddable player and paste it into your content page surrounded by WIDGET tags.

The filter is [WIDGET][/WIDGET] and is used to enclose a web widget in the WYSWYG editor. To use this to embed a TeacherTube video, simply surround the TeacherTube code by this tag. The format is: [WIDGET]<embed width="470" height="260" flashvars="file=http://www.teachertube.com/embedFLV.php?pg=video_120951&amp;menu=false&amp;frontcolor=ffffff&amp;lightcolor=FF0000&amp;logo=http://www.teachertube.com/www3/images/greylogo.swf&amp;skin=http://www.teachertube.com/embed/overlay.swf&amp;volume=80&amp;controlbar=over&amp;displayclick=link&amp;viral.link=http://www.teachertube.com/viewVideo.php?video_id=120951&amp;stretching=exactfit&amp;plugins=viral-1,gapro-1&amp;viral.callout=none&amp;viral.onpause=false&amp;gapro.accountid=UA-2624863-1&amp;gapro.trackstarts=true&amp;gapro.trackpercentage=true&amp;gapro.tracktime=true" allowfullscreen="true" allowscriptaccess="always" bgcolor="undefined" src="http://www.teachertube.com/embed/player.swf"></embed> style="color: rgb(0, 0, 255);">[/WIDGET]

This will cause the embeddable player to be shown when the page is viewed, as below:

This allows you to insert videos from sites other than YouTube, as well as other kinds of content from widget sites without having to tamper with the source HTML of the content.

I might use this to insert a web widget, for example from Widgetbox or another widget site. The same principle works. To insert a guitar tuner widget, I might use:
[WIDGET]<script type="text/javascript" src="
http://cdn.widgetserver.com/syndication/subscriber/InsertWidget.js"></script><script>if (WIDGETBOX) WIDGETBOX.renderWidget('b7cf6c47-768d-4ae3-8ca5-f7b5f7044942');</script><noscript>Get the <a href="http://www.widgetbox.com/widget/guitar-tuner">Guitar Tuner</a> widget and many other <a href="http://www.widgetbox.com/">great free widgets</a> at <a href="http://www.widgetbox.com">Widgetbox</a>!</noscript> style="color: rgb(0, 0, 255);">[/WIDGET]
which is copied from the guitar tuner widget on widgetbox. I keep this on my local copy of Chisimba and use it daily to tune my guitar!

There are plenty of educational widgets, videos, sound bytes and other goodies that can easily be inserted in this way.There are plenty of educational widgets, videos, sound bytes and other goodies that can easily be inserted in this way.



Tags for this post

       
Bookmark this post Trackback URL  No trackbacks were found for this post Attribution Share Alike

Installing #Chisimba on Ununtu 9.10 Derek Keats has made an interesting blog post
224 days ago

 This is a guide for beginners to Ubuntu and Chisimba on how to install Chisimba as a developer. It was made by David Janks at Wits.

 

 



Tags for this post

       
Bookmark this post Trackback URL  No trackbacks were found for this post Attribution Share Alike

Short guide to installing modules for #Chisimba using a svn checkout Derek Keats has made an interesting blog post
223 days ago

This is a short guide to installing modules for Chisimba using a svn checkout  made by David Janks at Wits.

 



Tags for this post

       
Bookmark this post Trackback URL  No trackbacks were found for this post Attribution Share Alike

Getting #Ubuntu ready for a #Postgres install of #Chisimba Derek Keats has made an interesting blog post
221 days ago

How to prepare your developer system for a Chisimba install using Postgres as the database. This does not cover the Chisimba install itself. Just installing all the bits you need. The rest is the same whether you use Postgres of MySQL.



 



Tags for this post

       
Bookmark this post Trackback URL  No trackbacks were found for this post Attribution Share Alike

Getting Ubuntu ready for a Postgres install of Chisimba, Part 2 Derek Keats has made an interesting blog post
221 days ago

How to prepare your developer system for a Chisimba install using Postgres as the database. This video covers checking Chisimba out into your home folder in a folder that you create called 'chisimba'. This is different from the normal Chisimba install, and has nothing to do with Postgres, rather with my preferences for setting up multiple instances for developing from a common code base.





Tags for this post

       
Bookmark this post Trackback URL  No trackbacks were found for this post Attribution Share Alike

New #Chisimba filter for Twitter: TWEETS Derek Keats has made an interesting blog post
215 days ago

I have added a new filter for Chisimba to work with Tweets from Twitter. The filter is called TWEETS, and it works with two sets of parameters, the type of listing and the value of the query. Currently, there are two types of listings 'user' and 'query'. The filter takes the format:

[‍TWEETS:user=username]
or
[‍TWEETS:query=query_code]
where query_code is any Twitter Json API query. Examples of legitimate queries
[‍TWEETS:query=chisimba]
[‍TWEETS:query=to:dkeats]
[‍TWEETS:query=from:dkeats&phrase=chisimba]
[‍TWEETS:query=from:dkeats+OR+from:charlvn]
[‍TWEETS:query=chisimba&to:dkeats]


For example,
[‍TWEETS:query=from:dkeats]
will show my latest Tweets as shown below.

As another example, to show Tweets related to Chisimba, we can use
[‍TWEETS:query=chisimba]
which produces the results below.


To use this filter you need the latest versions of the moduless: twitter, htmlelements, and filters. The latter two are in core, while twitter is in the modules repository. Unfortunately, the Tweet! jQuery plugin doesn't behave exactly as expected for the more complex queries. I will get in touch with the Tweet! developers to see if we can fix that. Best to stick with simple queries for the time being.

There is still some work to do on this one.
1. add the ability to specify the number of tweets and the size of the avitar.
2. add the ability to provide for live queries using juitter (can also be used to make Twitter context aware)
3. fix it so that hashtags can be used

The Tweet! plugin can be found at http://tweet.seaofclouds.com/ .




Tags for this post

       
Bookmark this post Trackback URL  No trackbacks were found for this post Attribution Share Alike

New #Chisimba plugin for oEmbed sites: QUICKEMBED Derek Keats has made an interesting blog post
208 days ago

For my holiday pleasure, I created a new filter for Chisimba based on the jQuery oEmbed plugin. The idea is that you can paste a URL from any site that supports oEmbed, and Chisimba will embed the content for you. Thus it works like lots of other filters, except you use the same filter across multiple sites, including sites for which there is currently no filter.

oEmbed is an open format designed to allow embedding content from a website into another page. This content is of the types photo, video, link or rich. An oEmbed exchange occurs between a consumer and a provider. A consumer wishes to show an embedded representation of a third-party resource on their own website, such as a photo or an embedded video. A provider implements the oEmbed API to allow consumers to fetch that representation. The QUICKEMBED filter enables Chisimba to be a consumer for a selected number of oEmbed providers.

The following providers provide content in a way that is consistent with the QUICKEMBED plugin:

Provider

Tested

5min (http://www.5min.com)

yes

Amazon Product Images

 

Flickr (www.flickr.com)

yes

Google Video (http://video.google.com)

yes

Hulu (http://www.hulu.com/)

limited to US

Imdb

failed

Metacafe

yes

Qik

yes

Revision3 (http://revision3.com)

failed

Slideshare

yes

Twitpic (http://twitpic.com)

yes

Viddler ( http://www.viddler.com)

yes

Vimeo (http://vimeo.com/)

yes

Wikipedia (http://en.wikipedia.org)

yes

WordPress (http://www.wordpress.com) [can show blog post excerpts]

yes

YouTube (http://www.youtube.com)

yes


The format for the filter is simply the filtername, a colon, and the URL of the object you want to embed:
  [OEMBED:http://url.to.object/item.ext]

For example,
  [‍quickembed:http://www.youtube.com/watch?v=hgjP91xJe_I]
will embed a YouTube video into the page. This is exactly the same as using the   [YOUTUBE]   filter, but has the advantage that it will work with content types other than YouTube. The following will insert a Viddler video:
[‍quickembed:http://www.viddler.com/explore/nicolamattina/videos/7/]
An excerpt from Wikipedia content can be inserted using:
[‍quickembed:http://en.wikipedia.org/wiki/Open_content]
It doesn't look so pretty on its own, so you can also wrap it in a COLORBOX filter.
   [‍COLORBOX:boxtype=bluebox][quickembed:http://en.wikipedia.org/wiki/Open_content][‍/COLORBOX]

Insert a photograph from Flickr using any suitable link as follows:
  [‍quickembed:http://www.flickr.com/photos/dkeats/4213519974/]
which produces:


Important note: if you try a quickembed and it fails because the link is invalid, then it is probable that all the quickembeds on the page will fail at the same time. To fix this, delete the most recently added quickembed, that is the one that is most likely causing the problem. This is a known issue, and there is currently no way to determine if a link is valid or not.


Tags for this post

       
Bookmark this post Trackback URL  No trackbacks were found for this post Attribution Share Alike

Helping to test the #Chisimba #oEmbed provider Derek Keats has made an interesting blog post
207 days ago


Please note that you can only do this test if you have the Wordpress oEmbed plugin installed.

We are developing Chisimba to be an oembed provider. We need help testing whether the content we provide works with oembed consumers. One of these is Wordpress. The first provider is an image provider, but once that has been tested, we can make other providers.

Here are some images that are on dkeats.com that can be used for testing:
http://www.dkeats.com/usrfiles/users/1563080430/testimages/IMG_2832.resized.JPG
http://www.dkeats.com/usrfiles/users/1563080430/testimages/IMG_2847.resized.JPG
http://www.dkeats.com/usrfiles/users/1563080430/testimages/IMG_2919.resized.JPG

I am not totally sure, but I think that these might need to be urlencoded to work with Wordpress. If so, the encoded versions are below.

www.dkeats.com%2Fusrfiles%2Fusers%2F1563080430%2Ftestimages%2FIMG_2832.resized.JPG">
www.dkeats.com%2Fusrfiles%2Fusers%2F1563080430%2Ftestimages%2FIMG_2847.resized.JPG">
www.dkeats.com%2Fusrfiles%2Fusers%2F1563080430%2Ftestimages%2FIMG_2919.resized.JPG">

The link for the base URL for the oembed version is:
http://www.dkeats.com/index.php?module=oembed&action=provideimage&as=json=
In use, the last equals sign would be followed by the image URL, which must be on the same server.

Thus, in Wordpress you should be able to insert:
[oembed:http://www.dkeats.com/index.php?module=oembed&;
action=provideimage&=http%3A%2F%2Fwww.dkeats.com
%2Fusrfiles%2Fusers%2F1563080430%2Ftestimages%2FIMG_2919.resized.JPG] 

In a nice textbox for you:
http://www.dkeats.com/index.php?module=oembed&action=provideimage&=http%3A%2F%2Fwww.dkeats.com%2Fusrfiles%2Fusers%2F1563080430%2Ftestimages%2FIMG_2919.resized.JPG] ">

Please try the encoded ones first, and if that fails, try the unencoded ones. Please let me know if it works. We know that the provider does return the correct JSON because it returns the following:

The display method is not set.
{

    * type: "photo"
    * version: "1.0"
    * title: null
    * author_name: "Derek Keats"
    * author_url: http://www.dkeats.com/
    * provider_name: "dkeats.com"
    * provider_url: http://www.dkeats.com/
    * cache_age: 600
    * thumbnail_url: http://www.dkeats.com/usrfiles/filemanager_thumbnails/gen13Srv30Nme10_59647_1262607351.jpg
    * thumbnail_width: 79
    * thumbnail_height: 100
    * url: http://www.dkeats.com/usrfiles/users/1563080430/testimages/IMG_2919.resized.JPG
    * width: null
    * height: null

}


as it should.

Please let me know the results of your test. Twitter, email, Facebook or comment.



Tags for this post

       
Bookmark this post Trackback URL  No trackbacks were found for this post Attribution Share Alike

Digital business card for #Chisimba using microformats Derek Keats has made an interesting blog post
194 days ago


This weekend, I started a microformat based business card for Chisimba. It is extremely simple to use, and can generate a business card that links to your social networking sites, as well as standard address and other information. It is not finished yet but you can get a taste of it on this site. Just open my own digital business card.

As this is a work in progress, comments are especially welcome.

If you are running Chisimba, you can create your own card on your site but you need to update the unstable (developer) code. You will have to update the Chisimba engine, as well as security and userparamsadmin modules. Then you need to install digitalbusinesscard from the unstable package server using Module Catalogue.

To create your card, add user parameters using userparamsadmin User configuration from the user menu. Add the following parameters:

homepage (the URL to the page that is your website)
tagline (a tag line for teh top of your card)

Then you can add social networking sites such as twitterurl, facebookurl in the form SOCIALNETWORKurl where SOCIALNETWORK is one of the common ones such as slidshareurl, youtubeurl, etc. You can also add latitude and longitude to get the map.

This is still experimental, and this post is mainly for developers and people living on the edge of Chisimba.

Ways of calling it

http://www.dkeats.com/index.php?module=digitalbusinesscard&username=dkeats
http://www.dkeats.com/index.php?module=digitalbusinesscard&userid=userid
http://www.dkeats.com/index.php?module=digitalbusinesscard (only if you are logged in, and it will give you your business card then).
http://www.dkeats.com/index.php?module=digitalbusinesscard&username=dkeats&action=showjson
to get it back as JSON. Note that the JSON stuff has not been updated, so it might be broken after my  changes this evening. Will fix next weekend. You will need a JSON viewer plugin in your browser to see the output of the viewjson action.

@Todo - add old fashioned stuff like phone number, etc.
@Tod0 - add more social network sites.... Which ones?

Hack with a smile smile

d


Tags for this post

       
Bookmark this post Trackback URL  No trackbacks were found for this post Attribution Share Alike

Software developers who refuse to accept design is part of their job should go back to the 20th Century (#Chisimba) Derek Keats has made an interesting blog post
104 days ago

 

Chisimba developers must be designers. This is an absolute truth.

Chisimba is an awesome framework for development, and an awesome set Web 2.0 applications. Like the Borg in Star Trek, anything can be assimilated in Chisimba, which gives it one of its strengths. But the ease of developing new functionality is also a weakness - developers don't always apply their minds fully to all dimensions of the task.

On the developer list for Chisimba, I have sounded like a broken record for the past few months (years?) calling for:

  • A stronger sense of community among the participants
  • More attention to coding standards and well designed MVC code with reusable objects in all layers
  • More attention to detail about layout.

It is this last item that I want to focus on here.

Some developers have said 'we need designers, we developers cannot do design'. To which I throw my worst insult 'That's so 20th Century".

Yes, of course developers are not advance graphic designers, and I don't mean you have to be super hot designers capable of creating new innovative layouts that stun and amaze the world. That's 'oh duh' stuff.

But as a developer building applications with which users interact, you do not have the luxury to ignore design, any more than you have a right to ignore spelling and grammar on your interfaces. Simple things like what I call the 'flaw of abutment'. This is when two elements in an interface touch one another such that the effect is extremely ugly and unprofessional in appearance. Yet developers commit the crime of the 'flaw of abutment' on a daily basis. How hard is this to see?

Yes, you could leave it to the 'skin designers' to fix, but as someone who is trying to design one decent skin, I do not have the thousands of hours that would be needed to inspect each and every interface element for this and other simple flaws. Developers HAVE to do this themselves, and they have to learn to see the issues, rather than leave them to the chance that someone else will notice and have the time to uncommit the developer's crime.

Yes, it should be a crime in our community. Doing development and totally ignoring the design aspects of it is an insult to yourself, it is a deep insult to your users, and if people pay for your skills, it is a deep insult to them and their wallets. Most importantly, it is a deep and lasting insult to those who want to work to make Chisimba, and your work on it, look good.

But there is more to design than that. Even if you are not going to design something yourself, you should write code that can be subjected to design.
 

image

Consider this.



That is fine HTML wise, but is completely unable
to be subjected to design. Now, consider this:

image

for example, we can now do things like

Table rendered as image because CKEDITOR is such crap

With that simple thing, every element in the table is accessible to styling without having an influence on anything else.

This is the most basic of things that we should know, and I doubt any developer is not smart enough to think of this. But for some reason we don't. We need to change this. We need to take care and pride in our work. Of course, we shouldn't over-design either, but right now we are so underdesigned that this is not a worry.
 
There are plenty of articles about good design. Anyone who can develop a Chisimba module can read up on the basics of design for developres. If you are not willing to learn a little design to improve the quality and usefulness of your work, then you should choose a different career. There is no place in the 20th Century for developers who believe that they don't need to understand design, except perhaps building embedded systems that do not interact with users. Certinaly, there is no place in an application like Chisimba for such retro thinking.



Tags for this post

       
Bookmark this post Trackback URL  No trackbacks were found for this post Attribution Share Alike

Fixing Chisimba for skinning, with a particular focus on eLearning modules Derek Keats has made an interesting blog post
102 days ago

GENERAL CONSIDERATIONS

Please view the eLearning module using the Metallic-elearn skin. If you see things that could benefit from having a better location, or mor appropriate style, please add the element to the code, and add the style to the stylesheet in the metallic-elearn skin. Please send the modified styles to the mailing list, and DO NOT COMMIT YOUR SKIN CHANGES. You should, however, commit your code changes. Some of the obvious things to fix:

two elements in an interface touch one another such that the effect is extremely ugly and unprofessional in appearance
the colour of elements do not match the overall theme
elements that do not have a style that should have one
sexybuttons are not used, or are used but do not have the images.

In the case of sexybuttons, you need to set an icon as follows:
$this->objButton->setIconClass("save");
$this->objButton->setIconClass("edit");
etc. See the sexybuttons code for icons that you can use.

There are no hard and fast rules. We can discuss things on the list. I will monitor the list as best I can for the next few days and answer questions where I can. But please do add to the ideas proposed here. This is just a start, I have more ideas, but I am out of time, and I want to give developers enough to get going.

COURSE AND CHAPTER TITLES

Please wrap them in a span where they should be displayed in a consistant colour, which is almost always, with the class  .coursetitle or .chaptertitle as in the example below:

<h1>Worksheets in <span class="coursetitle">Biology of mutton</span></h1>



WARNING, ERROR, SUCCESS and HIGHLIGHTED

Whenever you have an item that produces a warning, error or success result, and you want them highlighted as such, please use the DIV or SPAN classes warning, error, success or highlighted. Do not use these classes for anything else. If you find code that uses any of these classes for any other purpose (for example, I have found code that used the error class for success, or just to highlight a title. This should be fixed. Change highlight use of these classes to highlighted. They should be used as follows (Note that the HTML tag should be written in lower case as 'div', not 'DIV'):

<SPAN class="warning">Your account is almost out of space</SPAN>
<SPAN class="error">Your upload failed</SPAN>
<SPAN class="success">Your exam was submitted to the teacher</SPAN>
<SPAN clas="highlighted">There is a full moon tomorrow</SPAN>

Please check all code for incorrect use of these classes and fix it.


MODULE LINKS

When ever you have an add / edit / delete link that is TEXT ONLY (does not apply where you are using icons), make use of two divs as follows:

echo "<div class='adminadd'></div><div class='adminaddlink'>"
  . $addLink->show()
  . "</div>";

The following classes should be used:

A link that will add an item: adminadd, adminaddlink
A link that will edit an item: adminedit, admineditlink
A link that will delete an item: admindel, admindellink

Where a link is an administrative link, please use the class adminicon and adminiconlink, as follows:

echo "<div class='adminicon'></div><div class='adminiconlink'>"
  . $listAllModulesLink->show()
  . "</div>";

Where the link is to the module home, use modulehome and modulehomelink as follows:

echo "<div class='modulehome'></div><div class='modulehomelink'>"
  . $thisModuleHomeLink->show()
  . "</div>";

WRAPPERS

When you have things that should be wrapped in outer and/or inner areas for rendering (see Metalic skin and below for examples) please use the DIVs called innerwrapper and outerwrapper accordingly. This may be used, for example, where there are inner and outer areas of differing transparency such as we have in the metallic and derived skins, as well as on the http://www.chisimba.com site. To achieve this, use:

<div class='outerwrapper'>
Some rendered text, images, etc.
    <div class='innerwrapper'>
       Some inner wrapper rendering.
    </div>
</div>

Avoid using innerwrapper and outerwrapper for anything else or any other purpose.

If you want to alter this somehow, you can use fake selectors
<div class='innerwrapper mymodifications'> and
<div class='outerwrapper mymodifications'>
to achieve derived classes.

Please give some thought style when developing new modules, please use these things where suitable and verify against the metallic skin. Indeed, right now, anyone doing development should test your code against the Metallic skin. If you want to see the effect, look at a typical module using an old skin, and then look at it with Metallic. Even oldies like module catalogue look much better when they have style.



Tags for this post

       
Bookmark this post Trackback URL  No trackbacks were found for this post Attribution Share Alike

Proposal for a #Chisimba canvas Derek Keats has made an interesting blog post
79 days ago

Currently in Chisimba, the model-view-controller architecture has been perverted from its original design. With the idea of a Chisimba canvas, I am proposing bringing back the sorts of ideas that were in the original design of Chisimba as conceived by Sean Legassick back when it was still called KINKY (Kinky Is Not KEWL Yet).


Apologies for the bullet points. Please note that this is a first stab, not a finished design.

The ideas presented here will mean that there is one way to interact with the Chisimba interface, and that it is consistant across all modules. It will mean quite a lot of work on modules that do not currently use this approach, but because the ideas are already implemented in some modules, it can be done initially as a dirty hack for some of them. Aside from functional improvements, this will make it a lot easier to make Chisimba skins, and to make flexible skins.

I have not elaborated on the idea of dynamic templates, but those would be templates where the design can change according to circumstances such as context, individual preference, etc. Dynamic templates would be saved in XML or database format.



Tags for this post

       
Bookmark this post Trackback URL  No trackbacks were found for this post Attribution Share Alike

Next step in #Chisimba podcasting: installing #PodderLive! Derek Keats has made an interesting blog post
77 days ago

Yesterday I wrote about a netbook-based podcasting system that can post easily to a Chisimba based server. It made use of the desktop client for Chisimba that we call PodderLive! Here I give a little more information about PodderLive! and show you how to download it and get it working on an Ubuntu machine. There is a Windows version, but I don't know anything about it, so I am not going to try to include it here.

PodderLive! is a Python application so it doesn't really need any installation, but it does need python and wxpython for it to work. You can install them from the Synaptic package manager or using the simpler command line:

      apt-get install python python-wxversion

Download PodderLive! from http://www.chisimba.com/usrfiles/users/9448100319/downloads/podderlive-3.1.1.tar.gz and save it somewhere, for example in your home directory. Using the command line, this will be:

      cd ~
      wget http://www.chisimba.com/usrfiles/users/9448100319/downloads/podderlive-3.1.1.tar.gz

Using file manager, move the file into your bin directory within your home directory. If you have no bin directory, make one. Using the command line, this would be:

      mkdir bin
      cp podderlive-3.1.1.tar.gz ~/bin/

Using file manager, right click on ~/bin/podderlive-3.1.1.tar.gz and choose 'Extract here' or use the command line:

      tar -xvzf podderlive-3.1.1.tar.gz

Now you can delete podderlive-3.1.1.tar.gz unless you want to keep it.

Next download http://www.chisimba.com/usrfiles/users/9448100319/downloads/podder and save it into you bin directory. Using the command line this will be:

      cd ~/bin
      wget http://www.chisimba.com/usrfiles/users/9448100319/downloads/podder

You can start it from a terminal by typing podder at the command prompt. Alternatively, you can add it to your menu. You can grab an icon to use for it as follows:

cd ~/bin
mkdir podder-icon
cd podder-icon
wget http://www.chisimba.com/usrfiles/users/9448100319/downloads/podcast-icon.png

Go to your menu editor, and add the programme /home/$USER/bin/podder
and use /home/$USER/bin/podder-icon/podcast-icon.png as the icon.

Thats it, now you are ready to use PodderLive! I will write some more about using it in my next blog post.



Tags for this post

       
Bookmark this post Trackback URL  No trackbacks were found for this post Attribution Share Alike

Using PodderLive! with #Chisimba Derek Keats has made an interesting blog post
69 days ago

This is the last of my three posts about PodderLive! PodderLive! is designed for use in the classroom, but it can also be used to quickly and easily create podcasts from your desktop and publish them to a Chisimba server for example a Chisimba blog server such as http://www.dkeats.com or an eLearning server such as https://elearn.wits.ac.za/ or http://philippines.chisimba.com.
 
Podcasting with PodderLive! consists of a very simple process:

1. Set up your server connection details
2. Record
3. Add a title and tag
4. Publish

Unlike other tools for recording podcasts, there is no separation of recording, editing and uploading. This makes it ideal for classroom podcasting because the recorded lecture is available almost immediately to students.

In the instructions below, the steps refer to the numbers in the following image.

PodderLive! interface.

STEP 1: Set up your server connection details

Click the left-most icon or select configure from the menu. In the window that pops up, enter the URL for the server to which your podcast will be posted, as well as your username and password for that server. Note that if your Chisimba installation is in a subdirectory (something after the URL), it must be included and there must be a trailing slash. Without the trailing slash it will not work.

PodderLive! preferences

STEP 2: Record

Guess which button is the record button? Yes, you got it, the red one. When you click it, you will be asked for the location and filename to save. You can save it anywhere, but remember where you put it because you will need to browse to it in order to complete the last step.

STEP 3. Add a title and tag

Click the icon with the letter "a" on it, to get a popup window to add various metadata. At least you should add a title. Click OK to save it.

PodderLive! tagging

STEP 4. Publish

Click the icon with the up-arrow on it to publish your podcast.

Then you are done, and the podcast will appear on your server. You can also add it to your class, but you will need to do that from the Chisimba web interface for podcasts, as the uploader does not know about courses on the Chisimba site.

Podcast in Chisimba



Tags for this post

       
Bookmark this post Trackback URL  No trackbacks were found for this post Attribution Share Alike

The new Chisimba canvas: phase 1 complete Derek Keats has made an interesting blog post
61 days ago

In keeping with my previous post on the idea of a Chisimba canvas, I have committed the first skin that starts to implement the canvas proposal. It still needs quite a bit of work, but it is good enough to give the basic idea of the canvas. So far, it only implements the most trivial features.

To test it, make sure that your core is up to date, install the canvas module. Select the skin 'Chisimba canvas POC' from
the dropdown or from the system configuration parameter. Then open your site as follows:

http://localhost/pathtochisimba/index.php?canvas=yellow
http://localhost/pathtochisimba/index.php?canvas=blue
http://localhost/pathtochisimba/index.php?canvas=red
http://localhost/pathtochisimba/index.php?canvas=_default

where pathtochisimba is the path to wherever your Chisimba install is located. Notice how the width changes in the blue one, and the layout changes in the red one. Notice the use of different images in the yellow one. Blue is a fixed width canvas within the canvas skin, and it is achieved by doing:
  .Canvas

The display method is not set.
{
      width: 1024px;
  }

within the stylesheet.css inside the blue canvas.


These are just skins within a skin right now, until the canvas code is more fully developed. However, you can get a feeling for the basic power of the canvas approach by creating a personal canvas.

To create a personal canvas, go to file manager in your Chisimba instance, and create a directory (folder) called canvases. Then, inside that directory, create two more directories to represent two canvases that you are going to test. Let's call them purple and green. On your computer, create a file called stylesheet.css and inside it, add  the following:

html, body
The display method is not set.
{
    background-image: none;
    background: green;
}


Upload it to the green canvas directory that you created above. Then change it to:

html, body
The display method is not set.
{
    background-image: none;
    background: purple;
}


and upload it to the purple directory. Then, open your site as follows:

http://localhost/pathtochisimba/index.php?canvastype=user&canvasdir=purple

and then

http://localhost/pathtochisimba/index.php?canvastype=user&canvasdir=green

See what happens? OK, that is not very permanant. To select one of them to replace the default skin, select 'User' from the menu, and then 'User Configuration'.  Add a parameter called 'canvas' and enter its value as 'green' (or purple) and save. Now, browse to any place within your site, and as long as you are using the canvas skin, your site will display with your preferred personal skin.

Of course, your personal canvas doesn't have to just contain the body modifications, you can make it a full Chisimba skin with all the bells and whistles. Store your images in subdirectories off the canvases/canvasname directory, and use normal CSS to include them in your skin.

In the canvas, you have some layers that wrap the page, and that can be styled before and after the content container. They are:
.Canvas {
}

#Canvas_Content {
}

#Canvas_BeforeContainer {
}

#Canvas_AfterContainer {
}

In addition, the footer is wrapped in a layer with the id 'Canvas_AfterContainer'. Other container elements are still under development.



Tags for this post

       
Bookmark this post Trackback URL  No trackbacks were found for this post Attribution Share Alike

Testing the new #Chisimba canvas on dkeats.com Derek Keats has made an interesting blog post
59 days ago

This site is now being a guinea pig for the new Chisimba canvas system. See previous posts for more. I have not yet made a dkeats.com canvas, so I will just change from time to time to show what the canvas system can do. This is a simple blue canvas that took less than 2 minutes to make. Yea, I know, it shows!



Tags for this post

       
Bookmark this post Trackback URL  No trackbacks were found for this post Attribution Share Alike

The #Chisimba dynamic canvas: the simple version proposal Derek Keats has made an interesting blog post
34 days ago

Following on from the refactoring I have been doing, I have made a proposal to simplify the Chisimba templates using what I call the dynamic canvas. This proposal is only partly dynamic, in that the blocks that are rendered on the template can be changed, but only by the module author. A full dynamic canvas would allow for editing the blocks displayed by any suitably authorised member of the site. This will come later. Meanwhile, the use of blocks with the dynamiccanvas module can greatly simplify Chisimba templates, with a typical template looking as below:

Basically, a template renders into the canvas, and there are two kinds of blocks, those that belong to the module, and those that belong to another module. The format is MODULE:BLOCK, or just BLOCK for blocks from the module which owns the template.

It makes use of the output buffering features of PHP, and sends the output to a parser that parses the template for the block codes.



Tags for this post

         
Bookmark this post Trackback URL  No trackbacks were found for this post Comments 0 Attribution Share Alike

Block-based dynamic canvas for #Chisimba Derek Keats has made an interesting blog post
29 days ago

Since I code for relaxation, for the past few days of my holiday I have been doing some work on Chisimba to improve the way in which it renders its look and feel, as well as the way in which it parses templates to render content. Everything I do is backward compatible.

Following on from the idea of dynamic canvases, I have made it possible for Chisimba to render an entire template based on functionality of Chisimba that we call blocks. There are two types of blocks in Chisimba, narrow blocks and wide blocks. Narrow blocks work on the side columns of 2 and 3 column layout, and wide blocks work on the middle area of 1, 2 and 3 column layout.

To use blocks to make a template, it may be necessary to use output buffering. To do this, add the following to the top of the template:

<?php
ob_start();
?>

Then add the following to the bottom of the template:

<?php
// Get the contents for the layout template
$pageContent = ob_get_contents();
ob_end_clean();
$this->setVar('pageContent', $pageContent);
?>

You then need a layout template in your module that contains:

<?php
$objBlocks = $this->getObject('blockfilter', 'dynamiccanvas');
$pageContent = $this->getVar('pageContent');
$pageContent = $objBlocks->parse($pageContent);
echo $pageContent;
?>

In your controller, for methods that will render the block-based dynamic canvas, you need to ensure that you enable the layout template using:

$this->setLayoutTemplate('demo_layout.php');

For this to work, you need a version 3.0+ skin, and you need to use the Chisimba Canvas layout, which is as follows:

<div id="Canvas_Content_Body_Region1"></div>
<div id="Canvas_Content_Body_Region3"></div>
<div id="Canvas_Content_Body_Region2"></div>

Note that Canvas_Content_Body_Region2 is the middle, but needs to be presented last in order for the columns to float and align correctly.

For 2-column layouts this would be:

<div id="Canvas_Content_Body_Region1"></div>
<div id="Canvas_Content_Body_Region2"></div>

Blocks are inserted using JSON syntax as follows:

 

The display method is not set.
The display method is not set.
{
    "display" : "block",
    "module" : "modulename",
    "block" : "blockname",
    "blocktype" : "blocktype",
    "titleLength" : "titlelength",
    "wrapStr" : 0|1,
    "showToggle" : 0|1,
    "hidden" : "value,
    "showTitle" : 0|1,
    "cssClass" : "cssClass",
    "cssId " : "cssId"
 }

Thus, adding the above block to the left column in such a template would consist of including it in the Canvas_Content_Body_Region1 div as follows:

<div id="Canvas_Content_Body_Region1">

 

The display method is not set.
The display method is not set.
{
    "display" : "block",
    "module" : "modulename",
    "block" : "blockname",
    "blocktype" : "blocktype",
    "titleLength" : "titlelength",
    "wrapStr" : 0|1,
    "showToggle" : 0|1,
    "hidden" : "value,
    "showTitle" : 0|1,
    "cssClass" : "cssClass",
    "cssId " : "cssId"
 }

</div>

Everything except display, module and block are optional. A template made up in this way might look like:

<?php
ob_start();
$objFix = $this->getObject('cssfixlength', 'htmlelements');
$objFix->fixThree();
?>

<div id="threecolumn">
    <div id="Canvas_Content_Body_Region1">
       

toggle Test 1
The first test is successful

       
    </div>
    <div id="Canvas_Content_Body_Region3">
       
toggle Test 2
The second test is successful. This bloc should have a little more text.

       
toggle Login




Remember me

Forgot your password?
HELP

       
Type: wrapper
This is an example of a block rendered using type wrapper. It places the title in a dark outside layer, and the block output in a light inside layer.

       
Type: table
This is an example of a block rendered using type table. It places the title in a normal header cell, and the block output in a table cell.

       
    </div>
    <div id="Canvas_Content_Body_Region2">
       
toggle My Profile
User Image

 

  Email address:
  Mobile number:
  Country: unknown unknown
  Gender: Unknown

Update Your Profile


       
The block is not valid.
{
            "display" : "block",
            "module" : "dynamiccanvas",
            "block" : "nonexistentblock"
        }

       
Loading...

       
Loading...

    </div>
</div>

<?php
// Get the contents for the layout template
$pageContent = ob_get_contents();
ob_end_clean();
$this->setVar('pageContent', $pageContent);
?>

Note that the lines

$objFix = $this->getObject('cssfixlength', 'htmlelements');
$objFix->fixThree();

are there to equalize the columns. This need will shortly be removed.

For a working example of this, see the dynamiccanvas module. 



Tags for this post

         
Bookmark this post Trackback URL  No trackbacks were found for this post Comments 5 Attribution Share Alike

External blocks with dynamic templates in #Chisimba Derek Keats has made an interesting blog post
26 days ago

Chisimba can display blocks on another Chisimba server, using the dynamic blocks module with the blocks specified in ajax format in a content or personal template. To display blocks in response to an external request, the host server must have the externalblocks module installed (in modules, not in core). In addition, the ALLOW_EXTERNAL_BLOCKS property of the Blocks module must be set to 1 on the host server. If this is not set to 1, then the host will not supply external blocks even with the externalblocks module installed.

To be valid for display externally, blocks must have a property expose set to true. This is done by the developer at thet ime of development of the block, and would normally be done in the init() method of the block as follows:

    public function init()
    {
        $this->title = "Demonstration block";
        $this->expose = TRUE;
    }

External blocks are rendered by the dynamiccanvas module, so only module that use the dynamiccanvas for displaying content can display dynamic blocks, although a filter is in development to provide external blocks within content. The minimal JSON content to display an external block is as follows:

       

Loading...


All the other parameters of the dynamic blocks JSON are available to external blocks. For example,

       
The display method is not set.
{
            "display" : "externalblock",
            "server" : "http://localhost/ch/",
            "module" : "dynamiccanvas",
            "block" : "thirdtest",
        }


will display the thirdtest block from the dynamiccanvas module on http://localhost/ch. The following will display the same block without a title.

       
Loading...


The only difference between the JSON to display regular blocks and that to display external blocks is in the two lines
            "display" : "externalblock",
            "server" : "http://localhost/ch/",

instead of just

            "display" : "block",

for an internal block.



Tags for this post

         
Bookmark this post Trackback URL  No trackbacks were found for this post Comments 0 Attribution Share Alike

My blockview: personal templates in #Chisimba Derek Keats has made an interesting blog post
25 days ago

There is a new module in Chisimba that I wrote at the airport on my way to Madrid. It is very simple, and it only exists to demonstrate the power of dynamic templates. However, it could be expanded to provide for a system of user created templates that allow users to create their own look and feel. The module is myblockview (My block view).

To use it, a user may create a templates directory on a Chisimba server using file manager. In that directory, then create a new directory, one for each template, and load into it a file called template.txt file containing a typical dynamic template of the same kind you would use in a module powered by dynamic templates.

Let's say you create a directory called templates, and then in it you create a directory called default. Then you would create a template contianing the three column divs that you would expect in Chisimba as follows.

 <div id="Canvas_Content_Body_Region1">
    Put some content here for the left column
    </div>
    <div id="Canvas_Content_Body_Region3">
        Put some content here for the right column
    </div>
    <div id="Canvas_Content_Body_Region2">
        Put some content here for the wider, middle column.
    </div>
</div>

Of course, this is not very powerful in itself, but if you combine this form of dynamic canvas with the dynamic blocks specified using JSON, then you can have your own design for a Chisimba interface very quickly.

This module is just a proof of concept to show the power of the dynamic canvas approach to templates. Took me <30 minutes to make it, sitting in the airport. Hopefully, this can stimulate some other ideas.  To use it, install the myblockview module and play around with creating your own templates as described above. At the time of writing, there is little or no error trapping or checking, so if you use it, be warned, it is developer grade code, not yet ready for unleashing on users.



Tags for this post

         
Bookmark this post Trackback URL  No trackbacks were found for this post Comments 3 Attribution Share Alike

Digital business card in #Chisimba Derek Keats has made an interesting blog post
22 days ago

The digital business card module is incomplete, but works and provides a vcard compatible business card for Chisimba. This is for someone who is experimenting with it.

Currently, the fields are stored in user paramters (MENU: user | user configuration). The plan is to move this to triplestore as soon as triplestore has a user interface (no planned timeline, no list response to query). The following fields will generate the business card:

ABOUT ME:
tagline

SOCIAL NETWORKING:
africatorurl
deliciousurl
diggurl
facebookurl
flickrurl
friendfeedurl
googleurl
identicaurl
linkedinurl
mutiurl
operaurl
picasaurl
qikurl
slideshareurl
technoratiurl
twitterurl
youtubeurl

ADDRESSES:
addr_home
ddr_city_home
addr_city_work
addr_postalcode_home
addr_postalcode_work

MAP:
latitude
longitude

PHONE:
phone_home
phone_work
phone_cell

TAGS:

tags
   separated by a dash -
   e.g. geek-elearning-chisimba-php

WEBSITES:
homepage

Happy experimenting!



Tags for this post

         
Bookmark this post Trackback URL  No trackbacks were found for this post Comments 10 Attribution Share Alike
Weblog of: Derek Keats
Login




Remember me

Forgot your password?
HELP

toggle Twitter
You cannot tweet unless you are logged in, and on your own page.
Follow me on Twitter Follow me on Twitter
Friend me on Facebook Add me on Facebook
Chisimba Facebook group Chisimba Facebook group





Afrigator