I'd just like to weigh in with a suggestion for a cms that is a little out of left field: Umbraco. It is an excellent CMS, and incredibly powerful. It does take a little bit of getting used to, mainly because of its flexibility and power. I have used it for a variety of jobs, and would think of using nothing but. The biggest problem is that it is a .NET system, and it doesn't seem to do too well on shared servers.

At its most basic level, you just code html into the templates, and have XML type syntax for including fields from the page itself. The site structure is stored as an XML document. Umbraco can be extended using what it calls Macros - they can be placed into the template, or if allowed on a per macro basis can be inserted into rich text fields. Macros can be written in XSLT, python or .NET; although I have only written 1 .NET control to extend it - almost everything can be achieved in XSLT.

There is a bit of a learning curve with Umbraco, as it does nothing out of the box - you have to start by defining content types, and what information is to be stored, and then build on that how to display the content.


(6 replies, posted in CSS Discussion)

I believe sibling selectors would work for you - something like

li:hover + li

But I'm not 100% sure of this, and it won't work in internet explorer, but you could then use javascript to kick IE into line

the css selector for an id is "#", as opposed to "." for a class, so by using "#orgtable" you can access this particular table


(4 replies, posted in Content Management)

Umbraco is an open source .NET CMS, and I must say it is particularly powerful, although it does have a bit of a learning curve. We run our church website, You're Looking Great, on Umbraco and it has been very good so far.

You need to create the tables on the database to use in the first instance. If you haven't already, get a database management system, such as phpMyAdmin and set up your tables as they should be.

Your MySQL query you have written doesn't check if the query was executed successfully: You probably have an error in your column names, or something similar.

I second Tank's recommedation to get a book, although I originally learned from w3schools - I learned a lot more, and quickly when I got hold of a PHP MySQL book.

Also, it might be worth getting to grips with PHP without MySQL as a first port of call.


(3 replies, posted in Content Management)

My first guess would be that index.php is not listed in the DirectoryIndex (assuming you're on apache), in which case the server can't find a file to display (from its directory index) and resorts to Directoy Listing Denied.

Assuming this is on Apache, and you are controlling the server: open up httpd.conf and search for "DirectoryIndex" change the line to read:

DirectoryIndex index.php index.html index.html.var

probably just inserting index.php at the beginning of the list.

If this is coming up on your web host (ie a service you are paying for) then you probably don't have PHP installed on your server.


(12 replies, posted in Content Management)

OK Carl, thanks for clearing that up. I somewhat retract my previous statement. Although it does still need to be installed, certainly in some instances. My own version of IIS (in windows XP pro) doesn't have .NET installed on it, neither do the "basic" windows hosts that my hosting provider offers. I, also, tend to use Apache webservers for deployment purposes, rather than IIS.

I assume you could get a PHP parser to run the pages that vinetype creates to give you a bit of extensibility. I'm not a .NET developer, so I don't really know, but I have a friend who tells me there is a PHP plugin for .NET


(12 replies, posted in Content Management)

As I have said, I'm not a textpattern user, although there are many here who are. But, you are right, you can install TXP (or any other CMS) across the whole site, or just in its own directory. I guess people install to a directory when they are adding the CMS to run a blog which is not integral to the main site. The main site is then not controlled by the CMS, and they then create static pages (or maybe use another CMS) for the rest of the site. I think you can get away with installing TXP in the root directory, but also using static files. You'd have to talk to a TXP user tio get some more information about that.

You need to decide whether you want the whole site, or just a part of it, to be controlled by the CMS.

Now Carl, I'd like to ask you about VineType - and in particular about the elimination of a scripting language. I understand it uses the .NET framework, does this not incorporate a scripting language (C#) which needs to be installed (along with the framework)? I appreciate the idea of not relying on a database, and then not having to worry about the threat of SQL injection, but don't make false claims - VineType looks quite good even though it needs a scripting language installed.


(12 replies, posted in Content Management)

Textpattern stores all your design and content in its own structure (so it needs to be separate from any static pages you create, such as inside its own directory on the server). You need to put all your CSS, and XHTML into textpattern, then it allows you to control it from the TXP interface. Then again, I'm not a textpattern user, so maybe someone who is can help you out here


(12 replies, posted in Content Management)

Both Wordpress and Textpattern as well as EE allow you to create your own templates/themes, where you can create the XHTML, and then also the CSS. The difference between the two comes when you add the content areas to your template pages. Textpattern uses XML tags (similar to XHTML) and wordpress uses PHP functions. I like PHP, so I find wordpress works well with my mind, but Textpattern seems better if you have no experience of PHP.

In wordpress, you create PHP pages, using your HTML editor (I use Dreamweaver, in code view). Then you upload them to a folder on your server. I suggest if you go down that route, that you start from another template, and edit the files. I believe this is true of EE, but I don't recall ever using it.

Textpattern has an interface in its admin area, where you code in a textarea to create the template pages and CSS. I don't quite get this, and it doesn't seem right to me, hence I don't use TXP. Again start from another template.

The point I'm trying to make, is that CMS work from a template system, and the more simple (yet powerful) systems allow for everything to be customised in your own theme. Read this post from Ryan Boren about creating a wordpress theme, and what it contains.


(5 replies, posted in Ajax + JavaScript)

It worked when I tried it in Internet Explorer 6. I copied your example page over and then "rewrote" the script to the one above. So I tried your page, and it didn't work... so I changed a couple more lines of code...

function Toggle(WhichSection) {
	var CurrSection = document.getElementById(WhichSection);
	if ((CurrSection.className == "show") || (CurrSection.className.length == 0)) {
		CurrSection.className = "hide";
	} else {
		CurrSection.className = "show";

I have tested this on my local server (you might see a wierd referer in your stats, coz hotlinked the stylesheet). It works in internet explorer as of the moment!


(5 replies, posted in Ajax + JavaScript)

simple answer... Internet Explorer is not implementing the setAttribute command (its just lazy I think smile

Use var.className instead... as so:

function Toggle(WhichSection) {
	var CurrSection = document.getElementById(WhichSection);
	var CurrSectionClass = CurrSection.getAttribute("class");
	if ((CurrSectionClass == "show") || (CurrSectionClass == null)) {
		CurrSection.className = "hide";
	} else {
		CurrSection.className = "show";

OK, so I've been doing this sort of work for a couple years, have experience with PHP & ASP (not .NET), and plenty of interaction with databases. I didn't post for a few reasons. I'll tell you why, hopefully answering your questions:

1. I have a full time job, and I do more work than I have time for freelance, and I want to cut back and spend more time with my family. And I would now prefer to work on front end stuff instead of server-side.
2. I agree with Robert here.
3. The description wasn't as good as it could have been, but it was not off-putting in any way, and if I wanted more information, I would have asked for it.
4. "Continued development" suggests that we could make these sites standards compliant, which is almost a draw for me.
5. I am based in the UK, so even with the potential to telecommute, I'm not sure about working for you (with concerns intercontinental trade).

So, I don't have the time to take on the work, even though it may well be interesting, there is plenty of work at the moment for me, and I believe in the industry in general (see a lot of quiet blogs).

I think there are enough talented people here, though, so one must assume that most are satisfied with their current employ, or maybe a more full job description could have garnered more interest.

Hope that helps.


(7 replies, posted in Ajax + JavaScript)

I believe it may be possible if you intercept the page with javascript, load the masthead image, and then the rest of the site. But then you're going to need a loading animation, and using javascript before the page has loaded is a bit iffy. Also I think internet explorer has some issue with preloading images (it doesn't keep the image cached for re-use). Its not a great idea, but I think it could work (as long as javascript is enabled)


(7 replies, posted in PHP Discussion)

As far as I understand it, there should be no problem sending HTML / Multipart emails using the function. The line

fputs($cp, "To: $to\r\nFrom: $from\r\nSubject: $subject\r\n$headers\r\n\r\n$message\r\n.\r\n");

is the bit that sends the email message. Its just a long bit of text to the server, so make sure there are no double line feeds in your headers (which signals the start of the message content, and so on.

I should add that most SMTP servers will allow about 10 emails to be sent over one connection before you will need to reconnect (or even wait a while)!


(7 replies, posted in PHP Discussion)

Beno, when you say verification, do you mean authentication, or are you referring to the error message. If you are referring to the error message, then it just wants you to check that the smtp server is set to the correct one, and that the port is correct too. I assume you have set it correctly, and the mail.domain.com in the error is just what you have edited on the forum to protect yourself, and the actual value is set to your smtp server's address.

The PHP mail fnuction doesn't do authentication. This isn't a problem for most SMTP servers that are attached to your ISP, although some will reject mail from addresses that are not registered users of the ISP. If you need to use an SMTP server which requires authentication, there is a function in the user comments on the PHP mail function page of the PHP website. It uses fsockopen to extablish a connection to the server and then sends the mail information through that connection, rather than using PHP's built in function. The original version of the function has dropped off the end of the comments, but it was re-written for some reason to:

function mymail($to,$subject,$message,$headers)

  // set as global variable
  global $GLOBAL;
  // get From address
  if ( preg_match("/From:.*?[A-Za-z0-9\._%-]+\@[A-Za-z0-9\._%-]+.*/", $headers, $froms) ) {
     preg_match("/[A-Za-z0-9\._%-]+\@[A-Za-z0-9\._%-]+/", $froms[0], $fromarr);
     $from = $fromarr[0];

  // Open an SMTP connection
  $cp = fsockopen ($GLOBAL["SMTP_SERVER"], $GLOBAL["SMTP_PORT"], &$errno, &$errstr, 1);
  if (!$cp)
   return "Failed to even make a connection";
  if(substr($res,0,3) != "220") return "Failed to connect";

  // Say hello...
  fputs($cp, "HELO ".$GLOBAL["SMTP_SERVER"]."\r\n");
  if(substr($res,0,3) != "250") return "Failed to Introduce";
  // perform authentication
  fputs($cp, "auth login\r\n");
  if(substr($res,0,3) != "334") return "Failed to Initiate Authentication";
  fputs($cp, base64_encode($GLOBAL["SMTP_USERNAME"])."\r\n");
  if(substr($res,0,3) != "334") return "Failed to Provide Username for Authentication";
  fputs($cp, base64_encode($GLOBAL["SMTP_PASSWORD"])."\r\n");
  if(substr($res,0,3) != "235") return "Failed to Authenticate";

  // Mail from...
  fputs($cp, "MAIL FROM: <$from>\r\n");
  if(substr($res,0,3) != "250") return "MAIL FROM failed";

  // Rcpt to...
  fputs($cp, "RCPT TO: <$to>\r\n");
  if(substr($res,0,3) != "250") return "RCPT TO failed";

  // Data...
  fputs($cp, "DATA\r\n");
  if(substr($res,0,3) != "354") return "DATA failed";

  // Send To:, From:, Subject:, other headers, blank line, message, and finish
  // with a period on its own line (for end of message)
  fputs($cp, "To: $to\r\nFrom: $from\r\nSubject: $subject\r\n$headers\r\n\r\n$message\r\n.\r\n");
  if(substr($res,0,3) != "250") return "Message Body Failed";

  // ...And time to quit...
  if(substr($res,0,3) != "221") return "QUIT failed";

  return true;

I have not tested this, nor ever used it.

It is also possible that PHP Mailer could solve your problems, although it may be overkill.


(7 replies, posted in CSS Discussion)

Ace... I'd just like to say that I think the IE box model makes more sense than the w3c model. I want the width of an element to be inclusive of the padding. Otherwise I have to calculate how much padding I want, then take that away from any specified width. Padding is INSIDE the box.


(4 replies, posted in CSS Discussion)

Thinking about it, unless you are willing to change the fact that there is a p tag around the image (which you probably can't - it'll be part of the CMS), then you could apply the border to the image itself. The following code will do that, and make sure there is 1px padding inside the red border. The display block removes the white space underneath the image (which is to allow for descending characters like a "y").

.entryimage img {
display: block;
margin: 0; padding: 1px;
border: 1px solid #663300;


(4 replies, posted in CSS Discussion)

The problem is that you have the image wrapped in a paragraph, and images have space for descending letters as they are inline elements, even though they will never contain descending letters. The following code will sort the top and bottom padding

.entryimage p {
margin: 0;
.entryimage img {
display: block;

But the right hand padding/margin is due to the line break after the image and before the end of the paragraph, which the browser interpretes as a space.


(8 replies, posted in CSS Discussion)

I think the point of using lists for navigation is to do with semantics. You use an unordered list to contain the navigation items, because that is exactly what your navigation is. The links are somewhat related, so they should show as such, by using a list! I don't think the author of the article quite gets the point of XHTML - describing the content.


(9 replies, posted in Shoot the Breeze)

I should probably answer your questions, too...

ChrisT wrote:

1) Do you have any qualifications in computing? If so, what?

No. I have a degree in business and economics, which is surprisingly useful in terms of understanding the business, and knowing what my boss thinks / should be thinking.

ChrisT wrote:

2) If not, have you found that a hindrance to your career? What have you done about it?

I have made sure I know more than most people about web design (which is surprisingly easy), and I have built up a portfolio, to showcase my work, and tried to talk to people about jobs, rather than just submit a CV - make sure you have a good cover letter.

ChrisT wrote:

3) What training course are there that you can recommend for a web developer / web standards junkie / web application visionary / web entrepeneur? Something that is more in depth than "this is called a 'MOUSE', it has some buttons" but not quite an MSCD/MSCE qualification. I'm in the UK, so UK-based things would be good, but any information would be great.

I don't think any of the qualifications, outside of a design education would be particularly useful, unless you want to focus on a particular area. My company send its employees to Dewsbury college to learn about computer programs and stuff, just 1 or 2 day courses, but they aren't cheap, and probably not that useful.

ChrisT wrote:

4) Finally: should qualifications matter? I've been doing this web thing for the best part of a decade, long before there were any decent courses for web designers (and before we had the title 'developer') and have produced - in my opinion - some great work. I stick to the standards, have much stricter controls on my code and logic than some other developers' work I've seen, and am experienced working with small and large teams. Should I really have to get a certificate to prove I can do what it's obvious I can do?

I don't think you should need a certificate to prove you can do something you can do, but you will only get  people who understand the business to realise that. No manger is going to be able to look at a piece of work and understand the logic behind it and see why you are better than some designer who can lay stuff out in Dreamweaver. Qualifications are what they understand, even if they are meaningless. You are limiting yourself to companies which are very web focussed, ones where the MD is a coder/design themself, they are out there, but they are not as common, and they would find staff from the community rather than from a recruitment agency. At least, thats what I think.


(9 replies, posted in Shoot the Breeze)

Chris, I think it would depend on what type of job the companies are going to have for you as to whether your "lack of official qualifications in any computing-related subject" is an issue. If you are after a programming job, then maybe a qualification would be advisable, although I know people who have an MCSE and still struiggle to find work in programming.

If you are looking to be a web designer/developer, then as Sarah said "the web is evolving so quickly, any "official" qualifications are bound to lag behind." My company has contacts with the head of computer science at Huddersfield University, who came to talk to me about web design and some ideas he had. Bottom line is he is teaching people how to develop using Dreamweaver, and Flash. No emphasis on standards, code or anything like that. Chances are any qualification is going to be beneath you if you are actively working in the area, and keeping up on the latest methods etc.

A solid knowledge of design never hurt anybody, though, and the theories tend to stay pretty much the same. You can read up on design around the internet if you know where to look, but watch out for people who don't know as much as they claim to. Mark Boulton is a good place to start, with his designing grid systems and typography series.

If I'm ever allowed to recruit people to my company, then I would not be looking at qualifications, rather I would be interested in their covering letter, portfolio and any time I get to speak to them. I don't think that qualification could really indicate whether somebody is going to be good at a job - they may display some level of competence, but what you do with your skill is more important (to me at least).


(11 replies, posted in CSS Discussion)

You are missing the Cascading part of CSS. Your declaration ol.mylist li {...} overrides the .evenNumbers {...} declaration as it is more specific. change your CSS to read:

ol.mylist li              {background: #ccc url(../img/bg/article.gif) repeat;}
ol.mylist li.evenNumbers  {background: #333 url(../img/bg/contentTop.gif) repeat;}

and you will avoid having the first declaration override the second.

Free hosting... http://roxr.com/

150Mb Space
15GB (15,360MB) Bandwidth Per Month 10 FTP Accounts
5 Email Accounts
5 MySQL Databases
Cpanel + Fantastico
No file limit size
Forced Ads (468x60 Google Banner Top)
Free SubDomain - example.roxr.com
Automated Signup - Instant Activation


(8 replies, posted in Shoot the Breeze)

Sure... First you need Firefox, and the greasemonkey extension. The greasmonkey extension lets you run your own scripts on any webpage. There are scripts available for many different things, making links to other websites open in a new window, removing target="_blank" from links. Anything you can achieve with javascript tends to be done. There are even scripts which, on amazon pages inserts the price of said book at Barnes and Noble for comparison. Basically it is a means for customising the internet to suit your own preferences.

If you know javascript, you can make a greasemonkey script, as it is practically the same (It is javascript, but with a few limitations and ready made functions)

The "Lingua Franca script" adds a drop down menu next to all textareas on any page the script is configured to run on, which can convert from Textile to HTML, BBCode or MediaWiki. I had tweaked the script to automatically sort out my posts onsubmit of the form, but I updated the script and lost my changes, and I don't use it much anymore. The script isn't a full textile parsing class, but it contains the main bulk of textile, in javascript.

I do hope all that makes sense