Tagging in Geneone Forum, Take 2

Due to the sheer uselessness and poor implementation of the old Geneone forum tagging system, I have been working on rebuilding it from scratch this week to be more useful and to stay closer to the original philosophy of tagging – that end users should organize and tag information.

The new tagging system was inspired by del.icio.us which, in my opinion, has one of the best tagging implementations out there.

Adding Tags 

Add Tag 

When you create a new discussion or discussion comment, you’ll be given the opportunity to add tags to it. Below the text box are autocomplete suggestions. Below that, you’ll have a list of all of your tags and tags which are popular in the forum. If you look at the list of suggestions you’ll see the first one is in italics; if you press TAB, that tag will be automatically completed.

Everyone can tag and they can use their own tags to find discussions they’ve read before. You don’t have to rely on other people having tagged discussions with the right tags. If a certain number of people tag a discussion with the same tag, it becomes a global tag. When it becomes a global tag, anyone can find that discussion using the tag. It’ll also be suggested as a tag for people.

Tag Cloud

I’ve previously said I don’t like tag clouds. The thing is, I don’t. However, I made the decision to use tag clouds in the forum. I hope that the tag cloud implementation should be quite non-obtrusive. This tag cloud is much less striking than others – instead of a tag size being any size between two font sizes, there are only 5 different tag sizes.

The CSS looks a bit like this:

.tagcloud a { color: #5456B6; font-size: 11px; }
.tagcloud em a { font-style: normal; color: #000080; }
.tagcloud em em a { font-size: 13px; }
.tagcloud em em em a { font-weight: bold; }
.tagcloud em em em em a { font-size: 16px; }

The difference between the smallest and largest tag is a small colour change, font weight change and font size change. 

Public Tags

A-la social networking, you can view anyone else’s tags. The forum is a bit like a "Web 2.0" application stuck at version 1.1 and it’s essentially a small social network. It’d be interesting to integrate some of these social web features from sites such as Digg and Myspace into a forum.

Public Tags 

How very 2.0! Live search through the tags by member name or their tags. 

Geneone Update: Search, Login Throttling

I’ve updated the version of Geneone running here at neonDragon.net to the latest version. Providing there are no big bugs, this version will get the version 0.6 number.


The search feature has been totally rewritten from scratch. Geneone now maintains a search index so searching will work on databases which don’t support fulltext. Searching can also include titles, descriptions, tags and object settings. Words get stemmed before they are placed in the search index. The search results now also work with the permissions system so only results which the user is supposed to be able to see will be shown.

Some of the code and ideas behind the new search system are based on that of the symfony framework search engine

Try it out

Login Throttling

To protect accounts, login throttling has been added. This will look for unusual activity which may indicate attempted account hacking and will deploy countermeasures. Throttling should make it harder to brute force into someone’s account. We’ve been using it here at neonDragon.net for a couple of weeks now and it seems to be pretty successful.

Other stuff

  • The WYSIWYG editor has been updated to the latest version of TinyMCE and now uses 100% width. The editor is also GZipped to cut down filesize and load time.
  • Gene::getInput() and Gene::getCookie() have been retired and replaced with the Gene_Request class. To grab input you can do something like Gene_Request::getString(‘varname’, GENE_REQUEST_POST);
  • Beginning to use PEAR_Error a bit more throughout the code. This is part of the ongoing effort to integrate better with the PEAR framework.
  • Fixed a bug with CAPTCHA handling which allowed bot spam.

See this previous post for some other new features in Geneone 0.6

Geneone Update

Over the last week or two, I've reorganized and renamed many of the classes in Geneone. All classes now follow the PEAR method of naming and file locations. For example:

  • The Gene class can be found in Gene.php
  • GeneAuth has become Gene_Auth and can now be found at Gene/Auth.php
  • Gene_Object_Model_Blog can now be found at Gene/Object/Model/Blog.php.

Eventually it should be possible to use the PEAR installer to download and upgrade Geneone libraries. You then simply have to download a frontend which will contain the loader code and Smarty.

Since PEAR is an integral part of Geneone it makes sense that it should be possible to upgrade Geneone and it's dependencies by running pear upgrade-all. Of course, there is still no reason why you can't download stuff the traditional way.

Multiple Pages

Screenshot of multiple page functionality

I "borrowed" a bit of the TinyMCE code from WordPress (with a few modifications) to create a buttom to split content up in to multiple parts.

I implemented this feature because I might often embed large images, pieces of content or video on my blog and it doesn't make sense for this to show on the front page of the blog. Long articles can also be split up into multiple parts.

Form UI

I decided to revamp the look of the forms a little based on the beautiful forms at The Wolf's PixelCarnage blog (I hope you don't mind ).

Compared with the old look, font size on the field labels have been turned up and the actual form fields are slightly indented which should make it easier to glance through a form quickly. 

Geneone 0.5.7 Technology Preview

I have updated the whole of neonDragon.net to our latest technology preview – version 0.5.7.


Major changes in this version include optional use of CAPTCHAs, guest support, an overhaul of the edit pages with permission editing, property editing, etc. You can now configure the portlets which are shown on the blog and which web services you wish to ping (e.g. Technorati, Pingomatic). Comment UI has been overhauled and there has been a lot of code cleanup in the templates and reorganization of some files.

See full changelog.


Geneone is still in a technology preview state. It is not yet beta, so you should not run it on a production website. This release is unfinished and will contain bugs. There will be no way to upgrade from this version to a later one and pretty much every version has broken backwards compatibility with the previous one.

If you're still interested, download Geneone v0.5.7

Version Numbering

I had some queries about the strange numbering scheme employed by Geneone. The project started off with a version 0.1, and the idea is that it is worked on, refined and developed until it reaches version 1.0 at which point it is stable. If you followed the project from the very very beginning, you'll know each version was split up into three milestones. There would be a 0.1 M1, 0.1 M2, 0.1 M3, 0.2 M1, 0.2 M2 and so on. When we started using some functions such as version_compare these became x.0, x.3 and x.7.

The idea is that big changes should take place in the first parts of the development for each milestone and when each milestone is released, the application should be pretty stable and bug-free.

I'm currently guessing we're about 6 releases away from a public preview so round about v0.8 we'll probably release a beta version to the public.

Geneone Update: Comments, CAPTCHA, Report

I've updated the copy of Geneone running here to the latest development version. Main changes are:

Comment UI

I've changed the look of both discussion comments and blog comments to use the new design I discussed yesterday. See a demo of it on the forums at the Geneone website. It's also been adapted and modified for blog comments (see comments on this blog; note I modified the colours for this blog). There's no avatars at the moment; these will be put in when they work properly.


I put in CAPTCHA support for when guests try to add comments. Unfortunately it seems like they were cracked pretty easily when I added them onto my blog (seems like all my spam comes from the same guy) so for the moment, guest commenting is still disabled. It's just not worth the hassle.

Report Comments

There is now an easy way for users to report comments for objectional material and a way for moderators to manage these reports. 

Discussion Visual Refresh

I've been working on redoing the layout of forum discussion pages over the last few days (topic pages in classic forum lingo). At the moment, discussions look something like this:

Current Discussion Page 

The main reasons for a new layout was the fact that I wanted to get rid of titles for comments (nobody uses them so we repeat the discussion title a few hundred times), and to try and put a greater focus on the content itself.

This is what I'm up to:

New Discussion Page

This new layout should use less space so less scrolling should be required and there is more of a focus on the actual content. There are also a direct link to delete comments and space for a user avatar.

If all goes to plan, I hope to roll this new discussion page look to Evolution Forums soon and probably adapt the layout for blog comments.

Comments are welcomed! 

Geneone 0.5.3 Technology Preview

It's been 3 months since the last source code release so it's about time for another one! This package contains the latest version of the Geneone source code which is currently powering the whole of neonDragon.net.


Please be aware that this is a technology preview intended to let people play around with the software and try out some of the features discussed on this blog for themselves. Don't run a production website using this code and don't expect to be able to upgrade to a future version.

Download Geneone 0.5.3

What's new?

This release includes all the improvements made in the last 3 months. This includes the experimental forum homepage, MDB2 upgrade, forum icons, blog categories, updated hAtom support, files and dozens of bug fixes. View the full changelog at the Geneone website. 


There have been big changes in the file structure, configuration and database structure since Version 0.5 so do not attempt to upgrade an existing installation. The next version will break backwards compatibility with version 0.5.3 once again so do not try to run a production website using this code.

Experimental Forum Homepage

Over the last few weeks, I've been working on creating a working prototype of a new homepage for forums. The new homepage is based on a mockup I created in June of last year. 

It's quite a departure from the classic forum homepage which lists all the forums available on the site, who posted in them last, how many discussions there are, etc. The priority of this revised homepage is not to display shed loads of information but to display relevant and useful information.

Instead of showing every forum, it'll show you forums that you access frequently – forums where you are more active. Forums which you never access will drop off the homepage onto a secondary page which lists all the forums. Over time, it'll continue to refine the items shown on the homepage. Members will be able to customize the homepage themselves – mark forums as favourites and reorder the forums as they please on their forum homepage.

On the right hand side, there will be a number of "featured discussions" and easy access to discussions you've read recently. You'll also get quick access to frequent tasks such as finding discussions you've contributed to.

One other big difference between this homepage and standard forum homepages is the use of a visual icon for each forum. I've found providing a visual identity for each forum makes the homepage look a lot better and generally makes it much easier to navigate.

You'll notice that forums and discussions with new discussions or comments have a colour icon, a highlighted background and bold text. This makes it really easy to see at a glance where the new content is without necessarily having to run your eye down the icons.

Thoughts and comments are welcome!

PEAR::MDB2 migration

Finally finished the migration to PEAR::MDB2. This took about two days of work for Geneone and a bit extra for neonDragon.net (issues with sequences).

Also determined some slow queries and added indexes. neonDragon keeps going on about a couple of queries now being 1,000,000% faster because of indexes.

I said functions such as autoExecute and query with arguments as the second string didn't exist in MDB2. I was wrong: they do exist and are part of the extended class although I didn't know that due to the poor documentation. 

Geneone Updates: Forum Icons

I've finally managed to update the copy of Geneone here at neonDragon.net to my latest build.

Forum Icons

Forum icons are neat. In Geneone Forum, each forum can have an icon associated with it. This icon is displayed in the forum listing. Moderators can upload an image and Geneone will automatically resize and crop it to the correct size.

This is great because it gives each forum a unique visual identity. I've still yet to reformat the forum list page so at the moment it looks really bad as the icon is scaled down to 32×32. Eventually I want to fix PNG transparency and also provide an easy interface to find images perhaps interfacing with Open Clipart (which seems to have disappeared somewhere) or other services which provide public domain/CC imagery. 

I currently have a mockup for a different kind of forum homepage which puts a bigger emphasis on images and personalization.


I finally got around to adding file & upload support so I don't have to use Imageshack The screenshot above is hosted out of the File namespace. There needs to be some work on TinyMCE/Upload integration.


  • Upgraded to TinyMCE 2.0.4. There was some BC-break between 2.0.2 and 2.0.4 for plugins so it took me a while to figure out how to update emoticons. As a bonus, I fixed a bug where having the cursor right next to an emoticon and selecting another emoticon would cause the original emoticon to be overwritten .
  • I've updated the templates to conform to the latest specification of the hAtom microformat.
  • Profile fields are now gone from registration! Woo Hoo!