RSS

Bloggers

Dave Tosh
Co-founder/Product Lead
All posts
Twitter

Brett Profitt
Lead Developer
All posts
Twitter

Nick Whitt
Web Services
All posts
Twitter

Cash Costello
Community contributor
All posts
Twitter

Richard Owen
Business Development
All posts

Search

Blog tagcloud

    Welcome to the Elgg news blog

    This is the best place to keep up to date with developments around the Elgg project.


    Oct
    09th
    by
    admin

    The Elgg Community: a case study

    Posted in general | 0 comments

    We're really pleased with the growth in the Elgg Community in the short time it's been online. It's great to see so many people discussing issues, uploading plugins and trying out the system. Perhaps best of all, an array of locale-specific groups has sprung up and are providing translations, proving that Elgg use is worldwide.

    A couple of people have mentioned that it looks significantly different to the core Elgg install, and that therefore it must be running on a hacked version of Elgg. This is not the case: the Elgg Community runs on a clean version of the latest codebase in our Subversion repository.

    So how did we do it?

    Once of our design decisions from the beginning has been to make Elgg as extensible as possible, without having to alter the core code. This means that when a new version of Elgg comes along, you can simply overwrite your core with the next version, without having to worry about which files you altered - all your modifications are neatly stored elsewhere, and will persist on upgrade. The result is a safer, leaner system.

    One important feature of the Elgg Community is the ability to upload plugins and themes. This is a plugin in itself, and was actually modified from the existing file repository you can download from elgg.org. While the original detects the type of file from a given MIME-type, we restricted the files to popular archive formats, added a couple of fields (including a mandatory license), and set the type to either be "plugin" or "theme". Extra submenu items were also added, to allow you to easily view all plugins and themes separately. The events system is a completely new build, but is also a separate plugin.

    The profile was forked from the original, largely to provide a different set of profile fields. In future versions of the profile plugin, this will no longer be necessary, and at this point we'll move back to using the core functionality.

    However, the major changes were to do with themes. The dashboard was overridden (by assigning a page handler to 'dashboard') to the same code as the front page, which in turn was replaced with a friendly view on the latest activity. This was written as a custom page, with a couple of calls to list_entities to bring out objects of various types.

    Each view in Elgg can be overridden - see the overview page for more information. Therefore, all style changes, including some changes in the underlying Javascript and in icons, are stored in a single theme plugin. We'll be releasing some new themes soon, so you can see how it's done, but the change is striking: when the plugin is disabled, Elgg looks as it does on release. Enable it, and elements throughout the site completely change. In fact, we've been conservative with this to date; you can completely change the layout of everything. This blog is another example of a themed Elgg site that overrides a clean core installation.

    We're really excited about Elgg's flexibility. To make it easier for newcomers to the system, we're going to be releasing a set of shorter, simple tutorials on various topics, as well as more sample plugins and themes so you can learn from examples. In the meantime, the Elgg Community is a great place to get started.

    Please note that development support requests will be deleted. If you are looking for Elgg community support, head over to http://community.elgg.org