<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>VinylFox &#187; HtmlEditor</title>
	<atom:link href="http://www.vinylfox.com/tag/htmleditor/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.vinylfox.com</link>
	<description>The Playground of VinylFox (Shea Frederick)</description>
	<lastBuildDate>Thu, 29 Jul 2010 16:37:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>What&#8217;s the Word &#8211; Meetup Videos and More</title>
		<link>http://www.vinylfox.com/whats-the-word-meetup-videos-and-more/</link>
		<comments>http://www.vinylfox.com/whats-the-word-meetup-videos-and-more/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 17:35:54 +0000</pubDate>
		<dc:creator>Shea Frederick</dc:creator>
				<category><![CDATA[ExtJS News]]></category>
		<category><![CDATA[General News]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[ExtJS]]></category>
		<category><![CDATA[HtmlEditor]]></category>
		<category><![CDATA[JSConf]]></category>
		<category><![CDATA[Meetup]]></category>

		<guid isPermaLink="false">http://www.vinylfox.com/?p=676</guid>
		<description><![CDATA[Every once and a while I like to post a summary of what Ive been up to lately. The past few months have been busy, so I have a ton to talk about, but I will try to summarize. DC Meetup Videos We held the first in a series of meetups that will happen in [...]]]></description>
			<content:encoded><![CDATA[<p>Every once and a while I like to post a summary of what Ive been up to lately. The past few months have been busy, so I have a ton to talk about, but I will try to summarize.</p>
<h1>DC Meetup Videos</h1>
<p>We held the first in a series of <a href="http://www.meetup.com/NoVa-Javascript-Ext-JS-Users-Group/">meetups that will happen in the DC/NoVA</a> area last week, a sprout of our <a href="http://www.meetup.com/baltimore-dc-javascript-users/" target="_blank">Baltimore area Meetup</a> for our southern friends, and I have to say that it was a huge hit. The meetups are going to be managed by Pat Sheridan from <a href="http://threepillarsoftware.com/" target="_blank">Three Pillar Global</a>, and we are hoping it will be a way to get JavaScript developers from the DC area more involved in the community. <a href="http://tdg-i.com/" target="_blank">Jay</a> was kind enough to bring video equipment and record our presentations, along with editing the videos and posting them to the intertubes.</p>
<p><a href="http://tdg-i.com/262/ext-js-meetup-1192010-meetup-videos" title="Jonathan Julian"><img style="border: 1px solid rgb(0, 0, 0); margin: 0 10px 10px 0;" src="http://www.vinylfox.com/wp-content/uploads/2010/02/2010-01-19_1941-150x150.png" alt="Jonathan Julian" title="Jonathan Julian" width="150" height="150" class="alignnone size-thumbnail wp-image-658" /></a><a href="http://tdg-i.com/262/ext-js-meetup-1192010-meetup-videos" title="Shea Frederick"><img style="border: 1px solid rgb(0, 0, 0); margin: 0 10px 10px 0;" src="http://www.vinylfox.com/wp-content/uploads/2010/02/extjsmeetup-150x150.jpg" alt="Shea Frederick" title="Shea Frederick" width="150" height="150" class="alignnone size-thumbnail wp-image-659" /></a><a href="http://tdg-i.com/262/ext-js-meetup-1192010-meetup-videos" title="Pat Sheridan"><img style="border: 1px solid rgb(0, 0, 0); margin: 0 10px 10px 0;" src="http://www.vinylfox.com/wp-content/uploads/2010/02/2010-01-19_1932-150x150.png" alt="Pat Sheridan" title="Pat Sheridan" width="150" height="150" class="alignnone size-thumbnail wp-image-660" /></a></p>
<p>There are some <a href="http://www.meetup.com/baltimore-dc-javascript-users/photos/807828/" target="_blank">photos</a> and other information about the event on its <a href="http://www.meetup.com/baltimore-dc-javascript-users/calendar/12219819/" target="_blank">meetup page</a>.</p>
<p>If you are in the <a href="http://www.meetup.com/baltimore-dc-javascript-users/">Baltimore area and into JavaScript</a> with a fury, you should visit our Meetup that happens the first Wednesday of each month at 6:30PM in the <a href="http://www.beehivebaltimore.com/">Beehive Baltimore</a>. This month&#8217;s meetup has a presentation from <a href="http://paulbarry.com/">Paul Barry</a> about <a href="http://nodejs.org/">Node.js</a> &#8211; it&#8217;s gonna be bad ass.</p>
<h1>Speed Testing</h1>
<p>My little addiction I like to call speed testing has rolled into full swing. Now that I have the tools in place to create and launch tests, along with run reporting on the results with ease, I can pretty much just sit down and spend 30 minutes or so to design and launch the test. <a class="lightbox" href="http://www.vinylfox.com/wp-content/uploads/2010/01/inchworm.jpg"><img src="http://www.vinylfox.com/wp-content/uploads/2010/01/inchworm-150x150.jpg" alt="" title="inchworm" width="150" height="150" class="alignright" style="border: 1px solid rgb(0, 0, 0); margin: 10px 0 0 10px;" /></a> I have two tests currently gathering data, one is testing the speed of rendering an image with and without a data URL, the other has to do with the speed of code wrapped in a try catch statement. Should be some interesting results, which I will be posting a summary on soon. My first test was for <a href="http://www.vinylfox.com/json-decoding-speed-comparison/">JSON decoding speed</a>, which I posted results for a couple of weeks ago.</p>
<h1>HtmlEditor Plugins</h1>
<p>The Ext JS team has expressed an interest in including my <a href="http://code.google.com/p/ext-ux-htmleditor-plugins/" target="_blank">HtmlEditor Plugins</a> as a UX in the SDK. This will mark the third development of mine that has become part of the Ext JS SDK download, first it was the <a href="http://code.google.com/p/ext-ux-gmappanel/" target="_blank">GMapPanel UX</a>, then the Grid Filter backend PHP code, now it seems that the Ext JS SDK will finally come with a more robust HtmlEditor example. A few updates have been committed recently that add the option to change the language in these plugins, along with some general code cleanup. Also starting to move my code over to <a href="http://github.com/VinylFox/ExtJS-HtmlEditor-Plugins">Github</a> as <a href="http://twitter.com/christocracy/status/8593793204">suggested</a> by <a href="http://twitter.com/jonathanjulian/status/8595481114">many</a>.</p>
<h1>Books</h1>
<p>Soon we will have <a href="http://tdg-i.com/" target="_blank">Jay Garcia&#8217;s</a> <a href="http://www.extjsinaction.com" target="_blank">Ext JS in Action</a> book released in print, and the 2nd edition of <a href="http://www.learningextjs.com" target="_blank">Learning Ext JS</a> should be released later this year, titled &#8220;Learning Ext JS 3.0&#8243;. <a href="http://blog.cutterscrossing.com/index.cfm/2010/1/1/Out-With-The-Old-In-With-The-New-2009--2010">Cutter</a>, <a href="http://colinramsay.co.uk/diary/">Colin</a> and I got together to update the book, fix some errors, and add new chapters to take advantage of new features in Ext JS 3.0. It&#8217;s gonna be an awesome resource for anyone just getting started with Ext JS.</p>
<h1>JSConf</h1>
<p>Again, <a href="http://jsconf.us/2010/" target="_blank">JSConf</a> is being held in the DC area, which makes it incredibly cheap for me to attend, but this year I decided to try my hand at submitting a talk proposal. I can&#8217;t wait to find out if I will be chosen. My submission was for an introduction to rapid application prototyping using the Ext JS library. Here is my submission:</p>
<p><textarea class="js" cols="100" name="code">{<br />
    &#8220;name&#8221;:&#8221;Shea Frederick&#8221;,<br />
    &#8220;email&#8221;:&#8221;________@________.com&#8221;,<br />
    &#8220;twitter&#8221;:&#8221;VinylFox&#8221;,<br />
    &#8220;location&#8221;:&#8221;Baltimore, MD&#8221;,<br />
    &#8220;topic_title&#8221;:&#8221;Rapid Web Application Development with Ext JS&#8221;,<br />
    &#8220;topic_description&#8221;:&#8221;Discuss general principles of the Ext JS library<br />
    and show how easy it can be to rapidly prototype a web application<br />
    using the library.&#8221;,<br />
    &#8220;claim_to_fame&#8221;:&#8221;One of the core contributors to the Ext JS library<br />
    along with other Open Source JavaScript projects. Author of<br />
    &#8216;Learning Ext JS&#8217; published in December 2008. Observed &#8216;Talk Like<br />
    a Pirate Day&#8217;. Maintain a Blog of JavaScript fun at<br />
    http://www.vinylfox.com&#8221;<br />
}</textarea></p>
<p>Did I mention that all submissions have to be in the form of valid JSON? Yeah, geeky, but good &#8211; very good. With any luck, I will <a href="http://jsconf.posterous.com/the-soon-to-be-awkward-moment">find out later this week</a> if ive been accepted.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.vinylfox.com/whats-the-word-meetup-videos-and-more/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HtmlEditor Plugin Updates &amp; Fixes</title>
		<link>http://www.vinylfox.com/htmleditor-plugin-updates-fixes/</link>
		<comments>http://www.vinylfox.com/htmleditor-plugin-updates-fixes/#comments</comments>
		<pubDate>Wed, 16 Sep 2009 13:53:24 +0000</pubDate>
		<dc:creator>Shea Frederick</dc:creator>
				<category><![CDATA[ExtJS]]></category>
		<category><![CDATA[ExtJS Plugins]]></category>
		<category><![CDATA[HtmlEditor]]></category>

		<guid isPermaLink="false">http://www.vinylfox.com/?p=496</guid>
		<description><![CDATA[I had the opportunity recently to watch end users interact with my set of ExtJS HtmlEditor Plugins, which brought to my attention some shortcomings with the UI that have now been addressed. Read about the updates below, or go directly to get the updated HtmlEditor Plugins code. Word Paste The most exciting change is to [...]]]></description>
			<content:encoded><![CDATA[<p>I had the opportunity recently to watch end users interact with my set of ExtJS HtmlEditor Plugins, which brought to my attention some shortcomings with the UI that have now been addressed. Read about the updates below, or go directly to <a href="http://code.google.com/p/ext-ux-htmleditor-plugins/">get the updated HtmlEditor Plugins code.</a></p>
<h2>Word Paste</h2>
<p><img alt="" src="http://content.screencast.com/users/VinylFox/folders/Jing/media/8f704239-067c-4884-ab6d-60ec5145a6ee/2009-09-16_0913.png" title="Word Paste" class="alignright" width="127" height="99" style="border: 1px solid rgb(0, 0, 0); margin: 0px 0px 10px 10px;" />The most exciting change is to how the Word Paste plugin works, which now captures a paste event and can fix the Word garbage without any user interaction. The old UI has been ditched, and replaced with a single toggle button on the HtmlEditor toolbar which turns the functionality on or off. No pop-up window needed.</p>
<h2>Form Validation</h2>
<p><img alt="" src="http://content.screencast.com/users/VinylFox/folders/Jing/media/89922df3-af48-4903-b42c-de17d05e9193/2009-09-16_0925.png" title="Form Validation" class="alignright" width="143" height="97" style="border: 1px solid rgb(0, 0, 0); margin: 0px 0px 10px 10px;" />All of the forms used for inserting now validate their input before allowing the user to insert anything. When the user fills out the form invalidly, they get a squiggly red line (like that of a misspelling in Word). If they try to submit the form with the field still invalid, a &#8220;frame&#8221; animation effect brings their attention to the invalid field.</p>
<h2>Context Activation</h2>
<p>Two new features were added that allow the buttons to be enabled or disabled based on text selection, and what tags are present in the selected text or cursor position. This simply means, for example, that the &#8216;Bold&#8217; button will be toggled if the selected text, or cursor position has a bold tag in it. To use this feature we just need to enable it.</p>
<p><textarea class="js" cols="100" name="code">Ext.ux.form.HtmlEditor.Bold = Ext.extend(Ext.ux.form.HtmlEditor.MidasCommand, {<br />
    midasBtns: [{<br />
        monitorCmdState: true,<br />
        cmd: 'bold',<br />
        title: 'Bold'<br />
    }]<br />
});</textarea></p>
<p>The second part of this feature set is enabling or disabling a button on text selection, this is used in the <i>Remove Formatting</i> button because it would be silly to have this button enabled if no text was selected.</p>
<ul>
<li>enableOnSelection &#8211; set to true to enable button only when text is selected.</li>
<li>disableOnSelection &#8211; set to true to disable button only when text is selected.</li>
</ul>
<p>See how the <i>Remove Formatting</i> button takes advantage of this feature.</p>
<p><textarea class="js" cols="100" name="code">Ext.ux.form.HtmlEditor.RemoveFormat = Ext.extend(Ext.ux.form.HtmlEditor.MidasCommand, {<br />
    midasBtns: ['|',{<br />
        enableOnSelection: true,<br />
        cmd: 'removeFormat',<br />
        title: 'Remove Formatting'<br />
    }]<br />
});</textarea></p>
<h2>Overflow Text</h2>
<p><img alt="" src="http://content.screencast.com/users/VinylFox/folders/Jing/media/916561a4-a110-49e0-a9f4-043f17a196f8/2009-09-16_0929.png" title="Overflow Text" class="alignright" width="184" height="108" style="border: 1px solid rgb(0, 0, 0); margin: 0px 0px 10px 10px;" />The overflow text used when a toolbar has too many buttons to fit in the width has been added. This was overlooked on my first version of this plugin. Thanks to &#8216;feyyaz&#8217; from the ExtJS forums for spotting this.</p>
<h2>Conclusion</h2>
<p>Hopefully these new features and fixes will prove useful to everyone, and as always, feedback is the only way this plugin set is going to get better, so keep the suggestions coming. Now its time for me to go get some breakfast and a large(ish) cup of coffee. Enjoy!</p>
<p><a href="http://code.google.com/p/ext-ux-htmleditor-plugins/">HtmlEditor Plugins Code</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.vinylfox.com/htmleditor-plugin-updates-fixes/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Plugin set for HtmlEditor gets a CharacterMap</title>
		<link>http://www.vinylfox.com/plugin-set-for-htmleditor-gets-a-charactermap/</link>
		<comments>http://www.vinylfox.com/plugin-set-for-htmleditor-gets-a-charactermap/#comments</comments>
		<pubDate>Tue, 28 Jul 2009 14:26:10 +0000</pubDate>
		<dc:creator>Shea Frederick</dc:creator>
				<category><![CDATA[ExtJS]]></category>
		<category><![CDATA[ExtJS Plugins]]></category>
		<category><![CDATA[HtmlEditor]]></category>

		<guid isPermaLink="false">http://www.vinylfox.com/?p=410</guid>
		<description><![CDATA[Over time I will be adding more and more of these HtmlEditor plugins in an effort to turn the ExtJS HtmlEditor into a lean mean fighting machine! My goal is to give the ExtJS HtmlEditor all the power of those other rich text editors but without the overhead. The obvious next choice for a button [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.vinylfox.com/wp-content/uploads/2009/07/charmap-300x170.png" alt="charmap" title="charmap" width="300" height="170" class="alignleft size-full wp-image-413" align="left" style="margin: 10px 10px 10px 0; border: solid 1px #000;"/>Over time I will be adding more and more of these HtmlEditor plugins in an effort to turn the ExtJS HtmlEditor into a lean mean fighting machine! My goal is to give the ExtJS HtmlEditor all the power of those other rich text editors but without the overhead.</p>
<p>The obvious next choice for a button was to add a character map which allows the user to insert special characters.</p>
<h2>How it Works</h2>
<p>The character map is just a <em>DataView</em> in a window which allows selection of each item. By double clicking on an item, a single character can be inserted or we can select a single item or multiple items using the ctrl or shift keys and click the &#8216;Insert&#8217; button.</p>
<h2>Using it</h2>
<p>Just like the <a href="http://www.vinylfox.com/plugin-set-for-additional-extjs-htmleditor-buttons/">other plugins in this set</a>, it can be added to the plugins array of your HtmlEditor.</p>
<p><textarea class="js" cols="100" name="code">{<br />
	xtype: &#8216;htmleditor&#8217;,<br />
	&#8230;,<br />
	plugins: [new Ext.ux.form.HtmlEditor.SpecialCharacters()],<br />
	&#8230;<br />
}</textarea></p>
<p>I also created a couple of configs that allow you to specify which characters you want displayed, along with any additional characters. Both of the following configs use the numeric portion of the ASCII HTML Character Code only &#8211; for example, to use the Copyright symbol, which is <strong>&#38;#169;</strong> we would just specify <strong>169</strong> in the config.</p>
<p>If we wanted to only display a subset of characters, we would set the value of the <em>charRange </em>config to an array containing the starting and ending points of the characters we wanted.</p>
<p><textarea class="js" cols="100" name="code">{<br />
	xtype: &#8216;htmleditor&#8217;,<br />
	&#8230;,<br />
	plugins: [new Ext.ux.form.HtmlEditor.SpecialCharacters({<br />
		charRange: [192,256] // Accented characters only<br />
	})],<br />
	&#8230;<br />
}</textarea></p>
<p>There is also the option to include additional characters using the <em>specialChars </em>config, providing an array of the characters.</p>
<p><textarea class="js" cols="100" name="code">{<br />
	xtype: &#8216;htmleditor&#8217;,<br />
	&#8230;,<br />
	plugins: [new Ext.ux.form.HtmlEditor.SpecialCharacters({<br />
		specialChars: [42,43,45,47,60,61,62] // Math operator characters<br />
	})],<br />
	&#8230;<br />
}</textarea></p>
<h2>Enjoy!</h2>
<p>As always, please enjoy this plugin and feel free to use it wherever you want. Feedback is very appreciated.</p>
<p>Source available on Google Code: <a href="http://code.google.com/p/ext-ux-htmleditor-plugins/">http://code.google.com/p/ext-ux-htmleditor-plugins/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.vinylfox.com/plugin-set-for-htmleditor-gets-a-charactermap/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Plugin set of additional ExtJS HtmlEditor Buttons</title>
		<link>http://www.vinylfox.com/plugin-set-for-additional-extjs-htmleditor-buttons/</link>
		<comments>http://www.vinylfox.com/plugin-set-for-additional-extjs-htmleditor-buttons/#comments</comments>
		<pubDate>Mon, 22 Jun 2009 19:56:47 +0000</pubDate>
		<dc:creator>Shea Frederick</dc:creator>
				<category><![CDATA[ExtJS]]></category>
		<category><![CDATA[ExtJS News]]></category>
		<category><![CDATA[ExtJS Plugins]]></category>
		<category><![CDATA[HtmlEditor]]></category>

		<guid isPermaLink="false">http://www.vinylfox.com/?p=346</guid>
		<description><![CDATA[A couple of cups of coffee and a late night fueled by the hatred of the TinyMCE editor prompted me to write a set of Plugins extending the functionality of the ExtJS HtmlEditor. Home &#038; Stone asked me to integrate the TinyMCE editor into their application, so of course I said yes, knowing that I [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.vinylfox.com/wp-content/uploads/2009/06/htmleditor-plugin-set.png" alt="htmleditor-plugin-set" title="htmleditor-plugin-set" width="234" height="213" class="alignleft size-full wp-image-350" align="left" style="margin: 10px; border: solid 1px #000;"/>A couple of cups of coffee and a late night fueled by the hatred of the TinyMCE editor prompted me to write a set of Plugins extending the functionality of the ExtJS HtmlEditor.</p>
<p><a href="http://www.homeandstone.com">Home &#038; Stone</a> asked me to integrate the TinyMCE editor into their application, so of course I said yes, knowing that I had done this before and that it generally worked out just fine. Well, three or four days later (its all a blur) having written layers and layers of overrides to the TinyMCE editor, extended or overrode Ext.Panel, Ext.Window, Ext.Updater and so on. I finally said to myself &#8220;thats enough, this just isn&#8217;t worth it&#8221; &#8211; I can get this done faster and better using ExtJS the way it was meant to be used.</p>
<h2>The Outcome</h2>
<p>Out of my pain comes a set of plugins that start to mimic what TinyMCE provides, with way less overhead, both in file size and memory.</p>
<p>Currently, these are the plugins that have been created for this set:</p>
<ul>
<li>WordPaste</li>
<li>Divider</li>
<li>Table</li>
<li>HR</li>
<li>IndentOutdent</li>
<li>SubSuperScript</li>
<li>RemoveFormat</li>
<li>MidasCommand</li>
</ul>
<p>I have posted all of these in a new Google Code project, so feel free to use these in your projects and contribute back any fixes or upgrades you might have along the way.</p>
<p><a href="http://code.google.com/p/ext-ux-htmleditor-plugins/">http://code.google.com/p/ext-ux-htmleditor-plugins/</a></p>
<h2>How to Use Them</h2>
<p>First you will need to include the plugin files you want (<i>MidasCommand</i> will need to be included first), then set them up on the HtmlEditor as a Plugin like this:</p>
<p><textarea class="js" cols="100" name="code">{<br />
	fieldLabel: &#8216;Description&#8217;,<br />
	name: &#8216;description&#8217;,<br />
	value: &#8216;bwah bwah&#8217;,<br />
	anchor: &#8217;100%&#8217;,<br />
	xtype: &#8220;htmleditor&#8221;,<br />
	height: 400,<br />
	plugins: [<br />
		new Ext.ux.form.HtmlEditor.Word(),<br />
		new Ext.ux.form.HtmlEditor.Divider(),<br />
		new Ext.ux.form.HtmlEditor.Table(),<br />
		new Ext.ux.form.HtmlEditor.HR(),<br />
		new Ext.ux.form.HtmlEditor.IndentOutdent(),<br />
		new Ext.ux.form.HtmlEditor.SubSuperScript(),<br />
		new Ext.ux.form.HtmlEditor.RemoveFormat()<br />
	]<br />
}</textarea></p>
<p>Thats it! They show up in the toolbar in the order they are added. A Divider can be inserted at any point, and some have dividers built in.</p>
<h2>Make Your Own</h2>
<p>This whole process brought about the creation of a simple base class used for adding your own Midas commands &#8211; <i>Ext.ux.form.HtmlEditor.MidasCommand</i>. This class can be extended and provided a simple config that will create the buttons and their handlers for you.</p>
<p><textarea class="js" cols="100" name="code">Ext.ux.form.HtmlEditor.RemoveFormat = Ext.extend(Ext.ux.form.HtmlEditor.MidasCommand, {<br />
    midasBtns: ['|',{<br />
        cmd: 'removeFormat',<br />
        title: 'Remove Formatting'<br />
    }]<br />
});</textarea></p>
<p>PS: Im glad to see the trend towards Plugin use in ExtJS, allowing the addition of bits of functionality without conflicting with other functionality, and without having to resort to extending.</p>
<p>&nbsp;</p>
<p>Additionally, I want to thank <a href="http://www.homeandstone.com">Home &#038; Stone</a> for allowing me to contribute this code back to the community, they have expressed interest in giving back, so im sure we will see more of these types of things being released soon.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.vinylfox.com/plugin-set-for-additional-extjs-htmleditor-buttons/feed/</wfw:commentRss>
		<slash:comments>26</slash:comments>
		</item>
	</channel>
</rss>
