Although we provide detailed, structured CMS entry forms for our clients, we are still left facing the 2 problems you identified here.

The first problem as you describe it: “My client doesn’t want to see the codes” isn’t exactly what we’re confronted with. The Client doesn’t mind seeing the code, they just don’t understand it, so mistakes happen. When we use textile formatting, these are just some examples of the kind of results we see:

(the editor:)

  • uses heading style indicator but doesn’t leave a line break after heading so entire following paragraph is marked up as a heading
  • doesn’t leave a space after hyperlink so following word gets added onto end of URL they’re trying to link to
  • space at beginning of line of text, before the p. (for paragraph) so the p. gets displayed

Of course if the website editor were approaching their content creation task with due care, they would check the published page (or a preview if your CMS provides that) and see the mistakes, read the documentation to learn how to correct them, and fix them.

But unfortunately, content seems to be published all in a rush, and it is usually me who happens to notice these mistakes long after they’ve been made live, when I either email the editor with a lesson in textile formatting or go in a fix them myself.

With a simple WYSIWYG (with all the controls except bold, italic and hyperlink stripped out) these problems don’t occur.

Regarding the second problem, I implemented a solution much like Ben Callahan suggests above for a couple clients using our preferred CMS, ExpressionEngine. I wrote up a detailed explanation of how I did this here. Make adding inline images to ExpressionEngine entries safe and easy for your clients

It looks complicated, because there is another problem you have to deal with once you’ve decided on offering this solution (of letting clients intersperse images within their text): should the images be aligned left or right? Are they full width (appropriate for a landscape image) or half width (for portraits). My solution attempts to deal with that.

The only problem I’ve seen happen with what we implemented was the client forgetting to paste the image code into the textarea. I actually found myself on the phone to a client, having logged into the CMS, reading back the inline instruction above the textarea to her, which said to remember to paste the code in where appropriate.

Can you ever win?!