[Looking for Charlie's main web site?]

Resources for getting into cloud computing

Note: This blog post is from 2008. Some content may be outdated--though not necessarily. Same with links and subsequent comments from myself or others. Corrections are welcome, in the comments. And I may revise the content as necessary.
Interested in getting into cloud computing? Check out this blog entry with a compendium of links to other resources on the topic:

http://highscalability.com/useful-cloud-computing-blogs

By cloud computing, most think of Amazon EC2 and S3, but there really are more options, as shown in one resource listed on that entry.

I should note I didn't create that list. Someone else did. I don't generally do an entry just pointing to that of another (we often see way too many dupes in the CF blogosphere that way), but in this case it's a non-CF blog and therefore many readers here may not see it otherwise.

Also, some will know that I do like to do such resource lists myself, whether as blog entries of that sort, or as resources lists offered on my site, so I really appreciate this blogger's efforts here.

Hope that may help someone interested in the topic of cloud computing. (And yes, if someone would ask if this might be a good topic for the Online ColdFusion Meetup, it would be, and we've had a few sessions on the topic. You can find them either by doing a search for "amazon" on the UGTV site (which has more than just Meetup recordings, of course) or by scanning the list of all previous CF meetup recordings.

Mistake in CF Meetup times: talk times were reversed by mistake

Note: This blog post is from 2008. Some content may be outdated--though not necessarily. Same with links and subsequent comments from myself or others. Corrections are welcome, in the comments. And I may revise the content as necessary.
Sorry folks, I made a big mistake in posting the announcements of the CF Meetup sessions this week--and I caught it after I sent my last blog entry today where I announced the mistaken times. The times were reversed by mistake.

Ray is at noon, Dan is at 6.

See the CF meetup site for details.

For more on the mistake, and an apology to those who may now have to miss out, as well as how to access the recording of the meetings, see my discussion of the mistake on the CF meetup discussion board.

Again, sincere apologies everyone.

Seeking more speakers for the ColdFusion Meetup (an online worlwide CFUG)

Note: This blog post is from 2008. Some content may be outdated--though not necessarily. Same with links and subsequent comments from myself or others. Corrections are welcome, in the comments. And I may revise the content as necessary.
Hey folks, if you're a speaker on CF topics (or would like to be), the CF Meetup wants you! I've written on this before in more detail, but suffice it to say that the Online CF Meetup is an an entirely online CF user group. We try to meet weekly (when I can get speakers), and with 1500 members (yet only 30-50 at each meeting), there's no topic that's too niche, too beginner, or too advanced to appeal.

It's a low-key affair. Don't fear that you need to be polished. Whether this would be your first or your fiftieth presentation to a CF audience, you'll be warmly welcomed.

See the link above for more information (answers to common questions), and drop me a note or leave a comment here to express interest.

You don't need to set a date (or you can if that will help you). We meet Thursdays, and you can choose either noon or 6pm Eastern US time. I'm even open to hosting at another hour to reach international speakers and audiences.

If anyone's interested, you can see previous talk topics that have been presented at the meetup (26 so far this year) on the recordings pages for 2008 and 2007.

Discount Code Available for FusionReactor, FusionDebug

Note: This blog post is from 2008. Some content may be outdated--though not necessarily. Same with links and subsequent comments from myself or others. Corrections are welcome, in the comments. And I may revise the content as necessary.
Ah, August, when thoughts turn to vacations...and end of summer sale-a-thons. :-) I want to share that the fine folks at Intergral, makers of FusionReactor and FusionDebug, are offering a 10% discount coupon code, CFCOMMUNITY, good through the end of this September.

I've written about both these tools quite a lot in the past, if you're interested in exploring my respective blog entry categories: FusionReactor and FusionDebug.

I've also written about them in the FusionAuthority Quarterly Update, if you happen to get that great magazine. Most recently I did, "FusionReactor: ColdFusion Server HealthCare (and What's New in Version 3)", in Volume ii Issue iv (Summer 2008), and a couple of years ago I did, "FusionDebug Explained: Interactive Step Debugging for CFML", in Volume i Issue ii (Fall 2006).

I'll also have news coming up about more cool stuff coming from the folks, including FusionAnalytics and FusionReactor Enterprise Monitor, both discussed in the FusionReactor Labs, as well as the recently released AIR Enterprise Dashboard, recently promoted from the labs to an available product.

Until then, go enjoy the discount code to get these great products, which help you with debugging and monitoring whether you run on CF 6, 7, or 8. (For more on why they still matter even with CF 8, see this previous entry.)

Art Monk finally enshrined in the Pro Football Hall of Fame -- To God be the glory

Note: This blog post is from 2008. Some content may be outdated--though not necessarily. Same with links and subsequent comments from myself or others. Corrections are welcome, in the comments. And I may revise the content as necessary.
I try not to have too many non-technical entries here, but just as I like to share thoughts that may offer new ways of looking at technical problems, I want to offer a similar twist on conventional wisdom, this time with respect to the long delay in Redskin Art Monk finally being enshrined in the Pro Football hall of fame. Why did it take so long? Maybe it wasn't the man-centered delay that it may at first seem (a delay that was hard to take for a life-long 'Skins fan like myself). Let me explain how he regarded it.

The long wait, it had become epic in some minds

First some context: if you watched the inductions last night, you may have noticed comments before and even subtle references in his speech to how his snub for so many years was becoming the stuff of legend.

In fact, to get a clearer sense of the delay and the surprise to many, there's a site that was devoted to making the case for his induction, not so much presenting his career as showing all the many references over the years from many hall of famers who just assumed that Monk would make the Hall of Fame.

Reading that, you're naturally left scratching your head, wondering "why the long wait?" Some will assert various reasons, from his "being so quiet", to some voters feeling justified because of his numbers not impressing them, etc.

But perhaps there's a different explanation that's not been considered by many. Surely some appreciated it. While many may have been moved by his eloquent speech and the 4-minute standing ovation that started it, others will have noted and appreciated his frequent references to his faith in Christ, his heartfelt appreciation for the teammates who first shared the gospel with him, and most to the point here, his acknowledgement of God's being the reason for his success.

But as Art himself said, "what I've tried to convey to those who were upset about the process was that I was okay with it". Why? I'll let him speak for himself. You can read the complete transcript here, and I offer the most significant excerpts (related to this aspect of his speech) below.

So why the long wait? God's Providence

So here's a different take on why his induction may have been so delayed: God's providential hand. By holding back some of the voters, it made the whole matter take on a much more prominent place in the mind of the media, NFL, and fans paying attention.

Surely many were paying more attention to his speech to hear "what's he gonna say?" than may have bothered if he'd gotten in on the first or even first couple of ballots.

But what did they hear as his response to that long wait? Nothing salacious, bitter, nor even much for sound bytes.

Instead, he (and his son speaking just before him) praised God, representing Christ and Christians everywhere wonderfully and without reserve. In a world where Christians are so often lampooned and dismissed, it was a joy to see God glorified on such a national stage.

God orchestrates all things to His glory. I'm sure Art himself may see this eventually (if not already) as his "desert experience": painful in the moment, but with patience and faith, it all works out in the end, for "we know that God causes all things to work together for good to those who love God, to those who are called according to His purpose." (Romans 8:28)

Soli Deo Gloria!

Excerpt from his son's speech

Here's the key related excerpt from his son's introductory speech, unedited here:

"Dad's greatness never came from his ability to play football, but it came because he wanted to be used by God for his glory, above all.

He realized and held onto the gifts and talents that God blessed him with. And the bible says to build your foundation on a rock. Solid rock. For when the storm comes, you will not shake or you will not be moved for your foundation is well built.

Dad built his foundation on the strongest rock of all and that was Jesus Christ.

And because of this he was able to weather many storms and stay consistently strong on the football field, at home, at church, and at work. And from his actions I have learned the following: I've learned that less is more. I've learned not only to become a man of success, but be a man of value; that my decisions should be guided by Christian principles.

It is not hard to make the right decision when you know your value and where you stand. Through the outcomes of hard work and dedication is success. That there is only one Lord, Jesus Christ.

That the reward for hard work is the opportunity to do more. Nobody gets anywhere in this world by just being content with where you are. And that my identity does not come from this world or what people say or write or think about you, but it comes from the one and only Jesus Christ.

So to answer the question, do you want to be like Art Monk when you grow up, my answer is I'd rather be like dad.

Dad, thank you for being the man of God, that God has called you to be and for raising me in the same."

Excerpts from Art's speech

And here are the key related excerpts from Art's speech:

"What I've tried to convey to those who were upset about the process was that I was okay with it. But in all due respect, that as great as this honor is, it's not what really defines who I am or the things that I've been able to accomplish in my life.

I'll always be known as a Redskin.

That's right. And even now as a Hall of Famer, the one thing I want to make very clear is that my identity and my security is found in the Lord. And what defines me and my validation comes in having accepted his son Jesus Christ as my personal savior. And what defines me is the word of God and it's the word of God that will continue to shape and mold me into the person that I know he's called me to be.

So I've learned a long time ago never to put my faith or trust in man, for man will always fail you. Man will always disappoint you. But the word of God says that Jesus is the same yesterday, today and forever. And he will never fail you.

And that is what I live by and what I stand on."

And later he would acknowledge those who shared the Gospel with him:

"I'm close with a lot of my former teammates that really helped me along the way. But there's one specific group that has become like family to me. There's Monte Coleman, there's Charles Mann, Darrell Green, there's Tim Johnson and Ken Coffey. Because they're the ones who not only took the time to share the gospel to me, but they also demonstrated it in their lives, which allowed me to receive the gospel for myself.

And this was a life changing experience for me. Their example showed me what it meant to love and serve and honor your wife and to be faithful to her and to be the right example for my children. I greatly appreciate God using them and putting them in my life. Thank you, guys."

But I'd like to conclude my excerpts with another section where he again gave God the glory:

"There's a scripture that I think about almost every day and I've come to personalize it to my life. It says: Lord who am I that you are mindful of me? And the Apostle Paul says think of what you were when you were called. Not many were wise by human standards. Not many were influential. Not many were born of noble birth. And when I look at my life and how I grew up, I certainly had none of those qualities or benefits.

But I understand and I know that I'm here not by in and of my own strength but it's by the grace and the power of God upon my life who I know gave me favor along the way and who provided opportunity and room for me to use my gifts.

So I am very grateful to receive this honor, and I can stand here before you and say, hey, look at me, look what I did. But if I'm going to boast, I'm going to boast today in the Lord, for it's because of him that I'm here and I give him thanks and glory and honor for all that he has done for me."

Amen to that.

If you would ask, what is "the gospel"?, there are various presentations online to learn more. Here's a well-done, reasonably brief yet complete one. Sadly, it can't be communicated in a single sentence, without doing injustice to the complete message. And it's in your interest to hear the complete message, which is indeed the Good News to those who hear and respond to it.

4 New CF Technotes

Note: This blog post is from 2008. Some content may be outdated--though not necessarily. Same with links and subsequent comments from myself or others. Corrections are welcome, in the comments. And I may revise the content as necessary.
I mentioned in a recent entry how you can get a feed of the latest CF technotes and other important Adobe-created CF resources.

If you've not done it yet, let me take a moment to share news of a few that came out on the feed today:

  • Flex Builder 2 RemoteObject calls to ColdFusion 8 CFCs fail - You are unable to connect Adobe Flex Builder 2 RemoteObjects to Adobe ColdFusion 8 CFCs. Flex Builder 2 projects containing RemoteObject calls to ColdFusion 8 fail to connect for the following reasons: You have not entered the proper compiler arguments which point to your ColdFusion 8's services-config.xml and or your ColdFusion server's context root. You have created your Flex Builder 2 project as a "ColdFusion Flash Remot...
  • UtilPagedTempBuffer SqlException error when connecting to MS-SQL (ColdFusion) - When Adobe ColdFusion connects to an MS-SQL database, you may receive the following error: java.sql.SQLException: [Macromedia][SQLServer JDBC Driver]Usage error for UtilPagedTempBuffer: length can not be negative. This issue can occur after you apply a corrupted service pack to SQL. This issue can occur after you apply a corrupted service pack to SQL....
  • Forgotten password and cannot log in to ColdFusion administrator - You have forgotten the Adobe ColdFusion administrator password and cannot log in....
  • Could not find the coldfusion component or interface cfide.adminapi.accessmanager (ColdFusion) - When you install or update Adobe ColdFusion, you receive the following error message: Could not find the ColdFusion component or interface cfide.adminapi.accessmanager. During the installation, you chose to install the CFIDE directory inside an existing CFIDE directory. For example /CFIDE/CFIDE/.During the installation, you chose to install the CFIDE directory inside an existing CFIDE directory. For example...

And since the day I wrote that entry, here are a few others that came out:

  • How to ensure correct UTC Time Conversion for U.S. Daylight Saving Time changes in 2007 (ColdFusion 5) - ColdFusion 5 depends on the operating system to calculate date and time information. The U.S. Daylight Savings Time changes for 2007 will cause incorrect Universal Time Coordinated (UTC) conversions with ColdFusion 5. Note: Support for ColdFusion 5 officially ended on January 1, 2007 -- see www.adobe.com/support...
  • How to import certificates into certificate stores (ColdFusion) - For secure connections to remote servers over SSL, all current versions of ColdFusion require the remote system's SSL certificate to exist in ColdFusion's certificate truststore. This includes any calls from , , , etc. The default truststore is the JRE's cacerts file. This file is typically located in the following places: Server Configuration : cf_root /runt...
  • Solution for Verity Startup Failure with 'DASDOMParser: Fatal ErrorFile' Error (ColdFusion MX and ColdFusion 8) - The ColdFusion Search Server service (Verity) may fail to start with the error: DASDOMParser: Fatal ErrorFile: /{path-to-verity-admin-files}/admin{0-9}.xmlLine: nChar: nMessage: (example: The main XML document cannot be empty) Errors occurred during parsing... This error is generated when trying to start verity from the command line. It may also be found in the {verity-root}/Data/host/log/status.log in the form of: Failed...

I don't think I'll plan to post new entries whenever they come out. Really, one ougjht to just watch the feed for that. This is more a reminder that even in 2 weeks, a good amount of stuff has come out, so you ought to keep en eye on it.

Getting MaxLength Validation to work with CFTEXTAREA Richtext="yes"...busted, but with a workaround

Note: This blog post is from 2008. Some content may be outdated--though not necessarily. Same with links and subsequent comments from myself or others. Corrections are welcome, in the comments. And I may revise the content as necessary.
Have you tried to use the maxlength validation with the new CF8 rich text cftextarea? You'll find that it simply doesn't seem to be working, or works inconsistently. I've done some digging and found why it's not working as it should, and I also offer a workaround for you if interested.

Now, some might point out that with CFFORM maxlength validation, you need to remember to set validate="maxlength", and that's true. And you provide a maxlength attribute and value, as well, but neither of those are what I'm talking about. Nor is it about the fact that you have to account for the underlying HTML that's generated. The validation simply doesn't work as it should, as I'll explain.

The root of the problem

Note that I say it doesn't work as it should--I'm not saying it never works. You can actually get it to trigger a maxlength failure, but it's just not working right.

Here's the deal: what's validated is the length of any data that prepopulates the field, not what the user enters into the field. In other words, it doesn't matter what you (or your user) types into the field. That will not be what's checked, but rather what was there initially. Not too useful (and confusing, for sure).

Let me be more explicit: if there's no text prepulating the field (what's between the CFTEXTAREA) or it's less than the maxlength, then the form submission will always pass without error even if you add lots of text to the field. That's certainly not right.

Conversely, if the field is prepopulated with text that exceeds the maxlength, then the form submission will always fail for the length validation, even if you remove enough text that it should pass. Again, all this could be very confusing if you don't understand what's going wrong.

As an aside, not that it matters to this problem, note that you can also prepopulate a CFTEXTAREA with a Value attribute (not something you can usually do with a normal TEXTAREA.)

A simple sample to test with

Here are 2 examples of what I'm describing. You can drop each into a page (it's a self-posting form, so it doesn't matter what you call the file):

<cfform>
Description (up to 10 characters):
<cftextarea name="description" validate="maxlength" maxlength="10" message="Description must be 10 chars or less" richtext="yes" toolbar="Basic"></cftextarea>
<input type="Submit">
</cfform>

If you run this, you'll notice that it will always pass, regardless of what you enter. Why? Because it's prepopulated with nothing, and that passes the validation, regardless of what you type.

On the other hand, the following will never pass validation, regardless of what you enter, because it's prepopulated with something longer than the maxlength:

<cfform>
Description (up to 10 characters):
<cftextarea name="description" validate="maxlength" maxlength="10" message="Description must be 10 chars or less" richtext="yes" toolbar="Basic">1234567890123</cftextarea>
<input type="Submit">
</cfform>

Obviously, none of this is what you would expect. If you've had people complaining about problems, it's no wonder that you'd be really confused.

(And of course, 10 is too low a number for general use, and unless you're doing an update form you wouldn't likely prepopulate your field as I have, but these make it easy to demo the issue.)

Maxlength validation works fine for CFTEXTAREA, as long as it's not rich text

Now, all that said, things will work just fine if you take out the richtext and toolbar attributes. Go ahead and try it. So clearly it's the richtext feature that's busted with regards to maxlength validation.

Why it's not working

I did some digging into the cfform.js file, which is where the code to do validation lives (in /CFIDE/scripts/) and I found the problem. What's passed to that validation code is not what's typed into the rich textarea (which is itself an iframe buried pretty deep in some code that the FCKEditor builds), but rather what's passed is just the HTML form field value, which in this case will be what was entered into the field when it was initialized (when the page is first loaded).

The ultimate solution is that the CF validation process needs to be changed to instead get the length of whatever was entered into the fckeditor control.

From further digging into that, with regard to some FCKEditor info I found, one might conclude it would be impossible. Many have complained about wanting maxlength validation with the control, and folks working on the tool have said it's a limitation the control.

But here's good news: I did still more digging and learned that the CF javascript API for the new ajax controls does indeed provide access to this information! Woo hoo! You can access it via the ColdFusion.getElementValue('thefieldname') method. With that, one can then test its length.

For now, it's just something you need to do manually. I'll offer some code below that presents how to do this.

Don't forget to account for the generated HTML

Before I show the code, take note about your use of any maxlength test in the richtext textarea (whether it's done by CF itself in the future or by using this manual test): you (and your users, and any messages you give them) need to take into account that the rich textarea will have a length that's longer than just what the user sees/types.

Even with just an "x" entered in a richtext textarea, the underlying content created by the control (and as submitted to the form processing) will be surrounded by paragraph tags:

<p>x</p>

So that x would then have a length of 8 chars! Just be careful that if you need to tell them they can enter no more than 100 characters, because you're entering the text into a database column of that size, then you need to make it clear that they won't be able to really type 100 characters. And the more formatting they do, the less space they'll have.

In my code below, I offer an option for the validation error message to show them the text as entered, with the html coding.

An example of some code to check the real value entered

So the answer is in using the ColdFusion.getElementValue method, passing it the name of the textarea field to be validated. Using that, and its length property, we can do the needed test. As a quick example, here's a demonstration where the cfform onsubmit method is called to display the real text entered in the field, and its length. Note that I gave the cftextarea a name of "description", and that's what I name in the getElementValue (note that all Javascript is case-sensitive, from method names, to variable names, to names of fields accessed in code):

<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
<!--
function testlen(){
   var body = ColdFusion.getElementValue('description');
   alert('text=' + body + '\nlength=' + body.length);
}
//-->
</SCRIPT>

<cfform onsubmit="testlen()">
Description (up to 10 characters):
<cftextarea name="description" richtext="yes" toolbar="Basic"></cftextarea>
<input type="Submit">
</cfform>

With this code, whatever value you enter will be displayed, along with its length.

Now, one may point out that an alternative to using OnSubmit on the CFFORM would be to use OnValidate on the CFTEXTAREA. Well, yes and no. It would normally be a good choice, but we will see later that we will want to create a more flexible form of this code, where we will pass in the name of the field, a test length, and optionally a message to display. The OnValidate only let's you name a method to call, without naming arguments. It's designed to automatically pass in the form field value, just like the built-in validation process, but just as that doesn't work with the rich textarea, so too does it not work for this challenge.

A proposed solution to the textarea richtext validation

So with all that as preface, here then is some code I've put together that may help those wanting to do Rich CFTextArea validation. I've designed it so that you can name the field to validate, the length to test, and optionally an error message to display if it fails the validation, along with an option of whether to show the HTML-formatted generated content in the message.

<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
<!--
function testlen(field,maxlen,msg,showval){
   /*
   Validates maxlength for a CFFORM CFTEXTAREA richtext field.
   Created by Charlie Arehart, carehart.org, 8/1/2008
   - field (required): name of rich textarea field on form to validate (case sensitive!)
   - maxlen (required): the maximum length to be permitted for the length of the textarea body (including generated html)
   - msg (optional): a message to be shown to the user, or empty string ('') to show a default message defined as "defaultmsg" below
   - showval (option): if 'yes', will show the actual generated body as part of the message
   */

   var body = ColdFusion.getElementValue(field);
   var defaultmsg = 'The ' + field + ' field must be less than ' + maxlen + ' characters.'
   // test textarea body length    if (body.length > maxlen) {
      // if no message is passed in, create a default one (the onsubmit in cfform seems to require all args be passed, so 3rd arg can't be left out, but an be set to '')       if (msg.length < 1) msg=defaultmsg;
      // show the current value, if requested       if (showval == 'yes') msg=(msg + '\nCurrent value (with HTML) is:\n' + body)
      alert(msg)
      return (false);
   }
}
//--> </SCRIPT>

<!--- note that for the cfform onsubmit, it appears you must specify all args of a called function --->
<cfform onsubmit="return testlen('description',10,'','yes')" >
Description (up to 10 characters, including HTML):
<cftextarea name="description" richtext="yes" toolbar="Basic">12345</cftextarea>
<input type="Submit">
</cfform>

<cfif cgi.request_method is "post">
   <cfdump var="#form#">
</cfif>

The key is in the call in the onsubmit to the testlen function. The comments explain that it takes the 4 arguments I mentioned. In this case, it's calling testlen('description',10,'','yes'), which is testing the "description" field, for a maxlength of 10, and I'm letting the function create the default error message, while I do want it to show the user the formatted value if they get the validation error. If you want to provide your own message, just provide that in the 3rd argument.

Now, you might think that if you want to skip the 3rd argument but privide the 4th, you could just let it be left unspecified, as in testlen('description',10,,'yes'). But for some reason the OnSubmit attribute of CFFORM doesn't like that. So just specify it as '' if you want to set the 4th arg to 'yes'.

Naturally, if you're happy with the default message and you don't want to show the formatted result to the user, you can then leave off both the last 2 arguments, as in testlen('description',10).

Note as well that you want to call the function (in the OnSubmit attribute) using the form "return testlen(...)", as I have. If you don't, then the form would be submitted anyway even if it fails the validation. By using the return, you cause the result of the function to drive whether the submission takes place, and it returns false if the length test fails.

I could make the function still more robust, testing incoming arguments and such, but it will work for most needs as long as you're careful. Again, remember that when you pass in the name the field, it must be the exact same case and spelling of the CFTEXTAREA name.

That's it. I hope it's helpful. Please let me know what you think in comments, whether it helps or if you see a problem, etc.

Let's hope this is addressed in the CF engine

It would sure be nice to see Adobe get this fixed in the engine. I hope this may help. I'll file a bug report pointing back to this for the details. I've already filed it in the LiveDocs as well.

I will say that if this problem remains into the next release, then the MaxLength attribute and validate="maxlength" option should be removed both flagged as unavailable for CFTEXTAREA when richtext="yes".

Add searching for CF blogs, docs, etc. to your FireFox Search bar list of search engines

Note: This blog post is from 2008. Some content may be outdated--though not necessarily. Same with links and subsequent comments from myself or others. Corrections are welcome, in the comments. And I may revise the content as necessary.
Someone who had learned of my CFSearch search engine (which searches over 1300 CF blogs, docs/article sites, and more) wondered if they could arrange to have it appear in the Firefox Search Bar in the top right of the browser. The answer is yes, via a simple Firefox add-on (which you can use to add any search site to the search bar).

This is a cool thing, because while you can choose from several pre-defined search sites (google, yahoo, amazon, ebay, and more), and you can click a "manage search engines" option to go to a Firefox site to find still more, you can only pick those that are listed on the Firefox site.

As with this gent, some search engines will just never be popular enough to be listed there. So how to add them?

Get the "Add to Search Bar" Add-on

The good news is that there is a FF add-on that does just what he wants, Add to Search Bar. It's simple and very effective (see the comments at the Mozilla page link, where many ask--rightfully so--why it's not built into FF.)

You can also learn more about it in someone else's blog entry highlighting it.

How about accessing a site's search feature using a single keyword in the address bar

FWIW, I'll also note that rather than use the FF toolbar, one can also set things up so that a given page's search feature can be accessed from a single address bar keyword (if they don't have or don't want to alter that search bar in the top right). I blogged about that in my TipicalCharlie site, where I sometimes blog things that aren't of a CF nature but might appeal to just anyone. (Update: tipicalcharlie domain is no more, but page recovered using Archive.org.)

One more time about CSEs

Finally, just as a reminder, the CFSearch site I created is what's called a Google "custom search engine". I wrote previously about them and how other people had also come up with their own variants. You may want to check them out, too.

Getting the new CF8 Rich TextArea working right, from the start

Note: This blog post is from 2008. Some content may be outdated--though not necessarily. Same with links and subsequent comments from myself or others. Corrections are welcome, in the comments. And I may revise the content as necessary.
If you try the new CF8 html rich textarea (cftextarea richtext="yes"), you may be surprised by a couple of things. They may even discourage you using the feature, which is too bad. Here are some simple solutions. Note that I'm NOT referring here to the older Flash-based textarea that was added in CF7. The new rich text textarea is pretty nifty, if you can get by these couple of likely hitches.

First, you'll want to set the "toolbar" value

First, if you don't specify a "toolbar" attribute, you'll get a pretty ugly looking default toolbar with 3 rows of LOTS of icons. Now, if you read the docs, it will point out that you can get a simpler subset with setting the toolbar to a basic setting. But then, if you're not careful, it will complain:

toolbar set "basic" does not exist

A search of google (or the CF docs) won't turn up much.

Second, it's "Basic", not "basic"

So what's the solution? Well, it turns out that it's simply that the attribute is case-sensitive. Doh! So a working example is:

<cfform>
<cftextarea richtext="yes" toolbar="Basic" name="somefield"></cftextarea>
<input type="Submit">
</cfform>

<cfdump var="#form#">

Note that, of course, you do need to do it within a CFFORM tag. I've added a CFDUMP to show the results when you do submit it.

That offers a nice single-row set of icons. (The alternative value, to get the default list, is "Default" (not "default"), but if you leave the toolbar attribute off, you'll get it anyway. The docs (see below) talk about how you can modify what icons you see by creating your own custom toolbar. It's just that the docs don't clarify well this issue about the basic value being case-sensitive. (I've added comments to the livedocs which have been accepted.)

Don't use Rows/Cols, use Width/Height

Here's another bummer that's not well documented: when using CFTEXTAREA, the traditional ROWS and COLS attributes (of a normal Textarea tag) have no affect at all, whether you're using an HTML or Flash-based CFTEXTAREA.

The solution: you must specify Height and Width (in pixels). (You won't get an error if you use rows and cols, they just won't have any effect.)

Some other issues

If you haven't noticed, when you submit such a rich text textarea, what you get in the form submission is the entered text with HTML tags representing whatever formatting the user applied using the toolbar, or keyboard shortcuts, like Ctrl-B for bold. (I'm really not interested in debating here whether the HTML it creates meets everyone's preferences. Please take that up on the livedocs comments area.)

Finally, I'll point out that the docs (the Developers Guide page, at least) shows using the attribute as richtext=true. FWIW, this can also be specified as "true" (quoted) and "yes". I just mention this in case anyone may go doing google or adobe site searches to find more on the use of the feature. You might not find all there is if you're too specific about these "richtext" attribute values.

Where to find help for still other issues

If you need more help on or introduction to the rich text textarea, I'd point you to blog entries by other folks:

And of course see the docs:

Finally, I'd like to clarify that I really don't mean for this blog entry to become a place where all manner of problems related to using the rich textarea are discussed. I'd ask that please you keep any questions or observations related to just really fundamental aspects of using it, and take up other concerns at the Adobe CF Forums, especially the CFORM forum.

Copyright ©2024 Charlie Arehart
Carehart Logo
BlogCFC was created by Raymond Camden. This blog is running version 5.005.
(Want to validate the html in this page?)

Managed Hosting Services provided by
Managed Dedicated Hosting