, and discussed his personal history of using ExpressionEngine.

Watch or download Simon’s slides from Slideshare.

My EE History

The future of ExpressionEngine

The future of EE should be to meet the needs of developers and clients. Simon covered the points he believes EE should consider as it grows past the 2.0 milestone.

“The quiet revolution is over. If we work smart as a community, we’re in for a great ride.”

Leslie Camacho - Foundations: ExpressionEngine 2.0

Categories:
ExpressionEngine
Tags:
Published:
10:01am on Monday 26th October, 2009

Leslie Camacho, the President of EllisLab, described the journey to EE 2.0.

You can watch or download Leslie’s keynote presentation at Vimeo, and his slides can be found on Slideshare.

The Journey

ExpressionEngine 2.0

Q&A

Will modules in 2.0 just be able to make calls directly into the CodeIgniter API/modules?
(Derek Allard) Yes.

How much will Multiple Site Manager cost?
Haven’t yet decided for MSM. Corporate license will be expensive.

Oct 24

jQuery for the Control Panel Considered Harmful

Categories:
ExpressionEngineJavaScript
Tags:
Published:
3:55pm on Saturday 24th October, 2009

Okay, it’s not actually harmful—in fact it’s rather awesome—but you’ll not get any blog traffic without a provocative title, right? What it can be is a pain-in-the-ass when working offline due to the default settings.

The jQuery for the Control Panel extension is not a first-party extension (it was created by the clever folks at nGen Works), but it does come bundled with ExpressionEngine and is invaluable (and often a requirement) for other add-ons. Unfortunately, the extension’s default settings are to load the jQuery library and UI from ’s centralised repository for JavaScript libraries; this means that if you don’t have a working internet connection—you’re working on the train or a plane, say, or trying to perform a live code demo at a tech conference with patchy wifi—you’ll get nothing but a spinning icon and no JavaScript.

Pros and Cons

Loading code from ’s servers obviously has some fantastic advantages. The response time is likely to be super-fast with 100% uptime; it’s a different domain to the rest of your site, so downloads can happen in parallel; and if the user has visited a different site using the same library they will have the file cached, speeding up your overall load speed.

But this is the Control Panel we’re talking about! Most of the benefits listed above are irrelevant, particularly if your CP admin team is a small one (indeed, for many sites it may just be one individual). And for development, where you may often be working offline, it can be crucial to have jQuery working properly in all environments.

Therefore I recommend that, when installing jQuery for the Control Panel, you also:

  1. Download the latest version of jQuery core and UI from the official jQuery website (zipped or not is up to you, depending on how often you find yourself stepping through JavaScript code at runtime)
  2. Change the Settings for the extension to point to your local files

If you are also using jQuery on your website front-end, you can even just point the extension to the front-end’s file (for example, mine lives at /j/jquery.js—save those extra characters where you can!)

Now you can work on the train, on a plane, or in a blackout—or run a live demo of ExpressionEngine while hundreds of geeks hose the wifi connection—safe in the knowledge that jQuery is always going to load when and where you want it. Just don’t forget to update it whenever a stable new version is released.

I believe EllisLab should consider bundling the latest version of jQuery within the .zip of EE (maybe in the cp_themes folder?) and default the extension settings to point to that file instead of .

Retain the distributed advantage

There are ways that you can host your own JavaScript library but still retain (most of) the advantages I mentioned above when using ’s repository. I can’t help you with ’s uptime (but what does that matter if your own site is down? All you need to worry about is your own uptime, really) but the other benefits are easy enough to duplicate.

Summary

I hope this helps you avoid the annoyances of interrupted work or embarrassing beachballing on stage if you’re trying to work with jQuery as part of the ExpressionEngine Control Panel. It’s a fantastic library and extension; if it were not for this one little issue it would be perfect.

Aug 22

How to update ExpressionEngine when your system folder is outside the web root

Categories:
ExpressionEngine
Tags:
Published:
9:14am on Saturday 22nd August, 2009

While they make it possible for you to move your main ExpressionEngine installation folder outside of the web root, EllisLab have neglected to allow for that possibility in their update scripts. This article shows you how to fix it with a couple of simple edits.

Given that there is even a blog entry on the EE site on the topic, you might have thought it would be accounted for in the version update script packaged with each new version. Unfortunately though the update instructions and the script itself ignore the possibility that you have moved your /system/ folder outside of the web root.

How to update EE, revised

First, ignore the instruction to copy system/update.php into your existing /system/ folder; instead, copy it into your web root folder (where your admin.php and path.php files are). It is now reachable at www.example.com/update.php - but it doesn’t work because the paths are wrong.

Editing update.php

Open update.php in your text editor. We are going to import the path information used by the rest of the site and update the paths needed for the update to run.

Add this line to the start of the file (beneath the copyright message):

require_once(’./path.php’);

Next, at the top of the file there are a series of definitions:

define(‘EXT’,		’.’.$path[‘extension’]);
define(‘PATH’,		’./’); 
define(‘PATH_DB’,	’./db/’); 
define(‘PATH_CORE’,	’./core/’);
define(‘PATH_LANG’,	’./language/’);
define(‘PATH_MOD’,	’./modules/’);
define(‘PATH_EXT’,	’./extensions/’);
define(‘PATH_PI’,	’./plugins/’);
define(‘CONFIG_FILE’,	‘config’.EXT);

Let’s update them to use the correct path information: