<?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>Playing With User Interface Feature &#187; Yahoo</title>
	<atom:link href="http://williamduff.name/category/yahoo/feed/" rel="self" type="application/rss+xml" />
	<link>http://williamduff.name</link>
	<description></description>
	<lastBuildDate>Thu, 10 May 2012 15:21:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>YUI Graded Browser Support</title>
		<link>http://williamduff.name/yui-graded-browser-support/</link>
		<comments>http://williamduff.name/yui-graded-browser-support/#comments</comments>
		<pubDate>Tue, 02 Feb 2010 06:11:01 +0000</pubDate>
		<dc:creator>william</dc:creator>
				<category><![CDATA[Yahoo]]></category>
		<category><![CDATA[YUI Graded Browser Support]]></category>

		<guid isPermaLink="false">http://williamduff.name/?p=23</guid>
		<description><![CDATA[This chart lists browsers that receive A-grade support as defined by Graded Browser Support. All YUI projects, including YUI 2 and YUI 3, aim to provide full A-grade support. [...]]]></description>
			<content:encoded><![CDATA[<h2 id="gbschart">A-Grade Browser Support Chart</h2>
<p>This chart lists browsers that receive A-grade support as defined by Graded Browser Support.  All YUI projects, including YUI 2 and YUI 3, aim to provide full A-grade support.</p>
<div id="graded-browsers">
<div id="graded-browsers2">
<table summary="This chart lists browsers that receive A-Grade support as defined by Graded Browser Support.">
<thead>
<tr>
<td></td>
<th id="Windows_XP" scope="col"><abbr title="Microsoft Windows XP">Win XP</abbr></th>
<th id="Windows_Vista" scope="col"><abbr title="Microsoft Windows Vista">Win Vista</abbr></th>
<th id="Macintosh_10.5" scope="col"><abbr title="Macintosh 10.5">Mac 10.5.†</abbr></th>
<th id="Macintosh_10.6" scope="col"><abbr title="Macintosh 10.5">Mac 10.6.†</abbr></th>
</tr>
</thead>
<tbody>
<tr>
<th id="Mozilla_Firefox_3.0.†" scope="row"><abbr title="Mozilla Firefox 3.0.†">Firefox 3.0.†</abbr></th>
<td>A-grade</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<th id="Mozilla_Firefox_3.5.†" scope="row"><abbr title="Mozilla Firefox 3.5.†">Firefox 3.5.†</abbr></th>
<td>A-grade</td>
<td>A-grade</td>
<td></td>
<td>A-grade</td>
</tr>
<tr>
<th id="Opera_10.0.†" scope="row"><abbr title="Opera 10.0.†">Opera 10.0.†</abbr></th>
<td>A-grade</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<th id="Internet_Explorer_8.0" scope="row"><abbr title="Internet Explorer 8.0">IE 8.0</abbr></th>
<td>A-grade</td>
<td>A-grade</td>
<td></td>
<td></td>
</tr>
<tr>
<th id="Internet_Explorer_7.0" scope="row"><abbr title="Internet Explorer 7.0">IE 7.0</abbr></th>
<td>A-grade</td>
<td>A-grade</td>
<td></td>
<td></td>
</tr>
<tr>
<th id="Internet_Explorer_6.0" scope="row"><abbr title="Internet Explorer 6.0">IE 6.0</abbr></th>
<td>A-grade</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<th id="Apple Safari_4.0.†" scope="row">Safari 4.0.†</th>
<td></td>
<td></td>
<td>A-grade</td>
<td>A-grade</td>
</tr>
</tbody>
</table>
</div>
<ul>
<li>The dagger symbol (as in &#8220;Firefox 3.5.†&#8221;) indicates that the most-current non-beta version at that branch level receives support.</li>
<li>Code that may be used on pages with unknown doctypes should be tested in IE7 quirks mode.</li>
<li>Code that may appear in IE8&#8242;s &#8220;compatibility mode,&#8221; which emulates but is not identical to IE7, should be tested explicitly in compatibility mode.</li>
</ul>
</div>
<h2 id="cgradelist">C-Grade Browser List (Draft)</h2>
<p>This list represents browsers from which CSS and JavaScript should be withheld. This list is in draft status. Discussion of the C-Grade list and the A-Grade matrix takes place in the comments section of the latest GBS update.</p>
<ul>
<li>IE &lt; 6 (including Mac OS versions)</li>
<li>Safari &lt; 3</li>
<li>Firefox &lt; 2</li>
<li>Opera &lt; 9.5</li>
<li>Netscape &lt; 8</li>
</ul>
<p>We recommend testing your C-Grade experience in one of the above browsers or in a modern browser with JavaScript and CSS disabled. As part of your standard QA process, verify that JavaScript and CSS resources are withheld from the above browsers based on user agent.</p>
<h2 id="archive">GBS Updates Archive</h2>
<p>This page is the permanent home of the current A-Grade chart. Updates are publicized on the YUI Blog. You may always reference past updates on the blog via the links gathered here.</p>
<ul>
<li>GBS Update, 2009 Q4</li>
<li>GBS Update, 2009 Q3</li>
<li>GBS Update, 2009 Q1</li>
<li>GBS Update, 2008 Q3</li>
<li>GBS Update, 2008 Q1</li>
</ul>
<h2 id="history">Graded Browser Support: What and Why</h2>
<p>In the first 10 years of professional web development, back in the early ‘90s, browser support was binary: Do you — or don’t you — support a given browser? When the answer was “No”, user access to the site was often actively prevented. In the years following <abbr title="Internet Explorer">IE</abbr>5’s release in 1998, professional web designers and developers have become accustomed to asking at the outset of any new undertaking, “Do I have to support Netscape 4.x browsers for this project?”</p>
<p>By contrast, in modern web development we must support <em>all</em> browsers. Choosing to exclude a segment of users is inappropriate, and, with a “Graded Browser Support” strategy, unnecessary.</p>
<p>Graded Browser Support offers two fundamental ideas:</p>
<ul>
<li>A broader and more reasonable definition of “support.”</li>
<li>The notion of “grades” of support.</li>
</ul>
<h3 id="define-support">What Does “Support” Mean?</h3>
<p>Support does not mean that everybody gets the same thing. Expecting two users using different browser software to have an identical experience fails to embrace or acknowledge the heterogeneous essence of the Web. In fact, requiring the same experience for all users creates an artificial barrier to participation. Availability and accessibility of content should be our key priority.</p>
<p>Consider television. At the core: TV distributes information. A hand-cranked emergency radio is capable of receiving television audio transmissions. It would be counter-productive to prevent access to this content, even though it’s a fringe experience.</p>
<p>Some viewers still have black-and-white televisions. Broadcasting only in black-and-white — the “lowest common denominator” approach — ensures a shared experience but benefits no one. Excluding the black-and-white television owners — the “you must be this tall to ride” approach — provides no benefit either.</p>
<p>An appropriate support strategy allows every user to consume as much visual and interactive richness as their environment can support. This approach—commonly referred to as <em>progressive enhancement</em> — builds a rich experience on top of an accessible core, without compromising that core.</p>
<h4 id="progressive-enhancement">Progressive Enhancement vs. Graceful Degradation</h4>
<p>The concepts of <em>graceful degradation</em> and <em>progressive enhancement</em> are often applied to describe browser support strategies. Indeed, they are closely related approaches to the engineering of “fault tolerance”.</p>
<p>These two concepts influence decision-making about browser support. Because they reflect different priorities, they frame the support discussion differently. Graceful degradation prioritizes <em>presentation</em>, and permits less widely-used browsers to receive less (and give less to the user). Progressive enhancement puts <em>content</em> at the center, and allows most browsers to receive more (and show more to the user). While close in meaning, progressive enhancement is a healthier and more forward-looking approach. Progressive enhancement is a core concept of Graded Browser Support.</p>
<h3 id="what-are-grades">What are Grades of Support?</h3>
<p>While an inclusive definition of browser support is necessary, the support continuum does present design, development, and testing challenges. If anything goes, how do I know when the experience is broken? To address this question and return a sense of order to the system, we define <em>grades</em> of support. There are three grades: A-, C-, and X-grade support.</p>
<p>Before examining each grade, here are some characteristics useful for defining levels of support.</p>
<p>Identified vs. Unknown There are over 10,000 browser brands, versions, and configurations and that number is growing. It is possible to group known browsers together.</p>
<p>Capable vs. Incapable No two browsers have an identical implementation. However, it is possible to group browsers according to their support for most web standards.</p>
<p>Modern vs. Antiquated As newer browser versions are released, the relevancy of earlier versions decreases.</p>
<p>Common vs. Rare There are thousands of browsers in use, but only a few dozen are widely used.</p>
<h3 id="the-three-grades">The Three Grades of Support</h3>
<h4 id="c-grade">C-grade</h4>
<p>C-grade is the base level of support, providing core content and functionality. It is sometimes called core support. Delivered via nothing more than semantic <abbr title="HyperText Markup Language">HTML</abbr>, the content and experience is highly accessible, unenhanced by decoration or advanced functionality, and forward and backward compatible. Layers of style and behavior are omitted.</p>
<p>C-grade browsers are identified on a blacklist.</p>
<p>Summary: C-grade browsers are identified, incapable, antiquated and rare. <abbr title="Quality Assurance">QA</abbr> tests a sampling of C-grade browsers, and bugs are addressed with high priority.</p>
<h4 id="a-grade">A-grade</h4>
<p>A-grade support is the highest support level. By taking full advantage of the powerful capabilities of modern web standards, the A-grade experience provides advanced functionality and visual fidelity.</p>
<p>A-grade browsers are identified on a whitelist. Approximately 96% of our audience enjoys an A-grade experience.</p>
<p>Summary: A-grade browsers are identified, capable, modern and common. QA tests all A-grade browsers, and bugs are addressed with high priority.</p>
<h4 id="x-grade">X-grade</h4>
<p>X-grade provides support for unknown, fringe or rare browsers as well as browsers on which development has ceased. Browsers receiving X-grade support are assumed to be capable. (If a browser is shown to be incapable — if it chokes on modern methodologies and its user would be better served without decoration or functionality — then it should considered a C-grade browser.)</p>
<p>X-grade browsers include all browsers not on the C-grade blacklist or the A-grade whitelist</p>
<p><strong>Summary:</strong> X-grade browsers are assumed to be capable and modern. QA does not test, and bugs are not opened against X-grade browsers.</p>
<h4 id="a-grade-vs-x-grade">The Relationship Between A- and X-grade Support</h4>
<p>A bit more on the relationship between A and X grade browsers: One unexpected instance of X-grade is a newly-released version of an A-grade browser. Since thorough QA testing is an A-grade requirement, a brand-new (and therefore untested) browser does not qualify as an A-grade browser. This example highlights a strength of the Graded Browser Support approach. The only practical difference between A and X-grade browsers is that QA actively tests against A-grade browsers.</p>
<p>Unlike the C-grade, which receives only <abbr title="HyperText Markup Language">HTML</abbr>, X-grade receives everything that A-grade does. Though a brand-new browser might be characterized initially as a X-grade browser, we give its users every chance to have the same experience as A-grade browsers.</p>
<h3 id="testing">Quality Assurance (QA) Testing</h3>
<p>Grading the browser ecosystem enables meaningful, targeted, and cost-effective QA testing. As noted, representative C-grade testing and systematic A-grade testing ensures a usable and verified experience for the vast majority of our audience. A-grade testing must be thorough and complete, while C-grade testing can be accomplished with one or two representative browsers (e.g., Netscape 4.x and Lynx), or by using a modern browser with CSS and JavaScript disabled.</p>
<p>It’s worth reiterating that testing resources do <em>not</em> examine X-grade browsers.</p>
<p>Representative testing of the core experience is critical. If you choose to adopt a Graded Browser support regime for your own web applications, be sure your site’s core content and functionality is accessible without images, <abbr title="Cascading Style Sheets">CSS</abbr>, and <abbr title="JavaScript">JS</abbr>. Ensure that the keyboard is adequate for task completion and that when your site is accessed by a C-grade browser all advanced functionality prompts are hidden.</p>
<h3 id="conclusion">In Conclusion</h3>
<p>Graded Browser Support provides an inclusive definition of support and a framework for taming the ever-expanding world of browsers and frontend technologies.</p>
<p>Tim Berners-Lee, inventor of the World Wide Web and director of the <abbr title="World Wide Web Consortium">W3C</abbr>, has said it best:</p>
<blockquote cite="http://en.thinkexist.com/quotation/anyone_who_slaps_a-this_page_is_best_viewed_with/334172.html"><p>“Anyone who slaps a ‘this page is best viewed with Browser X’ label on a Web page appears to be yearning for the bad old days, before the Web, when you had very little chance of reading a document written on another computer, another word processor, or another network.”</p></blockquote>
<h4>Incoming search terms:</h4><ul><li>list of yahoo grade a browsers</li><li>yui grade browser</li><li>yui graded browser support chart</li><li>yui upload text file edit</li></ul>]]></content:encoded>
			<wfw:commentRss>http://williamduff.name/yui-graded-browser-support/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>YUI on Mobile</title>
		<link>http://williamduff.name/yui-on-mobile/</link>
		<comments>http://williamduff.name/yui-on-mobile/#comments</comments>
		<pubDate>Tue, 02 Feb 2010 05:01:55 +0000</pubDate>
		<dc:creator>william</dc:creator>
				<category><![CDATA[Yahoo]]></category>
		<category><![CDATA[YUI on Mobile]]></category>

		<guid isPermaLink="false">http://williamduff.name/?p=20</guid>
		<description><![CDATA[YUI generally works well with mobile browsers that are based on A-Grade browser foundations. For example, Nokia's N-series phones, including the N95, use a browser based on Webkit — the same foundation shared by Apple's Safari browser, which is found on the iPhone. [...]]]></description>
			<content:encoded><![CDATA[<p>YUI generally works well with mobile browsers that are based on A-Grade browser foundations. For example, Nokia&#8217;s N-series phones, including the N95, use a browser based on Webkit — the same foundation shared by Apple&#8217;s Safari browser, which is found on the iPhone.  The fundamental challenges in developing for this emerging class of full, A-Grade-derived browsers on handheld devices are:</p>
<ul>
<li>Screen size: You have a much smaller canvas;</li>
<li><em>Input devices:</em> Mobile devices generally do not have mouse input, and therefore are missing some or all mouse events (like mouseover);</li>
<li><em>Processor power:</em> Mobile devices have slower processors that can more easily be saturated by JavaScript and DOM interactions — and processor usage affects things like battery life in ways that don&#8217;t have analogues in desktop browsers;</li>
<li><em>Latency:</em> Most mobile devices have a much higher latency on the network than do terrestrially networked PCs; this can make pages with many script, css or other types of external files load much more slowly.</li>
</ul>
<p>There are other considerations, many of them device/browser specific (for example, current versions of the iPhone&#8217;s Safari browser do not support Flash). The goal of these sections on <a href="http://williamduff.name">YUI User&#8217;s Guides </a>is to provide you some preliminary insights about how specific components perform on this emerging class of mobile devices. Although we have not done exhaustive testing, and although these browsers are revving quickly and present a moving target, our goal is to provide some early, provisional advice to help you get started as you contemplate how your YUI-based application will render in the mobile world.</p>
<p>This article sponsored by <a href="http://www.smile-dds.com">San Diego dentist</a></p>
<p>&nbsp;</p>
<h4>Incoming search terms:</h4><ul><li>yui mobile</li><li>yui for mobile</li><li>mobile yui</li><li>yahoo ui mobile</li><li>YUI and mobile</li><li>yahoo yui mobile</li><li>yui mobile app</li><li>yui and mobile support\</li><li>yui mobile?</li><li>yui mobile support</li></ul>]]></content:encoded>
			<wfw:commentRss>http://williamduff.name/yui-on-mobile/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>YUI 2: YUI Loader Utility</title>
		<link>http://williamduff.name/yui-2-yui-loader-utility/</link>
		<comments>http://williamduff.name/yui-2-yui-loader-utility/#comments</comments>
		<pubDate>Thu, 05 Nov 2009 01:57:14 +0000</pubDate>
		<dc:creator>william</dc:creator>
				<category><![CDATA[Yahoo]]></category>
		<category><![CDATA[yui loader]]></category>

		<guid isPermaLink="false">http://williamduff.name/?p=29</guid>
		<description><![CDATA[<p>The YUI Loader Utility is a client-side JavaScript component that allows you to load specific YUI components and their dependencies into your page via script. YUI Loader can operate as a holistic solution by loading all of your necessary YUI components, or it can be used to add one or more components to a page [...]]]></description>
			<content:encoded><![CDATA[<p>The YUI Loader Utility is a client-side JavaScript component that allows you to load specific YUI components and their dependencies into your page via script. YUI Loader can operate as a holistic solution by loading all of your necessary YUI components, or it can be used to add one or more components to a page on which some YUI content already exists.</p>
<p>YUI Loader adds value in the following ways:</p>
<ol>
<li><strong>Reliable, sorted loading of dependencies:</strong> YUI comprises more than two-dozen components, many of which work together to provide the best possible compromise between compartmentalization and code reuse. Because of this, YUI components often need to load with specific dependencies in a specific order. YUI Loader understands which components depend on one another, and based on this knowledge it ensures that the right resources are loaded in the right order.</li>
<li><strong>Safe, efficient mechanism for adding new components to a page on which YUI may already be present.</strong> Often as developers we write modules that can live in many contexts. In writing a module, we may need to support a variety of scenarios — the module may be introduced into a page on which all of its YUI dependencies are already present, a page on which some but not all are present, or a page on which no YUI content exists at all. YUI Loader looks at the environment as it exists on the page and pulls in only the additional files your module needs to function.</li>
<li><strong>Automatic use of rolled-up files.</strong> YUI Loader knows about all of the built-in rollup files that ship with YUI — like the yahoo-dom-event.js file that contains the Yahoo Global Object, the Dom Collection, and the Event Utility, three components that are commonly used together. By automatically using rolled-up files when it makes sense to do so, the YUI Loader helps you reduce HTTP requests and thereby keep your page as efficient as possible.</li>
</ol>
<p>As you think about how you want to load YUI on the page, you may find it useful to refer to this overview of some of the most common loading strategies and their relative merits:</p>
<ul>
<li>&#8220;Loading YUI: Seeds, Core, and Combo-handling&#8221;, by Eric Miraglia on YUIBlog</li>
</ul>
<p><strong>Note: </strong>It&#8217;s important to emphasize that any client-side loading utility is expected to be somewhat less performant than solutions that write <code>&lt;script&gt;</code> and <code>&lt;link&gt;</code> elements directly to the page. The use of dynamic <code>&lt;script&gt;</code> and <code>&lt;link&gt;</code> nodes provides good performance and a useful mechanism for bringing in additional JavaScript or CSS after the page has loaded, but for optimal performance you may still wish to write CSS <code>&lt;link&gt;</code> elements to the head of the page and JavaScript <code>&lt;script&gt;</code> elements to the bottom of the page during its initial load.</p>
]]></content:encoded>
			<wfw:commentRss>http://williamduff.name/yui-2-yui-loader-utility/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>YUI 2: Uploader</title>
		<link>http://williamduff.name/yui-2-uploader/</link>
		<comments>http://williamduff.name/yui-2-uploader/#comments</comments>
		<pubDate>Wed, 21 Oct 2009 02:02:02 +0000</pubDate>
		<dc:creator>william</dc:creator>
				<category><![CDATA[Yahoo]]></category>
		<category><![CDATA[yui uploader]]></category>

		<guid isPermaLink="false">http://williamduff.name/?p=32</guid>
		<description><![CDATA[<p>YUI Uploader provides file upload functionality that goes beyond the basic browser-based methods. Specifically, the YUI Uploader allows for:</p> Multiple file selection in a single &#8220;Open File&#8221; dialog. File extension filters to facilitate the user&#8217;s selection. Progress tracking for file uploads. A range of available file metadata: filename, size, date created, date modified, and author. [...]]]></description>
			<content:encoded><![CDATA[<p>YUI Uploader provides file upload functionality that goes beyond the basic browser-based methods. Specifically, the YUI Uploader allows for:</p>
<ol>
<li> Multiple file selection in a single &#8220;Open File&#8221; dialog.</li>
<li> File extension filters to facilitate the user&#8217;s selection.</li>
<li> Progress tracking for file uploads.</li>
<li> A range of available file metadata: filename, size, date created, date modified, and author.</li>
<li> A set of events dispatched on various aspects of the file upload process: file selection, upload progress, upload completion, etc.</li>
<li> Inclusion of additional data in the file upload POST request.</li>
<li> Faster file upload on broadband connections due to the modified SEND buffer size.</li>
<li> Same-page server response upon completion of the file upload.</li>
</ol>
<p><strong>Important Issue:</strong> Due to a current bug, the current version of <strong>uploader.swf</strong> hosted on yui.yahooapis.com in the YUI 2.8 branch is NOT compatible with the <strong>uploader.js</strong> hosted on yui.yahooapis.com. Until the next bugfix release, you can work around this issue by either locally hosting the older version of uploader.swf (available here), or locally hosting the <strong>uploader.js</strong> and making the following changes to it:</p>
<ul>
<li>On line 509, in <code>swfObj.addVariable("elementID", swfID);</code>, replace &#8220;elementID&#8221; with &#8220;YUISwfId&#8221;.</li>
<li>On line 512, in <code>swfObj.addVariable("eventHandler", "YAHOO.widget.FlashAdapter.eventHandler");</code>, replace &#8220;eventHandler&#8221; with &#8220;YUIBridgeCallback&#8221;.</li>
</ul>
<p><strong>Important usage notes:</strong></p>
<ul>
<li>Because of security changes in the upcoming Flash Player 10, the UI for invoking the &#8220;Browse&#8221; dialog has to be contained within the Flash player. Because of that, this new version of the Uploader is <strong>NOT BACKWARDS COMPATIBLE</strong> with the code written to work with the previous version (it is, however, compatible with Flash Player 9). Do not upgrade to this version without carefully reading the documentation and reviewing the new examples.</li>
<li>The Uploader Control should always be served from an HTTP server due to Flash Player&#8217;s restricted local security model.</li>
<li>The Uploader Control requires Flash Player 9.0.45 or higher. The latest version of Flash Player is available at the Adobe Flash Player Download Center.</li>
</ul>
<p><strong>Note:</strong> The Uploader Control is being released as a   <em>beta</em> component.  Please refer to the FAQ for what we mean by this designation. We look forward to your feedback   in the YUI Forums.</p>
<h4>Incoming search terms:</h4><ul><li>william duff uploads</li><li>yui 2 upload</li><li>yui 2 uploader</li><li>yui flash uploader size limitation</li><li>yui html5 file upload</li><li>yui upload on ios</li><li>yui uploader on iphone</li><li>yui2 uploader example</li><li>yui2 uploader not working</li></ul>]]></content:encoded>
			<wfw:commentRss>http://williamduff.name/yui-2-uploader/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>YUI 2: Rich Text Editor</title>
		<link>http://williamduff.name/yui-2-rich-text-editor/</link>
		<comments>http://williamduff.name/yui-2-rich-text-editor/#comments</comments>
		<pubDate>Wed, 25 Mar 2009 22:00:41 +0000</pubDate>
		<dc:creator>william</dc:creator>
				<category><![CDATA[Yahoo]]></category>
		<category><![CDATA[yui editor]]></category>

		<guid isPermaLink="false">http://williamduff.name/?p=1</guid>
		<description><![CDATA[The Rich Text Editor interface with the default YUI Sam Skin applied.The Rich Text Editor is a UI control that replaces a standard HTML textarea; it allows for the rich formatting of text content, including common structural treatments like lists, formatting treatments like bold and italic text, and drag-and-drop inclusion and sizing of images. [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="aligncenter" title="YUI 2: Rich Text Editor" src="http://developer.yahoo.com/yui/editor/assets/editor.png" alt="" width="350" height="225" />YUI 2: Rich Text Editor</p>
<p>The Rich Text Editor interface with the default YUI Sam Skin applied.The Rich Text Editor is a UI control that replaces a standard HTML textarea; it allows for the rich formatting of text content, including common structural treatments like lists, formatting treatments like bold and italic text, and drag-and-drop inclusion and sizing of images. The Rich Text Editor&#8217;s toolbar is extensible via a plugin architecture so that advanced implementations can achieve a high degree of customization.</p>
<p>In order to give you the greatest possible control over the size and performance of the Rich Text Editor codebase, we provide two versions of the Editor module and two versions of the buttons that live on the Toolbar:</p>
<p>* Editor: Editor contains all features described on this page;<br />
* SimpleEditor: SimpleEditor contains a subset of Editor&#8217;s features. (See &#8220;Choosing Between Editor and SimpleEditor&#8221; for more details.)<br />
* ToolbarButtonAdvanced: The advanced Toolbar buttons are based on YUI Buttons; they are more richly featured at the cost of more dependencies.<br />
* ToolbarButton: The more simple Toolbar buttons have fewer dependencies and so are lighter on the page; they do not support progressive enhancement nor menu-button functionality. (See &#8220;Changing the Toolbar&#8221; for more about your Toolbar choices.)</p>
<p>Choose the right combination of features in your Editor and Toolbar to get the right tradeoff between size and richness for your application.</p>
<h4>Incoming search terms:</h4><ul><li>rich formatting toolbar vector</li><li>yui editor change title</li><li>yui 2: rich text editor</li><li>customise yui2 text editor</li><li>yui2 rich text editor content change</li><li>yui rich text editor all buttons</li><li>yui editor</li><li>yui 2: rich text editor change the title</li><li>user interface for text editors</li><li>text ymfs</li></ul>]]></content:encoded>
			<wfw:commentRss>http://williamduff.name/yui-2-rich-text-editor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Yahoo! UI Library: YAHOO.util.Anim</title>
		<link>http://williamduff.name/yahoo-ui-library-yahoo-util-anim/</link>
		<comments>http://williamduff.name/yahoo-ui-library-yahoo-util-anim/#comments</comments>
		<pubDate>Sat, 02 Aug 2008 13:37:32 +0000</pubDate>
		<dc:creator>william</dc:creator>
				<category><![CDATA[Yahoo]]></category>
		<category><![CDATA[Yahoo! UI Library]]></category>

		<guid isPermaLink="false">http://williamduff.name/?p=16</guid>
		<description><![CDATA[Class YAHOO.util.Anim Known Subclasses: YAHOO.util.ColorAnim Base animation class that provides the interface for building animated effects.Usage: var myAnim = new YAHOO.util.Anim(el, { width: { from: 10, to: 100 } }, 1, YAHOO.util.Easing.easeOut);  [...]]]></description>
			<content:encoded><![CDATA[<h2>Class <strong>YAHOO.util.Anim</strong></h2>
<p><!-- class tree goes here --></p>
<dl>
<dt>Known Subclasses:</dt>
<dd> YAHOO.util.ColorAnim </dd>
</dl>
<div>
<p>Base animation class that provides the interface for building animated effects.Usage: var myAnim = new YAHOO.util.Anim(el, { width: { from: 10, to: 100 } }, 1, YAHOO.util.Easing.easeOut);</p>
</div>
<div>
<h3 id="constructor">Constructor</h3>
<div>
<div>
<p><strong>YAHOO.util.Anim</strong> <code> (                                                                                                                                              el                                                  ,                                                  attributes                                                  ,                                                  duration                                                  ,                                                  method                                     ) </code></p>
<div>
<dl>
<dt>Parameters:</dt>
<dd> <code>el                                                     &lt;String | HTMLElement&gt; </code> Reference to the element that will be animated </dd>
<dd> <code>attributes                                                     &lt;Object&gt; </code> The attribute(s) to be animated.   Each attribute is an object with at minimum a &#8220;to&#8221; or &#8220;by&#8221; member defined.   Additional optional members are &#8220;from&#8221; (defaults to current value), &#8220;units&#8221; (defaults to &#8220;px&#8221;).   All attribute names use camelCase. </dd>
<dd> <code>duration                                                     &lt;Number&gt; </code> (optional, defaults to 1 second) Length of animation (frames or seconds), defaults to time-based </dd>
<dd> <code>method                                                     &lt;Function&gt; </code> (optional, defaults to YAHOO.util.Easing.easeNone) Computes the values that are applied to the attributes per frame (generally a YAHOO.util.Easing method) </dd>
</dl>
</div>
</div>
</div>
</div>
<div>
<div>
<h3 id="properties">Properties</h3>
<div>
<div>
<h4><a name="property__onComplete">_onComplete</a> &#8211; <code>private object</code></h4>
<div>
<div>Custom event that fires after onComplete</div>
</div>
<hr />
</div>
<div>
<h4><a name="property__onStart">_onStart</a> &#8211; <code>private object</code></h4>
<div>
<div>Custom event that fires after onStart, useful in subclassing</div>
</div>
<hr />
</div>
<div>
<h4><a name="property__onTween">_onTween</a> &#8211; <code>private object</code></h4>
<div>
<div>Custom event that fires after onTween</div>
</div>
<hr />
</div>
<div>
<h4><a name="property_actualFrames">actualFrames</a> &#8211; <code>private Int</code></h4>
<div>
<div>The number of frames this animation was able to execute.</div>
</div>
<hr />
</div>
<div>
<h4><a name="property_attributes">attributes</a> &#8211; <code>Object</code></h4>
<div>
<div>The collection of attributes to be animated. Each attribute must have at least a &#8220;to&#8221; or &#8220;by&#8221; defined in order to animate. If &#8220;to&#8221; is supplied, the animation will end with the attribute at that value. If &#8220;by&#8221; is supplied, the animation will end at that value plus its starting value. If both are supplied, &#8220;to&#8221; is used, and &#8220;by&#8221; is ignored. Optional additional member include &#8220;from&#8221; (the value the attribute should start animating from, defaults to current value), and &#8220;unit&#8221; (the units to apply to the values).</div>
</div>
<hr />
</div>
<div>
<h4><a name="property_currentFrame">currentFrame</a> &#8211; <code>Int</code></h4>
<div>
<div>The location of the current animation on the timeline. In time-based animations, this is used by AnimMgr to ensure the animation finishes on time.</div>
</div>
<hr />
</div>
<div>
<h4><a name="property_duration">duration</a> &#8211; <code>Number</code></h4>
<div>
<div>The length of the animation.  Defaults to &#8220;1&#8243; (second).</div>
</div>
<hr />
</div>
<div>
<h4><a name="property_el">el</a> &#8211; <code>private HTMLElement</code></h4>
<div>
<div>The element to be animated.</div>
</div>
<hr />
</div>
<div>
<h4><a name="property_isAnimated">isAnimated</a> &#8211; <code>private Boolean</code></h4>
<div>
<div>Whether or not the animation is running.</div>
</div>
<hr />
</div>
<div>
<h4><a name="property_method">method</a> &#8211; <code>Function</code></h4>
<div>
<div>The method that will provide values to the attribute(s) during the animation.  Defaults to &#8220;YAHOO.util.Easing.easeNone&#8221;.</div>
</div>
<hr />
</div>
<div>
<h4><a name="property_startTime">startTime</a> &#8211; <code>private Date</code></h4>
<div>
<div>A Date object that is created when the animation begins.</div>
</div>
<hr />
</div>
<div>
<h4><a name="property_totalFrames">totalFrames</a> &#8211; <code>Int</code></h4>
<div>
<div>The total number of frames to be executed. In time-based animations, this is used by AnimMgr to ensure the animation finishes on time.</div>
</div>
<hr />
</div>
<div>
<h4><a name="property_useSeconds">useSeconds</a> &#8211; <code>Boolean</code></h4>
<div>
<div>Whether or not the duration should be treated as seconds. Defaults to true.</div>
</div>
<hr />
</div>
</div>
</div>
</div>
<div>
<div>
<h3 id="methods">Methods</h3>
<div>
<div>
<h4><a name="method_animate">animate</a></h4>
<div>
<p><code> void                                             <strong>animate</strong> (                                             ) </code></p>
<div>Starts the animation by registering it with the animation manager.</div>
<div>
<dl>
<dt>Returns:                                                     <code> void </code></dt>
<dd> </dd>
</dl>
</div>
</div>
<hr />
</div>
<div>
<h4><a name="method_doMethod">doMethod</a></h4>
<div>
<p><code> Number                                             <strong>doMethod</strong> (                                                                                                                                                                    attr                                                                                                                                                               ,                                                           start                                                                                                                                                               ,                                                           end                                                                                                                                                   ) </code></p>
<div>Returns the value computed by the animation&#8217;s &#8220;method&#8221;.</div>
<div>
<dl>
<dt>Parameters:</dt>
<dd> <code>attr                                                         &lt;String&gt; </code> The name of the attribute. </dd>
<dd> <code>start                                                         &lt;Number&gt; </code> The value this attribute should start from for this animation. </dd>
<dd> <code>end                                                         &lt;Number&gt; </code> The value this attribute should end at for this animation. </dd>
</dl>
<dl>
<dt>Returns:                                                     <code> Number </code></dt>
<dd>The Value to be applied to the attribute.</dd>
</dl>
</div>
</div>
<hr />
</div>
<div>
<h4><a name="method_getAttribute">getAttribute</a></h4>
<div>
<p><code> Number                                             <strong>getAttribute</strong> (                                                                                                                                                                    attr                                                                                                                                                   ) </code></p>
<div>Returns current value of the attribute.</div>
<div>
<dl>
<dt>Parameters:</dt>
<dd> <code>attr                                                         &lt;String&gt; </code> The name of the attribute. </dd>
</dl>
<dl>
<dt>Returns:                                                     <code> Number </code></dt>
<dd>val The current value of the attribute.</dd>
</dl>
</div>
</div>
<hr />
</div>
<div>
<h4><a name="method_getDefaultUnit">getDefaultUnit</a></h4>
<div>
<p><code> String                                             <strong>getDefaultUnit</strong> (                                                                                                                                                                    attr                                                                                                                                                   ) </code></p>
<div>Returns the unit to use when none is supplied.</div>
<div>
<dl>
<dt>Parameters:</dt>
<dd> <code>attr                                                         &lt;attr&gt; </code> The name of the attribute. </dd>
</dl>
<dl>
<dt>Returns:                                                     <code> String </code></dt>
<dd>The default unit to be used.</dd>
</dl>
</div>
</div>
<hr />
</div>
<div>
<h4><a name="method_getEl">getEl</a></h4>
<div>
<p><code> HTMLElement                                             <strong>getEl</strong> (                                             ) </code></p>
<div>Returns a reference to the animated element.</div>
<div>
<dl>
<dt>Returns:                                                     <code> HTMLElement </code></dt>
<dd> </dd>
</dl>
</div>
</div>
<hr />
</div>
<div>
<h4><a name="method_getStartTime">getStartTime</a></h4>
<div>
<p><code> Date                                             <strong>getStartTime</strong> (                                             ) </code></p>
<div>Returns the animation start time.</div>
<div>
<dl>
<dt>Returns:                                                     <code> Date </code></dt>
<dd>current value of startTime.</dd>
</dl>
</div>
</div>
<hr />
</div>
<div>
<h4><a name="method_init">init</a></h4>
<div>
<p><code> void                                             <strong>init</strong> (                                                                                                                                                                    el                                                                                                                                                               ,                                                           attributes                                                                                                                                                               ,                                                           duration                                                                                                                                                               ,                                                           method                                                                                                                                                   ) </code></p>
<div>Constructor for Anim instance.</div>
<div>
<dl>
<dt>Parameters:</dt>
<dd> <code>el                                                         &lt;String | HTMLElement&gt; </code> Reference to the element that will be animated </dd>
<dd> <code>attributes                                                         &lt;Object&gt; </code> The attribute(s) to be animated.   Each attribute is an object with at minimum a &#8220;to&#8221; or &#8220;by&#8221; member defined.   Additional optional members are &#8220;from&#8221; (defaults to current value), &#8220;units&#8221; (defaults to &#8220;px&#8221;).   All attribute names use camelCase. </dd>
<dd> <code>duration                                                         &lt;Number&gt; </code> (optional, defaults to 1 second) Length of animation (frames or seconds), defaults to time-based </dd>
<dd> <code>method                                                         &lt;Function&gt; </code> (optional, defaults to YAHOO.util.Easing.easeNone) Computes the values that are applied to the attributes per frame (generally a YAHOO.util.Easing method) </dd>
</dl>
<dl>
<dt>Returns:                                                     <code> void </code></dt>
<dd> </dd>
</dl>
</div>
</div>
<hr />
</div>
<div>
<h4><a name="method_isAnimated">isAnimated</a></h4>
<div>
<p><code> Boolean                                             <strong>isAnimated</strong> (                                             ) </code></p>
<div>Checks whether the element is currently animated.</div>
<div>
<dl>
<dt>Returns:                                                     <code> Boolean </code></dt>
<dd>current value of isAnimated.</dd>
</dl>
</div>
</div>
<hr />
</div>
<div>
<h4><a name="method_onTween">onTween</a></h4>
<div>
<p><code> private                                                                                                                            void                                             <strong>onTween</strong> (                                             ) </code></p>
<div>Feeds the starting and ending values for each animated attribute to doMethod once per frame, then applies the resulting value to the attribute(s).</div>
<div>
<dl>
<dt>Returns:                                                     <code> void </code></dt>
<dd> </dd>
</dl>
</div>
</div>
<hr />
</div>
<div>
<h4><a name="method_setAttribute">setAttribute</a></h4>
<div>
<p><code> void                                             <strong>setAttribute</strong> (                                                                                                                                                                    attr                                                                                                                                                               ,                                                           val                                                                                                                                                               ,                                                           unit                                                                                                                                                   ) </code></p>
<div>Applies a value to an attribute.</div>
<div>
<dl>
<dt>Parameters:</dt>
<dd> <code>attr                                                         &lt;String&gt; </code> The name of the attribute. </dd>
<dd> <code>val                                                         &lt;Number&gt; </code> The value to be applied to the attribute. </dd>
<dd> <code>unit                                                         &lt;String&gt; </code> The unit (&#8216;px&#8217;, &#8216;%&#8217;, etc.) of the value. </dd>
</dl>
<dl>
<dt>Returns:                                                     <code> void </code></dt>
<dd> </dd>
</dl>
</div>
</div>
<hr />
</div>
<div>
<h4><a name="method_setEl">setEl</a></h4>
<div>
<p><code> void                                             <strong>setEl</strong> (                                             ) </code></p>
<div>Changes the animated element</div>
<div>
<dl>
<dt>Returns:                                                     <code> void </code></dt>
<dd> </dd>
</dl>
</div>
</div>
<hr />
</div>
<div>
<h4><a name="method_setRuntimeAttribute">setRuntimeAttribute</a></h4>
<div>
<p><code> private                                                                                                                            void                                             <strong>setRuntimeAttribute</strong> (                                                                                                                                                                    attr                                                                                                                                                   ) </code></p>
<div>Sets the actual values to be used during the animation. Should only be needed for subclass use.</div>
<div>
<dl>
<dt>Parameters:</dt>
<dd> <code>attr                                                         &lt;Object&gt; </code> The attribute object </dd>
</dl>
<dl>
<dt>Returns:                                                     <code> void </code></dt>
<dd> </dd>
</dl>
</div>
</div>
<hr />
</div>
<div>
<h4><a name="method_stop">stop</a></h4>
<div>
<p><code> void                                             <strong>stop</strong> (                                                                                                                                                                    finish                                                                                                                                                   ) </code></p>
<div>Stops the animation.  Normally called by AnimMgr when animation completes.</div>
<div>
<dl>
<dt>Parameters:</dt>
<dd> <code>finish                                                         &lt;Boolean&gt; </code> (optional) If true, animation will jump to final frame. </dd>
</dl>
<dl>
<dt>Returns:                                                     <code> void </code></dt>
<dd> </dd>
</dl>
</div>
</div>
<hr />
</div>
<div>
<h4><a name="method_toString">toString</a></h4>
<div>
<p><code> String                                             <strong>toString</strong> (                                             ) </code></p>
<div>Provides a readable name for the Anim instance.</div>
<div>
<dl>
<dt>Returns:                                                     <code> String </code></dt>
<dd> </dd>
</dl>
</div>
</div>
<hr />
</div>
</div>
</div>
</div>
<h3 id="events">Events</h3>
<div>
<h4><a name="event_onComplete">onComplete</a></h4>
<div>
<p><code> <strong>onComplete</strong> (                                             ) </code></p>
<div>Custom event that fires when animation ends Listen via subscribe method (e.g. myAnim.onComplete.subscribe(someFunction)</div>
</div>
<hr />
</div>
<div>
<h4><a name="event_onStart">onStart</a></h4>
<div>
<p><code> <strong>onStart</strong> (                                             ) </code></p>
<div>Custom event that fires when animation begins Listen via subscribe method (e.g. myAnim.onStart.subscribe(someFunction)</div>
</div>
<hr />
</div>
<h4><a name="event_onTween">onTween</a></h4>
<p><code> <strong>onTween</strong> (                                             ) </code></p>
<div>Custom event that fires between each frame Listen via subscribe method (e.g. myAnim.onTween.subscribe(someFunction)</div>
]]></content:encoded>
			<wfw:commentRss>http://williamduff.name/yahoo-ui-library-yahoo-util-anim/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

