unFocus.History Keeper 2.0 (and SwfHTML) Beta 2 – Out Now!

unFocus.History Keeper 2.0 Beta 2 is now available for download.

Feel free to download, test and use the new beta. Here’s what’s new and fixed:

  • History.js – There was an odd error, from a mixed up function, keeping History Keeper from working at all in the last release. It was the first issue reported by someone other than myself (thanks shacky7!) and it’s been fixed.
  • FlashPlayerInfo.js – was throwing an error if there was no flash player installed at all in IE. It’s fixed.
  • FlashPlayerInfo.js – added more robust Flash Player 6 detection. It is impossible to check for some minor revision versions in Flash Player 6, because they crash IE if you do. It’s now possible, though, to check for 6.0r65, which is the first version to support Express Install.
  • FlashPlayerInfo.js – deprecated “.getPluginType()”, and replaced it with “.getPlayerType()” and made it actually work. To practice discipline, I left “.getPluginType()” since it’s improper to change the API after a beta release (it didn’t work before, so I’m sure no one is using it).
  • FlashPlayerInfo.js – Fixed beta and MinorRevision errors in ActiveX path.
  • SwfHTML.js – was producing a security warning in IE if used over https. It’s fixed.
  • Added a bunch of test files for each object, to help make sure stuff doesn’t break (that’s annoying), and more thoroughly test the various methods and features. It is almost, sorta like unit testing, if you kinda look at it sideways, in a mirror. :-)
  • Added Object Patent Magic to the package.
  • Added SwfShim to the source (under javascript folder), but it’s not ready for prime time yet, and is not in the packed js file.
  • Added some example pages – but these are really just there to test to the packed files, at the moment. HistoryKeeper.html is a good place to start if you want to learn how to use History Keeper. I’ll update soon with some Flash examples.

Check out the updated project page for more info, or just skip straight to the download. :-)

SwfHTML and FlashPlayerInfo, the extra stuff in History Keeper

Well I guess it’s not really hidden, as much as it’s a tag along to unFocus.History Keeper. I’ve had an interesting (to me anyway) battle in my own head about whether to even continue maintaining SwfHTML and it’s companions SwfCommunicator, and FlashPlayerInfo, since there are many solutions to the problems they address out there already (including ExternalInterface for SwfCommunicator, which is actually built right into Flash Player 8 and up). I even decided a while ago to just stop, and start using SwfObject, UFO, or the new SwfFix (just found that yesterday, looks good!), yet, they are still here and I’m still working on them.

SwfObject, and now SwfFix, are just too integrated for my taste, too monolithic. That is not meant to disparage the work that has gone into those projects, those projects are quite mature, well documented, and widely distributed. It’s just tha tI like my code certain way, and have bent over backwards to keep interdependency down in my scripts, in the name of modularity. This was done originally so that the history portion could be used in combination with other SwfEmbed techniques (like SwfObject) and used with other plugins (Ajax came later, but it works for that too!). Examples of that modularity – History Keeper doesn’t rely on SwfHTML, and SwfCommunicator doesn’t rely on SwfHTML, SwfHTML doesn’t rely on FlashPlayerInfo, which as well as Patent Magic don’t rely on anything. A few of the above rely on unFocus.EventManager, but that’s because the subscriber pattern is just so darn useful.

History Keeper would work nicely right along side SwfFix as well. Wouldn’t complain one bit. :-)

Anyway, I just wanted to make a quick (re)introduction to these infrequently mentioned tools, even if they are in a bit of rough shape. For simplicity, I’ll lump them all under the category title SwfHTML (even though SwfCommunicator, or FlashPlayerInfo could all be used without the SwfHTML object pretty easily).

Check it out.

Share This sans-prototype.js

I had a planed to replace the use of Prototype.js in the Share This WordPress plugin, since that was the only plugin using it. Prototype is quite large, and my server isn’t currently set up to gzip javascript files. I started to replace it with jQuery, and add an option to switch between the two. I figured it’d be a good way to help make the blog load more quickly if I make sure all the plugins were using the same (smaller) JavaScript framework.

I found along the way that Share This doesn’t actually use very much of Prototype.js at all. It does a few id based element queries, and uses Prototype’s Position.cumulativeOffset once. So I just converted the dollar sign based id query with DOM standard getElementById, and replaced the cumulativeOffset method call. Then removed the bits that output a prototype.js header link.

That’s it. No more bulky prototype.js dependency!

You can grab the patch from the WP Plugins trac.

While I was at it, I also added gzip support for the js, css and static share-this page, along with a new flag to turn gzip on and off.

Here’s the gzip support patch.

If you’d rather skip all the patching, here is a prepatched share-this.php archive. To use it, download the Share This plugin, and overwrite share-this.php with the new one (patched against the latest from SVN as of this post date).